- 博客(507)
- 资源 (7)
- 收藏
- 关注

原创 编译原理动手实操之一个输入系统的实现
大家好,欢迎大家来到coding迪斯尼,愿天下没有难学的知识阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: http://study.163.com/course/courseMain.htm?courseId=1002830012这篇文章是我课程中的系列讲稿,也是编译原理动手实操系列的文章。在我们南方有一句老话叫:无
2016-03-16 10:02:54
4032
5

原创 输入及词法分析详解
欢迎大家来到coding迪斯尼,我的愿景是:让天下没有难学的知识 这句话是跟马云学的,就算没马云的命,那就用马云的话,也是不错的。阅读博客的朋友可以到我的网易云课堂中,通过视频的方式查看代码的调试和执行过程: http://study.163.com/course/courseMain.htm?courseId=1002830012 大家好,继上几节我们通过实现一个简易编译
2016-03-08 12:08:29
3808
1

原创 编译原理动手实操,用java实现一个简易编译器-语法解析
语法和解析树:举个例子看看,语法解析的过程。句子:“我看到刘德华唱歌”。在计算机里,怎么用程序解析它呢。从语法上看,句子的组成是由主语,动词,和谓语从句组成,主语是“我”,动词是“看见”, 谓语从句是”刘德华唱歌“。因此一个句子可以分解成 主语 + 动词 + 谓语从句:句子-->主语+动词 + 谓语从句 主语是名词,因此有 :主语->名词句子里的
2016-02-21 18:03:43
12990
7

原创 利用DSF深度优先搜索来解容器倒水问题
在一些面试算法或智力题中,时不时会遇到容器倒水的问题,例如,有三个容器,分别是10升,7升,4升,7升和4升的容器装满了水,10升容器是空的,如果将容器a中的水倒入容器b时,必须使得a中的水全部倒完,或者b被倒满,问有没有一种倒水序列,使得7升容器或4升容器中只有2升的水。这个问题怎么会跟图论的深度优先搜索联系起来呢。如果我们把三个容器的水量和容量状态当作一个点,例如初始时刻[10(e
2015-12-07 21:27:36
2354
1

原创 一个在线显示doc文本的实例
最近带着一对攻城狮给客户做一个web平台系统,在与客户做需求分析的过程中,发现客户有个需求痛点,那就是希望能在web上直接浏览doc文本的内容。原来的老平台在显示doc文本时,有很多问题,例如原有doc文本排版格式显示错误,例如表格位置发生了偏移,字体不再是原有doc里的字体等等。如果新系统能解决客户这一痛点,想必我们技术团队的实力会得到客户进一步的肯定。我做过调查,发现在线显示doc
2015-11-24 15:20:00
3391
1

原创 一个android文本比对app的实现(二)--界面
本篇对该app的界面实现做一些说明。谷歌对android app 的界面开发提供了精巧的设计,其界面设计的布局技术(layout), 运用了类似于设计模式的composite pattern, 具体来说,就像俄罗斯娃娃,外面一个大娃娃可以套一个小娃娃。android 的layout 里面可以再嵌入其他layout, 层层递进,进而形成变化多样而又非常灵活的界面布局。
2015-11-17 15:36:42
1267

原创 一个android 文本比对App的实现(一)
做c++开发很多年了,从早年windows vc6.0 做客户端程序开发,这些年后台流媒体服务器后台开发。随着时代变迁,移动互联逐渐兴起,直到现在,移动互联的风头早已盖过传统互联网应用,因而传统后台开发似乎日渐式微。如今要找工作的话,android,IOS等开发的职位不但数量远远多于c++,而且报酬也要比c++高很多,如果在移动开发上做过三年以上,年薪25W以上的机会多的是,但是对于c++ 要达到
2015-11-13 17:05:27
3405

原创 一道看似简单的面试算法题所隐藏的潜在意图
大家面试历程中有没有经历过类似情况,面试官给出一道算法题,看似不难,你三下五除二搞定了,时间和空间效率都是最优,你乐呵呵以为offer,已经到手,结果左等右等,望穿秋水,面试的结果却是无疾而终,你反复确认,觉得题做得没错啊,为什么会失败呢。我就有过类似的情况,后来反复思考,才明白,其实我没明白简单的表面其实隐藏着潜在的考察点。举个栗子,一道常用的面试算法题是:给你一个链表,让你将链表反转。
2015-11-11 17:45:51
1408

原创 运用面向对象的分析与设计模式巧解面试算法题
IT行业,千变万化,日新月异,身处其中的各位同仁必感同身受,特别是对从事技术开发的朋友们而言,或许能感觉到唯一不变的就是变化。对纷繁复杂的程序人生而言,其实有一个看不见的主旋律,那就是找工作,找房子,找人(另一半)。如果你是心怀梦想,浪迹于上广北深的千万大军中的一员的话,我想这一句话该是你生活的写照了。在三找中,找工作是其他两找的基础,本系列文章主要是就找工作展开而言。对开发而言,面试
2015-02-09 17:06:40
1249
原创 自己动手写数据库:实现一个小型 SQL 解释器(下)
以上代码的调试演示过程请在 B 站搜索 coding 迪斯尼查看相关视频。本节我们完成 SQL 解释器的最后一部分,它涉及到数据的删除和更改,首先我们看删除语句的解析。
2023-09-01 17:12:08
1000
1
原创 区块链系统探索之路:私钥的压缩和WIF格式详解
在前面章节中,我们详细介绍了公钥的压缩,在比特币网络中,一个私钥可以对应两个地址,一个地址是由未压缩公钥所生成的地址,另一个就是由压缩公钥所创建的地址,从公钥到区块链地址的转换算法,我们在这里给出详细描述和代码实现,本节我们看看私钥的压缩以及相关的WIF数据格式。搞笑的是私钥”压缩“后,其长度反而比压缩前增加了一个字节。而“压缩”方法也相当简单,就是在私钥末尾增加一个字节01,例如如果私钥的数据为...
2023-08-12 09:30:54
719
原创 区块链系统探索之路:钱包地址的实现
在区块链,特别是比特币网络,一个非常关键的组件是钱包。它主要用来实现“价值转移”,既然要转移,那就必须要有转移人和接收人,在转移过程中,我们必须确保转移的发送必须由资产的所有者发起,这就是私钥的作用,一笔交易要生效必须由资产的所有人使用它的私钥确认后才能发起,同时要有办法准确找到价值的正确接受者,这就是公钥的作用,公钥类似于银行账号用于接收转移的资产。在前面章节我们介绍过,私钥是一个随机数,而公钥...
2023-07-02 14:16:00
499
1
原创 区块链系统探索之路:椭圆曲线上点”+“操作的代码实现
上面情况就对应点"0”,虽然上面直线跟曲线没有第三个交点,但是我们可以“定义”这条直线跟曲线在“无限远”处相加,而那个交点就是"0",于是这种情况下直线跟曲线的两个交点互为“相反数”,如果我们把上面交点记作a,那么下面的那个交点就对应为-a, 当曲线上两个点的连线与y轴平行时,我们把这两个点的“+“运算结果记作"0”。在椭圆曲线上选择任意两点,他们执行"+"操作后,第三点在哪里从数学上是无法预料的,这就形成了椭圆曲线能加密的基础。在区块链应用中,首先需要选定曲线上一个特定点G,然后产生集合{1。
2023-03-19 13:13:57
391
3
原创 自己动手写编译器:从NFA到DFA
前面我们看到,一个DFA节点本质上对应一组NFA节点,因此当我们使用move 和epsilon闭包操作得到一组NFA节点后,我们需要看看是不是已经有DFA节点对应到了生成的NFA节点集合,如果有了,说明对应的DFA节点已经生成,这个操作由函数compareNfaSlice和hasDfaContainsNfa完成,如果当前得到的NFA节点集合没有对应的DFA节点,那么就使用addDfaState函数去创建一个新的DFA节点,然后将其加入到dstates数组中。上一节我们完成了使用NFA来识别字符串的功能。
2023-01-07 21:57:29
767
原创 自己动手写编译器:使用NFA状态机识别字符串
在前面章节中我们构建了NFA状态机,现在我们看看如何使用它来识别给定字符串是否合法。首先我们先构造如下正则表达式对应的NFA,在input文件的表达式部分输入:({D}.{D} | {D}.{D})这个表达式的目的是识别浮点数,用我们前面做好的代码生成的NFA状态机如下:这里我们需要引入两个个概念及其对应操作,首先是epsilon-clousure操作, 它表示给定一系列初始状态后,然后找到从这些...
2022-11-28 09:30:54
275
原创 高并发和大数据下的高级算法与数据结构:如何快速获取给定年龄区间的微信用户数量或快速获取美团中购买量前k的品类
使用count-min-sketch算法解决海量数据的统计难题
2022-11-13 14:37:26
963
原创 自己动手写数据库:记录管理器的设计和实现
在数据库中,数据以”记录“作为一个单元来存储,例如一个表的“一行”就对应一条记录。假设我们有一个表叫STUDENT,其中有name, age, sex, class等字段,那么一条记录的信息就由这四个字段对应的信息合成。一条记录如何存储并不是一个简单的事情,例如我们需要考虑如下因素:1,一条记录是否应该全部存储在一个区块中2,一个区块存储的记录是否应该全部来自同一张表3,记录中每个自动的大小是否应...
2022-10-21 16:29:43
234
原创 自己动手写编译器:从正则表达式到NFA状态机
在编译器开发中有两个非常重要的工具名为lex和yacc,他们是编译器的生成器。本质上我们不需要一行行去完成编译器的代码,只需要借助这两个工具,同时制定好词法解析和语法解析的规则后,这两个工具就会自动帮我们把代码生成,我们后续的任务就是使用go语言将这两个工具实现。为了更好的理解我们要开发的GoLex,我们先熟悉一下lex工具的使用。在Centos上安装lex的命令为:yum install fle...
2022-09-27 09:00:33
716
一个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关注的人