![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
ying______
这个作者很懒,什么都没留下…
展开
-
java中异常处理finally和return语句的执行顺序
finally代码块的语句在return之前一定会得到执行如果try块中有return语句,finally代码块没有return语句,那么try块中的return语句在返回之前会先将要返回的值保存,之后执行finally代码块,最后将保存的返回值返回,finally代码块虽然对返回值进行修改也不影响返回值,因为要返回的值在执行finally代码块之前已经保存了,最终返回的是保存的旧值。如果t...转载 2020-04-21 19:06:35 · 165 阅读 · 0 评论 -
Java队列(Queue)
1.add(E), offer(E) 在尾部添加元素:相同:禁止添加 null 元素,否则会报空指针 NullPointerException;不同: add() 方法在添加失败(比如队列已满)时会报 一些运行时错误;而 offer() 方法添加失败时返回 false。2.remove(), poll() 删除并返回第一个元素:当队列为空时 remove() 方法会报 NoSuchEle...原创 2020-01-27 18:27:37 · 177 阅读 · 0 评论 -
静态代理和动态代理(java)
我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC。对于Spring的核心AOP来说,AOP的原理就是java的动态代理机制来实现,所以本篇随笔就是对java代理做一个介绍1、代理(Dynamic Proxy) 代理分为静态代理和动态代理,静态代理是在编译时就将接口、实现类、代理类一股脑儿全部手动完成,但如果我们需要很多的代理,每一个都这么手动的去创建实属浪费时间...转载 2019-12-02 20:42:01 · 161 阅读 · 0 评论 -
Java:ArrayList和数组int[]的相互转化
ArrayList向int[]转化时会报错,这是因为ArrayList中规定的泛型是Integer,不能直接转化到int[]可以使用流操作完成:import java.util.Arrays;import java.util.List;import java.util.stream.Collectors; public class Main { public static vo...转载 2019-11-20 20:38:07 · 9656 阅读 · 0 评论 -
JUnit单元测试--IntelliJ IDEA问题记录
单元测试的基本使用环境配置使用idea IDE 进行单元测试,首先需要安装JUnit 插件。安装JUnit插件步骤File–>settings–>Plguins–>Browse repositories–>输入JUnit–>选择JUnit Generator V2.0安装。使用JUnit插件在需要进行单元测试的类中,使用快捷键alt+insert,选择JU...原创 2019-11-07 20:11:13 · 245 阅读 · 0 评论 -
spring问题记录
JUnit单元测试–IntelliJ IDEA https://www.cnblogs.com/huaxingtianxia/p/5563111.htmlIdea单元测试Junit Generator设置 https://www.cnblogs.com/expiator/p/9729802.html原创 2019-11-07 20:09:14 · 96 阅读 · 0 评论 -
jvm内存区域图示
原创 2019-10-20 22:35:06 · 127 阅读 · 0 评论 -
Java自动装箱、拆箱
什么是自动装箱,拆箱先抛出定义,Java中基础数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换,转换过程对程序员是透明的,这就是装箱和拆箱,装箱和拆箱可以让我们的代码更简洁易懂Java中基础数据类型与它们对应的包装类见下表(共8种):当表格中左边列出的基础类型与它们的包装类有如下几种情况时,编译器会自动帮我们进行装箱或拆箱.进行 = 赋值操作(装箱或拆箱)进行+,-,*,...转载 2019-10-20 20:01:51 · 92 阅读 · 0 评论 -
ArrayList核心源码
package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;public class ArrayList<E> extends AbstractList<E> ...转载 2019-10-16 16:44:49 · 57 阅读 · 0 评论 -
JVM指令集及各指令的详细使用说明
一、JVM指令助记符1)操作数栈变量到操作数栈:iload,iload_,lload,lload_,fload,fload_,dload,dload_,aload,aload_操作数栈到变量:istore,istore_,lstore,lstore_,fstore,fstore_,dstore,dstor_,astore,astore_常数到操作数栈:bipush,sipush,ldc,l...转载 2019-10-07 16:39:33 · 248 阅读 · 0 评论 -
hashmap中tableSizeFor()解释n >>>1操作
import java.util.HashMap;public class HashMapDemo { //实现了把一个数变为最接近的2的n次方 public static void main(String[] args) { int cap=5; int result=tableSizeFor(cap);//8 System.o...原创 2019-09-24 20:11:19 · 3468 阅读 · 5 评论 -
Java>>与>>>的区别
>>:带符号右移。正数右移高位补0,负数右移高位补1。比如:4 >> 1,结果是2;-4 >> 1,结果是-2。-2 >> 1,结果是-1。>>>:无符号右移。无论是正数还是负数,高位通通补0。对于正数而言,>>和>>>没区别。对于负数而言,-2 >>> 1,结果是214748...转载 2019-09-24 19:50:48 · 161 阅读 · 0 评论 -
剑指offer-左旋转字符串
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路输入abcXYZdef和3, 以3个分开,分为abc和XYZdef,分别反转为bca与fed...原创 2019-09-12 09:04:48 · 90 阅读 · 0 评论 -
剑指offer-翻转单词顺序列
题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路student. ...原创 2019-09-11 21:16:35 · 96 阅读 · 0 评论 -
并发编程demo记录demo24 TicketSeller系列(主要介绍同步容器类)
马士兵高并发编程系列记录https://www.bilibili.com/video/av11076511/?spm_id_from=333.788.videocard.4问题描述有N张火车票,每张票都有一个编号同时有10个窗口对外售票请写一个模拟程序TicketSeller1分析下面的程序可能会产生哪些问题?重复销售超量销售import java.util.ArrayList...原创 2019-09-10 22:39:44 · 343 阅读 · 0 评论 -
JAVA多线程之wait/notify
wait() 与 notify/notifyAll() 的执行过程由于 wait() 与 notify/notifyAll() 是放在同步代码块中的,因此线程在执行它们时,肯定是进入了临界区中的,即该线程肯定是获得了锁的。当线程执行wait()时,会把当前的锁释放,然后让出CPU,进入等待状态。当执行notify/notifyAll方法时,会唤醒一个处于等待该 对象锁 的线程,然后继续往下...转载 2018-12-29 11:25:58 · 218 阅读 · 0 评论 -
Java run()与start()区别
调用start方法方可启动线程,真正实现了多线程;而run方法只是thread的一个普通方法调用还是在当前线程里执行,并没有增加线程的数量。start()用start()来启动线程,真正实现了多线程,就算出现start()方法也是继续执行下面的代码而不需等待run()体代码执行完,如下代码无需等待pong()方法输出B而是继续执行下面的输出Apublic class Test { p...原创 2019-01-09 20:20:22 · 5028 阅读 · 0 评论 -
java int转String int转Interger
一、int转String有三种方式(1)num + “”(2)String.valueOf(num)(3)Integer.toString(num)二、String转换为int型Integer.parseInt(str);int到Integer:int a=3;Integer A=Integer.valueOf(a);Integer到int:Integer A=new Inte...原创 2019-08-10 16:21:34 · 380 阅读 · 0 评论 -
Java线程同步:synchronized锁住的是代码还是对象
demo1class Sync { public synchronized void test() { System.out.println("test开始.."); try { Thread.sleep(1000); } catch (InterruptedException e) { e...转载 2019-08-28 23:26:31 · 124 阅读 · 0 评论 -
并发编程demo记录demo1-18
马士兵高并发编程系列记录https://www.bilibili.com/video/av11076511/?spm_id_from=333.788.videocard.4demo1public class T1 { private int count = 10; private Object o = new Object(); // o可以理解为监视器,谁要指向下面那个代码,先到o那里...原创 2019-09-04 21:49:45 · 193 阅读 · 0 评论 -
Java中遍历Map对象的4种方法
1. 在for-each循环中使用entries来遍历Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + ...转载 2019-09-02 20:06:36 · 501 阅读 · 0 评论 -
并发编程demo记录demo19 MyContainer(监控)系列
马士兵高并发编程系列记录https://www.bilibili.com/video/av11076511/?spm_id_from=333.788.videocard.4MyContainer1(not ok)实现一个容器,提供两个方法,add,size写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束分析下面这个程序,能完成这个功...原创 2019-09-10 21:16:22 · 215 阅读 · 0 评论 -
并发编程demo记录demo20 ReentrantLock(可重入锁)系列
ReentrantLock1reentrantlock用于替代synchronized本例中由于m1锁定this,只有m1执行完毕的时候,m2才能执行这里是复习synchronized最原始的语义import java.util.concurrent.TimeUnit;public class ReentrantLock1 { synchronized void m1() { //锁...原创 2019-09-11 09:12:01 · 384 阅读 · 0 评论 -
并发编程demo记录demo21 MyContainer(固定容量同步容器)系列
面试题:写一个固定容量同步容器(满了之后,put方法要等着,空了之后,get方法要等着),拥有put和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用way1使用wait和notify/notifyAll来实现import java.util.LinkedList;import java.util.concurrent.TimeUnit;pu...原创 2019-09-11 09:11:50 · 167 阅读 · 0 评论 -
并发编程demo记录demo22 ThreadLocal(线程局部变量)系列
ThreadLocal1ThreadLocal线程局部变量import java.util.concurrent.TimeUnit;public class ThreadLocal1 { volatile static Person p = new Person(); //加不加volatile打印出来都是lisi public static void main(String[]...原创 2019-09-11 09:11:35 · 162 阅读 · 0 评论 -
并发编程demo记录demo23 Singleton(内部类实现单例模式)
马士兵高并发编程系列记录https://www.bilibili.com/video/av11076511/?spm_id_from=333.788.videocard.4线程安全的单例模式:阅读文章:http://www.cnblogs.com/xudong-bupt/p/3433643.html更好的是采用下面的方式,既不用加锁,也能实现懒加载使用内部类的单例模式不用加锁,也可以实...原创 2019-09-10 22:26:00 · 128 阅读 · 0 评论 -
java异常中throw和throws的区别
throws和throwthrows:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。用在方法声明后面,跟的是异常类名可以跟多个异常类名,用逗号隔开表示抛出异常,由该方法的调用者来处理throws表示出现异常的一种可能性,并不一定会发生这些异常throw:则是用来抛出一个具体的异常类型。用在方法体内,跟的是异常对象名只能抛出一个异常对象名表示...转载 2018-12-29 11:17:41 · 143 阅读 · 0 评论