Java
仲翎逸仙
身常行慈,口常行慈,意常行慈
展开
-
设计模式之适配器
1。类的适配器模式,先看类图:核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口时Targetable,通过Adapter类,将Source的功能扩展到Targetable里,看代码: class Source { public void method1() { System.out.prin原创 2016-05-11 21:56:48 · 307 阅读 · 0 评论 -
多线程操作中为什么使用while而不是if来做判断状态是否就绪
假设有三个线程ABC,A为生产者线程,B为消费者线程,C为破坏者线程。三个线程都进入一个共享对象的方法(当然不是同时进入),C进入的时候,通过调用notifyAll的方法,把所有的wait唤醒,如果用了if,代码会往下进行,会导致无法获取到元素或者删除元素。如果是while就不一样了,就会继续检查条件。1.容器类EventStoage.javapackage sss;import java....原创 2018-05-24 23:34:00 · 2299 阅读 · 2 评论 -
一个经典例子让你彻彻底底理解java回调机制
以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式:Class A实现接口CallBack callback——背景...转载 2018-05-24 19:30:54 · 131 阅读 · 0 评论 -
foreach循环中为什么不要进行remove/add操作
先来看一段代码,摘自阿里巴巴的java开发手册1 List<String> a = new ArrayList<String>();2 a.add("1");3 a.add("2");4 for (String temp : a) {5 if("1".equals(temp)){6 a.remove(temp);7 } 8 }...转载 2018-07-05 18:03:37 · 302 阅读 · 0 评论 -
Java 泛型详解
1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类...转载 2018-07-19 10:45:08 · 102 阅读 · 0 评论 -
在Intellij IDEA中使用Debug
目录一、Debug开篇二、基本用法&快捷键三、变量查看四、计算表达式五、智能步入六、断点条件设置七、多线程调试八、回退断点九、中断Debug十、附:JRebel激活 Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。...转载 2018-08-01 21:22:47 · 200 阅读 · 0 评论 -
spring中crontab定时器 的表达式
一个crontab表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为:秒 (0~59)分钟 (0~59)小时 (0~23)天(月) (0~31,但是你需要考虑你月的天数)月 (0~11)天(星期 (1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)年份 ...转载 2018-11-13 14:51:50 · 262 阅读 · 0 评论 -
log4j2配置文件log4j2.xml配置详解
一、背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置,以及log4j2配置文件的详解。本文就专门来讲解下log4j2.xml配置文件的各项标签的意义。 二、配置全解 1.关于配置文件的名称以及在项目中的存放位置 log4j 2.x版本不再支持像1.x中的.proper...转载 2019-01-22 20:46:38 · 1139 阅读 · 0 评论 -
slf4j与log4j、log4j2
最近公司项目系统需要将日志从log4j+slf4j升级为log4j2,然后彻彻底底的把它们研究了一遍,在网上查找相关资源,发现并没有一篇文章能够很完整的把它们之间的关联和区别写出来,所以我在这里做一个总结。log4j 如果在我们系统中单独使用log4j的话,我们只需要引入log4j的核心包就可以了,我这里用的是:log4j-1.2.17.jar,然后在系统中使用如下代码输出日志:...转载 2019-01-22 21:21:38 · 361 阅读 · 0 评论 -
Log4j,Log4j2,logback,slf4j日志学习
<div id="content_views" class="markdown_views"> <!-- flowchart 箭头图标 勿删 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">&转载 2019-01-22 22:47:30 · 304 阅读 · 0 评论 -
log4j.properties 详解与配置步骤
&amp;amp;amp;lt;link rel=&amp;amp;quot;stylesheet&amp;amp;quot; href=&amp;amp;quot;https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-db05db230f.css&amp;amp;quot;&amp;amp;amp转载 2019-01-22 22:51:57 · 127 阅读 · 0 评论 -
实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要思考的不是怎么使用多重继承,而是您的设计是否存在问题.但有时候我们确实是需要实现多重继承,而且现实生活中也真正地存在这样的情况,比如遗传:我们即继承了父亲的行为和特征也继承了母亲的行为和特征。可幸的...转载 2019-03-10 20:16:13 · 630 阅读 · 0 评论 -
HashMap
https://www.cnblogs.com/xiaoxi/p/7233201.html前面对于HashMap在jdk1.8中元素插入的实现原理,进行了详细分析,具体请看:HashMap之元素插入。文章发布之后,有一位朋友问了这么一个问题:“jdk1.7中采用头插入,为什么jdk1.8中改成了尾插入?”。有人说这就是java大神随性而为,没什么特殊的用处。当时因为没仔细看过1.7的源码,所以不...转载 2019-03-12 15:12:53 · 135 阅读 · 0 评论 -
java注解的自定义和使用
小伙伴们。今天我们来说说注解、标志@ 。针对java不同版本来说,注解的出现是在jdk1.5 但是在jdk1.5版本使用注解必须继续类的方法的重写,不能用于实现的接口中的方法实现,在jdk1.6环境下对于继续和实现都是用。jdk1.5版本内置了三种标准的注解:@Override,表示当前的方法定义将覆盖超类中的方法。@Deprecated,使用了注解为它的元素编译器将发出警告,因为注解@De...转载 2019-05-17 14:45:53 · 338 阅读 · 0 评论 -
图解JVM垃圾回收算法
1 简单介绍下----->垃圾回收概念GC中的垃圾,指的是存在于内存中的、不会再被使用的对象。而垃圾回收就是把那些不再被使用的对象进行清除,收回占用的内存空间。如果不及时对内存中的垃圾进行清理,那么这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。如果大量不会被使用的对象一致占着空间不放,如果应用程序需要内存空间,没有多余的内存空间供其使用的话,就会导致内存...转载 2018-05-15 23:21:19 · 113 阅读 · 0 评论 -
java.nio.Buffer 中的 flip()方法
在Java NIO编程中,对缓冲区操作常常需要使用 java.nio.Buffer中的 flip()方法。 Buffer 中的 flip() 方法涉及到 Buffer 中的capacity、position、limit三个概念。 capacity:在读/写模式下都是固定的,就是我们分配的缓冲大小(容量)。 position:类似于读/写指针,表示当前读(写)到什么位置。...转载 2018-05-22 09:42:21 · 333 阅读 · 0 评论 -
细说java动态代理和cglib的动态代理
提到代理,想必大家对设计模式中的静态代理和动态代理都比较熟悉,小编之前在博客中对动态和静态代理进行了对比,这篇博文就只探讨java动态代理和cglib动态代理之间的区别;♚ 静态代理的温习 在我们使用静态代理的时候,每一个代理类只能为一个接口提供服务,这这样一来在程序开发中会产生过多的代理,而且所有的代理操作除了调用的方法不一样之外,其他的操作都是相同的,这样就会造成过多的重...转载 2018-05-19 13:54:45 · 372 阅读 · 0 评论 -
Java8新特性
Java8新特性原创 2016-05-26 11:30:11 · 2600 阅读 · 0 评论 -
匿名内部类访问外部类中的局部变量必须是final属性
如果定义一个匿名内部类,并且希望它使用一个在其外部定的对象,那么编译器会要求其参数引用是final的。 1.匿名内部类肯定是局部内部类(在一个方法里面定义的内部类),因为在java中,语句必须写在方法里,而匿名内部类其实就是一条特殊的语句;2.外部给定的对象就是所有外来的对象:外部方法的形参、局部变量、基本类型或自定义类型等。 3.内部类很微妙,它可以直接访问外部类的private转载 2016-05-29 17:32:07 · 455 阅读 · 0 评论 -
请求的链式处理---责任链模式
请求的链式处理---责任链模式转载 2016-05-17 15:38:33 · 430 阅读 · 0 评论 -
java 对象序列化 与 静态变量 及 transient
原文 序列化是将对象状态转换为可保持或传输的格式的过程,它也是RMI用来在不同JVM之间传递对象的机制,或者通过方法的参数或者作为一个方法调用的返回值。但有三个例外序列化不需要读或者写入到流:序列化会忽略静态字段,因为他们不属于对象的任何状态。基类的字段只有基类本身是序列化的时候才能被序列化。瞬间字段(transient) 我在写对象序列化时遇到了一点疑问,代码如下.import java转载 2016-07-12 06:50:26 · 2587 阅读 · 0 评论 -
设计模式之装饰器
Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样。因此,装饰器模式具有如下的特征:它必须具有一个装饰的对象。它必须拥有与被装饰对象相同的接口。它可以给被装饰对象添加额外的功能。用一句话总结就是:保持接口,增强性能。装饰器通过包装一个装饰对象来扩展其功能,而又不改变其接口,这实际上是基于对象的适配器模式的一种变种。它与对象的适配原创 2016-07-30 18:17:05 · 255 阅读 · 0 评论 -
java 代理和动态代理
第三种关系成为代理,举一个例子,你需要去某公司问问这个公司的相关业务,那么前台的漂亮妹妹就可以充当这个代理,她帮你询问然后告诉你。扯点正经的吧。。。。例如,太空船需要一个控制模块://: reusing/SpaceShipControls.javapackage reusing; /* Added by Eclipse.py */public class SpaceShi原创 2016-08-15 17:00:10 · 336 阅读 · 0 评论 -
Java this 引用逃逸
this逃逸是指在构造函数返回之前其他线程就持有该对象的引用. 调用尚未构造完全的对象的方法可能引发令人疑惑的错误, 因此应该避免this逃逸的发生.this逃逸经常发生在构造函数中启动线程或注册监听器时, 如:Java 代码: public class ThisEscape { public ThisEscape() {转载 2016-08-17 16:48:10 · 1060 阅读 · 0 评论 -
Java 使用 jdbc 连接 mysql
首先要下载Connector/J地址:http://www.mysql.com/downloads/connector/j/这是MySQL官方提供的连接方式:解压后得到jar库文件,需要在工程中导入该库文件我是用的是Eclipse: JAVA连接MySQL稍微繁琐,所以先写一个类用来打开或关闭数据库:DBHelper.java原创 2016-08-09 13:20:11 · 6148 阅读 · 0 评论 -
Java四种线程池
介绍new Thread的弊端及Java四种线程池的使用,本文是基础篇,后面会分享下线程池一些高级功能。1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Overridepublic void run() {// TODO Auto-generated method stub原创 2016-08-06 16:44:10 · 349 阅读 · 0 评论 -
Java 内存分配全面浅析
Java 内存分配全面浅析转载 2016-05-30 18:16:30 · 280 阅读 · 0 评论 -
JavaFX快速入门
1- 前提条件在本文中,将学习如何在 Eclipse IDE 开发和执行JavaFX编程。e(fx)eclipsee(fx)eclipse是一组工具和必要的库,它们帮助您执行JavaFX编程,确保您已经作为插件将其安装在eclipse上了。 如果未安装e(fx)eclipse,可以在以下链接查看安装指南:http://www.yiibai.com/javafx/install-原创 2017-12-28 22:11:28 · 507 阅读 · 0 评论 -
Java内部类详解
Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正。 请尊重作者...转载 2018-04-15 16:32:34 · 90 阅读 · 0 评论 -
hashMap
一、传统 HashMap的缺点(1)JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也很难达到元素百分百均匀分布。(2)当 HashMap 中有大量的元素都存放到同一个桶中时,这个桶下有一条长长的链表,这个时候 HashMap 就相当于一个单链表,假如单链表有 n 个元素,遍历的时间复杂度就是 O(n),完全失去了它的优势。(3)针对这种情况,...转载 2018-05-11 15:53:21 · 139 阅读 · 0 评论 -
ConcurrentHashMap实现原理及源码分析
ConcurrentHashMap实现原理及源码分析 ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentHashMap的实现原理,并对其实现原理进行分...转载 2018-05-11 16:35:50 · 149 阅读 · 0 评论 -
finally代码块一定会执行吗?
可不能小看这个简单的 finally,看似简单的问题背后,却隐藏了无数的玄机。接下来我就带您一步一步的揭开这个 finally 的神秘面纱。问题分析首先来问大家一个问题:finally 语句块一定会执行吗?很多人都认为 finally 语句块是肯定要执行的,其中也包括一些很有经验的 Java 程序员。可惜并不像大多人所认为的那样,对于这个问题,答案当然是否定的,我们先来看下面这个例子。清单...转载 2019-07-03 15:35:19 · 919 阅读 · 0 评论