for update

Posted by 夏泽民

在MySQL的InnoDB中,预设的Tansaction isolation level 为REPEATABLE READ(可重读)



inode 与文件块 block 对应关系

Posted by 夏泽民

Linux文件访问流程 inode是文件的唯一标识,文件名和inode的对应关系存放在上一级目录的block中;inode里有指向文件block的指针和文件的属性,从而通过block获得文件数据。



socket 虚拟文件系统

Posted by 夏泽民

在内核中,对socket实现了一种虚拟的文件系统(VFS):socketfs。和其它一般文件系统不同,它不能被mount,没有挂载点,而是通过一个静态变量来引用: [ net/socket.c ] static struct vfsmount *sock_mnt __read_mostly; 在用户空间创建了一个socket后,返回值是一个文件描述符,下面分析一下创建socket时怎么和文件描述符联系的。在SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)最后调用sock_map_fd进行关联,其中返回的retval就是用户空间获取的文件描述符fd,sock就是调用sock_create创建成功的socket.



screen nohup session

Posted by 夏泽民

nohup和&的缺点是,如果你要在一个shell会话里面执行多个命令和脚本,那么要每个命令和脚本都要加nohup和&非常麻烦,所以才有了screen和TMUX Screen 命令与 Tmux 命令 另一种思路是使用 terminal multiplexer (终端复用器:在同一个终端里面,管理多个session),典型的就是 Screen 命令和 Tmux 命令。 它们可以在当前 session 里面,新建另一个 session。这样的话,当前 session 一旦结束,不影响其他 session。而且,以后重新登录,还可以再连上早先新建的 session。 kill 调用的是 SIGTERM, 此信号可以被捕获和忽略。 kill -9 调用的是 SIGKILL, 杀掉进程,不能被捕获和忽略。 SIGHUP是在终端被断开时候调用,如果信号没有被处理,进程会终止。



Golang服务器的网络层实现--总结对比常用epoll模型

Posted by 夏泽民

对基于C/C++的网络模型实现和基于GoLang的实现对比下来,发现Golang的网络模型编程难度大大降低,这得益于Golang的goroutine,可以在编程的时候肆无忌惮的创建并发”线程”,当服务器能为每一个客户端都开启若干”线程”的话,编程变的简单很多。



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required