- 博客(9)
- 收藏
- 关注
原创 集合的相关知识
常用的集合有ArrayList、LinkedList、HashMap、HashSet、因为ArrayList线程不安全,所以还会使用到CopyOnWriteArrayList还有CopyOnWriteArraySet,因为HashMap线程不安全,所以还会使用到ConcurrentHashMap。 ArrayList和LinkedList的区别? 1.ArrayList底层是动态数组,LinkedList的底层是链表 2.ArrayList查找和更新效率高,LinkedList删除和添加效率高,因为A
2021-11-09 09:17:21
208
原创 JVM和GC
class文件通过类加载器进生成Class模板(元空间,即方法区的实现),然后根据模板创建对象(堆当中),栈只是用来指向堆当中的对象。 java堆和方法区是jvm公有部分,数据共享的,也是GC的作用域 执行引擎:解释代码并交给jvm运行 pc寄存器:每个线程私有,存储每个线程下一行要执行的行号(行号指示器),pc寄存器是通过字节码解释器而被改变的 本地方法栈:本地方法都加载到这里 本地方法库:调用底层C语言的一些方法 本地方法接口:调用本地方法的接口 本地方法栈 调用 本地方法接口 将...
2021-10-12 15:45:24
141
原创 Mysql查询语句和基本优化
having和where的区别? Having后面可以跟聚合函数条件 使用group by 时select 后面只能加分组字段或者聚合函数,加入普通字段id会报错 内连接,左右全外连接的区别 内连接就是两张表通过连接字段进行连接,结果表为两表同时满足连接字段的值 左外连接就是左表为完整的表,右边没有对应匹配则显示null,右外连接相似,全外连接显示,不匹配的都是null 模糊查询:字符串加单引号,%为任意匹配,_为单一匹配 子查询:即将一个查询的结果表作为子表,作为另一个表的查询条件,可在f
2021-10-12 00:25:11
63
原创 线程池的工作流程
线程池可以线程复用,定期销毁,对线程进行统一管理,但无法满足一个线程需要依赖于另一个线程的执行结果的情况 线程池的创建有7大参数 1,核心线程数 2,最大线程数 3,线程的有效期 4,有效期的单位 5,阻塞队列 6,线程工厂,用于创建线程,一般使用默认 7,拒绝策略 线程池的执行流程:没有任务时线程池中也没有线程,当任务到达时,创建核心...
2021-10-11 23:30:49
223
原创 静态代理和动态代理
什么是代理? 即在不改变原有代码的基础之下对原有代码进行功能上的拓展。 静态代理: 只能代理 某一个 特定接口的 实现类对象: 比如,B、C同为A接口的实现类,C重写了A的方法,如果此时B想要作为C的代理类,则需要在B中声明A接口,并在构造器中传入C,然后在B重写A的方法中调用C的方法,在此基础上对重写方法进行拓展。 动态代理: 可以代理任意接口的实现类对象 他的特点:不主动创建代理类,而是根据被代理类进行创建。 通过使用jdk自带类Proxy进行创建 Proxy.ne...
2021-10-11 22:45:09
62
原创 什么是序列化和反序列化
java是以面向对象为编程思想,但是保存时无法将对象存储到硬盘中,因此序列化和反序列化就此诞生。 序列化:将一个java对象转化为字节序列保存到硬盘中,该对象实现Serializable接口即可实现序列化。 反序列化:将字节序列恢复为java对象的过程。 怎么确保序列化和反序列化不会错乱? 序列化时对给java对象默认一个serialVersionUID,反序列化时同过对比Id来进行判断。 但是序列化之后,如果对该java对象进行更改则serialVersionUID也会自动改变,此时就无法反序列
2021-10-11 22:00:51
75
原创 final,finally,finalize的区别
final是修饰词: 1.修饰类则该类不能被继承,且类中方法默认加了final 2.修饰方法:该方法不能被重写 3.修饰变量:该变量不能被改变;(String默认加了final,但是可以改变,是因为改变String变量的时候重新创建了一个变量然后重新引用) finally一般用于try块之后,作用于try块中return之前,但并不代表finally一定会被执行; 如以下情况: 1.执行某方法还没进入到try块便已经返回; 2.try块中使用了System.exit(),即虚拟机被停止,所
2021-10-11 21:50:51
73
原创 异步调用和多线程
一个程序的执行就是进程,进程中一个不可分割的最小单元就是线程,多个就是多线程。 线程分为用户线程和守护线程,守护线程就是为保护用户线程执行的线程,如gc线程。 线程: 被创建à就绪start()à执行run()à休眠/等待Thread.sleep()[.interrupt()]/Object.wait()[notify(),notifyAll()]à销毁Thread,stop()或者设置成守护线程(在start之前设置Thread.setDaemon(true)) 商品详情页面因为需药加载很多数
2021-10-11 21:37:12
164
原创 页面静态化
为什么要页面静态化? 商品详情数据较多,每次访问都要加载会降低效率。因为商品页面多,每个页面占用内存在10k左右,所以如果使用缓存会占用大量的内存空间,因此可以使用页面静态化技术。 页面静态化是将页面存储到硬盘中,缓存时存储在内存,所以速度低于缓存,比较适合占用空间大但是更改不频繁的数据,缓存适用于内存小更改不频繁的诗句。 通过模板引擎来生成静态页面,然后保存到nginx服务器,使下次访问直接访问静态页面,不用重新加载数据。本项目使用的是thymeleaf模板引擎 引入thymeleaf启动器 2.
2021-10-11 21:35:30
101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人