java语法糖有bug吗

真正牛逼的 Java 技术人员和一般的 Java 技术人员,有什么区别?
按投票排序
作为一个用Java写业务应用系统的程序员,前两天刚跟一个初学java的人聊过这个话题,总结一下搬过来。Android之类的没做过,不敢评论。掌握java库常用的类,如java.lang包下面的大部分类。以及行业内常见的类库的使用方法,SSH那一套,各种log工具包,apache commons,Guava等等具备快速掌握新的工具包的能力。例如同样有比较不错的编程经验,一个熟练使用SSH,另一个没有用过。那熟练使用SSH的人如果学习SpringMVC就会比另外一个人快得多。当用过的工具包越来越的时候,学习新工具的时间就会越来越短。这里面的差别主要在对编程思想、最佳实践这一类的东西的理解上。对不同的技术,尤其是新技术的特点有一定的敏感性,如log4j和logback放在眼前,应该能分辨出哪个更适合自己的项目。了解常用的包的实现思路。例如用Struts2开发一段时间的JavaWeb程序之后,头脑中就要形成“怎样实现Struts2“的大体思路,能想清楚大概要做几件事才算是开发出一个MVC框架。当然,距离具体实现出来还会有很大的差距,但这些差距应该体现在细节处理上,如对配置文件的解析。掌握设计模式、重构等基本与语言无关,但在Java世界中应用很广的编程思想。既然Java的比较广泛的用途是用来实现特定业务(我的工作范畴内,也许不具备普适性),那就导致了,同样一段业务逻辑可以用各种各样的代码逻辑实现,从而使大量的劣质程序也可以稳定支撑系统运行。很多Java程序员就毁在这日复一日的逻辑实现上了。从几千行的大流水代码到良好架构,这中间的差别要在日常工作中慢慢体会。掌握与人配合开发的能力。Java的一大优势就是可以支撑大量廉价程序员的协同开发,既然大部分人都是廉价的,那成果的核心价值就必然决定于处于关键点的一两个非廉价人员。如何能做这个非廉价人员,把各种廉价人员整合起来,隔离廉价人员写出的劣质程序的影响,这应该也是高级程序员的必备技能之一。===做Java程序员三年,基本上没受过正规流程的培训,总结出来的大多都是野路子,并且只适用于各种xx管理系统的开发。感觉这一类Java程序的特点就是,你也能写,大牛也能写,都能运行,谁都说不出好坏来,但是这段代码生存个三五个月之后,人家的东西就是好。上面写的都比较虚,当年在iteye上看到个狗血帖子,调侃着在每一条后面加了几句评论,贴过来,算是在体现具体代码级别的一点观点吧。无聊时候的灌水作品,语言比较混乱。粘过来排版就丢了,只能大概重排一下。粗体字是原文,其余的是我的评论校园级别的程序员的标志:代码中最多的是嵌套if(null == xxx),还要告诉你,null必须写在前面,我靠。防止把==写成=,c语言时代常犯的错误。由于null不能做左值,在写=的时候出现编译错误。一般来讲,在java中,由于boolean和其他类型不会作隐式转换,因此这么写没有意义。写着写着突然想起来这么个代码:Boolean b =if(b=null){}顺利编译通过,也许把null写在==的左侧还是有意义的。后台满是system.out.println("--------程序应该会运行到此处的。。。userId:")。调试程序过程中,如果想在控制台中打印什么东西,最好用log工具,如已经在多少年前就俗到家了的log4j。好处是:打印日志的语句和控制是否打印日志、控制怎样打印日志的语句是解耦的,可以在程序中随便写打印log的语句,然后在正式上线后,通过某个选项,令其全部失效。当年流行的组合是log4j+apache commons logging,在程序中引用commons logging的api,build path中放一个log4j的jar包然后再写个log4j的配置文件并且初始化一下,实际生效的就是log4j了。这样做的好处是,想换日志实现类的时候,不用修改程序代码。今年的流行款是logback+slf4j,对应上面那两个东西。logback的实现据说效率高了多少倍,不过除了非常关键的模块外,这点开销基本可以忽略不计。html页面总是对不起一两个div的线,老用firefox去框框显示那个div。搞前端的都是神,我到现在也对不齐那堆div。另提一句,bootstrap是良心作,好人一生平安。IO异常处理那个就是叠罗汉啊。异常处理是个技术活,我当年的思路是,根本不知道有非受控异常这件事,出现受控异常未处理的编译错误时,点开eclipse的自动处理选项,然后按照心情选一个。一点经验:数据库异常、io异常就直接上抛,如果框架非得搞成checked的话(譬如ibatis2.x),发现了就给封一层RuntimeException,一直抛到顶层让这个事务挂了就好了。然后客户会明确的知道这个程序sb了,怒不可遏的给维护打电话,然后维护远程ssh,重启数据库了事。如果项目经理稍稍良心一点的话,针对这种错误可以做的包括:1、打异常log,2、给客户一个明确的提示“系统挂掉了,请联系系统维护人员电话是13xxxxxxxxx”而不是显示一堆异常堆栈然后再让客户翻电话本。想写段代码自动处理这些异常的想法不是不能实现,但对于业务定制类的系统来说,代价太大。nullpointerexception、各种illegelxxxexception,其它各种开发人员懒得去学的异常,这些基本上都是程序的bug,开发测试阶段出现了就调整,打各种补丁,直至所有的测试流程都走通。实际运行阶段再出的话,类比上一条。在业务基本走通,正常流程都没问题了,而项目组又恰好有足够的时间投入在异常架构上,可以做下面的事:分析业务,找出需要处理的业务异常,如根据身份证号查出了两个完全不同的人等,定义处理这些异常的逻辑,定义项目级别的异常基类api,之后就可以从底层一层层的加各种if判断,抛出异常,再向上找到该处理异常的地方,写catch代码。最重要的就是在抛异常的时候,把所有有意义的信息都记录下来,比如上面说的身份证号的异常,起码要记录身份证号是什么、找出的两个人的主键,另外还可以记录操作时间、操作人等信息。只要在异常抛出的时候做到这一点,随便你决定在哪一层catch,哪怕只做个log,都会让维护人员、后续开发人员感谢你的良心。一般级别的程序员标志:会struts+spring+hibernate|mybatis,面试神器。曾经的观点:怎样用这些东西:找个文档读一点,都能学会。为什么要用这些东西:体现真正水平的问题。现在的观点:怎样用这些东西:做到随便给给技术,读读文档就能用上的,都是水平已经不错了的人。为什么要用这些东西:网上答案一搜一大把,需要分辨是直接拿的结论,还是真被某些雷炸过然后很良心的告诉你,struts2真操蛋。struts1、2、spring mvc这一层,用的并不多。由于没做过什么访问量特别高的项目,因此对struts2的效率并没有太多吐槽。现在的选择标准:1、是否提供了足够的语法糖让一般水平的人也能够快速开发 2、是否没有提供不恰当的语法糖,从而大幅度的增加维护难度。annotation、零配置这些东西,个人觉得最好用于元属性设置,而不要用于流程控制。曾经有个同事发现前台传进来的参数莫名其妙的会丢一个,后来发现在引用的某个jar包中有一个annotation方式定义的filter。尽管实际上的问题是架构组没有写完善的文档,没有做培训,但是经过那件事之后我也同意,这种东西放在一个统一的配置文件里面看着会更清楚一点,控制粒度也更细一点。当年实训初学spring就觉得这东西很蛋疼,迄今为止一直没遇到复杂度高到有大批量属性需要注入的地方。aop的应用场景倒是遇到几个,不过出于对庞大的spring以及配置文件膨胀的恐惧,我宁愿改变整个的框架,定一个抽象层然后用各种各样的strategy模式。倒是觉得有完善annotation支持的轻量级aop应该是个不错的选择。hibernate用的也不多,我好像对主流的s2sh有本能的抗拒……一直对sql的结构化有深深的执着,因为你真的不想没事总给别人调那一堆动辄五六行变量名很奇怪大小写都有的sql语句。所以在看到hibernate做某些复杂查询必须用hql的时候就放弃了这门技术了,sql本身就不想看,再发现这sql实际上是在java里面用String拼起来的……ibatis/Mybatis一系用的比较多的原因是,职业生涯用到的首套一站式框架的作者就用的这玩意儿,属于马屁股性质的事情。这东西的好处就是把sql和java代码分离开了,程序看起来比较干净。但是让每个模块的程序员都去决定要写哪些sql,怎样写,同样是个很可怕的事情。所以当年我定义了一套针对每张表的标准sql列表,几项最基本的CRUD操作。select操作只支持id查询和各个属性的and相等查询。这个基本上已经可以满足80%的需求了,剩下20%,定好了配置文件分割策略后,找个sql好点的人慢慢写就是了。另外,这东西的一大槽点是只支持假分页,我们的处理方式一般是忽悠客户买个内存大点的机器就得了,不具备这种忽悠机制的同行们请慎重选择,ibatis想解决这个问题需要hack jar包,mybatis也需要自己写个插件支持,大概有个半天到一天的工作量。再后来觉得配置文件有些繁琐,所以又在apache commons dbutils基础上封装了一套,不用写配置文件,定义好列名和属性名的映射关系后,自动生成CRUD操作并作db访问操作。在封装复杂的select操作时发现了nutz这个东西,觉得思路基本一致,就懒得再继续写了。nutz提供的dao工具实现了用比较结构化的方法拼sql语句,试了试,用着还不错。事务管理机制据说有槽点,没细看。决定我没有实际使用的槽点:1、不支持手动配置db和java的名称映射,而我给项目组定的映射规则又比较奇葩,给每个属性都写个annotation有点蛋疼。2、貌似是用反射方式直接读写java属性,而不是用java bean规范的get、set方法,而我的很多工具类都是做的虚拟属性,只有两个无比复杂的get/set方法,没有实际的属性。当发现annotation只能加在字段上时,欲哭无泪只好放弃了。现在项目中用着的还是mybatis,用官方提供的mybatis generator生成配置文件,单表操作支持得很完善,多表操作自己写sql解决。能分清楚group和having的区别。关于db另一个要说的问题:复杂的东西尽量别放sql里面。orm层提供基本操作就够了,剩下的逻辑交给java层表达。做好封装,实在有效率问题,再专门进行优化。好吧,我承认我不知道这哥俩到底有什么区别。数据库里的字段必须只能2个长度,不能32个长度,性能问题。表名要以T开头,蛋快碎了。长度问题没看懂要说什么。前两天遇到一个问题,在oracle中如果用char类型的,而实际内容又不正好等于char长度的时候,select出来的数据是带空格的……各种trim都感觉不太好使之后,果断varchar2了。反正这点效率差异,早就被各种奇葩的业务逻辑给抵消了,还是那句话,有问题的时候再优化。表名问题,我觉得加前缀还是为了跟视图进行区分。当表只有几张时,什么区分也不用做,当表有一百七十张时,什么区分都不管用。所以,战略上看需求决定就行了……一点经验:通通加T跟没加是一个效果。现在项目中的做法:数据库中大部分的表都是对应了一个业务实体,这些类直接写名字就行,在这些表上建的视图统一加一个V_前缀,也就能起到区分效果了。一般来讲,一百七十张表中至少有一百五十五张以上都是这种表。其他的表,则大多对应了某些特殊场景或算法,实际开发中一般由专门的核心人员负责,可以按照权限控制、事务控制等实际用途,加个什么前缀,谁负责哪个模块就关注哪个前缀就好了。会用jquery.ajax获取数据,不知道ajax的同步锁。我也不知道。对于一切锁,我的意见都是,上个最大粒度的,保证数据一致性。出现的所有问题具体分析,逐个减小锁的粒度。一会显示的表格有数据,一会又没数据啊,太生气了。遇到此类抱怨时:1、告诉他,工业界没有玄幻故事,2、再提同样的问题的话,辞了他。让这种人觉得自己还有混在程序员界的错觉是对他的不负责。详细记录当时的运行环境,一般都会找到原因的。骚年级别的程序员标志:懂div的float,clear的含义。1、上一套bootstrap,解决80%的问题。2、剩下20%的问题,找个跟你关系不错的前端,没事多请人家吃吃饭,然后就解决了。数据库超过n记录表横向纵向分表。问题在于,n等于几。高估n无所谓,反正要出现的问题肯定会出现。低估n的话,造成的进度损失会让你有自杀的冲动,造成的数据损失会让项目经理有杀了你的冲动。知道oracle的用with,这个sql写起来看起就舒服了。这个也不会,粗略google了一下,确实有点用途。看到aop能说一大堆废话,又是代理又是反射,就是没写过。你的错误在于,不知道用途就研究实现原理。DateUtil一定写过好多次,简直太复杂了,非常多的格式定义,那个static格式变量,必须要深刻理解才能知道。1、有句评价说的好:把一个工具包的几乎所有方法都写到标记过时,这是得有多仇视这个社会。2、自从有了JodaDate,妈妈再也不担心我的日期处理了。当一个同事又一次熬通宵写出一个DateUtil然后我拿出了JodaDate之后……砥柱级别的程序员标志:会架构程序,能用extjs或者easyui写个框架frame,还能写个递归menu。所有的知识点都很基础,但是能把这一切都完整写出来,完成debug之后让项目组用上,一段时间之后还能维护或者添加点新功能的,都是中流砥柱。说白了,这是个情商要求大于智商要求的活。业务系统定制开发,实际上都是这种类型的活。你并不需要有特别高深的技术,也不会突然面对多么巨大的困难,只会在一个个看似不起眼的bug中,把所有激情都消磨殆尽。会用ps处理图片,还能写上几个字,XXXX系统beta版本。会ps的都是神,不解释。基本上util包的作者,用log或者拦截器记录日志。并且,愿意跟一切动过你util包的人玩命。能用fiter或者Interceptor处理权限,但是搞不懂如何处理button的权限。在业务级别去掉button权限的需求就好了。真正的解决方案没有实际执行过,只是一个想法:系统建模的时候,权限模型直接建到操作级,比方说每个Action处理函数对应一个操作,针对这个操作定义每个角色的权限。button在概念上同样映射到权限就可以了。至于怎么针对函数做权限控制,随便你用xml或者annotation定义一下就行。明白了异常处理转换成RuntimeExcetion太好了,不会丢失而且好处理。异常处理真是个技术活。当我说,我也不知道我的方案好在哪,只是觉得你们的方式不优雅时,我清楚的听到了对方心里的嗤笑声。往往我的结论都会在大概三个模块开发周期之内被确认。page分页里代码和css样式和类class都在jsptag里,认为没法分啊,这个是典型。前端用于提交参数,目测所说的代码是计算page、rowperpage这些属性的。随便找套js grid控件,看看他们的参数提交方式,前端不依赖任何jsp,分到那个份上我觉得就足够了。小牛级别的程序员:知道url资源树和menu的区别。不明觉厉。这种概念性的东西其实挺多人都挺不重视的,曾经很反对这种不重视,但是重视了很多年还真没重视到什么收获。现在的观点就是,用到了再说。能手写css,懂important能拿来做啥,这个好玩得很。又是前端,上bootstrap吧能够理解数据库必须用主外键,否则那帮家伙一定会乱写程序。只要是实体类,必须有主键,并且一定要有物理主键,不能只依赖于逻辑主键。id这东西,找不到其他用途的话就简单的当个快速查询定位的工具就行。随着业务复杂度的增加,你会发现它的表现力越来越强。在大部分依赖于持久化的业务类系统中,可以简单的定义,有id就代表这东西存在,没id就代表不存在,顺着这条思路往下想,很多业务都会简化。只用id做外键,不要用神马身份证号、订单编号之类的东西。然后你的程序随便怎么写都能写得下去。会设计数据库模型,几百张表的小意思。针对真实世界,只作抽象,不作修改,保持整个系统概念上的一致性。然后你会发现,设计的模型会恰好符合数据库设计的各种准则。这时候这个数据库结构就能用了。如果你设计出一张自认为很有用的关系表,却起不出合适的名字来;或者数据库中有一个不是纯粹为了效率问题而设置的冗余字段,相信我,你终将遇到一个你的模型无法表现的业务需求。注释用//只有一行,不用/**多行,因为程序即注释。jdk标准注释都不用,那javadoc咋办?好吧,程序即注释这东西,几个水平相当、思路相近的人,通过不定期的结对编程、互相重构代码,还是可以做到的。如果是大规模的开发,还是建议通过架构层面合理的分层解决。知道struts模型驱动代替属性注入,方便太多事了。又一个语法糖。有了实际需求再用,到底用不用不要争论起来没完,遵循这两点就行了。这个真心不是核心问题。用过this做参数传递,哈好多人都没用见过。哈真神奇!这话真有人对我说过。技术上this就是个指向自身的引用。某些具体的场景确实用起来很有意思,高层面的意义还没太想清楚,只有一个模模糊糊的印象,大概就是做了一件把自身委托给其他对象的事,封装了某个参数传递的过程,也就是封装了自身和被委托类的关系。SE级别的程序员:研究过struts,hibernate的源代码,ui里有颜色互补概念,看起来是要舒服点啊。学源代码要跟写代码结合起来执行,学到了新的模式之后,多想想有什么应用场景,但是真的实际使用要慎重。譬如说看到struts2的层层wrapper模式后就用了一次,被喷了好长时间觉得struts,hibernate,spring,要扔掉一个框架,一定是spring,这个废啊。让我选的话,我扔hibernate。写过mvc,知道前端拦截器,中心分发器,后置处理,bean映射。要知道就算没有这些概念,代码层面也一定会实现mvc的全部功能。然后找到没有这些概念的代价,哪些东西就耦合了,哪些变更就应对不了了等等。最后你的水平就提高了。会用模型驱动user.save(),代替dao。少传一个参数,概念上优雅了一些。模型驱动太考验建模能力,一定要在一个范围内把所有问题想清楚再使用。建议把DDD那本书看个两三遍再说。不过这东西看上去真的很吸引人。能用metadata生成一堆乱七八杂的代码,这下爽多了。metadata的解释是“描述数据的数据”,比方说数据库的表结构定义可能就算是一种metadata。在写代码过程中能正确的抽象出元数据之后,眼光会提高一个层次,至于是不是要搞生成代码的工具,因项目而异。曾经用过一段时间的freemarker,写一些轻量级的代码生成工具还是挺好用的。研究过Annotation,用Annotation写过注解,知道Annotation如何继承,太复杂搞不懂。拿Annotation实现过一套Model工具,没有深入了解过ejb,可能有点entity bean的思路在里面把。前面说过一部分annotation了。这东西的好处就是把元数据跟java代码放到一起了,于是好找也好改了,坏处也是放在一起所以耦合了。如果代码量大到一定程度之后,最好把所有主力都集合到一块儿商量一下,到底是xml好还是annotation好。在代码量没大到一定程度,或者annotation配置的数据仅仅是annotation所在的类自己用的话,可以在开发效率上考虑一下这个问题。jdk提供了语言层面的annotation操作工具,使用简单,有一部分的编译期检查,写起来比xml要舒服。另外,个人认为annotation的语法不太适合定义层次太深的结构,在类前面写上四层annotation再用ide做个formatter,说实话挺愁人的。BOSS级别的程序员:仰慕一下。。。。以上经验建立在如下基础上:我做的项目是大部分是技术要求特别简单,业务要求中等复杂,需求变更特别频繁,开发人员平均素质不足,工期不是很紧的类型,所以关注点集中在如何通过分层隔离业务复杂度,以及如何通过语法糖来降低开发复杂度。bug方面,比较关注的是影响数据一致性的bug,只要不影响数据一致性,哪怕系统直接挂了,都不是影响项目的生死因素。在做技术方案的时候,比较倾向于:1、通过各种设计模式封装复杂度,提供尽量简单,甚至无脑开发的接口2、忽略一切效率问题,在业务打通之后再想优化的事3、能在编译器做的事就不往运行期放,哪怕会影响开发的灵活性
1.基础扎实,相对而言,某些语言的掌握可能并不深2.经验丰富(和年龄无关)3.动手能力强。打个比方,一人学习/使用java 2年,NB的人可能从没学过JAVA。但是遇到难题,他却能先解决掉。4.对计算机的热爱。非工作时观察下他们在看什么样网站,就能初步的判断出来。
真正牛逼的人,干什么都是牛逼的。所以牛逼的Java程序员和一般的Java程序员的区别仅仅是那些人本身比较牛逼而已
记得很久很久以前我就被邀请过一次,因为看到已经有很好的答案了,就点了下赞同,没有回答。不想过了这么久,又被邀请了……为了防止以后还被莫名其妙地邀请,我就写两句吧。首先,我要声明,我不喜欢牛逼这个词。原因有二:词汇中有错别字,正确的写法应该是牛屄。不喜欢用家畜的生殖器描述我尊敬的人。所以,请允许我在后面的叙述中,使用”有能力“一词代替。或许表现力不如原词突出,权当我对此类人表达的一种尊重吧。那么,真正有能力的技术人员和普通技术人员有什么区别呢?刚才也说过了,现有答案很多都很好,我也赞同了其中一些。我再多说就是重复、抄袭、赘述,没有任何意义。我谨在这里将我认为最核心的内容总结两句:真正有能力的技术人员是服务于非技术内容的。普通的技术人员是服务于技术内容的。咦?我是不是漏掉了什么?哦,对了,JAVA这个词。我不是漏掉了,我是故意隐去了。因为如果还拘泥于某个语言层面,恐怕难以冠以真正有能力这一称号。
没有本质的差别。楼主问这个问题,是想知道什么呢?是想知道自己如何努力成为NB的程序员?还是自己是老板,想知道如何评估一个程序员是否NB? 还是只是增加一些茶余饭后的话题?NB的程序员都是从普通的程序员努力而来,只不过由于某种原因,他能坚持学习下来,并没有在NB之前就止步。原因有很多种,有的人是认准一条路就坚持下来,有的人是莫名其妙的自信认定自己不平凡天生就是做程序员的料,有的人是被逼得走投无路只好埋头学习;但是很多人却是有一种共同的原因:环境,不是他自己很强,而是周围的人太弱了,所以周围的人会夸奖他;这时候他就很有信心,很自然的认定自己是一个天生的NB程序员(周围的人也都这么认为),从此就加倍努力。等到有一天发现自己其实并不是那么天生NB的时候,自己通过长期的努力已经让自己成为了一个有点NB的程序员了,这时候并不会觉得失望,反而就有更充足的信心继续努力下去。-------------------到了什么程度才算NB?---------------------------这个其实是问的别人的评价。想想你自己,什么时候觉得一个程序员很NB?不修边幅;沉默寡言;每天工作到深夜甚至凌晨;中午才来上班;藐视一切规则;经理都怕他,连老板都不敢惹他;你心中有一个这样的NB程序员,有木有?!其实这并不是NB的程序员,只是代表了内心深处叛逆的想法----想藐视规则,想跟老板吵架,想让别人不敢正视......其实这个问题应该是:-------------------往什么方向努力?-------------------------------这也是大多数同学所回答的问题。我补充一些和大家不同的东西。1.不要过于沉迷技术,要多考虑需要解决的问题,然后采用尽可能简单的技术去解决。高技术难道是你自己研究出来的,多半也只是抄来而已;能降低技术含量才是真本事。低技术含量,意味着低成本,高可靠性,别人容易看懂,容易维护2.注重沟通,多问问别人,至少得搞清楚真正的需求是什么3.不要宅在家里4.把握好自己的生活节奏,尽可能遵守常规的作息时间。年轻时候可能不觉得怎么样,其实熬夜很伤身体5.不要努力营造出别人心目中的神秘形象,那样不利于沟通
NB的程序员比较沉默小程序员爱叫唤:这个JVM太坑爹了,开源害死人了,Spring是不是有BUG啊,如此等等
你觉得你牛逼,你代码写的光辉灿烂,我就会去接手你的代码吗?不会的,除了我自己的代码,任何人的代码都是一坨翔,要不是为了工资,老子不愿意多看一眼。所以我反感别人提什么一般程序员,牛逼程序员。老子只看文档,看需求规格书,看概设详设,看个别核心的交互图和流程图。作为一个程序员,不应该忘本逐末去追求代码的华丽和规整,那东西有个屁用。如果你业务切割细腻,流程清晰,用一些设计工具生成的代码都比你的要华丽规整。还有就是设计模式,我觉得学是肯定要学的,但是学完就该把它忘了,千万别拿拿东西显摆再者java这方面,做web的比较多吧,把http研究清楚,学完这个,同行内就没人敢藐视你了再者学概念,而不要停留在语言上,network
filesystem
memory等等
学会用这个去概况你的知识
普通程序员在前面写代码,埋地雷。高手善后,排雷。
这个问题还邀请我这样的苦逼入门小学生...真是受宠若惊啊...我接触过的人都没多少,Java大牛就认识一个还没啥技术上的沟通...这问题我实在是说不上话啊....我的个人理解:能答出这个问题的都是牛B的Java程序员答不出来的是普通Java程序员我这样说了半天都是废话的是二逼程序员....
四个级别1. 知其然2. 知其所以然3. 知其为何所以然4. 创造其为之所以然
已有帐号?
无法登录?
社交帐号登录<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&随笔分类 - JAVA
摘要: 为什么要做batch处理 这个问题我就不解释了,因为我想你们肯定能比我解释的更好!如果你真的不知道,那就到Google上去搜索一下吧?Oracle回滚段 这个问题偶也不很明白,只是大概有个了解,如果你是这方面的专家,或者对这方面有比较深的理解,别忘了跟偶分享哦?在JDBC中如何做batch处理 JDBC提供了数据库batch处理的能力,在数据大批量操作(新增、删除等)的情况下可以大幅度提升系统的性能。我以前接触的一个项目,在没有采用batch处理时,删除5万条数据大概要半个小时左右,后来对系统进行改造,采用了batch处理的方式,删除5万条数据基本上不会超过1分钟。看一段JDBC代码:// .
Fskjb 阅读(1025) |
摘要: publicclassEx1{publicstaticvoidmain(String[]args){System.out.println(Ex1.getResult());}publicstaticintgetResult(){inta=100;try{returna+10;//注意,java的基础数据类型是值传递,这里的返回值已经和上面的a没有关系了}catch(Exceptione){e.printStackTrace();}finally{//最后再把值重定向到a(相当于将try中的返回值覆盖掉),所以输出还是100}}}再看一个例子:publicclassEx1{pub
Fskjb 阅读(2152) |
摘要: 通常,多线程之间需要协调工作。例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程downloadThread将该图片下载完毕。如果图片还没有下载完,displayThread可以暂停,当downloadThread完成了任务后,再通知displayThread“图片准备完毕,可以显示了”,这时,displayThread继续执行。 以上逻辑简单的说就是:如果条件不满足,则等待。当条件满足时,等待该条件的线程将被唤醒。在Java中,这个机制的实现依赖于wait/notify。等待机制与锁机制是密切关联的。例如: synchronized...
Fskjb 阅读(675) |
摘要: packageorg.gaoyoubo.importjava.sql.*;importjava.util.*;importjavax.servlet.jsp.jstl.sql.*;publicclassCommanDao{privateCprivateSprivateL//设置连接publicvoidsetCon(Connectioncon){this.con=}//设置sql语句;publicvoidsetSql(Stringsql){this.sql=}//设置sql语句参数;publicvoi
Fskjb 阅读(2213) |
摘要: 写在最前面:log4j是一个应用非常广泛的Java日志组件。我们可以方便的借助它将日志信息输出到控制台、文件、数据库等甚至可以通过扩展以流的方式输出到任何存储媒介中。本文要解决的问题:如何在log4j.properties文件中使用相对路径?缺省情况下我们只能在log4j.properties中配置绝对路径。这样以来,我们在系统部署、开放环境移植等环节就会带来很大的不便,需要将路径改来改去。因此,我们可以使用下面的办法来实现在log4j.properties中使用相对路径:1、实现一个Servlet/*** Log4J初始化* @author XiongChun* @since 2011-0.
Fskjb 阅读(2830) |
摘要: Log4j实在是很熟悉,几乎所有的Java项目都用它啊。但是我确一直没有搞明白。终于有一天我受不了了,定下心去看了一把文档,才两个小时,我终于搞明白了。一般情况下Log4j总是和Apache Commons-logging一起用的,我也就一起介绍吧。多了个东西不是更麻烦,而是更简单!在Log4J中存在几个概念首先介绍一下,最最重要的两个是Logger和Appender(请参考Log4J手册),其实是继承层次以及输出控制。首先Log4J中总是存在一个rootLogger,即使没有显示配置也是存在的,并且默认输出级别为DEBUG。其它的logger都继承自这个rootLogger(如果其他logg
Fskjb 阅读(8921) |
摘要: 代码Code highlighting produced by Actipro CodeHighlighter (freeware)/--&importjava.text.SimpleDateFimportjava.util.Dimportjava.util.LpublicclassTestSimpleDateFormate{publicstaticvoidmain(String[]args){SimpleDateFormatstm=newSimpleDateFormat("yyyy年MM月dd日HH时
Fskjb 阅读(571) |
摘要: 在没有设置环境变量之前,我们可以通过直接在应用程序中加带相关信息来运行我们的程序。比如,我们可以这样开始运行一个java程序:C:\jdk1.3.1\bin\java -jar C:\windows\desktop\myfiles\SimpleColorConverter.jar 这样肯定没有错误,每次我们不得不敲上java应用程序的全路径和class文件的全路径,我们写一次没问题,两次不觉得长,三次也不觉得累,可是如果我们每次都要重复的敲上这一堆路径的话,那真的将会是一场噩梦。那么,我们怎么做才能够减轻我们的输入量呢?一、简介: 环境变量是操作系统、应用程序、脚本程序等等的指明灯,能够告诉.
Fskjb 阅读(12864) |
摘要: 1.采用java.util.Scanner类采用Scannerd的next()方法读取,测试代码如下:view plaincopy to clipboardprint?Scannersc=newScanner(System.in);System.out.println("waitinginputchar:");Stringn=sc.next();System.out.println(n);当然记得...
Fskjb 阅读(3700) |
摘要: &?xml version="1.0" encoding="UTF-8"?&&!DOCTYPE struts-config PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN""http://jakarta.apache.org/struts/dtds/struts-config.dtd"&...
Fskjb 阅读(16751) |
摘要: 利用Struts同步令牌(Token)机制来解决Web应用中的重复提交问题。该方法的基本原理是:服务器端在处理到达的request之前,会将request中的Token值与保存在当前用户session中的令牌值进行比较,看是否匹配。在处理完该request后,且在response发送给客户端之前,将会产生一个新的Token,该Token除传给客户端以外,也会将用户session中保存的旧的Token进行替换。这样,如果用户会退到刚才的提交页面并再次提交的话,客户端传过来的Token值和服务器端的不一致,从而有效地防止了重复提交地发生。struts的Token机制实际上就是通过用户提交表单时,比
Fskjb 阅读(4176) |
摘要: 网上看到一个贴子:http://topic.csdn.net/u//d60f719a-c103-44b8-8d0c-bc1c818b768a.html觉得蛮有意思,在学习的工程中又引申出不少东西,真有趣!!定义在类中方法之外的内部类分为实例内部类和静态内部类.实例内部类自动持有外部类的实例的引用,即可以访问外部类的所有变量;静态内部类可以直接访问外部类的静态成员;定义在方法中...
Fskjb 阅读(221) |
摘要: 相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类。String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象,可变和不可变类这一对对象已经齐全...
Fskjb 阅读(94035) |
摘要: 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的&#8220; 锁 &#8221; ,即给我们选定的目标数据上锁,使其无法被其他...
Fskjb 阅读(934) |
摘要: 延迟初始化错误是运用Hibernate开发项目时最常见的错误。如果对一个类或者集合配置了延迟检索策略,那么必须当代理类实例或代理集合处于持久化状态(即处于Session范围内)时,才能初始化它。如果在游离状态时才初始化它,就会产生延迟初始化错误。 下面把Customer.hbm.xml文件的&class&元素的lazy属性设为true,表示使用延迟检索策略: &class nam...
Fskjb 阅读(1440) |
摘要: 首先我们的国际化资源文件中有user.not.found=用户不能找到,用户名称=[{0}] user.password.error=user.password.error第一种 声明式异常处理 为国际化配置文件中的每个key,设计一个异常。 用户登录验证,用户名错误抛出UserNotFoundException,密码错误抛出PasswordErrorException 代码 Code highl...
Fskjb 阅读(823) |
摘要: Filter介绍Filter可认为是Servlet的一种&#8220;变种&#8221;,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。Filt...
Fskjb 阅读(21406) |
摘要: session是依赖于cookies的,禁用cookies后session将丢失,解决的办法是使用response.encodeURL(url)方法。当cookies没有被禁用时URL还是原来的URL。当cookies被禁用后URL后面多带了一个jsessionid.[代码]//获取从客户端传递过来的sessionidreq.getRequestedSessionId();
Fskjb 阅读(882) |
摘要: 一.什么是cookies?   大家都知道,浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。 因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,因此人...
Fskjb 阅读(217) |
摘要: 最近看到BlogJava上有人在讨论为什么Java范型不支持数组http://www.blogjava.net/myqiao/archive//9580.html我想这个问题的答案是:因为这样做会破坏类型安全。核心的问题在于Java范型和C#范型存在根本区别:Java的范型停留在编译这一层,到了运行时,这些范型的信息其实是被抹掉的;而C#的范型做到了MSIL这一层。Java的做...
Fskjb 阅读(253) |
摘要: JDK 1.4提供了内建的正则表达式支持,相应的,String类也提供了许多与正则表达式有关的方法,例如matches、replaceAll和split方法,为日常应用提供了许多便利。在工作中,我发现,掌握一些不常用的技巧,往往可以极大地提高效率,以下是我总结的一点经验:1.合理利用embedded flag。某些时候,我们会遇到这样的情况:要求匹配一个字符串,例如abcdefg,其中abc必须为...
Fskjb 阅读(392) |
摘要: 分支条件    先看看这个表达式:\(?0\d{2}[) -]?\d{8}。  这个表达式可以匹配几种格式的电话号码,像(010),或022-,或等。我们对它进行一些分析:首先是一个转义字符\\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{...
Fskjb 阅读(5531) |
摘要: 如何增强你网站中地址的可读性和让搜索引擎快速的收录到你的站点,这就需要你美化你的网页的地址,也就是我们常说的Url重写技术,大家熟悉的可能有很多服务器都提供Url重写的技术,以前我们用的最多的就是Apache,Jboss这样一些服务器自带的一些Url重写,但是他们的配置比较麻烦,性能又不是太好,现在我们有专一的开源框架来完成Url重写任务,今天我要介绍的就是UrlRewriter。使用起来比较简单...
Fskjb 阅读(2954) |
摘要: 1、调用没有返回值和参数的JAVA方法1.1、dwr.xml的配置&dwr&&allow&&create creator="new" javascript="testClass" &&param name="class" value="com.dwr.TestClass" /&&include method="testMethod1"/&...
Fskjb 阅读(5028) |
摘要: *SessionFlush:*session flush方法主要做了两件事: 清理临时记录 执行sql*session在什么情况下执行flush 默认在事务提交时(commit) 显示的调用flush 在执行查询前,如:iteratehibernate按照save(insert),update、delete顺序提交相关操作 !!只要事务没有commit,就随时可以回滚 !!所有状态都适用:flus...
Fskjb 阅读(1660) |
摘要: 当查询数据时,人们往往需要设置查询条件。在SQL或HQL语句中,查询条件常常放在where子句中。此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询条件封装为一个Criteria对象。在实际应用中,使用Session的createCriteria()方法构建一个org.hibernate.Criteria实例,然后把具体的查询条件通过Criter...
Fskjb 阅读(14525) |
摘要: Hibernate Query Language(HQL)提供了十分强大的功能,推荐大家使用这种查询方式。HQL具有与SQL语言类似的语法规范,只不过SQL针对表中字段进行查询,而HQL针对持久化对象,它用来取得对象,而不进行update、delete和insert等操作。而且HQL是完全面向对象的,具备继承、多态和关联等特性。1.from子句from字句是最简单的HQL语句,例如 from St...
Fskjb 阅读(3502) |
摘要: Spring的Dao支持类:JdbcDaoSupport - JDBC数据访问对象的基类。 需要一个DataSource,同时为子类提供 JdbcTemplate。(已在前一篇文章中有介绍:使用Spring的jdbcTemplate进一步简化JDBC操作)HibernateDaoSupport - Hibernate数据访问对象的基类。 需要一个SessionFactory,同时为子类提供 Hib...
Fskjb 阅读(605) |
摘要: 摘要Spring 的事务管理是 Spring 框架中一个比较重要的知识点,该知识点本身并不复杂,只是由于其比较灵活,导致初学者很难把握。本教程从基础知识开始,详细分析了 Spring 事务管理的使用方法,为读者理清思路。先决条件本教程假定您已经掌握了 Java 基础知识,并对 Spring 有一定了解。您还需要具备基本的事务管理的知识,比如:事务的定义,隔离级别的概念,等等。本文将直接使用这些概念...
Fskjb 阅读(3198) |
摘要: 一个时序图胜过N多的文字解说,爽!!jsp+servlet实现MVC模式中,jsp只是简单的获得数据并显示而已,不再像model 1中混淆着业务逻辑。分工更明确,层次更分明了。
Fskjb 阅读(1291) |
摘要: 在做项目的时候每次都为每个POJO实体写一个对应的DAO很麻烦,虽然可以由IDE或者一些快速生成工具来生成,但是也难免需要更改。处于这个原因,个人写了一个通用的泛型DAO来封装一些最基本的操作,包括对实体的增删改查。基于Spring的hibernate模板实现,初学,如有什么不好的地方请大家多多拍砖! Java代码 /** * DAO操作基类 本DAO层实现了通用的数据操作 * * @author...
Fskjb 阅读(1775) |
摘要: 先建立一个Bean:[代码]Spring的配置文件如下:[代码]ps:内部bean(inner bean)是指在一个bean的&property/&或 &constructor-arg/&元素中使用&bean/&元素定义的bean。内部bean定义不需要有id或name属性,即使指定id 或 name属性值也将会被容器忽略。属性编辑器如下(实现java.bean...
Fskjb 阅读(881) |
摘要: 先看applicationContext.xml配置文件:[代码]在看SpringUtil类[代码]最后看DAO:[代码]细心你,会发现JdbcTemplate的实例中有一系列的方法如:queryForXXX,update,delete大大简化了JDBC操作。当然,还可以再进一步的优化一下,就是通过依赖注入,直接把jdbcTemplate注入到dao类的jdbcT字段。先看新的applicatio...
Fskjb 阅读(68085) |
摘要: 安装:  下载CKEDITOR的文件,解压后复制到工程的WEBROOT目录下就OK!引用CKEDITOR的JS文件:  新建JSP页面,添加其JS文件&script type="text/javascript" src="ckeditor/ckeditor.js"&&/script&  注意:1.src的路径。     2.不要写成&script type="text...
Fskjb 阅读(155630) |
摘要: JNDI访问数据库,我们要记住的是:通过JNDI查找数据源,然后通过数据源可以从连接池获取空闲的数据库连接,获得连接后就跟普通jdbc操作无疑了。而数据源是由web容器(Tomcat)提供的(当然数据源有不同的实现),不能直接在程序中NEW一个数据源对象,而需要JNDI(Java Naming and Directory Interface)技术来获得. javax.nameing.Context提供了查找JNDI资源的接口,例如通过以下代码获得名称为jdbc/books的数据源引用:Code highlighting produced by Actipro CodeHighligh...
Fskjb 阅读(1080) |
摘要: 很多人在初学Java的时候经常会被书中介绍的一堆环境变量的设置搞得头昏脑胀,很多书中都会在初装JDK的时候让他大家设置JAVA_HOME环境变量,在开发程序的时候设置CLASSPATH环境变量,而很多人并不理解这两个环境变量的作用,我们来分别进行详细的阐述。 首先是JAVA_HOME环境变量,我们先来掌握这个环境变量的设置内容,JAVA_HOME这个环境变量的设置内容是JDK的安装目录,比如说您的...
Fskjb 阅读(1242) |
摘要: [代码]有一点要说明的是为什么要把double转成BigDecimal呢,这是因为当金额达到到千万时,double的tostring方法会以科学计数法的形式表示,这时程序会因无法解析E而报错,而转换为BigDecimal再tostring方法就不会以科学计数法表示了。
Fskjb 阅读(225) |
摘要: 在程序中设置路径时会有系统依赖的问题,java.io.File类提供一个抽象的、与系统独立的路径表示。给它一个路径字符串,它会将其转换为与系统无关的抽象路径表示,这个路径可以指向一个文件、目录或是URI(Uniform Resource Identifier)。一个File的实例被建立时,它就不能再被改变内容。File实例除了用作一个文件或目录的抽象表示之外,它还提供了不少相关操作方法:可以用它来对文件系统作一些查询与设置的动作。要注意的是,不管是文件还是目录,在Java中都是以File的实例来表示。若要进行文件输出/输入操作,必须配合其他相关类来使用。先来点简单的:Code highligh
Fskjb 阅读(445) |
摘要: 说明:这里采用了struts版本为 struts-1.2.7 ,是在 struts-blank 的基础上演示的,为了以后的学习和参考用。一、 在对应的 Form Beans 中重载 validate 方法在 struts-config.xml 文件中, action 节点下有&#8220; validate &#8221;这样一个属性。在 struts 框架中,默认属性是 validate=&#8...
Fskjb 阅读(179) |
摘要: Greedy 数量词X?X,一次或一次也没有X*X,零次或多次X+X,一次或多次X{n}X,恰好 n 次X{n,}X,至少 n 次X{n,m}X,至少 n 次,但是不超过 m 次Reluctant 数量词X??X,一次或一次也没有X*?X,零次或多次X+?X,一次或多次X{n}?X,恰好 n 次X{n,}?X,至少 n 次X{n,m}?X,至少 n 次,但是不超过 m 次Possessive 数量...
Fskjb 阅读(501) |
摘要: Struts的国际化1.配置struts-config.xml文件:&message-resources parameter="res.MessageResources" /&以制定资源文件的路径其中的"res.MessageResources"就是我们自己在src目录下面创建的国际化配置文件的路径Res:目录名MessageResources:basename2.提供不同版本的国际化...
Fskjb 阅读(1276) |
摘要: 当表单中出现两个或以上的同名按钮时,可以通过LookupDispatchAction查询properties文件实现定位到不同方法的操作。本文以简单的加减乘除为例:一、编写properties文件[代码]二、编写jsp页面[代码]查看客户端源代码可得[代码]可见&html:submit property="meo"&中的property="meo"被转换为submit按钮的name="...
Fskjb 阅读(668) |
摘要: Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随...
Fskjb 阅读(122950) |
摘要: 通过定时器进行任务的执行是比较常见的情况,下面的是个简单的示例:主要借助于监听器和TimerTask和Timer类进行实现,另外spring提供了定时器的高级实现好像是quarts。Code highlighting produced by Actipro CodeHighlighter (freeware)/--&packagecom.rx.importjava.util.Dimportjava.util.TimerTpublicclassMyTaskextendsTimerTask{@Overri
Fskjb 阅读(8627) |
摘要: 在Java SE1.5中,增加了一个新的特性:泛型(日本语中的总称型)。何谓泛型呢?通俗的说,就是泛泛的指定对象所操作的类型,而不像常规方式一样使用某种固定的类型去指定。泛型的本质就是将所操作的数据类型参数化,也就是说,该数据类型被指定为一个参数。这种参数类型可以使用在类、接口以及方法定义中。一、为什么使用泛型呢? 在以往的J2SE中,没有泛型的情况下,通常是使用Object类型来进行多种类型数据...
Fskjb 阅读(5053) |
摘要: Spring能有效地组织J2EE应用各层的对象。不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都可在Spring的管理下有机地协调、运行。Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的具体实现,Service对象无须关心持久层对象的具体实现,各层对象的调用完全面向接口。当系统需要重构时,代码的改写量将大大减少...
Fskjb 阅读(463) |
摘要: xfire已经过时,了解一下就OK了,无需过于深究哦XFire是一种基于Servlet技术的SOA应用开发框架,需要Servlet容器的支持。XFire支持在多种Servlet容器中运行,包括Websphere、Weblogic、TOMCAT等XFire需要xalan项目的支持,然而1.2.6版本中并没有带有相应的jar文件,因此请访问xml.apache.org,下载xalan项目的二进制包创建并发布服务器端1.新建WEB SERVICES PORJECT(创建web服务)此时查看services.xml内容如下:Code highlighting produced by Actipro C
Fskjb 阅读(1702) |
摘要: JAX-WS(Java API for XML-Web Services)环境说明:MyEclpose 6.5 blue Milestone-1jdk 1.6.0_15tomcat 6.0创建并发布服务器端应用1.新建web service project。设置如下图。2.建立一个实现类,代码如下:Code highlighting produced by Actipro CodeHighlighter (freeware)/--&publicclassaddImpl{publicdoubleadd(dou
Fskjb 阅读(10538) |
摘要: 目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。ASCII 码使用指定的 7 位或 8 位二进制数组合来...
Fskjb 阅读(137) |
摘要: 双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。Java在java.math包中提供的类BigDecimal,用来对超过16位有效位的数进行精确的运算。下面列出了BigDecimal类的主要构造器和方法。序号方 法类型描 述1public BigDecimal(double val)构造将double表示形式转换为BigDecimal2public BigDecimal(int val)构造将int表示形式转换为BigDecimal3public BigDecimal(String val)构造将字符串表示形式转换为BigDecimal4p
Fskjb 阅读(2924) |
摘要: 先看以下代码: [代码]你一定觉得很奇怪,为什么一个是TRUE,一个是FALSE呢?对于FALSE还比较好理解,不同的对象嘛,地址肯定是不同的结果当然就是FALSE,可为什么会有TRUE呢,是BUG吗!其实不是,这是JAVA的一个规定!Java规范指出:特定的基本数据类型一定得被box成相同的不可变的wrapper对象。这些对象会被高速缓存重复使用,并且会被当作一般的对象使用。这些特定的基本数据类...
Fskjb 阅读(84) |
摘要: 在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,原因是编码方式的不一致。native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。 一.获取native2ascii  安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会...
Fskjb 阅读(247) |
摘要: 汉字是双字节的。所谓双字节是指一个双字要占用两个BYTE的位置(即16位),分别称为高位和低位。中国规定的汉字编码为GB2312,这是强制性的,目前几乎所有的能处理中文的应用程序都支持GB2312。GB2312包括了一二级汉字和9区符号,高位从0xa1到0xfe,低位也是从0xa1到0xfe,其中,汉字的编码范围为0xb0a1到0xf7fe。   另外有一种编码,叫做GBK,但这是一份规范,不是强...
Fskjb 阅读(585) |
摘要: 什么是 ClassLoader? 在流行的商业化编程语言中,Java 语言由于在 Java 虚拟机 (JVM) 上运行而显得与众不同。这意味着已编译的程序是一种特殊的、独立于平台的格式,并非依赖于它们所运行的机器。在很大程度上,这种格式不同于传统的可执行程序格式。 与 C 或 C++ 编写的程序不同,Java 程序并不是一个可执行文件,而是由许多独立的类文件组成,每一个文件对应于一个 Java 类...
Fskjb 阅读(606) |
摘要: [代码]
Fskjb 阅读(102574) |
摘要: 时间间隔可以用 setInterval 命令来创建并用 clearInterval 命令来终止。setInterval 所用的参数有两种格式。在第一种格式中,你传递给 setInterval 的参数可以是一个函数名,一段时间上的间隔以及一些传递给前面函数的相关参数。当 setInterval 运行时它会依照规定的时间间隔依次将列出的参数传递给指定的函数,直到你调用 clearInterval 将其...
Fskjb 阅读(56490) |
摘要: JSP注释JSP注释用于标注在程序开发过程中的开发提示,它不会输出到客户端。JSP注释的格式如下:[代码]与JSP注释形成对比的是HTML注释,HTML注释的格式是:[代码]HTML的注释可以通过源代码查看到,但JSP的注释是无法通过源代码查看到的。这表明JSP注释不会被发送到客户端。但有一点值得注意的是HTML注释无法阻止JAVA脚本的执行,如下:[代码]HTML注释中的JAVA脚本会在服务器端...
Fskjb 阅读(9213) |
摘要: EL 全名为Expression LanguageEL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构:${sessionScope.user.sex}所有EL都是以${为起始、以}为结尾的。上述EL范例的意思是:从Session的范围中,取得用户的性别。假若依照之前JSP Scriptlet的写法如下:User user = (User)session.getAttrib...
Fskjb 阅读(73785) |
摘要: JSTL 全名为Java Server Pages Standard Tag Library(JSP Standard Tag Library),它的中文名称为JSP 标准标签函数库。Web 程序开发人员能够利用JSTL和EL来开发Web 程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序可读性、维护性和方便性。JSTL是一个标准的已制定好的标签库,可以应用于各种领...
Fskjb 阅读(5425) |
摘要: Ctrl+1快速修复(最经典的快捷键,就不用多说了)Ctrl+D:删除当前行Ctrl+Alt+&#8595;复制当前行到下一行(复制增加)Ctrl+Alt+&#8593;复制当前行到上一行(复制增加)Alt+&#8595;当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+&#8593;当前行和上面一行交互位置(同上)Alt+&#8592;前一个编辑的页面Alt+&#8594;下...
Fskjb 阅读(315) |
年年行好运

我要回帖

更多关于 java基本语法 的文章

 

随机推荐