william.chan's blog

done is better than perfect

记录读过的博客文章

说明一个概念或者解决了一个问题

分类: 理解计算机 回车和换行 字符编码笔记:ASCII,Unicode 和 UTF-8 容错,高可用和灾备 关于计算机科学的50个误解 关于Unix哲学

Linux: sudo ls /root

谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表

sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,格式为“sudo [参数] 命令名称”。 总结来说,sudo命令具有如下功能: 限制用户执行指定的命令: 记录用户执行的每一条命令; 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数; 验证密码的后5分钟内(默认值)无须再让用户再次验证密码。 1 2 3 4 5 [...

Linux: su命令与用户名之间的减号`-`

su - linuxprobe 这意味着完全切换到新的用户

su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下,顺畅地切换到其他用户,比如从root管理员切换至普通用户: 1 2 3 4 5 6 [root@linuxprobe ~]# id uid=0(root) gid=0(root) groups=0(root) [root@linuxprobe ~]# su - linuxprobe Last login: Wed Jan...

linux 计划任务 at 和 crontab

at 一次性计划任务;crontab 周期性计划任务

at 一次性计划任务 at -l 查看已经设置的任务 atrm 任务序号 删除 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@linuxprobe ~]# at 23:30 at > systemctl restart httpd at > 此处请同时按下Ctrl+d来结束编写计划任务 job 3 at Mon Apr 27 23:...

Shell中的 exit 0 与 exit 1 的区别

echo $? 为 0 表示程序正常退出,非 0 表示程序异常

exit 0 正常运行程序并退出程序; exit 0 非正常运行导致退出程序; exit 0 可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0 值,那么你的程序的使用者通常会认为你的程序产生了一个错误。 在 shell 中调用完你的程序之后,用 echo $? 命令就可以看到你的程序的 exit 值。在 shell 脚本中,通常会根据上一个命令的 $? 值来进行一些...

MySQL: show index && explain select ...

用 explain 语句判断select查询是否使用了索引

远程登录 mysql mysql -hrm-abcdefghijkl.mysql.rds.aliyuncs.com -uusername -ppassword -Ddatabase_name 显示索引信息 1 mysql> SHOW INDEX FROM table_name; https://www.runoob.com/mysql/mysql-index.html 判...

Linux: process VS thread

进程和线程的区别介绍

进程定义 是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。 进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。 线程定义 单个进程中执行中每个任务就是一个线程。线程是进程中执行运算的最小单位。 区别 一个线程只能属于一个进程,但是一个进程可以拥有多个线程。多线程处理就是允许一个进程中在同一时刻执行多个任务。 线程是一种...

Gem: Sidekiq 如何处理异步任务

整体的架构 介绍任务的入队过程、Sidekiq 任务在 Redis 中的存储方式和消费者对任务的处理过程,除此之外,文章将介绍 Sidekiq 中间件的实现以及任务重试的原理。 参考链接 https://draveness.me/sidekiq/

Gem: sidekiq清空队列的两种方式

一是使用sidekiq的api,二是直接操作redis

使用sidekiq的api清空队列的任务 sidekiq里有提供操作队列的api,首先引入 require 'sidekiq/api' 获取所有队列:Sidekiq::Queue.all 获取默认队列:Sidekiq::Queue.new# the "default" queue 按名称获取队列:Sidekiq::Queue.new("mailer") 清空队列的所有任务:Sidekiq:...

Ruby: 类查找中 :: 的作用

:: 表示从顶层开始搜索

:: 表示从顶层开始搜索 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Violin class String attr_accessor :s, :vs def initialize @vs = self # 确保引用的是内置的原始 String 类,使用 `::` 双冒号 ...