![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 71
是你吗是梦吧_
这个作者很懒,什么都没留下…
展开
-
AQS层层剖析
在源码中,tryAcquire方法是被protected修饰,参数是int值,代表队state的修改,在共享模式下,可能会有多个线程正在共享资源,所以state需要表示线程占用的数量,所以是int类型的。然后程序将会从队列的尾节点开始搜索,找到除了head之外最靠前的节点,即head的后面一个(第二个)当一个线程以共享模式获取锁时,其他也想以共享模式获取锁的线程,也能够争抢锁,从而一起访问共享资源。在AQS的FIFO队列中,头结点其实是一个虚节点,意思是说,头结点并不是当前需要去拿锁的节点,...原创 2022-08-26 22:02:42 · 807 阅读 · 1 评论 -
CAS,乐观锁
Java并发包为了解决这个问题,提供了一个带有标记的原子引用类“AtomicStampedReference”,它可以通过控制变量值的版本来保证CAS的正确性。CAS指令执行时,当且仅当内存地址V的值与预期值A相等时,将内存地址V的值修改为B,否则就什么都不做。因此,在使用CAS前要考虑清楚“ABA”问题是否会影响程序并发的正确性,如果需要解决ABA问题,改用传统的互斥同步可能会比原子类更高效。的缩写,中文意思是:比较并替换。有舔狗一号,舔狗二号,舔狗一号率先冲到女神这,并且把牌子改为1,...原创 2022-08-26 21:57:42 · 345 阅读 · 0 评论 -
Java中的锁机制详解
并发情况下,多个线程可能会对统一资源产生争抢,那么可能导致数据不一致问题。为了解决这个问题引入了锁机制,通过一种抽象的锁来对资源进行锁定。原创 2022-08-26 11:47:23 · 563 阅读 · 0 评论 -
面面面试三
项目中的ThreadLocal用作获取登录后用户的信息。它首先就是实现put get remove 三个方法,在用户登录后放进ThreadLocal中,需要的时候get,get完进行remove。如果不进行remove会造成内存泄露内存泄露:之后都不用的东西一直留在内存中。原创 2022-08-19 19:26:13 · 236 阅读 · 0 评论 -
面试经验二
MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。原创 2022-08-19 19:25:00 · 274 阅读 · 0 评论 -
面试经历一
首先就有哪些字段,用整型还是字符型啥的,需要设置索引就设置一下,默认就是主键索引嘛。原创 2022-08-19 19:24:11 · 201 阅读 · 0 评论 -
[Vue warn]: Error in render: “TypeError: Cannot read properties of null (reading ‘length‘)
这是我遇到这个报错的解决方法,希望对你也有所启发!读题:就是**资源找不到,或者为null**,接下来就是找哪里出错了!原创 2022-08-09 09:12:23 · 1165 阅读 · 0 评论 -
缓存穿透击穿雪崩
缓存穿透:在默认情况下,,数量少可能问题不大,可是一旦。网络安全中也有人恶意使用这种手段进行攻击被称为洪水攻解决方法,以便快速确定是否存在这个值,一次请求若在缓存和数据库中都没找到,就在缓存中放一个空对象用于处理后续这个请求。。解决这个缺陷的方式就是即使对空值设置了过期时间,还是会存在缓存层和存储层的数据会有一段时间窗口的不一致,这对于需要保持一致性的业务会有影响。...原创 2022-08-08 17:53:54 · 103 阅读 · 0 评论 -
redis发布订阅与集群
Redis写下笔记以供复习原创 2022-08-08 17:51:54 · 708 阅读 · 0 评论 -
redis持久化
根据狂神说Redis写下笔记以供复习B站狂神说Redis!原创 2022-08-08 17:36:17 · 215 阅读 · 0 评论 -
SpringBoot集成redis
根据狂神说Redis写下笔记以供复习B站狂神说Redis!原创 2022-08-08 17:34:48 · 236 阅读 · 0 评论 -
redis事务
根据狂神说Redis写下笔记以供复习B站狂神说Redis!原创 2022-08-08 17:29:47 · 72 阅读 · 0 评论 -
redis三大特殊数据类型
使用经纬度定位地理坐标并用一个有序集合zset保存,所以zset命令也可以使用key longitud(经度) latitude(纬度) member […] 将具体经纬度的坐标存入一个有序集合key member [member…] 获取集合中的一个/多个成员坐标key member1 member2 [unit] 返回两个给定位置之间的距离。默认以米作为单位。...原创 2022-08-08 17:28:19 · 111 阅读 · 0 评论 -
redis五大数据类型
在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。原创 2022-08-08 17:27:25 · 128 阅读 · 0 评论 -
一天搞定Linux常用的基本命令!!!
tips:更改主机名:hostnamecd : 切换目录命令!./ : 当前目录cd … : 返回上一级目录创建文件夹 mkdir chen进入根目录 cd /查看当前文件夹的文件 ls查看当前文件夹的全部文件 ls -al在Linux中ls可能是最常常被使用的!-a 参数 : all ,查看全部的文件,包括隐藏文件-l 参数 :列出所有的文件,包含文件的属性和权限,没有隐藏文件所有Linux可以组合使用!如 ls -alcd 目录名(绝对路径都是以/开头的,相对路径,对于当前目录该如何寻找 …/原创 2022-08-08 17:25:07 · 168 阅读 · 0 评论 -
redis学习-2
本系列根据狂神说Redis写下笔记以供复习B站狂神说Redis!原创 2022-08-08 17:17:34 · 181 阅读 · 0 评论 -
redis入门-1
1、单机Mysql时代数据量增加到一定程度,单机数据库就放不下了数据的索引(B+ Tree),一个机器内存也存放不下访问量变大后(读写混合),一台服务器承受不住。2、Memcached(缓存) + Mysql + 垂直拆分(读写分离)优化过程经历了以下几个过程:优化数据库的数据结构和索引(难度大)文件缓存,通过IO流获取比每次都访问数据库效率略高,但是流量爆炸式增长时候,IO流也承受不了。...原创 2022-08-08 17:16:20 · 106 阅读 · 0 评论 -
一篇搞定MyBatisPlus!
一篇囊括大部分MybatisPlus知识的文章,助你快速入门上手!原创 2022-08-07 22:50:32 · 2058 阅读 · 0 评论 -
一篇搞定Git!
一篇非常全简介的Git博客,上手飞快~原创 2022-08-07 22:37:53 · 158 阅读 · 0 评论 -
java.io.FileNotFoundException: class path resource [beans.xml] cannot be opened because it does no e
是beans.xml文件的位置问题在项目的根目录下新建一个包,名字随意,把beans.xml拉到里边选中该包右键选择Mark Directory as选择Resources rootOK!原创 2022-07-12 19:00:23 · 705 阅读 · 0 评论 -
SpringBoot基础实操记录
springboot基础实操记录了解一下三层架构及其作用:Dao层(持久层):封装一些关于数据库操作在此,但是实际实现不在这。JPA/MyBatis只要关于数据库操作都在这里定义,里面写的方法都交给service层调用,这样service完全不需要接触数据库,实现了高耦合。Service层(业务层):具体实现都在这,增删改查等一般是定义接口service,然后serviceImpl去实现这些方法。Web(controller)层(表现层):前端页面的控制器:调用service的方法来实现业务以原创 2022-05-26 21:49:00 · 108 阅读 · 0 评论 -
SpringBoot入门
SpringBoot入门1.微服务:一个项目 可以由多个 小型服务构成(微服务)2.spring boot可以快速开发 微服务模块 a.简化j2ee开发 b.整个spring技术栈的整合(整合springmvc spring) c.整个j2ee技术的整合(整合mybatis redis)3准备:jdk:JAVA_HOME: jdk根目录path:jdk根目录\binclasspath: .;jdk根目录\libmaven:MAVEN_HOME: maven根目录path:原创 2022-05-26 21:48:06 · 107 阅读 · 0 评论 -
Java对象和构造方法
Java对象概念的理解编程思想中有一句话万物皆对象,对于Java来说,就是把数据和对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出他们的共性,形成——类。在面对对象的编程方式里,对象有属性有方法,例如dog类cat类,都有年龄、名字等属性,dog会吃狗粮,cat会吃猫粮,吃东西就是方法。对象不是孤立的,是有父子关系的。例如有一个父类pet,dog、cat共同的属性方法都可以在父类pet中定义,如年龄、名字、吃(这个动作)在父类中定义,子类继承后就可以使用了。以下为转载内容,在原创 2022-05-26 21:45:16 · 132 阅读 · 0 评论 -
Java类加载机制
重点补充:类加载机制类加载指的是JVM加载字节码(class文件)的过程。这张图是java类的生命周期图,完整一点可以在加载前面加上javac编译这个过程。类加载只包括加载、连接、初始化。注意区分加载和类加载的区别,加载只是类加载的一个过程其中解析部分是灵活的,它可以在初始化之前或之后再进行,实现"后期绑定"。其他顺序不可改变。逐个了解:加载:加载是一个读取class文件,将其转化为某种静态数据结构存储在方法区内,并在堆中生成一个便于用户调用的java.lang.Class类原创 2022-05-26 21:37:31 · 110 阅读 · 0 评论 -
Java数据结构与算法之栈与队列
栈:底层为数组与手枪压子弹一样,先进的后出,后进的先出。下面是代码演示:package com.ShuJu;/* Creat by CJ 2022/2/26 15:00*/import java.util.Arrays;public class MyStack { //栈的底层是用数组来存储数据的 int[] elements; public MyStack(){ elements = new int[0]; } //压原创 2022-02-26 16:00:06 · 62 阅读 · 0 评论 -
Java数据结构与算法之数组
数组的基本使用package com.ShuJu;/* Creat by CJ 2022/2/13 20:28*/public class TestArray { public static void main(String[] args) { int[] arr1 = new int[3]; int length1 = arr1.length; System.out.println("arr1's length: " + leng原创 2022-02-24 20:51:12 · 406 阅读 · 0 评论 -
java基础面试题51~60
51.创建线程有哪几种方式?继承Thread类创建线程定义Thread类的子类,重写run()方法,即线程的执行体创建Thread子类的实例,即创建线程对象调用线程对象的start()方法来启动线程实现Runnable接口创建线程定义实现Runnable接口的类,重写run()方法创建Runnable实现类的实例,以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象调用线程对象的start()方法启动线程使用Callable原创 2022-02-13 14:18:43 · 368 阅读 · 0 评论 -
java基础面试题41~50
41.ArrayList 和 Vector 的区别是什么?Vector是线程安全的,源码中有很多的synchronized可以看出,而ArrayList是线程不安全的,它的方法之间是线程不同步的,导致Vector效率无法和ArrayList相比。ArrayList和Vector都采用线性连续存储空间,当存储空间不足时,ArrayList默认增加为原来的50%,Vector默认增加原来的一倍。从源码可以看出vector多了一个public Vector(int initialCapacity, int原创 2022-02-12 20:54:29 · 256 阅读 · 0 评论 -
java基础面试题31~40
31.java中如何跳出多重循环在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环public static void method1(){ ok: for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ System.out.println("xxx"); if(j==2){ break ok;//跳到循环外的ok,终止整个循原创 2022-02-11 16:56:25 · 553 阅读 · 0 评论 -
java基础面试题21~30
对字符串的都有哪些方法?详细说明下。具体有String、StringBuffer和StringBuilder这三个类。String是不可变类,每次操作都会生成新的String对象,并将结果指针指向新的对象,由此会产生内存碎片。如果要频繁对字符串修改,采用StringBuffer 和 StringBuilder更好一些。StringBuffer是线程安全的,多线程的时候推荐使用StringBuffer,但是大多数情况下是单线程,大多使用StringBuilder。22.String str=.原创 2022-02-10 15:00:18 · 593 阅读 · 0 评论 -
Java基础面试题11~20
11.a.hashCode() 有什么用?与 a.equals(b) 有什么关系?hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。equals与hashCode的关系?equals()相等的两个对象,hashCode()一定相等;hashCode()不相等,一定能推出equals()也不相等;hashCode()相等,equals()可能相等,也可能不等。12.final、finalize 和 finally原创 2022-02-09 14:56:01 · 75 阅读 · 0 评论 -
Java基础面试题1~10
Java基础面试题1、面向对象的特征有哪些方面?抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;继承:继承是从已有类得到继承信息创建新类的过程。多态性:多态性是指允许不同子原创 2022-02-09 14:54:51 · 325 阅读 · 0 评论 -
yaml语法
yaml语法# k = v# 普通的key-valuename: chenmou# 对象student: name: chenmou age: 3#行内写法student1: {name: chenmou,age: 3}#数组pets: - cat - dog - pigpets1: [cat,dog,pig]#一定注意这些空格yaml实现给属性赋值:创建springboot项目,勾上spring Web在chen目录创建pojo文件夹,写原创 2022-02-09 14:53:27 · 987 阅读 · 0 评论 -
Could not parse as expression: “/lib/tocbot/tocbot.min.js“ (template: “_fragments“ - line 89, col4
1.APPLICATION FAILED TO START报错无法启动***************************APPLICATION FAILED TO START***************************Description:Failed to bind properties under 'logging.level.file' to org.springframework.boot.logging.LogLevel: Property: logging原创 2022-02-09 14:51:21 · 701 阅读 · 0 评论 -
Several ports (8005, 8888) required by Tomcat v10.0解决方法
原因:8005、8888端口号被占用。解决方法(以8888端口号为例):找到占用8888端口的进程,将之关闭即可。1.打开cmd,输入netstat -ano,找到8888端口2.查询占用端口号的进程:tasklist|findstr “查询出的 listening”。这里是6872,即输入tasklist|findstr “6872”3.关闭进程:taskkill /f /t /im 查询出占用程序名称,这里是javaw.exe,即输入taskkill /f /t /im javaw.exe.原创 2021-05-08 20:36:31 · 396 阅读 · 0 评论 -
Tomcat下载及配置
Tomcat下载及配置下载配置启动下载1.点击->tomcat官网2.3.解压后有如下目录:其中bin:可执行文件(startup.bat)conf:配置文件(server.xml)lib:tomcat依赖的jar文件log:日志文件(记录出错等信息)temp:临时文件webapps:可执行的项目(将我们开发的项目放入该目录)work:存放由jsp翻译成的java,以及编辑成的class文件配置1.配置JAVA_HOME右键此电脑->属性->高级系统设置-&原创 2021-05-07 16:54:35 · 65 阅读 · 0 评论 -
Java泛型
泛型作用作用(1)数据安全(2)防止类型转换时出错例:list.add(默认是Object)如果加了Double泛型,则自动变成list.add(Double),返回值类似,会直接返回double类型的数据,简言之,以Double泛型为例,如果不加泛型,则默认操作是Object类型,如果加了Double泛型,则默认操作是Double类型。...原创 2021-04-27 09:08:18 · 54 阅读 · 0 评论 -
Java之lambda表达式
lambdalambda :简化代码函数式接口lambda :简化代码lambda(λ)组成:1.逗号隔开的参数列表(x,x,x)2.箭头符号 ->。3.lambda(λ)方法体。下面是代码示例:package lambda;public class demo01 { public static void test01(){ //原来的代码 new Thread(new Runnable() { @Overrid原创 2021-04-25 09:19:51 · 76 阅读 · 0 评论 -
Java中常用ArrayList类方法
Java基础Collection常用APIArrayList常用方法ArrayList的三种遍历方式Collection常用APICollection:储存的数据是不唯一、无序的对象;List:储存的数据是不唯一、有序的对象;Set:储存的数据是唯一、无序的对象;唯一:不能重复。有序:不是排序,是输入顺序是否与输出顺序一致。检验是否唯一:检验是否有序:ArrayList常用方法其中List和Set的方法基本一致,但是要注意Set的数据是无序的,所以不能使用下标操作。方法一:依次按照原创 2021-04-20 09:28:43 · 815 阅读 · 0 评论 -
Java中常用String类
package Foundation;//String练习public class StringPractice { public static void main(String[] args) {//length():获取字符串的长度,其实也就是字符个数 String str = "panfangshishabi"; System.out.println(str.length());// charAt(int index):获取指定索原创 2021-04-18 17:38:27 · 61 阅读 · 0 评论