java
文章平均质量分 72
xinfei0803
IT行业初入行,不知深浅尚观望,若得知己二三人,岂不欢欣喜若狂。
展开
-
synchronized锁升级和降级
先转一张图说明:无锁和偏向锁这两行,倒数第三位有一个争议,0和1究竟代表说明含义。有人说是0表示当前无锁,1表示当前是偏向锁。这个说法对不对呢?做实验开始 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.14</version> </原创 2021-04-09 15:34:41 · 3077 阅读 · 5 评论 -
java异常捕获的一点感悟
class Annoyance extends Exception {}class Sneeze extends Annoyance {}class Human { public static void main(String[] args) throws Exception { try { try { throw new Sneeze(); } ...原创 2015-06-21 13:21:59 · 6544 阅读 · 7 评论 -
字符串转换成指定类型
网友提出一个问题,寻求解决方案:/** * 把val转换成type类型返回 * @param val 要转换的内容 * @param type 要转换成的类型 * @return */public T getVal(String val, Class type) { // 把val转换成type类型返回 比如说getVal("123",Integer.class) 返回一个12原创 2015-11-04 14:33:37 · 4924 阅读 · 0 评论 -
java动态代理的实现
本文探讨两种java动态代理技术,JDK和cglib代理有什么用?Spring的面向切面编程(Aspect)就是利用代理技术实现,获取注入对象的时候获取的其实并不是注入类的对象(target),而是其代理类的对象(proxyTarget)只是通过动态代理实现,对于编码者而言是透明的,在代理方法中可以对目标方法做事务控制、日志记录、异常捕获、错误处理等等工作。代理方式有哪两种?JDK原创 2015-11-05 16:08:35 · 816 阅读 · 0 评论 -
有一个100万的数组,里边有两个是重复的,如何设计算法找到
输出:两个重复的元素的索引首先,直接两重循环查找不是不行,估计是最蠢的做法了。其次,先用快速排序拍一遍,然后遍历,时间复杂度最好的情况是最坏的情况是nlogn+n有人说是用hash,有人说用位图,不知道什么情况,用起来估计很麻烦。其实最好想的一个方式为HashSet方式,在数量不那么大的情况下没问题的,100万同时加载到内存中可以接受,主要考虑时间复杂度。代码如下:原创 2015-10-23 18:33:16 · 8542 阅读 · 0 评论 -
分别使用java和JS获取某月的第一天和最后一天
需求:获取本月的第一天和最后一天分别使用Js和java代码实现,不能用笨法子,比如根据月份判断大小月,平闰年判断一个多少天,然后取出第一天和最后一天。以下是实现方式,java代码:Calendar calendar = Calendar.getInstance();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");c原创 2015-12-10 18:52:46 · 1459 阅读 · 0 评论 -
彻底解决java WEB项目的文件路径问题(war包)
在j2EE项目中,我们一般会把项目打包发布,一般是war包,作为独立单元,可以远程上传,加载,发布,还可以实现版本控制,但这与我们开发过程中使用MyEclipse自动部署有所不同,以下做详细说明.使用war包部署,在tomcat和WebLogic下部署有很大的区别,tomcat会把war自动加压到当前目录下,然后再用解压的目录来发布,这与一般不会出现太大的意外,但如果是用WebLogic发布,原创 2014-11-20 13:20:04 · 10328 阅读 · 2 评论 -
Spring 引入properties配置文件的方式
spring注入常量的方式,可以直接在java代码中使用方法一:采用配置文件标签方式来配置可以对set、map、list、properties文件等类型的数据进行配置,以下以properties文件为例说明使用方法步骤:1、applicationContext.xml中添加xsi:schemaLocation="http://www.springframework.org/sc原创 2015-11-26 14:41:42 · 6233 阅读 · 0 评论 -
使用java运行javaScript脚本
java和JavaScript有关系吗?长的挺像,开头好像一致,刚刚才看到一篇文章,有人在咖啡杯子下面写一个JavaScript,并宣称未来五年JavaScript将成为业界最重要的语言之一。嚓,一看这就是外行小编搞出来的文章,放出来也不知道给谁看的。又想到去年有个自命为程序员的女研究生(已毕业)来问我,“听说你是做java的?”“是啊,怎么?”“我这里有段代码有问题,你给我看看吧!”“好啊!”,原创 2015-12-02 14:03:05 · 1710 阅读 · 0 评论 -
深入谈Java的多态机制
前言从开始学面向对象,开始学java就在不断被灌输java几大特性:封装、继承、多态。封装有利于实现数据(状态)的隐藏,让对象的内聚性更强。继承虽说一定程度上破坏了封装,但实现了代码的复用,是多态特性实现的基础之一。多态让java的方法调用功能更加丰富,更加灵活,但带来了一定的负面作用,如可读性变差,类之间的耦合性变强。以下重点说说多态的实现原理和如何破解多态的问题!本以为看了周志明的《深入理解j...原创 2016-11-18 13:32:22 · 828 阅读 · 0 评论 -
使用Maven和Spring的profile功能实现不同运行环境的无缝切换
1、设计目标,在使用maven构建(build)时即确定运行环境运行环境包括:数据库切换,各种配置文件变动,变量的变化2、实现方式,配置maven的profile和properties,配置spring beans的profile实现层次加载3、多种实现方式对比原创 2017-08-29 18:44:09 · 655 阅读 · 0 评论 -
如何提高单元测试效率
对于程序员来说,尤其是做业务代码比较多程序员,往往出现这样的情况:需求开发周期为5个工作日,开发仅占2天,但测试和联调竟然需要3天。为什么会出现这样的情况呢?我总结有以下几点:1、开发业务代码往往不会有什么技术难度,就是业务逻辑复杂些罢了,而程序员对业务理解并不总是完全到位。2、单测和联调也需要协调各方面的环境,往往也需要从头开始造数据。 例如:如果一个大流程有十个步骤, 1)要开发和...原创 2018-05-05 15:33:13 · 5882 阅读 · 1 评论 -
重温JAVA类加载过程
缕一缕JAVA的类加载过程,附一个近期遇到的案例一、加载 1、读取二进制流 2、将字节流转化为方法区的”运行时数据结构“ 3、生成一个java.lang.Class对象,用来描述这个数据结构二、连接 1、验证 文件格式验证:魔数、版本号、常量类型、编码格式 元数据验证:父类验证、抽象类验证、各种语言规范验证 字节码验证:语法规范验证...原创 2018-04-27 17:10:03 · 289 阅读 · 0 评论 -
java 把DataTable数据类型转换为树形结构(多叉树)
问题分析:一个关系数据库的表,如图所示:可以看到后面四个字段:Country,Province,City,Street 具有逻辑上的从属结构,现在要把这种数据搞成一个树形结构,如图所示:不是原来的数据转换而成的,大致就是这个意思,可以想象成,dataTable里面相同的数据进行单元格合并,然后找到所有的从根到叶子节点的路径,就算完成任务。JS里面似乎有很多插件可以实现,但J原创 2015-06-01 22:53:18 · 6742 阅读 · 1 评论 -
使用对象输入输出流(ObjectOutputStream,ObjectInputStream)实现序列化对象的深度克隆
public static T clone(T obj) throws Exception { ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bout); oos.writeObject(obj); ByteArr转载 2015-06-21 12:00:01 · 3565 阅读 · 0 评论 -
java实现自动编号系统(类似于word中自动编号)
功能需求:1,根据章节和当前标题数量,获得下一个编号,满足不同等级编号需求.如同word中的自动编号功能一样2,可以实现在freemarker中直接调用生成方法,得到正确的编号目标:即在freemarker代码中通过一个方法调用即可得到当前章节的编号11.11.222.12.1.12.1.22.22.2.133.13.1.13.1.1.13.2原创 2015-05-17 19:04:16 · 5214 阅读 · 0 评论 -
使用java JDBC方式操作oracle blob类型数据
/** * * @param query 表示sql语句 * @param idForQuery 标识主键 * @param value 表示需要写入的字符串数据 * @throws Exception */public static void writeBlobGBKBinaryStream(String qu原创 2012-12-18 16:30:54 · 3792 阅读 · 0 评论 -
java内部类的特点
1,内部类可以访问其所在类的私有属性和方法。——自己人嘛,怎么都好说2,内部类可以隐藏起来,不被同一个包中的其他类访问,如果一个类只对某个类提供使用,那么可以将其定义为内部类。——就当你是外部类的成员了,用法与属性和方法差不多。3,匿名内部类可以方便的用在回调方法中。——只出现一次,把事办完就行,不需要留名4,可以声明为抽象类,可以被其他的内部类继承,也可以声明为final。——既然叫原创 2013-03-01 09:19:24 · 1912 阅读 · 0 评论 -
使用java调用本地exe程序和cmd程序
执行本地exe程序需要RunTime类:package com.stmcc.test.read;import java.io.IOException;public class RunTimeTest { public static void main(String[] args) { Runtime rt = Runtime.getRuntime();//jav原创 2013-03-01 16:41:48 · 11045 阅读 · 3 评论 -
SSH2二次学习
很久不用ssh,发现生疏的狠了。很多东西都忘记了,半下午的时间复习一下,做了小的不能再小的项目。下面谈一谈收获:1,Action可以交给Spring来管理,也可以在struts容器中来管理,如果交给spring管理,struts中只需拿来用就可以了,但在spring中就需要一定配置action了。2,如果在使用了@Override之后MyEclipse老是报错,在eclipse中修改配置,原创 2013-05-03 17:11:14 · 1044 阅读 · 0 评论 -
使用Crowd进行单点登录
单点登录:(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。单点登录网络生活中随处可见,比如登录了QQ客户端,然后你可以打开腾讯微博,QQ空间,QQ邮箱,校友录等等一系列的应用,这时候我们不需要在一个个再输入用户名和密码了,作为受信任的站点,就可以直接登录了。这些原创 2013-06-21 18:10:44 · 23973 阅读 · 4 评论 -
一道阿里的面试题
随便写写:package com.test;/** * 有一堆石子共100枚,甲乙轮流从该堆中取石子,每次可以去2、4或6枚,取得最后的石子的玩家为赢家,若甲先取,则 A 谁都无法必胜 B 乙必胜 C 甲必胜 D 不确定 * @author zhangxl * */public class GetNumber { public static void main(S原创 2013-09-26 17:16:03 · 1870 阅读 · 0 评论 -
Java正则表达式教程及示例 (转)
本文由 ImportNew -ImportNew读者 翻译自journaldev。如需转载本文,请先参见文章末尾处的转载要求。出自译文原文链接:原文当我开始我的Java职业生涯的时候,对于我来说正则表达式简直是个是梦魇。本教程旨在帮助你驾驭Java正则表达式,同时也帮助我复习正则表达式。什么是正则表达式?正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑转载 2013-11-06 17:00:26 · 1090 阅读 · 0 评论 -
jeecms 前台拦截器的研究与改造
jeecms出发点是面向大众的,具有前台开发性,也就是说,即时是未登录(游客),也可以浏览到前台页面的内容,只是有些操作需要(增删改)注册和登录之后才可以进行。后台当然不能随便进入了,必须登录后才可以进入后台,那么jeecms是怎么做的呢?我们看一看源码。后台拦截器代码:@Override public boolean preHandle(HttpServletRequest req原创 2013-12-24 15:23:35 · 3975 阅读 · 0 评论 -
使用dwr实现后台消息推送功能
大多数网站都有站内信,未读消息,今日要闻等消息的推送功能,就拿本站来说打开今日第一次csdn首页,立马会在右下角出现一个弹出窗口,就是下图这样的,你一定见过的:很多无良网站都会有各种各样的浮动层,飘来飘去的很烦人,一不小心点到了,弹出令人更烦的无良广告。csdn当然不是无良网站,尽管有弹出层,但没有乱飞,并且也不是以广告为目的的,这样大家伙就不会抵制和排斥了。作为一个web开发者,我曾经略原创 2013-10-26 18:24:24 · 6872 阅读 · 15 评论 -
使用Crowd实现单点登录2——配置应用
本文与crowd单点登录1 略有重复之处,读者自己甄别。本文依然是从服务器的安装开始讲起,至于破解方式,参见拙文:crowd单点登录1。第一章 安装crowd服务器第一步 填写titleDeployment Title:指的是部署名称,是服务标识名称,可以自己定义。Base URL 是服务器访问域名称,最好采用域名形式的,为以后配置应用做准备。第二步:原创 2013-12-18 11:59:45 · 9745 阅读 · 4 评论 -
使用反射自定义序列化方法
在使用JSONObject和JSONArray的过程中,往往让人惊叹它的神奇之处,能够很方面的把json对象和bean互相转换,一直在思考究竟后台如何实现的,虽然通过看源码可以得出答案,但毕竟源码过于繁复,短时间内难以尽解,不如自己思考:如果这个功能是我设计的,我会怎么实现呢?其实无非就是使用反射而已,加上循环和迭代,把集合类型和嵌套的对象都迭代出来。被序列化的类详见:http://blog.原创 2014-11-19 14:27:34 · 1820 阅读 · 0 评论 -
使用JSONObject 深度序列化和反序列化
JSONObject 和JSONArray 是json-lib.jar里面最常用的两个类,分别可以对对象和数组(集合)进行序列化和反序列化,结构清晰命了,简单易用,功能强大,效率比较高,使用至今一直较为推崇,虽然尚有诸多功能尚未完全了解,姑且边学边记,以作归纳、沉淀。首先看两个类:Student类:public class Student { private String name;原创 2014-11-18 23:46:27 · 12580 阅读 · 2 评论 -
jsp+servlet实现验证码功能
验证码的功能大多数人可能不都理解,但几乎每个安全网站都会有。验证码是用来防止非人为因素操作的行为,例如一个黑客要黑一个网站,怎么弄呢?最简单的思路当然是造成其网路拥堵直至系统瘫痪掉。如果没有验证码,那么我就可以在注册页面,写一个程序,只有注册表单,不断更换主键或不可重复的内容,不停的提交。那这样每秒可以注册几万次都有可能,这样服务器就大量负载,很容易就瘫痪并死掉。而达到这样的目的并不困难。增加原创 2012-12-27 14:41:02 · 4612 阅读 · 0 评论