2016-07-03 JustWe
原文链接 : https://lfkdsk.github.io/ 原文作者:lfkdsk 可以参考我写得代码:First&Follow 这次我们来讲一个学习编译原理的常见项目,对一个非终结符和一个产生式集求First&Follow集。这是很简单和基础的内容,但是国内的教科书,又犯了计科类教材经常出现的毛病,爱乱给东西起名字,而且还讲不清概念,所以在学习编译原理的时候我记了一本笔记,专门用来翻译国内教材书上的概念到底是怎么回事。 闲话少说我们先来把First&Follow集说清。 1.First集求法 First的本质意义在于处理字符流的前驱子串,比如在LL构建预测分析表的时候就 继续阅读 »
2016-07-04 JustWe
有穷自动机 为了实现对于正规式(可理解为正则表达式)的识别,我们提出了有穷自动机理论,有穷自动机接受正规式的定义符,并不断的识别符号,移动到新的状态,如果出现了识别错误就会报错。 有穷自动机包含确定的有穷自动机(DFA),和不确定的有穷自动机(NFA)。两者的主要区别在于,在同一个状态时,是否通过同样的符号输入能达到不同的状态。如果能就是不确定的,反之就是确定的。另外:NFA还可以接受空字串已达到不同的状态。 三个主要的算法 这其中有三个主要的算法: 正规式 => NFA Thompson算法 这个算法使用了一些模版去对应正则表达式中的符号,只要记住模版,就能推出相应的NFA。 继续阅读 »
2016-05-26 JustWe
你的问题在于读书太少,想的太多 —— 杨绛 昨天惊闻杨绛先生去世,突然想到了几年前看到的杨绛先生的这句话。我觉得在计算机领域理论知识更是尤为重要,现在某乎上盛行的计算机理论知识(尤指算法)无用论当真特别可悲。在这里我觉得讨论科班非科班的人都是别有用心的,重要的问题在于这些基础的训练,而不是科班非科班,我们知道很多大神都不是计算机相关专业的,但是他们的基础的深厚程度,确是很多科班出身的人无法能及的,所以说一切的问题还是要积累知识。 这学期一直在学编译原理的课程,我实实在在的感觉到了这个课程和相关内容的有趣。尤其是我在学习之前试着自己不借助任何的理论去写一个解释器,竟然也命中了不少的知识,这让 继续阅读 »
2014-06-30 veryyoung
原理:Android是基于Java的,要编译成类似Java字节码运行在类似JVM的Dalvik虚拟机上,市面上有很多Java反编译工具,所以反编译一般的安卓程序并修改程序其实是不太难的。 下面讲一讲怎么反编译安卓程序并植入广告(以有米广告为例),仅供学习参考,如若用在商业软件上,造成的后果本人概不负责。 工具下载 本例子用到了两个工具,APKTOOL和AUTO-SIGN,前者用来对程序进行反编译和重编译,后者用来给生成的APK文件进行签名。 本人在Ubuntu 下进行的测试,windows和,mac下应该不会有太大的区别。 下载apktool https://code.google.com/p/android-apkto 继续阅读 »
2018-01-20 YongHao Hu
DNS
记得大学里有计算机网络这门课程,我找过著名的两本的国外教材,分别从自底向上,由上到下两个角度来诠释网络是如何连接的。冗长的介绍接线器,光缆,吓得我粗略的一略而过,结果自然是『万花丛中过,片叶不沾身』。 而后,我的编程生涯里,似乎也没有被网络所困扰。不懂得各种原理,似乎用框架,查查 stackoverflow,Google 挖个遍,也可以 6666. 不做底层的咸鱼,怎么会需要原理呢,我学的什么编译链接,session,segment,,内存管理也不过是镜中花,水里月。 继续阅读 »
2016-12-10 YongHao Hu
go
apt-get install 的原理是什么?我们知道自己编译安装一个包的过程是./configure, make, make install. 但是, apt-get install 做了什么呢? 分析依赖并且下载相应的包, 以下命令会把相应的包都下载到本地. 继续阅读 »
2017-01-07 ruki
最近给xmake增加了一个新特性,对于一份工程源码,可以不用编写makefile,也不用编写各种make相关的工程描述文件(例如:xmake.lua,makefile.am, cmakelist.txt等) xmake就可以直接编译他们,这是如何做到的呢,简单来说下实现原理: 首先扫描当前目录下,xmake所以支持的所有源代码文件 分析代码,检测哪些代码拥有main入口函数 所有没有main入口的代码编译成静态库 带有main入口的代码,编译成可执行程序,同时链接其他静态库程序 这种代码扫描和智能编译,非常简单,目前xmake还不支持多级目录扫描,只对单级目录的代码进行扫描编译。。 开源代码的移植和编译 虽然这种方式,并不是 继续阅读 »
2016-10-30 ruki
新特性 支持make进行直接编译(会去自动下载xmake进行构建) 在平台库中,添加切换context上下文接口(参考boost.context实现原理进行重写,并对部分架构进行优化) 新增跨平台协程模块(支持i386, x86_64, arm, arm64),提供更加易用的高性能并发编程模式 新增基于协程的各种服务器开发实例(包括:简单轻量的http服务器,爬虫。。) 新增poller轮询器接口,实现对epoll, poll, kqueue, select的封装,逐步取代老的aiop接口 新增mbedtls ssl库接口支持,目前已支持:openssl, polarssl, mbedtls tbox所有stream, socke 继续阅读 »