课后笔记
文章平均质量分 69
Lambda丶雨辰
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap基本使用及其原理
HashMap: 线程不安全Hashtable: 线程安全, 效率低 (底层悲观锁锁整张表)ConcurrentHashMap: 线程安全, 效率高(分析JDK7和8的底层区别)JDK1.7 ConcurrentHashMap 底层分析 创建ConcurrentHashMap对象时: 创建一个长度为16的大数组, 加载因子是0.75 (Segment[]) 创建一个长度为2的小数组, 将地址值赋值给0索引处, 其他索引位置都为null (HashEntr原创 2022-06-03 17:23:41 · 3800 阅读 · 0 评论 -
volatile在可见性和有序性的基础上,如何保证原子性
获取共享变量时,为了保证该变量的可见性,需要使用 volatile 修饰。它可以用来修饰成员变量和静态成员变量,他可以避免线程从自己的工作缓存中查找变量的值,必须到主存中获取它的值,线程操作 volatile 变量都是直接操作主存。即一个线程对 volatile 变量的修改,对另一个线程可见。CAS 必须借助 volatile 才能读取到共享变量的最新值来实现【比较并交换】的效果在JDK1.5之后提供了一个在util包下的comcurrent包下的atomic包(原子包) 里面提供对各种类的原子操作原创 2022-06-03 12:05:38 · 434 阅读 · 0 评论 -
MYSQL避免索引失效
该情况下,索引生效,执行效率高。如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列。匹配最左前缀法则,走索引: 违法最左前缀法则 , 索引失效: 如果符合最左法则,但是出现跳跃某一列,只有最左列索引生效: 根据前面的两个字段name , status 查询是走索引的, 但是最后一个条件address 没有用到索引。 由于,在查询是,没有对字符串加单引号,MySQL的查询优化器,会自动的进行类型转换,造成索引失效。尽量使用覆盖索引(只访问索引的查询(索引列完全包转载 2022-06-01 19:44:25 · 777 阅读 · 0 评论 -
线程的五种和六种状态
这是从 操作系统 层面来描述的: 【初始状态】仅是在语言层面创建了线程对象,还未与操作系统线程关联 【可运行状态】(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由 CPU 调度执行 【运行状态】指获取了 CPU 时间片运行中的状态 当 CPU 时间片用完,会从【运行状态】转换至【可运行状态】,会导致线程的上下文切换 【阻塞状态】 如果调用了阻塞 API,如 BIO 读写文件,这时该线程实际不会用到 CPU,会导致线程上下文切换,进原创 2022-05-27 22:44:45 · 205 阅读 · 0 评论 -
守护线程Demo
守护线程:默认情况下,Java 进程需要等待所有线程都运行结束,才会结束。有一种特殊的线程叫做守护线程,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。log.debug("开始运行...");Thread t1 = new Thread(() -> { log.debug("开始运行..."); sleep(2); log.debug("运行结束...");}, "daemon");// 设置该线程为守护线程t1.setDaemon原创 2022-05-27 22:22:01 · 109 阅读 · 0 评论 -
Spring AOP 底层用的是JDK代理还是CGLIB代理
Spring中AOP底层的实现是基于动态代理进行实现的。常见的动态代理技术有两种:JDK的动态代理和CGLIB。两者的区别如下所示:1、JDK动态代理只能对实现了接口的类生成代理,而不能针对类2、Cglib是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法进行增强,但是因为采用的是继承,所以该类或方法最好不要声明为final,对于final类或方法,是无法继承的。Spring如何选择是用JDK还是cglib?1、当bean实现接口时,会用JDK代理模式2、当bea原创 2022-05-26 10:21:09 · 1330 阅读 · 0 评论 -
Spring Boot的核心注解是哪个?自动配置实现过程?
1.Spring Boot的核心注解启动类上面的注解是@SpringBootApplication,它也是Spring Boot的核心注解,主要组合包含了以下3个注解:1、@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。2、@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项。如关闭数据源自动配置功能: @SpringBootApplication(exclude = { Da原创 2022-05-14 17:46:21 · 1589 阅读 · 0 评论 -
CAP定理
一、CAP定理C:一致性C代表更新操作成功后,所有节点在同一时间的数据保持完全一致。A:可以性A代表用户访问数据的时候,系统是否能在正常响应时间返回预期的结果。P:分区容错性P代表分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。CAP定理在系统的实际开发和使用中不可能同时都满足的。CAP的原理图如下:...转载 2022-05-03 10:40:25 · 83 阅读 · 0 评论 -
Spring注解大全
Spring 注解名 功能 使用示例 @Component 将类声明成Spring的bean对象 直接写在类上 @Controller 表现层类注解 直接写在类上 @Service 业务层类注解 直接写在类上 @Repository 持久层类注解(数据层) 直接写在类上 @Bean 将方法返回值变为Spring的Bean对象 写在方法上 @Import 导入配置文件,传入配置文件class类型 ..原创 2022-03-24 21:05:49 · 733 阅读 · 0 评论 -
Tomcat 深度解析_02
5.Web 应用配置web.xml 是web应用的描述文件, 它支持的元素及属性来自于Servlet 规范定义 。 在Tomcat 中, Web 应用的描述信息包括 tomcat/conf/web.xml 中默认配置 以及 Web 应用 WEB-INF/web.xml 下的定制配置。5.1 ServletContext 初始化参数我们可以通过<context-param> 添加ServletContext 初始化参数,它配置了一个键值对,这样我们可以在应用程序中使用...原创 2022-03-11 21:30:17 · 681 阅读 · 0 评论 -
Tomcat 深度解析_01
Tomcat 专题课程内容序号 第一天 第二天 1 Tomcat 基础 Web 应用配置 2 Tomcat 架构 Tomcat管理配置 3 Jasper JVM配置 4 Tomcat 服务器配置 Tomcat集群 5 Tomcat安全 6 Tomcat性能调优 7 Tomcat 附件功能 1.Tomcat 基础1.1 web 概念1). 软件架构原创 2022-03-11 21:09:07 · 598 阅读 · 1 评论 -
Maven的安装及环境变量配置
找到资料中的apache-maven-3.6.1-bin.zip 解压到当前文件夹 找到资料中的 mvn_resp.rar解压到当前文件夹 把解压出来的mvn_resp文件夹 剪切到 加压出来的 apache-maven-3.6.1 目录下 配置本地仓库 在 conf/settings.xml配置文件中配置 配置中央仓库的镜像 在 conf/settings.xml配置文件中配置 <mirror> <id>alimaven</id> ..原创 2022-03-05 13:59:36 · 1946 阅读 · 0 评论 -
面对对象学习:由繁到简(个人感悟)
面对对象学习的终极思想:由繁到简--追求更高效--更节能--更开放的编程思想从String引入StringBuilder 体现了程序员编码的一个思想,就是我们写的代码有更快的运行速度从匿名内部类引入lambda表达式 字节码文件减少,也就减少了内存的占用.也方便我们代码的编写学习JAVA只是学习其中的基本使用方法,它还有很多内核规律需要我们去了解比如:数组,链表,栈,队列,树.这些数据结构能够帮助我们更好的去操作数据再比如操作计算机存储空间中的文件IO流:从操作...原创 2022-02-25 16:16:50 · 337 阅读 · 0 评论 -
Java 基础 测试练习题
一、简答题1. 简述JDK、JRE、JVM分别是什么? 以及它们之间的包含关系JDK是java语言的环境开发包,JVM虚拟机是编译java文件的编译器,用来将java代码编译到各类操作系统.JRE是用于java开发的核心类库JRE:是指java运行环境.包含JVM虚拟机及JAVA核心类库JDK:是Java语言的软件开发工具包,内部包含了代码的编译工具和运行工具JVM:是编译java文件的编译器,用来将java代码编译到各类操作系统. 2. 写出Java中,基原创 2022-02-23 09:08:29 · 417 阅读 · 0 评论