不灭的火

革命尚未成功,同志仍须努力:加密SHA/AES/RSA下载JDK17

作者:AlbertWen  添加时间:2017-10-29 20:23:32  修改时间:2025-09-13 21:43:37  分类:16.编程基础/Web安全  编辑

通常,合并分支时,如果可能,Git 会用 Fast forward 模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制 禁用 Fast forward 模式,Git 就会在 merge 时生成一个新的 commit,这样,从分支历史上就可以看出分支信息。

作者:AlbertWen  添加时间:2019-04-01 00:28:27  修改时间:2025-09-09 03:47:10  分类:15.OpenResty_Lua  编辑

table 是 lua 中常用的数据结构,写一个函数专门来调试它,就变得很有必要了

作者:AlbertWen  添加时间:2017-10-26 14:43:55  修改时间:2025-09-09 10:45:12  分类:06.Linux软件安装  编辑

1、安装SS

sudo apt-get install openssh-client   # 用来登录别的机器的SSH
sudo apt-get install openssh-server   # 用来开放本机的SSH服务
作者:AlbertWen  添加时间:2017-10-26 18:15:27  修改时间:2025-09-15 02:27:43  分类:13.C/C++/Rust/仓颉  编辑

条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其它的某个线程改变了条件变量,它将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程。这些线程将重新锁定互斥锁并重新测试条件是否满足。一般说来,条件变量被用来进行线承间的同步。

作者:AlbertWen  添加时间:2017-10-29 09:56:42  修改时间:2025-09-11 08:22:29  分类:03.低代码/织信开发  编辑

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

作者:AlbertWen  添加时间:2017-10-26 14:29:55  修改时间:2025-09-16 15:31:04  分类:13.C/C++/Rust/仓颉  编辑

提问一:

Linux IO多路复用有 epoll, poll, select,知道epoll性能比其他几者要好。也在网上查了一下这几者的区别,表示没有弄明白。

IO多路复用是什么意思,在实际的应用中是指什么情况?

以及IO多路复用在一些异步web server中的实际应用,就好比nginx是怎样使用epoll来实现异步IO处理的,一个请求到来了,nginx使用epoll接收请求的过程是怎样的?

作者:AlbertWen  添加时间:2017-12-27 15:06:44  修改时间:2025-09-15 23:01:25  分类:18.系统设计/UML建模  编辑
作者:AlbertWen  添加时间:2019-08-29 10:09:06  修改时间:2025-09-15 22:02:34  分类:13.C/C++/Rust/仓颉  编辑
作者:AlbertWen  添加时间:2018-12-31 19:43:04  修改时间:2025-09-09 07:17:11  分类:08.Java基础  编辑

HttpClient最基本的功能就是执行HTTP方法。HTTP方法的执行涉及到若干HTTP请求/HTTP响应的交换,通常是在HttpClient内部被处理的。使用者需要提供一个请求对象来执行,同时HttpClient需要将请求传输到目标服务器上,然后返回相应的响应对象,或者在执行不成功的时候抛出异常。

作者:AlbertWen  添加时间:2017-10-26 14:17:04  修改时间:2025-09-12 16:57:35  分类:11.PHP基础  编辑

数组是PHP的灵魂,非常强大,但有时候面向对象编程也是挺方便的,数组 与 对象 之间切换也是常有的事:

/**
 * 数组 转 对象
 *
 * @param array $arr 数组
 * @return object
 */
function array_to_object($arr) {
	if (gettype($arr) != 'array') {
		return;
	}
	foreach ($arr as $k => $v) {
		if (gettype($v) == 'array' || getType($v) == 'object') {
			$arr[$k] = (object)array_to_object($v);
		}
	}

	return (object)$arr;
}

/**
 * 对象 转 数组
 *
 * @param object $obj 对象
 * @return array
 */
function object_to_array($obj) {
	$obj = (array)$obj;
	foreach ($obj as $k => $v) {
		if (gettype($v) == 'resource') {
			return;
		}
		if (gettype($v) == 'object' || gettype($v) == 'array') {
			$obj[$k] = (array)object_to_array($v);
		}
	}

	return $obj;
}