- 博客(25)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JVM逃逸分析
逃逸分析(1)逃逸分析: 当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他地方中,称为方法逃逸。(2)使用逃逸分析,JIT编译器可以对代码优化: 1)同步省略: 如果一个同步代码块中的对象被加了锁,但这个对象只在方法中定义并调用,没有逃逸,那么JIT编译器会把同步代码 块变成正常的代码块,这就叫同步省略,又叫锁消除。 例如:public void f() { Object hollis = new Object(); synchr
2022-03-22 22:10:40
2489
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 为什么需要同时重写hashCode和equals
hashCode返回对象的hash值,是一个int类型,通常用于hash类的集合,如hashMap、hashSet,集合用hash值使对象分配在hash表的指定位置。不同的对象可能拥有相同的hash值,在集合中,这叫哈希冲突。在查找集合元素的时候,如果只用equals()进行比较,需要一个一个进行比较,速度很慢,所以先匹配对象的hash值,再来遍历查找对象。java也规范了:用equals()方法判断相等的两个对象,hashCode必须相同。所以需要同时重写equals()和hashCode()。...
2022-03-21 13:52:14
1075
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java的参数传递与对象的创建方式
Java只按值传递当传入的是基本数据类型时,会将值拷贝一份传递过去;当传入的是引用数据类型是,会将引用拷贝一份传递过去;引用存在栈中,对象存在堆中,实参与形参都指向同一个对象。对象的创建方式(1)通过 new 关键字;(2)通过反射包中的 Constructor 类的 newInstance() 方法;(3)通过对象的 clone() 方法;(4)通过对象的反序列化。获取Class对象的三种方式(1)类名.class(2)对象名.getClass()(3)Class.forName(“
2022-03-21 13:48:08
1028
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 项目中常用的注解(下篇)
上篇在这里:项目中常用的注解(上篇)中篇在这里:项目中常用的注解(中篇)1、lombok常用注解lombok的注解用来操作实体类(javabean、entity、pojo、dto),可以少写很多代码。(1)@Getter/@Setter自动产生 getter/setter 方法(2)@ToString自动重写 toString() 方法,会印出所有变量(3)@EqualsAndHashCode自动生成 equals(Object other) 和 hashcode() 方法,包括所有非静
2022-03-19 22:44:15
5500
1
原创 Java异常
异常分类异常主要有两类:Error:系统内部错误,这类错误由系统进行处理,程序本身无需捕获处理。Exception:可以处理的异常。Exception有分为:RuntimeExcption 异常(运行时异常):可以捕获,也可以不捕获。非 RuntimeException(受检异常 / 编译时异常,Checked Exception):必须捕获。RuntimeExcption 异常主要包括:错误的类型转换数组访问越界访问 null 指针算术异常Checked Exc
2022-03-27 23:10:29
386
原创 Java多线程
简介一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。知识点多线程的实现线程变量线程同步Lock 与 Unlock死锁线程生命周期ArrayBlockingQueue生产者消费者模式线程池什么是线程线程:程序执行流的最小单元。它是进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派 CPU 的基本单位。线程的生命周期多线程实现1、继承 Thread
2022-03-27 23:07:59
138
原创 面向对象基础、static、final关键字
1、类类的定义类是相同或相似对象的一种抽象,是对象的一个模板,它描述一类对象的行为和状态。类是具有相同属性和方法(行为)的对象的集合类和对象之间的关系类就是对象的抽象(或者模板),对象就是类的具体(或者实例)。变量类型局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。类变量:也
2022-03-26 18:06:15
155
原创 Java常用类
常用类ArraysStringBuilderCalendarDateMathSystemRandom常用方法Arrays方法描述 List asList(T… a)返回由指定数组构造的 Listvoid sort(Object[] a)对数组进行排序void fill(Object[] a, Object val)为数组的所有元素都赋上相同的值boolean equals(Object[] a, Object[] a2)检查两个数组是否相
2022-03-26 18:01:35
93
原创 Linux的目录结构与常用命令
树状目录结构以下是对这些目录的解释:/bin:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。/boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev :dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。/etc:etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要
2022-03-23 15:59:18
78
原创 静态代理和动态代理
静态代理典型的实现: AspectJ 。实现方式:一个接口,一个被代理类,一个代理类;两个类都要去实现这个接口,并且代理类要为被代理类增强方法。/** * 静态代理 */public class StaticProxy { public static void main(String[] args) { SellHouseImp sellHouseImp = new SellHouseImp(); SellHouseProxy sellHouseProx
2022-03-23 15:45:38
518
原创 单例模式的六种实现方式
实现方式:一个创建对象的类,类中包含 私有构造函数、私有静态变量、公有静态方法。私有构造函数是为了防止在外部创建对象;私有静态变量用于存放对象;公有静态方法用于向外部提供对象。方式一:懒汉式(非线程安全)/** * 懒汉式(非线程安全) */public class SingleTon_01 { //私有构造方法 private SingleTon_01(){ } //私有静态变量 private static SingleTon_01 singleTon
2022-03-23 15:40:40
135
原创 mybatis的一级缓存和二级缓存
一级缓存默认是一级缓存,使用 hashmap 存储数据,存储的是查询操作,其作用域是一个 session 会话。hashmap 的 key是:hashCode+查询的 SqlId+编写的 sql 查询语句+参数,value是查询后得到的数据。所以当查询中的参数改变 或 两次查询之间有任何一次增删改操作 或 手动清除了缓存,一级缓存都会失效。二级缓存需要手动开启,在配置文件中将cacheEnabled属性改成true就算是开启了;是一个全局性的作用域;需要使用二级缓存的实体类需要实现Serializ
2022-03-22 22:15:29
425
原创 Git操作流程和常用命令
1、基本概念git是进行版本控制的工具。除去镜像的本地远程仓库,它主要分为四个区,分别是 工作区、暂存区、本地仓库、远程仓库;刚开始的源代码、原版本在工作区进行修改,然后通过git add操作放到暂存区,在暂存区通过git commit操作提交到本地仓库,在本地仓库通过git push操作提交到远程仓库;从远程仓库通过git pull命令可以下载代码和版本到工作区。2、Git操作流程代码提交和同步代码代码撤销与撤销同步3、常用命令删除暂存区中的文件1、将暂存区中的内容删除,工作区中
2022-03-22 15:58:00
204
原创 mysql的存储过程
mysql的存储过程类似于一个函数(1)通过 “CREATE PROCEDURE 函数名 (参数列表)”形式创建一个 ‘ 函数 ’(2)然后在 BEGIN … END之间编写逻辑体,逻辑体内主要包括:变量的声明“ declare 变量名 变量类型”、变量的赋值SET、SQL语句、条件语句IF 等等(3)然后通过CALL调用 ‘ 函数 ’ ,最后SELECT查询或使用结果。存储过程案例CREATE PROCEDURE `test_procedure2`(IN `uid` integer,IN `si
2022-03-22 15:38:19
541
原创 事务的ACID特性与并发一致性问题
1、事务基本特性ACIDA原子性(atomicity) 指的是一个事务中的操作要么全部成功提交,要么全部失败回滚。C一致性(consistency) 指的是事务的前后操作需保证系统从一个正确状态转换到另一个正确状态,而ACID就是说事务能够通过AID来保证这个C的过程,C是目的,AID都是手段。。I隔离性(isolation) 指的是一个事务的修改在最终提交前,对其他事务是不可见的。D持久性(durability) 指的是一旦事务提交,所做的修改就会永久保存到数据库中。2、并发一致性问题在并
2022-03-21 23:29:25
118
原创 索引失效和查询优化
mysql的索引怎样会失效?(1)条件中有 or;要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引。(2)like查询以%开头(3)如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引(4)判断 null 值(5)使用 “ != ”(6)not in对查询进行优化,尽量避免全表扫描,避免导致索引失效在where子句中进行null值判断的话会导致引擎放弃索引而产生全表扫描SELECT id FROM table WHERE num is null
2022-03-21 23:09:19
144
原创 存储引擎myisam和innodb
1、myisam和innodb的区别:myisam: mysql 5.1版本之前默认的存储引擎,不支持事务和外键,锁是表级锁,索引和数据分开存储,一般用于大量查询的场景。innodb: 是基于B+Tree索引建立的,支持事务和外键,锁是行级锁,并且通过MVCC来支持高并发,索引和数据存储在一起。2、B+树索引可分为聚簇索引和非聚簇索引:聚簇索引(主索引): 叶子结点存放真实的数据。非聚簇索引(辅助索引): 叶子结点存放的是指向数据页或数据行的逻辑指针。3、MVCC全称Multi-Version
2022-03-21 23:02:44
510
原创 sql的语法顺序和执行顺序
语法顺序执行顺序关于内连接和 inner join onSELECT A.value, B.valueFROM tablea AS A INNER JOIN tableb AS BON A.key = B.key;可以不明确使用 INNER JOIN,在where中进行等值连接SELECT A.value, B.valueFROM tablea AS A, tableb AS BWHERE A.key = B.key;关于sql中between的用法WHERE column_
2022-03-21 14:14:16
89
原创 comparable和comparator接口
作用Comparable和Comparator两个接口可为对象进行自定义排序规则。使用方式(1)实现Comparable接口,重写compareto()方法;接口中通过x.compareTo(y)来比较x和y的大小。若返回负数,意味着x比y小;返回零,意味着x等于y;返回正数,意味着x大于y。/** * 方法一:实现Comparable接口,重写compareto()方法 */class Person implements Comparable<Person>{ priva
2022-03-21 13:56:30
298
原创 接口和抽象类的区别
相同点: 都不能被实例化。不同点:(1)抽象类中可以有方法的实现,可以有抽象方法,也可以没有抽象方法; 接口:在 Java 8 之前,不能有方法的实现,只能有抽象方法; 从 Java 8 开始,可以拥有默认的方法实现,这是因为不支持默认方法的接口的维护成本太高了。public interface InterfaceExample { void func1(); default void func2(){ System.out.println(
2022-03-20 15:03:17
276
原创 面向对象的三大特性
封装隐藏对象的属性和实现细节,仅对外公开接口。典型的例子就是 Java Bean 实体类。继承子类继承父类的全部属性和方法,并且可以对父类的方法进行扩展,还可以拥有自己的属性和方法。抽象类(模板)只能单继承,接口(规范)可以多继承。一个子类只能继承一个父类,但能实现多个接口。多态有编译时多态和运行时多态:编译时:指的是方法的重载运行时:引用所指向的具体类型在运行时才确定,在代码中的体现就是父类型的引用指向子类型的对象。...
2022-03-20 14:42:23
244
原创 项目中常用的注解(中篇)
上篇在这里:项目中常用的注解(上篇)1、SpringBoot中的注解(1)@SpringBootApplication这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注
2022-03-19 22:20:05
446
原创 项目中常用的注解(上篇)
1、元注解@Target :表示该注解可以用在什么地方,可能的ElementType参数包括:CONSTRUCTOR:构造器的声明FIELD:域声明LOCAL_VARIABLE:局部变量声明METHOD:方法声明PACKAGE:包声明PARAMETER:参数声明TYPE:类、接口(包括注解类型)或者emun的声明ElementType参数的值可以有多个,用逗号分隔。省略@Target则表示所有的值都试用@Retention :表示需要在什么级别保存该注解信息。可选的Retention
2022-03-19 21:57:01
286
原创 日志的配置文件(log4j.properties)
1、作用配置日志的一些格式和属性,主要包括:日志记录的优先级,如:ERROR、WARN、INFO、DEBUG将日志信息输出到指定位置,如:控制台、文件等调整输出样式,如:输出时间间隔、格式布局等2、详解百度百科:log4j_百度百科 (baidu.com)优秀文章:Log4j框架配置文件log4j.properties配置使用详解_iceburg-blogs的博客-CSDN博客_log4j配置文件详解3、配置样例设置log4j.rootLogger = debug,stdout,D,
2022-03-19 17:15:51
272
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人