代码苦旅
oun
n/a
展开
-
初识国产DBMS
今天抱着支持民族软件产业的心态下载了几个国产的数据库管理系统来试用。感觉只有一个:not so bad。。。 今天才知道,国产DBMS厂家主要有这几个:华工达梦,人大金仓,神州OSCAR,东软OPENBASE,北京国信贝斯iBASE。民族力量要壮大了,呵呵。 装了达梦和金仓。先装金仓。感觉进度很快,跟我装超星阅读器差不多,有点简陋的感觉。完成后开了服务器,然后准备用客户端连接,谁知总是报密原创 2005-08-19 19:49:00 · 1850 阅读 · 2 评论 -
[转]Ubuntu快速设置指南
原文出处:ubuntu.org.cn原文作者:Oneleaf fideas授权许可: 创作共享协议 前言 最新修改部份: 增加"fcitx使用细节",用于收集fcitx使用小技巧2007-06-12。 因为中间部分包没有相应的AMD64和PPC的对应包,因此会出现找不到该包的情况。如果你是属于这样的系统,请到转载 2007-07-19 12:56:00 · 1716 阅读 · 0 评论 -
编译研究5——与或运算
当前编译器支持与或运算,为减少代码量,加快运算速度,必须选择简单有效途径判断左右操作数:1、与运算:通过相乘左右操作数并判断结果是否为0,得知操作数中是否含有0。只有都不为0,与运算结果才为1,其他情况都为0。2、或运算:左右操作数相乘并判断是否为0,非0表明一定不含0,结果为1;为0再比较左右操作数是否相等,不相等表示有一个非0,则结果也为1;若左右相同,表明都为0,则运原创 2007-08-26 18:09:00 · 365 阅读 · 0 评论 -
编译研究6——参数传递
当前编译器支持函数调用的参数传递。传值方式是实参列表从左至右,具体是从左至右扫描实参列表并按照相同顺序压入运行时堆栈,由于堆栈的后进先出原则,因此在目标过程开始时出栈顺序是相反的,即从实参列表的右边往左获得实参序列。这也是C的调用顺序。当然也可以按照pascal的顺序,即从源码扫描参数序列的顺序可以不变,也是从左往右扫描并读入内存容器中,但在压栈实参时,应该从该容器末尾开始压栈,即从实参列原创 2007-08-26 18:19:00 · 351 阅读 · 0 评论 -
C++模板应用——让模板定义和实现分离的方法
关于c++中类的模板 ,惯常的用法都是把实现和定义放在头文件里了事。这样的问题是,加大了头文件的长度,减低了模板代码的可读性,还有就是破坏了面向对象的隐藏实现的规则。下面就是这种问题的两个解决方案的总结(取自codeproject http://www.codeproject.com/cpp/templatesourceorg.asp):假设模板代码如下:// 模板定义 a.h#inc原创 2007-06-06 17:03:00 · 1426 阅读 · 1 评论 -
C++模板应用——在类模板实现中引用其内部定义的复合数据类型
假设有以下类模板定义:// Test.htemplateclass T>class Test...{ public: struct TS ...{ int j ; } ; public: TS* test1() ;} ; 注意,模板Test内还包含了类TS的定义。原创 2007-06-09 00:50:00 · 676 阅读 · 0 评论 -
[转] GDB的详细用法
文章转自: http://blog.csdn.net/liwei_cmg/archive/2006/07/24/967657.aspx 感谢草木瓜前辈找来这篇如此有技术含量的文章!GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个转载 2007-06-13 14:12:00 · 500 阅读 · 0 评论 -
编译研究7——数据类型、边界对齐和可变长运行时堆栈
1、 当前编译器支持若干种数据类型,分别是: 名称 长度(字节) 位长 short_int 1 8 int 2原创 2007-11-18 23:23:00 · 395 阅读 · 0 评论 -
windows下硬盘安装ubuntu7.10
从硬盘安装ubuntu7.10有几个地方很容易被忽略,分列如下:1、ubuntu 7.10 有几种安装方式:光驱直接安装:这个比较简单,光盘塞进去按提示进行;用硬盘安装映像:从 http://releases.ubuntu.com/releases/.pool/ubuntu-7.10-alternate-i386.iso 获取安装映像(注意这个是专用于硬盘安装的那种iso),然后从网上下载专用的内原创 2007-12-31 16:17:00 · 1560 阅读 · 0 评论 -
开源 MYSQL 水平分库 代理
本项目尝试解决单台mysql服务器的性能瓶颈。作为客户端和后端mysql数据库集群间的一个中间层,负责对后端库表做水平sharding处理,以及对客户端请求及后端返回结果集做拦截处理。这个过程对客户端完全透明。本项目已开源:http://github.com/oun111/myproxy原创 2017-12-07 09:57:22 · 233 阅读 · 0 评论 -
编译研究(4)——变量定义再讨论
1、当前编译器支持任何分支内定义同名变量,例如: if(1) int n=10 ; endi if(2) int n=1 ; endi if(2) if(n1>3) int n=11 ; endi else if(n1) n=1 ; int n=90 ; endi ende e原创 2007-07-11 22:23:00 · 396 阅读 · 0 评论 -
编译研究(3)——同名变量定义
今天在处理变量时发现了一个问题:对于不同函数中定义的同名变量,在源代码中,我原来只是简单根据变量名称进行区分,由于作用范围不同,所在符号表不同,因为虽然同名但互不影响;但这样的方法用在中间代码中就会出问题。例如中间代码使用同一个列表处理所有变量,并只是简单根据变量名称来在这个列表中索引变量的值,因此同名变量会重叠,并相互影响。为此参考了vc生成的汇编代码,发现它对变量的引用都是把变量名称和基址原创 2007-07-01 22:51:00 · 468 阅读 · 0 评论 -
编译研究(2)——关于函数重定义的处理
关于函数重定义的处理。今天由于解决了“没有调用的函数不生成代码”和“函数前向定义”bug,又重新引入了过去已经解决的“函数重定义”bug。关于函数重定义,我下的定义是,只要所定义的1个以上的函数的名称相同,都认为是重定义(暂不考虑以形参区分)。由于在检查函数是否重定义时,会先扫描一个全局函数列表,例如,函数test1重定义,扫描第一个定义时,编译器并不知道存在重定义,于是把函数信息写入全局列表原创 2007-07-01 14:46:00 · 682 阅读 · 0 评论 -
好书一本——链接器和装载器
现在绝大部分编译原理著作中都缺少的编译器工作流程的重要一环——链接器和装载器。粗略翻看了目录,发现这本书讲解的内容的确非常详细独到,本人才疏学浅,只能用一句话描述:在连接器和装载器这一块,只有我们想不到的,没有他讲解不到的。我想,能够理解书中大部分内容,多加实践,并坚持一段时间,写一个linker 或 loader是很有可能的。还有,听说vc, gcc 等编译器的linker 和 loader原创 2005-10-01 16:51:00 · 927 阅读 · 0 评论 -
vc6内联汇编 VS win32汇编——把我弄糊涂了
一段简单的汇编代码如下: push MB_OK lea eax, scCaption push eax lea eax, scText push eax push 0 call dword ptr [MessageBox] ;在win32汇编中为了结束程序,还要加上 invoke ExitProcess, 0 lea原创 2005-05-20 11:17:00 · 1076 阅读 · 0 评论 -
win32汇编中 ExitProcess() 的作用
最近学win32汇编,写了一个很简单的程序,作用是程序运行的时候弹出一个对话框,代码大致如下:.const scText db messagebox, 0 scCaption db caption, 0 .code start: push MB_OK mov ecx, offset scCaption push ecx mov ecx, offs原创 2005-05-16 20:06:00 · 1598 阅读 · 0 评论 -
一个小型编译器
最近心血来潮写了一个小型编译器,同时设计了一种小型的高级语言,支持字符型和整型两种变量类型,支持函数,支持条件语句,循环语句等某些高级语言共有的特性;并设计了一种简单的汇编语言,编译器通过扫描源文件,产生这种相应的汇编代码。最后虚拟机执行这种中间代码,显示程序运行结果。 因为自己的底子本来就不好,加之是第一次写没什么经验,编译器和虚拟机的缺陷很多,代码也写得不好。例如,支持的语言特原创 2005-11-25 23:57:00 · 1648 阅读 · 0 评论 -
关于同网段数据传输的一些粗浅想法
前年开发过一个局域网内的数据传输软件,觉得问题不少,在此随便罗列某些改进的想法:1。封装多线程api,尽量减少主类体积。为了能够跨平台,应该设计一个架构,使得关于sdk的部分能够在不同平台做到很容易切换。2。为了提高文件传输的效率,最好使用文件智能分块传输,这个智能部分提供一个决策算法,决定如何切割这个文件,应该封装起来。3。作为试验的目的,可以把多线程传输机制换成多人共享数据原创 2006-02-12 01:02:00 · 751 阅读 · 0 评论 -
揭示win32 api拦截细节
原文出处:http://www.codeproject.com/system/hooksys.asp 拦截win32 API 调用对于多数windows开发人员来说都一直是很有挑战性的课题,我承认,这也是我感兴趣的一个课题。钩子机制就是用一种底层技术控制特定代码段的执行,它同时提供了一种直观的方法,很容易就能改变操作系统的行为,而并不需要涉及到代码。这跟一些第三方产品类似。翻译 2007-02-11 19:20:00 · 1202 阅读 · 0 评论 -
编译研究(1)——函数前向定义
一年前写了个小型编译器,很久没碰,觉得蛮可惜的,于是从上个月开始又搬出来,利用业余时间改改bug,增加一些新功能 ,倒也比过去强壮实用了不少。今天想把过程调用放到表达式中去,让其返回值也参加运算。想着没什么难度,就开始了。谁知忽略了很重要的一样内容,因为在表达式中要对所有操作数做类型检查,对过程返回值,由于有的过程可能在调用函数(caller)后面定义,就是说被调用函数(callee)子树原创 2007-06-24 18:04:00 · 434 阅读 · 0 评论 -
开源 SQL 语法转换 中间件
开源了一个中间件项目,用于 ORACLE -> MYSQL 的SQL 语法转换,以及数据库访问。就是说你可以拿一种你熟悉的SQL去访问另一种你不熟悉的数据库,目前支持 ORACLE -> MYSQL 。 http://github.com/oun111/zas/原创 2017-12-07 09:53:47 · 1610 阅读 · 0 评论