![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序设计
恺风
我思故我在,如果一个人无法独立思考,即使熟习各种工具,实质只是工具的一部分,永远无法创造工具。
展开
-
【杂谈】对代码的一些建议:从单模块到多模块
对于产品,一般来讲,从单模块,到负载均衡的多模块,最后到有服务治理的规模化集群(例如微服务),逐步发展和演进。本文并不打算涉及框架或者架构,也不讲什么大道理,仅从代码编写的角度,看看开发人员需要注意什么。单模块开发的一些注意事项单模块并不是指单体方式,根据功能进行模块划分,每个模块在生产环境中是单模块运行(主备方式)。单模块阶段开发人员仍是有要求,在我的实践中,从code review看,...原创 2019-05-16 17:21:08 · 1732 阅读 · 0 评论 -
公开课学习笔记-[哈佛]计算机科学CS50(一)
看公开课“哈佛-计算机科学CS50”,看来一下课程目录,哦,学得真快,一个学期完成这么多,很有效率。和之前看完的斯坦福的课程比起来,录像的效果好,可能是时间不同吧。第1课:开始 2011.9.19介绍了这门课学习的内容,并如同sales一样在卖力销售课程。这和我们大学的课程感觉不同,一堂课50分钟,然则内容比我们两堂课的都多,说话很快,哈哈。从算法开始介绍CS的功效,并通过scratc原创 2011-09-19 10:37:16 · 13212 阅读 · 3 评论 -
公开课学习笔记-[哈佛]计算机科学CS50(二)
第3课C语言,源代码,编译器(1) -2011.10.11编程思想,从语句的格式语法中抽离。介绍了loop、逻辑表达式,数组,这些抽象概念以及C语句的范例。介绍源代码、编译器,gcc -ohello hello.c, make hello,gcc -o hello hello.c-lcs50(加载libary)。介绍了函数。CS50建立的一台服务器,每个人都可以在上面注册名字,通过ssh登原创 2011-10-28 14:54:58 · 5258 阅读 · 0 评论 -
编程方法学 - 公开课学习笔记(八)
第22课 Component和Comtainer 2011.8.9-10这是一张图,可以从中看出componenet和Container的关系,而JComponent,例如Swing,是Container的一个子类。A component is anythin原创 2011-08-19 11:36:07 · 4224 阅读 · 0 评论 -
Android学习笔记(十八):ListView和RatingBar
在学习笔记(十七)中,我们对ListView做了进一步的探讨,然而给出的例子list中的元素可以有多个widget,并可灵活设置他们的值,但是这些widget之间缺乏互动,而且getView()的调用,需要重刷给list的entry,我们希望能够在entry中触发变化。本原创 2011-03-29 17:41:00 · 15517 阅读 · 6 评论 -
Android 学习笔记(十三):Activity-GridView
我们将通过两个例子学习GridView。Grid和Table有一点点类似。我们将在例子中逐步描绘如何编写一个Grid的Activity例子一:继承ArrayAdapter作为自定义adapter1、编写Android XML xmlns:androi原创 2011-03-21 16:25:00 · 44707 阅读 · 14 评论 -
QT(6)Basic Layout学习
资料来源:http://doc.qt.nokia.com/latest/layouts-basiclayouts.html,在这里,我们学习下面几个方面:以QDialog或其继承为主体,建立程序菜单menu的建立GroupBox的使用,加入水平摆放的QHBoxLayo原创 2011-01-14 15:20:00 · 5019 阅读 · 0 评论 -
编程方法学 - 公开课学习笔记(九)
第25课 设计实用社交网络和线程 2011.9.7这一课由两个topic,首先以社交网站的例子进一步解释数据管理。在SNS中用porfile来表示一个用户。有下面的属性:name(作为Unique ID),status,image和list of friends(由于n原创 2011-09-07 16:46:19 · 5546 阅读 · 3 评论 -
编程方法学 - 公开课学习笔记(六)
第16课 数组 2011.8.1介绍Array。int[] myArr=new int[5];可以是int,double这类变量也可以是对象。对于对象,数组存储对象的指针。对于int之流,分配空间,存储数值,但是要注意即使是这些基本类型,myArr实际是指向数组的指针,是原创 2011-08-01 10:36:18 · 3453 阅读 · 1 评论 -
【转】风雨20年:我所积累的20条编程经验
原来来自http://www.cnbeta.com/articles/126970.htm 原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳 森在文中所言,本文适合刚毕业的大学生和刚入门的程序员。如果你已是高级开发人员,或许你在本文中看到自己的身影。 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许转载 2010-11-13 21:45:00 · 2461 阅读 · 3 评论 -
【转】软件架构师应该知道的97件事
来自:http://www.cppblog.com/xiangpeng/archive/2010/05/05/114507.html 软件架构师应该知道的97件事 1. 客户需求重于个人简历 ( Nitin Borwankar )客户需求至上。为了自己的简历更炫而采用新技术是沽名钓誉,往往事与愿违。2.转载 2010-05-06 21:18:00 · 1498 阅读 · 0 评论 -
Kernel module编程(十三):信号量、互斥锁、读写信号量和完成量
本文也即《Linux Device Drivers》,LDD3的第五章Concurrency and Race Conditions的读书笔记之二,但我们不限于此内容。信号量(Semaphore)信号量和互斥锁 Kernel提供不同的原语来处理不同的情况,最常用的是采用信号量的方式。如果不能获得资源将进入sleep状态,等待资源释放,也即block的方式。通过原创 2009-12-01 21:18:00 · 8389 阅读 · 0 评论 -
在moblin上创建一个NBTK的小例子:Hello Moblin
moblin是基于clutter的UI,而提供的NBTK将协助建议buttons,tooltips,scrollbars等UI,并支持CSS的堆叠风格表格。在非moblin的linux操作系统上安装nbtk有些麻烦,我们需要对configure作一些修订,例如clutter如果不是使用rpm的方式安装,而是采用source编译,在确保已经安装的前提下,我们在NBTK REQUIREMENT原创 2009-11-30 17:04:00 · 3432 阅读 · 0 评论 -
公开课学习笔记-[哈佛]计算机科学CS50(三)
第7课函数、数组、字符串、搜索算法 -2011.10.25举一个phishing的黑客例子,将某个HTML页面copy,只是修改某个链接,可将username和passwd传到另一个server。对于加密和解码,相同key容易受到攻击,例如caesor的rot13移位方式,可以增加key,例如每个位置的移位不同,https使用的是非对称加密方式,即公钥加密方式。有关隐私和安全,在CS105中介原创 2011-10-28 15:21:44 · 3970 阅读 · 0 评论 -
公开课学习笔记-[哈佛]计算机科学CS50(四)
第9课 归并排序 -2011.10.27Bubble sort的效率还是低,衡量效率包括占用空间,CPU cycles。在排序的情况,用最坏的情况衡量,例如反序。Merge Sort效率明显高。详细介绍Merge Sort(归并排序),使用recursion(递归)方式很容易实现,算法如下:sore(){ if( n return else原创 2011-10-28 17:00:59 · 4710 阅读 · 0 评论 -
公开课学习笔记-[哈佛]计算机科学CS50(五)
第11课 内存、头文件和数据结构 - 2011.10.30对于C语言,内存分配是非常重要的,这涉及到程序的稳定性和安全性。假设有在stack中存储username和pw这样安全敏感的数据,有风险,因为函数返回时,这些内容并没有真正消失,如果是我们自己的程序,确保只有我们自己的代码访问内存没有问题,但是如果是合作性的或者是库方式,有buffer overflow exploit的隐患。例如,通过原创 2011-10-30 23:04:53 · 5355 阅读 · 0 评论 -
我的与编程思想相关的文章
专门描述谈谈敏捷开发的误区 2013.1.22[记录]编程思想(一):提供"mechanism"还是"policy"[记录]编程思想(二):对于内核模块编程 涉及文章(请查看黑体部分,或者检索【编程思想】)kernel module编程(五):设备读写【编程思想:对复杂数据结构的读写技巧】kernel module编程(六):printk-printf的debug 【编程思原创 2009-09-09 15:00:00 · 5494 阅读 · 1 评论 -
我的技术博客索引
我的JAVA相关文章我的Clutter相关博客我的网络通信相关文章我的Linux相关文章我的与kernel module有关的文章我的嵌入式Linux相关文章我的MeeGo/Moblin相关文章我的Andriod开发相关文章我的与编程思想相关的文章我的无限网络文章我的产业生态链和杂谈文章我的四方书库生活空间为五斗饭相关文章天南地北相关原创 2009-09-12 22:47:00 · 13048 阅读 · 14 评论 -
极端繁忙情况下的票务分发系统
在今年年初,我发表了高性能设计思路,兼谈12306(2014.1.20)。有个问题只讲了一部分,就是在极度繁忙的情况下如何出票。问题的来源是有人说火车票派作为很复杂,是耶非耶?前提条件:我们讨论的是极度繁忙的情况,例如在秒级的时间,某趟列车的火车票全部销售一空。目标方案:针对这种情况,在设计上如何最有效率的实施解决。所谓的最有效率,以最少的代码量提供最优的解决,关键在于业务逻辑。本文不讨论设计架构,只讨论业务逻辑。原创 2014-11-28 11:04:20 · 1983 阅读 · 0 评论 -
高性能设计思路,兼谈12306
文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件,转载须注明出处:http://blog.csdn.net/flowingflying/最近有一些关于12306的技术帖子,例如http://www.zhihu.com/question/22451397,谈及12306的设计。说的很是回事,但是仔细想想,我觉得这类的、帖子还是归为洗地贴。实际上,春运的问题不是票务的问题,是运原创 2014-01-20 15:33:30 · 3076 阅读 · 3 评论 -
谈谈敏捷开发的误区
今天有人做演讲有关敏捷开发的。就演讲而言,讲得非常好,吐字清晰,语速适当,穿插例子,娓娓道来,将意思表达得非常清楚到位,是个很好的演讲。但就内容而言,我却有很大的异议,当中部分观点我认为是对敏捷开发的严重误导。1)误导的敏捷开发例子:版本更新很快,甚至每天都有新版本。我的第一个反应就是版本管理存在严重问题。但是仔细一想,即便版本管理存在严重问题,也断不至每天原创 2013-01-23 23:12:36 · 3775 阅读 · 5 评论 -
说说铁道部12306
说说12306铁道部的购票网站。在很不合适的时间,年初春运前,铁道部12306系统上线。一下暴露众多问题,特别是性能,典型容量不足、过载处理不当。可气的是居然新闻误导说是因为网络带宽不够,记者逮着电信一通开火。系统上线前似乎没有经过真正意义的压力测试,包括长时间大压力测试以及过载保护测试,要么系统上得仓促,要么软件开发团队经验或技术力量不足。最近12306又被喷了,好像是过载处理的排队策略原创 2012-09-24 17:41:41 · 2760 阅读 · 1 评论 -
Android学习笔记(十九):建立自己的ListView
在之前的例子中,我们通过设置adapter的getView()来编写我们所希望的UI,然而在面向对编程中,我们希望能够创建自己的ListView,例如类的名字为com.wei.android.learning.RatingView,只要在XML中用我们自己的RatingView对ListView来替代,就可以实现我们的风格,并前在源代码中向使用ListView一样简单调用就可以了。实现的目标原创 2011-03-31 16:30:00 · 18988 阅读 · 24 评论 -
公开课学习笔记-[哈佛]计算机科学CS50(九)
第19课 互联网工作原理,网页游戏制作- 2011.12.15上一次,使用Ajax来实现异步刷新屏幕,可以通过XML格式在服务器和浏览器之间传递信息。本课介绍JSON,并举了Google地图API和Google earth API的使用例子。在HTML中,采用,以及,将格式和js,将js和css采用独立的文件,将提供更好的组织结构,以及重用。在HTML,…将网页分割为若干块。JSON:原创 2012-01-06 16:20:21 · 7653 阅读 · 0 评论 -
公开课学习笔记-[哈佛]计算机科学CS50(八)
第17课 PHP语言和数据库- 2011.11.6POST便于传输私密信息,以及二进制信息,例如图片。Get可以copy该link,可进入相同状态的网页。举例,通过linux cron定时从web中获取数据。有时网页用户信息提交,将进行数据检查,如果出错,希望仍能留在同一网页,显示用户已输入的信息,并提示出错。可以在网页一开始,执行PHP代码:if($_POST["action"]原创 2011-11-06 11:55:58 · 5968 阅读 · 0 评论 -
[记录]编程思想(一):提供"mechanism"还是"policy"
程序员不是一天练成的,但是遵循一些编程思想,可以使我们少走很多弯路。 今天看《Linux Device Drivers》,在第一章中提到了编程思想。我做过很多开发项目,由于不是在大团队开发的公司,例如华为,某些外企,很多项目人手很少,基本上需要独立负责,回想起来,我在系统设计结构方面确实有很大的进步。不过一直没有认真的总结。当时看Thinking in JAVA,前言写得太好了,就是涉及编程原创 2009-07-23 15:12:00 · 4121 阅读 · 2 评论 -
公开课学习笔记-[哈佛]计算机科学CS50(六)
第13课 typedef声明,队列,位操作 -2011.11.1利用图像隐藏信息方法:图形的某些像素颜色进行转换后,可以看到隐藏的文字或图像信息。对于图像文件,例如bmp文件,开始的字节有特殊的含义和格式,也就是container的格式,例如2-5字节是bfsize。通过查找这些特殊的字节,可以恢复损坏flash卡的图像文件。又例如JPEG文件,开头的四个字节为0A0B0C0D,可以检索这个特原创 2011-11-02 16:34:06 · 4706 阅读 · 2 评论 -
公开课学习笔记-[哈佛]计算机科学CS50(七)
第15课 网络编程,HTML语言,编写网页 -2011.11.3介绍IP的基本知识,有一个经典短片:Warriors of the net。在网上可以查到,很不错,介绍IP传输的基本概念。接着介绍HTTP协议。HTML,JS,PHP都是解析性语言。介绍HTML的基本用法,在HTML中使用CSS,例如,style双引号之间的是CSS,HTML可以使用CSS(Cascading Style原创 2011-11-04 14:09:09 · 5866 阅读 · 0 评论 -
Kernel module编程(十二):并发和竞争控制
本文也即《Linux Device Drivers》,LDD3的第五章Concurrency and Race Conditions的读书笔记之一,但我们不限于此内容,最近正在整理移动手机的业务需求,比较多的文档工作,没什么时间学习。有本好书推荐一下,就是钱穆先生的《中国历代政治得失》,书很薄,但是内容很丰富,推荐推荐。 并发引发的bug是OS程序中一个主要的问题并且很难发现原创 2009-11-26 15:28:00 · 2467 阅读 · 0 评论 -
kernel module编程(十一):使用gdb以及其他调测工具
本文也即《Linux Device Drivers》,LDD3的第四章Debuging Techniques的读书笔记之六,但我们不限于此内容。这章看得比较慢,最近比较懒,而陷入了文档工作中,我决定这章节不会有之七,在之六打住。 在用户程序中,有很多编译工具同提供的debug工具,用于设置断点或者单步跟踪,但是在kernel程序中是很困难的。LDD3介绍了gdb对于kernel模原创 2009-10-15 10:51:00 · 8105 阅读 · 1 评论 -
Clutter学习(十四):用一个较大的例子来复习
我们已经学习了clutter的基本用法,用一个较大的例子来进行复习,例子来源:http://www.openismus.com/documents/clutter_tutorial/0.9/docs/tutorial/html/sec-full-example.html。这个教程是基于clutter0.9的,在clutter1.0上需要做小小的改动。下面是clutter1.原创 2009-08-19 14:39:00 · 4488 阅读 · 1 评论 -
Clutter学习(十二):Clutter的动态效果ClutterAnimation
根据我们的学习资料Using Amination,Using Alpha Functions和Exmples,以及clutter的联机文档。这个课题的学习本应在ClutterAnimation之前的。由于学习文档是0.9的文档,而我也相信有个问题可能是Clutter的小小的bug,我们在上面碰到一些问题,不过现在终于解决了。另外今天发现clutter已经原创 2009-08-17 14:43:00 · 3626 阅读 · 0 评论 -
Clutter学习(十一):动态效果设置ClutterBehaviour
根据教程,我们应学习ClutterAnimation,但是在这里我碰到了一些问题,我不确定是否是Clutter1.0的问题,从某种意义上看,Clutter0.9比Clutter1.0更为稳定。我们已经一而再地讨论了clutter的兼容,但是我想仍需要再三讨论这个问题。现在,我们学习类似的处理效果ClutterBehaviour,我认为所有ClutterAnmation均可以通过ClutterB原创 2009-08-14 16:00:00 · 3529 阅读 · 1 评论 -
Clutter学习(九):Timeline的时间和帧触发
学习资料来源:Using Timelines,Markers,Examples 使用方法如下:一、创建一个CLutterTimeline的类型,clutter_timeline_new()二、设置监测事件。三、启动clutter_timeline_start(),停止clutter_timeline_stop(),循环clutter原创 2009-08-12 16:56:00 · 4662 阅读 · 0 评论 -
Clutter学习(十):多个timeline——ClutterScore
在上一次的学习中,我们学习了ClutterTimeline,我们通过ClutterScore加入多个ClutterTimeline,这些timeline可以同时触发,也可以依次触发。我们将在这里讨论他们。学习资料来源:Grouping Timelines in Score,Example。 使用方法:先创建一个ClutterScor原创 2009-08-13 11:28:00 · 3556 阅读 · 2 评论 -
Clutter学习(八):Actor的事件
在以前的例子中,使用g_signal_connect()函数来进行时间触发,这些触发要么基于gtk,要么基于ClutterStage。Clutter基于actor也可以提供事件触发,分别是button-press-event, button-release-event, motion-event,enter-event,leave-event。他们的意思就是字面意思。 在cl原创 2009-08-11 17:36:00 · 3371 阅读 · 0 评论 -
Clutter学习(五):Clutter的兼容性问题——clutter actor的学习
我们知道Clutter和Intel有很多的关系,我们可以在普通的desktop上使用clutter,也可以在moblin上使用Clutter。Clutter的版本发布就像moblin一样,不断有小版本提供,不过clutter终于有了自己的正式release版本1.0.0,没让我们等得太久。我也在学习做一些小例子,希望能更了解Clutter,下面的例子让我看到了1.0版本和0.9(包括0.9x)原创 2009-08-07 11:30:00 · 4559 阅读 · 1 评论 -
Clutter学习(六):actor的一些动态效果
Clutter的一个优点在于它很容易处理一些动态效果,我们在这里可以学习基本的处理,通过这些基本的动作,组合可以模拟一些3D的效果。学习资料来源:http://www.openismus.com/documents/clutter_tutorial/0.9/docs/tutorial/html/sec-actors-transformations.html 下面的原创 2009-08-10 15:13:00 · 3336 阅读 · 0 评论 -
Clutter学习(四):带有滚动条的Stage Widget
我们知道Moblin在v2 beta版本开始使用clutter来制作UI。Clutter作为UI受到了越来越多OSV的关注,虽然我个人觉得Clutter对显卡驱动的依赖,以及通用的显卡驱动vesa并不能很好的支持,但是Clutter确实提供了绚丽的动态效果,而且和GTK、QT等相互兼容,这使得我们不会为选择Clutter而过多考虑对系统的影响,例如是否影响其他的linux应用,openof原创 2009-08-06 11:25:00 · 4270 阅读 · 1 评论 -
Clutter学习(三):在GTK容器中加入Clutter容器——Stage Widget小例子
参看资料:http://www.openismus.com/documents/clutter_tutorial/0.9/docs/tutorial/html/sec-stage-widget.html 这次我们需要使用Clutter-gtk的开发包。简单的编译如下。请注意pkg-config的引号,不是单引号[],而是[`]。^_^,不要弄错。原创 2009-08-05 11:12:00 · 5362 阅读 · 2 评论