
Java
文章平均质量分 53
似水流年,是谁苍白了等待
能不能像光阴一样,慢慢被时间遗忘。
展开
-
JDK 8 Stream流的优美用法——groupingBy结合joining用法
java8 stream流高级应用原创 2022-06-11 12:27:34 · 1600 阅读 · 2 评论 -
重启MySQL报Unit mysqld.service could not be
安装mysql修改完配置文件之后,重启mysql发现重启不了,报Unit mysqld.service could not be found ,大概意思就是说找不到mysqld.service。从网上找了很多种办法都不适合,最后查资料发现在/etc/init.d文件夹下缺少mysqld这样一个文件,这个文件和supper-files/mysql.server文件是一样的,因此将这个文件拷贝到/etc/init.d文件夹下,具体解决如下:1.找到mysqld.server 文件的位置..原创 2021-08-21 14:43:15 · 7288 阅读 · 52 评论 -
Java多线程(二)——Volatile关键字保证可见性,有序性,禁止指令重排实现
一、特性1、保证线程可见性2、保证线程有序性3、禁止指令重排在内存模型层面,如果给一个变量加上volatile,就说明这个变量是可见的,每次修改完读的时候都是从主内存中读的,也就是说每次修改完都存盘了,而不再是存缓存,供本线程自身可见。加上volatile也就避免了线程从自己的工作内存中查找变量的值,必须到主存中获取他的值,线程操作volatile变量都是直接操作内存。那么系统如何保证数据的可见性,有序性,指令重排呢系统底层如何实现可见性1.MESI如果不能解决.原创 2021-07-19 11:55:11 · 1245 阅读 · 47 评论 -
Java多线程(一)——常用的方法
一、线程中常用的非静态方法start()功能:启动一个新线程,在新的线程运行run方法中的代码start方法只是让线程进入就绪,里面代码不一定立刻运行(CPU的时间片还没分给它)。每个线程对象的start方法只能调用一次,如果调用了多次就会出现IllegalThreadStateExceptionrun()功能:新线程启动后会调用的方法如果构造Thread对象时传递了Runnable参数,则线程启动会调用Runnable中的run方法,否则默认不执行任何操作,但可以创建Thread的子类原创 2021-07-16 20:42:33 · 394 阅读 · 24 评论 -
string ,stringbuffer ,stringbuilder演进及使用场景和解决的问题
通过三张图对比他们的前世今生string stringbuffer stringbuilder演进String类被声明为不可变类,用final修饰,被声明为final class ,所有的属性也是用final修饰,也表明这个类不能被继承。String不可变的第二点是,用来存储字符串的char value[]数组被private和final修饰,当一个被final修饰的基本数据类型的变量,则其数值一旦在初始化之后便不能更改。因此他的对象是不可变的,在每次创建对象,字符串拼接都会产生原创 2021-06-01 20:16:22 · 675 阅读 · 57 评论 -
HashSet添加元素源码分析
HashSet 其实底层还是用到的hashMap,讲hashset,其实本质就是在讲HashMap。在执行HashSet()时,会走HashSet的构造方法,详细步骤如下1.执行hashSet()public HashSet(){ map=new HashMap<>();}2.执行add()public boolean add(E e){ return map.put(e,PRESENT)==null; //PRESENT}PRESENT 其实.原创 2021-05-30 17:54:07 · 594 阅读 · 35 评论 -
雪花算法生成的ID在返回给前端之后和生成的不一样,到底是什么原因?
一、前言最近在做项目的时候发现用雪花算法生成的id传给前端以后跟生成的不一样,就纳闷,在想为什么会出现这样的问题?二、问题描述:雪花算法生成id为16位,返回到前端之后后两位变为0从两个点出发:1.第一次想到的是四舍五入,仔细检查了也不是四舍五入,有些比5大的数也变为0了。2.查Long类型和String类型数据长度。上网查了一下,long类型继承的是number类,而number类型精度为16位,而雪花算法生成的id为19位,因此会导致进度丢失插入数据库和返回前端对比原创 2021-05-19 21:35:52 · 4139 阅读 · 6 评论 -
LinkedList删除结点源码分析
目录前言那么LinkedList用来存储数据,那么跟ArrayList有什么区别?LinkedList删除结点是怎么样删除的?1、首先了解LinkedList类声明的变量有哪些2、内部类Node说明3.LinkedList.remove() 方法;默认删除第一个结点1)执行removeFirst2)执行removeFirst3)执行unlinkFirst(f), //将f指向的双向链表的第一个结点拿掉执行过程详解前言在学习LinkedList之前,...原创 2021-05-14 20:27:42 · 961 阅读 · 27 评论 -
Java知识体系最强总结(2020版)
大家好,我是优快云的博主ThinkWon,“2020博客之星年度总评选"开始啦,希望大家帮我投票,每天都可以投多票哦,点击下方链接,然后点击"最大”,再点击"投TA一票"就可以啦! 投票链接:https://bss.youkuaiyun.com/m/topic/blog_star2020...转载 2021-02-28 21:20:57 · 831 阅读 · 5 评论 -
什么是双亲委派机制
双亲委派机制Java虚拟机对class文件采用的是按需加载的方式,也就是说需要使用该类是才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。工作原理1) 如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;2)如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器。3)如果父类加载可以完成泪加原创 2021-02-28 21:10:34 · 656 阅读 · 6 评论 -
前端后端联调解决URL作为参数发生跨域问题
在前后端联调时,把url作为参数传递给后端,结果出现问题,原因是在发送请求的时候在浏览器从正确请求中会解析到两个域名,所以到后端的时候就会出现跨域问题,至于什么是跨域请参考https://www.jianshu.com/p/f049ac7e2220解决办法方法一:将前端需要作为参数的url编码,如下代码urls:encodeURIComponent(encodeURIComponent("https://blog.youkuaiyun.com")),后端进行对传递过来的代码就行解码,为“U...原创 2021-01-27 10:42:43 · 1232 阅读 · 16 评论 -
docker 下载安装Elasticsearch——网络超时解决办法(net/http: TLS handshake timeout)
一、简介全文搜索数据最常见的需求,开源的Elasticsearch 是目前全文搜索的引擎首选,也称为开源分布式搜索引擎。1.特点:分布式 零配置 自动发现 搜索自动分片 集群配置方便二、准备环境elasticsearch7.2.0 docker环境虚拟机 VMware Workstation Pro三、docker命令查找镜像1、docker search elasticsearch2.下载 ES 镜像 docker pull elasticsear..原创 2021-01-16 21:18:26 · 2650 阅读 · 61 评论 -
Redis缓存穿透和雪崩
一、什么是缓存穿透?定义:客户端查询了一个数据库中没有的记录导致缓存在这种情况下无法利用,称之为缓存穿透或者缓存击穿。如图,这是提条正常的查询语句,客户端查询id为“1”的这样一条记录,这条记录在数据库中,并且在第一次查询的时候会将记录放在redis缓存中,在之后的查询中,直接从缓存拿。那如果此时需要查询id为 “-1”的记录,这个记录不在数据库,因此频繁的请求id=“-1”,导致缓存失效,所有的请求都涌向数据库,这样就出现了咱们所说的缓存穿透。在流量大时,可能DB就挂掉了,要是有人利用不存原创 2021-01-15 15:52:12 · 574 阅读 · 20 评论 -
10分钟拿下 HashMap
请相信我,你一定会更优秀!备注:jdk版本为 1.7,初识 HashMap(后续会继续带你拿下1.8+的HashMap)目录1、什么是 HashMap,什么时候选择HashMap?2、HashMap 数据结构及其工作原理?2.1 数据结构2.2 工作原理3、HashMap和HashTable 的异同?4、如何优化 HashMap?1、什么是 HashMap,什么时候选择HashMap?说到容器,你肯定会想到 Java中对象存储容器还有ArrayList,Li...转载 2020-11-28 18:44:28 · 217 阅读 · 9 评论 -
MySQL事务
什么是事务要么都成功,要么都失败事务原则:ACID原则 原子性,一致性,隔离性,持久性 (脏读,幻读...)原子性(Atomicity)要么都成功,要么都失败一致性(Consistency)事务前后的数据完整性要保证一致。持久性(Durability) --事务提交事务一旦提交则不可逆,被持久化到数据库中!隔离性事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务操作数据所干事务之间要相互隔离。事务mysql...原创 2020-11-28 18:24:20 · 216 阅读 · 10 评论 -
项目踩坑——mybatis更新数据库失败
对于刚开始学习mybatis和写SQL的小白来说,出现更新数据库失败这种情况可能很苦恼,怎么看SQL都没问题。现在将这个坑记录下来,提醒自己,也帮助可能会遇到这个问题的人。由于数据库没有设置默认值,数据库中在没有插入数据的情况下为NULL ,所有当更新的时候他会拿新的数据去和NULL做运算,导致怎么更新都为NULL,一直发现数据库中的数据没变,但是不为NULL的记录会改变。1.修改前的SQL。2.修改后的SQL。在之前的基础上做了个判断,这样才更新的时候就不会出现和NULL值做运算的情况原创 2020-11-18 21:14:30 · 3026 阅读 · 8 评论 -
JDK和JRE 的区别
首先是面向的人群不同JDK是面向开发人员使用的SDKJRE 是Java Runtime Enviroment 是java程序的运行环境,面向java程序的使用者,当然java程序员开发的时候也需要JRE,需要调试程序,需要代码跑起来。如果安装jdk,那么会有两套jre 如果安装jre,则有一套唯一的jre...原创 2020-10-26 14:35:18 · 210 阅读 · 8 评论 -
三分钟了解什么是MyCat
最近一直在研究关于项目实战的一些技术点以及一些中间件,今天总结一下mycat的简单知识点,没有太深的东西,只是简单的知道它是什么,能干什么。原创 2020-09-02 14:44:23 · 1273 阅读 · 12 评论 -
快速搭建一个简单的SpringMVC环境
大家好,小编这次分享的主题是如何快速搭建一个SpringMVC环境,每一步都是笔者自己实践,最终实现效果。分享的每一篇博客都是经过用心总结,用心查资料所分享,希望自己用每次的记录,每次的分享成就自己更好的技术,如果您也喜欢分享,喜欢java,可以相互关注,相互交流,一起成长。原创 2020-07-09 16:28:57 · 4371 阅读 · 14 评论 -
IntelliJ IDEA 提示 Error:java: 错误: 不支持发行版本 5——解决办法
一、问题二、原因原因是自己在配置项目的时候可能配置的JDK版本不一致,导致在编译的时候出错,其实自己看看自己的环境就能发现,很好解决。解决办法1.File——Project Structure。2.查看自己Project的SDK,也就是java版本。3.设置Modules,将SDK和之前的Project设置统一。4.File——Settings——Build,Excution,Deployment——Compiler——Java Compiler,修改Projec原创 2020-05-31 21:06:13 · 2195 阅读 · 5 评论 -
一张图让Java程序员搞懂JDBC
一、概述1.什么事JDBC?Java DataBase Connectivity(Java语言连接数据库)。2.本质JDBC是SUN公司制定的一套接口(interface)。Java.sql.*接口都有调用者和实现者面向接口调用,面向接口写实现类,这都属于接口编程。3.为什么要面向接口编程?解耦合:降低程序的耦合度,提高程序的扩展能力。态机制就是非常典型的:面向抽象编程。4.JDBC 开发前的准备工作。先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath原创 2020-05-13 16:06:34 · 932 阅读 · 9 评论 -
InterlliJ IDEA 2020 新建java web 项目找不到 Static Web
由于IDEA版本更新,在新建工程的时候找不到Static Web,而且在插件里也找不到,没法下载。如图:没有Static Web新建项目的方法如下:File——>Project——>Java Enterprise——>Web Application——next项目命名——>选择文件存放路径——Finish在那个窗口新建由自己选择。新建项目结构运行效果到这里就创建好了,根据自己的需求建文件就可以了。...原创 2020-05-12 11:48:56 · 16749 阅读 · 19 评论 -
JDBC 连接MySQL 报exceptions.InvalidConnectionAttributeException,: The server time zone value.... 解决办法
一、问题Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value ' й ʱ ' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' config...原创 2020-05-11 20:11:46 · 995 阅读 · 5 评论 -
Java反射机制——类的加载方法,创建对象,获取方法以及结构
一、java反射机制概述Reflection (反射)被视为动态语言的关键,为什么这么说呢,是因为它在运行时就确定下来了。反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。框架=反射+注解+设计模式1.是什么?加载完类之后,在堆内的方法区中就产生了一个Class类型的对象(一个类只有一个class对象),这个对象就包含了完整类的结构信息,我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构.原创 2020-05-10 21:33:44 · 1696 阅读 · 8 评论 -
java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一
对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考ja...转载 2020-05-07 20:03:54 · 334 阅读 · 6 评论 -
java【六】线程——一文带你了解创建多线程的四种方式
一、线程1.概念:线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线...原创 2020-04-30 10:25:27 · 374 阅读 · 12 评论 -
Java【五】——线程的生命周期
JDK中用Thread.State类定义了线程的几种状态要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象表示线程,在它的一个完整的生命周期中通常要经历如下五个状态。1.新建:当一个 Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态,创建对象使用new关键字。2.就绪:处于新建状态的线程被 starti0后...原创 2020-04-29 11:35:11 · 427 阅读 · 3 评论 -
Java异常处理——try-catch-finally、throws,throw及体系结构
一、概述java程序在执行过程中所发生异常事件可分为两类Error:Java虚拟机无法解决的严重问题。如:JVM内部错误,资源耗尽等严重情况,比如:StackOverflowError,一般不编写针对性的代码进行处理public static void main(String[] args) { //1.栈溢出:java.lang.StackOverflowError ...原创 2020-04-25 16:48:01 · 1360 阅读 · 6 评论 -
面试中很多人走过的坑,看完让你知道Integer和Int
一、前言本次将分享一篇在面试过程中很多人走过的坑,当然是也是我这个只是更加熟悉的一个过程,大佬都懂,主要分享给像我这样的小白,废话不多说,直接上题目:public void test() {Integer i=new Integer(1);Integer j=new Integer(1);System.out.println(i==j);//falseInteger m=...原创 2020-04-23 21:41:21 · 645 阅读 · 9 评论 -
java入门【四】==和equals()区别
目录一、"=="的使用二、equals()方法注意事项三、equals()方法原则:一、"=="的使用==:运算符表示比较“==”两边的对象的值是否相同,但是“值”也是有所区分的,分为基本数据类型和引用数据类型。如果比较基本数据类型,则比较他们的值是否相同。 如果比较的是引用数据类型,则比较的是对象的地址值是否相同。在比较基本数据类型时,表示对数值的操...原创 2020-04-21 15:57:31 · 355 阅读 · 6 评论 -
Java入门【三】——简单了解方法重载和方法重写
一、重载(OverLoad)1.概念:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。概括:"两同一不同",同一个类,方法名相同 参数列表不同,参数个数不同,参数类型不同2.重载的特点:与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或者参数类型)。调用时,根据方...原创 2020-04-13 11:35:27 · 481 阅读 · 5 评论 -
Java后台开发面试实战——TCP三次握手四次挥手
本文来自转载:地址: https://blog.youkuaiyun.com/weixin_43518038/article/details/105208042?utm_source=app1. 解释一下TCP三次握手四次挥手图片来源于微信公众号:码农求职小助手答: 嗯(稍作思考)…三次握手详细来说,在数据传输开始前:第一次握手:客户端向服务端发送一段用来连接请求的报文,其中SYN=1,AC...原创 2020-04-08 18:56:16 · 484 阅读 · 6 评论 -
Java入门【一】数据类型转换——整数型
关于java语言当中的整数型数据类型 占用空间 默认值 取值范围 byte 1 0 [-128~127] short 2 0 [-23768~23767] int 4 0 long 8 0L [-21474836...原创 2020-04-05 16:37:45 · 1092 阅读 · 7 评论 -
Java入门【二】流程控制——循环结构
目录一、概述1、什么是循环结构2、循环语句分类3、循环语句组成的四个部分二、使用1.for循环结构的使用2.while循环的结构3.do-while循环的结构一、概述1、什么是循环结构在某些条件满足的情况下,反复执行特定代码的功能。2、循环语句分类for循环 while循环 do-while循环3、循环语句组成的四个部分初始化部分(in...原创 2020-04-07 17:16:41 · 407 阅读 · 6 评论