自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 elasticsearch 索引的监控

*

2024-02-12 15:27:13 1010 2

原创 elasticsearch 索引模版

elasticsearch 索引模版和组件模版

2024-02-03 23:59:42 834

原创 基于java的 aws s3文件上传

接下来,需要在Java项目中添加AWS SDK的依赖。可以使用Maven或Gradle进行依赖管理。代码示例中还包括了设置文件元数据、设置文件访问权限以及获取文件URL的步骤。这些步骤可以帮助您更好地控制上传文件的属性和访问权限。首先,确保您已经在AWS上创建了一个S3存储桶,并拥有相应的访问密钥和密钥ID。这些凭据将用于在Java代码中进行身份验证。替换为想要为上传文件指定的对象键,替换为自己的S3存储桶名称,替换为要上传的文件的路径。aws s3 文件上传代码。在上述代码中,需要将。

2024-01-13 22:05:06 910

原创 Solving distributed transaction management problems in microservices architecture using Saga

Distributed transaction management Sega .

2023-09-25 23:22:02 166

原创 指令流水线

总之,计算机指令流水线是一种强大的硬件技术,它可以显著提高处理器的性能和吞吐量。当一条指令进入流水线时,它会从流水线的一端进入,然后依次通过每个阶段的处理。在每个阶段,指令可能会被中断并返回到流水线的开始,以便其他指令得以继续处理。通过并行处理大量的数据和计算,计算机指令流水线可以帮助实现高效的模型训练和实时推理。通过将多个图像和纹理的处理分配给不同的流水线阶段,图形处理器可以实现高效的渲染和显示性能。提高性能:通过将指令处理过程分解为多个阶段,计算机指令流水线可以实现多个指令在同一时间进行处理。

2023-09-12 16:00:53 747

原创 Spring 三级缓存的原理

如果需要获取该单例对象实例,会首先从该缓存中查找。当完成单例对象实例的扫描后,Spring会将所有扫描到的单例对象实例放入singletonFactories缓存中。总之,Spring框架的三级缓存通过将单例对象实例和工厂类实例分别存放在不同的缓存中,实现了对单例对象的高效管理。同时,通过使用三级缓存,可以避免重复创建单例对象实例和工厂类实例,提高了应用程序的性能和效率。当需要获取单例对象实例并且在第二级缓存中没有找到时,Spring会继续查找,直到找到或者遍历完所有的单例对象实例为止。

2023-05-14 16:38:05 1477 1

原创 spring security(一):springsecurity 功能

Spring Security 是一个非常流行和强大的框架,它提供了许多内置的安全功能,例如认证、授权、密码管理和会话。

2023-05-14 16:37:15 718

原创 算法专题:使用双指针解决问题:给定一个长度为 n(1≤n≤10 7 ) 的字符串 s,求一个最长的满足所有字符不重复的子串。

解决思路: 维护两个指针 i和j,区间[i,j] 储存合乎条件的字符串,当寻找到重复字符串的时候执行 i=i+1,否则执行j=j+1直到找到下一个重复的字符串或者是字符遍历完成,期间不断的维护 最长不重复字符串的长度,j-i+1的最大值。

2023-05-07 22:50:08 112

原创 restore deleted file on linuxos

【代码】restore deleted file on linuxos。

2023-05-07 22:37:27 461

原创 build one simple redis-cluster with local machine

【代码】build one simple redis-cluster with local machine。

2023-04-17 22:17:05 301

原创 Redisson 看门狗机制

总之,Redisson Watch Dog机制是一个非常有用的工具,可以帮助开发人员轻松地监视Redis中的键并在其发生变化时进行相应的操作。通过使用Redisson库中提供的watch方法和addListener方法,我们可以轻松地实现Watch Dog机制,并在我们的应用程序中处理Redis数据的变化。总之,Redisson Watch Dog机制是一种强大的功能,可以帮助开发人员实时地监视Redis中的键,并在键发生变化时进行相应的操作。例如,应用程序可以重新读取被修改的键并更新自己的数据。

2023-04-16 18:18:47 3218

原创 Redisson 创建分布式锁

redisson distributed lock

2023-04-16 18:07:28 164

原创 AQS工作原理

acquire(int args) 方法的作用是独占式的获取同步状态, 该方法对中断不敏感,也就是说当线程获取同步状态失败后进入到CHL中,后续对线程进行中断时,线程不会从CHL中移除。调用同步器的acquire(int arg)方法可以获取同步状态,该方法对中断不敏感,即线程获取同步状态失败后进入同步队列,后续对线程进行中断操作时,线程不会从同步队列中移除。根据锁的获取机制,又分为公平锁和非公平锁等待队列中按照FIFO的原则获取锁,等待时间越长的线程越先获取到锁,这就是公平的获取锁,即公平锁。

2023-04-16 18:00:58 135

原创 vscode 对 typescript debug

还需要注意的是,由于 TypeScript 代码和 JavaScript 代码之间的映射关系,断点位置可能会有所偏移,此时可以使用 Source Map 功能来解决这个问题。在 Debug 模式下,打开 Debug 控制台,选择 Sources 选项卡,可以看到 TypeScript 和 JavaScript 代码之间的映射关系。4.在 VS Code 中打开编译后的 JavaScript 代码文件,设置断点,按 F5 或点击 Debug 按钮进入 Debug 模式,最后运行程序即可开始调试。

2023-03-28 13:38:59 640

原创 算法专题: 找出数字连续的最长序列(不要求序列元素在原数组中连续)

遍历数组中的每个数 x,如果 x-1 不在哈希表中,说明 x 是一个连续序列的开头,我们可以从 x 开始不断向后找 x+1,直到找不到为止,此时记录连续序列的长度,并更新哈希表中左右两端数的长度。首先,对于一个数 x,如果存在 x-1,那么说明 x 不可能是连续序列的开头,因为在这种情况下会选择 x-1 作为开头。解释: 最长数字连续序列是 [1, 2, 3, 4]。输入: nums = [0,3,7,2,5,8,4,6,0,1]输入: nums = [100,4,200,1,3,2]

2023-03-11 18:08:33 673

原创 SpringBeanJobFactory 的作用

ChatGPT SpringBeanJobFactory

2023-03-09 15:59:33 232

原创 杰出诗人:chatGPT

【代码】杰出诗人:chantGPT。

2023-03-08 10:29:27 217

原创 windows底下 docker挂载目录

docker 在windows底下进行镜像与本地目录的挂载

2023-03-06 14:59:16 768

原创 Linux commands: du and the options you should be using

总结: du是用来查看文件内存使用的命令, -s 表示汇总总共使用了多少内存,与 -c类似区别是-c多了一个total汇总选项,这一个命令其实更像一张空头支票,实用性不大。

2022-11-14 10:57:39 444

原创 deepin系统无法定位软件包问题

这种问题一般是镜像源中不包含此软件包,一种可行的办法就是配置一个新的镜像源。更新之后即可安装之前未可安装的软件包。途中示例添加的是清华的镜像源。

2022-10-29 22:47:10 2746

原创 linux RAID管理与恢复误删除文件

RAID 1在这里就是一个冗余的备份阵列,而RAID 0则负责数据的读写阵列。RAID1(镜像):把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,具有很高的数据冗余能力,但磁盘利用率为50%,故成本最高,多用在保存关键性的重要数据的场合。RAID可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。一、RAID磁盘阵列概述;

2022-10-11 22:28:59 269

原创 基于递归求解全排列组合

【代码】基于递归求解全排列组合。

2022-10-06 18:12:59 90

原创 docker通过 systemd 配置访问远程服务

docker通过systemd配置访问远程服务

2022-08-26 00:15:40 453

原创 linux命令大全:ftp命令

结尾关键字END或STOP必须是行中唯一的单词,并且必须位于行的开头。一、ftp输入重定向。

2022-07-23 14:52:57 831

原创 线程池执行原理(执行流程)

面试的时候没答对,仔细复盘了一下源码,记录一下线程池执行的流程如下:1、当一个任务到来的时候会判断核心线程数是否已经满了,(注意核心线程数是否会被回收是根据 参数 allowCoreThreadTimeout()来确定,默认为false,即核心线程数并不会被回收,设置为true时则会与常规线程一样当keepalive time到达的时候会被回收)未满则分配一个核心线程,满了则放置到等待队列中去2、当队列未满则会将任务添加到队列当中去,满了则会判断是否达到最大线程数3、达到了最大线程数的数量就会出发rej

2022-06-07 17:39:05 502

原创 异步编程:java nio 之 buffer原理与intBuffer示例demo

java nio , 缓存切片

2022-06-05 18:56:52 180

原创 每日一算:java基于动态规划求解最长回文子串详解

动态规划、回文子串

2022-06-05 17:47:45 293

原创 redis事件机制

redis是一个基于事件驱动的程序一、文件事件服务器通过套接字与客户端或者其它服务器进行通信,文件事件就是对套接字操作的抽象。Redis 基于 Reactor 模式开发了自己的网络事件处理器,使用 I/O 多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分派器,分派器会根据套接字产生的事件类型调用相应的事件处理器。如下图所示:二、时间事件服务器有一些操作需要在给定的时间点执行,时间事件是对这类定时操作的抽象。时间事件又分为:1.定时事件:是让一段程序在指定的时间之内执行一次;

2022-05-30 14:13:12 198

原创 关系型数据库事务控制的三级封锁协议

1、一级封锁协议事务 T 要修改数据 A 时必须加 X 锁,直到 T 结束才释放锁。可以解决丢失修改问题,因为不能同时有两个事务对同一个数据进行修改,那么事务的修改就不会被覆盖。2、二级封锁协议在一级的基础上,要求读取数据 A 时必须加 S 锁,读取完马上释放 S 锁。可以解决读脏数据问题,因为如果一个事务在对数据 A 进行修改,根据 1 级封锁协议,会加 X 锁,那么就不能再加 S 锁了,也就是不会读入数据。3、三级封锁协议在二级封锁协议的基础上添加约束 直到事务结束之后才能释放S锁,因

2022-05-29 09:40:25 359

原创 浅谈关系型数据库并发一致性问题

在并发环境下事务的一致性很难保证,因此会出现很多的并发一致性问题。具体的如下所示:一、丢失修改问题丢失修改指一个事务的更新操作被另外一个事务的更新操作替换。一般在现实生活中常会遇到,例如:T1 和 T2 两个事务都对一个数据进行修改,T1 先修改并提交生效,T2 随后修改,T2 的修改覆盖了 T1 的修改。二、读脏数据读脏数据指在不同的事务下,当前事务可以读到另外事务未提交的数据。例如:T1 修改一个数据但未提交,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。

2022-05-29 09:33:53 139

原创 对称加密和非对称的区别,非对称加密有哪些

1.加密和解密的过程不同:对称加密和解密过程使用同一个密钥;非对称加密中加密和解密采用公钥和私钥两个密钥,一般使用公钥进行加密,使用私钥进行解密。2.加密和解密的速度不同:对称加密和解密速度较快,当数据量比较大时适合使用;非对称加密和解密时间较长,速度相对较慢,适合少量数据传输的场景。3.传输的安全性不同:采用对称加密方式进行通信时,收发双方在数据传送前需要协定好密钥,而这个密钥还有可能被第三方窃听到的,一旦密钥泄漏,之后的通信就完全暴漏给攻击者了;非对称加密采用公钥加密和私钥解密的方式,其中私钥是基于

2022-05-28 14:59:39 1364

原创 浅析java Syncronized关键字底层的实现原理

syncronized关键字底层实现原理:Java 对象底层都关联一个的 monitor,使用 synchronized 时 JVM 会根据使用环境找到对象的 monitor,根据 monitor 的状态进行加解锁的判断。如果成功加锁就成为该 monitor 的唯一持有者,monitor 在被释放前不能再被其他线程获取。synchronized在JVM编译后会产生monitorenter 和 monitorexit 这两个字节码指令,获取和释放 monitor。这两个字节码指令都需要一个引用类型的参数指

2022-05-25 20:19:16 123

原创 java 二分法查找二维数组最右区间

question: 给你一个区间数组 intervals ,其中 intervals[i] = [starti, endi] ,且每个 starti 都 不同 。区间 i 的 右侧区间 可以记作区间 j ,并满足 startj >= endi ,且 startj 最小化 。返回一个由每个区间 i 的 右侧区间 在 intervals 中对应下标组成的数组。如果某个区间 i 不存在对应的 右侧区间 ,则下标 i 处的值设为 -1 。code:public class FindRightInter

2022-05-25 20:05:30 72

原创 IPV4 地址不够如何解决

有以下几种解决方式:1、DHCP:动态主机配置协议。动态分配 IP 地址,只给接入网络的设备分配IP地址,因此同一个 MAC 地址的设备,每次接入互联网时,得到的IP地址不一定是相同的,该协议使得空闲的 IP 地址可以得到充分利用。2、CIDR:无类别域间路由。CIDR 消除了传统的 A 类、B 类、C 类地址以及划分子网的概念,因而更加有效的分配 IPv4 的地址空间,但无法从根本上解决地址耗尽问题。3、NAT:网络地址转换协议。我们知道属于不同局域网的主机可以使用相同的 IP 地址,从而一定程度上

2022-05-18 12:09:21 6523

原创 springcloud实现优雅下线

在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如kill PID和kill -9 PID都是暴力杀死服务,相对于kill -9 PID来说,kill PID就是优雅的。但如果单独拿kill PID出来说,我们能说它是优雅的下线

2022-05-12 09:35:56 1280

原创 算法:基于java实现一个能够返回随机数索引的小程序

功能描述:给你一个可能含有 重复元素 的整数数组 nums ,请你随机输出给定的目标数字 target 的索引。你可以假设给定的数字一定存在于数组中。具体的代码实现:class Solution { Map<Integer,List<Integer>> map ; Random random ; public Solution(int[] nums) { map = new HashMap<>() ; ra

2022-04-25 23:29:36 374

原创 基于netty实现一个具备超时机制和心跳功能的程序

一、Netty超时机制的简单介绍:Netty 的超时类型 IdleState 主要分为:ALL_IDLE : 一段时间内没有数据接收或者发送READER_IDLE : 一段时间内没有数据接收WRITER_IDLE : 一段时间内没有数据发送在 Netty 的 timeout 包下,主要类有:IdleStateEvent : 超时的事件IdleStateHandler : 超时状态处理ReadTimeoutHandler : 读超时状态处理WriteTimeoutHandler : 写超时状

2022-04-16 17:42:11 952

原创 一道美团算法题,据说Don Knuth花了24小时才解答出来

给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有一个重复的整数,这个数可能出现两次或者多次,返回这个重复的数。题目要求我们必须不修改数组 nums ,并且只用常量级 O(1) 的额外空间。一眼扫过去,题目很好理解,思路也很容易理清,最直观的想法就是使用哈希表不就能马上查找出重复的整数么?但再看一眼条件,只能用常量级 O(1) 的额外空间,于是哈希表的思路走不通。一般的解法是采取二分查找的思路来

2022-04-10 23:39:26 388

原创 为什么数组的下标是从0开始而不是从1开始?

一、数组下标从0开始的原因在回答这个问题之前我们首先要明确一点那就是对于数组元素的访问在操作系统层其实就是对特定内存偏移量的数据的访问,换而言之即如果想要访问一个数组的某一个元素的值那么首先就要计算它的地址偏移量 ,其大概的公式为:a[k]_adress = base_address + k*type_size ;,倘若数组下标是从1开始那么地址计算公式即会转变为:a[k]_adress = base_address + (k-1)*type_size ;这对于CPU来说多了一次减法操作,对于

2022-04-05 23:05:11 7399

原创 数据结构如何速成

1、数组2、栈3、队列4、链表5、树6、散列表7、堆8、图数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这段代码就是将数组的第一个元素赋值为 1。int[] data = new int[100];data[0] = 1;COPY优点:1、按照索引查询元素速度快2、按照索引遍历数组方便缺点:1、数组的大小

2022-03-27 22:45:03 721

空空如也

空空如也

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

TA关注的人

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