- 博客(74)
- 资源 (3)
- 收藏
- 关注
原创 mdbook——超级好用的专栏写作工具
mdbook 是一个非常简洁的工具,几个简单的命令行即可开始你的写作之旅,帮助你快速将 markdown 文档转成你想要的格式,还能支持浏览器的实时预览。
2024-02-02 13:18:06 1041
原创 单步跟踪展开C++模版你会吗?
本文讨论c++模版展开单步跟踪的方式,使用 templight 可以对编译过程进行交互,并查看编译器展开模版的完整过程
2024-01-27 22:57:47 844
原创 tvm 中的python bindings是如何与 C++ 进行交互的呢
tvm 使用 python 作为编程接口,本文从源代码的层面来尝试分析一下 python 与 c++ 到底是如何交互的
2024-01-24 00:04:04 917
原创 cuda二进制文件中到底有些什么
cuda 二进制文件,分成两部分,一个是 host 部分的代码,一个是 device 段的代码。device 段的代码,作为一个 section 的方式,以 fatbin 的方式或者 ptx 汇编代码的方式嵌入到了最终的 elf 文件中
2024-01-21 22:04:50 936
原创 第三章:上下文无关文法进阶
高级属性文法的说明和使用lexer 和 parse 的 options 用法antlr4 允许在生成的语法分析器中,通过一些 named actions 的操作,以自定义的方式插入一些代码片段。这些 action 操作是与特定平台相关的,比如 c++ 和 java 的就不一样。通用的几个操作如下@parser::header@parser::members@lexer::header@lexer::members@parser::header 和 @lexer::header 中的内容,将
2022-05-01 12:06:51 505
原创 传统编译器和DL编译器的调研和理解
Part One : 传统编译器编译器就是一个将编程语言所编写的程序翻译成另一种目标语言的程序。传统编译器的执行流程如下所示编译器的前端技术分为词法分析,语法分析,语义分析三个部分,后端部分从生成中间代码,到各种优化,到最终生成目标代码的过程,有时又会将中间代码和优化部分称之为中端。下文将从前端,中端和后端三个角度来阐述。1.1 前端词法分析器 scanner 以源代码作为输入,将源代码转换成 token stream,然后传递给 parser 进行处理,parser 按照语法规则,对 tok
2022-04-27 10:59:43 2906 1
原创 第四章:文法中的递归以及消除方法
在介绍递归文法之前,首先介绍一下递归下降分析器及其原理,然后分析右递归是如何处理的,再来分析左递归和间接左递归。递归下降分析器自顶向下语法分析的目的是为输入串寻找最左推导,或者说,从根节点(文法开始符号)开始,自上而下,从左到右地为输入字符串建立一棵分析树,并以预先确定的顺序创建分析树的节点。这种自顶向下分析的一般形式,称之为递归下降分析法。“下降”表示自顶向下,“递归”表示可能会调用自身。在递归下降分析器中,最简单的一种,就是 LL(1) 递归下降分析器。我们尝试来构造一个简单的满足 LL(1) 的
2022-04-25 21:55:33 2117 1
原创 第二章:上下文无关文法
牛刀小试antlr4 的安装上一章节我们简单介绍了一下 antlr4,这一章节,开始讨论 antlr4 的使用和文法。首先简单介绍一下 antlr4 工具的安装和使用参数,非常简单。安装 java 1.7 及以上版本,配置 java 环境变量下载 antlr4 工具 https://www.antlr.org/download/antlr-4.9.2-complete.jar,可以将 antlr4 工具添加到 CLASSPATH 环境变量中,比如添加到 .bash_profile 或者 .b
2022-04-21 20:25:50 1874 1
原创 第一章:antlr4 简介
antlr4 简介ANTLR(全名:ANother Tool for Language Recognition)是基于LL(*)算法实现的语法解析器生成器(parser generator),用Java语言编写,使用自上而下(top-down)的递归下降LL剖析器方法。由旧金山大学的Terence Parr博士等人于1989年开始发展。ANTLR最初叫做PCCTS,Purdue Compiler Construction Tool Set,是 Terence Parr 在普渡大学攻读硕士学位时的创作,在
2022-04-21 20:22:02 5917
原创 前言-阅读建议和说明
适用范围该专栏适合对语法感兴趣的小伙伴,希望能从计算机语言语法解析本身的角度去理解一门语言,或者是对编译器前端感兴趣,希望能过编写自己的脚本语言的小伙伴,或者是对当前IDE插件有些不满,希望能够编写自己针对某种语言的插件,或者代码美化工具等等。笔者认为,对语法解析的理解,能够加深对编程语言本身的理解,对编译器解析代码文本的过程也会有一个比较清晰的认识。阅读专栏的建议本专栏非学术专著,很多知识都是笔者在实际工作实践中摸爬滚打,翻看资料和论文总结出来的。笔者会尽量通过举例说明的方式,来阐述清楚所要表达的
2022-04-21 20:19:54 226
原创 2021工作后记
在刚毕业的时候,就总是想着,能有机会参与到操作系统的开发中一定会非常有意思。那个时候对 linux 操作系统也是很着迷的。可是现实却是,毕业那会并没有找到这方面的机会,能够参与到操作系统的开发当中去。机缘巧合下,去了深圳移动做运维开发的工作。在移动的四年时间里,认识了很多有意思的小伙伴,也发现,原来工作之中也是充满乐趣和生活的。移动自由的工作氛围,给了我很大的自我成长空间。每天肆意的看着资料,写技术博客。也养成了独立寻找解决方案,解决问题的思维和能力,这对我来到杭州全身心投入到研发工作中带来了很多益处。
2022-01-14 00:22:09 3738
原创 浅谈内存泄漏
引子我们写的程序是如何一步一步运行起来的?为什么虚拟内存大小可以比实际物理内存大cpu是如何管理物理内存和映射内存的……内存泄漏是什么,如何定位和排查内存泄漏的现象在实际工作中,我们可能会遇到下面这些情况伴随着服务器中的后台任务持续地运行,系统中可用内存越来越少;应用程序正在运行时忽然被 OOM kill 掉了;进程看起来没有消耗多少内存,但是系统内存就是不够用了;……类似问题,很可能就是内存泄漏导致的。我们都知道,内存泄漏指的是内存被分配出去后一直没有被释放,导致这部分内存.
2021-11-24 09:56:22 1673
原创 限制linux用户可使用的命令及权限的两种方案
文章目录方案一方案二梳理 bash-4.2 源代码添加代码通过配置加载允许访问的命令如何使 testuser 用户能够正确需要超级权限的操作总结这段时间思考了这么一个问题,如何限制 linux 系统中登录用户的访问权限,限制用户能够使用的命令。在某些场景下,要求能够限制用户使用的命令,同时还能够执行想shutdown这种超级用户才能使用的命令。方案一以 rbash 的方式来限制用户的访问权限,在 ubuntu 系统中,直接使用bash -r就可以进入 rbash,在 centos 7 系统中,不
2021-07-16 09:54:23 4991 4
原创 cmake编译带版本的动态库以及链接不带版本的库
个人博客 https://juejin.cn/user/176366088104638 和 http://blog.wuzhenyu.com.cncmake 编译动态库和链接动态库cmake 中,通过 add_library 的方式,来设置编译目标,编译结果为动态库或者静态库add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [source1] [source2.
2021-04-28 10:03:19 4574
原创 自定义centos镜像制作
自定义centos镜像制作tutorial挂载镜像安装制作发行版的工具同步光盘文件到制作ISO的目录拷贝 rpm生成install.log拷贝已安装rpm配置yum下载指定软件包列表(`rpms_list.txt`)的所有依赖包修改 `isolinux.cfg` 文件修改自动化安装配置文件制作修改comps文件编辑comps文件添加定制rpm包在指定的环境中添加定制的groupid生成新的 `repodata` 数据制作ISO镜像制作镜像MD5值rpm 包的制作SPEC 配置解析rpmbuild 制作过程简
2021-04-19 09:13:43 2497
原创 antlr4中NoViableAltException 异常引起程序崩溃
NoViableAltException 异常引起的 coredump 问题使用antlr4解析时,在遇到 NoViableAltException 异常的时候,有些情况下会遇到 coredump 错误,如果仅仅抛出异常还好,但是出现崩溃问题在项目中就是大问题了,这个必须得找到并解决。antlr4 解析时,在 ParserATNSimulator.cpp 中的 execATN 函数的 179 ...
2019-12-16 20:47:42 2678
原创 antlr4的介绍以及常见错误和调试方法
本文简单介绍 antlr4的基本知识,介绍了antlr4 语法中二义性及解决思路,anrlr4 可能出现的错误,以及错误定位和解决的办法。简单介绍ANTLR(Another Tool for Language Recognition)是一个开源的语法分析器生成工具。ANTLR4 语法分析器使用了一种名为自适应的 LL(*) 或者 ALL(*)(读作 all star)的新技术,ALL(*)是 ...
2019-11-05 20:33:11 10801
原创 Use GDB and KGDB to debug linux kernel on two different machines
本文讲述如何在两个主机之间搭建linux kernel的调试环境,用到kgdb工具。环境如下gcc 4.6.3ubuntu 3.13.0-32-genericlinux source code: linux-3.4.tar.gzvirtualbox 5.2.18Step 1调试内核,当然首先需要编译自己需要的版本的内核,编译内核参数,make menuconfig. 当然,这里需要提...
2019-04-22 20:58:38 247
原创 构建自己的运行库
文章目录如何构建自己的运行库入口函数堆的实现实现IO 文件操作字符串操作字符串格式化minicrt 的使用测试如何构建自己的运行库之前介绍了《main函数之前后》,这次,我们试图来构建一个自己的运行库。本篇文章中的例子,来自于俞甲子、石凡、潘爱民的《程序员的自我修养-链接、装载与库》,对例子进行了更新,原书中是32位,这里是64位。也感谢这本书给我带来的帮助,对编译过程和程序的底层知识有了...
2019-02-22 17:33:27 302
原创 main函数之前后
main函数之前后main 函数之前后编译过程符号分析分析 Glibc 的入口函数总结欢迎大家访问我的个人博客 http://blog.wuzhenyu.com.cnmain 函数之前后初学编程的人都知道,程序是从main函数开始执行的,那么在main函数执行之前和执行之后,程序到底做了些什么呢,比如全局变量是在什么时候执行的呢,我们在动态申请堆内存的时候使用malloc就可以了,那么堆...
2019-02-21 17:33:22 1413 1
原创 动态数组的内存增长因子如何选择-1.5倍还是2倍?
What is the ideal growth rate for a dynamically allocated array
2017-08-24 20:50:58 2719 1
原创 session或scrapy实现模拟登录知乎
session 和 scrapy 的模拟登陆推荐我的个人博客: blog.wuzhenyu.com.cn
2017-07-28 16:00:13 4533
原创 scrapy简单入门 - 爬取伯乐在线所有文章
scrapy 的简单入门,使用 scrapy 爬取网站所有文章1. 分析网页结构2. 使用 css selector 的方法提取元素3. 开始 scrapy 工程4. 获取所有文章url,爬取文章数据5. 下载图片6. 使用 item 和 itemloader7. 将数据导出到 json 格式的文件中8. 将数据保存到 mysql 数据库中
2017-07-09 21:27:31 7306 6
原创 mysql中对sql的调优方法
MySQL中对SQL的调优方法在网上查了些资料,前辈们说的都很齐全,我这针对他们所说的,根据自己的实践,整理了一些基本方法或步骤,算是对SQL调优的一个总结吧。查找慢查询查看慢查询的时间show variables like 'long_query_time';临时设置慢查询的值set long_query_time=2但是,如果需要永久设置,就需要在MySQL的配...
2017-03-20 22:55:03 1882
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人