乱码三千 – 分享实用IT技术

乱码三千 – 码出一个新世界


  • 首页

  • 归档

  • 搜索

如何撤销上一次 Git add 的内容

发表于 2021-10-12

前言

有时候, 我们使用git add .不小心误添加了某些个文件到本地暂存库中, 如果我们需要撤销该add记录, 可以通过以下方式

撤销指令

  1. 撤销上次add的指定文件

    1
    git reset HEAD <路径/文件名>
  2. 撤销上次add的所有文件

    1
    git reset HEAD

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Kindle传书的几种便捷方式

发表于 2021-09-30

前言

给使用kindle的小伙伴介绍几种好用的传书方法

第一种 使用网页传书

以轻松传这个网站为例:

官方网址: https://easychuan.cn/

image-20210930094805282

我们只需要将文件上传, 得到一个取件码, 然后在kindle中打开体验版浏览器, 同样输入https://easychuan.cn/

image-20210930095755229

填入相应的取件码就可以直接下载了

类似这样的网站除了轻松传之外, 还有快牙:

image-20211223145143645

点击进入快牙传输网站

还有就是Feem的WebShare功能也可以传输文件, 直接通过一个ip和端口号进行访问下载, 不过仅限于局域网内:

image-20211223145420896

点击进入Feem官网

第二种 使用邮箱传书

kindle亚马逊账号登录后会自动分配一个邮箱账号, 这个账号可以在kindle设置中进行查看获取

我们只需要将文件发送到这个邮箱账号上即可

注意使用的是邮件附件 而不是超大附件

第三种 使用Kindle App

Kindle App 是亚马逊开发出的阅读 App,可用于同步我们在亚马逊 Kindle 书城购买中购买的书到各个客户端(Windows、OSX、Android 以及 iOS)

可以看成是App版的Kindle, 除了可以用来看书外, 还可以用来传书

只需登录kindle账号然后直接上传发送即可

image-20210930101514103

第四种 USB传书

简单粗暴, 快捷高效, 这个不用多说, 一根数据线的事

总结

  • EasyChuan网页: 支持电脑和手机, 无需登录, 如果文件不多的话推荐使用该方法
  • USB传书: 文件大小无限制, 如果批量传书推荐该方法

image-20210930101639592

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Vim文本编辑器快速上手操作指南

发表于 2021-09-18

前言

做开发的小伙伴对vim编辑器肯定不陌生, 无论你是使用Linux终端, 还是使用Git操作仓库的时候都经常会碰的上

image-20210918161103435

刚开始接触的时候肯定是感觉非常费劲, 毕竟我们已经习惯了用鼠标定位操作的编辑器

而VIM编辑器, 可以说是纯靠键盘定位和编辑, 你想快速编辑某一处的内容, 鼠标根本帮不了你, 只能依靠键盘

如此反人类的操作, 对于开发者的你来说, 却不得不学

既然如此, 一些常用的操作指令 我们需要掌握

操作指令

  1. 用vim编辑器打开文本文件

    1
    vim 文件名

    打开文件后进入默认模式, 该模式下文本可以查看但不能编辑

    1
    shift+冒号
  2. 进入文本编辑模式

    1
    敲键盘上的字母 i 或者 a
  3. 进入命令输入模式

    1
    敲键盘上的 :
  4. 进入全局可视化模式

    1
    敲键盘上的字母 v
  5. 恢复到默认模式

    1
    敲键盘上的 ESC
  6. 保存文本内容

    命令模式下输入以下字母并且回车:

    1
    2
    3
    w 保存内容
    w <文件路径> 另存为
    saveas 文件路径 另存为
  1. 退出编辑器

    命令模式下输入以下字母并且回车:

    1
    2
    3
    4
    5
    q  退出编辑器
    q! 强制退出编辑器
    wq 保存文本内容 并退出编辑器
    wq! 保存文本内容 并强制退出编辑器
    x 保存文本内容 并退出编辑器

在默认模式下可以进行的操作

默认模式下可以使用键盘上的上下左右键移动光标查看文本内容, 除此之外, 还可以:

  1. 删除内容

    命令 说明
    x 删除游标所在的字符
    X 删除游标所在前一个字符
    Delete 同x
    dd 删除整行
    dj 删除当前行和下一行
    dk 删除当前行和上一行
    dh 删除光标左边的一个字符
    dl 删除光标右边的一个字符
    dw 删除一个单词(不适用中文)
    d$或D 删除至行尾
    d^ 删除至行首
    dG 删除到文档结尾处
    d1G 删至文档首部
    ndd 一次性向下删除n行
  2. 光标移动

    除了使用上下左右键之外还可用字母:

    方向键或者h,j,k,l键可以移动游标。

    按键 说明
    h 左
    l 右(小写L)
    j 下
    k 上
    w 移动到下一个单词
    b 移动到上一个单词
    gg 移动到文本头部
    G 移动到文本末尾
  3. 不同位置插入内容

    命令 说明
    i 在当前光标处进行编辑
    I 在行首插入
    A 在行末插入
    a 在光标后插入编辑
    o 在当前行后插入一个新行
    O 在当前行前插入一个新行
    cw 替换从光标所在位置后到一个单词结尾的字符
  4. 复制当前行

    1
    y
  5. 粘贴到下一行

    1
    p
  6. 撤销操作

    1
    u
  7. 回滚操作

    1
    ctrl+r
  8. 退出编辑器

    1
    shirt+zz

在可视化模式下可以进行的操作

可视化模式下可以快速对内容进行选中, 选中的内容会高亮显示

  1. 选中全部内容

    1
    2
    3
    1. 普通模式下敲gg(把关标定位到最上面)
    2. 普通模式下敲v(进入VISUAL模式)
    3. 然后敲 shift+g(选中整篇文本)
  2. 复制文本全部内容

    选中全部内容后输入以下字符:

    1
    2
    y 复制到vim编辑器中
    +y 复制到系统剪贴板中
  3. 对内容进行格式化

    选中全部内容后输入以下字符:

    1
    =

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

使用docker部署Django项目

发表于 2021-09-18

部署Django项目

  1. 搜索python镜像

    1
    docker search python
  2. 拉取python镜像

    1
    docker pull python
  3. 创建并运行容器

    1
    2
    3
    4
    5
    6
    docker run -id \
    --name=c_django \
    -p 8000:8000 \
    -v /root/app:/root/app
    -h c_django \
    python:latest
  4. 将源程序上传至服务器

    可以使用FTP工具或者scp指令上传 其他也可

  5. 进入程序目录 安装依赖包

    1
    pip install -r requirements.txt
  6. 启动程序

    1
    python manage.py runserver 0.0.0.0:8000
  7. 网站访问

    1
    http://服务器ip:8000

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

记录一次504 Gateway Time-out的解决

发表于 2021-09-18

起因

今早起来, 突然发现网站挂了, 直接报504 Gateway Time-out

image-20210918111428739

经过

我立马联想是否是docker挂了或者数据库容器出了问题

进入终端 使用docker ps 所有容器都在正常运行 没问题, 然后docker logs --tail=10 mysql数据库也没报错

我怀疑是不是docker内部哪里卡住了, 于是systemctl restart docker立马重启docker, 然后重新访问网站 还是不行

有点懵了, 到底哪里出了问题呢? 网上说是Nginx配置问题, 可是我nginx配置一直都没动过, 而且查看nginx容器日志也是正常, 难道是docker容器间通信不正常?

紧接着我又进入nginx容器, 使用nc -zv wordpress 80指令进行容器间通信测试, 也是正常打通的

这问题到底是出在哪了?

难道真的只是超时? 我给的时间太短了不成? 于是乎 我干脆将nginx反向代理超时时间调大, 死马当活马医, 不试试怎么知道呢

我将以下三行配置加入到代理块中:

1
2
3
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;

具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
location /foo {
proxy_pass http://xxx.xxx.xxx.xxx:8080/foo;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
break;
}

然后重启nginx, 这时访问网站 次数504 Gateway Time-out消失了, 换成了Error establishing a database connection

image-20210918111216604

我靠, 原来还是数据库的问题

结果

我开始回忆, 前段时间刚进行docker跨服务器迁移, 昨天旧服务器刚好到期停机, 今天就突然访问不上了, 难道我的程序此时访问的还是原来旧服务器的数据库

对了 我的源码目录是直接从旧服务器拷贝过来的, 虽然docker容器是新建的, 但是因为存在旧目录 所以docker run配置的数据库参数全部无法重写, 也就是说程序配置文件中的数据库连接参数没有被重写

恍然大悟, 立马进入源程序目录找到配置文件打开查看, 果真如此, 然后将其修改为新的

此时重新访问, 网站正常显示

本文为作者原创 转载时请注明出处 谢谢

B站入口

打赏通道

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

推荐一个谷歌浏览器下的护眼小插件

发表于 2021-09-16

前言

作为IT工作者, 长时间对着电脑屏幕, 眼睛实在是疲惫不堪, 即便我将电脑屏幕亮度调至非常低 也无济于事

唯独 夜间模式能稍加缓解, 但是浏览器依旧是白花花一片 太过扎眼, 于是乎找了个暗黑小插件, 就此拯救了我的双眼

话不多说 如下:

DARK READER

名为DARK READER的插件, 配置如下:

效果如下:

image-20210917123155838

插件下载

谷歌官方商店下载

考虑到大部分国内用户无法访问谷歌网站, 这里给大家推荐两个国内下载站点:

  1. 极简插件

    image-20210917141518519

    image-20210917141441356

  2. CRX搜搜

    不仅支持名称搜索, 还支持扩展地址搜索

    比如插件官方扩展地址:https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo

    img

    image-20240418185205986

    根据名称关键字搜索下载:

    img

    image-20240418185348662

本文为作者原创 转载时请注明出处 谢谢

B站入口

打赏通道

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

docker容器相互通信的实现

发表于 2021-09-16

前言

docker容器处在宿主内部的局域网络之中, 一般来说, 我们直接使用局域网ip即可访问, 但考虑到容器重启后ip可能会发生变化, 所以这种直接使用容器的ip的方案并不稳妥

那如果使用公网ip, 映射访问的话, 似乎稳定一些, 但是也存在问题, 比如docker跨服迁移, 那么ip还得手动修改, 同时公网访问速度上肯定不如内网

所以还得另寻他法

事实上 Docker官方已经给我们提供了解决办法, 那就是使用Bridge桥接网络, 这样 我们可以直接使用容器名充当局域网ip进行容器间相互访问

img

操作步骤

  1. 创建bridge网络

    1
    docker network create -d bridge 自定义网络名称
  2. 创建容器时指定bridge网络

    1
    2
    3
    docker run -id --name=first --network 网络名 ubuntu:latest

    docker run -id --name=second --network 网络名 ubuntu:latest

    这样两个容器就处在了同一个桥接网络下, 容器间自动link, 彼此可以相互访问

  3. 访问测试

    1
    2
    3
    4
    # 进入第一个容器
    docker exec -it first bash
    # 使用容器名ping
    ping second

其他操作

  1. 如果要查看当前已经存在的桥接网络列表

    1
    docker network ls

优势

除了方便容器间通信外, 结合Nginx还可以减少服务器端口开放数量, 消除不必要的安全隐患

比如不使用桥接网络时, Nginx反向代理配置是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
http{
upstream wordpress_sex{
server 服务器公网IP:7778;
}
server{
listen 80;
server_name sex.newban.cn;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://wordpress_sex;
break;
}
}

}

使用桥接网络后:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
http{
upstream wordpress_sex{
server 容器名:80;
}
server{
listen 80;
server_name sex.newban.cn;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://wordpress_sex;
break;
}
}

}

无论是移植性和安全性都得到了大大的提升

但是有一点需要注意, nginx配置文件在nginx启动成功之前会检测server节点下的host地址是否可通, 如果存在无法接通的host, 则nginx无法启动,

也就是说我们使用server 容器名:80这种配置 当我们的docker容器挂了或者停止运行时, 如果此时重启nginx则会启动失败, 这一点我们需要提前知晓, 避免到时重启时出了问题摸不着头脑

本文为作者原创 转载时请注明出处 谢谢

B站入口

打赏通道

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Linux中系统管理我们可能会使用到的指令

发表于 2021-09-14

1. systemctl

systemctl是 Systemd的主命令,用于管理系统。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 重启系统
$ sudo systemctl reboot

# 关闭系统,切断电源
$ sudo systemctl poweroff

# CPU停止工作
$ sudo systemctl halt

# 暂停系统
$ sudo systemctl suspend

# 让系统进入冬眠状态
$ sudo systemctl hibernate

# 让系统进入交互式休眠状态
$ sudo systemctl hybrid-sleep

# 启动进入救援状态(单用户状态)
$ sudo systemctl rescue

2. systemd-analyze

systemd-analyze命令用于查看启动耗时。

1
2
3
4
5
6
7
8
9
10
11
# 查看启动耗时
$ systemd-analyze

# 查看每个服务的启动耗时
$ systemd-analyze blame

# 显示瀑布状的启动过程流
$ systemd-analyze critical-chain

# 显示指定服务的启动流
$ systemd-analyze critical-chain atd.service

image-20210914154541109

3. hostnamectl

hostnamectl命令用于查看当前主机的信息。

1
2
3
4
5
# 显示当前主机的信息
$ hostnamectl

# 设置主机名。
$ sudo hostnamectl set-hostname rhel7

4. localectl

localectl命令用于查看本地化设置。

1
2
3
4
5
6
# 查看本地化设置
$ localectl

# 设置本地化参数。
$ sudo localectl set-locale LANG=en_GB.utf8
$ sudo localectl set-keymap en_GB

image-20210914154511109

5. timedatectl

timedatectl命令用于查看当前时区设置。

1
2
3
4
5
6
7
8
9
10
# 查看当前时区设置
$ timedatectl

# 显示所有可用的时区
$ timedatectl list-timezones

# 设置当前时区
$ sudo timedatectl set-timezone America/New_York
$ sudo timedatectl set-time YYYY-MM-DD
$ sudo timedatectl set-time HH:MM:SS

image-20210914154411820

6. loginctl

loginctl命令用于查看当前登录的用户。

1
2
3
4
5
6
7
8
# 列出当前session
$ loginctl list-sessions

# 列出当前登录用户
$ loginctl list-users

# 列出显示指定用户的信息
$ loginctl show-user

本文为作者原创 转载时请注明出处 谢谢

B站入口

打赏通道

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Linux中关于前台任务和后台任务的相关操作

发表于 2021-09-14

概念

以下概念以终端操作为前提

  • 前台任务: 在前台执行的任务, 任务一旦执行则占用终端窗口, 同一窗口内 无法进行其他操作
  • 后台任务: 在后台执行的任务, 任务执行不占用终端窗口, 同一窗口内 可一边执行任务 一边进行其他操作

无论是前台任务还是后台任务, 终端一旦被关闭, 任务会立即终止

前台任务

  1. 终止前台任务

    1
    Ctrl+C
  2. 暂停前台任务

    1
    Ctrl+Z
  3. 查看当前暂停的任务和所有后台任务信息

    1
    jobs -l
  4. 将前台任务切换成后台任务

    1
    2
    3
    1.输入ctrl + z 暂停任务
    2.输入jobs查看任务号
    3.使用 bg %任务号 将该任务号放入后台
  5. 终端关闭 保持前台任务继续运行

    1
    nohup xxxx

    nohup: 表示忽略hup信号, 终端关闭任务进程也不销毁

后台任务

  1. 以后台方式启动任务, 命令末尾加&即可

    1
    watch  -n 10 sh  test.sh  &  #每10s在后台执行一次test.sh脚本
  2. 终止后台任务

    方式一:

    1
    2
    1.输入jobs查看任务号
    2.kill %任务编号

    方式二:

    1
    2
    1.使用ps指令查看任务进程pid
    2.kill pid
  3. 将后台任务切换成前台任务

    1
    2
    1.输入jobs查看任务号
    2.fg %任务编号
  4. 终端关闭 保持后台任务继续运行

    如果后台任务还未启动, 指令前面加nohup:

    1
    nohup watch  -n 10 sh  test.sh  &

    如果后台任务已经启动:

    1
    2
    1.输入jobs查看任务号
    2.使用 disown -h %任务号

    disown指令用于对jobs任务的移除移出操作, 常见参数有:

    1
    2
    3
    disown -a //删除全部作业
    disown -r //删除正在运行的作业
    disown -h %任务号 //移出(非删除)指定作业, 同时忽略hup信号

实现后台任务的另一种方式

除了使用nuhup+&的方式使得任务在后台运行且不受终端关闭影响外, 还有一种方式那就是使用systemd

创建systemd服务步骤如下:

  1. 创建服务配置文件

    1
    vim xxx.service

    将以下内容填入配置文件中:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [Unit]
    Description=Foo

    [Service]
    ExecStart=/usr/sbin/foo-daemon
    Restart=always

    [Install]
    WantedBy=multi-user.target
    • Description: 表示服务描述
    • ExecStart: 表示需要执行的程序指令, 需要填入程序的完整路径
    • Restart: 表示是否自动重启, 可选参数有no、always、on-success、on-failure、on-abnormal、on-abort、on-watchdog等
    • WantedBy: 表示用户权限

    更多配置, 可参考官方文档 或者博客介绍

  2. 将服务配置文件拷贝至/lib/systemd/system/目录下

    1
    sudo cp xxx.service /lib/systemd/system/
  3. 启动服务

    1
    sudo systemctl start xxx
关于服务的其他操作指令
  1. 停止服务

    1
    sudo systemctl stop xxx
  2. 查看服务运行状态

    1
    sudo systemctl status xxx
  3. 设置服务开机自启动

    1
    sudo systemctl enable xxx
  4. 禁止服务开启自启动

    1
    sudo systemctl disable xxx
  5. 服务重启

    1
    sudo systemctl restart xxx
  6. 查看systemd的版本

    1
    sudo systemctl --version
  7. 查看配置文件

    1
    systemctl cat xxx.service

systemd和nohup+&之间的对比

systemd可以满足以下需求:

  • 方便分析问题的服务运行日志记录
  • 服务管理的日志
  • 异常退出时可以根据需要重新启动

而nohup 只能记录服务运行时的输出和出错日志, 根据我们实际的需求进行选择即可

本文为作者原创 转载时请注明出处 谢谢

B站入口

打赏通道

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

免费稳定的PHP虚拟主机

发表于 2021-09-10

前言

想验证网站项目是否可盈利, 如果购买服务器的话太贵, 怎么办, 那就用免费的吧

国内基本上已经没有免费的虚拟主机可用了, 即便有也是套路你

只好把目标转向国外服务器供应商, 先是找到一家日本的厂商XREA, 主页长这样:

决定试试申请一个, xrea需要注册两个账户, 一个是xrea账户, 另一个是value-admin账户

image-20210910150342841

首先注册value-admin账户:

image-20210910150514615

这一步 国内的邮箱无法注册, 谷歌邮箱可以 但是居然一直收不到验证码, 最后只好作罢

Awardspace

介绍

随后有找了一家欧美的厂商Awardspace, 经过尝试, 发现可行, 主页长这样:

image-20210910163000949

我直接使用第三方谷歌登录, 国内的小伙伴有可能需要搭个大爬梯才能访问哦

登录成功后进入到控制台界面:

image-20210910163254548

该有的功能全都有, 这个免费虚拟主机给我们提供了:

  • 1G的储存空间
  • 每月5G的流量
  • 1个Mysql数据库
  • 可绑定一个顶级域名和三个子域名
  • 一个邮箱账户

image-20210910163214377

安装或者上传应用

各种博客程序一键安装:

image-20210910163756104

或者上传已有的程序文件, 可以网站直接上传或者使用FTP上传, 如果使用FTP会提示你设置FTP密码:

image-20210910164648342

我这里为了演示 直接一键安装的JOOMLA博客程序

域名绑定

如果你已经有自己的域名了, 可以直接绑定:

image-20210910163953692

image-20210910164215330

然后在你的域名服务上, 进行域名解析, 可以直接使用A记录解析到185.176.43.108这个IP, 或者更改DNS记录为ns5.awardspace.com,ns6.awardspace.com

我这里直接用的是IP解析

访问主页

最后浏览器输入绑定的域名进行测试, 我这边正常访问, 而且速度还不错:

image-20210910164940227

freehostia

这个网站也提供免费的虚拟主机, 时长一年, 可以选择预制的PHP程序:

image-20210910165958993

点击进入官网

freehostia给我们提供了:

  • 250MB存储空间
  • 每月6G流量
  • 1个10MBMySQL
  • 3个邮箱账户

蓝队云

提供免费的PHP虚拟主机

image-20220707153444030

点击进入官网

蓝队云给我们提供了:

  • 1Gb存储空间
  • 不限流量
  • 1个300MBMySQL

灰狼云

免费PHP虚拟空间 一月一续期

image-20220707154001659

该空间可以用于CDN反代, 具体可参见: 《无成本反向代理Jsdelivr》

本文为作者原创 转载时请注明出处 谢谢

B站入口

打赏通道

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

1…222324…51

乱码三千

android程序员一枚,擅长java,kotlin,python,金融投资,欢迎交流~

507 日志
145 标签
RSS
© 2026 乱码三千
本站总访问量次
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4
0%