系统编程
文章平均质量分 65
我爱笨小孩
这个作者很懒,什么都没留下…
展开
-
非公开算法加密文件
我们都知道现在基本上所有的加密算法都是公开的,也就是在一个算法和密文是公开的环境中去寻找明文。由于算法的复杂度很高,这导致大部分算法在有限的时间内是找不到明文的。这对小文件加密无疑是一个很好的方法,但是对于大文件来说这会消耗大量的时间和CPU的性能。为了可以更加高效的完成对大文件的加密我们可以不公开算法,即自己重新定义算法对文件加密。由于算法是不公开的,攻击者只能获得密文因而破译的难度也大大提升了。下面会介绍到我们的加密算法和加密过程以及遇到的问题和解决方案。原创 2022-11-20 19:31:22 · 458 阅读 · 0 评论 -
线程池的应用
在多线程任务中为了更加有效的完成任务,我们在运行一个后台服务的时候希望更快的完成用户提交的任务。这里我们一般使用多线程的方式,当然我们可以一次性创建多个线程任务来了就直接分配,也可以当任务来的时候我们创建一个线程去完成对应的任务。无论哪种方式都是可以解决我们的问题,为了让程序更加有效,我们可以使用线程池的方式去完成。线程池会让我们的执行效率和空间利用率更高。以下是我们具体的实施方案。原创 2022-11-17 18:57:37 · 169 阅读 · 0 评论 -
条件变量(生产者消费者问题)
这里我们使用C语言多线程模拟生产者和消费者问题同时采用条件变量的方法解决该问题。当数据栈中没有数据时,消费者阻塞在条件变量上等待生产者通知其消费;而生产者则会不断的向数据栈中写入数据,并且每写入一次都会通知消费者进行消费。原创 2022-11-16 17:57:32 · 625 阅读 · 0 评论 -
互斥锁的使用
多线程问题中为了避免读取脏数据等问题的发生,在某一个函数需要对共享数据空间操作时需要引入锁的概念。即当某个操作要对文件读写时需要加锁以防止在操作期间其它函数对数据修改或者读取等导致获得脏数据的问题。原创 2022-11-16 16:53:46 · 135 阅读 · 0 评论 -
epoll反应堆模型
当监听到读事件后(之前的处理是直接读取数据并做业务处理然后写给客户端)将该文件描述符从红黑树上摘下后调用epoll_ctl函数去监听该文件描述的写事件重新挂上树(这里需要将自己定义的回调函数一起挂上树)监听其写事件等待epoll_wait返回即让该文件描述符可写,再调用write函数回写给客户端。最后需要将该文件描述符摘下红黑树,调用epoll_ctl添加该文件描述符的读事件挂回到红黑树。在网络编程中recv函数 read函数, send函数 write函数。原创 2022-11-15 16:22:08 · 154 阅读 · 0 评论