随笔分类 -  C/C++

C C++ 是我最喜欢的语言,不仅仅是因为它的效率,更加的是因为,这些事现代语言的鼻祖,我喜欢追根溯源。
摘要:虽然写的大部分程序是在 freebsd 和 linux 下面的。但是,最近还是遇到了一个windows 下面的问题,那就是如何让一个 用Go语言写的服务器,在windows 下面开机的时候不登录就自动启动。所以,不能设置成在run里面启动。把服务器组成成一个window的服务比较靠谱。但是,当初设计的时候,程序是在linux运行的,后来因为某些原因才搬到windows上,写的时候根本没有考虑弄成window 服务。 下面是基本的步骤: 1. 准备好 instsrv.exe srvany.exe, 这两个文件在附件中下载。instsrv.exe 是注册服务用的, 使用方法如下: usage... 阅读全文
posted @ 2013-05-27 19:45 暮夏 阅读(9082) 评论(0) 推荐(0) 编辑
摘要:大多数语言都提供从float到double的转换,比如C语言,你可以直接通过一个赋值语句来实现把一个float的数字转成 double。而某些蛋疼的语言里面,对二进制的支持实在是少的可怜,我们还是不得不处理这样蛋疼的问题。 MQL4 这种语言大家可能没有这么听说过,是一种写金融交易策略的语言。我的一个同事在用这种语言写策略的时候,遇到了一个问题,要从网络中接收float的二进制数据,然后进行计算,而这种语言只支持double,没有float的。于是,我这个救火队员上马了。 说句实话,我非常喜欢这样蛋疼的问题。当然,对二进制,底层非常熟悉的人,这基本上不是问题。而我工作了这样多年,说句... 阅读全文
posted @ 2012-06-09 11:24 暮夏 阅读(18367) 评论(0) 推荐(0) 编辑
摘要:说起排序,大多数人在实际项目中很少自己去写一个排序,一般来说,qsort一行话就可以了。我也很少在实际项目中用到过基数排序,最近,写了一篇博客文章叫做: 字符串之全文索引 ,这篇文章的下一篇文章 要用到一个倍增算法。这个倍增算法,就可以非常巧妙的运用基数排序。作为那篇文章的一个铺垫,我专门写了一篇基数排序的文章。这篇文章里面的基数排序肯定是一个变形。 大多数网上 或者 书上的基数排序都是从下面的例子开始的: 排序下面的数列: 73 22 93 43 55 14 28 65 39 81 然后对这些数字,用个位数进行排序: 0 ... 阅读全文
posted @ 2011-12-20 00:28 暮夏 阅读(1476) 评论(0) 推荐(3) 编辑
摘要:最近有一个问题,要实外汇交易策略的优化问题。问题很简单:配置n 个参数,这n 个参数都取一定的范围,找出最优的参数组合。比如:a = [0, 10] (从 0, 10, a 是整数) b = [20, 30]当然,解决方案很简单,用一个两个for 循环就可以了。就可以求出所有的组合情况了。当然,问题的需求没有这样简单:1. 参数可能会很多个,比如 有10个。这样循环会写的很难看。(深度太深)2. ... 阅读全文
posted @ 2010-04-03 12:58 暮夏 阅读(589) 评论(0) 推荐(0) 编辑
摘要:早上还在床上的时候,用手机看到了博客园上一个全排列算法。刚才,出去晒了一下太阳,突然想起那个全排列算法,感觉还是比较的繁琐。回来后,我仔细分析了一个这个问题,觉得,实际上,3行代码就可以解决这个问题了。顺便,也说说,递归问题的一般解决思路吧。这个问题,非常明显,是一个 n! 复杂度的程序,如果是这样,基本上的递归结构是这样的。f(n) = n * f(n-1)看到这样的问题,典型的结构 应该就是 ... 阅读全文
posted @ 2010-03-19 15:18 暮夏 阅读(2589) 评论(0) 推荐(1) 编辑
摘要:错误处理是程序中的一个很重要的部分。合理的错误报告的的设计,可以让我们的调试变的轻松。通过位运算设计错误报告是一种很常见的方法,下面通过PHP 中处理错误报告的方式,阐述错误报告的处理方法。1. 定义错误。一般,每一个位代表一个错误,那么一个unsiged int 可以定义 32 种错误。这里列举PHP4 中的定义方法:编 号常 量报 告0x001E_ERROR致命的运行时错误(它会阻止脚本的执行... 阅读全文
posted @ 2010-01-20 10:45 暮夏 阅读(621) 评论(0) 推荐(0) 编辑
摘要:很想了解一些交易软件的数据存储方式。看到了一篇好文章,Mark 一下。核新同花顺数据结构(一):总览同花顺采用了简易的数据库组织方式。在同花顺的发布文件包中包括了SQLite 3的驱动,但不是很清楚同花顺是如何使用这个驱动的。基本上,对同花顺数据结构的解析不需要这么复杂,同花顺发布文件包中的SQLite文件被核新程序员重新编译过,不过就与SQLite Manager的简单配合使用来看,并不影响对标... 阅读全文
posted @ 2010-01-15 16:34 暮夏 阅读(2049) 评论(0) 推荐(0) 编辑
摘要:因为工作需要,经常要写window 和 unix 系统兼容的程序。可是,我在visual studio 2005 上写好Makefile 以后,放到freebsd上,就是编译不了,报下面的错误:make: fatal errors encountered -- cannot continue我写了一个很简单的测试Make :helloworld:main.o mylib.ogcc main.o m... 阅读全文
posted @ 2010-01-07 11:28 暮夏 阅读(1038) 评论(1) 推荐(0) 编辑
摘要:C 语言的语法简单,也没有C++ 中,这样多的功能 和 概念。但是,用C 写一个好的程序却不是很简单的问题。一般来说,如果,你只想用C 写个 2000行的小程序,那么或许,你不需要遵守什么规则,可以自由的发挥。但是,如果写一个上万行的程序,如果太自由,你会发现,到最面很难控制。而原因就是因为C 太自由。 这篇文章先阐述函数的书写规则。 1. 函数的书写规则:1.1 函数的一个最重要的规则是,对任何... 阅读全文
posted @ 2009-12-28 23:33 暮夏 阅读(801) 评论(4) 推荐(1) 编辑
摘要:memcpy 和 一个字节一个字节的复制的一个区别就是,memcpy 可以复制一个cpu 的字 而 单字节复制只能复制一个字节。但是,今天还发现了一个很重要的特点,复制的速度 还和 内存的内容相关,如果目标内存 和 当前内存的内容差不多,发现居然复制速度要快一些。这个是我在测试字符串复制的性能的时候发现的,可以参考我前面的文章。http://www.cnblogs.com/niniwzw/arch... 阅读全文
posted @ 2009-12-28 14:11 暮夏 阅读(2597) 评论(0) 推荐(0) 编辑
摘要:strcpy 看似是标准函数库里面最简单的函数了,谁都可以实现这个函数,但是,并不一定谁都能实现的很好。林锐博士面试微软的时候,就做这个题目。他也没有把这个题目完全的做对。建议你自己先动手写一个自己的,不要先看答案。估计有 90%的人写出来的,达不到性能的要求。如果想看前面部分的答案,看上一篇文章:http://www.cnblogs.com/niniwzw/archive/2009/12/19/... 阅读全文
posted @ 2009-12-23 16:52 暮夏 阅读(1174) 评论(16) 推荐(1) 编辑
摘要:今天晚上下了本《高质量程序设计指南》,据说那几个题目 20个硕士里面,得50分以上的还没有超过一半。如果能得满分,林锐博士拜你为师。我就很感兴趣的去做了一下,发现都很基本。我这个半路出家的人,居然也能做个80分。给了自己很大的信心,同时,也觉得很多问题,还是平时很爱犯的错误。今天把我的错误贴出来和大家分享。 1. bool flag, float t 和 指针 char *p 如何 和 0 值进行... 阅读全文
posted @ 2009-12-19 23:43 暮夏 阅读(817) 评论(4) 推荐(0) 编辑
摘要:本文转自: http://cxjr.21ic.org/user1/5562/archives/2009/57906.html感觉这篇文章不错,写的很基本,例子也好。再补充一点,static 变量经常用来保存小的字符串。比如:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighli... 阅读全文
posted @ 2009-12-17 14:32 暮夏 阅读(400) 评论(1) 推荐(1) 编辑
摘要:前面说了如何 很原始的实现可变参数的问题http://www.cnblogs.com/niniwzw/archive/2009/11/06/1597464.html但是,这样的方法可移植性比较的查,不同的cpu ,32 位 ,64 位可以变量对其的方法有差别。比较好的做法是用 c内部的函数库来实现。不废话了,贴上代码:[代码] 阅读全文
posted @ 2009-12-12 23:20 暮夏 阅读(366) 评论(0) 推荐(0) 编辑
摘要:这篇文章,本来写了快两个小时了,可是提交的时候,居然博客园崩溃了。信息全部都丢失了。既然这样,那就不啰嗦了,直接拷贝代码。插入代码的功能也坏了,那就直接复制把:/*** C 和 C++ 的谁好谁坏的争论还在不断的继续,C语言的使用非常的广范,很多大型的系统都是用C 语言来写的。* C++ 似乎有更好的编程范式。支持面向对象,模版,省去了很多处理。* C++ 最好不要滥用,具体问题,具体分析。**/... 阅读全文
posted @ 2009-11-13 17:45 暮夏 阅读(1235) 评论(0) 推荐(0) 编辑
摘要:先看下面的代码:[代码]我们可以这样使用这个函数:max(2, 1, -1) , 结果是 1.max(4, 1, 2, -1, -2) , 结果是 2.C 语言里面支持变参数的传递方法,可变参数的地址从最后一个地址的下一个位置开始。这个特性十分有用。PHP函数的原始C代码实现,用了一个宏PHP_FUNCTION,就用到了类似的原理。C语言里面的经典函数 printf 也用到了这个可变参数的特点。只... 阅读全文
posted @ 2009-11-06 15:27 暮夏 阅读(422) 评论(0) 推荐(0) 编辑
摘要:FreeBSD 上因为环境和 linux 上有些差异,configure 可能不能产生正确的Makefile。如果出现了文件,最好的方法是查找 configure.log.这个文件基本上指示了一些错误。很多人在 编译 GTK+ 的时候 会出现这样的问题:Pango not found. Pango built with Cairo support is required 。你可能会觉得 pango... 阅读全文
posted @ 2009-10-25 15:52 暮夏 阅读(1639) 评论(0) 推荐(0) 编辑
摘要:今天在网上看到了这样一个问题,“如果malloc 了一块字符串的内存,然后,它改变了这个字符串的大小,问会不会有一部分内存没有被释放掉。”这个问题,以前的确没有仔细想过。当然,我觉得是肯定会释放掉的,但是一直没有了解过free 的原理,不敢乱说。我看了一下操作系统的内存管理,基本上是这样的,当然各个系统的实现不一样。 操作系统管理内存,维护了一个空闲内存链表,malloc从... 阅读全文
posted @ 2009-09-16 14:30 暮夏 阅读(1095) 评论(1) 推荐(1) 编辑
摘要:今天升级 vC++ 2005 到了 sp1 ,突然发现自己写的程序 无法在同事的机器上运行了。在博客园找了很多的资料,比如大智若愚的: http://www.cnblogs.com/riky/archive/2007/05/11/743310.html可是对于我,依然无效。 情况是这样的,以前的程序版本都是 用 vc 6.0 写的,我只是修改了其中的一个dll,这个dll 用 vC++ 2005 ... 阅读全文
posted @ 2009-09-09 15:54 暮夏 阅读(2171) 评论(0) 推荐(0) 编辑
摘要:C语言的内存分配,有很多的注意点。1. int 的大小问题。int 在不同的编译器下大小是不一样的。在tc下是2位,在 vc 下,和 long 一样,是4位。2. memset 不是用来分配内存的,而是设置某个区域的内存为某个值,这个内存区域必须是可以修改的, 而且是已经分配好了的。 这个函数的原型为: void *memset(void * _Dst, int _Val, size_t _Siz... 阅读全文
posted @ 2009-08-30 13:21 暮夏 阅读(519) 评论(3) 推荐(0) 编辑

点击右上角即可分享
微信分享提示