Linux内核及编程语言底层相关技术研究

47 篇文章
22 人订阅

全部文章

wangyuntao

Java枚举的values方法是拷贝操作,你知道吗?

Java中的枚举类是我们平时写代码时经常会用到的一个类型,在我们创建枚举类之后,Java会默认在该类中为我们生成values、valueof 等方法。

692
wangyuntao

多进程可以监听同一端口吗

从文档中可以看到,该参数允许多个socket绑定到同一本地地址,即使socket是处于listen状态的。

672
wangyuntao

Java也可以不用编译直接执行了?

我们都知道java是静态语言,也就是说,如果你想执行java程序,就必须先编译,再执行。

812
wangyuntao

是的,我又用rust实现了一版socks5代理

之前用c写过一版socks5代理(socks5代理写完了),自己一直在用,访问Google什么的感觉都挺流畅,自己也挺满意的。

1073
wangyuntao

socket的SO_REUSEADDR参数全面分析

1. 使用这个参数后,bind操作是可以重复使用local address的,注意,这里说的是local address,即ip加端口组成的本地地址,也就是说,...

391
wangyuntao

read方法返回0后还会有epollin事件吗

当read方法返回0,即我们收到了对方发给我们的fin包,使我们的socket处于RCV_SHUTDOWN状态,此后,该socket还会有epollin事件发生...

982
wangyuntao

Java新手非常容易犯的一个错误

最近一直在做底层方面的研究,所以这段时间就没写java相关的东西,但恰巧今天同事问我一个问题,在帮他解决完这个问题之后,我发现,这个问题对java新手来说还是非...

763
wangyuntao

socket的epollin/epollout是何时触发的

本篇文章的问题是,在 EPOLLET 模式下,socket的 EPOLLIN 和 EPOLLOUT 是何时触发的?

962
wangyuntao

对又一个epoll问题的全面分析

该方法最主要的目的是,当客户端建立tcp连接到服务端时,服务端立即调用shutdown方法,关闭其send方向。

663
wangyuntao

epoll和shutdown使用不当可能导致死循环

本来是在研究epoll的另一个问题的,结果发现这个问题,所以这篇文章就先写这个问题吧。

382
wangyuntao

对上一篇文章中tcp问题的进一步思考

上篇文章 一个有关tcp的非常有意思的问题 中我们讲到,在tcp建立连接后,如果一端关闭了连接,另一端的第一次write还是可以写成功的,文章中也分析了造成这种...

502
wangyuntao

一个有关tcp的非常有意思的问题

在tcp建立连接后,先主动关闭其服务端,之后再在客户端下对其socket进行写操作,正常思维都会认为,这个写操作肯定会返回错误吧?

681
wangyuntao

示例展示虚拟内存和物理内存的分配

通过前两篇文章(系统调用mmap的内核实现分析,Linux下Page Fault的处理流程)我们可以知道,虚拟内存是在我们向操作系统申请内存(比如malloc或...

1101
wangyuntao

Linux下Page Fault的处理流程

上篇文章 系统调用mmap的内核实现分析 中提到,当我们向操作系统申请内存时,操作系统并不是直接分配给我们物理内存,而是只标记当前进程拥有该段内存,当真正使用这...

1151
wangyuntao

系统调用mmap的内核实现分析

执行该程序,输出mmap方法返回的内存地址,同时使用pmap命令输出该程序执行mmap之前以及之后的内存使用情况。

1101
wangyuntao

CPU Cache 和 TLB 的区别与联系

CPU Cache是为了加速内存的访问,而TLB是为了加速virtual address到physical address的转换。

1352
wangyuntao

Linux进程的内存分布

https://en.wikipedia.org/wiki/Data_segment

1034
wangyuntao

Linux下程序是如何被执行的

之前写过一篇文章 Linux下c语言中的main函数是如何被调用的,该篇文章侧重于从user space层面讲程序的运行,而文章中提到的有关kernel spa...

902
wangyuntao

内网的服务如何在外网可访问

比如,自己电脑上有个服务,想给外网的其他人临时看下,怎么办,难道还要去外网服务器上再部署一份?

1384
wangyuntao

Linux根目录的文件系统是如何被挂载的

该方法首先拿到上面注册的rootfs文件系统,再调用vfs_kern_mount方法挂载该系统,然后将挂载结果mnt赋值给类型为struct path的变量ro...

1493

扫码关注云+社区

领取腾讯云代金券