avatar
Articles
91
Tags
49
Categories
34
Home
Archives
Tags
Categories
Link
About
Blogs
Home
Archives
Tags
Categories
Link
About

Blogs

How to Install cmake-3.30
Created2024-09-12|cmake教程
到官网查看对应的包并下载解压官网网址是https://cmake.org/files/ 在这个网址下面找到你想要安装的cmake版本,本文以 v3.30/cmake-3.30.0.tar.gz 为例 注意,这里要找的是形如cmake-X.XX.X.tar.gz 的包,而不是各种带了linux的版本 找一个你喜欢的地方,使用命令 1wget https://cmake.org/files/v3.30/cmake-3.30.0.tar.gz 下载压缩包,并使用命令 1sudo tar -zxvf cmake-3.30.0.tar.gz 进行解压 开始安装使用 ./configure 配置进入对应目录 1cd cmake-3.30.0 然后运行命令 1sudo ./configure 错误排查:如果你发现这里找不到 ./configure 说明你下载的包不对,你可能下载了带linux后缀的各种包 开始配置,如果遇到报错 Could NOT find OpenSSL 使用命令 1sudo apt install libssl-dev 安装libssl 并重新运行 1sudo...
check0
Created2024-09-12|Network
Program Structure and Design3.4 geturl这个实验非常简单,只需要读懂他这里的API就可以做了,其中从socket里面读数据的方式和pipe是完全一致的,都用read来读,write来写。 首先使用 1Address address { host, "http" }; 来创建一个地址 然后用 1234TCPSocket socket;socket.connect( address );socket.write( "GET " + path + " HTTP/1.1\r\nHost: " + host + "\r\nConnection: close\r\n\r\n" );string response; 来创建socket,接下来不断读就行了: 1234567891011121314151617string response;bool is_line_one = true;while ( !socket.eof() && !socket.closed() ) { string tmp; socket.read( tmp );...
Transformer
Created2024-09-04|Transformermachine_learning
概述Transformer是一种基于attention的 seq2seq 模型,即根据输入的开头,生成预测的后续输出。 参考文章/视频链接直观解释注意力机制,Transformer的核心 | 深度学习第6章[1706.03762] Attention Is All You Need (arxiv.org) 模型总体结构Transformer的模型总体采用的是一个 encoder-decoder 的结构,其结构图如下:
正则表达式(regular expression)
Created2024-08-27|Others
正则表达式概述正则表达式是用于匹配字符串的一种表达式,他可以精确描述某种字符串的特征用一匹配和提取 字符单个字符可以用单个的字符表示正则表达式必须匹配一个字符,例如,使用 abc 作为正则表达式,那么会提取所有的含有 abc 的部分,包括某个单次中含有 abc 这个片段,例如 abcdef 中的 abc 也会被匹配。 字符集合字符的集合用 [] 中括号包裹,表示这个位置上面可能有[] 中的某个字符,例如 ab[cde] 就可以匹配 abc\abd\abe 但不会匹配 abf 在这个里面,可以使用例如 [0-9] 表示匹配 0 到 9 中的任意一个字符。 如果要表示取反,可以在括号里面加上一个 ^ 例如 [^A-Z] 表示这里匹配一个除了大写字母之外的字符 其他元字符通配符这里的单个的通配符是 . 在没有其他符号包裹的情况下,. 可以匹配任意一个字符。 数字集合数字可以简写为 \d 是digit的缩写 边界字符 \b 表示单词的边界,例如 \babc\b 就只会匹配 abc 这个独立的单词,而 abcd 或 aabc 则不会被匹配 \B 表示非单词的边界,与上面相反 \w...
Binary Index Tree(树状数组)
Created2024-08-12|Algorithm
概述树状数组是支持 复杂度的维护和 的查询的数据结构,其本质是二叉树去掉了包含重复信息的节点而成的,即只保留了以下标为根的子树的所有信息,即 tree[n]保留以节点n为根的子树的和,形状如图: 前置知识——lowbit的计算对于一个数的二进制,例如 那么想要获得其最后的0的个数,可以利用补码的机制进行计算,即 1234int lowbit(int x){ return x & (-x);} 这是由于,在计算机中,对于一个整形取相反数,就是各位取反然后末尾加1,那么末尾所有的0在取反的时候都会变成1,再+1之后,只有最后一个不是0的位会变成1,其余位都是0,而从最低有效位开始的第一个1之前的所有位都只会进行取反,而第二步+1的进位都影响不到,所以在按位与运算的时候都会变成0,只有第一个1的位置上面保留了1 关于树状数组结构的观察观察上面那棵树的结构可以发现,每个节点下标的末尾有几个0就代表这个节点在第几层,例如1和3的末尾没有0所以在第0层,而8的二进制是1000末尾有三个0所以在第三层,那么可以知道,对于节点下标为的节点,包含了到这个区间的数的和 。而对于节点...
PMM实验报告
Created2024-07-10|OS
PMM部分总体思路PMM部分我选择的是一个 allocator 和一个类 slab 组成的。在分配一个大小为 的内存的时候,首先去查找管理大小 的 slab 中有无空闲的对象,如果有,则直接利用这个对象进行分配,如果没有,这个 slab 就会向 allocator 申请一个或多个页,然后利用这些页来生成对应的对象,分配给 kalloc 接口。 在归还的时候,同样是首先查询整个分配表,查询到分配记录,然后根据分配记录,把这个指针交给对应大小的 slab , slab 会把这个指针还给分配它的页。如果这一页的所有分配都被归还了,那么就把这一整页还给 allocator ,并交由 allocator 归还到堆区。 分配逻辑小内存分配的逻辑小内存分配的时候,首先会向对应的 slab 申请分配,下面以 2B 大小的空间申请为例进行介绍。首先,2B-slab 会检查自己名下有没有空闲的页,如果所有的页都被分配出去了,那么就会向 allocator 申请一个新的页,并且把第一个 Byte...
如何优雅地使用LaTeX(LaTeX分段编译技巧)
Created2024-06-07|LaTeX
前言众所周知,在使用Overleaf编写LaTeX的时候,免费版的编译速度和时间限制非常让人不爽,如果想用Beamer做PPT做不了两页就会出现超时,那么有没有办法能够优雅地编写超长文本呢? 答案是有的,本文提供一种通过分段的方式实现分块编译,并且每次可以只编译你正在写的部分,节约免费编译时间提高编译速度的方法。 LaTeX分段编译API简介最简单的LaTeX分段编译API就是 \include{xxx.tex} 和 \input{xxx.tex} 这两个命令,他们的区别引用一段GPT4 的回答: 在 LaTeX 中,\include{}、\input{} 和 \includeonly{} 是用来管理和组织大型文档的三个非常有用的命令。它们各自有不同的特点和用途: \input{filename} 用途: \input{} 命令用于将指定文件的内容在当前位置直接插入。它适合用于引入格式设置、自定义命令、较短的文本片段等。 特点: \input{} 不会启动新的一页,它就像是把被引入文件的内容直接复制到 \input{} 命令的位置一样。你可以在文档的任何地方使用...
关于AI的思考
Created2024-05-30
...
Concurrent Programming —— Thoughts about locks
Created2024-04-30|OS
关于并发中锁、条件变量和信号量的一些随想锁——原子性的开始众所周知,在并发中,锁是最简单的并发源语,也是最简单的消除数据竞争维护原子性的方法,你甚至只需要使用一对语句: 123pthread_mutex_lock(&lock);//CSpthread_mutex_unlock(&lock); 就可以维护中间的代码的原子性了。 但是如果是朴素的自旋锁的实现会带来一些问题: 如果多个进程同时尝试抢占一把锁,那么会让多个CPU进入自旋状态,浪费CPU资源 某些线程被阻塞,继续运行的条件可能需要其它很多线程共同达成,只使用自旋锁这个CPU在很长时间内都不能得到利用那么如何解决第一个问题呢? 最朴素的思路就是,先尝试获取这个锁,如果获取成功了,就直接进入临界区,如果不成功,就sleep...
DDPG
Created2024-04-28|Article_Readingreinforcement_learning
Basic Terminology评估策略的方法在使用折扣因子的基础上,记为策略 的性能指标 关于 的不严谨的估计首先,对于某一个状态 被转移到这个状态的概率是那么对于 就可以做出一个不严谨的估量,即: 策略梯度定理策略梯度定理阐释了如何计算策略的梯度,即:注意这里求梯度的时候是没有考虑 这个部分贡献的梯度的,具体的原因在我的另一篇文章Policy Gradient Methods中有提到,因为这里只关心梯度的方向,并不关心梯度的大小。 Actor-Critic 模式在上面的评估函数中,可以发现,想要统计出 并不是一件很简单的事情,如果使用蒙特卡罗方法采样来获取的话,会需要大量的时间来采集数据,这是不希望看到的。所以我们选择再造一个网络,来拟合 函数,以对这个策略作出评估。Actor 和Critic的分工如下: Actor:负责根据策略梯度定理调整参数 的值来更新策略 Critic:学习一个Q的函数来拟合当前的价值函数,即拟合 此时更新的公式变成了: Off-policy Actor-critic模式如果此时的行动策略 不等于当前的评估策略,即 ...
1…345…10
avatar
Eric Li
Articles
91
Tags
49
Categories
34
Follow Me
Announcement
The blog is now under construction
Recent Posts
Hydra | python参数配置包2025-06-05
arXiv:1704.01665v4 | Learning Combinatorial Optimization Algorithms over Graphs | NCO论文阅读2025-05-23
GAE | 广义优势估计2025-03-24
PPO2025-03-07
FLA Lab Report | 自动机大作业实验报告2025-01-17
Categories
  • AI1
  • Algorithm2
  • Article_Reading1
    • reinforcement_learning1
  • CV1
  • Cryptology5
  • DB3
  • Diffusion1
Tags
wsl Others LaTeX Math OS Cryptology RBT Optimization IRL Integral notes DB latex Probability_Theory Network acme termux server InformationTheory texlive Hydra RegularExpression Article CV gitlab-ci Algorithm AVL cmake frp certbot ssl ICS B树 3D AI cpp Python Diffusion fla VSCode
Archives
  • June 2025 1
  • May 2025 1
  • March 2025 2
  • January 2025 3
  • December 2024 5
  • November 2024 9
  • October 2024 8
  • September 2024 4
Website Info
Article Count :
91
Unique Visitors :
Page Views :
Last Update :
©2023 - 2025 By Eric Li
Framework Hexo|Theme Butterfly
蜀ICP备2023025661号-1