- 博客(63)
- 收藏
- 关注
原创 java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_
笔记
2022-09-26 21:56:53
1252
原创 网络编程NIO、BIO、AIO
一、重要网络知识回顾1.)URL解析与构造2.)DNS解析域名解析是从右向左www.google.com.root域名的分级如下:从域名解析IP地址时,总的来说有两种方式:(1)递归查询假如根域名服务器查不到IP,则查询顶级域名服务器,如果还查不到,则查询二级域名服务器,直至查询成功。(2)迭代查询如果根服务器查不到,就直接走顶级域名服务器,不再走根域名服务器。如果顶级域名服务器查不到,就直接走二级域名服务器,不再走顶级域名服务器。依次类推。3.)五层以及其对应的主要协议二.
2022-05-31 00:51:55
180
原创 函数式编程
一、Lambda1.什么是Lambda?它可以对某些匿名内部类的写法进行简化,让我们不用关注是什么对象,而是关注我们对数据进行了什么操作。2.什么是匿名内部类?匿名内部类其实就是一个没有名称的内部类,在调用一个方法时,如果参数是一个接口,通常为了简化代码,可以直接通过匿名内部类的形式传入一个接口类型的参数,在匿名内部类中完成方法的实现。3.简化代码实例:2.4.省略规则①参数类型可以省略②方法体只有一句代码时,大括号、return、分号可以省略③方法只有一个参数时小括号
2022-05-24 23:15:29
258
原创 spring secuity(三更草堂)
一、介绍spring security是spring家族的一个安全管理框架,适用于大中型项目。shiro也是一个安全管理框架,但他适用于小型项目。安全框架主要做两件事:认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户授权:判断登录后的用户是否有权限进行某个操作二、快速入门首先添加依赖,启动项目即可: <!--安全框架springsecurity依赖--> <dependency> <g
2022-05-08 13:25:18
6273
3
原创 新建maven项目后,出现Unable to import maven project: See logs for details
这一般是idea和maven版本不兼容的问题解决方法:方法一、方法二调整版本
2022-04-14 21:47:13
410
原创 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
272
1
原创 Mysql8.0的连接配置
url:jdbc:mysql://localhost:3306/cloud_useruseSSL=false&serverTimezone=UTCusername: xxxpassword: xxxdriver-class-name: com.mysql.cj.jdbc.Driver
2022-03-28 23:00:50
1643
原创 springcloud
一、前言微服务 包含的东西 不只是 springcloud,springcloud只是解决了微服务的服务治理问题,对于微服务的其他问题并没有给出解决方案。
2022-03-26 12:12:42
284
2
原创 linux总结
一、Linux的文件系统目录结构Linux只有一个根目录: /,根目录下有bin、home、lib、root等等。①bin ---------->各种常见的指令②dev---------->把硬件映射成一个文件来进行管理③etc----------->管理各种配置文件④home------->当我们创建一个普通用户后,就会在home目录下生成一个文件⑤media------->多媒体 比如 U盘等⑥usr------------>用户的很多应用程序都放
2022-03-25 21:23:09
424
原创 设计模式学习
一、设计模式总览1.三大模式对应着组件的生命周期的哪一段三大设计模式分别对应着组件生命周期的哪一部分?2. 设计的七大原则①开闭原则:对扩展开放,对修改关闭②里氏替换原则:继承父类,而不去修改父类父类中的所有特性,在子类中不允许改变③依赖倒置原则④单一职责原则 -------->JavaBean⑤接口隔离原则-------->Controller、service层⑥、迪米特法则⑦、合成复用原则二、创建型模式创建模式的作用:将对象的创建和使用分离开来,降
2022-01-22 23:11:25
258
原创 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
530
原创 SpringMVC复习
回顾MVC架构M:model 对应着dao层、service层V:view 对应着视图层C:controller 对应着Controller层回顾servlet
2022-01-09 00:04:14
645
1
原创 Mybatis复习
1.hello world①设计好数据库和java对应的实体类②设置全局配置文件③配置映射文件④编写测试类2.接口式编程①创建一个对应接口②修改映射文件的某些配置③编写测试类3.全局配置文件(标签的顺序不能打乱)①settings②typeAliases(别名处理器)③.typeHandlers(类型处理器)④.plugins(插件)插件能拦截四大对象的方法1.Executor2.ParameterHandler3.ResultSetHandler4
2022-01-01 20:24:03
846
原创 Docker
1.Docker简介Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。2.镜像、容器、仓库的区别?仓库中储存了许多镜像,容器是镜像的实例。3.docker安装(centos7)docker安装阿里云加速:sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.jso
2021-12-24 01:21:19
541
原创 gitgitgit
git是一个分布式版本控制工具版本控制工具分为集中式版本控制工具和分布式版本控制工具。集中式版本控制工具:svn、cvs缺点:单点故障问题分布式版本控制工具:github、giteegit的优势:Git工作机制git的代码托管中心代码托管中心是基于网络服务器的远程代码仓库,一般我们称为远程库局域网:gitlab互联网:github、gitee...
2021-12-22 01:04:52
316
原创 spring5复习
一、IOC容器1.什么是IOCIOC就是控制反转,将对象的创建以及对象之间的调用过程交给spring容器来管理,从而降低其耦合度。2.IOC的底层原理?工厂模式+xml解析+反射3.IOC接口IOC思想基于IOC容器完成,IOC容器底层就是对象工厂spring提供IOC容器的两种实现方式(两个接口):①BeanFactory:IOC容器的基本实现,是spring内部使用的类,不提供开发人员使用。加载配置文件时不会创建对象,在获取对象时才会创建对象。②ApplicationConte
2021-12-06 19:22:22
308
原创 MySQL基础复习(下)
数据库对象与视图1.数据库对象2.为什么要使用视图?有时候我们需要针对不同的用户提供不同的查询视图.3.视图的理解?①视图可以理解为一个虚拟表,本身不存储数据,本质上可以看做一个存储起来的select语句.②视图中涉及到的表,叫做基表③对视图中的数据进行操作,基表中的数据也会发生变化④删除视图本身,不会对基表产生影响⑤视图的应用场景: 针对小型项目,不推荐使用视图,大型项目可以考虑。⑥视图的优点,简化查询,控制数据的访问...
2021-11-28 23:46:40
4044
1
原创 MySQl基础复习(上)
MySQL是开源的、免费的,所以很多互联网公司使用的都是MySQL!一.保存数据的容器有:①数组、集合(内存:断电就没有数据了)②文件(不太适合查询)③数据库二.数据库的相关概念:①DB(Database):数据库保存了一系列有组织的数据②DBMS(Database Managem System):数据库管理系统数据库是通过数据库管理系统来创建和操作的。例如:程序员通过DBMS来对DB中的数据进行增删改查常见的数据库管理系统有:MySQL、Oracle、SqlServer(只能安装在w
2021-11-16 22:44:59
2693
原创 三个线程轮流打印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
748
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
279
原创 MVCC的理解
MVCC即Mutil-Version Concurrency Control(多版本并发控制),用于保证并发快照读下的读已提交级别和可重复读级别。一、快照读和当前读1.快照读:即普通的select语句例如:select * from student2.当前读:insert update deleteselect … for updateselect …lock in share mode二、基于ubdo_log的版本链在每一行数据里有两个隐藏字段 :1.t.
2021-10-02 12:33:42
324
原创 == 和equals()
一、==作用与基本类型 比较的是基本类型的值作用引用数据类型 比较的是内存地址的值二、equals3. equals()是Object类中的方法,默认比较的是内存地址的值4. String是Object的子类,他重写了equals方法,比较的是字符串内容是否相同当我们写了一个类时,并且有判断类的对象是否相同的需求时,自然而然想到要重写equals()方法,但是重写equals方法就要重写hashcode()方法!!首先重写一个equals():用了反射,来判断两个对象的类是否相等c
2021-09-18 18:58:03
140
原创 求某些数的二进制形式有多少个1
解题思路:1.n&(n-1)消除n的二进制形式的从右往左数,第一个12. 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
109
原创 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
216
原创 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
671
原创 锁升级、锁消除、锁粗化
一、锁升级为什么要有锁升级机制?Synchronized会涉及到用户态和内核态转换,这对性能有极大的影响。为了提高性能①无锁----->偏向锁------>轻量锁------->重量锁0 01 1 01 0 00 0 10②偏向锁:如果很长时间的情况下只有有一个线程持有这个锁,那么这个线程就会一直持有这个锁③轻量级锁: 假设线程A持有偏向锁,此时线程A有两种情况:A1:线程A正在执行锁里面的内容A2:
2021-09-05 15:54:51
298
原创 使用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
171
原创 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
136
原创 实现一个自旋锁
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
174
原创 懒汉式单例模式的线程安全实现(最新)
懒汉式单例模式是线程不安全的,这里有两个实现单例模式线程安全的方法(枚举方法不写了)1.DCL双端锁通过volatile禁止指令重排,防止得到nullpublic class Study { private volatile static Study instance; private void Study(){ } public static Study getInstance(){ if (instance == null){ syn
2021-09-03 14:44:43
481
原创 线程中断机制
利用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
81
原创 三个等待唤醒机制(wait-notify/notifyAll、await-signal、park-unpark)
一、wait-notify/notifyAllpublic 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
976
原创 手写死锁的小问题和查看死锁
问题:在第一个线程中没有调用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
85
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人