Sign in or Join FriendFeed
FriendFeed is the easiest way to share online. Learn more »
@feng

@feng

@Java @Ruby @Php @Ajax @Linux @Flex @Web2.0 @Opensource @Coder
JXL(JExcleApi)Excle详细使用心得
摘要: 功能:写入/读取Excle,设置打印样式排版,锁定列与行,设置打印标题,给Excle加密。java报表JXL和POI打印设置  =======================================   引用来自互联网  start =============================================== JXL的打印设置在j...  阅读全文 Solitary 2011-11-18 14:04 发表评论 - @feng
hibernate,spring管理事务中(transaction,JDBC connection,Hibernate Session的使用研究)(一)
如果单独使用hibernate可参考上一篇文章http://www.blogjava.net/freeman... 首先hibernate的Connection release mode有以下几种: 1 after_statement 2 after_transaction 3 on_close 其中after_statement 用在jta中 ,on_close 是3.1之前遗留的(也许是为spring留的-_-),也就是3.1之前默认是on_close ,但3.1之后默认如果单独使用hibernate是after_transaction,如果有第三方事务管理,就用第三方提供的默认值,spring就是默认使用了on_close。 在spring管理事务中我们看看系统启动后默认使用的配置: 1,ransaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory使用spring事务策略 2,hibernate内部 Automatic session close at end of transaction: disabled 因为已经交给spring了 3 Connection release mode: auto 默认,也就是没有配置hibernate.connection.release_mode的时候,但是这里有地方需要注意:也就是前面提到的使用第三方策略时的问题:看一下代码: String releaseModeName = PropertiesHelper.getString( Environment.RELEASE_CONNECTIONS, properties, "auto" ); log.info( "Connection release mode: " + releaseModeName ); ConnectionReleaseMode releaseMode; if ( "auto".equals(releaseModeName) ) { releaseMode = transactionFactory.getDefaultReleaseMode(); } else { releaseMode... - @feng
show下我做的消息提醒的chrome插件,免费使用,呵呵(有效果图)
功能:显示来自Gmail, Hotmail, Yahoo Mail, Facebook, 新浪微博, 百度, 网易邮箱的未读邮件和未读消息数。并可以在提示框直接点击打开查看。  地址:https://chrome.google.com/webstor... 用于提高工作效率。  效果图:    深蓝色心情 2011-11-18 11:20 发表评论 - @feng
迅速行动,企业生存之本
经营了十多年的化妆品,公司由原先的几条枪发展到如今有上百员工的工厂,多年的经验告诉我,企业要想生存,要想发展,唯有行动迅速。 2006年, 我接了一个大单,当时由客户经理ken负责,本来一切都很顺利,可后面客户要改包装,我们的年轻客服小姐lisa因为太忙忘记和ken说,导致产品部门根本不知情,后来产品出来了,却不是客户要的,那次亏了两个月的利润。 从那以后我知道了信息沟通及时性的重要,还找到了我的高中同学,做软件的z。在z的解说和帮助下我明白了,在竞争如此激烈的环境下,信息化管理不仅重要,而且是不可或缺的企业发展根本。Z还告诉我上信息化应用系统(如OA、CRM)关键是要适用、稳定性要好,考虑的长远点还要能实现信息共享、系统兼容,并向我推荐了天翎软件,在其官网下载试用版本之后感觉确实很不错,经过深入了解发现: 天翎有很雄厚的技术实力,他们自己的开源版本OBPM,在世界著名的开源组织Sourceforge的30多万个开源项目中最高排名第27位,国内的No.1,系统的稳定性完全可以保证。 天翎myApps还可以根据企业的业务流程定制应用系统,在节省成本的同时更贴合需求,使运作更高效。随着我公司的发展壮大,部门和业务逐渐扩张,基于流程的跨部门合作越来越多,而市场上千篇一律的成品不一定适合我的业务流程。 最后,天翎内置很多系统接口,可以实现和主流应用系统的整合,并且在国内首个实现了和主流ERP的无缝整合。以后我公司想再上个ERP什么的也不用愁数据共享的问题了。 明白后我拍板就选它了,因为我深深地感觉到信息技术发展越来越快,企业要想发展,实现信息化管理是必然趋势,我必须迅速行动,登上信息化这列快车。 在利用天翎建立OA的时候,因为我目标明确再加上天翎强大的客户支持(免费上门培训、远程教程等)和天翎根据用户需要建立的特点,我的员工并没有出现像其他一些公司上应用系统出现抵触、排斥的情况,反而上手的非常快,并很快发现自己的日常工作和这个系统分不开了。 自从使用天翎建立了OA之后,不仅公司业绩每年提升更快,而且规范化的管理和流程节约了管理成本和生产成本,我都有点不敢相信了,原来天翎myApps平台能带来这么大得成效。 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件;... - @feng
OleCreateStaticFromData在不同环境的bug
使用ole方式往richedit里插入hbitmap,用到了OleCreateStaticFromData 在物理机跟虚拟机(vmware)中均正常,但是在远程桌面(remote destop)里执行失败,返回E_OUTOFMEMORY。 测试环境(正常) 物理机:win7 虚拟机:vmware + XPSP2/Win2003 测试环境(提示E_OUTOFMEMORY) 物理机:Win2003(Remote Destop) 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:44 发表评论 - @feng
ANT-build.xml命令详解
ANT build.xml 标签 1.<project>标签 (1) default表示默认的运行目标,这个属性是必须的。 (2) basedir表示项目的基准目录。 (3) name表示项目名。 (4) description表示项目的描述。 2.<target>标签 (1).name表示标明,这个属性是必须的。 (2).depends表示依赖的目标。 (3)if表示仅当属性设置时才执行。 (4)unless表示当属性没有设置时才执行。 (5)description表示项目的描述。 3.<mkdir>标签 该标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名,其代码如下: <mkdir dir=”${class.root}”/> 4.<jar>标签 该标签用来生成一个JAR文件,其属性如下。 (1) destfile表示JAR文件名。 (2) basedir表示被归档的文件名。 (3) includes表示别归档的文件模式。 (4) exchudes表示被排除的文件模式 5.<javac>标签 该标签用于编译一个或一组java文件,其属性如下。 (1).srcdir表示源程序的目录。 (2).destdir表示class文件的输出目录。 (3).include表示被编译的文件的模式。 (4).excludes表示被排除的文件的模式。 (5).classpath表示所使用的类路径。 (6).debug表示包含的调试信息。 (7).optimize表示是否使用优化。 (8).verbose 表示提供详细的输出信息。 (9).fileonerror表示当碰到错误就自动停止。 6.<java>标签 该标签用来执行编译生成的.class文件,其属性如下。 (1).classname 表示将执行的类名。 (2).jar表示包含该类的JAR文件名。 (3).classpath所表示用到的类路径。 (4).fork表示在一个新的虚拟机中运行该类。 (5).failonerror表示当出现错误时自动停止。 (6).output 表示输出文件。 (7).append表示追加或者覆盖默认文件。 7.<delete>标签 该标签用于删除一个文件或一组文件,去属性如下。 (1)/file表示要删除的文件。 (2).dir表示要删除的目录。... - @feng
java模板模式与策略模式示例
模板方法简介: 把一些公用的通用的内容抽出来,个性的变动的内容做为参数暴露出来,做为一个模板。在使用时只用传递不同的参数到此模板,便可以得到想要的数据结果,这就是设计模式中得模板方法模式。 下面是使用模板方法来设计dao层的代码示例: import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * 定义一个抽象的dao父类 * * @author wb_gaobingyin * */ abstract class BaseDao { /** * 这里把查询对象时的公用的地方抽出来了,做为查询单个对象的一个模板, * 具体的查询将在这个模板上开展,这种处理的方式就叫做模板方法。 * @param sql * @param args * @return */ public Object getObject(String sql, Object[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; Object obj = null; try { ps = conn.prepareStatement(sql); rs = ps.executeQuery(); for (int i = 0; i < args.length; i++) { ps.setObject(i + 1, args[i]);// 给sql中得参数赋值 } if (rs.next()) { obj = this.RowMapperMethod(rs);// 这个方法调用的时总会调用子类中实现的具体方法,进行不同的字段与属性的映射 } } catch (SQLException e) { e.printStackTrace(); } finally { // 释放数据库链接对象 } return obj; } public abstract Object RowMapperMethod(ResultSet rs) throws SQLException; } class UserDaoImpl... - @feng
FreyjaJdbcTemplate目前的几个问题
freyja发布了预览版:FreyjaJdbcTemplate预览版     有的属于工作量问题,思路有了等待完善。如查询缓存、维护缓存一致、提供更丰富的接口与支持、主键。 麻烦些的有延迟加载之类的。     没有思路的如:原生sql执行update/delete 如何维护缓存   到现在也无法想明白的如:事物   如果按照现在的做法唯一的问题是没办法满足事物隔离性。 如果严格实现事物就需要每次取得的实体都是独立的。需要每次都需要序列化、反序列化一次。是否有必要这样。   发生事物隔离性问题的情况仅仅是在对同一个对象修改同一个属性产生冲突。很棘手,我开始好奇那些不支持事物的应用都是哪些。还是说事物问题本身就是一个绊脚石? 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:42 发表评论 - @feng
数据库中的substring
摘要: 不同数据库中substring的差异 substring在不同数据库中存在差异,该函数用来求一个字符串的字串。该函数的使用频率很高。下面介绍在不同的数据库中该函数的使用方法与差异。 字符串:”2011-11-17”   0   1   2   3   ...  阅读全文 censhao 2011-11-18 00:41 发表评论 - @feng
走在自动化测试的道路上(三) - 我们应该怎么做?
因为入手自动化测试时间有限,在这里记录下近期的想法与实践,如有思想碰撞,请多多指教. 我们在上一篇已经探讨了我们要做哪些事? 这里就我个人最近的感悟,把我们最容易忽略的东西提出来.并且尝试探计一种高效的自动化模式. 以下几点是我这里引出怎么做自动化的几个关键点: 引用 极强的定制性使得引入自动化成为难事 预言性的需求设计使得自动化需求变化极快,同时要求开发周期越短越好 软件流程往往成为自动化道路中的拌脚石 根据以上几点与个人自身经历 拥抱开源社区 "HI,我们要做跨平台的web页面自动化,支持ie6,7,8,9",小李提出了自动化需求; "你好,升级平台多不胜举,我们需要尝试升级环境的自动化,怎么办?", 某部门做设备产口的项目经理说. "每次打新包手工验证这些功能,点QQ,点网页,点应用,费时死了,弄不好被测试经理打回来",某开发人员报怨. 一个考虑在哪个层面开展自动化的例子: 单元级自动化速度快,无须复杂的环境清理,无环境依赖,但缺乏真实用户场景(user-like-less) 功能级自动化速度慢,复杂的环境清理,环境依赖严重,具备完全的用户场景. 以上几个场景想必做我们开发行业的兄弟姐妹们经常遇到类似的场景,我们做自动化的当然要主动出击帮助解决问题.可是难题来了,各种复杂的应用,如何才能自动化? 而且,各公司的流程也各不一样,都有自己的特色,我们不能强加修改. 我想有两种方法可以实施: 1. 去购买自动化测试工具回来用 2. 自己研发 买工具固然可行,但经常遇到的问题正是自动化中的难事: 但以下场景... HI,这个工具产生的报告不适合我们!! 去找服务商定制 OH,no,这个工具无法对我们的这种控件处理!! 定制额外的工具 God,我们需要一个新的检查工具结合之前的工具!! 找服务商买吧 但自己研发? 成本太高,公司也不会轻易批准,除了微软这种超级帝国... 我们还有一种办法: 加入开源 目前有众多的开源工具供我们使用,我们正在使用: Ruby 一门让你编程funny与happy的语言,我们使用它做自动化脚本与框架的基础语言,其恐怖的开发效率让你害怕 Watir 十分优秀的web自动化测试框架,跨平台跨浏览器,我们用它结合其他框架做web相关操作. patron 一个模拟浏览器请求的工具,在更需要速度与稳定性时使用它代替watir Rails... - @feng
一个Java程序员应该掌握的10项技能
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。 2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、 HtmlConverter、jar、 java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。 3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。 4、API:Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括: ◆java.lang包下的80%以上的类的功能的灵活运用。 ◆java.util包下的80%以上的类的灵活运用,特别是集合类体系、正则表达式、zip、以及时间、随机数、属性、资源和Timer. ◆java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。 ◆java.math包下的100%的内容。 ◆java.net包下的60%以上的内容,对各个类的功能比较熟悉。 ◆java.text包下的60%以上的内容,特别是各种格式化类。 ◆熟练运用JDBC、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java. ◆AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。 ◆Swing的基本内容,和AWT的要求类似。 ◆XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。 5、测试:必须熟悉使用junit编写测试用例完成代码的自动测试。 6、管理:必须熟悉使用ant完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。 7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。 8、思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。... - @feng
日志框架(一)----- log4j使用
1.将log4j配置打包在jar之外并调用的方法 默认情况下,log4j会自动加载classloader下的log4j.properties或 log4j.xml文件。所以一般没有特殊要求,只需要将默认文件名的配置文件置于src目录下(web程序还可以放在WEB-INF下面)。 对于单机程序,打包后配置文件会同class一起打到jar中,不利于通过修改配置来改变日志记录方式。 我们可以在项目中建立文件夹conf来放置配置文件,然后程序启动时采用以下方式来告诉log4j配置文件的路径 //------程序初始化阶段---- //读取配置 String currentDir = System.getProperty("user.dir"); PropertyConfigurator.configure(currentDir+"/conf/log4j.properties"); //如果是xml配置 //DOMConfigurator.configure(currentDir+"/conf/log4j.xml"); //此外还可以调用configureAndWatch监听配置的变动并重新加载。 //-----log调用------- Log dbLog = LogFactory.getLog("dbLog"); if(dbLog.isErrorEnabled()){ // 先判断log级别再调用,减少不必要的代码执行。 dbLog.error("test db log"); } //-----程序结束阶段------ //关闭log 稍后文章中会介绍在某些场合关闭log的必要性。 LogManager.shutdown(); 注意这里涉及到如何判断程序和结束,对于桌面程序可以自己判断;对于web项目,可以建立一个ServletContextListener来添加初始化和结束代码。 另外,如果在web工程中使用spring,初始化配置可以使用spring提供的org.springframework.web.util.Log4jConfigListener。 web.xml中的相关配置内容如下: <context-param> <param-name>log4jConfigLocation</param-name>... - @feng
专注如激光 - 乔布斯传的一点点感想
500多页的书,我也是这几天刚看到完. 乔布斯是半个神,活的像人,这个毋用置疑. 从 麦金塔 到 皮克斯, 从NeXT 到 苹果, 他带领的创新能力举世无双. 然而我从中更多的看到了他的弱点, 引用 1. 表面不在乎的东西,实际上是宁可伤害他人可达到独占: 他的财富,他的苹果,以至于他的部分生活. 2. 大量离开的团队成员,其中不乏天才,也说明了他在某些方面对人的苛薄. 3. 他的妻儿生活的并不轻松. 重要的是, 专注,正如书中所言,像激光一样专注做事. 创新,创新革新整个社会,然而在我们社会,需要更有技巧的创新. 预言,朝我们预想的方向努力,正如某人所言,方向错了,你越努力,你越后退.而你不走,便失去了整个世界. 起初的麦金塔(Mac), 让他获得了1亿美元收益, 成为随后他创造神话的基础. 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:40 发表评论 - @feng
向往 yearn
年轻的我们总有一些追逐和向往 ­ 是这种力量带我们走到今天 ­ 有时迷茫有时彷徨 ­ 每天都在等待中徘徊每天都在努力中生活 ­ 一直寻找那种感觉 ­ 可以让我们忘掉昨天面对期待中的明天 ­ 你可知道在这温柔的笑容背后有多少辛酸 ­   从前的记忆总有一些空白和回忆 ­ 有时身不由已有时懦弱自卑 ­ 每次都在泪水中挣脱每次都想超越这一切 ­ 一直寻找那种感觉 ­ 可以让我们忘记回忆面对期待中的自已 ­ 你可知道就在这温柔的歌曲背后有多少忧伤­ 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:40 发表评论 - @feng
我经常上的网站总结
今天有空总结一下笔者经常上的网站,从中也可以看出中国互联网业的一些情况。 新闻类: www.sina.com 新浪网 www.qq.com 腾讯网 www.ifeng.com 凤凰网 科技类: tech.sina.com 新浪科技 tech.qq.com 腾讯科技 techweb.com.cn techweb www.ifanr.com 爱范儿 www.36kr.com 36氪 软件技术类: www.csdn.net www.iteye.com www.infoq.com/cn www.chinaunix.net www.unix-center.net www.itpub.net www.ibm.com www.w3school.com.cn 站长类和独立博客类网站: www.chinaz.com www.williamlong.info www.lusongsong.com www.muchangqing.com www.blogdq.com www.admin5.com www.devtutor.com www.cnzz.com 电子邮箱: www.gmail.com mail.163.com mail.qq.com 搜索引擎: www.baidu.com www.google.com sns网站: t.qq.com www.weibo.com www.renren.com www.kaixin001.com 视频类网站: www.youku.com www.qiyi.com tv.sohu.com 电子商务类网站: www.taobao.com www.vancl.com www.dangdang.com www.amazon.cn www.360buy.com www.newegg.com.cn www.51buy.com www.alipay.com www.ctrip.com www.qunar.com 银行类网站: www.icbc.com.cn www.pingan.com.cn 招聘类网站: www.chinahr.com www.51job.com www.zhaopin.com 暂时只相当这些领域的网站,可以从这些领域看到当前的互联网热点,这些网站大多数的alexa排名应该都在1000名以内。感叹互联网也是中国少有的充分竞争的行业。... - @feng
《Pro Oracle SQL》Chapter7 Advanced Grouping -- 7.3“New” GROUP BY Functionality
7.3“新”GROUP BY 功能 (page 197) At times, it’s necessary to write SQL that appears as unruly as the convoluted example in Listing 7-5 so that the desired output can be obtained. The need for writing such unwieldy SQL has become much less frequent due to the advanced functionality Oracle has included in SQL the past few years. Much of what will be covered in this chapter is not actually new; it has been available for quite some time. 很多时候,写出的像列表7-5中复杂例子那么难整的SQL是必要的,只有这样才能得到想要的输出。由于Oracle在过去几年引入的高级功能,写出这样难控制的 SQL已经变得很不常见了。在本章中所阐述的很多内容实际上也不是什么新鲜玩意;已经有效了很长时间了。 You can start exploring some of the advanced grouping functionality in the Oracle database by experimenting with the CUBE and ROLLUP extensions to GROUP BY, and the GROUPING function. It takes a little effort to get started, as the benefits of newer functionality are not always clear until you spend some time learning to use them. 你探索ORACLE数据库的高级分组功能,可从GROUP BY的CUBE和ROLLUP扩展,以及GROUPING函数开始。入门容易,但是新功能的优势只有在你发了很多时间学习使用它们才能体会。 CUBE... - @feng
误操作,导致git的ssh授权校验被覆盖
下午在做从跳板机到git服务器的配置时,在git服务器上操作授权校验文件时,cat文件做追加操作,结果敲的> ,然后回车就悲剧了,哎!瞬时石化了,悲剧了,备份也被我mv了..........       幸亏在另外一屏还有一些screen时的一些记录,无奈在screen中无法滚屏,赶紧拷贝,分析规律,幸亏还能找到每个人的pub key,我的神啊,赶紧执行脚本恢复吧!       如下: #!/bin/bash -x for file in `ls`: do name=`echo $file|sed -e 's/.pub//g'` content="command=\"gitosis-serve $name\",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " rsa=`cat $file` echo -e $content$rsa >>tmp done    将脚本cp到pub key所在目录执行即可! 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:39 发表评论 - @feng
linux 日志统计
cat access.log |awk '{print $1}'   |   uniq -c     解释:   cat将日志读入,传给awk,   awk读取每行的第一列($1).   awk -F "," '{print $1}' 按照字符逗号分割字符串。显示第一个。   uniq -c标志为相同的只输出一次,同时统计总数。   wc -l 统计总得行数   sort -n 由大到小进行排列。       回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:39 发表评论 - @feng
【个人随感】IT毕业生
话说在中国的最南边现在也算末秋,而远在北京想必已是寒冬。这一年,又有一群毕业生即将毕业,走向社会,尤其是那群IT的学生。 在学校里,无忧无虑的生活,晚上打机打到凌晨,早上才开始上床睡觉,白天趴在课堂上睡觉,交作业的时候故意跟班上厉害的人说临摹一下你的作业,然后看都没看就copy了一份,这富奢的生活,在这群IT毕业生上就即将要say goodbye了。 写这篇日志想跟各位分享一下IT毕业生的一些以后就业道路上可能会遇到的问题: (1)不怕没工作找,只怕找不到好工作。 IT行业,工作的职位很多,最主要的是明确好自己的职位和方向,这也是以后发展的基础,而且不比在大学里面,学的东西可以多而广,但企业不一样,尤其是大企业,他要你做的可能就只是其中很少的一部分,所以只要专而精。这样,我们就应该明确自己的专业,然后找到适合我们的工作,学到东西才是正道。 (2)职业规划的重要性 IT是一个青春饭,如果你不趁早想清楚,还是不要干IT,早点转行,可能你会面临低龄白发或者脱发的危险,而且IT的技术年龄很短,这对刚进入社会的毕业生尤其重要。 (3)选什么技术 IT行业,有很多可以选择的,就软件这块你都有很多,但万物都有相通的一点,所以注重基础才是最重要的,其实很多人说我们只要学那个最新的技术,出去就一定能够挣到钱,这点是错的,基础会影响你的发展,基础决定了你走的多远。 (4)工作的目的 可能很多IT毕业生觉得在公司里面能多挨一天算一天,有时候是为了过日子,但有时候我们可以学到很多我们感兴趣的技术,交到我们更多技术同行,而不仅仅是工作能让我们过得好一点,也能让我们更能体会到自己人生的价值,和实现自己价值观的问题。 (5)跳槽 跳槽这个话题,永远说不完,因为人们跳槽的目的,就那么几个,一个工薪,一个工作环境,一个发展前景,作为IT毕业生,我们更应该注重一点学习的机会,发展前景和工作环境其次,最后才是薪资的问题。当然有时候为了生计跳槽也没办法。 呵呵,发了一下个人的一些牢骚,希望大家能够共鸣,欢迎拍砖。 共同的事业,共同的斗争,可以使人们产生忍受一切的力量。 —— 奥斯特洛夫斯基 <script type="text/javascript"></script> 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替;... - @feng
自己经常上的Oracle官网的一些链接~~是啥自己点开看
http://www.oracle.com/pls... http://www.oracle.com/technet... http://www.oracle.com/technet... http://www.oracle.com/technet... http://www.oracle.com/pls... http://www.oracle.com/technet... 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:38 发表评论 - @feng
java学习笔记 之 流程控制
先说一下java中的关键字:他们表示一种数据类型或者一种结构,对java编译器来说具有特殊的意义。大体可以分为一下几类 1)访问控制 private protected public 2)类方法属性的修饰 abstract class static extend interface implement final native new strictfp synchronized transient volatile 3)程序控制语句 break continue return do while if else for swich case default instanceof 4)错误处理 try catch finally throw throws 5)包 import package 6)基本类型 boolean byte char short int long float double null true false 7)变量引用 super this void java保留字 const goto 保留字没有用到但是也不允许用户定义与其冲突的** 下面看流程语句 1、if(boolean){} else if(boolean){}else{} 2、swich(){case ...,case ...,default ...} 注意:1)swich括号内的值必须是 int short byte char 枚举 2)case 后面的值必须不相等,而且是常量 3)如果执行了语句没有执行break 还会执行后面的语句 切忌不要忘了break 4)无论default写在哪个位置他都是最后执行的 3、for循环次数固定 for (int j = 1; j < 10; j++) { System.out.print(j + "*" + i + "=" + i * j + "\t"); if (i == j) break; } System.out.println(); } 4、while循环次数未知 while(i<10){ int j=1; while (j<10) { System.out.print(j + "*" + i + "=" + i * j + "\t"); if (i == j)break; j++; } i++;... - @feng
数值分析(php实现)一:Lagrange插值
在学数值分析,试着用php实现下,有兴趣的朋友可以粘下来试试 Lagrange插值就是给出n个已知的点,用多项式函数拟合,求出拟合的函数,进而估算未知点函数值的一种插值过程 插值函数是f(x) = xigma(求和) lk*yk 本类实现了插值后显示函数图像的功能 <?php /* * Lagrange插值 * @wangbin * */ class Lagrange{ private $dot = array(); public function __construct($array){ $this->dot = $array; } /* * 计算lk * */ private function get_lk($x,$k){ $num = count($this->dot['x']); $omiga_xk = 1; $omiga_x = 1; for($i = 0;$i < $num;$i++){ if($i != $k){ $omiga_xk *= ($this->dot['x'][$k]-$this->dot['x'][$i]); $omiga_x *= ($x - $this->dot['x'][$i]); } } $lk = $omiga_x/$omiga_xk; return $lk; } public function get_y($x){ $num = count($this->dot['x']); $L = 0; for($k = 0;$k < $num;$k++){ $lk = $this->get_lk($x,$k); $L += ($this->dot['y'][$k]*$lk); } return $L; } public function draw(){ $img = imagecreate(500,500); imagecolorallocate($img,255,255,2); $num = count($this->dot['x']); $max = 0; for($i = 0;$i < $num;$i++) $max = $max < $this->dot['x'][$i] ? $this->dot['x'][$i]:$max; $r = 7;//点的半径 $step = 0.1;//步长 for($i = 0;$i <... - @feng
Java去除两个日期之间的周末,只算工作日(传递String对象)
@SuppressWarnings("deprecation") public int getDutyDays(String strStartDate,String strEndDate) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date startDate=null; Date endDate = null; try { startDate=df.parse(strStartDate); endDate = df.parse(strEndDate); } catch (ParseException e) { System.out.println("非法的日期格式,无法进行转换"); e.printStackTrace(); } int result = 0; while (startDate.compareTo(endDate) <= 0) { if (startDate.getDay() != 6 && startDate.getDay() != 0) result++; startDate.setDate(startDate.getDate() + 1); } return result; } 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:37 发表评论 - @feng
生命在于运动!
工作两年多,感觉体力是大不如以前。刚参加工作的时候,在电脑前坐一天也不觉得有多累,每天上下班踩自行车也是踩得飞快,没有累,有的只是刚参加工作的激情。当时很瘦,一个同事常对我说,一年之后,你肯定胖起来。现在两年过去了,我的体重有所增加,但是并没有胖起来,不过感觉身体素质下降很多,现在骑自行车有时也觉得累,一天下来觉得腰酸背痛累得很。        大部分IT工作者的工作是这样的:每天的工作都离不开电脑,在电脑前一坐就是一天,除了上洗手间不会起来。长时间盯着屏幕会造成视力下降,并且会引起颈椎疾病;长时间保持坐姿也会引起腰椎疾病。一开始只是会引起腰酸背痛,时间久了肯定要积劳成疾。为了自己的身体健康,平时应该多注意这方面的问题,上班时间每工作一个小时应该起来走动一下,活动一下颈椎和腰椎,同时眺望一下远方,缓解一下眼疲劳。做到这些并不能达到锻炼的目的,只是能够缓解一下久坐产生的疲劳。真正能达到锻炼效果的,还是需要运动。        生命在于运动!现在多数人都缺乏运动,缺少锻炼,并且久坐室内,这才导致现在亚健康人群越来越多。我以前也尝试过锻炼,用的是最简单最省钱的锻炼方式:跑步。不过,每次都坚持不到一周……也想过每天跑步上班,但是跑到公司肯定是浑身汗淋淋的,没地方洗澡肯定不行。想早起跑步吧,晚上又睡的晚,早上起不来,一般早上上班都是匆匆忙忙的,更别说有时间跑步了。究其根源,还是晚上熬太晚了,把什么事都留到晚上做。这就导致了恶性循环,晚上不想早睡,早上不想早起。现在想一想,与其熬夜伤身体,不如早睡早起,把事情放到早上做,这样精神好、效率高,还可以抽时间出去跑步,呼吸一下新鲜空气。岂不两全其美!        计划起来是好的,不过最重要的还是要坚持。不能坚持下去,一切都是空谈。所以近期目标就是:早睡早起!锻炼身体!为了自己的健康,为了将来老了之后不在病床上度过,一定要坚持到底!加油! 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:37 发表评论 - @feng
Java到Groovy初瞰
1. 用java初始化一个ArrayList,中间处理最后输出: import java.util.List; import java.util.ArrayList; class Erase { private List filterLongerThan(List strings, int length) { List result = new ArrayList(); for (int i = 0; i < strings.size(); i++) { String s = (String) strings.get(i); if (s.length() <= length) { result.add(s); } } return result; } public static void main(String[] args) { List names = new ArrayList(); names.add("Ted"); names.add("Fred"); names.add("Jed"); names.add("Ned"); System.out.println(names); Erase e = new Erase(); List shortNames = e.filterLongerThan(names, 3); System.out.println(shortNames.size()); for (int i = 0; i < shortNames.size(); i++) { String s = (String) shortNames.get(i); System.out.println(s); } } } 执行结果: [Ted, Fred, Jed, Ned] 3 Ted Jed Ned 2. 经过Groovy语法,处理分号,处理import包. 代码如下: class Erase { private List filterLongerThan(List strings, intlength) { List result = new ArrayList() for (String s in strings) { if (s.length() <= length) { result.add(s) } } return result }... - @feng
文件的保存
学习了一段面向对象的语言java,从画图板的基本功能的完成,到五子棋的初步实现。前几天的学习io的学习,了解复制的实现,是通过电脑本身的系统,只要调用其中的代码即可完成。但在其中学习的过程中出现了许多问题,在老师的指导下也解决些问题。 在复制时候,也要讲究时间,如果你用java.io.FileOutputStream or java.io.FileInputStream只能独个的输出和输入。对于大型的文件速度的不匹配会造成文件的掉失。而现在要解决的问题是怎样可以达成一个数据包. String path="C:\\Documents and Settings\\Administrator\\桌面\\画板保存"; // 创建文件输出流 FileOutputStream fos = new FileOutputStream(path); // 包装成可写基本数据类型的流 DataOutputStream dos = new DataOutputStream(fos); 也可以用java.io.BufferOutputStream or java.io.BufferOutputStream 也可以包装成可写基本数据类型的流,代码同上; 在使用DataOutputStream or DataOutputStream 时候再度直线的时候,如果你用写字符串的时候用 writeBytes ( String s)时候,会出现字节掉失,如果要解决这个问题,要怎么办了,因为我不知道字符串有多少个字符,这就要这样写,代码如下: //获得文件长度 int length=file.available(); System.out.println(length); //定义字节数组 byte[] bytefile=new byte[length]; //从输入流输入字节数 int i=file.read(bytefile); if(i==-1){ System.out.println("文件复制成功"); } 在弹出保存文件的对话框时候,有几个按钮,没有保存,而点击取消或退去会出现 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 则要搞一个判断,代码如下 if (command.equals("保存"))... - @feng
POI导出大量数据的简单解决方案(附源码)
说明:我的电脑 2.0CPU 2G内存 能够十秒钟导出 20W 条数据 ,12.8M的excel内容压缩后2.68M 我们知道在POI导出Excel时,数据量大了,很容易导致内存溢出。由于Excel 一个sheet允许的最大行数是65536这时我们想到分sheet进行导出;但是这种情况也不能解决内存溢出的问题。毕竟数据还是一次性在内存中进行保存的。这时我们想是不是可以导出多个excel呢?下面我就尝试着按照导出多个excel 首先:我们要确定数据量有多大,然后确定一个excel导出多少条数据,这样就可以确定导出的Excel的数量,于是我们就可以循环的导出excel并保存在任意的临时目录中。去这样如果内存不够的话虚拟机就会去进行回收已经保存的excel在内存中的空间。 假设我们我们已经成功的生成了多个excel,这时我们怎么把这N个excel文档传到客户端呢?其实一个一个的传也未尝不可,但是考虑那样对用户来说体验不够好,再次多个文件在网络上传输也比较慢。我们可以考虑对生成的几个文件进行压缩,然后传到客户端。 总结一下第一、分批次生成excel第二、压缩后到客户端 下面我把我的一个小实例贴上供大家参考 第一、Person.java 普通javabean package bean; /** * * @author QQ:三二8二4七6七六 * */ public class Person { private Integer id; private String name; private String address; private String tel; private Double money=0.0; public Double getMoney() { return money; } public void setMoney(Double money) { this.money = money; } public Person(Integer id, String name, String address, String tel,Double money) { super(); this.id = id; this.name = name; this.address = address; this.tel = tel; this.money=money; }... - @feng
谈谈EJB与JAVA BEAN的区别
Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 回顾历史的今天,历史就像生活的一面镜子; 以史为鉴,可以知兴衰;以史为镜,可以知兴替; 历史上的每一天,都是喜忧参半;可以了解历史的这一天发生的历史事件; 借古可以鉴今;历史是不能忘记的.要记住历史的每一天 更多精彩内容,尽在http://www.todayx.org censhao 2011-11-18 00:35 发表评论 - @feng
究竟是谁偷走我的内存
自从换了笔记本之后鸟枪换炮用上了4G的内存,觉得很爽,不过最近发现有点不正常,开机之后内存马上到了600多M,记得以前用XP的时候开机之后200~300M而已,看了一下右下角的状态栏,只启动了NOD32和SKYPE而已,任务管理器内Skype占了30M,Nod32占了40M,那也不至于到600多啊.一定有猫腻.或者是狗腻! 于是乎开启注册表,找到那几个Run,发现一切正常,问题大条了. 记得以前见过一个软件,名字叫Autoruns,似乎是很牛叉,放狗给我搜,不负所望找到了,还是英文版的,我喜欢,迫不及待赶紧解压缩开启,不看不知道,一看吓一跳.终于找到问题了.列表里明明白白地显示着: 360安全卫士占了6个进程(N久以前我就已经禁止他自动启动了) 格式工厂占用了10个进程 nero占用了14个进程 ppstream占了4个进程. 好家伙不让你们开机启动,结果你们跟我玩阴的,好吧,从今以后我记住你们了,找到这些项目左侧的对号然后把对号去掉,史上最流氓的问题来了,别的对号都能去掉,唯独360的不行,而且他还跟我叫嚣,说啥不能去掉,从注册表里删都不让,果然很是流氓,那好我找到你这个进程的sys文件直接用unlocker给你删除或改名总行了吧,于是乎我找,找到了,在c:\windows\system32\drivers里边呢,我unlock,不行,再来,还是不行.冷汗都流下来了.对了,我还有杀手锏,那就是万能的DOS,我安装一个mxdos,然后重新启动电脑,进入纯dos,嘿嘿,我dir,我ren,我del......后边很黄很暴力少儿不宜! 开机重启,嘿嘿对号去掉了.不过看到360这三个数字在列表里挺碍眼的,没关系,我在他头上点右键选Jump to entry,打开注册表了,我删.我重复此过程,我重新启动电脑,嘿嘿,世界好清静,列表很干净,内存很冷静,已经成了214M. 好吧,先冷静一下,上边我把这四个软件都给干掉了,以后用这些功能的时候咋办?没关系我有高招. 360删了后我用autoruns,自己杀! 格式工厂删了之后我用CoolEdit中文免安装版(而且是开源的) nero删了之后我用ImgBurn(而且是开源免费的,比Nero小了N倍不说,使用的时候超级好用,不管是vcd还是dvd来者不拒)... - @feng
总结了Struts1与Struts2的12点区别
1) 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类;Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的POJO类都可以用作Struts 2的Action。 2) 线程模式方面的对比:Struts 1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts 1 Action能做的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的;Struts 2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。 3) Servlet依赖方面的对比:Struts 1 Action依赖于Servlet API,因为Struts 1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts 2 Action不再依赖于Servlet API,从而允许Action脱离Web容器运行,从而降低了测试Action的难度。 当然,如果Action需要直接访问HttpServletRequest和HttpServletResponse参数,Struts 2 Action仍然可以访问它们。但是,大部分时候,Action都无需直接访问HttpServetRequest和HttpServletResponse,从而给开发者更多灵活的选择。 4) 可测性方面的对比:测试Struts 1 Action的一个主要问题是execute方法依赖于Servlet API,这使得Action的测试要依赖于Web容器。为了脱离Web容器测试Struts 1的Action,必须借助于第三方扩展:Struts TestCase,该扩展下包含了系列的Mock对象(模拟了HttpServetRequest和HttpServletResponse对象),从而可以脱离Web容器测试Struts 1的Action类。Struts 2... - @feng
Other ways to read this feed:Feed readerFacebook