0%

整数二分

可以划分为满足某种性质与不满足某种性质的两个区间,用二分法可以找到两区间边界的左右两个点。如图中红色和绿色区间,可以通过二分找到这个区间边界。这里需要注意的是利用单调性二分只是其中一种,其他性质其实也可以二分,不过我们掌握单调性进行二分查找就行。

阅读全文 »

使用muduo编写webserver

因为学习了muduo库,想通过muduo库写一个webserver作为项目,在muduo和tinyWebserver的基础上改了一下,简单的把他们融合了一下。

阅读全文 »

从0开始构建muduo(三)

加入net模块相关代码,net模块相关代码是muduo库的精髓,后面看了一下其实也比较简洁,容易看懂。

首先是将之前main中大大的while循环进行封装,编程EventLoop

阅读全文 »

从0开始构建muduo(二)

加入base模块下相关的代码,主要是和进程线程相关的操作封装,包括:原子类操作、线程操作、互斥锁、条件变量、日志类。这些原版都是是使用pthread相关实现的,自己实现的话可以通过C++11进行实现一下。

加入base模块之后,可以将echo的处理改成多线程(使用线程池)。

我这里实现是将接收到的消息进行了一个简单的翻转。

阅读全文 »

从0开始构建muduo(一)

学习了陈硕老师的《Linux 多线程服务端编程:使用 muduo C++ 网络库》,想自己动手写一个玩具,模仿陈硕老师的muduo库。muduo库大概10000行,本人自己写的肯定简略很多(毕竟只是玩具),只是为了自己熟悉这个网络库的实现。

阅读全文 »

深入理解计算机系统第3章练习题

练习题3.1假设下面的值存放在指明的内存地址和寄存器中:

image-20221025203611818

操作数
%rax 0x100
0x104 0xAB
$0x108 0x108
(%rax) 0xFF
4(%rax) 0xAB
9(%rax,%rdx) 0x11
260(%rcx,%rdx) 0x13
0xFC(,%rcx,4) 0xFF
(%rax,%rdx,4) 0x11
阅读全文 »

深入理解计算机系统第2章练习题

练习题2.1完成下面的数字转换:

A.将0x39A7F8转换为二进制。

B.将二进制1100100101111011转换为十六进制。

C.将0xD5E4C转换为二进制。

D.将二进制1001101110011110110101转换为十六进制。

阅读全文 »

系统检测工具

学习《Linux高性能服务器编程》第十七章多线程编程,里面介绍了各种Linux中提供给开发人员调试和测评的服务器程序,为了印象深刻一些,多动手多实践,所以记下这个笔记。

阅读全文 »