自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣第374场周赛题解

这个题目的思路其实是,对于数字来说,只有两种情况,我们设置初始区间为[0,s-1],s设置为1,也就是初始区间什么都没有,然后添加数字,假设这个数字为a,产生的新区间为[0+a,s+a-1],在a小于等于s的情况,0+a<=s-1;但是如果a>s,新产生的区间与老区间就肯定会有空隙我们就肯定需要添加新的数字,然后通过贪心的思想,添加s可以把当前的区间正好扩大一倍,这是只添加一个数字可以做到最大的区间扩张,大于s会产生空隙,小于s扩张的范围会减少。a>s,添加数字加一,s=s*2;

2023-12-05 22:29:56 502

原创 力扣373场周赛题解

这个题目的思路是分组排序,把差距在limit的数字分为一组,每一组中的数据可以直接排序,然后把这个结果插入回原来的数组中,就得到结果。对于这个题目的解决思路就是先把所有元素进行排序然后记录原始的下标,然后通过limit来进行元素的分组。这样就得到了问题结果。这个题目的思路也比较简单,主要就是两个方面进行考虑,一进行子字符串的截取,二判断子字符串是否是美丽字符串。子字符串的截取采用双指针进行解决,通过双指针的移动来不断截取子字符串然后,去判断当前截取的子字符串两种字符的数量是否满足规则。

2023-11-26 15:56:52 545

原创 《java并发编程的艺术》读书笔记 1~2章

当一个处理器要修改一个经常被其他处理器读取的内存地址时,它可以向所有其他处理器发送一个请求,在请求期间,其他处理器会将与该地址相关的缓存行设置为无效状态,即将其从缓存中移除。偏向锁使用了一种等到竞争出现才释放锁的机制,所以当其他线程尝试竞争偏向锁时,持有偏向锁的线程才会释放锁。JVM内部实现了很多种锁机制,有偏向锁、轻量级锁和互斥锁。有意思的是除了偏向锁,JVM实现锁的方式都用了循环CAS,即当一个线程想进入同步块的时候使用循环CAS的方式来获取锁,当它退出同步块的时候使用循环CAS释放锁。

2023-09-14 19:35:15 317

原创 4月24日~4月26日学习总结

这个题目的题意是把 每一组数据不断的只与后面做减法,求出绝对值,如果直接使用代码模拟这个过程的话时间复杂度就比较高会有超时的问题,所以思路是对于每一列进行一个排序,然后每一次都是后面减前面的数字,这样就不用考虑绝对值,所以对于每一列的数据来说,他会参与的计算计算在与他前面的数据计算时为正数,与后面的数据计算时为负数,这样使用(j-(n-1-j))*a[i][j]这个方程就可以得到在这一列数据中所有a[i][j]参与的值。伪客户端是用来载入AOF文件和lua脚本的,普通客户端是连接的服务器进行数据库使用的。

2023-04-26 22:49:55 483 1

原创 redis设计与实现读书笔记(2)

今天看的是关于单机数据库,RDB持久化以及AOF持久化的内容。

2023-04-23 22:42:37 395

原创 redis设计与实现读书笔记

对象的类型与编码Redis 中的每个对象都由一个redis0bject结构表示,该结构中和保存数据有关的三个属性分别是type属性、encoding属性和ptr属性:type属性:记录了对象的类型。为下图中类型的一个对于Redis数据库保存的键值对来说,键总是一个字符串对象,而值则可以是字符串对象、列表对象、哈希对象、集合对象或者有序集合对象的其中一种。对象的ptr指针指向对象的底层实现数据结构,而这些数据结构由对象的encoding属性决定。

2023-04-14 21:14:07 1014

原创 redis数据结构底层原理及相关运用

Redis的数据结构,可以在两个不同的层面来讨论它。第一个层面,是从使用者的角度。比如:string、list、hash、set、zset(sorted set)五种数据类型这一层面也是Redis暴露给外部的调用接口,也就是我们平时使用redis数据库所使用的数据结构。第二个层面,就是这五种数据类型的内部实现结构,属于更底层的实现。 比如:dict(字典)、sds(simple dynamic string简单动态字符串)、intset(整数集合)、ziplist(压缩列表)、quicklist(快速列表)

2023-04-13 21:28:22 566

原创 mysql底层原理学习

在读取事务开始时,系统会给事务一个当前版本号,事务会读取版本号<=当前版本号的数据,这时就算另一个事务插入一个数据,并立马提交,新插入这条数据的版本号会比读取事务的版本号高,因此读取事务读的数据还是不会变。只能读取<=2的数据,事务B新插入的那条数据版本号为3,因此读不出来,解决了幻读的问题,而且两个事务同时修改同一数据,则会生成两个不同的版本,从而避免数据丢失的问题,解决了丢失修改问题。Mysql默认的隔离级别是RR。可能导致数据不一致:由于读取的数据可能是未提交的数据,因此可能会导致数据不一致的问题。

2023-04-12 16:53:37 808

原创 3月27日~4月2日学习总结

这一周,还花了一点时间去复习了java中多线程的知识,因为要去给22级上关于多线程相关的知识,整体的了解了一遍多线程的基本知识,相关特性,主要方法,线程锁,线程池等等都系统的梳理了一遍,也写了很多代码示例。这个星期是在准备项目的前后端接口对接,以及项目不同模块之间的接口调用,还有就是对于服务器部署项目的一些准备,然后是完善了对于排班规则和算法的相关调整。对于蓝桥杯,因为这一周用在项目上面的时间比较多,对于蓝桥杯只在算法组布置的题组中写了10道题目,还有在官网上面写了7,8道题目。具体内容看下面这个博客。

2023-04-02 22:38:40 52

原创 java多线程相关知识讲解

线程和进程的生命周期是一样的分为5个阶段创建、就绪、运行、阻塞、终止。对于在java中实现多线程的方法。有3种 分别是一般来说前两种使用的比较多。第三种方法使用的比较少一点。具体原因是:实现Callable接口需要使用Future和ExecutorService等类来执行任务,并且需要额外的代码来处理返回值和异常。相比于继承Thread类或实现Runnable接口,实现Callable接口需要更多的代码量,相对也更加复杂。但是这个方法也有它的使用场景,比如下面这些。

2023-04-02 21:18:48 360

原创 3月27~29日学习总结

然后主要是去做关于遗传算法模块和其他模块的对接,然后还进行对于算法的一些调整,修改了基因型的格式,也修改了基因工厂生成基因的方法,主要是为了实现员工不在,有重合时间的班次同时进行上班。还有就是修改了关于适应度函数的相关代码,实现了同时处理员工上班时间偏好,上班日期偏好,上班不能超过联系4个小时,一天上班时间不能超过8个小时等关系,求出尽量满足这些关系的最优解集合。主要是去完善了之前写的业务接口的相关接口文档,对于需要的数据格式写上了详细的注释,还有对于接口的作用进行了进一步的补充。

2023-03-29 22:16:22 66

原创 3月20日~3月26日学习总结

后面使用的思路是一个双指针的思路,通过遍历每个字符的贡献来请得到所有的贡献,简单来说就是对于每一个字符来说,它到下一个重复字符之间的子字符串中,他都相当于提供了一点贡献值。这样的话,所有在这个字符串中包含这个字符的的子字符串都是有这个字符提供的一点贡献值。这一周主要是在做两个事情,一个是服创项目的遗传算法的代码编写,因为使用的是一个没有很多资料的算法库,在api报错上面花费了很多时间。然后,我现在已经实现的是,适应度函数,基因生成工厂,遗传算法的引擎,相关的基本类。今天刷的一个比较记录的是一个这样的题目。

2023-03-26 22:46:22 53

原创 3月20~22日学习总结

最近主要的重点是去学习遗传算法,我之前学习了遗传算法的基本概念,但是那只是针对于一维的问题,也就是只是针对于某一个方面进行优化的遗传算法。但是在实际场景中,肯定不会是只需要一个优化一个方面的算法。肯定是需要给出一个满足多个方面需求的最优解,所以就需要使用多维遗传算法。

2023-03-22 21:32:01 305

原创 3月13~19日学习总结

例如,如果有3个班次,6名员工,则可以设计一个3维数组,大小为3 x 7 x 6,其中第一维表示班次,第二维表示星期几,第三维表示员工编号。选择算子用于根据个体的适应度值来选择下一代的个体。染色体的每个位置上都有一个基因(Gene),每个基因可以编码一个特定的特征或参数,比如在优化问题中,基因可以表示一个决策变量的取值。(Tournament Selector)是Jenetics中一种常用的选择算子,它模拟了一个个体之间的比赛,通过不断地选出胜者来选择优秀的个体作为父母,进一步产生新一代种群。

2023-03-19 11:45:24 537

原创 蓝桥及其他学习总结

首先熟悉蓝桥杯的主要题型,然后看了这几年的相关题目,知道了一个有5道填空题,5道编程题。然后填空题中是不会有时间超限,这种限制不需要考虑优化,可以尽量使用暴力方法解决。如果是最短路题目直接跑floyd就可以完成题目;这一题是2021的蓝桥杯题目,可以直接用floyd解决。然后就是比较重要的set去重,使用这个函数就可以很方便的进行排序和去重。然后对于最大公约数,最小公倍数这些题目我写了模块函数gcd最大公约数,lcm最小公倍数。还有关于全排列的模板还有其他部分的算法模板可以看这两个链接。

2023-03-12 21:15:41 283

原创 11.28~12.4日学习总结

星期一,星期二: 把项目中关于评论模块的内容全部写完了,然后处理了一下逻辑。星期二,星期三:开始学习webSocket的相关概念。关于webSocket,其实和java的Socket原理相差不大,也是要建立一个通道进行信息交互。对于webSocket在Spring中的应用,主要是使用四个监听事件建立连接事件,写上@OnOpen注解就可以监听这个事件。 退出事件。这个可以通知别人用户退出登录什么的。 接收消息事件这个是最重要的事件,对于消息的处理方法都是在这里进行处理,几乎对于webSocket的业务逻辑代码

2022-12-04 21:49:10 295

原创 11.21~11.28日学习总结

首先这一周,主要进行的几个事情。1.在星期一~星期二图书报账的相关事情处理已经完毕,记录了现在图书报账的相关流程,比以前的流程有不少改变,已经写了word记录了流程,给下一任图书管理员做参考。2.进行了项目的中期答辩,总结了项目中的一些问题,还有对于业务逻辑的处理。主要出现的问题:1.购物车模块没有使用缓存机制,会让这里产生大量的数据库Io操作来拖慢项目的整体性能,也可以通过这个攻击数据库。2.需要有订单未支付状态,这一块也是比较重要的业务逻辑,需要进行补全。3.ES搜索引擎需要进

2022-11-29 11:19:28 624

原创 10.10日学习总结

晚上学习关于SpringMVC的拦截器相关部分,和关于maven高级的相关部分,今天的课程作业比较多,Spring相关的学习进行的太慢了。上午写了数据库的实验作业,完成了十几个sql题目。下午写java老师布置的作业,和一些课堂练习。

2022-10-10 20:39:34 148

原创 10.9日学习总结

这个题目是一个对于最短路的一个小的变化,因为这个路障是按照时间放下的不过有一个特殊条件就是如果这个路障如果在已经走过后再放下就没有意义,所以如果在i时间放下一个路障,这个路障位置是x,y,如果x+y>i,说明肯定走不到这里。写了这个题目这是一个差分的题目,需要一个差分数组,记录下每一个数和后一个数的差,形成一个差分数组,然后对于l-r的区间改变数值就是对a[l-1]和a[r]进行操作,然后操作数量就是这个数组中绝对值最大的数。今天做了5个题目,我觉得比较需要记录的就是这些题目。晚上接着看视频,写学习总结。

2022-10-09 22:09:34 106

原创 8.1日java复盘

这个题目主要就是把题目给看明白,这个跳表的概念是需要的数据在这一层的两个数之间,就是这一层两个数之间没有数了。这个题目没有选全,这个主要是有一些浏览器不会对get请求进行缓存。然后就是利用COUNT(DISTINCTuser_id)查询出site_id的数据,然后进行排序。但是没有记清楚到底是多少,所以就没有选择。第一个题目,一个人访问多次算一个访客,所以要对user_id做去重操作。Hashmap的数据结构,在JDK8后,加入了红黑树。这个题目是发生了死锁,所以运行了一次后线程就被锁死。...

2022-08-01 11:10:35 125

原创 7.25java复盘

set集合是没有索引的,所以元素的顺序不会按照存入集合中的顺序来规定。所以他的顺序是无法确定的。从16条开始的话,所以位置要写15,因为他是从这个位置的后一位开始的。这个题目是错在in这个关键字,只有指定了明确的数据才能使用这个关键词。根据用户名分组(groupbyname),查询出每个人的最低分数,然后查询分数大于80分的人的名字。这个题目是没有考虑D的情况,使用D这个语句会返回在表中的所有数据包括重复行和空行。只有D是错误的,因为前面是字符串类型,后面是整型,是不能使用“-”的。...

2022-07-25 10:52:53 112

原创 java复盘

这个题目主要是没有搞清楚Integer的缓存范围。这个范围-128到127超过这个范围就会生成新的对象。这个题目主要是没有搞清楚,String是不可变类这个知识点。String是被final修饰的后面那个方法只是把一个副本放在里面并不会改变原来对象的值。这个主要是当时写的时候没有看的很清楚。值为一的时候会进行异常的处理。这样函数里异常后面的代码就不会被执行了。所以说不会再执行输出四这个语句。这个题目没有选全,使用多态的话,可以更加容易的,对于代码的功能进行扩展。一个类是可以被很多个子类继承的。...

2022-07-18 10:21:27 433

原创 7.15周学习总结

这一周主要是在学习关于表单数据一些操作,怎么样获取表单的数据然后把这些数据封装在Json字符串当中,然后把这也有字符串通过ajax请求把这些数据发送给后端的代码,然后后端在与数据库进行操作时候,再返回一些数据呈现给表单或者是返回一些请求操作提示用户进行下一步操作。主要学习的就是当初没有处理好的分页查询。剩下的就是看书方面吧,然后就是要接着看《Mysql必知必会》这本书。另外就是项目现在已经写了登录注册的功能,然后还写了一个用户填写基本信息的表单界面。接下来的任务就准备,在完善一下登录注册的一些操作。...

2022-07-15 21:21:08 111

原创 java考试复盘

这个题目当时写的时候没有看清楚“只有” 这个词语,看到notify方法,就以为直接是正确的,没有仔细的看题目,对于wait还有 notifyAll方法可以将线程进入对象锁定池准备获得对象锁进入运行状态。 这个题目的B选项也是错误的,因为是不能直接调用的,需要使用访问控制符才能调用。所以D也是错的,因为是可以调用的。然后使用的关键字不是this.也是可以调用其他类的方法。 五种方式和相关具体用法。sleep:导致此线程暂停执行指定时间stop: 这个方法将终止所有未结束的方法,包括run方法。synchro

2022-07-11 11:37:01 65

原创 周学习总结

这一周学习的内容。1.学习了mybatis 的相关使用 学会了怎么样通过 配置文件和映射把SQL语句进行封装 。 将一个个sql语句变成一个个方法。 只需要调用参数就可以使用这些sql语句。 这样主要是为了以便捷的更改sql语句。 我们只需要改变封装好的方法中的内容,就可以做到对于sql语句的内容调整。 相对于jdbc的操作,这样会更加的让代码 更加容易更改。 然后还能实现jdbc无法做到的就是实现动态sql语句。 类似于这种可以判断是否输入来进行。是否进行这个条件约束的update语句.、2. aj

2022-07-08 20:02:36 154

原创 java测试复盘

错误的题目。1. 这个题目是因为没有把客户端和服务端的连接方式区别搞清楚,服务端要通过TCP 来创建socket对象,但是客户端不需要,所以c是错误的。这个题我也搞得不是很明白。我在网上搜索的时候是说这个答案有可能是一个,也有可能是两个。 好像是说如果那个数据被储存在常量池的话,就是只会产生一个对象。然后这个的话,如果是第一次创建,应该就是两个对象。 这个也是对于各种集合的底层逻辑不是特别了解,TreeMap应该是以红黑树的底层数据结构不是All树。 这个题目是因为我对于线程池的每个功能不是特别熟悉所以错

2022-07-06 12:12:40 128

原创 6.29日刷题题解

今天写了两个题目。第一个题目比较难。题目就是上面这种。题目的意思就是设计三种函数。然后输出你要使用的函数类型和输入的值。然后来进行不同的操作,得到答案。 第一个函数是设定缓存的大小。一个数查找它是否存在于这个缓存中,如果存在就把它的值输出来。不存在的话就输出负一。第三个的话就是进行添加如果存在这个键值对就进行替换。 如果不存在就进行添加。然后如果已经超出容量范围的话,就将最久没有使用过的键值对进行删除然后这个题的大题思路就是用一个哈希表和双向链表来进行解答。哈希表的作用就是用来储存键值对 双向链表就是用来

2022-06-29 21:09:29 149

原创 6.28日刷题题解

今天在力扣上按顺序刷了两道题目。第一道题是反转链表。这是题目,我是使用了一次遍历。然后用两个节点一个节点用来记录下一次节点。一个节点用来录上一个节点。 然后把正在遍历的节点的指针指向上一个节点。然后遍历到最后一个 就可以把所有节点的指针倒转过来。 具体的代码和注释就是这个样子。第二道题目是无重复字符的最长子串。这里的题目是用一种名叫滑动窗口的思想来做的。就是如果我想将一个已经在子串中有重复字母的字母加进去。 那我就要把这个字符串中重复字符和其之前的所有字符全部移除出去才可以加入这个字符成为一个没有任何重复

2022-06-28 21:05:18 105

原创 项目进度

这几天是一直在处理关于客户端和服务器之间的连接问题,也是处理好了一部分问题,实现了服务器响应客户端的登录请求,还有就是对于每个客户端的线程连接还有进行管理界面方面我还没有进行设计这是为了测试代码所以设置了一些按键服务器会显示连接的用户客户端那里也可以得到在线用户列表实现了在线聊天·,对于离线方面因为还没有进行数据库的建表,所以还没有写相关的用户代码这是互相发消息的一些操作,现在对于项目的进度就这么一点,我知道我还是比较慢,对于界面方面的设计我现在也...

2022-04-24 21:53:32 558 1

原创 4.18日学习总结

今天就是在写项目,写了一些关于登录时从数据库调用数据来验证是否输入正确的密码。还有就是写了一些点击事件可以进行一些判断是否密码正确。注册界面的一些按键事件也设计好了。今天的项目就写了这些东西。...

2022-04-18 22:24:04 367

原创 4.17日学习总结

今天就在写项目,写了注册的界面还有登录界面的各种点击事件还有各种界面的描写。还有对于一些代码中的问题进行了修改。然后就是另一个注册界面图片还没有全部设置好,明天我会把相关的一些基本设置全部搞好。...

2022-04-17 22:14:25 150

原创 4.14日学习总结

今天学习了网络编程的相关知识,还有复习了关于IO流方面的知识。1.对于网络编程来说,最重要的就是连接双方的IP和端口,这是对于通信来说的不可缺少的两个要素,还有就是网络通信协议,udp,tcp。IP地址是为了在网络中定位一台计算机。这就是关于IP的大概介绍,就和我们现实中一个人的地址差不多,不过现在是指一台计算机。端口就是为了表示计算机中的一个进程,也是相当于找到计算机中你想要定位到的一个进程。这是对于端口的一些分类。还有就是学习了一些关于管道流的一些知识,管道流就是为了让文件.

2022-04-14 22:09:15 358

原创 4.12日学习总结

1.今天主要学习了对于正则表达式方面知识的学习,还有对于IO流的相关学习。 然后就是花了很多的时间来进行对于聊天室项目的相关构思和一些对于现在已经学习了的知识的一些想法。聊天室项目的构思基本的模式第一是使用的C\S模式设计,主要使用客户端和服务器端两个部分,主要就是客户请求服务、服务器提供服务的一种模式。基本功能的构思实现用户的登录以及注册的功能实现,主要是利用IO流对服务器发送请求。对于登录,让服务器判断数据库中是否已经存储了输入的账号密码,并...

2022-04-12 22:03:54 694

原创 4.11日学习总结

今天主要学习了4个小时java,主要学习的就是关于数据库方面的内容。1.首先我使用的主要是mysql数据库,然后也是对于数据库的定义有了一定的理解,对于在我们电脑上的数据库来说,你建立一个数据库,其实是在你的电脑里生成了一个文件,他的本质上还是一个文件,不过是一个比较特殊的文件。2.然后我也是主要使用了一个叫作sqyog的软件,然后也是在这个软件上运行了一些基本的sql语句。比如下面这些。1.DROP DATABASES hsp_db01,这就是一个创建数据库的一个sql语句,2.selec

2022-04-11 21:47:49 1003

原创 4.7日学习总结

今天学习了git仓库的相关使用方法,一直在处理怎么样与远程仓库进行连接。然后又在尝试怎样上传文件,搞了很长一段时间。不过终于是处理好了怎样进行操作。上传的操作就是这个流程,进行git add. 然后进行描述,然后进行 push 远程仓库就可以成功上传了。还有就是学习了jdbc的相关知识,jdbc本质上就是一连串的接口,让我们可以凭借这个接口做到使用数据库,数据库就提供给我们关于jdbc接口的相关实现类。然后我就是在准备安装maven,但是现在出了一点小问题,我还在思考怎么解决这个问题。..

2022-04-07 21:48:23 662

原创 4.5日学习总结

今天学了两个小时的java,主要是学习了异常处理方面的知识,也是为了明天的上课进行预习,1.对于异常处理主要是以两种方式来解决的一种是 try catch,来对异常进行捕获,还有就是throws来对于异常进行向上抛出,直到抛出到JVM。然后主要的异常种类和继承关系就是下面这个图,异常的使用细节也是跟这个继承关系有关上面的图也是很清晰的分成了两类,一类就是运行异常,一类就是编译异常。对于运行异常的几个基本类型就是下面这个图片然后对于try catch处理方式的相关操作模板就是下面.

2022-04-05 21:45:06 215

原创 4.4日学习总结

今天学习了集合的一些知识,看了一下底层的源代码,然后自己也打了一些代码,具体就是下面几点。1. 关于ArrayList的注意事项主要有以下几个,

2022-04-04 22:10:54 345

原创 3.31日学习总结(集合方面的学习)

1.今天学习了两个小时java,在力扣上刷了一道题目。java 方面主要是学习了集合方面的一些知识。1.首先是两张总结图这是两个java集合的两个大类。第一个是单列集合,一个是双列集合。这上面就是两个集合的存储元素方式。我是先学习了 Collection接口相关的常用方法。如下面这些列出来的相关的操作代码就是下面的这些这些就是这些方法的基本操作代码。还有就是对于迭代器的一些学习,其实迭代器就是一种类似于指针的东西,只不过在java中它拥有更...

2022-03-31 21:36:20 312

原创 3.30日学习总结

1.今天学习了2个小时java,在力扣上刷了一道题目,在java上学习的内容主要是对于明天要讲的集合和泛型的内容。1.对于泛型来说,他的意义就在于编写模板代码来适应任意类型,使用时不必对类型进行强制转换,通过编译器对类型进行检查,从而进行相对应的类型的操作。// 创建可以存储String的ArrayList:ArrayList<String> strList = new ArrayList<String>();// 创建可以存储Float的ArrayList:Ar..

2022-03-30 21:45:14 228

原创 3.28日学习总结

1. java方面首先是学习了java中对于字符串的一些操作方法。1.是对于字符串的比较问题,在以前使用的“==”,在java中是不适用的,这样的比较在某些情况下可能会返回正确的答案,但是只是巧合罢了,例如下面这个代码public class Main { public static void main(String[] args) { String s1 = "hello"; String s2 = "hello"; System.out.

2022-03-28 21:35:18 265

空空如也

空空如也

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

TA关注的人

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