JAVA
HHrxxx
这个作者很懒,什么都没留下…
展开
-
PAT20181209 甲级 7-2&&7-3
7-2Decode Registration Card of PAT分数16/25部分答案正确三种情况分别考虑,用list存储,再用Collections 进行相关排序。import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.uti...原创 2018-12-10 19:54:21 · 159 阅读 · 1 评论 -
简单工厂、工厂模式、抽象工厂
简单工厂接口IUser:public interface IUser { public void add(); public void remove();}SqLiteUser类:public class SqLiteUser implements IUser { @Override public void add() { System.out.prin...原创 2019-07-09 15:53:31 · 136 阅读 · 0 评论 -
Java多线程交替打印实现
public class test { int i = 1; public static void main(String[] args) { test obj = new test(); // 使用匿名内部类的形式 Runnable runnable = new Runnable() { @Override public void run() { wh...原创 2019-07-12 22:16:57 · 4614 阅读 · 1 评论 -
Java8------接口
一、接口的默认方法情况1:正常使用public interface A{ default void func() { System.out.println("A's"); } static void staticFunc() { System.out.println("staticFunc"); }}public class B impl...原创 2019-07-13 16:17:29 · 148 阅读 · 0 评论 -
HashMap源码
hash(Object key)int类型4个字节,32位,将h右移动16位。再异或运算。即 高16位与低16位进行异或,每一位都充分参与运算,这样得到的值更加散列。 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ...原创 2019-07-29 11:29:32 · 96 阅读 · 0 评论 -
注解
1、@Autowired:依赖主入(DI),不用new,按类型装配2、@Resource:按名称装配,若没有指定name,那么就按照类型来注入。config:3、@Configuration:配置类4、@ConfigurationProperties:通过prefix属性指定配置前缀,通过location指定配置文件路径dao:5、@Reponsitory(实现类):...原创 2019-08-01 17:21:27 · 110 阅读 · 0 评论 -
hikari参数
参数 描述 构造器默认值 默认配置validate之后的值 validate重置 maximumPoolSize 池中最大连接数,包括闲置和使用中的连接 -1 10 如果maxPoolSize小于1,则会被重置。当minIdle<=0被重置为DEFAULT_POOL_SIZE则为10;如果minIdle>0则重置为minId...原创 2019-08-09 10:07:03 · 1178 阅读 · 0 评论 -
LRU实现
用双端链表实现,将每次最新插入或者最新访问的节点移动到链表的尾部。当容量满的时候,直接移除首节点就可以了。同时要注意一些边界情况-----链表只有一个节点。import java.util.HashMap;public class LRU { public static class Node<K, V> { private K key; private V v...原创 2019-08-07 09:46:22 · 154 阅读 · 0 评论 -
Synchronized和ReentrantLock的区别
可重入性:两者都是同一个线程每进入一次,锁的计数器都自增1,要等到锁的计数器下降为0时才能释放锁。锁的实现:Synchronized是依赖于JVM实现的,类似于操作系统来控制实现。ReenTrantLock是JDK实现的,源码可见。性能的区别:在Synchronized优化以前,synchronized的性能是比ReenTrantLock差很多的,但是自从Syn...转载 2019-08-16 12:11:59 · 132 阅读 · 0 评论 -
java异常
总体上我们根据Javac对异常的处理要求,将异常类分为2类。非检查异常(unckecked exception):Error 和 RuntimeException 以及他们的子类。javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常。所以如果愿意,我们可以编写代码处理(使用try...catch...finally)这样的异常,也可以不处理。对于这些异常,我们应该修正代码...转载 2019-08-22 23:00:16 · 123 阅读 · 0 评论 -
原子类AtomicInteger
public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L; private static final Unsafe unsafe = Unsafe...原创 2019-09-14 00:13:46 · 145 阅读 · 0 评论 -
进程和线程的区别
为什么引入进程?为了使程序能并发执行,且为了对并发执行的程序加以描述,所以引入进程,提高资源利用率和系统吞吐率。为什么引入线程?为了减少进程切换和创建的开销,提高执行效率和节省资源 。区别目的不同:进程是为了更好的使多道程序并发执行,以提高系统的资源利用率和系统吞吐量。线程引入的目的是为了减少在程序并发执过程中时空开销,提高系统的并发性能。 资源:进程是系统进行资源分配的单位,线...原创 2019-06-27 22:25:36 · 102 阅读 · 0 评论 -
线程的生命周期
生命周期的五种状态1、新建(new Thread)当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。例如:Thread t1=new Thread();2、就绪(runnable)线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。例如:t1.start();3、运行(running)线程获得CPU资...转载 2019-06-27 21:51:15 · 99 阅读 · 0 评论 -
AOP面向切面编程、IOC控制反转/DI依赖注入
首先控制反转和面向切面编程是spring的核心机制,由于控制反转不好理解,因此有人提出依赖注入的概念,其实依赖注入是控制反转的一种方式,但现在大家默认控制反转等同于依赖注入一.控制反转:控制反转是指spring容器通过依赖注入的方式使得创建依赖对象的控制权由对象转移到spring容器。举个例子:我们有一个明星,要举办演唱会,在他唱歌之前有记者要采访他,通常我们的做法是创建一个明星类,...转载 2019-04-09 09:23:02 · 446 阅读 · 0 评论 -
设计模式原则
单一职责原则(Single Responsibility Principle)里氏替换原则(Liskov Substitution Principle):只要父类出现的地方子类就可以出现,而且替换成子类页不会产生任何错误,反之,则不行。java 使用extends实现继承,采用单一继承规则。//士兵开枪依赖倒置原则(Dependence Inversion Principle):高层...原创 2019-04-09 09:28:30 · 79 阅读 · 0 评论 -
JAVA并发
第二章自旋锁-原理跟互斥锁一样,一个执行单元要想访问被自旋锁保护的共享资源,必须先得到锁,在访问完共享资源后,必须释放锁。如果在获取自旋锁时,没有任何执行单元保持该锁,那么将立即得到锁;如果在获取自旋锁时锁已经有保持者,那么获取锁操作将自旋在那里,直到该自旋锁的保持者释放了锁。由此我们可以看出,自旋锁是一种比较低级的保护数据结构或代码片段的原始方式,这种锁可能存在两个问题:1、死锁。试...原创 2019-04-09 09:33:05 · 128 阅读 · 0 评论 -
sleep、wait、run、start
sleep和wait的区别1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。...转载 2019-06-05 10:31:28 · 279 阅读 · 0 评论 -
Thread的join()方法
join简介join()方法是Thread类中的一个方法,该方法的定义是等待该线程终止。其实就是join()方法将挂起调用线程的执行,直到被调用的对象完成它的执行。这段话难理解,后面我会用实例做讲解。join实例现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?这个问题是网上很热门的面试题目(这里除了用join之外还有很多其他方法能够实现,只是使用j...转载 2019-06-19 16:44:32 · 654 阅读 · 0 评论 -
隐式(Synchronized)锁和显式(java.util.Lock)锁
为了控制多个线程按照正确的顺序来访问共享数据,Java提供了提供了两种锁方案1.隐式锁(Synchronized) 这一种就是比较大家熟悉的synchronized关键字,因为Java中每个对象都实现了lock的功能,所以synchronized正是利用了这一特性,来控制并发访问.使用synchronized关键字可以保证使用同一个锁的方法或代码块在不同的线程里执行时是原子的即不可分割的(...转载 2019-06-20 16:12:30 · 419 阅读 · 0 评论 -
Java内存区域划分图
转载 2019-06-26 13:39:14 · 194 阅读 · 0 评论 -
查找及排序算法归纳
查找算法1、二分查找/** * 二分查找 * @param arr * @param key * @return */ private static int BinSearch(int[] arr,int key) { int low=0; int high=arr.length-1; int mid=(low+high)/2; whil...原创 2019-06-26 16:12:32 · 297 阅读 · 0 评论 -
垃圾收集器
7种不同分代的收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1;所处区域,则表明其是属于新生代收集器还是老年代收集器:新生代收集器:Serial、ParNew、Parallel Scavenge;老年代收集器:Serial Old、Parallel Ol...转载 2019-06-27 00:43:12 · 119 阅读 · 0 评论 -
单例模式的实现
单例模式指的是在应用整个生命周期内只能存在一个实例实现单例模式一、饿汉式以空间换时间的方式 在定义类的静态私有变量同时进行实例化优点:线程安全;获取实例速度快缺点:类加载即初始化实例,内存浪费public class Singleton { private static Singleton instance=new Singleton(); private...原创 2019-07-08 17:00:51 · 152 阅读 · 0 评论 -
JVM调优命令
jps:显示系统内所有的jvm进程 jps -q :只输出进程ID jps -m:输出jvm进程启动时传递给main函数的参数 jps -l:输出主类的全名,如果执行的是jar包,则输出jar路径 jps -v:输出jvm进程启动时jvm的参数jstat:用于监视虚拟机各种运行状态信息,可以显示jvm进程中的类转载、垃圾回收,JIT编译等...原创 2019-09-16 14:59:44 · 166 阅读 · 0 评论