2024-07学习笔记

news2024/12/28 19:18:03

1.${}取值

在这些属性源中,命令行参数和JVM系统属性拥有最高的优先级,它们可以覆盖在Properties文件中定义的属性。而操作系统环境变量和Properties文件的优先级相对较低,但是Spring会根据配置的不同情况进行属性的合并和覆盖,最终将这些属性加载到Environment对象中供应用程序使用。

源码 

先用${}作为key去enviroment对象中取,取不到,就看是否包含冒号:

包含的话,就截取冒号前边的再去取

还是取不到,就取冒号后边的默认值

2.循环依赖

 A引用了B,B引用了C,C又引用了A,这种情况会造成循环依赖

比如A引用了B,B又引用了A

加载的时候,如果先加载A,然后会去加载被A引用的bean,就会加载B

那加载B的时候,也会加载被B引用的B,就会加载A

然后又回到了A,A中又去加载B,然后B中又加载A,这就死循环了,没完没了

allowCircularReferences 是一个Spring的配置属性,默认为false。当设置为true时,Spring容器允许循环依赖的发生,这时就会启用三级缓存来解决循环依赖问题。

allowCircularReferences 属性为true时,Spring容器才会启用三级缓存来管理循环依赖的情况。这样可以确保Bean的初始化顺序和状态管理正确,避免循环依赖导致的初始化问题或死锁。
综上所述,三级缓存在 allowCircularReferences 为true时才发挥作用,用于解决Spring应用程序中复杂的循环依赖问题。 

 3.@PostConstruct和@PreDestroy

@PostConstruct实例初始化的时候执行

@PreDestroy程序正常退出的时候执行,如果是OOM这种异常情况,就来不及执行

4.自连接思想

比如下边算出连着的三个数字

就是把一个表看成三个表,分别建立连接

a表和b表id差1,且值相等

b表和c表id差2,且值相等

下边这个一样,算两个连续的,那就是看成两个表,a和b的Id差1,然后a和b的值相等 

5.ifnull和coalesce

 

6.group_concat

我知道group_concat可以对group by分组函数中的字段进行拼接

但是我刚知道它里边还可以进行distiinct和排序

如图

 

 7.union all中最后一个order by

 8.substring

substring只写第一个数字不写第二个数字,意思就是从这个数字截取到最后为止

9. 把val等于某个值的,从链表中移除

用递归方法,比较简洁

 10.线程池工作方式

任务进来,先去找核心线程,如果核心线程数已经达到最大,就去排队,如果队列已经满了,才会去找空闲线程

最大线程数=核心线程数+非核心线程数,与队列数无关

最大线程数定义了线程池能够同时存在的最大线程数量,包括了核心线程数在内,但可以根据负载情况动态增加非核心线程。

 

1.FixThreadPool 

 

2.CacheThreadPool 

3.jmm 

jmm java memory modle  java内存模型

4.因为from区到to区是复制算法,所以二者1:1

11.锁

1.锁的膨胀

当一把锁第一次被线程持有的时候 偏向锁

如果这个线程再次加锁还是偏向锁

如果别的线程来加锁(交替执行)轻量锁

如果是资源竞争 重量锁

 

2.ReentrantLock

ReentrantLock 的公平锁和 AbstractQueuedSynchronizer (AQS) 之间有密切的关联,因为 ReentrantLock 的实现正是基于 AQS 框架。

3.实例锁和class锁不一样

所以两者没有资源竞争

 

但是静态方法的锁和class的锁一样,都是锁class 

 

4.synchronized是可重入锁

 递归方法上使用 synchronized 通常不会导致死锁,因为Java中的 synchronized 是可重入的锁。这意味着同一个线程可以多次获得同一个锁,而不会被自己已经持有的锁所阻塞。

5.实例的同步方法和非同步方法可以一起调用,不互相阻塞

6.锁是对象头的一个标识,锁不同的对象,就不会发生竞争

 

7.为什么不要在代码中写sout

 

8.volatile不保证原子性

 

9.cas

 cas是cpu级别的指令,快

java中的AtomicInteger,AtomicBoolean就是利用CAS达到线程安全的

12.一段模拟多线程并发的代码

4个任务并发执行

latch减到0的时候,await的阻塞解除

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1960401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QUARKUS初体验

1.什么是QUARKUS? Quarkus是 Red Hat为GraalVM 和 HotSpot 量身定制用程序。特点是启动超快,内存极低,并且在容器编排平台(如Kubernetes)中提供了近乎即时的向上扩展和高密度的内存利用率。并且基于GraalVM&#xff0…

【YashanDB知识库】如何远程连接、使用YashanDB?

问题现象 在各个项目实施中,我们经常遇到客户、开发人员需要连接和使用YashanDB但不知如何操作的问题,本文旨在介绍远程连接、使用YashanDB的几种方式。 问题的风险及影响 无风险 问题影响的版本 历史版本~23.2 问题发生原因 无 解决方法及规避方…

Pytorch基础:Tensor的连续性

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 在Pytorch中,一个连续的张量指的是张量中各数据元素在底层的存储顺序与其在张量中的位置一致。这意味着每一个元素的地址可以通过下面的线性映射公式来…

MySQL8--用户与权限管理

原文网址:MySQL8--用户与权限管理_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍MySQL8的用户与权限的管理,包括:用户的创建与删除、授权与撤销权限等。 为什么要管理用户与权限? 目的是保证数据库的安全性,只授…

TCP/IP协议——使用Socket套接字实现

目录 Socket 使用Socket实现TCP客户端和服务器的过程 使用Socket搭建TCP服务器 线程优化 向客户端发送消息 连接的断开 客户端主动断开 服务端主动断开 服务器完整的程序 使用Socket编写客户端程序连接TCP服务器 Socket Socket是一种网络通信协议,它允许…

不再担心数据丢失:用rsync打造你的自动化备份解决方案

在现代IT环境中,数据备份是一项至关重要的任务。无论是个人文件还是企业数据,都需要有可靠的备份机制来防止数据丢失。今天,我们将介绍一种高效的备份方案:使用rsync实现自动化备份目录。 什么是rsync? rsync 是一个开…

vscode+cmake+msvc+vcpkg的入门使用

一.环境安装 1.下载vscode并安装: Download Visual Studio Code - Mac, Linux, Windows 2.安装完成后,安装C和cmake 相关工具,如图。 3.vcpkg的下载和安装 克隆vcpkg的仓库到本地:https://github.com/microsoft/vcpkg.git,运行bo…

《学会 SpringMVC 系列 · 基础篇》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

deeplapv3 动机

语义分割是计算机视觉领域中重要的任务之一,语义分割的目的是为图像中的每个像素分配标签。相比于传统方法,以深度学习为基础的全卷积网络极大地提高了语义分割算法的性能。 在语义分割网络中,常用到如下2种结构: 空间金字塔池化…

C++STL简介(三)

目录 1.vector的模拟实现 1.1begin() 1.2end() 1.3打印信息 1.4 reserve() 1.5 size() 1.6 capacity() 1.7 push_back() 1.8[ ] 1.9 pop_back() 1.10 insert&…

【涵子来信】——AI革新:1.新时代是便捷的,要会用

各位读者朋友们: 我们现在AI时代的十字路口,AI是为生活带来便利的,我们要会使用AI。今天这篇文章来讲述一下AI的正确使用。 一、 AI的使用 1.1.便捷之中要会辨别 AI是带来强大的,利用好可以给生活带来便捷。 像之前WWDC24宣传…

SAP 字符串关键字找程序

关键字查询程序 : RPR_ABAP_SOURCE_SCAN或RS_ABAP_SOURCE_SCAN

Python网络爬虫:基础与实战!附淘宝抢购源码

Python网络爬虫是一个强大的工具,用于从互联网上自动抓取和提取数据。下面我将为你概述Python网络爬虫的基础知识和一些实战技巧。 Python网络爬虫基础 1. HTTP请求与响应 网络爬虫的核心是发送HTTP请求到目标网站并接收响应。Python中的requests库是处理HTTP请求…

C语言——运算符及表达式

C语言——运算符及表达式 运算符运算符的分类(自增运算符)、--(自减运算符)赋值运算符逗号运算符(顺序求值运算符) 表达式 运算符 运算符的分类 C语言的运算符范围很宽,除了控制语句和输入输出…

从数据血缘谈一谈如何实现数据管理的“自治理”

数据治理是企业数据管理的核心,它通过系统性的管理行为,确保数据的完整性、准确性、安全性、合规性和价值最大化。数据治理有助于提高数据质量和可用性,减少数据管理的风险,增强企业对数据的信任,从而提升业务效率和竞…

mongodb中ret resulted in status UnknownError: 24: Too many open files

mongodb使用中遇到的问题 Invariant failure: ret resulted in status UnknownError:24:Too many open files at *** 错误原因为打开文件过多的错误,即“句柄数超出系统显示”。 1.需要更改一下系统的句柄数: 查看一下系统目前设置的句柄数 open files 对…

算法刷题day2|贪心:122. 买卖股票的最佳时机 II、55. 跳跃游戏、45. 跳跃游戏 II、1005. K 次取反后最大化的数组和

122. 买卖股票的最佳时机 II 贪心一 画出股票的折线图&#xff0c;将图中折线上升区间相加即是最大利润。 class Solution { public:int maxProfit(vector<int>& prices) {int result 0;for (int i 1; i < prices.size(); i){//下降区间直接跳过if (prices[i]…

创建完整的APP页面

完整的页面创建过程包括三个步骤 在layout目录下创建XML文件 创建与XML文件对应的Java代码 在AndroidMainfest.xml&#xff08;清单文件&#xff09;中注册页面配 一步到位的activity创建 跳转&#xff1a;意图 创建一个意图实例&#xff0c;使用setClass&#xff08;&#…

python机器学习12--Regression回归分析

1.数据准备 第一步&#xff1a;数据内容一定要有以下两种值域的因果数据。  特征&#xff08;Feature&#xff09;&#xff1a;因&#xff0c;在统计学称为自变量&#xff08;Independent Variable&#xff09;。  标签答案&#xff08;Label&#xff09;&#xff1a;果&a…