- 博客(535)
- 资源 (7)
- 收藏
- 关注
原创 编译原理动手实操之一个输入系统的实现
大家好,欢迎大家来到coding迪斯尼,愿天下没有难学的知识阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: http://study.163.com/course/courseMain.htm?courseId=1002830012这篇文章是我课程中的系列讲稿,也是编译原理动手实操系列的文章。在我们南方有一句老话叫:无
2016-03-16 10:02:54 4169 5
原创 输入及词法分析详解
欢迎大家来到coding迪斯尼,我的愿景是:让天下没有难学的知识 这句话是跟马云学的,就算没马云的命,那就用马云的话,也是不错的。阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: http://study.163.com/course/courseMain.htm?courseId=1002830012 大家好,继上几节我们通过实现一个简易编译
2016-03-08 12:08:29 3876 1
原创 编译原理动手实操,用java实现一个简易编译器-语法解析
语法和解析树:举个例子看看,语法解析的过程。句子:“我看到刘德华唱歌”。在计算机里,怎么用程序解析它呢。从语法上看,句子的组成是由主语,动词,和谓语从句组成,主语是“我”,动词是“看见”, 谓语从句是”刘德华唱歌“。因此一个句子可以分解成 主语 + 动词 + 谓语从句:句子-->主语+动词 + 谓语从句 主语是名词,因此有 :主语->名词句子里的
2016-02-21 18:03:43 13342 7
原创 利用DSF深度优先搜索来解容器倒水问题
在一些面试算法或智力题中,时不时会遇到容器倒水的问题,例如,有三个容器,分别是10升,7升,4升,7升和4升的容器装满了水,10升容器是空的,如果将容器a中的水倒入容器b时,必须使得a中的水全部倒完,或者b被倒满,问有没有一种倒水序列,使得7升容器或4升容器中只有2升的水。这个问题怎么会跟图论的深度优先搜索联系起来呢。如果我们把三个容器的水量和容量状态当作一个点,例如初始时刻[10(e
2015-12-07 21:27:36 2457 1
原创 一个在线显示doc文本的实例
最近带着一对攻城狮给客户做一个web平台系统,在与客户做需求分析的过程中,发现客户有个需求痛点,那就是希望能在web上直接浏览doc文本的内容。原来的老平台在显示doc文本时,有很多问题,例如原有doc文本排版格式显示错误,例如表格位置发生了偏移,字体不再是原有doc里的字体等等。如果新系统能解决客户这一痛点,想必我们技术团队的实力会得到客户进一步的肯定。我做过调查,发现在线显示doc
2015-11-24 15:20:00 3489 1
原创 一个android文本比对app的实现(二)--界面
本篇对该app的界面实现做一些说明。谷歌对android app 的界面开发提供了精巧的设计,其界面设计的布局技术(layout), 运用了类似于设计模式的composite pattern, 具体来说,就像俄罗斯娃娃,外面一个大娃娃可以套一个小娃娃。android 的layout 里面可以再嵌入其他layout, 层层递进,进而形成变化多样而又非常灵活的界面布局。
2015-11-17 15:36:42 1298
原创 一个android 文本比对App的实现(一)
做c++开发很多年了,从早年windows vc6.0 做客户端程序开发,这些年后台流媒体服务器后台开发。随着时代变迁,移动互联逐渐兴起,直到现在,移动互联的风头早已盖过传统互联网应用,因而传统后台开发似乎日渐式微。如今要找工作的话,android,IOS等开发的职位不但数量远远多于c++,而且报酬也要比c++高很多,如果在移动开发上做过三年以上,年薪25W以上的机会多的是,但是对于c++ 要达到
2015-11-13 17:05:27 3505
原创 一道看似简单的面试算法题所隐藏的潜在意图
大家面试历程中有没有经历过类似情况,面试官给出一道算法题,看似不难,你三下五除二搞定了,时间和空间效率都是最优,你乐呵呵以为offer,已经到手,结果左等右等,望穿秋水,面试的结果却是无疾而终,你反复确认,觉得题做得没错啊,为什么会失败呢。我就有过类似的情况,后来反复思考,才明白,其实我没明白简单的表面其实隐藏着潜在的考察点。举个栗子,一道常用的面试算法题是:给你一个链表,让你将链表反转。
2015-11-11 17:45:51 1446
原创 运用面向对象的分析与设计模式巧解面试算法题
IT行业,千变万化,日新月异,身处其中的各位同仁必感同身受,特别是对从事技术开发的朋友们而言,或许能感觉到唯一不变的就是变化。对纷繁复杂的程序人生而言,其实有一个看不见的主旋律,那就是找工作,找房子,找人(另一半)。如果你是心怀梦想,浪迹于上广北深的千万大军中的一员的话,我想这一句话该是你生活的写照了。在三找中,找工作是其他两找的基础,本系列文章主要是就找工作展开而言。对开发而言,面试
2015-02-09 17:06:40 1288
原创 自己动手写数据库:实现基于静态哈希的索引
数据库设计中有一项至关重要的技术难点,那就是给定特定条件进行查询时,我们需要保证速度尽可能快。假设我们有一个 STUDENT 表,表中包含学生名字,年龄,专业等字段,当我们要查询给定年龄数值的记录,如果我们能把所有记录以年龄字段排序,那么通过二分查找,我们就能快速定位满足条件的记录。如果表中包含N=1,000,000 条记录,通过二分查找就能通过大概 logN = 20 次即可,但是要遍历所有记录...
2024-04-02 16:42:13 626
原创 自己动手写编译器:属性语法极其实现
上一节我们研究了增强语法,本节我们看看何为属性语法。属性语法实则是在语法规则上附带上一些重要的解析信息,随着语法解析的进行,我们可以利用附带的解析信息去进行一系列操作,例如利用解析信息实现代码生成。我们先看属性语法的一个实例:NUMBER("156", 156)NUMBER 是语法解析中的终结符,他附带有两个属性,一个是该标签对应字符串的内容“156”,另一个是他对应的数值也就是 156,如果符号...
2024-02-04 14:01:22 383
原创 自己动手写编译器:增强语法极其实现
我们前面章节看到的语法规则中,语法只给出了代码字符串组合规则是否符合规定,实际上我们可以在语法解析过程中增加一些特定的属性或者操作,使得语法解析流程中就能完成中间代码生成,或者是创建好特定的元信息,以便在后续处理流程中辅助代码生成。例如我们看看如何在语法解析规则中附加特定操作,使得语法解析过程就能生成中间代码,我们看一个例子,给定如下语法规则:expr_prime -> + term {op...
2024-01-29 10:00:16 270
原创 自己动手做数据库系统:解释执行 update 和 delete 对应的 sql 语句
在上一节我们完成了 select 语句的解释执行,本节我们看看 Update 和 Delete 对应的语句如何解释执行,当然他们的实现原理跟我们前面实现的 select 语句执行大同小异。无论是 update还是 delete 都是对数据表的修改,因此他们的实现方法基本相同。假设我们要执行如下 sql 语句:update STUDENT set MajorId=20 where MajorId=3...
2024-01-19 12:20:17 665
原创 自己动手写数据库系统:解释执行 update 和 delete 对应的 sql 语句
本问给出了如何实现 sql 语句中有关 insert, update, delete 等三个修改语句的解释与执行
2024-01-19 12:17:21 406
原创 自己动手做 chatgpt:seq2seq翻译模型中GRU模块的原理和数据预处理
本文给出了自然语言处理早期用于做机器翻译的 seq2seq 模型中 GRU 模块的原理,以及给出数据预处理的步骤
2023-12-24 20:48:58 632
原创 自己动手写编译器:语法解析的基本原理
这里还需要注意的是,箭头右边一系列概念的顺序很重要,顺序是语法规则的组成部分,例如合乎逻辑的“人头”必须满足鼻子在眼睛后面,如果这个顺序颠倒了,那么这个“头”就不是人头,而是异形的头。本节描述的东西比较抽象,它很可能给你带来更多的是困惑,好在在最开始和前面做词法解析时,我们都接触过语法解析,所以前面的练习应该会有助于我们对这些理论的理解,在后面章节中,我们会拿几个较为简单的语法解析做练手,通过实践才能更好的帮我们理解和掌握抽象的理论,更多内容请在 b 站搜索 Coding 迪斯尼。
2023-12-19 22:49:23 112
原创 python 实现 AIGC 大模型中的概率论:充满数学逼格的生日问题公式推导
在前两节中,我们推导了生日问题的求解算法,但在数学上的最终目标就是希望能针对问题推导出一个简洁漂亮的公式,就像爱因斯坦著名的质能方程 E = MC^2 那样,毕竟数学是以符号逻辑来看待世界本质的语言,所以絮絮叨叨不是数学,一个掷地有声的符号公式才是数学的范儿。这里我们需要一些微积分的内容。首先在前面章节中我们推导出 n 个人没有两个人拥有相同生日的概率是:在数学上看到多个数相乘时,第一个处理方法就...
2023-12-18 14:00:03 88
原创 python 实现 AIGC 大模型中的概率论:生日问题的公式推导
本文给出了生日问题的公式推导,充分显示处数学在算法设计特别是深度学习上所展现的逼格
2023-12-18 13:56:16 232
原创 自己动手写数据库:解析 select 语句并生成查询树
首先我们需要给原来代码打个补丁,在SelectScan 结构体初始化时需要传入 UpdateScan 接口对象,但很多时候我们需要传入的是 Scan 对象,因此我们需要做一个转换,也就是当初始化 SelectScan 时,如果传入的是 Scan 对象,那么我们就将其封装成 UpdateScan 接口对象,因此在 query 目录下增加一个名为 updatescan_wrapper.go 的文件,在...
2023-12-15 10:00:15 86
原创 自己动手写数据库: select 查询语句对应查询树的构造和执行
本文给出了如何解析 select sql 语句并构造查询树,然后执行语句并获得执行结果
2023-12-14 22:31:58 231
原创 自己动手做编译器:实现 c 语言的词法解析
对编译器设计和开发而言,表明你能有效入门的证明就是你能做出一个针对 C 语言的编译器。完成了 C 语言编译器,你在编译原理领域里算是写出了第一个 hello world 程序。于是为了确认我们开发的 GoLex 功能完善,我们看看它是否能对 C 语言的语法有准确的解。首先我们修改一处正则表达式解析的 bug,在 RegParser.go 中的term 函数做如下修改:...else { ...
2023-12-12 18:01:20 123
原创 python 实现 AIGC 大语言模型中的概率论:生日相同问题的代码场景模拟
概率论和数理统计是 AGC 大语言模型算法的理论基石之一,本系列文章希望通过代码的方式,以工程师的角度来研究概率论
2023-12-01 17:32:24 134
原创 自己动手写 chatgpt: Attention 机制的原理与实现
chatGPT 等大模型能成功有赖于 attention 算法机制,本文着重描述和实现该机制的算法原理
2023-11-29 13:30:12 562
原创 自己动手写编译器:golex 和 flex 比较研究 2
本文给出了 gcc 编译器专用语法解析器 flex 如何实现动态添加单词的符号表功能,然后在 GoLex 上也同等实现相应功能
2023-11-27 22:43:05 92
一个java实现的简易编译器
2016-02-18
一个android 文本比对app的实现代码
2015-11-16
Learning AndEngine
2015-03-26
Information Retrieval: Implementing and Evaluating Search Engines
2015-02-10
Android 4.4 App Development Essential
2014-11-21
NUnit Pocket Reference
2014-10-29
C# Design Pattern Essentials mobi
2014-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人