avatar
文章
89
标签
3
分类
13
归档
分类
照片
关于
搜索
CodeTalks
搜索
归档
分类
照片
关于
搜索

CodeTalks

ucore OS | 实验 2 物理内存管理
发表于2019-05-16|大学学习ucore
练习 1 实现 First-Fit 连续物理内存分配算法First-Fit 连续物理内存分配算法实现比较简单。操作系统维护一个空闲页的链表,链表项根据对应地址从小到大进行排序。链表中的每一项包含的信息是连续空闲空间的第一页,同时 struct Page 中的 property 在 First-Fit 算法中意味着该连续空闲空间共有多少页。而在 flags 中,property 被置位的话,意味着这一页是连续空闲空间的第一页,Reserved 表示该页被操作系统保留,不能进行分配或者释放。在内存探测完成之后,所有的页都被保留了,需要在初始化函数中将其清零,否则不能被其他程序使用。 1234...
ucore OS | 实验 1 ucore 的启动过程
发表于2019-05-16|大学学习ucore
练习 1 操作系统镜像文件 ucore.img 是如何一步一步生成的? 通过执行命令 make V="",使 make 显示出编译过程中执行的命令: 12345678910111213141516171819202122232425+ cc kern/init/init.cgcc -Ikern/init/ -fno-builtin -fno-PIC -Wall -ggdb -m32 -gstabs -nostdinc -fno-stack-protector -Ilibs/ -Ikern/debug/ -Ikern/driver/ -Ikern/trap/ -Ike...
Linux 网络编程 | 多连接 TCP 文件传输程序
发表于2019-04-17|编程分享
这篇博客介绍在 Linux 下使用 epoll 和 Socket API 编写一个使用多条 TCP 连接来传输文件的 C/S 模式程序。 程序框架对于这个程序,分为服务端和客户端。服务端负责发送文件,客户端负责接收文件。客户端首先向服务端请求文件元信息,如文件名、大小等,然后根据文件大小,同时建立多条的 TCP 连接进行分块下载,达到加速文件传输的目的。 完整的项目代码可以到 https://github.com/howardlau1999/tcp-file-transfer 获取。 Socket API 的使用对于服务端而言,其最主要的功能是监听端口,因此封装一个 liste...
循环神经网络小项目 | 七绝作诗
发表于2018-12-25|机器学习
数据集做深度的第一步就是要收集炼丹原料准备数据集,这里我选择了 GitHub 上的这个项目 chinese-poetry 然后取其中的唐诗部分,并去除含有现在字库缺少的字的唐诗,将诗中一些注解删除(比如一字多解),再利用正则匹配提取出七绝唐诗,将每个汉字拆成单独的词,在唐诗开头和结尾添加 <SOP> 和 <EOP> 符号标志开始和结束,一共准备了 10922 首七绝唐诗作为训练数据。 数据集长这样: 12345<SOP> 中 管 五 弦 初 半 曲 , 遙 教 合 上 隔 簾 聽 。 一 聲 聲 向 天 頭 落 , 效 得 仙 人 夜 唱 經 。 &l...
Linux C/C++ 实现热更新
发表于2018-12-18|编程分享
有时候在服务器程序中,需要不停止运行程序但是又要更新一些程序代码,这时候可以借助动态加载库来实现功能的热更新,不过不是在编译的时候链接动态链接库,而是在程序中手动控制加载和卸载。 动态链接库的手动使用很简单,主要有四个 API:dlopen() 用于打开 .so 文件,dlsym() 用于加载符号,dlclose() 用来卸载链接库以及 dlerror() 用来输出错误信息。 这里我简单写了一个主程序,通过输入函数名,获取动态链接库中的符号,然后调用函数: 123456789101112131415161718192021222324252627282930313233343536373...
LeetCode | 173 二叉搜索树迭代器
发表于2018-12-06|编程分享LeetCode
实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 注意: next() 和hasNext() 操作的时间复杂度是O(1),并使用 O(h) 内存,其中 h 是树的高度。 其实就是二叉树的中序遍历,手动模拟函数递归调用时候的出入栈即可。 12345678910111213141516171819202122232425262728class BSTIterator { stack<TreeNode*> s;public: BSTIterator(TreeNode *root) &#...
平衡二叉树 | 红黑树
发表于2018-12-06|编程分享
注:下面这个版本基于《算法(第四版)》实现。这个红黑树是简化版本的。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105enum Color { RED, BLACK };template <class ...
平衡二叉树 | AVL 树
发表于2018-12-06|编程分享
四种不平衡的情况 参考代码: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113template <typename K, typename V>struct AVL...
C++11 字面量操作符
发表于2018-12-06|编程分享
在 C++ 11 中,引入了字面量操作符(literal operator),使用的方法就像下面这样: 123456789long double operator "" _w(long double);std::string operator "" _w(const char16_t*, size_t);unsigned operator "" _w(const char*);int main() { 1.2_w; // calls operator "" _w(1.2L) u"...
C++ 模板元编程 | 快速排序
发表于2018-12-02|编程分享
有了之前插入排序的基础,实现快速排序不是一件难事,快排的算法用 Haskell 描述就像是下面这样的: 12QuickSort [] = []QuickSort (x:xs) = QuickSort [a | a <- xs, a < x] ++ [x] ++ QuickSort [a | a <- xs, a >= x] 可以看出来,我们还需要补充的列表操作是 Concat,把两个表连接起来,还有 Filter,过滤一个表的元素,实现思路很简单: 123456789101112131415161718192021222324252627282930313233...
1…567…9
avatar
howardlau
记录想法
文章
89
标签
3
分类
13
GitHub
最新文章
朝花夕拾:一场从 2012 年开始的游戏汉化2026-09-05
让 FlapPGA Mario 在浏览器里重新跑起来2026-08-25
DeepSeek 3FS 源码解读——客户端篇2025-03-16
DeepSeek 3FS 源码解读——RPC 篇2025-03-03
DeepSeek 3FS 源码解读——磁盘 IO 篇2025-03-02
分类
  • DeeCamp 20181
  • IT 杂谈2
  • Uncategorized1
  • 大学学习9
    • ucore8
  • 机器学习7
  • 游戏推荐2
  • 科普3
归档
  • 2026 年 09 月 1
  • 2026 年 08 月 1
  • 2025 年 03 月 4
  • 2025 年 01 月 1
  • 2023 年 09 月 1
  • 2023 年 08 月 1
  • 2022 年 08 月 3
  • 2022 年 07 月 1
网站信息
文章数目 :
89
最后更新时间 :
© 2017 - 2026 By howardlau
粤 ICP 备 17129444 号-1
搜索
数据加载中