- 博客(32)
- 收藏
- 关注

原创 Java内存模型-底层原理
底层原理 Java程序的编译与运行 最开始,我们编写的Java代码,是*.java文件 在变异(javac命令)后,从刚才的*.java文件会变成一个新的Java字节码文件(*.class) JVM会执行刚才生成的字节码文件(*.class),并把字节码文件转化为机器指令 机器指令可以直接在CPU上执行运行,也就是最终的程序执行 JVM实现会带来不同的“翻译”,不同的CPU平台的机器指令有千差万别,无法保证并发安全的效果一致。 1、JVM内存结构、Java内存模型、Java对象模..
2021-04-05 11:51:44
225
3
原创 计算机网络总结
计算机网络 传输控制层有TCP/UPD协议 HTTP HTTP【协议】是客户端和服务器【交互】的一种通讯的格式 所谓的【协议】实际上就是双方约定好的【格式】,让双方都能看得懂的东西,交互实际上就是【请求】和【响应】 HTTP各个版本之间的区别 HTTP1.0默认是短连接,每次于服务器交互,都需要新开一个连接 HTTP1.1版本最主要的是【默认持久连接】。只要客户端服务器没有断开TCP连接,就一直保持连接,可以发送多次HTTP请求;其次就是【断点传输.
2021-10-19 20:55:35
851
原创 Java多线程-缓存框架
缓存框架 1、使用HashMap实现一个缓存 /** * @Classname ImocCache1 * @Description 最简单的缓存形式,HashMap * @Date 2021/5/24 22:44 * @Created by WangXiong */ public class ImocCache1 { private HashMap<String, Integer> cache = new HashMap<>(); public
2021-05-30 23:07:42
423
原创 JAVA多线程-Future和Callable
1、Runable的缺点 无法获取返回值 Runable中的run方法,无法抛出异常 2、Future和Callable的关系 2.1、Callable 有返回值,且可以抛出异常 public interface Callable<V> { /** * Computes a result, or throws an exception if unable to do so. * * @return computed result
2021-05-24 22:19:57
137
原创 Spring基础-事务
1、什么是事务 事务是数据库保证原子性的一种机制,所有的操作要么都成功,要么都失败。了解事务,一定绕不开的他的四个特点:ACID A(代表了事务的原子性) C(代表了事务的一致性) I(代表了事务的隔离性) D(代表了事务的持久性) 2、控制事务原理 使用JDBC的事务,我们控制事务的手段是Connection.setAutoCommit(false)开启事务,Connection.commit()提交事务,Connection.rollback()回滚事务 我们使用Mybatis用S
2021-05-07 20:48:29
182
原创 Java基础-final关键字和不变性
1、什么是不变性 对象在被创建后,状态不能被修改,那么它就是不可变的 具有不可性的对象,线程一定是安全的,因为无法修改 //这个类中有一个变量是可变的,这个类就不具备不变性 public class Person { final int age = 18; final String name = "Alice"; int score = 0; } 写一个测试类,测试修改final修饰的变量,编译器会直接报错 2、final的作用 防止类被继承、方法防止.
2021-04-27 21:31:02
159
原创 Java基础-原子类、CAS
1、什么是原子类 原子类的作用和锁类似,是为了保证并发情况下的线程安全。不过原子类相比锁,有一定优势 粒度更细:他锁的范围更小 效率更高:相比于锁,效率更高,除了高度竞争的情况 2、6类原子类 Atomic*基本类型原子类 Atomic*Array数组类型原子类 Atomic*Reference引用类型原子类 Atomic*FieldUpdater升级类型原子类 Adder累加器 Accumulator累加器 3、 ...
2021-04-26 19:45:05
522
4
原创 Spring基础-AOP编程
1、AOP编程的概念 概念:AOP面向切面编程,等同于spring代理开发。面向切面编程是以切面为基本单位的开发,通过切面相互调用。切面 = 切入点 + 额外功能 本质就是Spring动态代理,通过代理类为原始类增强方法 好处:方便对原始类进行扩展 2、AOP编程开发步骤 实际上就是动态代理的过程: 原始对象 额外方法 切入点 组装切面 3、切面的解释 4、AOP底层原理 4.1、核心问题 AOP是如何创建代理对象? 动态字节码技术 Spring工厂如何加工创.
2021-04-19 20:53:38
265
原创 JAVA线程基础知识-ThreadLocal
1、ThreadLocal的用途 经典场景1:每个线程需要一个独享的对象(通常是工具类,典型需要使用的类有SimpleDateFormat和Random) 经典场景2:每个线程内需要保存全局变量(例如在拦截器中获取用户信息),可以让不同方法直接使用,避免参数传递的麻烦 2、经典场景1 每个Thread内有自己的实例副本,不共享 比喻:教材只有一本,一起做笔记有线程安全问题。复印后没问题 我们使用线程池来帮助我们创建线程 /** * @Classname ThreadLocalNorma
2021-04-15 20:25:35
160
1
原创 Spring基础-AOP代理
1、为什么需要代理 AOP使用的设计模式就是 代理设计模式 在日常中的开发大家都是这样的: controller->service->dao 在这三层中最重要的就是service层,这是因为我们的具体业务逻辑都是写在service层中的。但是随着我们的业务逻辑越来越多,越来越复杂,我们的service层中的代码也变得越来越臃肿。 那么有没有办法改进,让service层只关心我们的核心业务,其他的附加操作抽取出来呢?答案是有得,那就是我们的 代理设计模式。我们的service类只用写..
2021-04-09 20:51:46
466
原创 Spring基础-创建次数生命周期
1、如何控制bean对象创建次数 1.1、为什么要控制bean对象的创建次数 我们的程序在运行中,有些bean对象使可以复用的,不用每次都去创建一个新的对象。所以我们需要针对不同的对象,来设置他是否需要每次都创建一个新的对象。 这样做的好处:无疑就是节省资源浪费 什么样的对象需要创建一次 比如:dao层的对象,service层的对象。都是只需要创建一个。 什么样的对象需要每次创建新的 比如:SqlSession和session会话。因为这些对象无法公用。 1.2、简单对象 我们可以使用<
2021-04-01 21:34:16
190
原创 Java基础-线程
1、实现线程有几种方式? 在实现多线程的本质中,Oracle,其实只有两种方式: 实现Runable接口 继承Thread类 实现Runable接口代码: public class RunableThread implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()); } public sta
2021-03-27 16:42:13
114
原创 Spring基础
1、Spring的基础入门 1.1、引入maven依赖: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.4.RELEASE</version> </dependency> 1.2、创建applicationContext.x
2021-03-25 20:54:38
73
原创 POI转换的基本使用
1、什么是poi Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 2、导入poi的maven坐标 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchem
2021-03-22 21:04:45
648
原创 Spring解耦前言
1、什么是耦合 耦合,是我们现在经常说到的一个词语。其实耦合说简单就是,一个对象依赖另一个对象,如果其中一个对象进行了修改,引用的对象也要做出修改。 我们用程序来直观的表达: 在我们日常的开发中,将我们的后端分为三个层次,controller、service、和dao。 controller控制层: public class UserController { UserService userService = new UserServiceImpl(); public St
2021-03-13 20:07:14
102
原创 String基础篇equals()、compareTo()和==的关系
1、聊聊String String是我们在开发中经常用到的类,在我们使用对象的时候,经常会使用String类型,但是String类型,并不属于8大基本数据类型。 这里大家一起回顾下8大基本数据类型: 整形:byte、short、int、long 浮点型:float、double 字符型:char 布尔型:boolean 2、看看String源码 String是fina修饰的,所以我们无法继承String类 String底层是由数组实现的 public final class S.
2021-03-11 12:46:31
195
原创 Spring整合Mybatis-plus
今天睡不着,搭建一个SpringBoot整合Mybatis-plus都花了一上午,尴尬,还踩了很多坑。记录下 Springboot整合Mybatis整合步骤: 添加依赖 <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <.
2021-03-07 09:55:01
113
2
原创 SpringBoot整合JSR 303
这篇文章将简单的整合下JSR 303,后面还会不断的添加新的内容 SpringBoot整合JSR 303步骤: 引入依赖 <!--整合JSR 303参数校验--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependen.
2021-03-07 09:54:42
138
原创 SpringBoot整合Swagger
SpringBoot简单整合Swagger,会陆陆续续的继续完善 SprngBoot整合Swagger步骤 引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dep.
2021-03-07 09:54:16
59
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人