- 博客(218)
- 资源 (11)
- 收藏
- 关注
原创 高效地传递事件——Disruptor——简单使用
disruptor.getRingBuffer() 方法通常是在你已经配置并创建了一个 Disruptor 实例后调用的,用于获取与该 Disruptor 实例关联的 RingBuffer。Disruptor 是一个高性能的环形缓冲区(Ring Buffer)库,它用于在多个生产者(Producers)和消费者(Consumers)之间高效地传递事件(Events)。RingBuffer 的大小是固定的,当达到缓冲区的末尾时,写入操作会回绕到缓冲区的开始位置。以上是文心一言生成的,自己写个小demo。
2024-10-25 16:17:07
501
原创 Java读取损坏的xls表格
方案二进一步解读:三步骤看似简单想通过简单的命令实现并不简单,Java中提供了Runtime.getRuntime().exec(“命令”),执行外部命令或程序,打开,保存,关闭,3个命令放在一起执行没有达到想要的结果,分开三次执行exec命令也没达到效果。Java 代码无论是使用EasyExcel,还是POI底层原理都是先把文件转为流。一些看似不太聪明的方案成功解决了问题!
2024-09-16 23:53:06
464
原创 Spring为什么要用三级缓存解决循环依赖?
在Java Spring的厨房里,循环依赖这道菜可是让不少程序员大厨头疼的“黑暗料理”。但Spring大厨微微一笑,不慌不忙地亮出了他的秘密武器——三级缓存“时光机”!一级缓存,那是“秒出”区,新鲜出炉的Bean直接上桌,快得就像外卖小哥的闪电送。二级缓存,咱们叫它“半成品天堂”,Bean们在这里稍作休息,等待最后的调味。但别急,好戏还在后头!重头戏来了,三级缓存——“未来豆预测局”!
2024-09-16 23:47:22
1220
原创 RPC框架之OpenFeign快速上手
写个小demo练练手,这里只是用到rpc简单的调用,服务注册都没用,直接就是消费者通过url调用服务生产者。
2023-10-15 16:33:10
491
原创 日志框架——Log4j2
Apache Log4j2是一个开源的日志记录组件,使用非常的广泛。在工程中以易用方便代替了System.out 等打印语句,它是JAVA下最流行的日志输入工具。
2023-06-04 19:09:41
1197
原创 MySQL主从数据库(主读从写)
Component @Primary //将该Bean设置为主要注入Bean implements DataSource, InitializingBean public class DynamicDataSource extends AbstractRoutingDataSource {//当前使用的数据源标识 public static ThreadLocal < String > name = new ThreadLocal < >();
2022-11-20 12:50:41
1853
1
原创 MySQL数据库5.7字符集的设置——MySQL8.0加密问题解决
这个乱码只有安装数据库是5.7的才会有这种情况,数据库是8.0的默认都是utf-8的,不需要修改就可以直接使用的。在创建表或者创建库的时候,如果没有指定编码,默认是。(CHARSET=latin1)的。
2022-10-26 17:36:16
3214
1
原创 Linux实操指令
: 表示文件d: 目 录c: 字符设备文件,一次传输一个字节的设备被称为字符设备。例如键盘,鼠标linux 权限机制采用 UGO 模式。其中u(user)表示所属用户、g(group)表示所属组、o(other)r–read 读权限w–write 写权限x–execute 执行权限。
2022-10-23 22:52:34
2680
原创 Docker上下载安装Nginx——解决多端口访问问题
是将宿主机/root/project与容器/var/www/html关联,以后所有的项目都建立在/root/project下,因为关联在/var/www/html,所以容器可以访问到外部的项目,方便在nginx.conf反向代理到项目(一般如果是前端项目就可代理到:/var/www/html/项目名/index.html)是/root/nginx_conf 放置所有的配置文件,可以在nginx容器根目录下的/etc/nginx共享(容器的配置文件就在/etc/nginx目录下边)在宿主机上修改配置文件。
2022-10-22 18:24:53
6235
1
原创 Docker部署SpringBoot项目——创建镜像——创建容器并启动——查看容器日志——删除容器日志
查看日志的时候会打印出所有的日志,我们不想查看之前的日志,这里提供删除所有日志的命令,就是把本地日志文件给删除。docker run -id -p 主机端口号:容器端口号 --name=容器名字 镜像(app)软件直接拉进去,就可以完成Windows上的文件上传到远程服务器上。可以实时观看容器的日志,不加的查看的是历史记录一下子输出到控制台。最简的方法就是去掉所有注释,亲测有效,可以用下边的配置。后边可能还会用到关闭容器,启动容器,这里提供一下命令。通过命令查看,已经上传成功了。
2022-10-15 23:35:15
3335
2
原创 SpringBoot集成mongodb——MongoTemplate 与 MongoRepository 两种方式CRUD
spring-data-mongodb,提供了MongoTemplate 与 MongoRepository 两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb ,MongoRepository的缺点是不够灵活,MongoTemplate,正好可以弥补不足。模糊查询这里需要注意,如果实体中包含多个实体,那么我们在对某个字段做模糊查询的时候,要设置其他字段。创建一个接口继承另一个接口。
2022-10-07 21:29:32
2502
原创 MongoDB 增删改查命令
在MongoDB中使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,而-1是用于降序排列。在MongoD中使用limit()方法来读取指定数量的数据,skip()方法来跳过指定数量的数据。可直接用类似T-SQL条件表达式更新,或用Save()更新从数据库返回到文档对象。修改数据库中姓名为zhangsan的age和sex字段的值。向集合Collection中添加数据User属性。条件查询:查询年龄等于19岁,显示姓名和年龄。
2022-10-07 10:03:19
2168
原创 MongoDB——概念解析——Docker上下载安装——mongoDB基本命令
MongoDB官方文档NoSQL(NoSQL= Not Only sQL),意即反SQL运动,指的是非关系型的数据库,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。
2022-10-06 19:10:30
2296
原创 SpringCache+Redis缓存数据——相关依赖,配置类,核心配置,注解
自Spring 3.1起,提供了类似于@Transactional注解事务的注解Cache支持,且提供了Cache抽象,方便切换各种底层Cache (如: redis )根据方法对其返回结果进行缓存,下次请求时,如果缓存存在,则直接读取缓存数据返回;如果缓存不存在,则执行方法,并把返回的结果存入缓存中。使用该注解标志的方法,每次都会执行,并将结果存入指定的缓存中。2,通过注解Cache 可以实现类似于事务一样,缓存逻辑透明的应用到我们的业务代码上,且只需要更少的代码就可以完成;4,支持比较复杂的缓存逻辑;
2022-10-05 22:13:45
2541
原创 logback日志输出优化
Logback和log4非常相似,如果你对 @log4很熟悉,那对 logback很快就会得心应手。spring boot内部使用Logback 作为日志实现的框架。日志输出文件的地址修改。
2022-10-02 10:47:04
2531
原创 leetcode——字符串转换整数 (atoi)——百日算法成就第8天8%
具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1。将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。第 2 步:“4193 with words”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)字符串的其余部分将被忽略。由于 “-42” 在范围 [-231, 231 - 1] 内,最终结果为 -42。第 2 步:“42”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
2022-09-30 15:41:07
1851
原创 leetcode——整数反转——百日算法成就第7天7%
这个题目的易踩坑的地方可能就是int整形越界问题,如何判断整形越界呢,方法一:可以用整形的边界值来判断;方法二:解决代表着损失精度,要想越界那么这个整数的长度最少也要10位,那就判断乘以10后的结果再除以10与原来的数大小是否相同就可以了,如果不越界必定相同。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。输入:x = -123。输入:x = 123。输入:x = 120。
2022-09-29 23:45:44
2104
原创 Docker安装Redis——下载Redis镜像——创建配置文件——创建容器实例并启动——创建并启动MySQL数据库——修改时区
当服务器和容器都不存在 redis.conf 文件时, 执行启动命令的时候 docker 会将 redis.conf 作为。可以去官方下载配置文件,但是好像没有必要,因为我已经下载过了,可以直接去下边CV。redis的data文件位置 : /home/redis/data。4.将下边内容放进配置文件redis.conf中。1.创建配置文件的目录(-p创建多级目录)下载后解压拿到配置文件redis.conf。2.创建配置文件redis.conf。创建,而我们需要的是一个。退出redis客户端。
2022-09-29 21:26:42
4648
6
原创 Docker常用命令_帮助启动类命令_镜像命令_容器命令
这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程容器运行的命令,如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断,o(n_n)O哈哈~是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。
2022-09-27 21:04:49
2603
原创 leetcode——Z 字形变换——百日算法成就第六天6%
从上到下一行放一个,到最后一行然后再从下往上一行放一个,到第一行后再从上到下一行放一个…这里我们需要创建一个数组或者集合来存储每一行的元素,那我们咱们确定一个元素该放在 第几行呢,这里直接按个放就行了,只需要控制一个方向,在碰到上边界的时候让他往下走,碰到下边界的时候让他往上走,OK,让我们一起打羽毛球吧,嘿嘿,需要一个东西来控制羽毛球的路线,那就到我这边我用球拍给他来一下,到你那边你再用球拍来一下。之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。
2022-09-26 22:32:01
2020
原创 Docker——阿里云镜像加速
镜像加速器,简而言之就是本地没有某个镜像的时候,需要去远程仓库下载,下载速度可能很慢造成超时,这里通过配置提升下载的速度。上篇笔记记录了CentOS7 上 Docker的下载、安装、启动、关闭、卸载;登录阿里云开发平台,点击【控制台】,选择【容器镜像服务】,获取【加速器地址】下边是一次创建多级目录,因为目录/etc/docker已经存在了,可以不执行。在/etc/docker目录下的daemon.json 中添加内容。:使用加速器可以提升获取Docker官方镜像的速度。重启docker服务。
2022-09-26 21:24:59
5878
原创 leetcode——最长回文子串——百日算法成就第五天5%
给出一个字符串,我们可以把他转为字符数组,用双重循坏外层表示回文子串的起始下标,内层循环表示回文子串的终止下标,进行判断该区间内的子串是否是回文子串。这种方法提交在LeetCode上会提示。链接:https://leetcode.cn/problems/longest-palindromic-substring。给你一个字符串 s,找到 s 中最长的回文子串。解释:“aba” 同样是符合题意的答案。来源:力扣(LeetCode)输入:s = “babad”输入:s = “cbbd”
2022-09-26 00:20:40
2119
原创 Docker简介——理念——虚拟机容器——Docker组成的三大要素——工作原理——运行流程
Docker是基于Go语言实现的云开源项目Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。Linux容器技术的出现就解决了这样一个问题,而Docker就是在它的基础上发展过来的。将应用打成镜像。
2022-09-25 14:12:44
2332
原创 CentOS7 下载安装卸载 Docker——Docker启动关闭
(CE):为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce提供了简单的安装和快速的安装,以便可以立即开始开发。docker-ce集成和优化,基础设施。uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。主机上的映像、容器、卷或自定义配置文件不会自动删除。需要总下载量:114 M,打开2分钟,中间输入2次y。安装软件包(提供实用程序)并设置存储库。查看安装docker的版本号。关闭docker服务。
2022-09-25 12:21:47
4275
原创 leetcode——寻找两个正序数组的中位数——百日算法成就第四天4%
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数。链接:https://leetcode.cn/problems/median-of-two-sorted-arrays。解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5。输入:nums1 = [1,2], nums2 = [3,4]输入:nums1 = [1,3], nums2 = [2]解释:合并数组 = [1,2,3] ,中位数 2。
2022-09-25 00:34:22
2178
原创 leetcode——无重复字符的最长子串——百日算法成就第三天3%
链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”输入: s = “pwwkew”
2022-09-23 21:47:17
2056
原创 插入排序原理(C语言)—— C语言求数组的长度——sizeof()
从下标为1的元素开始,取出下标为i元素放在temp,逐个与前面的元素比较,如果前边的元素比当前元素大,那么就把前边的元素覆盖后边的元素,直到前边的元素≤当前元素,就把temp放在当前位置。这种方法只能适用于静态赋值的数组(静态数组中长度等于真实的元素个数),其原理是计算数组声明的时候所占用的空间除以数组类型单个元素占用的空间。无论从数组中存放在几个元素,用上述方法求出的数组长度都是100;计算数组长度时必须在声明数组所在的方法内求,然后把长度当做参数传递给别的方法。操作数所占空间的字节数大小。
2022-09-23 18:33:40
2567
原创 leetcode——两数相加——百日算法成就第二天2%
这个题目有点像我们小学学习的加法运算,先算低位需要注意的是有的需要进位,为了加深对链表的认知,爱学习的我怎么会放弃键盘,敲!
2022-09-22 23:59:46
2165
1
原创 leetcode——两数之和——百日算法成就第一天1%
这个方法真好使,用空间换时间,这里数据比较少体现不出来时间的优势,后序真实的工作中有些需求是可以用到的,比如我们后序会学到缓存redis什么的,可以把访问频率比较高的存储在redis中,redis底层是存储在内存的,这样会减少对数据库的访问,减少IO的次数可以大大提高访问的速度,并且减少对数据库的访问压力。
2022-09-21 22:17:55
2878
1
原创 表单提交RESTful风格——GET,POST,DELETE,PUT 4种方式处理源码
RESTful手动关闭配置(默认就是关闭的,这里可以直接删除这条配置),这里的开启和关闭只会影响表单的提交DELETE和PUT请求,这两种请求是放在POST请求表单中的隐藏方法中,开启配置的时候请求拦截POST请求,读取隐藏的方法,把隐藏的方法替代POST请求,进而达到“偷梁换柱”的目的;开启配置后,表单提交POST中含隐藏方法的会被拦截,拦截后读取POST提交表单中隐藏方法_method的值,不开启配置会直接按照POST请求处理。首页:http://localhost:8080/
2022-09-19 16:45:44
4400
1
原创 MyBatis-Plus——条件构造器——QueryWrapper查询条件封装
例: orderBy(true, true, “id”, “name”)—>order by id ASC,name ASC。例: orderByDesc(“id”, “name”)—>order by id DESC,name DESC。例: orderByAsc(“id”, “name”)—>order by id ASC,name ASC。AbstractWrapper: 用于查询条件封装,生成sql的where条件。orderBydesc排序:ORDER BY 字段, …
2022-09-12 20:39:21
5613
3
原创 MyBatis-Plus——查询和删除(逻辑删除)
数据库表中添加了deleted字段,0表示未删除,1表示已删除;所以在我们操作查询操作的时候,只能查询到状态为0未删除的记录。MP默认配置是1表示已删除,0表示未删除;︰真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据;逻辑删除之后数据库表中的deleted字段的值就改为1已删除状态了。为"被删除状态”,之后在数据库中仍旧能看到此条数据记录。只有deleted字段的值为0的状态,才能执行删除语句。设置初始值(创建属性时设置初始值为0,0表示未删除)︰假删除,将对应数据中代表是否被删除字段。
2022-09-12 18:48:02
11305
3
原创 MyBatis-Plus——实现乐观锁
执行更新时,set version = newVexsion where version = oldVersion。乐观锁每次修改数据后的版本号都会被修改,利用这个原理模拟测试一下数据修改后的版本号是否变化。当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新·针对于某一问题的解决方案,多线程或并发操作中产生的一些问题——丢失更新。创建实体类的对象属性——版本号操作属性上添加注释@Version。2. 然后我们开始测试,先查询获取版本号然后做修改。取出记录时,获取当前。
2022-09-12 13:11:22
4464
4
原创 Nginx——下载,安装,启动,关闭,配置——负载均衡——静态代理——动静分离
Nginx (engine x)是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。Nginx是免费开源的,采用C语言开发编写的,同时 Nginx也有收费的商业版本,商业版本提供了性能优化﹑宕机等紧急问题处理等技术支持和服务。
2022-09-11 18:02:34
4131
原创 Vue组件化开发
NPM (Node Package Manager)是一个NodeJS包管理和分发工具。NPM以其优秀的依赖管理机制和庞大的用户群体,目前已经发展成为整个 JS领域的依赖管理工具NPM最常见的用法就是用于安装和更新依赖。要使用NPM,首先要安装Node工具。心Element是国内饿了么公司提供的一套开源前端框架,简洁优雅,提供了Vue、React、Angular等多个版本。
2022-09-10 12:28:05
2791
原创 CopyOnWriteArrayList的底层原理——ConcurrentHashMap的扩容机制——接口和抽象类的区别—JDK,JRE,JVM三者区别和联系—ThreadLocal的底层原理
当不同的类具有某些相同的行为(记为行为集合A),且其中一部分行为的实现方式一致时(A的非真子集,记为B),可以让这些类都派生于一个抽象类。而接口是对行为的抽象,表达的是like a的关系。接口的核心是定义行为,即实现类可以做什么,至于实现类主体是谁、是如何实现的,接口并不关心。进行约束(更准确的说是一种"有"约束,因为接口不能规定类不可以有什么行为),也就是提供一种机制,可以强制要求不同的类具有相同的行为。抽象类是对类本质的抽象,表达的是is a的关系,比如: BMW is a Car。
2022-09-08 23:35:05
3036
java基础-拼图小游戏.zip
2022-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人