微博纪事一二

这两天在微博上看到两个观点,虽未必正确,但有参考性,记下来。

一个是@zhh-2009 的:“国内程序员太专注语言层面了,而毫不关注领域方面。”这对我这种关注了语言十年的人来说是当头一棒。回头想想这是个仁者见仁智者见智的问题,没有语言上的深入理解,领域方面的深入也是有限的,关注语言本身其实也是为了更好的实现领域吧,但基本思想是对的。

另一个是@老赵的:“java语言在语法上实现了泛型,而在底层JVM里却以Object的形式默默转型来处理,赵颉的想法是这是种先进的做法,这样使新语法开发的程序也可以在旧版本的jvm上运行。”兼容性很强。而在.NET里,往往认为在CLR里实现对泛型的支持是种优势,往往提出的理由就是,类型安全,避免装箱拆箱。这个问题也是个仁者见仁智者见智的问题,呃,如果.NET也这么干,那对新版本的windows server和新版本的visual studio的销售是没有益处的,试想用VS2012编写的最新.NET 4.5的程序,还可以运行在windows server 2000上,鲍尔默得哭了。所以对于.NET,必须提供底层的更新以推动新的更适应的windows server版本的普及。至于类型安全,和类型转换是否影响效率,这个,是不是可以忽略不计?

Posted in 日记/随笔 | Leave a comment

C#之数据结构

LinkedList是用双向链表实现的;

ArrayList是用循环链表实现的;

List<T>是用数组实现的,内部的动态增删是通过数组实现的,当超过数组上限时,重新初始化新数组,再拷贝过去。

.NET平台定义的默认容量一般都是4,最大容量值为2146435071U,还不明白为什么会用这个数。

Posted in .NET | Leave a comment

Equals和==的异同

对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于 string 以外的引用类型,如果两个操作数引用同一个对象,则== 返回 true。对于 string 类型,== 比较字符串的值。

Equals 的默认实现仅支持引用相等,但派生类可重写此方法以支持值相等。对于引用类型,相等定义为对象相等;即这些引用是否引用同一对象。对于值类型,相等定义为按位相等。ValueType 类支持值类型。

在调用 objA.Equals(objB) 前,此方法首先检查两个参数是否均为空引用。

自己概括就是:

  • Equals对值类型和引用类型都是比较值内容是否相等;
  • ==对值类型的作用和Equals一样,比较值内容是否相等,对引用类型比较对象是否引用的同一个对象。
  • string例外,string上的==按Equals处理了。

 

温故而知新。

Posted in .NET | Leave a comment

windows平台的redis

redis官方不发布windows版本,所以这些是第三方版本。

第一个:源代码:https://github.com/MSOpenTech/redis 可自行用VS编译

第二个:https://github.com/rgl/redis 已经编译为可安装文件,安装完后是service的。

其他:

一个C#的客户端:https://github.com/ServiceStack/ServiceStack.Redis

Posted in 数据库 | Leave a comment

如何防止网站被百度wap端自动转码

用手机上百度搜索时,点击进入后大部分都是百度自己的页面,内容被拿过来格式化显示,点击“原始网页”才能进入原始网站,这样有些内容的格式会被破坏,并不是好事。好多网站为了防止这个,甚至做了验证码,近日查询到百度有一些规则来拒绝转码。

Continue reading

Posted in WEB | Tagged | Leave a comment

发个Smarthosts windows更新程序

刚看到“SmartHosts是一个托管在谷歌代码上的项目,您可以轻松利用本项目使用到一份稳定的Hosts文件。这份Hosts文件可以帮助您顺利打开一些网站,提高某些国外服务的打开或下载速度。”

其实就是个不断更新免被墙的hosts列表。

即学即用,用python写三行代码。使用前请备份自己的hosts文件免得被覆盖掉。
运行一次smarthosts.exe,就更新一次,点击下面下载。

Posted in 日记/随笔 | Tagged , | 4 Comments