Peter.Y的技术博客

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年4月25日

摘要: 最近对代码作了一些优化,试验后效果还可以,但是发现界面会闪烁,具体是TreeView控件会闪烁,语言为C#,IDE为VS2005。在查阅一些资料,使用了一些基本技术后(如开启双缓冲),发现没什么效果。 于是使用Profiler工具,查找出瓶颈在于每次更新完界面的EndUpdate操作(使用这个是为了减少界面更新次数,但这里不理想是因为控件中中的元素很多),猜想大概每次更新,.Net底层都会更新重绘每个图元,所以速度会慢,造成闪烁。但是如果这样,使用双缓冲应该会有较好效果。再看代码,发现可能是更新动作太过频繁,于是降低速度,有所好转,但还是不行。 继续在网上查阅,最终找到一个方案比较合适。原来底 阅读全文
posted @ 2011-04-25 13:47 Peter.Y 阅读(17309) 评论(22) 推荐(7) 编辑

2011年4月13日

摘要: 最近有兴趣想多了解一些编程语言或平台方面的内容,主要关注了时下比较流程的语言,.net,java,python,Ruby on Rails,Perl等。下面先分别简介下。.Net .Net框架是Windows研发出来的跨语言解决方案。它的核心是CLR(公共语言运行库),这是微软发布的CLI(公共语言基础结构)规范的一个实现。CLI分为两部分,一个是CIL(公共中间语言),另一个是CTS(公共类型系统)。可以想象,基于公共类型系统,.net就可以把其下的各种语言中的数据类型翻译为公共数据类型,再将其翻译为公共中间语言,就可以实现跨语言的互通。本来程序就基本等于数据+流程逻辑,两部分都使用了公共规 阅读全文
posted @ 2011-04-13 23:26 Peter.Y 阅读(2287) 评论(0) 推荐(0) 编辑

2011年3月24日

摘要: 最近花了一些时间读了这本介绍Java虚拟机的经典著作的前面1-9章,感觉这是一本非常赞的书,如作者所说,详细介绍了Java虚拟机的方方面面,可以作工具参考书使用。下面作一些笔记和理解。这本书共20章,第1章综述;第2章到第5章描述Java的体系结构;第6章简介Java编译生成的class文件结构;第7章介绍运行时的类型生命周期,包括装载、连接、初始化以及卸载的过程;第8章深入Java的连接模型,介绍Java类型是如何被连接的;第9章介绍了垃圾收集的几种不同技术。从第10章开始一直最后第20章,全部都是介绍Java虚拟机的指令集,可以当作工具书来作查阅和参考。Java体系结构的最大特点就是平台无 阅读全文
posted @ 2011-03-24 23:24 Peter.Y 阅读(585) 评论(0) 推荐(0) 编辑

2011年1月20日

摘要: 最近看Effective C#,看到委托(delegate)和事件(event)这部分,没看懂,于是深入了解下,下面简单记录一些个人理解。首先来看委托,功能上来说其实就是个函数指针(原谅我既有的C++思维),只不过它提供了类型安全,可以支持各种方法(包括对象的成员方法,会自动传递对象引用本身,这点函数指针其实很容易模拟,只不过这里强制化了),以及运行时的安全性(即不会因为没有指向而报错)。这看起来像是一个封装的更加好的安全版的函数指针。另外,委托还支持多播,即一个委托可以挂接多个函数,当使用委托发起调用时,可以依次调用每个函数。从概念上说,委托是一种特殊的机制,在关键词上和class/stru 阅读全文
posted @ 2011-01-20 21:35 Peter.Y 阅读(452) 评论(0) 推荐(0) 编辑

2011年1月15日

摘要: 这里介绍C# lock关键字它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。C#语言有很多值得学习的地方,这里我们主要介绍C# lock关键字,包括介绍Monitor 类锁定一个对象等方面。C#提供了一个lock关键字,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C#中,C# lock关键字定义如下:lock(expression) statement_blockexpression代表你希望跟踪的对象,通常是对象引用。 ◆如果你 阅读全文
posted @ 2011-01-15 01:46 Peter.Y 阅读(789) 评论(0) 推荐(0) 编辑

2010年12月20日

摘要: 工作几个月,觉得有必要把遇到的BUG记录一下,并且总结一些基本的思路方法以避免以后再重蹈覆辙。现象:软件中使用到了FTP功能,软件本身作为FTP服务端,可支持客户端从服务端传输文件。这本是个极其简单的功能,FTP使用Apache的开源代码,已知无问题。但是软件运行在Win7和WinXP上表现却不相同,Win7上一切顺利,WinXP上则不行,显示错误是下载文件失败。分析及解决过程:从表面上看,问题应该出在配置文件上。起先认为WinXP下或许未能正确解析文件格式。于是试验一,将软件中FTP功能剥离出来,单独运行于WinXP上,设为进程B,修改软件,让其可以使用B进程的FTP,发现一切正常。再猜测是 阅读全文
posted @ 2010-12-20 01:27 Peter.Y 阅读(604) 评论(0) 推荐(0) 编辑

2010年12月13日

摘要: 花了近2个月的时间,看完了这本《代码大全》第二版。真是一本好书哇,看完之后觉得还有很多值得回味的地方,而且每部分之后作者还推荐了不少经典书籍。所以,作个读书心得,备查。全书的主题是软件构建,关于软件构建问题的方方面面均有涉及,共分7个部分,从软件构建前期准备,到语言层的一些问题,再到代码完善,系统考虑以及软件工艺等等。以下分别进行简单说明。第一部分是打好基础,本部分主要是软件构建前期的工作,以及对一些基本概念的介绍,具体包括如何选择编程语言和构建实践方法,如何理解软件开发的过程。软件开发本质上说就是工程,书中用建筑工程对其作比喻。不过由于软件产品本身的特性,使其需求产生变化的可能性很大,因而也 阅读全文
posted @ 2010-12-13 05:31 Peter.Y 阅读(772) 评论(0) 推荐(0) 编辑

2010年11月11日

摘要: 这两天帮一同学折腾HIP,需要重新编译内核。现在把编译配置内核的过程记录下来。操作系统:Ubuntu 10.04步骤:1 下载所需的内核包,解压到/usr/src/下;2 cd到内核源码根目录下,运行make mrproper,清理上次编译的结果文件以及配置文件;[可选]3 进入到内核源码根目录下,运行make oldconfig,让内核按常用配置生成; - 这里面还有其他一些选项,如defconfig,是默认配置4 运行make menuconfig (需要ncurses软件包),这是在菜单模式下进行内核配置,可以选择将其编译built-in(设置为*)或是内核模块(设置为M); - 阅读全文
posted @ 2010-11-11 07:26 Peter.Y 阅读(5046) 评论(0) 推荐(0) 编辑

2010年9月25日

摘要: 调试一个C#工程,发现直接运行正常,但是调试状态下,在断点处停下来之后,无论是继续运行还是继续单步,都会出现丢失调试信息的现象,程序显示为无响应。打开局部变量监视对话框,发现错误提示如下:由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值于是百之Go之,原来是调试时变量自动求值的原因。解决方法有二:1,关掉自动变量,改用监视变量;2,选项-调试内把自动变量求值关闭。 阅读全文
posted @ 2010-09-25 22:19 Peter.Y 阅读(374) 评论(0) 推荐(0) 编辑

2010年9月6日

摘要: 首先查一下什么是强名称程序集,见百度百科帖子:http://baike.baidu.com/view/1145682.htm简单来说,就是为了解决Windows Dll Hell问题的,即不同公司开发同名程序集会相互覆盖。所谓强名称,就是使用RSA技术,采用一对公/私秘钥作为程序集的发布者,以进行区分,防止覆盖。现在问题是有一个强名称程序集的工程,需要引用一个弱名称库,也就是普通库了。正常引用是失败的。错误显示是“Assembly generation failed -- 引用的程序集 'xxx' 没有强名称”。解决办法如下:1. 创建一个新的随机密钥对。d:\temp sn -k test 阅读全文
posted @ 2010-09-06 19:02 Peter.Y 阅读(1750) 评论(0) 推荐(0) 编辑