
java
多年码龄的小白
这个作者很懒,什么都没留下…
展开
-
Arrays中的二分查找
#JDK对你最有触动的代码#Arrays中的二分查找方法(以double为例)// 片段1private static int binarySearch0(double[] a, int fromIndex, int toIndex, double key) { int low = fromIndex; int high = toIndex - 1; while (low <= high) { ...原创 2021-09-12 22:19:52 · 410 阅读 · 0 评论 -
synchronized and Lock
在JAVA并发中,实现锁通常有synchronized关键字和Lock两种方式,以前不了解Lock锁的时候,感觉Lock锁用起来太复杂,需要手动的加锁和解锁,如果忘记释放又会产生锁死。相比较而言synchronized隐式的用起来就非常简单,但是看了源码以后就被它深深的吸引了。ReentrantLock 是 Lock 的实现类,提供了两个构造器,里面有一个内部类Sync,Sync继承AQS,添加锁和释放锁的大部分操作实际上都是在Sync中实现的。构造器默认初始化的是非公平锁来提高并发度。篇幅有限,我贴出原创 2021-09-12 22:14:47 · 100 阅读 · 0 评论 -
ConcurrentHashMap感触
JDK源码对你最有触动的是哪一段?为什么?public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable { private static final long serialVersionUID = 7249069246763182397L; private static final int MAXIMU...原创 2021-09-12 22:12:51 · 110 阅读 · 0 评论 -
java.lang.RuntimeException: Cannot reconnect.
目录下载源码时:java.lang.RuntimeException: Cannot reconnect.绝决方案:成功: 已经下载源码下载源码时:java.lang.RuntimeException: Cannot reconnect.绝决方案: 添加:-Djava.net.preferIPv4Stack=true成功: 已经下载源码...原创 2021-09-09 13:39:44 · 620 阅读 · 0 评论 -
spring框架之间的关系
1.SpringMVC 作用:接受用户提交的数据,返回服务器数据(交互)2.spring 作用: 整合 其他的第三方框架,可以让程序以一种同意的方式进行调用3.Mybatis 作用: 整合JDBC 方便用户和数据库进行交互(持久化)4.SpringBoot 作用: 简化Spring等框架的操作(简化) 理解: SpringBoot就是一个框架的高级API ...原创 2021-09-08 23:42:16 · 288 阅读 · 0 评论 -
IDEA中 maven的配置
目录第一步: 以下路径进入setting 不用每次开启新的项目都配置maven第二步:maven本地仓库路径设置:maven镜像仓库设置:第一步: 以下路径进入setting 不用每次开启新的项目都配置maven第二步:maven本地仓库路径设置:maven镜像仓库设置: 阿里镜像仓库----可以设置华为等镜像仓库...原创 2021-09-08 23:26:07 · 92 阅读 · 0 评论 -
IDEA 环境说明----
目录设置字体滚轮缩放设定自动化提示 去除大小写匹配-------------无论大小写都会自动提示设置方法的参数自动提示字符集的编码格式(UFT-8)自动编译设置字体滚轮缩放设定自动化提示 去除大小写匹配-------------无论大小写都会自动提示设置方法的参数自动提示字符集的编码格式(UFT-8)自动编译...原创 2021-09-08 23:13:08 · 131 阅读 · 0 评论 -
线程池处理流程
原创 2021-09-06 09:46:05 · 121 阅读 · 0 评论 -
程序计数器
程序计数器:线程私有,无内存溢出问题程序计数器是一块很小的内存空间,用于存储当前运行的线程所执行的字节码的行号指示器。每个运行中的线程都有一个独立的程序计数器,在方法正在执行时,该方法的程序计数器记录的是实时虚拟机字节码指令的地址;如果该方法执行的是Native方法,则程序计数器的值为空(Undefined)。程序计数器属于“线程私有”的内存区域,它是唯一没有Out Of Memory(内存溢出)的区域。...原创 2021-08-31 11:23:02 · 235 阅读 · 2 评论 -
JVM的内存区域
JVM的内存区域分为线程私有区域(程序计数器、虚拟机栈、本地方法区)、线程共享区域(堆、方法区)和直接内存,如图1-2所示。 图1-2线程私有区域的生命周期与线程相同,随线程的启动而创建,随线程的结束而销毁。在JVM内,每个线程都与操作系统的本地线程直接映射,因此这部分内存区域的存在与否和本地线程的启动和销毁对应。线程共享区域随虚拟机的启动而创建,随虚拟机的关闭而销毁。直接内存也叫作堆外内存,它并不是JVM运行时数据区的一部分,但在并发编程中被频繁使用。JDK的NIO模块提供的基于Channel与Buffe原创 2021-08-31 11:20:44 · 114 阅读 · 0 评论 -
遍历ArrayList
package com.hx.conllection;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class ArrayListTests { public static void main(String[] args) { List<String> list=new ArrayList<String>(); l.原创 2021-08-30 12:59:04 · 128 阅读 · 0 评论 -
遍历Map
package com.hx.conllection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class MapTests { public static void main(String[] args) { Map<String, String> map= new HashMap<String, String>(); .原创 2021-08-30 12:57:38 · 145 阅读 · 1 评论 -
多线程
多线程在多核操作系统上,JVM允许在一个进程内同时并发执行多个线程。JVM中的线程与操作系统中的线程是相互对应的,在JVM线程的本地存储、缓冲区分配、同步对象、栈、程序计数器等准备工作都完成时,JVM会调用操作系统的接口创建一个与之对应的原生线程;在JVM线程运行结束时,原生线程随之被回收。操作系统负责调度所有线程,并为其分配CPU时间片,在原生线程初始化完毕时,就会调用Java线程的run()执行该线程;在线程结束时,会释放原生线程和Java线程所对应的资源。在JVM后...原创 2021-08-30 09:46:12 · 93 阅读 · 0 评论 -
面向对象的四大特性是?
抽象: 关键词abstract声明的类叫作抽象类, abstract声明的方法叫抽象方法 一个类里包含了一个或多个抽象方法,类就必须指定成抽象类 抽象方法属于一种特殊方法,只含有一个声明,没有方法体 封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接⼝即方法 在java中通过关键字private, protected和public实现封装。 封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据, 封装实际上使用方法将类的数...原创 2021-08-29 14:36:27 · 166 阅读 · 1 评论 -
String、StringBuffer与StringBuilder的区别
三者都是final, 不允许被继承 在本质都是char[]字符数组实现 String、 StringBuffer与StringBuilder中, String是不可变对象,另外两个是可变的 StringBuilder 效率更快,因为它不需要加锁,不具备多线程安全 StringBuffer⾥⾯操作⽅法⽤synchronized ,效率相对更低,是线程安全的; 使用场景: 操作少量的数据用String,但是常改变内容且操作数据多情况下最好不要用 String ,...原创 2021-08-29 14:34:14 · 160 阅读 · 1 评论 -
面试-----分布式应用的登录校验解决方案有哪几种
==分布式应用的登录校验解决方案有哪几种== 方案一: 真实的应用不可能单节点部署,所以就有个多节点登录session共享的问题需要解决 tomcat支持session共享,但是有广播风暴;用户量大的时候,占用资源就严重,不推荐 方案二: 使用redis存储token: 服务端使用UUID生成随机64位或者128位token,放入redis中,然后返回给客户端并存储在cookie中 + 用户每次访问都携带此token,服务端去redi...原创 2021-08-28 15:26:36 · 392 阅读 · 0 评论 -
线程池的创建
除了使用ThreadPoolExecutor,还有没有其他方式创建线程池 有,可以通过Executors去进行创建,分别有:newCachedThreadPool:创建一个可以根据需要创建新线程的线程池,如果有空闲线程,优先使用空闲的线程newFixedThreadPool:创建一个固定大小的线程池,在任何时候,最多只有N个线程在处理任务newScheduledThreadPool:能延迟执行、定时执行的线程池newWorkStealingPool:工作窃取,使用多个队列来减少竞争...原创 2021-08-27 22:43:13 · 192 阅读 · 2 评论 -
JDK JRE JVM解释
JDK---JAVA开发工具包 -->(JRE+开发工具包)JDK是JAVA开发的核心,是JAVA开发的最小环境JRE是运行时的最小环境JVM 负责加载运行 .class文件 JVM将JAVA代码转换成对应操作系统可以理解的指令,不同的操作系统有不同的JVM与之对应,同一段代码交给JVM,JVM再转换给操作系统....原创 2021-08-27 11:21:20 · 103 阅读 · 0 评论 -
发现一篇复习的好文章
Java面试复习体系总结(2021版)————————————————版权声明:本文为优快云博主「Hi丶ImViper」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/weixin_43314519/article/details/112603595这些题目都是Viper自己在面试期间的准备,以及对这些问题的答案整合。基本上刷完之后,面试的问题除非很刁钻,否则就难不倒你了。链接里面有详细的使用教程,欢迎各位原创 2021-08-27 01:51:04 · 353 阅读 · 1 评论 -
Set和List的区别
List 接口 List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。List 接口存储一组不唯一,有序(插入顺序)的对象。Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。Set 接口存储一组唯一,无序的对象。1.Set 接口实例存储的是无序的, 不重复的数据, List 接...原创 2021-08-27 01:27:27 · 991 阅读 · 0 评论 -
java如何开启线程?怎么保证线程安全
目录线程和进程的区别?如何开启线程?怎么保证线程安全?线程和进程的区别?进程是操作系统进行资源分配的最小单元, 线程是操作系统进行分配的最小单元, 线程隶属于进如何开启线程? 1.继承Thread类,重写run方法; 2.实现Runnable接口,实现run方法; 3.实现Callable接口,实现call方法, 4.通过FutreTask创建一个线程,获取到线程执行的返回值;...原创 2021-08-26 01:48:12 · 188 阅读 · 0 评论 -
java 类的加载顺序
目录1. 先检查内存中是否存在此字节码文件(Loading.class),有没有进行加载 ;2.静态成员先加载,并得到初始值,String类型是null, home=null;3.静态代码块再执行,也就是static成员谁在上面谁先加载;4.当执行 new Loading()的时候,会把静态成员变量进行初始化,home="静态变量家", 并在堆中开辟空间;5.会找到相应的构造函数,但是不会直接执行;6.会先把实例变量进行初始值,再初始化 int age = 0 ...原创 2021-08-26 01:04:01 · 432 阅读 · 0 评论 -
pom.xml 常见用法
1.<java.version>1.8<java.version> 检查JDK版本2.<skipTests>ture<skipTests> 跳过测试类的加载3.parent 集中定义版本号4.dependencies 添加项目依赖 dependency 导入架包5.Spring-boot-starter-web 引入SpringMVC的功能慢慢写,写着玩 给自己的笔记...原创 2021-08-24 23:17:26 · 140 阅读 · 0 评论 -
HashCode
public int hashCode()返回对象的哈希码只, 支持这种方法时为了散列表,如HashMap提供的那样.HashCode的综合是: 1.只要在执行java应用程序时多次在同一个对象上调用该方法,hashCode方法必须始终返回相同的证书,前提是修改了对象中的equals比较的信息. 该证书不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致. 2.如果根据equeals(Object)方法两个对象相等,则在两个对象中的每个对象上调用Has...原创 2021-08-24 22:58:06 · 93 阅读 · 0 评论