一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Backend

谈谈Visual Studio的缺点,比较Eclipse

 3. 跟踪活动项不方便 Visual Studio有这样一个功能叫做Tracking Active Item,有时候我需要它,有时候又希望关闭它。Visual Studio把它放在选项里面,每次修改的时候都要重复点菜单-》选分类-》点CheckBox-》点OK这样一个重复的动作。 Eclipse把这个功能叫做Link with Editor, 放在主界面的Package Explorer的工具按钮里,打开和关闭都只需要点击一次鼠标就行了。  4. 设置代码格式不够灵活 看上去Visual Studio也提供了不少代码格式选项,可还是缺少很多高级设置,比起Eclipse只能算小巫见大巫了。比如,我很喜欢Eclipse把字段对齐这个功能,但Visual Studio压根没有这个选项。  5. 代码行定位功能不如Eclipse Eclipse编辑器右侧有个特殊区域代表了整个代码文件,断点、错误、警告、书签都会在这里标识出来,不论代码有多长,点击一下就可以定位,非常的方便。 在Visual Studio里面定位代码,要么用鼠标滚轮上下翻动直到找到内容,要么从成员列表的组合框里选择,不论哪一种,都没有Eclipse来得简洁方便。   6. 设置文件编码太过麻烦 Visual Studio既不能指定文件的默认编码,也不能批量设置文件编码,只能通过Save As对话框下面一个很小的箭头手工一个一个指定,麻烦到文件多的时候我有一种想砸了它的冲动。 Eclipse可以从文件类型、工作区、项目、单个文件四个级别设置文件编码,而且允许手工输入编码名称,这比Visual Studio从一个长长的列表里选择要快捷得多。  7. 错误信息不够人性化 Visual Studio如果编译出错,错误信息只是简单的列在输出窗口里,要你去一个一个点开来看。而Eclipse的错误信息同时会在Package Explorer里显示成Overlay Icon,从而清楚的了解到项目的哪些部分受到了错误的影响。  8. 添加新类过于简单 Visual Studio在创建新文件时唯一允许你指定的选项是文件名,剩下的只能手工修改。Eclipse在创建新类时提供诸多选项,比如要求实现某个接口,那么所有接口方法的存根也会一并生成,节约了很多时间。 9. 同一文件的导航功能不够一致 在Visual Studio的代码文件中如何导航?使用成员下拉框。 在可视化编辑器里怎么导航?用Document Outline窗口。 在引用的程序集里又如何导航?用Object Browser窗口。 在Eclipse中,上述所有内容都可以通过Outlilne窗口完成,操作也完全一致,不像Visual Studio那样每个窗口都有不同的界面和操作方法。  10. 管理引用 我们创建项目的时候总有一些库是经常要用到的,比如数据项目引用NHibernate,Silverlight项目引用Toolkit,等等。Visual Studio引用哪些程序集只能由我们手工查找,而Eclipse提供了User Library的管理功能,能够让我们将常用的库引用一次性导进来,比Visual Studio的Add References不知方便几许。  11. 重构功能比较初级 Visual Studio支持代码重构,Eclipse也支持,但是你比较一下两者的菜单就知道,它们对重构的支持程度完全不是同一个级别的。 12. 代码提示不够清楚美观 Visual Studio的代码提示同样只有单一的文字格式,大段的文字看下来,很难抓住重点。 Eclipse的代码提示格式是富格式内容,能突出显示重点,可导航的部分会显示成超链接,同时还提供附加的功能按钮,比Visual Studio要细致体贴得多。 13. 缺少本地历史记录功能 Eclipse有一个非常强大的功能是将最近的编辑历史记录保存在本地,这样即使你没有使用版本数据库也能跟踪修订信息、比较版本、还原历史记录,对一些实验性的项目或者不需要签入的开源项目来说是非常有用的,并且你也可以用它来记忆内容,整理思路。Visual Studio则完全没有这种功能。 14. 缺少智能化的快速修复 这是我最爱的Eclipse功能!Eclipse不仅找出编译错误,还能够为许多种类型的错误提供修复选项。这个修复选项确实相当的智能,对很多常见的编译错误都能找到合理的解决方案,比如下面的错误它就能猜到getMessge()实际上是getMessage()拼错了,我只需要在这一项上按回车就万事OK。 Visual Studio的只能机械的显示一些错误信息。有时候错误提示也会附带一些关于如何修正错误的提示,但大多比较死板,需要程序员靠自己的经验来修复错误。   15. 最后一个不得不说的地方是,Eclipse是完全免安装的。   这意味着什么呢?如果我哪天重新安装了系统,那么打开Eclipse马上可以再次使用,以前设置的所有选项和更新内容全部立即可用。而Visual Studio就不得不重新安装、打补丁、设置各种选项,如果运气不好安装过程中突然出了什么错,那你所有过程重来一遍吧,一整天就这样没了。更让人讨厌的是,VS2010安装过程中竟然要重启两次,就算你非重启不可的话,难道不能把所有内容准备好然后一次性解决吗!? from:http://www.cnblogs.com/younggun/archive/2010/11/05/1870026.html

龙生   24 Sep 2014
View Details

Eclipse快捷键 10个最有用的快捷键

Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。    1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml。美中不足的是这组快捷键并非在所有视图下都能用。 2. ctrl+o:快速outline 如果想要查看当前类的方法或某个特定方法,但又不想把代码拉上拉下,也不想使用查找功能的话,就用ctrl+o吧。它可以列出当前类中的所有方法及属性,你只需输入你想要查询的方法名,点击enter就能够直接跳转至你想去的位置。 3. ctrl+e:快速转换编辑器 这组快捷键将帮助你在打开的编辑器之间浏览。使用ctrl+page down或ctrl+page up可以浏览前后的选项卡,但是在很多文件打开的状态下,ctrl+e会更加有效率。 4. ctrl+2,L:为本地变量赋值 开发过程中,我常常先编写方法,如Calendar.getInstance(),然后通过ctrl+2快捷键将方法的计算结果赋值于一个本地变量之上。 这样我节省了输入类名,变量名以及导入声明的时间。Ctrl+F的效果类似,不过效果是把方法的计算结果赋值于类中的域。     5. alt+shift+r:重命名 重命名属性及方法在几年前还是个很麻烦的事,需要大量使用搜索及替换,以至于代码变得零零散散的。今天的Java IDE提供源码处理功能,Eclipse也是一样。现在,变量和方法的重命名变得十分简单,你会习惯于在每次出现更好替代名称的时候都做一次重命名。要使 用这个功能,将鼠标移动至属性名或方法名上,按下alt+shift+r,输入新名称并点击回车。就此完成。如果你重命名的是类中的一个属性,你可以点击alt+shift+r两次,这会呼叫出源码处理对话框,可以实现get及set方法的自动重命名。     6. alt+shift+l以及alt+shift+m:提取本地变量及方法 源码处理还包括从大块的代码中提取变量和方法的功能。比如,要从一个string创建一个常量,那么就选定文本并按下alt+shift+l即可。如果同 一个string在同一类中的别处出现,它会被自动替换。方法提取也是个非常方便的功能。将大方法分解成较小的、充分定义的方法会极大的减少复杂度,并提 升代码的可测试性。     7. shift+enter及ctrl+shift+enter Shift+enter在当前行之下创建一个空白行,与光标是否在行末无关。Ctrl+shift+enter则在当前行之前插入空白行。     8. Alt+方向键 这也是个节省时间的法宝。这个组合将当前行的内容往上或下移动。在try/catch部分,这个快捷方式尤其好使。     9. ctrl+m 大显示屏幕能够提高工作效率是大家都知道的。Ctrl+m是编辑器窗口最大化的快捷键。     10. ctrl+.及ctrl+1:下一个错误及快速修改 ctrl+.将光标移动至当前文件中的下一个报错处或警告处。这组快捷键我一般与ctrl+1一并使用,即修改建议的快捷键。新版Eclipse的修改建 议做的很不错,可以帮你解决很多问题,如方法中的缺失参数,throw/catch exception,未执行的方法等等。 更多快捷键组合可在Eclipse按下ctrl+shift+L查看。 让我们按照使用频率来看看我最爱用的一些热键组合。(注:以下内容在Eclipse3.02及一上版本通过测试) 1. Control-Shift-T: 打开类型(Open type)。如果你不是有意磨洋工,还是忘记通过源码树(source tree)打开的方式吧。用eclipse很容易打开接口的实现类的,按ctrl+t会列出接口的实现类列表 2. Control-Shift-R: 打开资源(不只是用来寻找Java文件)。小提示:利用Navigator视图的黄色双向箭头按钮让你的编辑窗口和导航器相关联。这会让你打开的文件对应显示在导航器的层级结构中,这样便于组织信息。如果这影响了速度,就关掉它。 3. F3: 打开申明(Open declaration)。或者,利用Declaration Tab(在Java视图模式下,选择Windows --> Show View — > Declaration)。当你选中代码中的一个方法,然后按这个按键,它会把整个方法在申明方框里显示出来。 4. Alt-left arrow: 在导航历史记录(Navigation History)中后退。就像Web浏览器的后退按钮一样,在利用F3跳转之后,特别有用。(用来返回原先编译的地方) 5. Alt-right arrow: 导航历史记录中向前。 6. Control-Q: 回到最后一次编辑的地方。这个快捷键也是当你在代码中跳转后用的。特别是当你钻的过深,忘记你最初在做什么的时候。 7. Control-Shift-G: 在workspace中搜索引用(reference)。这 是重构的前提。对于方法,这个热键的作用和F3恰好相反。它使你在方法的栈中,向上找出一个方法的所有调用者。一个与此相关的功能是开启“标记”功能 (occurrence marking) 。选择Windows->Preferences->Java-> Editor-> […]

龙生   24 Sep 2014
View Details

Sql2008 全文索引 简明教程

在SQL Server 中提供了一种名为全文索引的技术,可以大大提高从长字符串里搜索数 据的速度,不用在用LIKE这样低效率的模糊查询了。 下面简明的介绍如何使用Sql2008 全文索引 一、检查服务里面带有Full-text字样的服务是否存在并开启 如果不存在带有Full-text字样的服务的,确认是否安装了sqlserverFullTextSearch 二、新建全文目录 全文目录是用来存储全文索引的 三、为表定义全文索引 四、点击下一步,按提示选择 1.确认下一步 2.选择唯一索引,通常是主键 3.选择要建立的全文索引列,对于断字符的选择如果列存的是中文就选择chinese,如果是英文就选择English 4.选择索引更新方式,可以先自动更新,以后数据量大了可以设置添加全文索引的计划 5.选择全文目录 五、全文索引的SQL查询关键字 建立好全文索引后就可以使用SQL语句来查询了,主要用带三个关键字 CONTAINS、FREETEXT、CONTAINSTABLE和FREETEXTTABLE 1. CONTAINS 搜索单个词和短语的精确或模糊的匹配项,要搜索的内容必须是个有意义的词语,比如说“苹果”、“建设厅”,不能是一些没意义的词语,比如“阿迪撒啊是”,“儿儿的”这样的词语即使 LIKE是能查询出来,但全文索引对这样没意义的词语可能没有建立索引,查不出来 [sql] view plaincopy SELECT * FROM dbo.Business WHERE CONTAINS(Address,'旅游') 实现功能:查询Business表中Address列包含“旅游”的行 详细查看:http://msdn.microsoft.com/zh-cn/library/ms187787.aspx 2. FREETEXT 和CONTAINS类似,不同的是它会先把要查询的词语先进性分词然后在查询匹配项 [sql] view plaincopy 01.select * 02.from dbo.Business 03.where freetext(Address,'带婴儿旅游') 详细查看:http://msdn.microsoft.com/zh-cn/library/ms176078.aspx 3.CONTAINSTABLE 在查询方式上与 CONTAINS 几乎一样。但CONTAINSTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的表来使用,并且使用 CONTAINSTABLE 的查询对每一行返回一个相关性排名值 (RANK) 和全文键 (KEY)。 [sql] view plaincopy SELECT  * FROM    Business AS FT_TBL         INNER JOIN CONTAINSTABLE(Business, *, 'ISABOUT (婴儿 WEIGHT (.8),赤水 WEIGHT (.4) )')         AS KEY_TBL ON FT_TBL.BusinessId = KEY_TBL.[KEY] ORDER BY KEY_TBL.RANK DESC ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数。表示不同条件有不同的侧重。 CONTAINSTABLE 返回的表包含有特殊的两列:KEY,RANK。 被全文索引的表必须有唯一索引。这个唯一的索引列在返回的表中就成为 KEY。我们通常把它作为表连接的条件。 在某些网站搜索时,结果中会出现表示匹配程度的数字,RANK 与此类似。它的值在0~1000之间,标识每一行与查询条件的匹配程度,程度越高,RANK 的值大,通常情况下,按照 RANK 的降序排列。  详细查看:http://msdn.microsoft.com/zh-cn/library/ms189760.aspx 4. FREETEXTTABLE 在查询方式上与 FREETEXT 几乎一样。但 FREETEXTTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的表来使用,并且使用  FREETEXT  的查询对每一行返回一个相关性排名值 (RANK) 和全文键 (KEY)。 [sql] view plaincopy SELECT  * ,         BusinessID ,         Address FROM    Business AS FT_TBL […]

龙生   22 Sep 2014
View Details

C#多线程完美解决方案

 

  运行上述代码,我们可以看到问题已经被解决了,通过等待异步,我们就不会总是持有主线程的控制,这样就可以在不发生跨线程调用异常的情况下完成多线程对winform多线程控件的控制了 from:http://blog.csdn.net/windflow/article/details/8693291

龙生   19 Sep 2014
View Details

memcached 协议路由器 Mcrouter

Mcrouter 是一个 memcached 协议路由器,用于对 memcached 的部署进行扩展。这是 Facebook 缓存架构的核心组件,峰值的时候每秒可处理 50 亿请求。详细介绍请看这里。 from:http://www.oschina.net/p/mcrouter

龙生   16 Sep 2014
View Details

程序员懒惰之极的确凿证据

程序员很懒是出了名的,但很多书里都说程序员的懒是一种美德,但懒是应该有节制的,应该分场合。比如下面的这些懒惰的行为,相信没有人会欣赏他们的这种表现。

1、躺着编程。另外一个也是躺在床上工作的职业是妓女。

2、还是躺着编程,但天花板太远了,或不能承受,改成头套式的了。

3、屏幕应该顺着我的方向,而不是我顺着屏幕的方向

4、程序员吃爆米花的方式

5、紧急bug修复(方案一)

6、紧急bug修复(方案二)

7、好困,我要眯一会

8、程序员喝饮料的方式

9、程序员开发出的画线程序

10、用脚关电脑

稿源:http://www.techug.com/programmer-lazy

from:http://www.oschina.net/news/55170/programmer-lazy

网站防止CC攻击的方法

CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。 CC攻击的攻击技术含量低,利用工具和一些IP代理,一个初、中级的电脑水平的用户就能够实施攻击。不过,如果了解了CC攻击的原理,那就不难针对CC攻击实施一些有效的防范措施。 通常防止CC攻击的方法有几种,一个是通过防火墙,另外一些网络公司也提供了一些防火墙服务,例如XX网站卫士和XX宝,还有一种方法是自己写程序预防,昨天网站遇到CC攻击,这也让我尝试了一下各种防止CC攻击方法的有效性。 一开始我想使用某某网站卫士来预防攻击,从界面上看,似乎是防止了大量的CC攻击,但登录网站后发现,流量依旧异常,攻击还是依旧,看起来这个网站卫士的效果并没有达到。 从原理上看,基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。但如果IP的数量足够大,使得单个IP的连接数较少,那么防火墙未必能阻止CC攻击。 不仅如此,我还发现,启用了某某网站卫士之后,反而更容易被CC攻击,因为这个网站卫士并不能过滤掉CC攻击,攻击的IP经过其加速后,更换成为这个网站卫士的IP,在网站服务器端显示的IP都是相同的,导致服务器端无法过滤这些IP。 实际上,不使用网站卫士类的服务,直接通过分析网站日志,还是很容易分辨出哪个IP是CC攻击的,因为CC攻击毕竟是通过程序来抓取网页,与普通浏览者 的特性区别还是很大的,例如普通浏览者访问一个网页,必定会连续抓取网页的HTML文件、CSS文件、JS文件和图片等一系列相关文件,而CC攻击者仅仅 只会抓取一个URL地址的文件,不会抓取其他类型的文件,其User Agent也大部分和普通浏览者不同,这就可以在服务器上很容易分辨出哪些访问者是CC攻击了,既然可以判断出攻击者的IP,那么预防措施就很简单,只需 要批量将这些IP屏蔽,即可达到防范CC攻击的目的。 最终,我花了半个小时写了一段小程序,运行之后自动屏蔽了数百个IP,网站才算正常,从而证明,防火墙对于CC攻击的防御并不有效,最有效的方法还是在服务器端通过程序自动屏蔽来预防。 看来CC攻击的门槛还真低啊,搞个几百个代理或者肉鸡就能攻击别人了,其成本非常低,但效果比较明显,如果攻击者流量巨大的话,通过耗费带宽资源的方式 都可以进行攻击。但是,CC攻击也有明显的技术缺陷,就是攻击者的IP并不是海量的,通常就是几百数千的级别,并且是真实访问了网站页面,这就使得网站可 以通过程序过滤的方式,轻松获取到这些攻击者IP,批量进行屏蔽,那么这种CC攻击就会得到预防。 对于站长来说,通过程序来过滤CC攻击门槛较高,要有一定的编程技术,因此还是建议使用第三方网站提供的预防CC的服务,目前主要的网站有:360网站卫士、百度加速乐、安全宝等。

龙生   11 Sep 2014
View Details

ASP.NET Application_Error错误日志写入

一个web项目开发已完成,测试也通过,但是,bug是测不完的,特别是在一个大的网络环境下。那么,我们就应该记录这些错误,然后改正。这里,我的出错管理页面是在global.asax里面的,利用里面的Application_Error函数。 Global.asax代码: <%@ Application Language="C#" %> <script runat="server">     void Application_Start(object sender, EventArgs e)      {         // 在应用程序启动时运行的代码     }          void Application_End(object sender, EventArgs e)      {         //  在应用程序关闭时运行的代码     }              void Application_Error(object sender, EventArgs e)      {          // 在出现未处理的错误时运行的代码        // 在出现未处理的错误时运行的代码                      Exception objErr = Server.GetLastError().GetBaseException();             string error = string.Empty;             string errortime = string.Empty;             string erroraddr = string.Empty;             string errorinfo = string.Empty;             string errorsource = string.Empty;             string errortrace = string.Empty;             error += "发生时间:" + System.DateTime.Now.ToString() + "<br>";             errortime = "发生时间:" + System.DateTime.Now.ToString();             error += "发生异常页: " + Request.Url.ToString() + "<br>";             erroraddr = […]

龙生   10 Sep 2014
View Details

Windows防火墙开启ping

今天被这么一个问题困扰:当我通过本机ping另一台在同一局域网内(即在同一网段)的计算机时,发现,如果防火墙开启的话,无论如何也ping不通。一旦关闭防火墙就可以ping通了。这是为什么呢?究竟该怎么设置呢?    原因是这样的,现在的计算机系统,出于安全考虑,在默认情况下是不允许外部主机对其进行ping测试的。但在一个安全的局域网环境中,Ping测试又是管理员进行网络测试所必须的。如何更改设置呢?XP系统和WIN7系统有所不同:   Windows XP:     Windows防火墙 --> 高级 --> ICMP --> 设置 --> 把“允许传入回显请求”前打上勾 --> 确定 --> 大功告成。    Windows 7:     Windows防火墙 --> 高级设置 --> 入站规则 --> 在列表里找到“文件和打印机共享(回显请求 – ICMPv4-In)” --> 右击选择启用规则,并在其属性里设置为‘允许连接’-->  确定 --> 大功告成。 from:http://blog.csdn.net/zltianhen/article/details/7802191

龙生   10 Sep 2014
View Details

windows server 2012 r2上网慢解决方案,2008无法intel-windows server 2012 r2 slower internet solutions

最近家里和办公室新装 Windows Server 2012 R2 数据中心版操作系统,仍然非常脑残的两个设计:脑残的开始菜单、脑残的Win+Space切换输入法。除此之外还可以接受,当然我已将脑残的开始通过Start8解决掉了,另外说个关于Win2012R2网速痛苦的经历。 最近发现不管是家里还是办公室,打开有些网站都非常的慢,准确说是响应非常的慢,输入网址驾车后要等甚至8秒才得到响应打开网页,并且还不是所有网 站都这样,部分(包括手里维护的几个网站),以为是服务器问题于是将网站服务器重装了系统,最后发现我真二,没解决问题后才发现是我电脑的问题,远程了其 它两台不是2012的系统打开流畅的很,百度一下才发现问题出在Windows上。我不是这方面的专家只好转原文如下,灰常感谢网友的文章。 Windows Server 2012/2012 R2 上网非常慢的解决办法(转载): 装了个windows server 2012玩玩,发现效果真心不错,尤其是对负载的处理上,很少听到风扇的呼呼声了。但发现一个问题,在办公室上网,打开网页,总是要等2-3秒才显示出页 面内容,但回家后就没有这种问题了。折腾一整天,各种修复,各种改,防火墙、驱动、组策略、MTU、TTL,各种不好使。 本想装一个Wireshark抓下包分析一下,但发现winpcap装不上,坑爹。我就在想,难道服务器系统就这原因?网上没找到任何解决办法,连提出这个问题的人都没看到。 还是得抓包分析,安装了个Microsoft Network Manager,微软自家的抓包工具,终于好使了。分析TCP数据包,发现在单位,每打开一个网页,都会先向目标发送好几个TCP ECN(显式拥塞通知)数据包,然后等到2-3秒后,再与目标3次握手建立TCP连接;但是在家却没有发送TCP ECN数据包。 原来Windows server 2012默认打开了ECN功能(貌似从Windows server 2008之后都默认打开),个人操作系统却没有打开,而办公室网络的确拥塞不小,造成了这种效果。好了,执行“netsh int tcp set global ecn=disable”命令后,果断OK了。 很明确了,只需要CMD执行以下命令,网速马上恢复,我和小伙伴们都惊呆了: netsh int tcp set global ecn=disable 果然奏效,开心…灰常感谢:(http://blog.sina.com.cn/s/blog_475d6daf0101bxtn.html)http://blog.sina.com.cn/s/blog_475d6daf0101bxtn.html 关于这类命令及原理我也不是很清楚也不去深究了,以下还有类似网络流行的提高网速方法: 接收方缩放状态 : enabled 烟囱卸载状态 : automatic NetDMA 状态 : enabled 直接缓存访问(DCA) : enabled 接收窗口自动调谐级别 : normal 附加拥塞控制提供程序 : none ECN 功能 : disabled RFC 1323 时间戳 : enable 逐项输入命令: 接收方缩放状态:netsh int tcp set global rss=enabled 烟囱卸载状态 :netsh int tcp set global chimney=automatic NetDMA 状态:netsh int […]

龙生   10 Sep 2014
View Details
1 220 221 222 283