摘要: 如果你曾经看到任务管理器里有个 jusched.exe 并很疑惑它究竟是什么, 如果你将它关了, 那么你很幸运, 因为这个进程是负责Java更新的程序, 它每个月检查一次Java是否有新的更新, 并且一直在那儿浪费内存... 阅读全文
posted @ 2011-07-20 22:17 Create Chen 阅读(24195) 评论(5) 推荐(0) 编辑
摘要: 你几乎毫不犹豫的来阅读这篇文章是因为你也觉得奇怪, 究竟为什么那里有一打正在运行的进程都叫做 svchost.exe. 你不能终止它们运行, 你也不记得什么时候开始运行它们的...那么它们究竟是什么呢?... 阅读全文
posted @ 2011-07-20 17:33 Create Chen 阅读(40565) 评论(28) 推荐(31) 编辑
摘要: 比较喜欢第二种方法, 第二种方法获取了目录下每个文件的所有信息. String path = @"X:\xxx\xxx";//第一种方法var files = Directory.GetFiles(path, "*.txt"); foreach (var file in files) Console.WriteLine(file);//第二种方法DirectoryInfo folder = new DirectoryInfo(path); foreach (Fi... 阅读全文
posted @ 2011-07-12 23:40 Create Chen 阅读(104289) 评论(4) 推荐(13) 编辑
摘要: 打开 Control Panel\Programs\Programs and Features\Turn Windows features on or off, 在打开的对话框中勾选上这两个选项. 下载: PHP 5.2.6 ; 将压缩包解压, 放到一个目录中, 比如 D:\php, 将 php.ini-dist 复制到 C:\Windows 目录下并改名为 php.ini, 复制 php5ts.dll 和 libmysql.dll 到 C:\Windows\System32 中... 阅读全文
posted @ 2011-06-17 19:12 Create Chen 阅读(8755) 评论(3) 推荐(2) 编辑
摘要: 关于编码, 前几天看到了一个笑话, 也不知道是真的还是假的: 以Windows中文版为例。从英文版移植到中文版,并不只是翻译菜单那么简单,许多源代码都得重新改写。比如Word里打完一行字会自动换行,可英文是单字节的,中文却是双字节,一个“好”字,就很可能“女”在上一行末尾,“子”却到了下一行开头。 阅读全文
posted @ 2011-06-01 17:20 Create Chen 阅读(48616) 评论(15) 推荐(5) 编辑
摘要: 寻路算法不止 A* 这一种, 还有递归, 非递归, 广度优先, 深度优先, 使用堆栈等等, 有兴趣的可以研究研究. 如图所示简易地图, 其中绿色方块的是起点 (用 A 表示), 中间蓝色的是障碍物, 红色的方块(用 B 表示)是目的地. 为了可以用一个二维数组来表示地图, 我们将地图划分成一个个的小方块... 阅读全文
posted @ 2011-05-26 15:57 Create Chen 阅读(119935) 评论(54) 推荐(28) 编辑
摘要: 博皮是基于模板 SimpleBlue 做的修改, 改动前后看上去差别还是挺大的, 但当然不能跟专业的网页美工做的效果相比, 我不是做美工的...只了解一些 html 和 CSS 而已, 让各位见笑了... 阅读全文
posted @ 2011-05-22 20:49 Create Chen 阅读(7234) 评论(44) 推荐(41) 编辑
摘要: 线程将 CPU 进行虚拟化后变成一个个的逻辑 CPU, 而物理 CPU 只有1个(多核CPU则有多个CPU), 一个 CPU 同时只能做一件事. 在任何时候, Windows 只将一个线程分配给一个 CPU, 那个线程允许运行一个"时间片", 一旦时间片到期, Windows 就上下文切换到另一个线程, 每次上下文切换都执行以下操作... 阅读全文
posted @ 2011-05-22 14:57 Create Chen 阅读(3255) 评论(7) 推荐(7) 编辑
摘要: 记得我第一个独立完成的程序是一个课程表软件 (左图), 用 VB.NET 写的, 花了三天功夫写了 2000 多行, 当时一共写了近 10 个界面用于包括设置一个星期中每天的课程还有其它一些杂七杂八的内容. 当时我也知道 "重复" 的代码很多, 但只想着 "能运行就好了", 于是还光明正大的把一大块代码复制到另外几个模板里. 如果想对这样的代码做点优化的话, 这时不应该是重构, 而应该重写... 阅读全文
posted @ 2011-05-17 12:51 Create Chen 阅读(3319) 评论(7) 推荐(11) 编辑
摘要: 类与类之间经常会相互调用, 比如 ClassA 的某个函数里需要 ClassB 里的某个值域或者某个函数的返回值, 因此我将整个 ClassB 作为参数传递给 ClassA 的这个函数, 这意味着 ClassA 的这个函数能够调用 ClassB 里所有的功能, 可不可以给 ClassA 的这个函数划定一个特定的职能呢? 让它只能做某些事情, 而避免其它 "越权行为". 有句话常被人说起 —— 使用接口来降低耦合性, 这就是 Extract Interface 的功劳. 这条重构手段经常被使用到, 主要解决类对另一个类的依赖问题, 降低了耦合性... 阅读全文
posted @ 2011-05-16 17:03 Create Chen 阅读(2233) 评论(5) 推荐(4) 编辑
摘要: "令函数携带参数" 并不是简单的让你在函数里加上参数, 如果函数里需要某个参数, 我们谁都会加上它. 你可能发现这样的几个函数: 它们做着类似的事情, 只是因为极少的几个值导致函数的策略不同, 这时可以使用 Parameterize Method 消除函数中那些重复的代码了, 而且可以用这个参数处理其它更多变化的情况... 阅读全文
posted @ 2011-05-15 19:05 Create Chen 阅读(3096) 评论(5) 推荐(8) 编辑
摘要: "复杂的条件逻辑" 是导致复杂性上升最常见的地方, "条件表达式中堆积的计算过程", "条件式表达得不简洁"等等都是造成复杂的原因. Decompose Conditional 用于将这些复杂的元素从条件表达式中分离出去, 仅在条件表达式中调用简洁的函数. 这样做带来的直接好处是减少重复, 而且代码的可读性提高了... 阅读全文
posted @ 2011-05-14 09:20 Create Chen 阅读(4562) 评论(15) 推荐(13) 编辑
摘要: 大部分类中都会有一些值域, 随之还会有一些方法使用到了这些值域. "如果调用这些值域"这个问题分为两种观点: 1. 应该直接调用它们 2. 应该通过访问函数调用它们. 我觉得大部分情况下直接调用比较方便, 过多的访问函数还会造成类中的函数过多, 当然将来如果我觉得直接调用带来了一些问题, 写一个一个的访问函数也并不是很困难... 阅读全文
posted @ 2011-05-13 12:40 Create Chen 阅读(3185) 评论(13) 推荐(11) 编辑
摘要: 试想这么一个情况: 有一个Employee类, 这个类中含有一个部门(Department)属性, 并且Department是一种类. 如果我想知道某职工所在部门的经理人是谁的时候, 我需要通过 xxEmployee.Department.Manger来访问. 但这样做有个缺点是对于其它代码, Department是public的, 其它代码能够访问到Department里的其它特性. 可以在 Employee 类中写一个GetManger()方法进行封装, 在调用的时候只需要 xxEmployee.GetManger() 就行了... 阅读全文
posted @ 2011-05-11 15:49 Create Chen 阅读(2441) 评论(12) 推荐(5) 编辑
摘要: 某跨国日化公司, 肥皂生产线存在包装时可能漏包肥皂的问题, 肯定不能把空的肥皂盒卖给顾客, 于是该公司总裁命令组成了以博士牵头的专家组对这个问题进行攻关, 该研发团队使用了世界上最高精尖的技术 (如红外探测, 激光照射等), 在花费了大量美金和半年的时间后终于完成了肥皂盒检测系统, 探测到空的肥皂盒以后, 机械手会将空盒推出去. 这一办法将肥皂盒空填率有效降低至5%以内, 问题基本解决... 阅读全文
posted @ 2011-05-10 16:24 Create Chen 阅读(8395) 评论(70) 推荐(37) 编辑
摘要: 服务端, 声明ServerSocket, 绑定(Bind)一个IP并指定这个IP的通信端口, 比如是127.0.0.1:9050, ServerSocket可以监听来自多个IP发送的连接请求, 监听(Listen)方法的参数可以设置允许的最多连接请求个数. 然后调用异步接受请求的方法(BeginAccept), 如果接受到某个客户端发来连接请求, 这时定义一个新的CommunicateSocket专门负责与这个客户端通信. 然后可以通过CommunicateSocket.BeginSend()方法给客户端发送数据, CommunicateSocket.BeginReceive()可以接收客户端发来的数据... 阅读全文
posted @ 2011-05-03 16:12 Create Chen 阅读(19599) 评论(40) 推荐(30) 编辑
摘要: C#2.0出现了匿名方法, 这在一定程度上节省了我们维护代码上下文的精力, 也不需要思考为某个方法取什么名字比较适合. 在FCL的一些方法中要求传入一个Delegate类型的参数, 比如Control.Invoke或者Control.BeginInvoke方法... 阅读全文
posted @ 2011-04-30 17:15 Create Chen 阅读(6884) 评论(4) 推荐(6) 编辑
摘要: 先要去这里下载amCharts Stock Chart for WPF并解压, 新建一个WPF Project, 在Toolbox里右击, 选择Choose Items, 然后点击Browse, 找到解压后的文件夹里有一个AmCharts.Windows.Stock.dll, 单击Okay, 准备工作就做好了. 用于在窗口中添加这样一个控件, 先看看这个控件是怎么绑定数据的... 阅读全文
posted @ 2011-04-19 14:48 Create Chen 阅读(23422) 评论(46) 推荐(18) 编辑
摘要: 一种经常发生的装箱 Int32 i = 100;Console.WriteLine("The number is: " + i); 通过VS SDK Tools里的IL DASM工具看看产生的IL代码... 阅读全文
posted @ 2011-04-11 14:45 Create Chen 阅读(1255) 评论(3) 推荐(3) 编辑
摘要: 今天从studiostyl.es下载了一个vibrant-ink皮肤, 我还是比较这种黑色主题的皮肤的, 保护视力! 没想到这个黑色主题的皮肤却带来了其它的问题, 我原来安装了CodeRush Xpress插件的, Visual Studio使用的是默认的皮肤(背景色白色), 线条的颜色很明显, 但现在换成黑色的了, 与CodeRush Xpress产生的"块匹配"线条颜色对比度太低, 导致都不怎么看得清了... 阅读全文
posted @ 2011-04-09 22:10 Create Chen 阅读(1202) 评论(7) 推荐(0) 编辑
摘要: 几个月前做的一个软件里想添加一个天气预报功能, 也就是利用了一下Google Weather的接口: http://www.google.com/ig/api?hl=zh-cn&weather=某某...不忘书中所讲: 耗时操作, 且非计算密集型任务, 最好使用异步方法. 根据Anders Hejlsberg的视频中演示的那样, 我写出下面一段代码, 也是很多人拿来演示异步的经典写法... 阅读全文
posted @ 2011-04-04 19:30 Create Chen 阅读(4201) 评论(10) 推荐(5) 编辑
摘要: 实际中有时需要对数据进行分析, 最近就遇到了这样一个情况: 有一系列横坐标是时间, 纵坐标是记录值的一些数据, 但横坐标却不是等距记录的. 就是说在第一分钟记录一次, 第二分钟记录一次, 第四分钟记... 阅读全文
posted @ 2011-03-12 09:49 Create Chen 阅读(8539) 评论(1) 推荐(3) 编辑
摘要: 一个使用了Func委托的小例子 //创建一个整型数组 int[] intArray = new int[] { 0, 1, 2, 3 }; //声明Func委托, 判断是否是奇数 Func IsOdd = i = ((i & 1) == 1); 阅读全文
posted @ 2011-02-23 14:12 Create Chen 阅读(4924) 评论(16) 推荐(4) 编辑
摘要: 很多标准查询操作符的设计原型都是返回一个IEnumerable类型的序列, 这些标准查询操作实际上不会在代码执行到那一行的时候就返回一个序列, 事实上返回的是一个对象. 当在枚举(比如foreach)这个对象的时候会从IEnumerable序列中生成一个元素, 这个时候才会真正执行查询操作. 这就是所谓的"延迟查询" 阅读全文
posted @ 2011-02-23 11:44 Create Chen 阅读(2032) 评论(3) 推荐(3) 编辑
摘要: 分部方法那些方法原型或定义都是在分部类的声明中指定, 但是没有在该分部类的相同声明中提供方法的具体实现方法. 一般情况下, 在相同分部类中的其它任何声明中都没有对这个方法的任何实现... 阅读全文
posted @ 2011-02-21 21:08 Create Chen 阅读(1206) 评论(12) 推荐(0) 编辑
摘要: "扩展方法"是一个静态类的静态方法, 我们可以像调用其它类实例的方法那样来调用扩展方法. 扩展方法的声明和调用 例如我想给string类型添加一个ToInt32的静态方法, 把string类型变成Int32类型: 阅读全文
posted @ 2011-02-21 19:26 Create Chen 阅读(1181) 评论(3) 推荐(2) 编辑
摘要: var是初始化一个匿名类型对象的专用关键字, 如果结合var和匿名类型, 在C#3.0中初始化一个匿名类型的对象是十分有个性的, 这样的初始化方法让当时刚接触C#的我一直摸不清头脑, 例如下面这个例子... 阅读全文
posted @ 2011-02-21 17:04 Create Chen 阅读(2197) 评论(12) 推荐(4) 编辑
摘要: 使用"命名方法"实现lambda的功能(Before C#2.0) C#2.0之前, 如果一个方法或者变量需要使用委托(delegate)时, 则之前必须创建一个命名方法, 并在需要委托的位置传入这个名称. 比如有一个针对int类型的数据处理, 目的是筛选出一个int数组中为奇数的元素, 或者其它一些满足条件的元素... 阅读全文
posted @ 2011-02-21 15:05 Create Chen 阅读(2130) 评论(4) 推荐(6) 编辑
摘要: SICP第35页提到费马小定理在密码学中有很重要的应用, 还没有学过这门课, 但我又对加密解密有点兴趣, 决定一探究竟. 费马小定理维基百科里是这么定义的... 阅读全文
posted @ 2011-02-04 00:12 Create Chen 阅读(6610) 评论(13) 推荐(3) 编辑
摘要: 练习1.11 函数f如下定义: 如果n3, 那么f(n)=n; 否则f(n)=f(n-1)+2*f(n-2)*3*f(n-3). 写出一个递归和一个迭代求这个问题. 递归... 阅读全文
posted @ 2011-02-01 17:55 Create Chen 阅读(867) 评论(0) 推荐(0) 编辑