`
hyj1254
  • 浏览: 335654 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
       从开始编程到现在,呆过的公司,呆过的每个项目组,几十上百行的函数都比比皆是。以此为美的还不在少数,认为这是“紧凑”;变量太多也不认为是问题,统统提到函数开头就行了,认为这样“更易读”;变量命名也很简短,一个字母的,两个字母的大行其道,也不认为是问题,可能认为这样并不影响阅读,相反还使得代码更简短。代码嵌套太深也不认为是问题,反对分拆函数,认为不是公用的代码就不用分拆,是否分拆与函数长度基本没有关系。       我已经不相信国内有严格践行重构的公司了,觉得多数公司的代码都是这样写的。        尽管阅读了《重构》一书,并自认为初窥门径,但仍无法说服同事们,除非他们也读过并认同。 ...
    抽象是软件体系结构的灵魂。一个“优秀”的软件体系,必然是抽象层次恰到好处的结构。软件需要抽象,就如同书籍需要目录和章节一样;又好似茂盛的树木需要树干和枝丫。任何具备面向抽象编程意味的动作,都使软件体系朝质变迈出实实在在的一步,虽然不见得一定是变好。     面向过程语言与面向对象语言最大的区别就是,对抽象的支持不一样。两者都可以抽象,只是后者容易多了,它专为抽象而生。     但最重要的是,作为一个使用面向对象语言的程序员,要有这个意识,知道自己使用的这些特性有什么意义,会起到什么作用。只有意识到自己在做什么,才能有针对性地把它做到更好。     很难想象完全没有这种意识的程序员能用好任 ...
    人生为某一个终极目标而活,很荒谬。这样的一生时间再长,也只等于一瞬间。为了六十岁的成功牺牲前面的二十岁、三十岁、四十岁乃至五十岁,得到的是一,失去的也许是十。     每个时期都做最大程度发挥潜能的事情,赢得了现在就是赢得了未来。等到了未来,那也只是短暂的一瞬,再大的成功也享受不了多久,也未必就真的需要多大的成功;另一方面,也完全没有理由说未来就比当前重要,没有理由为了未来的成功,就可以放弃当前的成功,所以做好眼前的,确保当前的成功才是最重要的。
一、卸载现有ubuntu系统(参考linuxidc.com) 1、下载MBRFix工具,放在c盘 2、 cd c:\mbrfix 执行 MBRFix /drive 0 fixmbr /yes 二、格式化现有ubuntu分区 1、控制面板-系统和安全-创建并格式化硬盘分区 选中ubuntu所在的几个主分区,并右键选择'删除卷' 于是硬盘多出了“可用空间” 三、使用easyBCD(参考linuxidc.com) 1、依次点击: Add New Entry --NeoGrub -- Install --Configure 2、将ubuntu镜像文件在D盘根目录,保存如下配置文件: root ...
    从前觉得学校的教材太浅,只讲语法,根本不讲一种语言能用来做什么。后来不论学习什么语言都要认真钻研一番,看它到底有哪些功能。时间长了,就发现,现在感兴趣的又回到了语言本身的语法、特性上。因为,每种语言能做的事都差不多,语言之间的差异最大的部分反而就是它的语法规则。要掌握一门语言,首要掌握的,也是这个。至于功能,翻翻资料,大同小异。比如,网络编程,c、java、ruby、python,这些功能它们都有,但各自的语法区别是很大的。
      用js操作DOM元素会引起页面频繁的reflow和repaint,加重页面负担。能用html和css达到效果的,就不要用js。
一、actionscript调用javascript function method4As() { alert('This is js code ') } ExternalInterface.call('method4As');//as 二、javascript 调用 actionscript ExternalInterface.addCallback('callAS', function():void { trace('This is as code'); }); var swf = document.getElementById('swfI ...
若干个行内元素并排排列,margin,padding都设成0了,但它们相互之间还是莫名其妙地多出了几像素的空白。这不是那个ie6bug,但很容易被忽略,也很难查出原因:和元素的排版方式有关。 <!doctype html> <html> <head> <title>model</title> <style><!-- body * {margin:0;padding:0;} --></style> </head> <body> ...
    曾经钻研过卡耐基的这本著作,也老老实实地实践过一阵子,但大多不了了之。究其原因,无外是逼自己做另一个完全不同的人,太难了,简直不可能。     比如说,作者建议不吝自己真诚的赞美。这点看起来容易,实际 ...
   第一条,也是最根本的一条:抽象出了代码的整体框架、脉络,同时也隔离了具体的变化。没有分层,把逻辑都写在一个方法里面的代码就好比是一本没有目录的电子书,要找哪一章哪一节全得凭感觉,得点进去看,得结合 ...
一、宿主机处于局域网。 1、bridge(桥接) 将虚拟机的ip设为局域网其中的一个,确保无冲突。 2、nat 本地连接-->属性-->共享-->允许其他网络用户通过....来连接 -->选择VMnet8。 将虚拟机的ip设为自动获取。 二、宿主机直接宽带上网,或任意使其拥有固定物理IP地址的上网方式。 只能选择nat。 与上述步骤2同。 最后重启虚拟机。
   各浏览器盒模型的组成结构是一致的,区别只是在"怪异模式"下宽度和高度的计算方式,而“标准模式”下则没有区别。组成结构以宽度为例:总宽度=marginLeft+borderLeft+paddingLeft+contentWidth+paddingRight+borderRight+marginRight。 ...
获取鼠标相对于html的位置: function mousePosition(evt){ if(evt.pageX||evt.pageY){ return {x:evt.pageX,y:evt.pageY}; } return { x:evt.clientX+document.documentElement.scrollLeft-document.body.clientLeft, y:evt.clientY+document.documentElement.scrollTop-document.body.clientTop } ...
时间复杂度为O(k*n)的排序算法。目前只适用于非负整数,当然改造下也可用于负整数。 /** * 过程:1、从个位数起,使用计数排序作为内排序方法,针对各个数位即“基数”进行排序。 * * * @param arr * @param digit 最大数据的位数,比如100则输入3 * */ public int[] sort(int[] arr, int digit) { if(arr==null){ return null; } for (int i = 1; i <= Math.pow(10, digi ...
快速排序。基于比较的排序中基本上最快的算法O(nlgn)。数据基本有序且每次取第一个元素作划分点(含基本相同)时将遭遇“最坏”情形,时间复杂度为O(n^2)。换言之数据越乱越高效。缺点:非稳定排序。 public void q_sort(int[] arr, int from, int to) { if (arr == null || arr.length == 0 || to < 0 || from < 0) { return; } if (from >= to) { return; } if (to - from < ...
Global site tag (gtag.js) - Google Analytics