最近公司里面有个项目,用到了IBatis.想想一年之前自己当时做的项目用到的也是IBatis.NET.不同的是这次用到的是原始的java版本…
其实使用IBatis的时候,配置根据官方的文档,应该没什么太大的问题.如果是第一次用这个的话,最容易出现的两个问题是SQLMap的名字和类型转换.IBatis需要段SQL的ID都是唯一的.而且在初始化的时间还会去对整个sql-map-config种记录的sqlmap中的SQL进行处理.这个时候如果有sql语句写的有问题,像表名不存在的话,会导致IBatis出现异常的.
另外就是类型转换的事情.这个在官方文档里面有详细的介绍.IBatis并不是完全支持java或者.net的所有数据类型的…这里面就涉及到数据转换的问题了.记得当时的项目就在这上面吃了不少的亏…
在.NET平台下,事件的绑定可以说是不得不经常面对的一件事情.当然绝大多数时间,这些操作都是由VS自动完成的.这些操作一般会在初始化的时间完成.之后就不会在执行了..NET的强大之处就是,既可以很自动化,又可以让你完全掌控.事件的处理也是一样,可以自己编写这部分的代码.给所有控件的keydown事件做同样的操作.当然,实现这个也有很多种方法.不过,总有一种最简洁的.
Private Sub TabHandleEnter(ByRef controls As Control.ControlCollection)
For Each ctl As Control In controls
If ctl.GetType.Name.Equals("GroupBox") Or ctl.GetType.Name.Equals("Panel") Then
TabHandleEnter(ctl.Controls)
Else
AddHandler ctl.KeyDown,AddressOf EnterKeyDown
End If
Next
End Sub
这样就写一个EnterKeyDown,就可以处理所有的控件的keydown事件了.不过,这个函数有一个小问题,就是AddHandler ,C#里面绑定事件的操作符是+=.如果说这个操作符意味了什么的话啊,也就是你不能绑定两次,当然除非你有这方面的特别需求.你每执行一次.你绑定的函数在被激发的时间就会都走一次…所以,一定要确保绑定时间的时间,只被绑定一次.
最近进行的一个项目是VB.Net的,自己也是第一次接触这个东西.来日本之后接触的都是自己以前没有用过的,貌似以前自己只接触过C#,C++和MATLAB了.
前一个Java也就不提了,很恶心.这次还好是.net平台,而且开始之前照例看了段时间的msdn.一个平台下的东西,很多东西实现起来都差不多.只不过VB本来就很神奇,需要一段时间来适应.不过,今天忽然发现,自己虽然已经适应了VB.net,可是自己担当的部分也快差不多了…
本来开始的时间也是慢有激情的,:)可是总是有这样那样的问题困扰着你,资历,语言,环境,领导…慢慢的也就被磨平了…经过几次折腾之后,也就无所谓了.做好自己的就okay了.其他的,能帮就帮吧.:)
VB.net比较神奇,如果是我,选择了.net平台的话,我绝对会去使用C#的,虽然可能没有VB.net快速,不过,踏实得很!
前些天用到了反射,反射往简单了说就是和定于对象相反的一个过程.所以通过反射得到的就是一个对象,模块,程序集的类型了.就是这么简单的一个东西.不过,里来越是简单的东西,越是复杂.呵呵,就是?:这个三元运算符一样.下面是很简单的一个例子.
String strPar = "hello Word";
System.Type type = strPar.GetType();
System.Console.WriteLine(type);
那么会在什么时间用到这个很”简单”的东西呢?这样说吧,你知道一个对象的名称,却苦于无法让他出现在等号左边.这种情况一般就是一些控件,他们的名字很是类似.这样,把A.b=1;重复的写十遍肯定是没有任何意义的.
还有一种状况就是你想写一个泛型的时间,可能会出现很多种状况.这个时候,就可以利用反射,来确保每种类型都得到他应有的操作.
至于如何利用的语法,可以参考前些天做的一个小东西.不过vb.net和C#在这里有个小区别,控件名称之前多了”_”.dbug的时间可以进去看看,里面的确是这样.很无奈,不太清楚为什么要做成这样的效果.不过,注意下就好了.
昨天开始了新项目的coding,今天已经算是熟悉了,不过总是有种百废待兴的感觉.而且,这两天,boss一直在催上个项目的反省书,感觉很是郁闷,唉,日本人也是喜欢挺好听的,这个道理估计全世界都是一样的.
还有一个月奥运会就开始了,08年真得是很精彩.希望这种精彩结束语奥运吧.这样看来还算不错了,快结束了.
vb.net里面很多关键词和C#里面很不一样,不过还好了,那些接口都没有变.这样好多了,不然自己真得很郁闷.明天的任务是把那些重复的控件,搞成自己的小共通,虽然费些脑子,不过,后期维护就方便多了.
vb.net里面把null替换成nothing,生活中有些事情也是一样的,nothing is nothing,just nothing.没有什么原由.
最近一周可以说是挺无聊的,不过还是挺好的,这一周熟悉了一下vb.net,开始的时间,觉得自己既然会,C#和vb,那么vb.net应该难不倒那去.不过,过了两天,发现其实不是那样的,很多东西,还是很特别的.
没有两门语言是一样的,这两天把msdn上关于vb.net的东西瞅了下,挺大的帮助的,虽然时间很短,没有全部看完,下周估计还要努力一周.呵呵
有些时间,有些事情,不去管它.反而是最好的处理办法.呵呵,最近在公司有点不太顺心.不过,又有谁能够总是顺心呢?
因为下一个项目使用的是vb.net,而自己以前接触的主要是C#,C++这些.虽然大学期间学过vb.开始以为vb到vb.net不会很复杂,毕竟都是.net,而且有C#的基础.
不过在看了msdn两天之后,觉得vb.net的水很深,其中很多于C#迥然不同的东西,这些天主要就是熟悉这些不同的地方.感觉还行了,只是开始的时间有些不太适应.呵呵,C# vs VB.net 我宁愿选C#,VB.net微软做了太多太多,使用起来反而有点不适应了.
感觉msdn还是个好东西, 可以在上面学倒不少的东西.
C++,有点遥远了.上周因为烤鸭的诱惑,所以帮一个同事弄了个C++的小程序.很久没有碰C++了,感觉很生疏,再就是C++的编译器让我感觉很头痛,虽然有很多的选择,但是真正用起来的时间,总是有中不知所措的感觉.
C++和.net,java比较起来,可以说是简洁而不简单.自己对C++也只能说是入门而已,本来就有打算重新折腾下的.C++中的.h给人的印象还是很深刻的,只是定义..net里面的接口应该就是从这里得到的灵感.不过C++更彻底了一些.上帝的归上帝.
我觉得C++和.net还是比较适合我的,java经过现在的项目,稍微有些阴影了.后面一段时间还要来对应.不过可以没事利用这段时间折腾下C++.特别是那个Boost C++ Libraries.
ReSharp是VS的一个很好用的插件,通过这个可以对代码进行优化,更符合标准。但是ReSharp的内存占用太疯狂了。用ReSharp主要用的就是他的代码优化,和快速Nunit测试了。其他的一些功能都可以省略掉的。
其中最让人感觉郁闷的就是ReSharp的智能感应了。感觉还没有VS的好。所以我们还是返回VS的吧。具体的方法是:
启动VS2005 ReSharp->Options->General 取消智能感知
然后就是开启VS的只能感知了。
DateTime的ToString方法挺方便的,但是其中的格式字符串太多了,搜集了一下,
在这里记录一下。
d 月中的某一天。一位数的日期没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
dddd 周中某天的完整名称,在 DayNames 中定义。
M 月份数字。一位数的月份没有前导零。
MM 月份数字。一位数的月份有一个前导零。
MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
MMMM 月份的完整名称,在 MonthNames 中定义。
y 不包含纪元的年份。如果不包含纪元的年份小于 10,
则显示不具有前导零的年份。
yy 不包含纪元的年份。如果不包含纪元的年份小于 10,
则显示具有前导零的年份。
yyyy 包括纪元的四位数的年份。
gg 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,
则忽略该模式。
h 12 小时制的小时。一位数的小时数没有前导零。
hh 12 小时制的小时。一位数的小时数有前导零。
H 24 小时制的小时。一位数的小时数没有前导零。
HH 24 小时制的小时。一位数的小时数有前导零。
m 分钟。一位数的分钟数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
s 秒。一位数的秒数没有前导零。
ss 秒。一位数的秒数有一个前导零。
f 秒的小数精度为一位。其余数字被截断。
ff 秒的小数精度为两位。其余数字被截断。
fff 秒的小数精度为三位。其余数字被截断。
ffff 秒的小数精度为四位。其余数字被截断。
fffff 秒的小数精度为五位。其余数字被截断。
ffffff 秒的小数精度为六位。其余数字被截断。
fffffff 秒的小数精度为七位。其余数字被截断。
t 在 AMDesignator 或 PMDesignator 中定义的 AM/PM
指示项的第一个字符(如果存在)。
tt 在 AMDesignator 或 PMDesignator 中定义的 AM/PM 指示项。
z 时区偏移量(“+”或“-”后面仅跟小时)。
一位数的小时数没有前导零。
例如,太平洋标准时间是“-8”。
zz 时区偏移量(“+”或“-”后面仅跟小时)。
一位数的小时数有前导零。
例如,太平洋标准时间是“-08”。
zzz 完整时区偏移量(“+”或“-”后面跟有小时和分钟)。
一位数的小时数和分钟数有前导零。如,太平洋标准时间是“-08:00”。
: 在 TimeSeparator 中定义的默认时间分隔符。
/ 在 DateSeparator 中定义的默认日期分隔符。
% c 其中 c 是格式模式(如果单独使用)。
如果格式模式与原义字符或其他格式模式合并,则可以省略“%”字
符。
\ c 其中 c 是任意字符。照原义显示字符。若要显示反斜杠字符,
请使用“\\”。