博客资料下载链接索引 思维导图 均为个人复习资料,正确性无法保证,敬请包容,也欢迎指出。 软件 毛概答题助手 毛概答题助手2.0(带GUI版) 大三上 l离散数学思维导图 大二下 计算机组成原理2022 计算机通信与网络2022 UPD(2022-6-13): 蹭了节复习课,根据其他老师的复习目录修改了一点点内容。增加了绪论章节的思维导图。 操作系统2022 大作业 计算机数据lyn大作业 2022-06-12
C++并发编程(2)——线程间共享数据 本篇博客讲述如何在多个线程之间共享数据,并且在各种情况下使用互斥量来防止线程之间对数据竞争访问。 互斥量 互斥量的使用很简单,所见即所得: 123std::mutex some_mutex;some_mutex.lock();some_mutex.unlock(); 但是通过这样的方法使用互斥量有点麻烦,因为这意味着需要在函数的每个出口,包括异常处理中调用 unlock()。一个更加 RAII 2025-04-07 编程语言 #Cpp #多线程
C++并发编程(1)——基本线程管理 本篇博客主要介绍C++原生的多线程操作,包括启动线程、等待一个线程结束、如何给已启动的线程传递参数、线程的所有权转交。 在一切的一切开始之前,需要先 #include<thread>。 启动线程 Cpp的多线程需要靠 std::thread 对象来实现,构造该类,只需要一个可调用(callable)类型: 1234567891011121314151617181920#include 2025-04-07 编程语言 #Cpp #多线程
socket网络编程的五种IO模型 之前写过 Socket编程(三)——多进程、Socket编程(四)——IO复用和更多IO函数、Socket编程(五)——多线程这几篇与Socket编程有关的博客,然而当时是按照理解难度由浅到深编写的,总的来说还是不够系统。本篇博客就系统性地介绍一下Socket编程中的5种IO模型,并介绍如何使用这些模型实现高并发。它们分别为: 阻塞IO模型; 非阻塞IO模型; 多路复用IO模型; 信号驱动IO模 2025-04-06 计算机网络 #计算机网络 #socket
线程之间的同步锁 本篇博客简单复习一下,线程之间的锁机制,主要包括自旋锁、互斥锁、条件变量、读写锁。 自旋锁 自旋锁用于保护临界区,其原理就是反复地进行 Test and Set 的忙等待。这种方法会一直占用CPU资源,不让出时间片,导致其他线程无法执行。但是,在临界区代码执行时间短的情况下,自旋锁可以避免线程的上下文切换。 1234567891011121314151617181920#include < 2025-04-05 操作系统 #操作系统 #锁
B树、B+树、红黑树 本科学《数据结构》时,就已经学过AVL树这一高效的查找数据结构,然而对于B树、B+树以及红黑树,却只是蜻蜓点水。本篇博客将从逻辑角度研究这三类平衡树的增删改查操作,并比较其效率和应用场景。 B树 B树(B-tree)(因为英文的这种写法,也尝尝被误认为是B-树),是一种自平衡的树。一个 mmm 阶的B树有如下性质: 最多有 mmm 个子树,即最多有 m−1m-1m−1 个键; 除了根节点外,其 2025-04-04 算法 #树 #数据结构
minnow_cpp 完成了CS144的Minnow Lab,这里写一篇博客来记录一下在各个Lab中的解决思路,还包括Minnow中设计到的现代Cpp语法,测评机框架等。 Lab0:An in-memory reliable byte stream 实现一个在内存中的读写流,下面是需要实现的接口: 12345678910111213141516class ByteStream{public: explic 2025-03-20 编程语言 #编程语言 #c++
Vim_and_CMake_notes 最近终于完成密码学可视化的小程序,然后又帮导师写了几天国自然的本子,终于有时间忙里偷闲学点东西。之前就听说CS144:《Introduction to Computer Networking》的课程和项目质量都很高,于是开始着手做一下。 在此之前,先需要配置环境。课程要求项目在Ubuntu 24.04上运行(其实应该其他版本也可以,只要g++、CMake等运行环境对就行),但是为了方便起见,还是安 2025-03-06 工具 #开发 #工具
elliptic_encoding 问题发现 最近在实现一个椭圆曲线加密算法[1]时遇到一个问题,就是如下图,mmm是待加密的二进制信息,想要对其加密,就必须先将其转化为椭圆群上的一个点,以参与之后的运算。 那么问题来了,如何设计一个方案,在不消耗过多计算资源的情况下,使得二进制的消息能够和椭圆群中的元素进行一一对应呢? 不可用的方案 编码为x 最直观的想法是将mmm看成很大的二进制整数,然后调用JPBC库的setFromB 2025-01-06 密码学 #密码学 #数学
我的大学 写在前面 本文开始撰写于2024年10月25日,按理来说像这样总结回顾性的内容应该在毕业的那几天完成的,但是一面是当时还沉浸在毕业的喜悦中,没有来得及回顾;另一面是,我本来就有写年度总结的习惯,1月份刚写的2023年度总结,6月份又要写毕业总结,在过几个月又要写2024的年度总结,总感觉写的过于频繁以至于无内容可写了。 恰逢最近给自己定下了一个每天坚持刷LeetCode并做笔记的flag,于是借 2024-12-31 非技术文章 #随笔 #大学生涯