自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 AQS层层剖析

在源码中,tryAcquire方法是被protected修饰,参数是int值,代表队state的修改,在共享模式下,可能会有多个线程正在共享资源,所以state需要表示线程占用的数量,所以是int类型的。然后程序将会从队列的尾节点开始搜索,找到除了head之外最靠前的节点,即head的后面一个(第二个)当一个线程以共享模式获取锁时,其他也想以共享模式获取锁的线程,也能够争抢锁,从而一起访问共享资源。在AQS的FIFO队列中,头结点其实是一个虚节点,意思是说,头结点并不是当前需要去拿锁的节点,...

2022-08-26 22:02:42 834 1

原创 CAS,乐观锁

Java并发包为了解决这个问题,提供了一个带有标记的原子引用类“AtomicStampedReference”,它可以通过控制变量值的版本来保证CAS的正确性。CAS指令执行时,当且仅当内存地址V的值与预期值A相等时,将内存地址V的值修改为B,否则就什么都不做。因此,在使用CAS前要考虑清楚“ABA”问题是否会影响程序并发的正确性,如果需要解决ABA问题,改用传统的互斥同步可能会比原子类更高效。的缩写,中文意思是:比较并替换。有舔狗一号,舔狗二号,舔狗一号率先冲到女神这,并且把牌子改为1,...

2022-08-26 21:57:42 356

原创 Java中的锁机制详解

并发情况下,多个线程可能会对统一资源产生争抢,那么可能导致数据不一致问题。为了解决这个问题引入了锁机制,通过一种抽象的锁来对资源进行锁定。

2022-08-26 11:47:23 595

原创 面面面试三

项目中的ThreadLocal用作获取登录后用户的信息。它首先就是实现put get remove 三个方法,在用户登录后放进ThreadLocal中,需要的时候get,get完进行remove。如果不进行remove会造成内存泄露内存泄露:之后都不用的东西一直留在内存中。

2022-08-19 19:26:13 263

原创 面试经验二

MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

2022-08-19 19:25:00 281

原创 面试经历一

首先就有哪些字段,用整型还是字符型啥的,需要设置索引就设置一下,默认就是主键索引嘛。

2022-08-19 19:24:11 208

原创 [Vue warn]: Error in render: “TypeError: Cannot read properties of null (reading ‘length‘)

这是我遇到这个报错的解决方法,希望对你也有所启发!读题:就是**资源找不到,或者为null**,接下来就是找哪里出错了!

2022-08-09 09:12:23 1203

原创 缓存穿透击穿雪崩

缓存穿透:在默认情况下,,数量少可能问题不大,可是一旦。网络安全中也有人恶意使用这种手段进行攻击被称为洪水攻解决方法,以便快速确定是否存在这个值,一次请求若在缓存和数据库中都没找到,就在缓存中放一个空对象用于处理后续这个请求。。解决这个缺陷的方式就是即使对空值设置了过期时间,还是会存在缓存层和存储层的数据会有一段时间窗口的不一致,这对于需要保持一致性的业务会有影响。...

2022-08-08 17:53:54 107

原创 redis发布订阅与集群

Redis写下笔记以供复习

2022-08-08 17:51:54 796

原创 redis持久化

根据狂神说Redis写下笔记以供复习B站狂神说Redis!

2022-08-08 17:36:17 224

原创 SpringBoot集成redis

根据狂神说Redis写下笔记以供复习B站狂神说Redis!

2022-08-08 17:34:48 253

原创 redis事务

根据狂神说Redis写下笔记以供复习B站狂神说Redis!

2022-08-08 17:29:47 77

原创 redis三大特殊数据类型

使用经纬度定位地理坐标并用一个有序集合zset保存,所以zset命令也可以使用key longitud(经度) latitude(纬度) member […] 将具体经纬度的坐标存入一个有序集合key member [member…] 获取集合中的一个/多个成员坐标key member1 member2 [unit] 返回两个给定位置之间的距离。默认以米作为单位。...

2022-08-08 17:28:19 118

原创 redis五大数据类型

在redis中无论什么数据类型,在数据库中都是以key-value形式保存,通过进行对Redis-key的操作,来完成对数据库中数据的操作。

2022-08-08 17:27:25 135

原创 一天搞定Linux常用的基本命令!!!

tips:更改主机名:hostnamecd : 切换目录命令!./ : 当前目录cd … : 返回上一级目录创建文件夹 mkdir chen进入根目录 cd /查看当前文件夹的文件 ls查看当前文件夹的全部文件 ls -al在Linux中ls可能是最常常被使用的!-a 参数 : all ,查看全部的文件,包括隐藏文件-l 参数 :列出所有的文件,包含文件的属性和权限,没有隐藏文件所有Linux可以组合使用!如 ls -alcd 目录名(绝对路径都是以/开头的,相对路径,对于当前目录该如何寻找 …/

2022-08-08 17:25:07 174

原创 redis学习-2

本系列根据狂神说Redis写下笔记以供复习B站狂神说Redis!

2022-08-08 17:17:34 201

原创 redis入门-1

1、单机Mysql时代数据量增加到一定程度,单机数据库就放不下了数据的索引(B+ Tree),一个机器内存也存放不下访问量变大后(读写混合),一台服务器承受不住。2、Memcached(缓存) + Mysql + 垂直拆分(读写分离)优化过程经历了以下几个过程:优化数据库的数据结构和索引(难度大)文件缓存,通过IO流获取比每次都访问数据库效率略高,但是流量爆炸式增长时候,IO流也承受不了。...

2022-08-08 17:16:20 118

原创 一篇搞定MyBatisPlus!

一篇囊括大部分MybatisPlus知识的文章,助你快速入门上手!

2022-08-07 22:50:32 2154

原创 一篇搞定Git!

一篇非常全简介的Git博客,上手飞快~

2022-08-07 22:37:53 168

原创 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 721

原创 SpringBoot基础实操记录

springboot基础实操记录了解一下三层架构及其作用:Dao层(持久层):封装一些关于数据库操作在此,但是实际实现不在这。JPA/MyBatis只要关于数据库操作都在这里定义,里面写的方法都交给service层调用,这样service完全不需要接触数据库,实现了高耦合。Service层(业务层):具体实现都在这,增删改查等一般是定义接口service,然后serviceImpl去实现这些方法。Web(controller)层(表现层):前端页面的控制器:调用service的方法来实现业务以

2022-05-26 21:49:00 133

原创 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 112

原创 Java对象和构造方法

Java对象概念的理解编程思想中有一句话万物皆对象,对于Java来说,就是把数据和对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出他们的共性,形成——类。在面对对象的编程方式里,对象有属性有方法,例如dog类cat类,都有年龄、名字等属性,dog会吃狗粮,cat会吃猫粮,吃东西就是方法。对象不是孤立的,是有父子关系的。例如有一个父类pet,dog、cat共同的属性方法都可以在父类pet中定义,如年龄、名字、吃(这个动作)在父类中定义,子类继承后就可以使用了。以下为转载内容,在

2022-05-26 21:45:16 141

原创 Java类加载机制

重点补充:类加载机制类加载指的是JVM加载字节码(class文件)的过程。这张图是java类的生命周期图,完整一点可以在加载前面加上javac编译这个过程。类加载只包括加载、连接、初始化。注意区分加载和类加载的区别,加载只是类加载的一个过程其中解析部分是灵活的,它可以在初始化之前或之后再进行,实现"后期绑定"。其他顺序不可改变。逐个了解:加载:加载是一个读取class文件,将其转化为某种静态数据结构存储在方法区内,并在堆中生成一个便于用户调用的java.lang.Class类

2022-05-26 21:37:31 117

原创 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile

原因:JDK版本不一致step1:修改pom文件里的jdk版本 <properties> <java.version>1.8</java.version> </properties>step2:step3:step4:在这里插入图片描述step5:

2022-03-07 08:51:23 503

原创 Cannot resolve plugin org.apache.maven.plugins:maven-site-plugin:3.3

原因是没有导入maven-site-plugin:3.3在配置文件中手动导入:<dependency> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.3</version> </d

2022-03-07 08:34:59 3436

原创 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 71

原创 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 414

原创 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 384

原创 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 261

原创 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 558

原创 java基础面试题21~30

对字符串的都有哪些方法?详细说明下。具体有String、StringBuffer和StringBuilder这三个类。String是不可变类,每次操作都会生成新的String对象,并将结果指针指向新的对象,由此会产生内存碎片。如果要频繁对字符串修改,采用StringBuffer 和 StringBuilder更好一些。StringBuffer是线程安全的,多线程的时候推荐使用StringBuffer,但是大多数情况下是单线程,大多使用StringBuilder。22.String str=.

2022-02-10 15:00:18 597

原创 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 82

原创 Java基础面试题1~10

Java基础面试题1、面向对象的特征有哪些方面?抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;继承:继承是从已有类得到继承信息创建新类的过程。多态性:多态性是指允许不同子

2022-02-09 14:54:51 351

原创 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 1059

原创 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 727

原创 JSP页面元素

JSP的页面元素a.脚本Scriptletb.指令c.注释a.脚本Scriptleti.<% 局部变量、java语句%>ii.<%! 全局变量、定义方法%>iii.<%=输出表达式%>b.指令page指令,形如:<%@ page …%><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&gt

2022-02-09 14:50:56 69

原创 MySQL安装错误及解决方法

常见错误控制台乱码mysqld --initialize --console没有密码出现The service already exists出错服务没有响应控制功能。控制台乱码这是因为你的文件目录中存在中文,只需把路径中的中文改成英文格式即可!mysqld --initialize --console没有密码出现原因可能是之前下载过mysql,删除没删干净,将mysql目录中的data文件夹删除即可。这里提一下,my.ini中data文件夹不用自己创建,启动后会自己创建该文件夹。如果你不小心把控

2021-05-18 14:36:35 1215

原创 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 424

原创 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 72

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除