摘要: Linux IO多路复用 poll 之前曾经提到过 select poll 跟select类似,poll改进了select的一个确定,就是poll没有监听上限 不过poll还是需要遍历以及频繁的把数组拷贝到内核空间,在监听较多文件描述符的时候性能会下降 传递的三个参数 fds:结构体数组 nfds: 阅读全文
posted @ 2019-04-05 10:39 stdpain 阅读(312) 评论(0) 推荐(0) 编辑
摘要: Linux IO多路复用 select 之前曾经写过简单的服务器,服务器是用多线程阻塞,客户端每一帧是用非阻塞实现的 后来发现select可以用来多路IO复用,就是说可以把服务器这么多线程放在一个线程里面,减小资源消耗,没必要开多个线程 不过实际上select使用很少,现在一般会用epoll这个函数 阅读全文
posted @ 2019-04-04 22:24 stdpain 阅读(642) 评论(0) 推荐(0) 编辑
摘要: Java Integer == 先看一下这段代码 输出结果: 很久之前就知道这里有个坑,今天看到别人分析了一下Integer.java的源代码才知道具体是为什么 可以看出来使用 的时候并不会立即new一个Integer对象,而是先判断是否在缓存数组里面 不知道称作 是不是不太合适 是一个嵌套类(静态 阅读全文
posted @ 2019-04-04 20:04 stdpain 阅读(2446) 评论(0) 推荐(0) 编辑
摘要: Stream 不是 `io`中的stream 对象创建 我们没有必要使用一个迭代来创建对象,直接使用流就可以 流使用起来代码更清晰 流看上去有点像是集合,转换或者获取数据,不过有一定的差异性 1. 流不会存储元素,,这些元素可能是 储存在底层的集合中,或者按需生成的 2. 流的操作不会修改其数据源 阅读全文
posted @ 2019-04-03 09:48 stdpain 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 我们现在开始设计数据结构: interpreter.h Interpreter就是解释器的结构体,存放一些全局信息,在需要的时候可以通过getInstance获取实例 我们的解释器执行的时候是先使用 构建抽象语法树( ),然后再解释执行 我们先来看一下语句的结构体: 我们把表达式语句,if和for语 阅读全文
posted @ 2019-03-14 11:48 stdpain 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 我们现在已经可以写好文法了,下一步我们打算开始正式创建工程了 在工程目录下,我们创建如下文件夹 文件夹下我们将放头文件 是内存管理模块,检测内存泄漏 文件夹主要是放源文件 memory内存管理模块可以参考我另一个随笔 https://www.cnblogs.com/stdpain/p/1048440 阅读全文
posted @ 2019-03-14 10:57 stdpain 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 我们先来想一下语法 一般脚本语言不需要定义类型直接在赋值的时候确定 1. 我们主要考虑一下变量的类型 一般来讲,我们使用这三种类型,整形,浮点型,字符串型 不过我们以后还可能使用原生类型等 2. 变量的基本运算和其他语言基本相同 3. 函数定义 我们可以模仿一下js的函数定义方式,不过变量使用的时候 阅读全文
posted @ 2019-03-13 16:31 stdpain 阅读(634) 评论(0) 推荐(0) 编辑
摘要: 使用bison和yacc制作脚本语言(1) 环境: | 环境 | windows 10 Cygwin64 | | | | | 语言 | C | | 工具 | mingw bison flex | 主要是使用bison和flex这两个软件,编译器无所谓VC也可以 先安装Cygwin,这个是一个类似Li 阅读全文
posted @ 2019-03-13 14:33 stdpain 阅读(612) 评论(0) 推荐(0) 编辑
摘要: C Mingw gcc printf 刷新缓冲行 参考:https://stackoverflow.com/questions/13035075/printf not printing on console 最近在用Mingw的时候遇到段错误的时候printf没有输出,加 也不行只能一点一点用gdb 阅读全文
posted @ 2019-03-13 14:04 stdpain 阅读(362) 评论(0) 推荐(0) 编辑
摘要: GDB简单使用 通过gdb启动进程 gdb $bin gdb中装载 file $bin 开始执行 (r) run 给main函数传递的值 run $arg1 $arg2 显示源代码 list list $function_name list $n break 打断点 break $line #当前文 阅读全文
posted @ 2019-03-11 12:50 stdpain 阅读(173) 评论(0) 推荐(0) 编辑