自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

原创 ReentrantLock源码分析

不可打断是指当前线程被打断了,但是他还需要去获取锁,如果获取锁失败,继续park,获取锁成功就返回true,然后将当前线程打断标记设为true。2、将该节点从等待队列断开,并加入AQS队列尾部进行等待,如果成功就直接退出,如果失败就循环唤醒下一个节点。当前线程尝试获取锁时,会先判断AQS队列中是否有线程,如果有,就获取锁失败,否则才去获取锁。方法获取锁是可以被打断的,当线程在AQS队列等待时被打断,会直接抛出异常,然后退出。3、将AQS队列中原来的尾结点状态修改为-1,当前节点作为尾结点,状态为0。

2024-08-05 00:13:56 900

原创 深入研究Java的String常量池

将 s3中的“11”字符串放入 String 常量池中,因为此时常量池中不存在“11”字符串,在jdk6中,会在常量池中生成一个 “11” 的对象,但是在 jdk7 中常量池不在 Perm 区域了,常量池中不需要再存储一份对象了,可以直接存储堆中的引用。方法的返回值是一个新的字符串,但字符串的值和拼接的字符串一致,但是两个不同的字符串,一个存在于串池之中,一个存在于堆内存之中。的时候已经生成“1”对象了。声明 s4 的时候常量池中是不存在“11”对象的,执行完毕后,“11“对象是 s4 声明产生的新对象。

2024-08-05 00:08:31 1582

原创 深入理解JMM内存模型

规定了对共享变量的写操作对其它线程的读操作可见,它是可见性与有序性的一套规则总结,抛开以下 happens-before 规则,JMM 并不能保证一个线程对共享变量的写,对于其它线程对该共享变量的读可见。修饰,修改一个共享变量时,通常只是修改了自己的工作内存中该变量的值,并没有立即将该变量的值写回主存,当线程结束时,它会将自己工作内存中修改过的共享变量的值写回主存。3、1 秒之后,main 线程修改了 run 的值,并同步至主存,而 t 是从自己工作内存中的高速缓存中读取这个变量的值,结果永远是旧值。

2024-07-29 23:56:05 710

原创 Synchronized的锁升级过程是怎样的?

关键字加到static静态方法和代码块上都是是给 Class 类上锁;关键字加到实例方法上是给对象实例上锁;尽量不要使用,因为 JVM 中,字符串常量池具有缓存功能,多个线程使用相同的字符串值,实际使用的是同一个对象。

2024-07-29 23:51:10 3859

原创 Redis是如何进行内存回收的?

命令给Redis的key设置TTL,当key的TTL到期以后,再次访问返回的是nil,说明这个key已经不存在了,对应的内存也得到释放。从而起到内存回收的目的。惰性删除是指并不是在TTL到期后就立刻删除,而是在访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除。: 对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰。最大的key,将他删除,然后判断内存是否充足,充足的话就结束,否则继续删除。,即不淘汰任何key,如果是,那么直接退出,会报错,否则继续执行。

2024-07-28 19:06:17 1068

原创 Redis是多线程还是单线程?

我们的应用程序也好,还是内核空间也好,都是没有办法直接去物理内存的,而是通过分配一些虚拟内存映射到物理内存中,我们的内核和应用程序去访问虚拟内存的时候,就需要一个虚拟地址,这个地址是一个无符号的整数,比如一个32位的操作系统,他的带宽就是32,他的虚拟地址就是2的32次方,也就是说他寻址的范围就是0~2^32, 这片寻址空间对应的就是2^32个字节,就是4GB,这个4GB,会有3个GB分给用户空间,会有1GB给内核系统。因此,对于Redis的核心网络模型,在Redis 6.0之前确实都是单线程。

2024-07-28 19:02:45 1208

原创 Redis底层数据结构的实现

1、因为现在字符串长度小于等于44字节,所以。

2024-07-26 22:12:13 887

原创 Spring事件机制

自定义一个事件类,继承ApplicationEvent。该事件可以被ApplicationContext通过publishEvent方法进行发送return msg;@Subscribe@Override/*** 注解@AllowConcurrentEvents是用来标识当前订阅者是线程安全的。

2024-07-25 21:56:24 2297 3

原创 图论---最短路问题

单源最短路 n: 点的数量 m: 边的数量所有边权都是正数(1)朴素Dijkstra算法 O(n^2)(2)堆优化版的Dijkstra算法 O(mlogn)存在负权边(1)Bellmax-Fold O(nm) (让选择不超过k条边的时候使用)(2)SPFA 一般O(m),最坏O(nm)多源汇最短路 Floyd算法 O(n^3)

2023-05-21 17:55:13 1077

原创 组合数学总结

组合数学

2022-11-21 22:46:17 1915 2

原创 高性能计算实验——基于OpenMP的矩阵乘法

OpenMP实现矩阵乘法

2022-10-30 20:53:48 1139

原创 无约束最优化方法

无约束最优化方法

2022-10-30 16:09:20 2337

原创 工程优化---一维搜索方法

工程优化-一维搜索方法

2022-10-28 22:40:07 262

原创 Hesse矩阵极大极小值判断

Hesse矩阵正定、负定,极大值极小值判断

2022-10-16 21:03:39 6145

原创 逻辑推理

(6)A => (B -> C) 等价于A ∧ B => C, 即A,B => C。(5)(A -> B) ∧(B -> C) => A -> C 传递规则。

2022-10-10 21:39:37 446

原创 A算法与A*算法

对于A算法,他是使用了一个评价函数f(n)=g(n)+h(n),g(n)表示从起点到当前点的代价,h(n)表示预估代价,就是从当前点到终点的代价,每次选取当前f(n)最小的进行扩展。在平常的搜索算法中,BFS和DFS算是盲目搜索,BFS搜索从a到b的最短路径,会从自己各个方向依次扩展,效率低下,因此出现了启发式搜索,A算法和A*算法。(n),对h(n)进行了限制,是优化版的A算法。算法则是对A算法进行了优化,让h(n)≤h。

2022-09-19 20:50:19 10193

原创 机器学习数学基础

机器学习数学基础

2022-07-23 12:43:38 800

原创 Pandas常用API

文章目录pandas基础Seriespandas日期处理日期类型的SeriesDateTimeIndexDataFrame核心数据结构操作列访问列添加列删除*行访问行添加行删除修改DataFrame中的数据**DataFrame常用属性**复合索引**pandas核心**pandas描述性统计pandas排序按行/列标签排序按某列值排序pandas分组**将数据拆分成组**迭代遍历分组获得一个分组细节分组聚合pandas透视表与交叉表透视表交叉表pandas数据表关联操作**pandas可视化**条形图直方

2022-04-25 16:26:20 3444

原创 matplotlib常用绘图操作

文章目录matplotlib基本功能1.基本绘图2.图形对象matplotlib基本功能详解基本绘图绘制一条曲线绘制水平线与垂直线绘制正弦曲线线型、线宽和颜色设置坐标轴范围设置坐标刻度设置坐标轴图例特殊点备注图形对象(图形窗口)窗口测试子图刻度定位器刻度网格线半对数坐标散点图填充条形图(柱状图)饼图等高线图热成像图3D图像绘制极坐标系简单动画加载文件k线图​matplotlib基本功能1.基本绘图(在二维平面坐标系中绘制连续的线)设置线型、线宽和颜色设置坐标轴范围设置坐标刻度

2022-04-24 16:30:12 1658

原创 Numpy常用API

文章目录一、numpy介绍1.ndarray介绍2.python列表和Numpy数组的区别二、NumPy 基础1.ndarry数组2.内存中的ndarry对象3.ndarry数组对象的创建4.ndarry对象属性的基本操作5.ndarray对象属性操作详解6.类型字符码三、 ndarray维度操作1.视图变维2.复制变维3.就地变维4.ndarry数组切片操作5. ndarray的掩码操作6.长度不等的数组组合7.ndarray 类的其他属性8.多维数组的组合与拆分一、numpy介绍1.ndarray介

2022-04-24 16:02:38 1830

原创 python结构体排序

文章目录一个参数比较多个参数比较在c/c++中,遇到结构体排序类似的问题时可以直接用struct定义一个结构体,然后重写cmp函数实现结构体排序,而在python中,没有结构体,那么如何实现结构体排序?在python中,列表有两种排序方式,分别是sort和sorted。sort是列表的内置方法,可以直接调用,会修改原列表并排好序默认升序,可以通过reverse=True实现降序。cmp函数是比较方法,在python3中已经被废除,key可以指定比较的参数,一维列表一般不需要写key。list

2022-01-25 20:08:18 4261 1

原创 Filter过滤器

文章目录什么是filter过滤器Filter 的初体验Filter 的生命周期FilterConfig 类FilterChain 过滤器链Filter 的拦截路径什么是filter过滤器Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器Filter 过滤器它是 JavaEE 的规范。也就是接口Filter 过滤器它的作用是:拦截请求,过滤响应。拦截请求常见的应用场景有:1、权限检查2、日

2021-12-19 16:01:21 292

原创 Session技术

文章目录什么是 Session 会话?如何创建 Session 和获取(id 号,是否为新)Session 域数据的存取Session 生命周期控制浏览器和 Session 之间关联的技术内幕什么是 Session 会话?Session 就一个接口(HttpSession)。Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。每个客户端都有自己的一个 Session 会话。Session 会话中,我们经常用来保存用户登录之后的信息。(保存在服务器端)

2021-12-15 20:23:47 271

原创 Cookie技术

什么是 Cookie?1、Cookie 翻译过来是饼干的意思。2、Cookie 是服务器通知客户端保存键值对的一种技术。3、客户端有了 Cookie 后,每次请求都发送给服务器。4、每个 Cookie 的大小不能超过 4kb5、cookie是保存在客户端(浏览器)的# 如何创建Cookie?servlet中的代码:protected void createCookie(HttpServletRequest req, HttpServletResponse resp) throws

2021-12-15 20:03:49 3526

原创 jsp介绍

文章目录什么是 jsp,它有什么用?1、如何创建 jsp 的页面?2、jsp 如何访问:jsp就是一个Servlet程序jsp的三种语法jsp头部的page指令jsp中的常用脚本i. 声明脚本(极少使用)ii.表达式脚本(常用)iii.代码脚本jsp中的三种注释1. html注释ii. java注释**iii. jsp** **注释**jsp九大内置对象jsp 四大域对象jsp中的out 输出和response.getWriter输出的区别7.jsp的常用标签jsp静态包含jsp动态包含jsp标签-转发什么

2021-12-09 20:09:58 662

原创 Servlet简单介绍

文章目录Servlet技术a.什么是Servletb.手动实现Servlet程序url 地址到 Servlet 程序的访问Servlet生命周期get和post请求的分发处理Servlet类的继承体系ServletConfig类ServletConfig类的三大作用:ServletContext类什么是ServletContext?ServletContext类的四个作用?http协议http协议请求的http协议格式1.get请求2.post请求响应的http协议格式常见的响应码说明Servlet技术

2021-12-08 19:47:36 981

原创 Tomcat简单介绍

Tomcat目录介绍bin:专门用来存放tomcat服务器的可执行程序conf:专门用来存放tomcat服务器的配置文件lib:专门用来存放tomcat服务器jar包logs:专门用来存放tomcat服务器运行时输出的日志信息temp:专门用来存放tomcat服务器运行时产生的临时数据webapps:专门用来存放部署的web工程works:是tomcat工作时的目录,用来存放tomcat运行时jsp翻译为Servlet的源码,和Session钝化的目录如何启动tomcat服务器找到tom

2021-12-08 19:12:58 690

原创 机器学习入门-----knn算法简单理解

机器学习首先介绍一下什么是机器学习,机器学习就是⽤⼤量数据进⾏训练,获取到⼀个数据模型,预测就是应⽤训练的模型,来解决⼀个未知的 问题。就像我们人学习一样,⽤⼤量模拟题作为数据进⾏训练,获得的模型就是解题的⽅法。⾼考就是应⽤你训练获取的模 型,检测你的模型是不是可以解决未知的问题机器学习的步骤确定与问题相关的数据(明确输⼊)收集与问题相关的数据 (数据准备,学)分析预测结果的类型 (分类,回归,是判断题还是应⽤题)根据预测结果的类型,选择⼀个合适的算法,找到输⼊和输出之间的关系⽤这个算法(套

2021-11-28 16:59:36 861 1

原创 如何将自己的项目上传至github

第一次用往github上传项目,简单记录一下1.新建github仓库先去我的仓库,点击new新建一个仓库①是仓库名②是仓库描述③是仓库是公开还是私有的然后点击④创建仓库创建成功之后这里是你的仓库地址2.安装Git点击Git可以安装安装完git后,找到你的项目,右键Git Bash Here第一步:输入git init 命令,将这个项目变成git可管理的一个仓库,然后可以发现项目下多了一个.git文件第二步:输入git add .命令,把项目下的文件添加至仓库,输入

2021-11-08 22:52:23 514

原创 DC-2

1.arp-scan -l 扫描局域网所有设备查到DC-2的ip2.nmap端口扫描nmap[扫描类型][设置][设备地址]-命令: nmap -sV -p- 192.168.224.132-sV 系统版本检测-p 指定的端口3.修改host文件,dc-2C:\Windows\System32\drivers\etc在网络上访问网站,要首先通过DNS服务器把网络域名(www.XXXX.com)解析成XXX.XXX.XXX.XXX的IP地址后,我们的计算机才能访问。要是对于

2021-07-06 23:25:59 1686

原创 c++中cin缓冲区

输入过程:程序输入的时候都设有一个输入缓冲区,每次输入,当键盘输入结束时会将输入的数据存入输入缓冲区,而cin直接从输入缓冲区中取数据。正因为cin是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin会直接取得这些残留数据而不会请求键盘输入。一、cin#include <iostream>using namespace std;int main(){ string s; cout<<"cin test:"<<endl; cin&g

2021-04-16 00:43:17 2539

原创 HDU---1078---FatMouse and Cheese---记忆化DFS

题目描述:Fatmouse在一个城市储存了一些奶酪。该市可以被认为是尺寸N的方形网格:每个网格位置标记(p,q),其中0 <= p <n和0 <= q <n。在每个网格位置,Fatmouse在一个洞中有0到100块奶酪。现在他会享受他最喜欢的食物。Fatmouse始于站在位置(0,0)。他吃了他站立的奶酪,然后水平或垂直地运行到另一个位置。问题是,有一只名叫顶级杀手的超级猫坐在他的洞附近,所以每次他都可以在最多的k个位置跑到洞穴之前被顶级杀手抓住。更糟糕的是 , 在一个地点吃奶

2021-03-27 14:36:05 461

原创 DES加密算法

文章目录一、加密流程二、密钥扩展方案三、解密流程一、加密流程DES加密流程:输入64位的明文和64位的密钥初始置换IP迭代16轮初始逆变换IP^-1初始置换IP:通过一个初始IP置换表,得到64bit明文分组的置换,作用就是得到一个乱序的64bit明文分组初始逆变换:就是初始变换的逆对于初始变换和初始逆变换对于加密的安全性并无帮助。16轮迭代:经过初始置换后,将64位明文分为左右两组,各32位,然后进行16轮的迭代对于每轮迭代**Li=Ri-1Ri=Li-1(xor

2021-03-21 17:18:21 4508

原创 POJ---1325---Machine Schedule---二分匹配算法

什么是二分图?如果一个图的顶点可以分为两个集合X和Y,图的所有边一定是有一个顶点属于集合X,另一个顶点属于集合Y,则称该图为“二分图”或“二部图”二分图的应用中,最常见的就是求—最大匹配,很多其他的问题都可以转化为匹配问题来解决比如男女搭配问题,上边的顶点是男生,下边的顶点是女生,有连线的两个点是可以配对的,现在要求的是最大配对数怎么求二分图的最大匹配?----匈牙利算法首先把男生放在左边,从男生第一个开始寻找可以匹配的女生,这里就是男1->女1,然后再找第二个男生,发现第二个男生也是和第

2021-03-18 22:30:38 504

原创 滑动窗口问题---双指针解法

滑动窗口问题:滑动窗口这类问题一般需要用到双指针来进行求解,一般都是基于字符串和数组的。给两个字符串,一长一短,问其中短的是否在长的中满足一 定的条件存在,例如:求短的字符串在长的字符串中出现的所有位置给一个字符串或者数组,问这个字符串的子串或者子数组是否满足一 定的条件。例如:含有少于k个不同字符的最长子串所有字符都只出现一次的最长子串除此之外。还有一些其他的问法。但是不变的是。这类题目脱离不开主串(主数组)和子串(子数组)的关系,要求的时间复杂度往往是0(n),空间复

2021-03-17 22:31:37 220

原创 [蓝桥杯][2019年第十届真题]---修改数组---并查集

题目描述:给定一个长度为 N 的数组 A = [A1, A2, · · · AN ],数组中有可能有重复出现 的整数。现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改 A2,A3,··· ,AN。当修改 Ai 时,小明会检查 Ai 是否在 A1 ∼ Ai−1 中出现过。如果出现过,则 小明会给 Ai 加上 1 ;如果新的 Ai 仍在之前出现过,小明会持续给 Ai 加 1 ,直 到 Ai 没有在 A1 ∼ Ai−1 中出现过。当 AN 也经过上述修改之后,显然 A 数组中就没有重复的

2021-03-10 23:19:19 249

原创 洛谷--P1842--进击的奶牛--二分法

题目描述:Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,…,xN (0<=xi<=1,000,000,000)。他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防止牛之间的互相打斗,Farmer John想把这些牛安置在指定的隔间,所有牛中相邻两头的最近距离越大越好。那么,这个最大的最近距离是多少呢?输入:第1行:两个用空格隔开的数字N和C。第2

2021-03-07 21:02:14 752 2

原创 洛谷--P2678--跳石头--二分法

题目描述:这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 M 块岩石(不能移走起点和终点的岩石)。输入:第一行包含三个整数 L,N,M,分别表示起点到终点的距离,起点和终点之间的

2021-03-07 20:06:07 1488

原创 HDU--1495--非常可乐--BFS

题目描述:大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的ACMER你们说他们能平分吗?如果能请输出倒可乐的最少的次数,如果不

2021-03-07 15:50:01 224

原创 HDU--1874--畅通工程续--Dijkstra最短路径

题目描述:某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。输入:本题目包含多组数据,请处理到文件结束。每组数据第一行包含两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目和已修建的道路的数目。城镇分别以0~N-1编号。接下来是M

2021-03-04 23:10:02 187 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除