技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

08 2013 档案

函数式C代码
摘要:代码如下:#include #include typedef char String[32];typedef FILE* File;typedef struct _Employee { String name; int age; int salary; struct _Employee *next;} *Employee;typedef void (*Callback)(Employee);/* High Order Functions */void foreach(Employee e, Callback fn) { Emplo... 阅读全文

posted @ 2013-08-28 13:13 codestyle 阅读(258) 评论(0) 推荐(0) 编辑

代码的抽象三原则
摘要:http://www.ruanyifeng.com/blog/2013/01/abstraction_principles.html作者:阮一峰日期:2013年1月31日软件开发是"抽象化"原则(Abstraction)的一种体现。所谓"抽象化",就是指从具体问题中,提取出具有共性的模式,再使用通用的解决方法加以处理。开发软件的时候,一方面,我们总是希望使用别人已经写好的代码,另一方面,又希望自己写的代码尽可能重用,以求减少工作量。要做到这两个目标,这需要"抽象化"。最近,我读到美国程序员Derick Bailey的一篇文章,谈到&q 阅读全文

posted @ 2013-08-27 12:48 codestyle 阅读(355) 评论(0) 推荐(0) 编辑

函数式编程初探
摘要:http://www.ruanyifeng.com/blog/2012/04/functional_programming.html作者:阮一峰日期:2012年4月 6日诞生50多年之后,函数式编程(functional programming)开始获得越来越多的关注。不仅最古老的函数式语言Lisp重获青春,而且新的函数式语言层出不穷,比如Erlang、clojure、Scala、F#等等。目前最当红的Python、Ruby、Javascript,对函数式编程的支持都很强,就连老牌的面向对象的Java、面向过程的PHP,都忙不迭地加入对匿名函数的支持。越来越多的迹象表明,函数式编程已经不再是学 阅读全文

posted @ 2013-08-27 12:40 codestyle 阅读(183) 评论(0) 推荐(0) 编辑

转:Reddit排名算法工作原理
摘要:http://www.aqee.net/how-reddit-ranking-algorithms-work/这是一篇继《Hacker News 排名算法工作原理》之后的又一篇关于排名算法的文章。这次我将跟大家探讨一下Reddit的文章排名算法和评论排名算法的工作原理。Reddit使用的算法也是很简单,容易理解和实现。这篇文章里我将会对其进行深入分析。首先我们关注的是文章排名算法。第二部分将重点介绍评论排名算法,Reddit的评论排名跟文章排名使用的不是同一种算法(这点跟Hacker News不一样),Reddit的评论排名算法非常有趣,它是由xkcd的作者Randall Munroe发明的。 阅读全文

posted @ 2013-08-27 09:32 codestyle 阅读(736) 评论(0) 推荐(0) 编辑

C语言读写伯克利DB 4
摘要:因为缓存数据的buffer总是不够大(会引起段错误)索性从堆上拿了两块大内存/*功能说明:逐日存储来访用户(使用伯克利DB)根据存储的用户信息确定某用户是否是首次来访用户(未被存储的伯克利DB)调用方式1: 查询游客在2013年8月8日是否访问了指定渠道./channeldb -s "bch2000 guest:123456789" 20130808调用方式2:将指定文件里的用户信息写入DB,同时将该文件里的首次访问用户写入日志./channeldb -f 20130809 ./clog/20130809.log 20130809*/#include #include #i 阅读全文

posted @ 2013-08-26 16:17 codestyle 阅读(582) 评论(0) 推荐(0) 编辑

程序之美(转自知乎)
摘要:因为程序是逻辑的集合,是一种结构化的事物,因此程序的美往往体现了某种秩序。1. 基本的秩序是基础 CS 理论的应用,比如程序中实现了一某种数据结构,针对数据结构的某种算法,这些结构和算法都具备一些固定的性质。你的程序具备了这些性质,就在一定层面上(这里是运行时)具备了秩序。数据结构和算法的秩序,就是你的代码“美”的体现;2. 紧接着就是代码的可约性。也就是你的逻辑是不是可以再化简的,一个等式越化简越接近结果,一段代码越化简越接近本质。你实现的基本算法和数据结构,每一行代码都是必须的吗?如果能够化简,说明逻辑是可约的。如果你能保证代码再简单不过了,你就对自己代码有了自信;3. 普适性。一段代码是 阅读全文

posted @ 2013-08-24 13:19 codestyle 阅读(481) 评论(0) 推荐(0) 编辑

C语言读写伯克利DB 3
摘要:gcc -o channeldb channel.c -db -Wall# -Wall参数等价于执行lint,即:进行代码的静态分析,它可以指出未初始化的变量,未使用的变量#include #include #include #include #include #include #include //define DATABASE "/work/stat/read/newstat/data/userlist/historydb/channel.db"#define DATABASE "/mnt/disk1/ucshuqi/touch/userlist/histor 阅读全文

posted @ 2013-08-23 16:15 codestyle 阅读(319) 评论(0) 推荐(0) 编辑

ON DUPLICATE KEY UPDATE
摘要:http://blog.csdn.net/kesaihao862/article/details/6718443MySQL 当记录不存在时插入,当记录存在时更新MySQL当记录不存在时插入,当记录存在时更新网上基本有三种解决方法。第一种:示例一:插入多条记录假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:INSERTINTOclients(client_id,client_name,client_type)SELECTsupplier_id,supplier_name,'advertising'FROMsuppliersWHEREnotexis 阅读全文

posted @ 2013-08-22 14:25 codestyle 阅读(238) 评论(0) 推荐(0) 编辑

nanomsg:ZeroMQ作者用C语言新写的消息队列库
摘要:http://geek.csdn.net/news/detail/2299http://www.freelists.org/post/nanomsg/nanomsg-01alpha-released 阅读全文

posted @ 2013-08-21 17:58 codestyle 阅读(1329) 评论(0) 推荐(0) 编辑

新浪研发中心: Berkeley DB 使用经验总结
摘要:http://blog.sina.com.cn/s/blog_502c8cc40100yqkj.htmlNoSQL是现在互联网Web2.0时代备受关注的技术之一,被用来存储大量的非关系型的数据。Berkeley DB作为一款优秀的Key/Value存储引擎自然也在讨论之列。最近使用BDB来发一个KV系统,并将这段时间的BDB的学习和使用经验记录如下。(项目中使用了BDB的4.8.30版本,本文所有涉及的具体问题都基于该版本)。1. Berkeley DB的简介Berkeley DB(BDB)是一个高性能的嵌入式数据库编程库(引擎),它可以用来保存任意类型的键/值对(Key/Value Pair 阅读全文

posted @ 2013-08-20 14:41 codestyle 阅读(578) 评论(0) 推荐(0) 编辑

[企业开源系列]后起之秀Facebook凭什么挑战互联网霸主Google?
摘要:http://www.csdn.net/article/2013-08-19/2816627-Facebook-Open-Source 阅读全文

posted @ 2013-08-20 09:27 codestyle 阅读(166) 评论(0) 推荐(0) 编辑

C语言解析日志,存储数据到伯克利DB 2
摘要:#编译程序gcc -o historydb historydb.c -ldb#将2013年8月9日的用户记录写入数据库 (程序自动识别新用户入库,跳过老用户)./historydb -f 20130809.userlist 20130809#查询guest1985215666654在2013年8月8日有没有访问业务bch2000./historydb -s "bch2000 guest1985215666654" 20130808#include #include #include #include #include #include #include #define DA 阅读全文

posted @ 2013-08-19 18:22 codestyle 阅读(340) 评论(0) 推荐(0) 编辑

(2010-8-31) awk内存泄漏以及缓慢的正则表达式计算速度
摘要:AWK内存泄露:这几天本来就很郁闷,遇到搭建在hadoop平台上的hive平台有很多问题。写个好好的sql语句,总是说这个错误那个错误。然后,今天遇到一个更加郁闷的问题,居然分析淘宝数据的awk都运行不了了,出现了传说中的内存不足的错误。如下2个简单的awk语句:awk '{match($4, /(search.taobao.com.+uniq=seller.*)/,a); if(a[1] != null) c++;}END{print c}'awk '{match($4, /(search.taobao.com)/,a); if(a[1] != null) c++;} 阅读全文

posted @ 2013-08-19 10:46 codestyle 阅读(635) 评论(0) 推荐(0) 编辑

C语言解析日志,存储数据到伯克利DB
摘要:编译命令gcc -o dbwriter dbwriter.c -ldbdbwriter.c#include #include #include #include #include #define DATABASE "demo.db"/* 功能:解析日志提取数据(pv)日志格式:pp.cn guest:123456 100*/int parseLog(char *s,char **pv){ int flag = 0; while(*s) { if(*s==' ') { ... 阅读全文

posted @ 2013-08-16 17:57 codestyle 阅读(498) 评论(0) 推荐(0) 编辑

awk的接口实现方案1
摘要:module/a.awkfunction sum(a, b){ return a + b}module/b.awkfunction sum(a, b){ return a * b}main.awkEND{ print sum(3,4); }调用方式:echo "" | igawk -f main.awk -f module/a.awk# 打印 7echo "" | igawk -f main.awk -f module/b.awk# 打印 12这样也能体现接口的一种理念:让main.awk里的代码依赖接口(sum函数) 而控制不同模块文件的加载控制行为, 阅读全文

posted @ 2013-08-15 15:23 codestyle 阅读(180) 评论(0) 推荐(0) 编辑

谷歌开源Gumbo:纯C语言实现的HTML5解析库
摘要:http://www.csdn.net/article/2013-08-14/2816561-Gumbo-A-pure-C-HTML5-parserhttps://code.csdn.net/OS_Mirror/gumbo-parser 阅读全文

posted @ 2013-08-15 09:36 codestyle 阅读(679) 评论(0) 推荐(0) 编辑

pylint
摘要:http://blog.csdn.net/gzlaiyonghao/article/details/6089902http://www.ibm.com/developerworks/cn/linux/l-cn-pylint/index.html?ca=drs-cn-1217 阅读全文

posted @ 2013-08-14 16:06 codestyle 阅读(291) 评论(0) 推荐(0) 编辑

提高写代码的能力(转载)
摘要:http://blue-aj.blog.163.com/blog/static/709680201262510382587/提高写代码的能力(转载)首先让我们看一看刚入软件公司会出现的情况:1. 你可能会常常发现,写了一段代码后,编译程序时是一大堆的出错 (原因:语法不熟)──别担心,这是每个程序员必须经历的事,这时候你就需要更大的耐心及细心,对每一行代码进行仔细人阅读并改正,这个很重要,这可以培养你的理解代码能力,所以要常读程序,不要等到程序运行以后才知道你的程序的结果。──如何避免:在写代码以前,要认真的学习计算机语言的语法,如关键点,易错点,易忘点。同时要自已动手写自已的测试代码,而尽量 阅读全文

posted @ 2013-08-13 18:05 codestyle 阅读(509) 评论(0) 推荐(1) 编辑

python的闭包以及闭包在设计里的意图和作用
摘要:def test(func): print func(3,4) test(lambda x,y : x+y)test(lambda x,y : x-y)这是python的一种闭包写法,他的设计意图是保证test函数代码是稳定的,将容易变化的代码从test提取出去,而这些容易变化的代码如果不复杂,可以采用更轻量级的lambda直接定义,从而减少函数数量,降低程序复杂度 阅读全文

posted @ 2013-08-08 10:02 codestyle 阅读(328) 评论(0) 推荐(0) 编辑

痛并快乐的造轮子之旅:awk访问数据库之旅
摘要:俺是一枚悲催的数据统计程序员,从先辈的手里接收了这样的代码:#! /bin/shalias statdb="mysql -h 192.168.1.1 -u stat -paaa statdb"sql="select * from abc"echo $sql | statdb -s > abccat abc | awk '{...}' #此处省略400行俺对于这样的代码标示极度不认同,追求模块化才是俺的理想,于是我把代码写成了这样#! /bin/shalias statdb="mysql -h 192.168.1.1 -u 阅读全文

posted @ 2013-08-07 17:11 codestyle 阅读(639) 评论(0) 推荐(0) 编辑

云风:我所偏爱的C语言面向对象编程范式
摘要:面向对象编程不是银弹。大部分场合,我对面向对象的使用非常谨慎,能不用则不用。相关的讨论就不展开了。但是,某些场合下,采用面向对象的确是比较好的方案。比如 UI 框架,又比如 3d 渲染引擎中的场景管理。C 语言对面向对象编程并没有原生支持,但没有原生支持并不等于不适合用 C 写面向对象程序。反而,我们对具体实现方式有更多的选择。大部分用 C 写面向对象程序的程序员受 C++ 影响颇深。企图用宏模拟出一个常见 C++ 编译器已经实现的对象模型。于我愚见,这并不是一个好的方向。C++ 的对象模型,本质上是为了追求实现层的性能,并直接体现出来。就有如在 C++ 中被滥用的 inline ,的确有效, 阅读全文

posted @ 2013-08-06 09:29 codestyle 阅读(654) 评论(0) 推荐(0) 编辑

gtest编译小结(ubuntu 12.10 , gtest 1.6.0)
摘要:1 下载源码,解压之当前用户的主目录(~/)2 进入make目录,执行make命令cd ~/gtest-1.6.0/makemake3 在ubuntu里编译出错,提示找不到lthread库。修改Makefile,在文件结尾:sample1_unittest : sample1.o sample1_unittest.o gtest_main.a $(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@修改成(-lpthread 移到命令末尾):sample1_unittest : sample1.o sample1_unittest.o gtest... 阅读全文

posted @ 2013-08-01 18:29 codestyle 阅读(498) 评论(0) 推荐(0) 编辑

如何用googletest写单元测试
摘要:http://www.uml.org.cn/c++/201203293.aspgoogletest是一个用来写C++单元测试的框架,它是跨平台的,可应用在windows、linux、Mac等OS平台上。下面,我来说明如何使用最新的1.6版本gtest写自己的单元测试。本文包括以下几部分:1、获取并编译googletest(以下简称为gtest);2、如何编写单元测试用例;3、如何执行单元测试。4、google test内部是如何执行我们的单元测试用例的。1. 获取并编译gtestgtest试图跨平台,理论上,它就应该提供多个版本的binary包。但事实上,gtest只提供源码和相应平台的编译方 阅读全文

posted @ 2013-08-01 17:37 codestyle 阅读(508) 评论(0) 推荐(0) 编辑

如何管理和优化日益增长的代码复杂度?
摘要:http://www.csdn.net/article/2013-07-30/2816401-managing-code-complexityPlumbr研发管理优化摘要:随着时间的推移,软件项目会变得越来越大,项目中组件之间的依赖关系也会变得越来越错综复杂。那么如何对代码的复杂度进行管理并优化呢?Plumbr项目团队的做法或许可以为你提供一些参考。随着时间的推移,软件项目会变得越来越大,项目中组件之间的依赖关系也会变得越来越错综复杂,项目的维护也会变得越来越困难。Plumbr(Java内存泄露检测器)开发团队的一篇博文揭示他们这个项目在开发过程中,其代码复杂性是如何演变的。本文中的这些代码依 阅读全文

posted @ 2013-08-01 12:14 codestyle 阅读(554) 评论(0) 推荐(0) 编辑

groupcache-readme-go
摘要:http://www.csdn.net/article/2013-07-30/2816399-groupcache-readme-go 阅读全文

posted @ 2013-08-01 09:29 codestyle 阅读(173) 评论(0) 推荐(0) 编辑

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