- 博客(28)
- 收藏
- 关注
原创 Mybatis使用
文章目录主配置文件及mapper映射文件(1)mybatis主配置文件模板去哪找,复制过来的约束文件发红?(2)mapper映射文件传入的参数是容器类型?返回值的分析标签动态sql配置过程中产生的一些问题DAO代理传统dao的使用难题一对一,一对多查询递归查询 主配置文件及mapper映射文件 (1)mybatis主配置文件模板去哪找,复制过来的约束文件发红? 解决办法: 模板: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE con
2022-03-27 23:29:18
1428
原创 <java基础>类加载器
文章目录类加载器类加载器原理加载器源码分析两个重要加载器的实现1.扩展加载器2.APP加载器总结谁来加载加载器谁来加载类?什么时候需要实现一个加载器如何实现一个加载器Java类加载机制Tomcat和JDBC加载机制 类加载器 类加载器原理 加载器源码分析 ClassLoader是个抽象类。 private static native void registerNatives(); static { registerNatives(); } #这段代码的作用是什么? 成员变量
2022-03-27 23:28:17
700
原创 mysql的使用优化和原理
每次复习的时候看写的文档很低效,因为不符合认知的规律。本次对数据库的知识进行更合逻辑的组织。 表基础认识 文章目录表基础认识1.表的设计2.字段类型3.表的描述DQL(表查询语句)数据库原理1.索引(1)索引的数据结构分析(2)如何科学的建立索引2.数据的持久化3.事务机制(1)事务的概念(2)ACID原则(3)隔离级别及实现 1.表的设计 参考此文章:此文章从数据库理论的角度理解三范式,并举例对表进行改进,相当不从的文章。 http://t.csdn.cn/NKdzR 原文知乎:https://www.z
2022-03-27 23:27:04
1568
原创 JDBC原理和使用
文章目录jdbc的使用及过程分析使用全名去加载driver直接使用默认DriverManger去加载存在多个Driver的情况,指定Driver?SQL注入什么是sql注入?如何防止SQL注?jdbc是如何防止的?(1)示例:(2)源码分析 jdbc的使用及过程分析 先再pom中导入mysql-connector; 使用全名去加载driver com.mysql.cj.jdbc.Driver 使用应用加载器加载类路径下的实现类,静态代码块执行,Manager中的静态代码块会使用ServiceLoader去加
2022-03-27 23:25:10
1334
原创 String、StringBuffer、StringBuilder
文章目录StringString为什么要不可变?是如何实现不可变的?String如何实现缓存的?常用api(*TODO*)StringBuffer俩buffer相+呢?StringBuilder(线程安全) String String为什么要不可变?是如何实现不可变的? (1)String是放在常量池的,这意味这会被多个变量引用,如果可变被修改其他引用者也会跟着变,这不符合我们缓存复用的初衷的; (2)如何实现的: 首先String 类是final修饰的,不能被继承,并且没有修改String的方法; 底层为
2022-03-22 23:41:08
190
原创 JUC-AQS的应用
文章目录闭锁SemaphoreCyclicBarrier 闭锁 由于设定了state为一个整数大于0的值,全部进入同步队列; public void await() throws InterruptedException { sync.acquireSharedInterruptibly(1); } countdownDown public void countDown() { sync.releaseShared(1); } 直接将state置为0; p
2022-03-22 23:40:06
181
原创 读写锁的原理
1.为什么需要读写锁,它和ReentrantLock有什么区别? 如果读取的数据和写的数据没有关联,可以直接无锁+重入锁;但是一旦读取的数据和写的数据有重叠。那么读的数据可能出现不一致(可以对比数据库),所以此时要求读的时候不能写,写的时候不能读,读和读不冲突; 2.实现原理 读写锁简单来说就是一把读锁和写锁,写锁就是reentrantlock没有啥区别;所以值关注一下读锁就可以了。 /** * The number of reentrant read locks held by cu
2022-03-22 23:39:07
1067
原创 容器xxxxx
1.集合框架uml 为什么没有map? 首先Map提供的是键值对映射(即Key和value的映射),而collection提供的是一组数据(并不是键值对映射)。如果map继承了collection接口,那么所有实现了map接口的类到底是用map的键值对映射数据还是用collection的一组数据呢(就我们平常所用的hashMap、hashTable、treeMap等都是键值对,所以它继承collection完全没意义),而且map如果继承了collection接口的话还违反了面向对象的接口分离原则。 2.
2022-03-22 23:38:15
400
原创 git使用
文章目录设定账户邮箱和签名初始化本地库添加到暂存区提交本地库修改文件版本穿梭分支操作查看分支创建分支合并分支合并冲突增量不冲突修改同一个地方会冲突总结git团队协作机制跨团队的协作创建远程库生成SSHidea 集成git忽略文件push注意事项pullclone 设定账户邮箱和签名 邮箱和签名和github没有任何关系,生成后会在C盘用户目录下形成一个git config文件;签名的作用是区分不同的操作者; 初始化本地库 注意git对目录的操作是和linux一样的; 随便建一个文件目录,使用gitba
2022-03-22 23:35:41
357
原创 AOP及源码分析
1.AOP是什么?为啥需要AOP,有哪些应用场景 AOP就是面向切面编程。 有时候我们需要对JAR包中类的方法织入一些代码,但是jar包中的代码我们是无法修改的,这时候怎么办呢? (1)继承,继承重写方法; (2)聚合,并在在方法中调用此类对象方法; (3)静态代理,其实和聚合是差不多的了,只不过需要将方法改为引用类同名的方法。一般来说是和委托类共同实现同样的接口,并聚合委托类对象,重写接口方法时候调用此对象的同名方法;缺点:如果方法太多,工程量巨大。 而动态代理就是在程序运行期间动态的生成此静态代理对象。
2022-03-07 14:52:39
710
原创 java安装踩坑
1.java安装为什么没有jre和jdk? 安装的时候有两次选择目录,由于第一次我没选择而安装到C盘去了,无语… 于是cmd,java -version虽然出现了版本信息,但是配置好环境后javac依然不能使用(外部命令)。 最好两次都自己选择目录! 2.环境配置 ...
2022-03-05 23:56:09
387
原创 ReemtrantLock原理(配合源码)
1.大体流程 2.源码分析 (1)构造方法 默认是非公平锁,以下都默认使用非公平锁进行分析。 public ReentrantLock() { sync = new NonfairSync(); } 也可通过参数调整决定使用公平锁还是非公平锁: public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); } (2)lock() lock的基
2022-03-03 00:31:26
377
原创 线程池的原理和使用
1.为什么需要线程池? Thread pools address two different problems: they usually * provide improved performance when executing large numbers of * asynchronous tasks, due to reduced per-task invocation overhead, * and they provide a means of bounding and managing t
2022-03-02 02:02:53
266
原创 Mybatis
1.由来 JDBC的替代,①减少重复代码,包括注册获取连接,资源关闭等等;②业务代码和操作代码分离,便于维护。 2.使用步骤 建立需求类(要与数据库部分匹配) 建立接口———设定返回类型 sql映射文件(name space(接口),id,返回类型(类))———sql语句,相当于实现接口 Mybayis配置文件,(namespace:sql映射文件)————注册连接,寻找sql映射文件 ...
2021-05-12 02:22:51
149
原创 Maven
1.为什么需要MVN? jar包下载,依赖管理(什么是依赖,可以近似认为是导包 比如Tomcat下的servlet,jsp等等) 2.MVN的文件结构? 每个项目会生成同样的文件结构 ———main(主程序) ———java ———resource ———Test ———test ———resource ———Target 3.如何运作? 每个工程都有一个唯一的坐标(主要为Group Id artfactid version) 仓库(中央仓库 镜像仓库 私服 本地仓库) 项目生命周期 ...
2021-05-11 18:18:02
142
原创 JDBC
1 java data base connectivity 2 java负责接口的制定,数据库厂商负责实现 3 连接步骤 驱动注册 class.forName(“com.mysql…”) 连接connection conn=DriverManager .getconnection() 生成statement stat=conn. createStatement string sql= 执行sql(stat.查询?Query增删改?Update) 关闭资源 问题:java下的接口名和mysql下的实现类使用
2021-05-10 16:40:30
152
原创 静态代理和动态代理
1.什么是代理模式 2.动态代理的好处 如果要增加很多方法,这意味着要多写好多个静态代理类。 如果增加目标实现类,只需要在代理类使用接口接收实现类对象(父类指向子类,多态),动态静态在没有任何区别。 如果使用动态代理不用多写这些类,只用在调用处理器里增加方法即可。 问题:每次都要重写调用处理器和每次写一个静态代理类有什么区别? ...
2021-05-10 16:13:30
162
原创 HTML总结
(一)HTML的预期 HTML和PPT其实蛮相似的,PPT要实现的和HTML要实现的效果是差不多的。元素:文字,图片,链接,表单,表格,文件。 (二)HTML结构模型 DOM树结构:根部HTML,其次HEAD(网页不显示)和BODY(显示内容) (三)具体常用标签 ...
2021-05-06 23:16:42
192
原创 java关键字
1.static关键字 字面意思静态,全局。实际上被static修饰表示类级别量,由类调用。非静态量是对象级别量,因此,不能和非静态扯上关系。 ①修饰变量:可理解为表示全局变量。此类的对象共享此变量。如果不加static,每个对象就都有一份此变量,不相关,个玩个的。 ②修饰方法:不可写this,super。 ③静态类:? 2.final关键字 最终值 3.访问权限修饰符 ...
2021-05-02 00:11:26
120
原创 CAS
1.全名compareAndSwap,比较和替换。 2.目的:解决多线程安全问题(延迟中断都可能造成)。 3.机制:通过volitate使变量值在线程间可见,如果变量内存值被其他线程抢先更改,此线程则更改失败则自旋等待直到更改成功。 4.ABA问题。增加版本号,与最新内存保存值对比。 5.实现: ...
2021-05-02 00:01:38
136
原创 AQS
1.本质上是对线程状态的操纵和管理 一个线程请求获得锁有三种结果:获取锁;被加入阻塞队列;被拒绝 2.简单来讲可重入获取锁的过程: sync对象(公平或者非公平锁)state=0—aquire()—tryAquire—state=1 其他线程则无法获取锁; 2.AQS中的Node节点个参数设置的含义 waitstatus ...
2021-04-30 17:58:38
181
1
原创 线程池
1.为什么要使用线程池? 线程的创建和销毁需要映射到操作系统,浪费时间。线程池通过保持一定的核心线程数量,重复利用线程。 a.线程是可重复利用的吗? b.线程如何重复利用?如果通过不断的传入和更新runnable对象,那么runnable对象执行时依然需要内存及销毁,结果和线程的开销差不多? 2.线程池是可以共同执行一个runnable对象吗? 案例:线程池多个线程可以同时执行一个runnable对象 难道不应该一个runnable对象对应一个线程吗? 3.阻塞队列为什么都是runnable对象,他们有继承
2021-04-27 13:34:32
189
原创 泛型
1.为什么要使用泛型? 在容器中使用泛型时,实例化后填入具体类型参数后,编译器会检查加入元素的类型,从而约束容器的元素类型。遍历时不用从object类转换成所需类型。 如果不用泛型,编译阶段时不知道容器里放了什么元素的,统一为object对象,就需要强制转换为所需类型。 问题:一般的类使用泛型到底有什么用,属性和方法都必须是泛型吗? 2.linkedlist list内部类Node的成员可以有是本类对象吗? ...
2021-04-23 18:37:03
182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅