Java知识
文章平均质量分 59
hiCrazyYoung
这个作者很懒,什么都没留下…
展开
-
MultipartFile 上传文件的踩坑点
上传文件原创 2022-09-29 11:14:31 · 1471 阅读 · 1 评论 -
Java常用工具库记录
1、比较两个对象是否相等当我们用equals比较两个对象是否相等的时候,还需要对左边的对象进行判空,不然可能会报空指针异常,我们可以用java.util包下Objects封装好的比较是否相等的方法Objects.equals(strA,strB);源码是这样的publicstaticbooleanequals(Objecta,Objectb){return(a==b)||(a!=null&&a.equals(b));}...原创 2021-08-02 18:09:37 · 164 阅读 · 0 评论 -
多线程环境下long和double不安全问题
首先我们分析一下volatile,它具有可见性、原子性和有序性1他是保证了可见性,volatile提供了happens-before的保证,确保一个线程的修改对其他线程是可见的。2.原子是世界上的最小单位,具有不可分割性3.这个关键字会禁止指令重排序优化。也就是说,在 volatile 变量的赋值操作后面会有一个内存屏障(生成的汇编代码上),读操作不会被重排序到内存屏障之前。正题:long和double线程不安全分析在java中除了long,double之外的所有基本类型的读和赋值,都是原创 2020-10-23 11:43:46 · 1346 阅读 · 4 评论 -
通过枚举和工厂模式解决if-else语句
枚举方式一、接口public interface DoThing { void doThing();}二、枚举类public enum EnumThing implements DoThing { ADMIN{ @Override public void doThing() { System.out.println("111"); } }, ROLE1{ @Overr原创 2020-10-26 09:59:57 · 417 阅读 · 4 评论 -
重写equals必须重写hashcode解析
Object类默认的equals比较规则就是比较两个对象的内存地址首先我们只重写equals()方法public class Student { private String name; private int age; private String QQ; @Override public boolean equals(Object o) { if (this == o) return true; if (o == n...转载 2020-05-11 15:10:34 · 194 阅读 · 0 评论 -
String相关知识点
1.判定定义为String类型的st1和st2是否相等,为什么packagestring;publicclassDemo2_String{publicstaticvoidmain(String[] args){String st1 ="abc";String st2 ="abc";System.out.println(st1 == st2);System.out.println(st1.equals(st2));}...原创 2020-05-09 17:32:13 · 217 阅读 · 0 评论 -
java对象的访问方式句柄和直接指针介绍
建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的 具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定 义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方式也是 取决于虚拟机实现而定的。目前主流的访问方式有使用句柄和直接指针两种。 如果使用句柄访问的话,那么Java堆中将会划分出一块内存来作为句柄池,reference中 存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信原创 2020-05-09 16:51:40 · 581 阅读 · 0 评论 -
解压修改压缩删除读写文件一体化工具类
源码github地址:https://github.com/AReallyMan/jiexiZIP/blob/master/OperateZipsUtil.java一、解压:使用ZipFile操作zip包,可以很方便去解压目标zip到指定目录,如果有多个zip我们可以先遍历目录,拿到zipPath进行解压。/** * 解压文件 * @param zipPath zip压缩包文件的路径...原创 2020-05-08 14:41:06 · 249 阅读 · 0 评论 -
简书记录的一些知识点
https://www.jianshu.com/u/029e3325ea37原创 2020-04-29 14:36:50 · 206 阅读 · 0 评论 -
HashMap底层原理分析 学习
总所周知 HashMap 是面试中经常问到的一个知识点,也是判断一个候选人基础是否扎实的标准之一,因为通过HashMap可以引出很多知识点,比如数据结构(数组、链表、红黑树)、equals 和 hashcode方法。除此之外还可以引出线程安全的问题,HashMap是我在初学阶段学到的设计的最为巧妙的集合,里面有很多细节以及优化技巧都值得我们深入学习,话不多说先看看相关的面试题:...转载 2020-04-27 17:18:07 · 1123 阅读 · 0 评论 -
jdk1.8 HashMap线程不安全解释
一、jdk1.7在jdk1.8中对HashMap做了很多优化,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,转移元素的过程中,使用的是头插法,也就是链表的顺序会翻转,这里也是形成死循环的关键点二、jdk1.8在jdk1.8中对HashMap进行了优化,在发生hash碰撞,不再采用头插法方式,而是直接插入链表尾部,因此不会出现环形链表的情况,但是在多线程的情况下仍...原创 2020-04-23 16:12:29 · 2681 阅读 · 1 评论 -
java先解压文件(ZIP)、然后修改文件内容、最后压缩会文件工具类
运用有zip4j的方法,需要导入jar或者pom文件,我这边用的是1.3.2版本解压文件,读写文件,压缩文件都可自行拆分出来单独使用,我这边是整体使用的一个工具类最后一段注释的代码,只是我用了另一种解压方式代替,功能依然正常;废话不多说,源码:package com.example.jiexi.util;import net.lingala.zip4j.core.ZipFi...原创 2020-04-21 15:11:46 · 1029 阅读 · 1 评论 -
Java 多线程详解
线程线程的概念,百度是这样解释的:线程(英语:Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(Lightweight Processes),但轻量进程更多指内核线程(Kernel T...原创 2020-04-20 15:31:00 · 253 阅读 · 0 评论 -
解决PIP install速度慢配置豆瓣镜像
使用国内的镜像源来加速,比如豆瓣源pip install ddt命令改为:pip install ddt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com原创 2020-03-31 14:35:23 · 818 阅读 · 0 评论 -
细说一个汉字等于几个字符,以及汉字,字符,字节,位之间的关系
一:1个汉字 = 1个字 = 1个字符二:1个字符 = 1个字节 = 8bit(ACSII码下)三:1个字符 = 2个字节 = 16bit(Unicode码下)以前一直使用oracle11g,一个汉字占3个字节,所以在操作MySQL时也一直这样分配长度。今天测试了下mysql发现不对了可以看到第...转载 2019-11-25 16:01:25 · 3154 阅读 · 0 评论 -
在springboot项目中读取配置文件
yml文件中,加入需要读取的是es配置中的信息,则需要封装一个类配置一个前缀之后可以直接调用端口,ip等信息因为在项目中端口ip等信息不可能直接在项目中写死的,我们也不能上线以后还改动代码,所以需要读取配置信息第二种:在yml文件中写了配置读取lastUpdateTimeFile配置时,可以用@value注解,...原创 2019-09-06 16:12:36 · 457 阅读 · 0 评论 -
IDEA断点调试
一、首先进入到Debug模式二、F8逐行执行,一行一行执行F7进入方法Shift+F8跳出方法F9跳到下一个断点,没有则结束原创 2019-09-06 16:48:44 · 170 阅读 · 0 评论 -
java的家族中为什么很多方法或者属性被设置为private详解
问题描述: 大家都知道,javaBean的属性定义为pirvate,然后提供get set方法我可以定义成public,不提供get set方法,这样也是可以的呀,为什么还要定义为private?解释: 就我的理解,语言本身来讲,你只是简单存取下数据,也不考虑什么对象啊之类的各种概念,当然可以直接public掉,来尽快的完成程序功能即可。考虑到所谓的面向对象的概...原创 2019-09-10 09:02:18 · 1200 阅读 · 0 评论 -
java知识整理
1、cookie和session的作用、区别、应用范围。答:a、cookie数据保存在客户端,session数据保存在服务端。 b、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,相当重要的数据,应该使用session保存到服务端。 c、session会在一定时间内保持在服务器上,但是会占用内存资源,当访问的用户过多,会加重服务器的负...原创 2019-09-11 14:15:25 · 166 阅读 · 0 评论 -
java集合中一些重要的集合整理汇总!
一、hashMap和hashtable和concurrentHasmMap二、hashset和treeset的区别HashSet:HashSet底层是HashMap,底部也是用hashmap保存数据,用equals和hashcode先比较再存储treeSet:底层基于treeMap,由于TreeSet是基于TreeMap实现的,几乎所有的方...原创 2019-09-11 17:35:12 · 227 阅读 · 0 评论 -
List和Map集合的遍历方式和删除
遍历:删除:List<Integer> list=new ArrayList<Integer>();如果用以下方式遍历会报错:Map:Map<String,String> map=new HashMap<String,String>();仔细观看你会发现删除的方法,list和map其实是等价的,只不过lis...原创 2019-09-12 16:35:24 · 442 阅读 · 0 评论 -
线程Thread学习记录
新建、就绪、运行、阻塞、死亡其它六个参数很好理解,就记住这个threadfactory1、首先是有个默认的corepoolsize,今日当值的人数,当达到这个默认值时,继续进来线程,则会进入阻塞队列中,等待叫号,如果corepoolsize今日当值和阻塞队列worequeu都满了,再进来线程人员,则会开...原创 2019-09-13 12:02:07 · 172 阅读 · 0 评论 -
记录下之前所总结的spirngmvc数据库的一些杂乱知识点
Restful风格的:(!!在springmvc控制器层,查询到的学生信息可以直接用return student;此时在前端jquery中的回调函数function(result){}中的result就是控制器层的那个学生数据可以通过遍历取出来,如果是ruturn "student"则是返回一个页面,但记得此时必须在方法上加上@requestbody表示返回一个json字符串)!!向...原创 2019-09-14 15:58:53 · 226 阅读 · 0 评论 -
线程中的join方法解释
https://blog.csdn.net/u013425438/article/details/80205693https://www.cnblogs.com/lyuweigh/p/9568697.html这两个对比着来看我自己的理解是,join方法他的底层是wait方法,join方法类似一个容器,一个启动的线程调用了这个join方法则直到线程运行结束,这个join方法下的其他线程语...原创 2019-09-19 17:52:32 · 228 阅读 · 0 评论 -
阻塞队列的案例以及分析
List CopyOnWriteList BlockQueue用lock锁实现的生产消费Lock和Condition类似锁和钥匙的关系精确唤醒:class Share{ private int num=1;//1:A 2:B 3:C//一把锁有三把钥匙 private Lock lock=new ReentrantL...原创 2019-09-20 16:56:02 · 219 阅读 · 0 评论 -
关于除法遇到的一些有意思的东西
在double型数中0.0/0.0结果为NaN意思为Not a number1.0/0.0结果为InFinity无穷大,程序运行不会报错,但如果为其他类型比如int、float则会报runtimeException原创 2019-09-05 21:15:09 · 300 阅读 · 0 评论