- 博客(63)
- 收藏
- 关注
原创 java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_
笔记
2022-09-26 21:56:53
1321
原创 网络编程NIO、BIO、AIO
一、重要网络知识回顾 1.)URL解析与构造 2.)DNS解析 域名解析是从右向左 www.google.com.root域名的分级如下: 从域名解析IP地址时,总的来说有两种方式: (1)递归查询 假如根域名服务器查不到IP,则查询顶级域名服务器,如果还查不到,则查询二级域名服务器,直至查询成功。 (2)迭代查询 如果根服务器查不到,就直接走顶级域名服务器,不再走根域名服务器。如果顶级域名服务器查不到,就直接走二级域名服务器,不再走顶级域名服务器。依次类推。 3.)五层以及其对应的主要协议 二.
2022-05-31 00:51:55
239
原创 函数式编程
一、Lambda 1.什么是Lambda? 它可以对某些匿名内部类的写法进行简化,让我们不用关注是什么对象,而是关注我们对数据进行了什么操作。 2.什么是匿名内部类? 匿名内部类其实就是一个没有名称的内部类,在调用一个方法时,如果参数是一个接口,通常为了简化代码,可以直接通过匿名内部类的形式传入一个接口类型的参数,在匿名内部类中完成方法的实现。 3.简化代码实例: 2. 4.省略规则 ①参数类型可以省略 ②方法体只有一句代码时,大括号、return、分号可以省略 ③方法只有一个参数时小括号
2022-05-24 23:15:29
303
原创 spring secuity(三更草堂)
一、介绍 spring security是spring家族的一个安全管理框架,适用于大中型项目。 shiro也是一个安全管理框架,但他适用于小型项目。 安全框架主要做两件事: 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户 授权:判断登录后的用户是否有权限进行某个操作 二、快速入门 首先添加依赖,启动项目即可: <!--安全框架springsecurity依赖--> <dependency> <g
2022-05-08 13:25:18
6445
3
原创 新建maven项目后,出现Unable to import maven project: See logs for details
这一般是idea和maven版本不兼容的问题 解决方法: 方法一、 方法二 调整版本
2022-04-14 21:47:13
449
原创 Maven核心概念
尚硅谷课件 一、Maven的下载与安装 1.)maven官网:maven官网 2.)点击下载: 3.)一些配置 ① 配置本地仓库 ② 配置阿里云镜像 <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/...
2022-04-04 22:02:28
358
1
原创 Mysql8.0的连接配置
url:jdbc:mysql://localhost:3306/cloud_useruseSSL=false&serverTimezone=UTC username: xxx password: xxx driver-class-name: com.mysql.cj.jdbc.Driver
2022-03-28 23:00:50
1781
原创 springcloud
一、前言 微服务 包含的东西 不只是 springcloud,springcloud只是解决了微服务的服务治理问题,对于微服务的其他问题并没有给出解决方案。
2022-03-26 12:12:42
325
2
原创 linux总结
一、Linux的文件系统目录结构 Linux只有一个根目录: /,根目录下有bin、home、lib、root等等。 ①bin ---------->各种常见的指令 ②dev---------->把硬件映射成一个文件来进行管理 ③etc----------->管理各种配置文件 ④home------->当我们创建一个普通用户后,就会在home目录下生成一个文件 ⑤media------->多媒体 比如 U盘等 ⑥usr------------>用户的很多应用程序都放
2022-03-25 21:23:09
491
原创 设计模式学习
一、设计模式总览 1.三大模式对应着组件的生命周期的哪一段 三大设计模式分别对应着组件生命周期的哪一部分? 2. 设计的七大原则 ①开闭原则:对扩展开放,对修改关闭 ②里氏替换原则:继承父类,而不去修改父类 父类中的所有特性,在子类中不允许改变 ③依赖倒置原则 ④单一职责原则 -------->JavaBean ⑤接口隔离原则-------->Controller、service层 ⑥、迪米特法则 ⑦、合成复用原则 二、创建型模式 创建模式的作用:将对象的创建和使用分离开来,降
2022-01-22 23:11:25
325
原创 Springboot复习
一、hello Springboot ①引入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </parent>
2022-01-12 00:01:14
583
原创 SpringMVC复习
回顾MVC架构 M:model 对应着dao层、service层 V:view 对应着视图层 C:controller 对应着Controller层 回顾servlet
2022-01-09 00:04:14
691
1
原创 Mybatis复习
1.hello world ①设计好数据库和java对应的实体类 ②设置全局配置文件 ③配置映射文件 ④编写测试类 2.接口式编程 ①创建一个对应接口 ②修改映射文件的某些配置 ③编写测试类 3.全局配置文件(标签的顺序不能打乱) ①settings ②typeAliases(别名处理器) ③.typeHandlers(类型处理器) ④.plugins(插件) 插件能拦截四大对象的方法 1.Executor 2.ParameterHandler 3.ResultSetHandler 4
2022-01-01 20:24:03
901
原创 Docker
1.Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 2.镜像、容器、仓库的区别? 仓库中储存了许多镜像,容器是镜像的实例。 3.docker安装(centos7) docker安装 阿里云加速: sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.jso
2021-12-24 01:21:19
574
原创 gitgitgit
git是一个分布式版本控制工具 版本控制工具分为集中式版本控制工具和分布式版本控制工具。 集中式版本控制工具:svn、cvs 缺点:单点故障问题 分布式版本控制工具:github、gitee git的优势: Git工作机制 git的代码托管中心 代码托管中心是基于网络服务器的远程代码仓库,一般我们称为远程库 局域网:gitlab 互联网:github、gitee ...
2021-12-22 01:04:52
377
原创 spring5复习
一、IOC容器 1.什么是IOC IOC就是控制反转,将对象的创建以及对象之间的调用过程交给spring容器来管理,从而降低其耦合度。 2.IOC的底层原理? 工厂模式+xml解析+反射 3.IOC接口 IOC思想基于IOC容器完成,IOC容器底层就是对象工厂 spring提供IOC容器的两种实现方式(两个接口): ①BeanFactory:IOC容器的基本实现,是spring内部使用的类,不提供开发人员使用。 加载配置文件时不会创建对象,在获取对象时才会创建对象。 ②ApplicationConte
2021-12-06 19:22:22
377
原创 MySQL基础复习(下)
数据库对象与视图 1.数据库对象 2.为什么要使用视图? 有时候我们需要针对不同的用户提供不同的查询视图. 3.视图的理解? ①视图可以理解为一个虚拟表,本身不存储数据,本质上可以看做一个存储起来的select语句. ②视图中涉及到的表,叫做基表 ③对视图中的数据进行操作,基表中的数据也会发生变化 ④删除视图本身,不会对基表产生影响 ⑤视图的应用场景: 针对小型项目,不推荐使用视图,大型项目可以考虑。 ⑥视图的优点,简化查询,控制数据的访问 ...
2021-11-28 23:46:40
4105
1
原创 MySQl基础复习(上)
MySQL是开源的、免费的,所以很多互联网公司使用的都是MySQL! 一.保存数据的容器有: ①数组、集合(内存:断电就没有数据了) ②文件(不太适合查询) ③数据库 二.数据库的相关概念: ①DB(Database):数据库 保存了一系列有组织的数据 ②DBMS(Database Managem System):数据库管理系统 数据库是通过数据库管理系统来创建和操作的。 例如:程序员通过DBMS来对DB中的数据进行增删改查 常见的数据库管理系统有:MySQL、Oracle、SqlServer(只能安装在w
2021-11-16 22:44:59
2780
原创 三个线程轮流打印1-100
1.利用synchronized实现(不能实现精准唤醒) public class Main{ int num=0; Object o = new Object(); private void print(int targetNum) throws InterruptedException { while(true) { synchronized (o) { //注意while不能写成if -----》会造成虚假唤
2021-11-02 16:28:37
814
1
原创 通过10个线程对数字分别进行1000次自增来理解CAS+volatile 和synchronized的区别
首先看个代码:` class Resource{ int num=0; public void add(){ num++; } } public class Main2<fori> { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(10);
2021-10-12 20:03:39
332
原创 MVCC的理解
MVCC即Mutil-Version Concurrency Control(多版本并发控制),用于保证并发快照读下的读已提交级别和可重复读级别。 一、快照读和当前读 1.快照读:即普通的select语句 例如:select * from student 2.当前读: insert update delete select … for update select …lock in share mode 二、基于ubdo_log的版本链 在每一行数据里有两个隐藏字段 : 1.t.
2021-10-02 12:33:42
388
原创 == 和equals()
一、== 作用与基本类型 比较的是基本类型的值 作用引用数据类型 比较的是内存地址的值 二、equals 3. equals()是Object类中的方法,默认比较的是内存地址的值 4. String是Object的子类,他重写了equals方法,比较的是字符串内容是否相同 当我们写了一个类时,并且有判断类的对象是否相同的需求时,自然而然想到要重写equals()方法,但是重写equals方法就要重写hashcode()方法!! 首先重写一个equals():用了反射,来判断两个对象的类是否相等 c
2021-09-18 18:58:03
225
原创 求某些数的二进制形式有多少个1
解题思路: 1.n&(n-1)消除n的二进制形式的从右往左数,第一个1 2. n&1判断n的二进制形式最后一个二进制位是不是1 例题 给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。 class Solution { public int[] countBits(int n) { int[] res = new int[n+1]; for(int i=0;i<=n;i++){
2021-09-09 10:34:49
148
原创 JUC复习大总结
1.什么是虚假唤醒?(某个线程不应该被唤醒) 比如线程A和B同时陷入阻塞,线程C执行notifyAll(),线程A、B都被唤醒,但线程A唤醒执行后的结果应该导致B依旧阻塞,但B没有循环判断,导致也被唤醒!!下面有图解 以生产者-消费者模型举例。。 class Goods{ public int number=0; //制作方法 public synchronized void made() throws InterruptedException { //判断
2021-09-08 21:22:07
291
原创 java.lang.IllegalMonitorStateException异常
在编写三个线程轮流打印1-100时,爆出了许多java.lang.IllegalMonitorStateException异常(非法的锁状态),经过摸索了解到是 condition1.await()要在Lock锁里面 同理wait要在Synchronized里 这里附上代码 class Count{ static int number = 0; private int flag=1; ReentrantLock reentrantLock = new ReentrantLock();
2021-09-05 23:55:43
731
原创 锁升级、锁消除、锁粗化
一、锁升级 为什么要有锁升级机制? Synchronized会涉及到用户态和内核态转换,这对性能有极大的影响。为了提高性能 ①无锁----->偏向锁------>轻量锁------->重量锁 0 01 1 01 0 00 0 10 ②偏向锁:如果很长时间的情况下只有有一个线程持有这个锁,那么这个线程就会一直持有这个锁 ③轻量级锁: 假设线程A持有偏向锁,此时线程A有两种情况: A1:线程A正在执行锁里面的内容 A2:
2021-09-05 15:54:51
353
原创 使用AtomicStampedReference类解决CAS的ABA问题
CAS会导致ABA问题 CAS算法实现一个重要的前提是需要取出内存中某时刻的数据并在当下时刻比较并替换,那么在这个时间差内会导致数据的变化. 比如说一个线程one从内存位置V中取出A,线程Two也执行,将A–>B–>A,这时one进行CAS操作发现内存仍是A,然后one操作成功.这会造成很大的隐患,那么我们可以通过以下方法,在发生ABA问题后,不让数据修改 public class Study { static AtomicStampedReference atomicStampedR
2021-09-03 21:30:25
234
原创 volatile+synchronized 和 原子类 对并发编程特性的保证
以下代码没有保证并发编程下的原子性、有序性、可见性 public class Study { public static void main(String[] args) { Person66 person66 = new Person66(); CountDownLatch countDownLatch = new CountDownLatch(10); try{ for (int j=1;j<=10;j++) {
2021-09-03 19:37:42
197
原创 实现一个自旋锁
public class Study { public static void main(String[] args) { ZixuanTest zixuanTest = new ZixuanTest(); //线程A持有5秒钟锁 new Thread(()->{ zixuanTest.lock(); try { Thread.sleep(5000);
2021-09-03 16:24:40
234
原创 懒汉式单例模式的线程安全实现(最新)
懒汉式单例模式是线程不安全的,这里有两个实现单例模式线程安全的方法(枚举方法不写了) 1.DCL双端锁 通过volatile禁止指令重排,防止得到null public class Study { private volatile static Study instance; private void Study(){ } public static Study getInstance(){ if (instance == null){ syn
2021-09-03 14:44:43
531
原创 线程中断机制
利用interrupt()和isInterrupted()来控制线程的例子 1.线程A执行2秒后结束 public class Study { public static void main(String[] args) { Thread A = new Thread(()->{ while(true){ if (Thread.currentThread().isInterrupted()){ .
2021-09-02 19:19:23
123
原创 三个等待唤醒机制(wait-notify/notifyAll、await-signal、park-unpark)
一、wait-notify/notifyAll public class Study { public static void main(String[] args) { Object o = new Object(); new Thread(()->{ synchronized (o){ System.out.println("A即将被阻塞"); try {
2021-09-02 18:19:08
1079
原创 手写死锁的小问题和查看死锁
问题:在第一个线程中没有调用sleep()方法时,执行程序后没有出现死锁 原因:第一个线程获得o锁后,第二个线程还没有获得o2锁,所以没有资源冲突 解决方法:第一个线程获得o锁后,让第一个线程sleep2秒,让第二个线程获得o2锁, 查看死锁的方法 ①打开cmd ②执行 jps查看程序 号 ③执行 jstack 程序号 来看是否发生死锁 public class Deadsuo { static Object o = new Object(); static Object o2 =
2021-09-02 11:36:51
132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅