10月18
现在的博主们,要想在在自己的博客投放广告,可能没有以前那么容易了。网上很多的帖子说申请GG的广告如何如何的容易,但是,实际情况却是大相径庭。比如说我自己,已经申请了三次了,可是还没能通过。看来真的想有的网友说的,要有一级域名才可能通过了。我在网上找了一些博客,据说都能放置广告,就整理了一下,发布出来,有用到的试试吧
1、
站点名称:站长部落
站点地址:http://my.chinaz.com
简单介绍:站长部落采用oblog多用户系统,有几十个模板可供选择。注册有100积分,发一篇文章为5个积分,500积分(也就是说你发80篇文章)就可以绑定你的域名了。有什么好处呢?比如你有1元的CN域名,就可以绑定在这个域名上了!对于没有自己网站的网友来说,是相当超值的!(这个网站我可没实验,有需要的朋友自己进去看看。)
2、
站点名称: Blogger
站占地址: http://www.blogger.com/
简单介绍: google旗下的博客网站,非常容易申请GG广告,这对于一些想申请GG的朋友或申请多次背拒绝的朋友是相当的站点。(补充说明:但是,现在的gg的博客经过我实验,已经是不能申请了,据说被国内的网络流氓们屏蔽了。)
1、
站点名称:站长部落
站点地址:http://my.chinaz.com
简单介绍:站长部落采用oblog多用户系统,有几十个模板可供选择。注册有100积分,发一篇文章为5个积分,500积分(也就是说你发80篇文章)就可以绑定你的域名了。有什么好处呢?比如你有1元的CN域名,就可以绑定在这个域名上了!对于没有自己网站的网友来说,是相当超值的!(这个网站我可没实验,有需要的朋友自己进去看看。)
2、
站点名称: Blogger
站占地址: http://www.blogger.com/
简单介绍: google旗下的博客网站,非常容易申请GG广告,这对于一些想申请GG的朋友或申请多次背拒绝的朋友是相当的站点。(补充说明:但是,现在的gg的博客经过我实验,已经是不能申请了,据说被国内的网络流氓们屏蔽了。)
10月18
经常听到同行这样那样的抱怨"升职无望""薪水很抵""加班很晚""朋友太少",作为一个IT部门的技术人员,我也深有同感.看到那些做销售的、做行政的同事,不仅工作轻松,收入不低,而且升职的途径也多,而自己一直都很瞧不起这些人,甚至不愿与之为伍,一直在自己的技术王国中“遨游”,几年过去了书读了一堆又一堆,眼镜的度数也增加了不少,那些自己不屑一顾的人都成了某某部门的主管,每天过着吆五喝六的日子,而自己却依然和自己的技术为伴!慢慢的就会感觉到自己落伍了。心中不平、抱怨、渴望成功,却往往又无可奈何,这就是被边缘化的表现!
应该说被边缘化的表现有很多情形,并不仅仅只是上面的那几种表现。归纳一下,大概有这几种情况:
1.工作上没有成就感,总是原地踏步不前,几年以内升职基本无望;
2.生活中活动范围很小,时常感到孤单寂寞,朋友不多,交往不深;
3.人脉不好,大领导几乎不认识,小领导和自己不熟,没有任何政治资本。
对于那些被边缘化或者即将步入被边缘化群体的人员来说,解决办法又是什么呢?
我们知道销售人员的人际关系是非常广泛的,在一个关系型的社会里,他们通过各种关系推销产品、推销自己,因此他们更容易成功,很多公司的总裁都是推销员出身也充分的说明了这一点。他们最大的优点就是善于沟通,和顾客沟通、和上下级沟通。
IT技术人员避免被边缘化策略之一:多沟通,想方设法的和外面的世界沟通。通过沟通,让领导认识你、赏识你,让同事佩服你,让外界知道,了解你。
应该说被边缘化的表现有很多情形,并不仅仅只是上面的那几种表现。归纳一下,大概有这几种情况:
1.工作上没有成就感,总是原地踏步不前,几年以内升职基本无望;
2.生活中活动范围很小,时常感到孤单寂寞,朋友不多,交往不深;
3.人脉不好,大领导几乎不认识,小领导和自己不熟,没有任何政治资本。
对于那些被边缘化或者即将步入被边缘化群体的人员来说,解决办法又是什么呢?
我们知道销售人员的人际关系是非常广泛的,在一个关系型的社会里,他们通过各种关系推销产品、推销自己,因此他们更容易成功,很多公司的总裁都是推销员出身也充分的说明了这一点。他们最大的优点就是善于沟通,和顾客沟通、和上下级沟通。
IT技术人员避免被边缘化策略之一:多沟通,想方设法的和外面的世界沟通。通过沟通,让领导认识你、赏识你,让同事佩服你,让外界知道,了解你。
10月18
作为一名系统分析师,必须要明白系统分析的目标是什么,还有要明白系统分析的一般步骤是什么是十分必要的!系统分析的目标是理解并解决商业问题,当然啦,开源的项目也是这样,只是不是解决商业问题而已。
系统分析的一般步骤是:
(1)研究、理解商业问题;
(2)确定所要实现的项目的收益大于成本;
(3)收集所要解决问题的需求
(4)根据需求提供一系列的解决方案
(5)选择最合适的方案
(6)为选择的方案提供详细的细节
(7)实施方案
(8)监控并评估所实施的方案是否达到商业目标
系统分析的一般步骤是:
(1)研究、理解商业问题;
(2)确定所要实现的项目的收益大于成本;
(3)收集所要解决问题的需求
(4)根据需求提供一系列的解决方案
(5)选择最合适的方案
(6)为选择的方案提供详细的细节
(7)实施方案
(8)监控并评估所实施的方案是否达到商业目标
10月16
我们用eclipse + ADT作为android开发工具,可以说是很方便的,在HelloActivity小程序里我们就感觉到eclipse功能的强大。那么,我们可以用 eclipse来开发android源码吗?如果我们直接把android源码里一个工程导入eclipse,一般来说都会出现错误,说许多类库(包)找 不到。
今天找到关于怎样使用eclipse来开发android源码的官方文档:
https://sites.google.com/a/android.com/opensource/using-eclipse
从该文档和实践可以总结出几点:
1、可以使用eclipse来编辑JAVA程序、检查错误(主要是类库包含和语法方面),但是不能在eclipse上编译运行android源码,还是得在shell中make(或mm或mmm)
2、android源码文件夹里提供有一些eclipse配置文件,
.claapath:eclipse工程的配置文件,方便我们直接把android源码相应的文件和JAVA包导入工程
android-formatting.xml和android.importorder:这个很重要,主要是用来规范我们的编码风格,更容易使我们的代码风格一致
3、把android源码作为一个工程导入eclipse时,必须注意两点
1)、新建的工程必须是java project,不能是android project,否则会破坏android源码(一般是多添加文件/文件夹)
2)、导入前最好检查.classpath里的文件在android源码中是否有相应的文件(文件夹),否则也会破坏android源码(一般是多添加文件/文件夹)
总的来说:
1、用eclipse来编辑代码、检查错误
2、不在eclipse上编译、运行android源码程序,只能在命令行通过make(或mm或mmm)编译android源码
3、可以在eclipse上调试android源码程序(原理:eclipse通过ddms服务器在emulator上进行调试),并可以单步调试、断点调试。
今天找到关于怎样使用eclipse来开发android源码的官方文档:
https://sites.google.com/a/android.com/opensource/using-eclipse
从该文档和实践可以总结出几点:
1、可以使用eclipse来编辑JAVA程序、检查错误(主要是类库包含和语法方面),但是不能在eclipse上编译运行android源码,还是得在shell中make(或mm或mmm)
2、android源码文件夹里提供有一些eclipse配置文件,
.claapath:eclipse工程的配置文件,方便我们直接把android源码相应的文件和JAVA包导入工程
android-formatting.xml和android.importorder:这个很重要,主要是用来规范我们的编码风格,更容易使我们的代码风格一致
3、把android源码作为一个工程导入eclipse时,必须注意两点
1)、新建的工程必须是java project,不能是android project,否则会破坏android源码(一般是多添加文件/文件夹)
2)、导入前最好检查.classpath里的文件在android源码中是否有相应的文件(文件夹),否则也会破坏android源码(一般是多添加文件/文件夹)
总的来说:
1、用eclipse来编辑代码、检查错误
2、不在eclipse上编译、运行android源码程序,只能在命令行通过make(或mm或mmm)编译android源码
3、可以在eclipse上调试android源码程序(原理:eclipse通过ddms服务器在emulator上进行调试),并可以单步调试、断点调试。
10月16
目前有一个项目需要开发一个开机自启动的GTD应用程序来提醒用户的一些重要日程安排,对于这类应用,Android提供了一个BroadcastReceiver组件来对于应用程序的运行环境进行监听,并对于各种事件进行对应的处理。使用BroadcastReceiver十分简单,我们只需要在AndroidManifest.xml或者我们的代码中进行相应的注册(这也是Android开发的两种方式)。这样之后在广播事件到来时,我们就能通过重写BroadcastReceiver的onReceive()方法来执行相应的操作。
下面简单来演示如何开发开机自启动应用。
1.建立一个名为Boot的Android应用。
2.简单实现BootActivity的应用界面,在此实现了一个TextView的实例来开机后显示一句话内容。
TextView textView=new TextView(this);
textView.setText("这是一个开机自启动应用程序");
setContentView(textView);
3.创建一个BootBroadcastReveiver的类,实现了抽象类BroadcastReceiver。以下是整个代码。
下面简单来演示如何开发开机自启动应用。
1.建立一个名为Boot的Android应用。
2.简单实现BootActivity的应用界面,在此实现了一个TextView的实例来开机后显示一句话内容。
TextView textView=new TextView(this);
textView.setText("这是一个开机自启动应用程序");
setContentView(textView);
3.创建一个BootBroadcastReveiver的类,实现了抽象类BroadcastReceiver。以下是整个代码。
10月15
最近Heck参考了网络上很多关于WIN2003的安全设置,综合了这些文章整理而成。
一、系统的安装
1、按照Windows2003安装光盘的提示安装,默认情况下2003没有把IIS6.0安装在系统里面。
2、IIS6.0的安装
开始菜单—>控制面板—>添加或删除程序—>添加/删除Windows组件
应用程序 ———ASP.NET(可选)
|——启用网络 COM+ 访问(必选)
|——Internet 信息服务(IIS)———Internet 信息服务管理器(必选)
|——公用文件(必选)
|——万维网服务——— Active Server pages(必选)
|——Internet 数据连接器(可选)
|——WebDAV 发布(可选)
|——万维网服务(必选)
|——在服务器端的包含文件(可选)
然后点击确定—>下一步安装。
3、系统补丁的更新:点击开始菜单—>所有程序— >Windows Update 按照提示进行补丁的安装。
4、备份系统:用GHOST备份系统。
一、系统的安装
1、按照Windows2003安装光盘的提示安装,默认情况下2003没有把IIS6.0安装在系统里面。
2、IIS6.0的安装
开始菜单—>控制面板—>添加或删除程序—>添加/删除Windows组件
应用程序 ———ASP.NET(可选)
|——启用网络 COM+ 访问(必选)
|——Internet 信息服务(IIS)———Internet 信息服务管理器(必选)
|——公用文件(必选)
|——万维网服务——— Active Server pages(必选)
|——Internet 数据连接器(可选)
|——WebDAV 发布(可选)
|——万维网服务(必选)
|——在服务器端的包含文件(可选)
然后点击确定—>下一步安装。
3、系统补丁的更新:点击开始菜单—>所有程序— >Windows Update 按照提示进行补丁的安装。
4、备份系统:用GHOST备份系统。
10月15
一、建议的连接池配置方法:
Tomcat 6 配置 Oracle XE数据库连接池
搞了我差不多6个小时,终于把连接池配起来了。快点写下来,免得以后忘了,呵呵。其实也就3步而已。
1、把相关的jar文件复制到tomcat/lib目录中。
主要就是jdbc/lib下的jar包,还有LIB下的jar包。
2、修改工程目录的WebRoot/WEB-INF/web.xml文件,加入下面的配置:
Tomcat 6 配置 Oracle XE数据库连接池
搞了我差不多6个小时,终于把连接池配起来了。快点写下来,免得以后忘了,呵呵。其实也就3步而已。
1、把相关的jar文件复制到tomcat/lib目录中。
主要就是jdbc/lib下的jar包,还有LIB下的jar包。
2、修改工程目录的WebRoot/WEB-INF/web.xml文件,加入下面的配置:
10月15
最近Heck被这个Session.find()的方法困扰了好几天,今天才看到新的Hibernate里没有了Session.find()方法。
现在转载在此,方便大家。
查询性能往往是系统性能表现的一个重要方面,查询机制的优劣很大程度上决定了系统的整体性能。这个领域往往也存在最大的性能调整空间。
hibernate2中Session.find()对应于3中的session.createQuery().list();
hibernate2中Session.iterate()对应于3中的session.createQuery().iterate();
find和iterate区别:
find方法通过一条Select SQL实现了查询操作,而iterate方法要执行多条Select SQL.
iterate第一次查询获取所有符合条件的记录的id,然后再根据各个id从库表中读取对应的记录,这是一个典型的N+1次的查询问题,如果符合条件记录有10000条,就需要执行10001条Select SQL,可想性能会如何的差。
那为什么要提供iterator方法,而不只是提供高效率的find方法?
原因1.与hibernate缓存机制密切相关
find方法实际上是无法利用缓存的,它对缓存只写不读。
find方法只执行一次SQL查询,它无法判断缓存中什么样的数据是符合条件的,也无法保证查询结果的完整性。而iterate方法,会首先查询所有符合条件记录的id,然后根据id去缓存中找,如果缓存中有该id,就返回,没有可以根据id再去数据库查询。
String hql = "from TUser where age > ?";
List userList = session.find(hql, new Integer(18), Hibernate.INTEGER);
Iterator it = session.iterate(hql, new Integer(18), Hibernate.INTEGER);
顺序执行,iterate方法只会执行一次SQL查询,就是查找id,然后根据id就可以从缓存中获得数据。
现在转载在此,方便大家。
查询性能往往是系统性能表现的一个重要方面,查询机制的优劣很大程度上决定了系统的整体性能。这个领域往往也存在最大的性能调整空间。
hibernate2中Session.find()对应于3中的session.createQuery().list();
hibernate2中Session.iterate()对应于3中的session.createQuery().iterate();
find和iterate区别:
find方法通过一条Select SQL实现了查询操作,而iterate方法要执行多条Select SQL.
iterate第一次查询获取所有符合条件的记录的id,然后再根据各个id从库表中读取对应的记录,这是一个典型的N+1次的查询问题,如果符合条件记录有10000条,就需要执行10001条Select SQL,可想性能会如何的差。
那为什么要提供iterator方法,而不只是提供高效率的find方法?
原因1.与hibernate缓存机制密切相关
find方法实际上是无法利用缓存的,它对缓存只写不读。
find方法只执行一次SQL查询,它无法判断缓存中什么样的数据是符合条件的,也无法保证查询结果的完整性。而iterate方法,会首先查询所有符合条件记录的id,然后根据id去缓存中找,如果缓存中有该id,就返回,没有可以根据id再去数据库查询。
String hql = "from TUser where age > ?";
List userList = session.find(hql, new Integer(18), Hibernate.INTEGER);
Iterator it = session.iterate(hql, new Integer(18), Hibernate.INTEGER);
顺序执行,iterate方法只会执行一次SQL查询,就是查找id,然后根据id就可以从缓存中获得数据。
10月15
用一个配置文件,一个类去映射多个表,(每个表的结构相同)。按照平时的做法,有多少个表就要
写多少个配置文件,岂不是很麻烦。怎样才能只写一个配置文件就能达到上述目的呢?
经过研究,发现Hibernate中的NamingStrategy可以达到这个目的。它是用来定义表名和列名映射规
则的一个接口。我们要通过实现这个接口来实现自己的命名策略。这个接口中包含的十个方法,其中的
public String classToTableName(String className)是通过类名来映射表名的。实现我们的想法就要用
到这个方法。好了,下面来看怎么做:
1、自定义一个类MyNamingStrategy来实现NamingStrategy。(这样你要实现10个方法,如果其他方法
不需要,我们可以通过继承它的一个适配器类DefaultNamingStrategy来只实现我们需要的方法)好了,我
们就继承DefaultNamingStrategy 吧。
2、实现public String classToTableName(String className)方法来实现自己命名策略。
例如业务需要是每隔一个月就要换一个表。比如1月用biz_1,那么2月就用biz_2....但是这些表的结构是相同的。我们要做的就是通过获得月份来动态的选择表。我们从这个方法中这样写:
public class MyNamingStrategy extends DefaultNamingStrategy {
public static final MyNamingStrategy INSTANCE = new MyNamingStrategy();
public String classToTableName(String className) {
return "biz_" + Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
}
}
好了,这样就可以根据月份来动态的选择表名了。
写多少个配置文件,岂不是很麻烦。怎样才能只写一个配置文件就能达到上述目的呢?
经过研究,发现Hibernate中的NamingStrategy可以达到这个目的。它是用来定义表名和列名映射规
则的一个接口。我们要通过实现这个接口来实现自己的命名策略。这个接口中包含的十个方法,其中的
public String classToTableName(String className)是通过类名来映射表名的。实现我们的想法就要用
到这个方法。好了,下面来看怎么做:
1、自定义一个类MyNamingStrategy来实现NamingStrategy。(这样你要实现10个方法,如果其他方法
不需要,我们可以通过继承它的一个适配器类DefaultNamingStrategy来只实现我们需要的方法)好了,我
们就继承DefaultNamingStrategy 吧。
2、实现public String classToTableName(String className)方法来实现自己命名策略。
例如业务需要是每隔一个月就要换一个表。比如1月用biz_1,那么2月就用biz_2....但是这些表的结构是相同的。我们要做的就是通过获得月份来动态的选择表。我们从这个方法中这样写:
public class MyNamingStrategy extends DefaultNamingStrategy {
public static final MyNamingStrategy INSTANCE = new MyNamingStrategy();
public String classToTableName(String className) {
return "biz_" + Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
}
}
好了,这样就可以根据月份来动态的选择表名了。
10月15
这次我们来讨论一下Hibernate3.2 Session加载数据时get和load方法的区别,其实这个在网上有很多的论述,可大多语焉不详或经不起实践的推敲,让很多初学者学的满腹疑窦,现在我给大家讲解一下:
1. 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有就返回null。这个相对比较简单,也没有太大的争议。主要要说明的一点就是在这个版本中get方法也会查找二级缓存!
2. load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true),分情况讨论:
(1)若为true,则首先在Session缓存中查找,看看该id对应的对象是否存在,不存在则使用延迟加载,返回实体的代理类对象(该代理类为实体类的子类,由CGLIB动态生成)。等到具体使用该对象(除获取OID以外)的时候,再查询二级缓存和数据库,若仍没发现符合条件的记录,则会抛出一个ObjectNotFoundException。
(2)若为false,就跟get方法查找顺序一样,只是最终若没发现符合条件的记录,则会抛出一个ObjectNotFoundException。
1. 对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据库中没有就返回null。这个相对比较简单,也没有太大的争议。主要要说明的一点就是在这个版本中get方法也会查找二级缓存!
2. load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true),分情况讨论:
(1)若为true,则首先在Session缓存中查找,看看该id对应的对象是否存在,不存在则使用延迟加载,返回实体的代理类对象(该代理类为实体类的子类,由CGLIB动态生成)。等到具体使用该对象(除获取OID以外)的时候,再查询二级缓存和数据库,若仍没发现符合条件的记录,则会抛出一个ObjectNotFoundException。
(2)若为false,就跟get方法查找顺序一样,只是最终若没发现符合条件的记录,则会抛出一个ObjectNotFoundException。







