java开发
张少飞
这个作者很懒,什么都没留下…
展开
-
why you can't focus on one thing
the reason why you can't on one thing is that you focus on too many things/原创 2016-07-10 23:39:43 · 402 阅读 · 0 评论 -
怎么设计一个Java框架(简单DEMO)翻译
原文地址:http://www.programcreek.com/2011/09/how-to-design-a-java-framework/你可能很好奇关于如何框架是怎么运作的,这里会展示一个简单的框架示例用于证明的含义。框架的目的首先我们为什么需要一个框架呢?相对于知识一个普通的库呢?框架的目的是定义一个让开发者实现真正的基于工业需求的方法的过程,换句话说,框架定义骨架,当需要用翻译 2017-06-19 11:28:03 · 1057 阅读 · 0 评论 -
Java保证两个方法互斥的方式,多线程同步
1、当需要保证多个方法的互斥,需要保证有一个共同的标准作为基准,这个基准就是一个锁。当2个以上的方法需要保证互斥,需要他们获取相同的锁,当一个方法拥有锁之后,其他的方法不能够获得锁,达到互斥的作用。2、static class Bussiness{ public synchronized void subB(){ for (int j = 0; j < 1; j++) {原创 2017-06-22 10:55:38 · 4306 阅读 · 0 评论 -
maven中的groupId和artifactId到底指的是什么?
转载自百度知道一位网友的回答(略修改) 地址:https://zhidao.baidu.com/question/1639120287056394340.html侵删。具体回答如下:groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。转载 2017-09-25 15:07:09 · 1111 阅读 · 0 评论 -
TCP通过 JAVA Socket 实现 RPC 远程调用
RPC 实现技术主要是通过数据的序列化跟反序列话实现的,通过序列化将数据编程二进制流,将数据传送到指定的位置后需要将数据进行反序列化,反序列化后得到数据。所以这个DEMO主要实现技术是通过SOCKET-ServerSock + ObjectOutputStream实现PRC功能。这里主要有两个技术点,1是使用TCP连接保证连接的稳定,另外一个是序列化的效率问题。目前流行的两个序列化工具是 Goog原创 2017-09-27 18:54:57 · 1124 阅读 · 0 评论 -
Java interface 接口的使用理解
很多人都比较疑惑,为什么要使用接口。 在我个人理解来说,接口其实是一套协议,一套契约,是框架开发者与使用者之间的一种契约,框架开发者/架构师承诺,只要你符合我的契约,也就是实现接口那么我必然可以支持你的拓展类。当框架设计者认为这一个类需要被灵活的拓展用于适应需求,在提供一个默认的解决方案的同时,提出了这种契约,以便使用者拓展。可以看看下面的例子,就比较容易理解,接口定义的意义。框架设计者允许使用者原创 2017-09-21 11:57:55 · 1040 阅读 · 0 评论 -
Java Collection框架分析一
Java 集合框架骨架,这是网上找的一个继承关系,以及类的类型都比较容易看出来的一幅图。很全面。Java集合主要包括两块,基于Collection的与基于Map的集合。从图中的继承关系可以看到接口Collection 主要包括3个List,Set,Queue 继承接口。我打算从Collection接口类开始分析,从Collection ->AbstractCollection->List->Abs原创 2017-11-10 15:10:00 · 276 阅读 · 0 评论 -
Map接口
Map接口,没有继承与Collection,作为一个常见的容器,Map 根据key映射一个value,一个map中key是唯一的,每个key只能映射一个value。常用的接口方法:1、 V put(K key, V value);Associates the specified value with the specified key in this map2、 V原创 2018-02-07 11:20:29 · 347 阅读 · 0 评论 -
Java Collection 集合常用容器组件用法以及区别
一、接口Collection是Java集合类的根接口,作为一个存储容器,用于存储一组对象。主要有两个继承分支,List 以及 Set。常用的接口方法有:1、int size();2、 boolean isEmpty();3、 boolean contains(Object o);4、 Iterator iterator();//Collection 接口继承自原创 2018-02-07 10:57:45 · 534 阅读 · 0 评论 -
Jvm内存模型
一、内存模型Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的,由Java虚拟机通过解释执行(解释器)或编译执行(即时编译器)来完成,故Java内存模型,也就是指Java虚拟机的运行时内存模型。作为Java开发人员来说,并不需要像C/C++开发人员,需要时刻注意内存的释放,而是全权交给虚拟机去管理,那么有就必要了解虚拟机的运行时内存是如何构成的。运...转载 2018-05-09 01:18:22 · 154 阅读 · 0 评论 -
正则表达式符号含义解析带实例
* 匹配前面的字符出现的次数为(>=0),例如,go* 能匹配 "g" 以及 "goo"。* 等价于{0,}。? 匹配前面的字符出现的次数为(0次或者1次) ,go?能匹配 "g"或者"go",("goo"不满足条件,因为超过了一次)| 多个之间进行选择 [a|b|c] 在a,b,c中选择一个字符,并且只出现一次[a|b|c]*能够出现多次a|b|c如 abccc+匹配前面的字符出现次数(&am原创 2018-05-09 17:47:15 · 1792 阅读 · 0 评论 -
RequestParam 注解实现参数注入
/** * 获取指定方法的参数名 * * @param method 要获取参数名的方法 * @return 按参数顺序排列的参数名列表 */ public static List<RequestParam> getMethodParameterNamesByAnnotation(Method method) { ...原创 2018-05-04 09:46:39 · 1961 阅读 · 0 评论 -
ThreadLocal正确打开方式
之前看了比较多的关于ThreadLocal的博客,很多说ThreadLocal会生成一个共享对象的副本。实际上这并不会生成一个对象的副本,而是同一个对象。。 private static final ThreadLocal<SimpleDateFormat> tl = new ThreadLocal<SimpleDateFormat>(){ @Ov...原创 2019-01-07 16:00:18 · 378 阅读 · 0 评论 -
Java垃圾回收机制,以及分代垃圾回收称过程(文档翻译)
自动垃圾回收是查找堆内存的过程。识别那些对象正在使用,哪些对象没有被使用,并且删除未使用的对象。一个正在使用的对象,或者正在被引用的对象,意味着你的程序仍然保留着一个指向这个对象的指针。一个未被使用的对象,或者未被引用的对象,是不再被你的程序使用的对象。因此被无效对象占用的内存应该被回收。 在C语言当中,分配和取消内存使用是手动的过程。在Java当中,取消内存分配是被垃圾回收...原创 2019-01-08 11:37:12 · 351 阅读 · 0 评论 -
20173月开发总结
总结1、J2EE web分层layer1:HTML/VIew 层layer2:Controller 接口层layer3:Service 业务层layer4:DAO 层数据访问层总结21、分层的好处,当业务庞大时,需要拆分系统,这时候有良好分层的代码就能够很容易的拆分出来。2、将Controller层的数据验证放在Service层,这样如果需要做APP接口,直接新原创 2017-04-26 14:56:58 · 330 阅读 · 0 评论 -
多个线程调用静态方法,是否会出现并发问题?
多个线程调用静态方法,是否会出现并发问题取决于,静态方法内部是否需要引用共享区内的静态变量。当线程调用静态方法时,都会创建一套临时变量,可见性是在这个线程内部,所以当多个线程调用静态方法时,并且这个静态方法没有引用外部静态变量的。不会有线程并发的问题。原创 2017-04-01 17:54:43 · 13406 阅读 · 1 评论 -
java 两个字符串取交集
两个字符串取交集public static void checkCommom(String str1, String str2) { HashSet result = new HashSet(); int length1 = str1.length(); int length2 = str2.length(); for (原创 2016-07-12 14:03:51 · 6497 阅读 · 0 评论 -
继承,多态使用
1、继承是指子类复用基类的方法属性并拓展基类的属性,从而使得方法向上兼容,拥有基类的属性的同时拥有自身的属性。2、多态:相同的方法来处理来自同一基类不同的字类的对象。实现不同类的对象调用同一方法。3、接口:a可用于定制一套通用的标准。b拓展需要原创 2016-07-07 10:58:44 · 292 阅读 · 0 评论 -
i++,++i的区别
刚学的疑惑很久:1、这是i++;public class Test2 { public static void main(String[] args) { int i = 0; System.out.println("i is:"+i); System.out.println("i++ is:"+ i++);原创 2016-07-07 11:17:15 · 300 阅读 · 0 评论 -
两种单例模式
/** * 懒汉 * @author yushanglicai * */public class LazyManSingleton { private static LazyManSingleton singleton; private LazyManSingleton() { printString(); }原创 2016-07-12 14:27:11 · 262 阅读 · 0 评论 -
StringBuilder与StringBuffer的区别(转)
相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类。String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象,可变和不可变类这一对对象已经齐全转载 2016-11-03 09:31:51 · 260 阅读 · 0 评论 -
java 1,2,3维数组定义,遍历
package test;public class Test {public static void main(String[] args) {int[] array1 = {1,2,3,4};int[][] array2 = {{1,2,3,4},{1,2,3,4}};int[][][] array3 = { { { 1, 2, 3, 4 }, { 1, 2,原创 2016-10-14 15:10:21 · 1180 阅读 · 0 评论 -
Java冒泡排序
每次从头开始,前后比较,每次获取一个最大或者最小值。到最后冒泡排序。package test;public class BubbleSort {static int[] array = { 1, 2, 3, 4, 67, 8, 9, 6, 4,5,6,9,8,5,4,2,1,3,5,4,123,1,2,45,1,66,45,45,12,44,55,44,54,5原创 2016-10-14 15:52:44 · 266 阅读 · 0 评论 -
java 可变参数写法
经常会用到,当方法体的同类型的参数不确定时需要用到这个方法,可以很方便的解决参数不确定的问题。其实他也等价于只是经过他的封装会更加方便一些。系统会默认自动创建一个数组。原创 2016-10-31 14:22:51 · 1007 阅读 · 0 评论 -
spring @Transactional 事务不回滚的其中一个原因
1、当出现以下代码情况时会出现@Transactional 无效,事务无法回滚,原因是当异常抛出后被function1方法捕获了,无法抛出异常。导致spring 事务无法捕获到异常。导致无法回滚。原创 2016-11-02 09:57:55 · 2129 阅读 · 0 评论 -
构建线程安全的类
1、因为对象的状态由对象的变量组成,通常叫做域{x,y...}, 通过private final构建一个封闭的环境,变量的访问通过对外的方法接口,这个方法接口是同步的,这样就能够保证对象的线程安全。2、通过final定义可以缩减对象的域。3、通过对象的私有锁来保护状态public class privateLock{private final Object myLock = ne原创 2016-12-20 11:04:00 · 291 阅读 · 0 评论 -
经常看到的词汇Context(上下文)怎么理解?
举个栗子,在android中创建很多的UI控件都需要Context参数,大多数都是翻译为上下文,如果你不特意去找他的意思,感觉一脸懵逼。今天稍微找了下这个文件上下文,结合自己对别人描述的东西的理解。1、我认为Context是构建一个组件时需要的一些外部材料。就像做一道土豆焖猪肉,光有土豆和猪肉可不会做出什么好吃的土豆焖猪肉。如果加入盐,油,酱油之类的材料。才会做出一道好菜。而这些材料就是Con原创 2017-01-09 11:27:55 · 1899 阅读 · 0 评论 -
synchronized锁方法,synchronized锁对象,synchronized(this),synchronized(class)最佳理解方式
1、synchronized锁方法static public class Test {static int counter = 0;public synchronized void foo() {// do somethingbar();}public synchronized void bar() {try {System.out.println("run原创 2017-01-09 16:29:30 · 3197 阅读 · 1 评论 -
Ubuntu Linux 部署Web项目 流程 从0到1
1、首先准备一个ubuntu linux 虚拟机2、安装openssh-client 服务 配置相关文件3、安装vsftpd服务 配置相关文件 4、安装JDK ,在sun网站下载tar.gz格式jdk文件,使用ssh工具上传到目录,解压配置JAVA环境变量5、安装tomcat服务,并配置环境变量,并启动tomcat (在tomcat目录执行sudo ./bin/startup.sh原创 2017-01-18 18:16:31 · 241 阅读 · 0 评论 -
为什么要先调用flip然后才能write
这是Mina Guide中的代码public class ImageRequestEncoder implements ProtocolEncoder { public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { Image原创 2017-02-25 01:50:54 · 512 阅读 · 0 评论 -
Java 方法参数传对象时引用的不可变性
当一个对象当做参数传递当一个方法后,这个方法可以改变这个对象的属性,这个到底是值传递还是引用传递?这个是值传递,Java只支持参数的值传递,当一个对象实例作为参数传递到方法中的时候后,参数的值就是该对象的引用。只能改变属性,并不能改变引用。对引用的修改是无效的。当传入String作为参数修改他的值的时候,为什么会不生效?因为String是不能改变的,只会生成一个新的字符串,然后将引用修改成新...原创 2019-01-15 16:24:54 · 1080 阅读 · 0 评论