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

Category Archives: Backend

查询一个ip上有多少个网站的方法

查询一个ip地址上面绑定了多少个域名,一般是不进行二级域名的查询的。 主要用途是: 1、租用主机前的查询,比如查询oversales的情况 2、针对某些感兴趣的网站进行查询,可以方便的查询出同一人的多个网站来 3、满足八卦心理 4、其它 目前可提供服务的包括: 1、myipneighbors,有认证码,无其它查询限制; 2、iwebtool,没注册的情况下,1小时可以查询5次; 3、whosonmyserver,无限制;使用的是discountedscripts的代码,也可以使用discountedscripts demos查询; 4、http://www.domaintools.com/reverse-ip/,有限制查询,可以给出数量和前三个域名; 5、ip-domain,连界面都是1是一致的,估计是用的同一程序或者是clone的; 6、webhosting info, 7、yougetsignal, 查询质量分析: 这些脚本都无法保证查询结果的完整性,即会有部分结果被遗漏。以本blog域名为例,以上查询的数字为: No. name numbers 1 myipneighbors 14 2 iwebtool 1 3 whosonmyserver 14 4 domaintools 22 5 ip-domain 14 6 webhosting 33 7 yougetsignal 14 此外,针对国内虚拟主机的查询,因国内IP数量有限,相对有效;针对国外虚拟主机,因技术、ip丰富等原因,查询的有效性相对不高,仅供参考。 from:http://www.cnblogs.com/top5/archive/2011/08/01/2124242.html

龙生   30 Sep 2014
View Details

最最常用的 100 个 Java 类

大部分的 Java 软件开发都会使用到各种不同的库。近日我们从一万个开源的 Java 项目中进行分析,从中提取出最常用的 Java 类,这些类有来自于 Java 的标准库,也有第三方库。每个类在同一个项目中只计数一次,下面的列表中显示前 100 名的类。 以下列表中按使用最多的类进行排序,第三个数值表示 10000 个项目里使用到该类的项目数,而完整的列表请看 here. java.util.ArrayList (6958) java.io.IOException (6866) java.util.List (6784) java.util.HashMap (5590) java.util.Map (5413) java.io.File (5097) java.io.InputStream (4234) java.util.Set (3915) java.util.Arrays (3884) java.util.Iterator (3856) java.util.Collections (3643) java.util.Date (3461) java.util.HashSet (3278) java.io.BufferedReader (3257) java.util.Collection (3192) java.net.URL (3168) java.io.FileInputStream (3044) java.io.InputStreamReader (3023) org.junit.Test (3008) java.io.FileOutputStream (2843) java.io.FileNotFoundException (2669) java.io.OutputStream (2563) java.util.regex.Pattern (2469) java.io.Serializable (2437) java.util.LinkedList (2372) java.text.SimpleDateFormat (2245) java.util.Properties (2190) java.util.Random (2171) java.lang.reflect.Method (2141) java.io.ByteArrayOutputStream (2112) java.util.regex.Matcher (2012) android.os.Bundle (2007) java.util.logging.Logger (1999) java.io.UnsupportedEncodingException (1968) org.junit.Before (1920) java.util.Comparator (1896) java.io.ByteArrayInputStream (1868) java.io.PrintWriter (1862) java.util.Calendar (1854) android.app.Activity (1843) java.net.MalformedURLException (1828) android.content.Context (1780) android.view.View (1731) java.util.Locale (1719) java.util.Enumeration (1709) java.util.Map.Entry (1705) java.io.FileWriter (1677) java.io.FileReader (1651) android.util.Log (1614) android.content.Intent (1601) java.lang.reflect.InvocationTargetException (1594) java.util.logging.Level (1557) java.lang.reflect.Field (1499) java.io.StringWriter (1499) android.widget.TextView (1442) java.util.LinkedHashMap (1409) java.io.Reader (1390) java.net.URI (1377) java.io.Writer (1339) java.text.ParseException (1318) junit.framework.TestCase (1318) java.io.OutputStreamWriter (1295) java.io.StringReader (1279) java.io.BufferedWriter (1265) java.util.Vector (1254) java.util.StringTokenizer (1251) java.text.DateFormat (1246) java.util.concurrent.TimeUnit (1237) java.io.BufferedInputStream (1235) java.util.TreeMap (1227) org.xml.sax.SAXException (1218) javax.servlet.http.HttpServletRequest (1175) java.io.PrintStream (1168) […]

龙生   30 Sep 2014
View Details

谈谈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
1 219 220 221 282