自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(221)
  • 收藏
  • 关注

原创 为什么无法面向对象

条条道路通罗马,能解决问题的都是好办法。1. 产品需要满足用户需求。每天都在用windows、ie、word、firefox等,都很好用,但对用户来讲谁关心后面的代码、架构是什么样子。生产线上的人每天都在用你写的产品,他们只关心产品是否能准确地完成功能,没有故障,操作是否方便。有很多人觉得架构不好,代码ugly,所以重写产品,下面几个老链接大家可以看看。Things Y

2015-03-17 10:40:43 1479 1

原创 硅谷不是天堂:“加班”也疯狂

来中国的几年时间里,我不止一次听到过很多人对于加班的抱怨,关于过劳死的新闻屡见报端,引得各方口诛笔伐,很多人认为中国之外的公司不存在普遍的加班现象,硅谷更是自由支配工作时间的典范,可是我的所见所闻并非如此。  为自己疯狂“加班”  古往今来,人类都有这样的期望,那就是如何用较少的时间出色地完成工作,但几乎没有人能够做到,所以大家只能选择延长工作时间。如果为了完成一个自己认为值得的目标而主动

2014-01-03 13:00:32 1863 1

原创 关于软件开发的一些常识和思考

有最好的编程语言吗  作者的观点:程序员在最初学习BASIC、Fortran、 Pascal、C、C++等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今的Visual Basic、Delphi、Visual C++、Java等语言各有所长,真的难分优劣。能很好地解决问题的编程语言就是好语言。开发人员应该根据实际情况,选择业界推荐的并且是自己擅长的编程语言来开发软件,才能保证有较好的质量与

2014-01-03 12:59:50 1761 1

原创 如何成为强大的程序员?

Aaron Stannard 是新创公司 MarkedUp 的CEO,他最近花费大量时间雇佣、评估很多不同的程序员,并和他们一起协作。在这个过程中他发现并总结了十种程序员无法意识到自己潜力的原因,意在让更多程序员发掘出自己的潜力,从而成为强大的程序员。  Aaron 提到,他的公司中所使用的技术非常复杂,某些大型企业都很难掌握,所以对于想要加入团队的程序员来说,入门门槛非常高。因此,尽管他

2014-01-03 12:58:24 1526 1

原创 成为高效程序员的7个重要习惯

作为软件工程师,你希望从工作中获得的是:稳定的薪水、参与好项目的机会、好工作的跳板或只是和其他程序员成为好基友。这里的“高效”,我指的是按时完符合要求的项目的能力。经历过不少软件编写工作后,我相信以下实践会帮助你学会“高效”,同时提高专业声望、拉长职业寿命,和获得个人满足。Programmer(from good-wallpapers)  1. 理解你的需求  成为高效程序员的第一

2014-01-03 12:57:27 1666 1

原创 软件开发如同木匠做桌子

英文原文:It Should Only Take You a Few Hours…  做一张桌子看起来十分的简单。任何人都可以做,不是吗?找个大块的四方形木板,四个等长的木头柱子,四个钉子和一个锤子。把四个柱子钉到四方板的四个角上,你就做成了一个桌子。当当当!  现在来让一个真正的木匠为你打造一张桌子。首先他要花时间跟你讨论桌子的用途和功能——用在室内还是室外,厨房还是餐厅,主要用来展示还

2014-01-03 12:56:46 1544

原创 开发者们:不要再问效率还是质量的伪命题

程序开发项目进行过程中,通常会冒出这样的困惑:应该选择效率,还是选择质量?很多程序猿都会有偷懒的思维,觉得把一些摸不清头绪、不知道怎么写的代码片段去掉,可以节省很多时间,更早完成项目计划。其实过去几年中,我也是这么想的,但最近我开始意识到,这个问题的纠结之处不在于选择困难,而在于问题本身是个伪命题。什么是“质量”呢?一般程序员说到“质量”二字时,他们说的有可能是测试通过率、变量命名、代码格

2014-01-03 10:53:27 1495

原创 C# 连接 MySQL 并进行数据库操作(入门篇)

简介 这篇文章将向你介绍通过 MySQL Connector for .NET 来连接到 MySQL 数据库,然后我们将向你展示如何使用 C# 更新 MySQL 数据库记录。环境准备 安装 Visual Studio 2008 或者 Visual Studio 2010 在本机上安装 MySQL 数据库,当然你也可使用其他机器上已经装好的 MySQL 数据库 MySQL 数据库

2013-12-31 14:08:33 3738

原创 将 C# 的图像对象保存到 Oracle BLOB 字段中

本文我想跟大家分享的是如何将 C# 中的一些图像对象保存到 Oracle 中的 BLOB 字段中,这里我们并不想从零开始,而是使用我自己的框架,下面我们开始。1. 首先创建一个空的表:   1CREATE TABLE GAMBAR 2(3  GAMBAR_BIN BLOB

2013-12-31 14:07:28 1555

原创 一个进程间同步和通讯的 C# 框架

0.背景简介 微软在 .NET 框架中提供了多种实用的线程同步手段,其中包括 monitor类及 reader-writer锁。但跨进程的同步方法还是非常欠缺。另外,目前也没有方便的线程间及进程间传递消息的方法。例如C/S和SOA,又或者生产者/消费者模式中就常常需要传递消息。为此我编写了一个独立完整的框架,实现了跨线程和跨进程的同步和通讯。这框架内包含了信号量,信箱,内存映射文件,阻塞通

2013-12-31 14:05:24 3670

原创 C# 的三种序列化方法

序列化是将一个对象转换成字节流以达到将其长期保存在内存、数据库或文件中的处理过程。它的主要目的是保存对象的状态以便以后需要的时候使用。与其相反的过程叫做反序列化。序列化一个对象 为了序列化一个对象,我们需要一个被序列化的对象,一个容纳被序列化了的对象的(字节)流和一个格式化器。进行序列化之前我们先看看System.Runtime.Serialization名字空间。ISerializa

2013-12-31 14:02:37 1615

原创 ASP.NET大文件上传设置。maxRequestLength无效的情况

由于内网需求S项目需要上传超过200M的附件、我们使用的是flash批量上传。这个系统运行了7年,今年被发现超过40M的附件会报应用级别错误。并且文件没上传成功,甚至没有回发。IIS报404错误这个问题我处理了1天多,终于找到解决方案。根据IIS版本,分为两种。1.IIS6更改win2003的IIS 6.0对asp教程的上传文件大小为200k限制,aspx的上传程序没有影响。在

2013-12-30 16:59:19 14906 1

原创 RyuJIT:下一代的JIT编译器

整个世界正在向64位计算转移,即使它并不总是比32位更快或更有效率。当前的.NET JIT编译器就是一个使得64位计算机上有时导致程序速度减慢的的例子。但是,这将会被改变:一个新的,下一代x64的JIT编译器编译代码的速度将加快两倍,它将改变你对64位.NET代码的印象。回顾64位计算32位x86计算机的问世好比黑夜中迎来的天明,这是伟大的计算机架构,但它有很大的问题,32位指针只能寻

2013-12-30 16:25:07 1966

原创 C# Process.Start()方法详解

C# Process.Start()方法详解分类: C# 2012-08-22 16:12 6849人阅读 评论(2)收藏 举报c#pathqq System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能:1、打开某个链接网址(弹窗)。2、定位打开某个文件目录。3、打开系统特殊文件夹,如“控制面板”等

2013-12-30 16:24:14 1635

原创 为什么第一次调用WebService慢呢?

我们经常抱怨首次调用WebService比较慢,通常的做法是在程序启动的时候,后台逐一调用一遍所有的WebService,还有人利用多线程来解决这个问题。其实,大家只是看到了问题的现象以及“工程”的解决办法,而没有接触到问题的本质。经过本人反编译.Net类库,逐步查找,应该说找到了解决这个问题的根本办法。我们都知道,WebService是通过Soap协议来传递消息的,所有的消息都是XML,而在客户

2013-12-30 16:16:01 1867

原创 在C#中SendMessage和PostMessage的参数传递

在C#中可以使用Window API提供的SendMessage和PostMessage来传递参数。两者的区别简单介绍下:返回值的不同,我们先看一下 MSDN 里的声明:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);BOOL PostMessage(HWND hWnd,UI

2013-12-30 16:04:14 1673

原创 ISAPI在IIS7上的配置

主要介绍ISAPI的作用、ISAPI在IIS7上的配置、开发ISAPI的基本内容及使用VS 2008配置ISAPI DLL开发项目。一、ISAPI介绍缩写词=Internet Server Application Programming Interface为Microsoft所提的Internet server的API 。ISAPI分为两种:ISAPI extension (ISAPI

2013-12-30 15:24:09 10961

原创 谈谈.NET中常见的内存泄露问题——GC、委托事件和弱引用

其实吧,内存泄露一直是个令人头疼的问题,在带有GC的语言中这个情况得到了很大的好转,但是仍然可能会有问题。一、什么是内存泄露(memory leak)?内存泄露不是指内存坏了,也不是指内存没插稳漏出来了,简单来说,内存泄露就是在你期待的时间内你程序所占用的内存没有按照你想象中的那样被释放。因此什么是你期待的时间呢?明白这点很重要。如果一个对象占用内存的时间和包含这个对象的程序一样长,但

2013-12-30 15:16:59 1624

原创 为什么软件开发方法论让你觉得糟糕?

围绕软件开发实践和方法论,总有很多教条式的口水仗。阶段式(phase-gate)方法能够有效管理软件开发过程的风险,还是说只是风险管理中的花哨噱头?TDD真的能够促生出高品质软件?结对编程是代码评审的有效替代抑或只是增加了商议沟通代价?我想说,虽然缺乏证据判断这些论调的谬处,但有两条常用的法则能够帮助我们选择好的实践,同时,提升我们所提供软件的价值:划小开发周期以及提升反馈效率。 Michael

2013-12-27 15:06:14 1751

原创 每个软件工程师都应该尝试的5件事情

英文原文:5 Things Every Software Engineer Should Try回顾我的职业生涯(不,我还没那么老,不过入行确实不少年了),确实有几次人生拐点帮我更具职场智慧,并鞭策我,使我总体来说适合成为软件工程师或程序员,成为那种要么热衷于提高自己的技艺,要么对混入管理层有兴趣,要么只是简单的期望扩大自己的知识面的人。我意识到,鉴于每个人目前的工作情

2013-12-27 14:51:12 1669

原创 异常的代价

英文原文:The Cost of an Exception  最近在dynaTrace上出现了一场关于异常(Exception)的代价的大讨论。在跟一些客户的接触中,我们经常的发现他们的代码里有大量的异常处理,自己都不知道。在移除了这些异常后,程序的运行速度比以前有大幅度的提高。这让我们产生了一种假想,程序中的异常处理语句是否给性能带来了巨大的开销?由此得出的推理会是,应该避免使用异常处理。由

2013-12-27 14:46:00 757

原创 十天内掌握线性代数:惊人的超速学习实验

英文原文:Mastering Linear Algebra in 10 Days: Astoundin  译者:MapleFlying最近,我的朋友斯考特·杨(Scott Young)成就了一个惊人的壮举:他在一年之内,完成了传说中的MIT计算机科学课程表的全部33门课,从线性代数到计算理论。最重要的是,他是自学的,观看在线教程讲座,并用实际的考试作自我评估。(到斯考特的FAQ页面,看

2013-12-27 14:45:34 708

原创 进程与线程的一个简单解释

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。  最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。  1.  计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。  2.  假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含

2013-12-27 14:44:56 525

原创 .Net,你为什么会慢

自打使用.Net以来,他给我的印象就一直是:慢。不过这几天看了一下.Net程序运行时的原理,才明白了我们平时的.Net程序是为什么慢的,也明白了在某些情况下其实.Net程序运行起来也不比非托管程序慢。要看托管程序慢的原因,就得说说应用程序加载的过程。应用程序文件的格式是有规律的。不管是托管程序还是非托管程序,可执行文件的内部都包含一个PE文件(包含在exe文件或者dll文件的内部)

2013-12-27 14:44:27 808

原创 ClickOnce部署Winform程序的方方面面

使用ClickOnce发布Winform程序将使得程序的部署变得非常的方便,这篇文章就来介绍下ClickOnce的使用和部署过程中可能遇到的问题,权当梳理知识、日后备用。内容概览ClickOnce简介发布站点建立配置ClickOnce程序发布ClickOnce包问题补遗ClickOnce的一个缺点1. ClickOnce简介微软官方对ClickOnce的解释是:ClickOnc

2013-12-27 14:42:16 742

原创 iframe异步加载技术及性能

这是一篇原创翻译文章。原文地址。我们会经常使用iframes来加载第三方的内容、广告或者插件。使用iframe是因为他可以和主页面并行加载,不会阻塞主页面。当然使用iframe也是有利有弊的:Steve Souders在他的blog里面有阐述:Using Iframes Sparingly:iframe会阻塞主页面的onload事件主页面和iframe共享同一个连接池阻塞主页面

2013-12-27 14:37:43 800

原创 趣文:计算机网络基本概念趣解

计算机主机网关的作用是什么?  假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。  但是你不被允许走出大门,你想与外界发生的一切联系,都必须由门口的李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远

2013-12-27 11:50:48 622

原创 Windows编程革命简史

源文:A Brief History of Windows Programming Revolutions (Ron Burk)首先,是 Windows API 和 DLL Hell。(译注:DLL Hell——DLL灾难,就是微软的DLL升级时因为不同版本可能造成应用程序无法运行的灾难,首当其冲的是COM编程,相信大家都知道某些木马或是病毒更改了一些系统的DLL可以导致整个Windows

2013-12-27 11:39:16 522

原创 程序员技术练级攻略

伯乐人才网6月9日发表了《写给即将入行的程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得

2013-12-27 11:18:48 647

原创 字符串匹配的Boyer-Moore算法

上一篇文章,我介绍了KMP算法。  但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。  Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种算法。  下面,我根据Moore教授自己的例子

2013-12-27 11:13:17 578

原创 字符串匹配的KMP算法

字符串匹配是计算机的基本任务之一。  举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?  许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。  这种算法不太容易理解,网上有很多解释,

2013-12-27 11:12:09 576

原创 想爬得更高,需要知道的数学体系

在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进。  为什么要深入数学的世界  作为计算机的学生,我没有任何企图要成为一个数学家。我学习数学的目的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些。说起来,我在刚来这个学校的时候,并没有预料到我将会有一个深入数学的旅程。我的导师最初希望我去做的题目,是对app

2013-12-26 18:55:14 872

原创 计算机是如何启动的?

从打开电源到开始操作,计算机的启动是一个非常复杂的过程。  我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示......这几天,我查了一些资料,试图搞懂它。下面就是我整理的笔记。  零、boot的含义  先问一个问题,"启动"用英语怎么说?  回答是boot。可是,boot原来的意思是靴子,"启动"与靴子有什么关系呢? 原来,这里的boot是bootstrap

2013-12-26 18:54:05 528

原创 程序员编程语录

1. 一个好的程序员是那种过单行线马路都要往两边看的人。(Doug Linder)2. 程序有问题时不要担心。如果所有东西都没问题,你就失业了。(软件工程的Mosher定律)3. 程序员的麻烦在于,你无法弄清他在捣腾什么,当你最终弄明白时,也许已经晚了。(超级计算机之父Seymour Cray)4. 我想大部分人都知道通常一个程序员会具有的美德。当然了,有三种:懒惰,暴躁,傲慢。(Pe

2013-12-26 13:42:26 557

原创 软件工程的变迁

本文是从 What Happened to Software Engineering? 这篇文章翻译而来。  在过去的几年里,在世界范围内,软件开发方法发生了一些变化。还不是很久以前,最主要的软件开发生命周期(SDLC)方法论是瀑布模型方法(Waterfall Metho

2011-09-12 03:15:55 552

原创 你不必非要给自己找个老板

文是从 You Weren't Meant to Have a Boss 这篇文章翻译而来。  感谢BOOM提供了本文翻译。BOOM是个程序员,就职于某IT公司,有关他的更多信息请他的新浪微博:http://weibo.com/huji0624  科技慢慢的使“正常“脱离

2011-09-12 03:05:22 956

原创 .net 3.5平台上的Socket开发

但是,在实际应用中我们还是发现了一些问题的存在,如:我们在每一次操作的过程中都要创建一个IAsyncResult上下文对象,如果数据通讯很频繁的话,会导致大量的IAsyncResult对象被创建,大大的增加了垃圾回收器的工作量,从而降低了整个应用的效率。在.NET 3.5中,这个麻烦已经被解决了,在3.5 版本中,Socket定义了一些新的方法。这些方法不要求每一次操作都创建一个新的上下文对象

2009-10-26 13:03:00 736

原创 浅析C#编程中的内存管理

C#将数据分为两种:值数据类型和引用数据类型,这两种数据类型存储在内存中的不同的地方:值数据类型存储在堆栈中,而引用类型存储在内存的托管堆中。1、内存简介Windows使用一个系统:虚拟寻址系统。这个系统的作用是将程序可用的内存地址映射到硬件内存中的实际地址上。其实际结果就是32位的机子上每个进程都可以使用4GB的内存,当然,64位机这个数字就大了去了。这4GB的内存实际上包含了程序的所有的部

2009-10-26 13:01:00 546

原创 Socket开发之通讯协议及处理

所谓的协议就是通讯双方协商并制定好要传送的数据的结构与格式。并按制定好的格式去组合与分析数据。从而使数据得以被准确的理解和处理。那么我们如何去制定通讯协议呢?很简单,就是指定数据中各个字节所代表的意义。比如说:第一位代表封包头,第二位代表封类型,第三、四位代表封包的数据长度。然后后面是实际的数据内容。如下面这个例子:01 01 06 00 01 0f ef 87 56 34 协议类别 协议代码 数

2009-10-26 12:58:00 683

原创 .NET Socket开发之同步Socket实现两例

一、客户端数量比较少:数量比较少是指会同时连接到服务器的客户端数量一般在50人以下。这种情况下我们可以考虑使用同步Socket+Thread来实现我们的服务端。这样会让我们编写逻辑更清晰的代码而性能不会下降太多。二、客户端数量较多但都是短连接:短连接是指客户端的连接在处理完一次收发之后就产即断开的场景,比如说HTTP协议就是一种短连接。HTTP在客户端发出请求时建立一个Socket连接,并通过So

2009-10-26 12:55:00 818

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除