自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql批处理写入数据库

所以想要提高插入速度,我们可以将这些批量插入的语句使用foreach来进行拼接,也就是将这些插入语句合并为一条,那么最终只需要进行提交一次。还需要注意:mysql批处理的缓存大小为4MB,建议每次缓存数据不要超过1000条,否则会出现存储max的异常。原本的数据插入是一条一条进行插入,每次插入都会进行提交,每次提交都会造成网络延迟,所以时间自然就会缓慢。需要注意的是,这个参数仅适用于MySQL JDBC 驱动的私有扩展参数。简单来说,省下来的时间实际上是网络延迟。

2025-06-07 21:12:19 22

原创 java.lang.invoke.SerializedLambda.capturingClass accessible: module java.base does not “opens java.l

Java 9 之后引入模块系统(Jigsaw)于是当 MP 试图访问。

2025-06-07 18:17:07 25

原创 Mybatis-Plus的Iservice接口

基于SSM的框架是service接口与serviceImpl类,spring通过自动代理,创建出serviceImpl层,在serviceImpl层中又使用@Autowired去注入mapper,并且在service层中使用mapper中定义的持久层语句来进行增删改查。所以去增加一个IserviceImpl,让service去继承IserviceImpl并且实现Iservice,那么所有的方法统一存放在IserviceImpl就可以了。

2025-06-07 18:15:22 21

原创 Mybatis-Plus的LambdaWrapper

在企业开发中,MP很多的代码会出现在Service层,但按照基本规范来说,不应该在service层出现持久层的代码,应将这部分调用至Mapper层中。现在的理解是引入函数变成,相当于在面向对象编程中引入了面向过程编程的形式,免去了面向对象编程重复创建对象的开发成本。为了能够使用MP,可以将复杂的where语句用MP包装,其余语句使用标签的形式直接在mapper接口中书写,那么效率依然能提升。在MP中,Lambdawrapper是一种较为特殊的包装器,主要的功能是用于解耦sql语句。

2025-06-07 15:46:33 85

原创 Leetcode日记

简单来讲,我们遍历一次数组,让target去与数组中的值nums[i]做减法,然后我们去hashmap利用其随机存取的特性,以O(1)的时间复杂度判断是否存在与target-nums[i]的值,从而减少了时间复杂度。hashmap的算法使用特性就在于其对数组的特殊处理,数组有下标和value值,而hashmap有键值对,正好可以同时存储数组的下标与值。同样的事讲数组替换为hashmap,时间复杂度能够提升。显然优势体现在hashmap的随机存取。

2025-06-04 23:14:29 286

原创 单锁与分布式锁

顾名思义,单锁只能对单个设备进行上锁,多个设备就会出现问题,也就是说单锁的作用范围就在本机内,如果本机外完成与本机相同的操作,那么本机的锁自然是锁不到本机范围之外的主机。单锁的局限:刚才讲了,单锁作用域为本机,而现在的项目体量越来越大,后端服务器可以有多个服务器进行拼接,再通过类似于nginx服务器来进行反向代理实现负载均衡。也就是说,多个主机都需要执行相同的代码,假设目前代码段A需要上锁,而在分布式服务器部署的情况下使用单锁,比如synchronized,此时服务器1、2、3都。

2025-06-04 21:40:44 138

原创 缓存穿透、缓存击穿、缓存雪崩目前记录(纯日记)

那此时某个进程A进去访问缓存,发现缓存命中但是过期了(啥意思呢,就类似于数据库的逻辑删除,数据没删但是标记这数据删了),此时这个进程A说,爱咋咋地,我管你这那的,我拿着已经被逻辑删除的数据我就回了,然后通知另外一个牛马进程B取对数据进行读取与缓存回写。缓存本身存储的就是高热点的内容,那么当每个热点数据对应的缓存在某个时间消失了,最简单的就是TTL过期,那么此时大量的并发线程来访问某个数据热点,此时缓存没命中,显然就会去查询数据库。缓存雪崩就是缓存宕机了,也甭管咋宕机了,反正就是某一时刻,缓存用不了了。

2025-05-30 21:21:17 518

原创 redis缓存与数据库协调读写机制设计

但从微观来看,是没有问题的,因为线程B是在A修改结束前(A此时正在修改数据库,B读取了缓存,此时数据库的信息还未更新,可以看作是原来的数据库,所以可以简单的看作数据库与缓存的信息是吻合的)我们刚才讲了,缓存的设计初衷(大部分情况),就是为了读,而写是为读来服务的,所以我们理所应当的将设计重心放在读,刚才的极端案例也想表明一件事,我们很难在实际应用中判断一个数据到底是读多还是写多,如果这个数据写多读少,我们对该数据进行重复写就会占用大量的时间与空间,得不偿失。所以,我们为了避免这样的情况,就设计一个。

2025-05-30 15:03:25 346 1

原创 基于Session与基于Redis与Token验证码登录校验

HTTP 是“无状态”协议浏览器和服务器每一次请求/响应,默认互不“记忆”彼此信息。也就是说,服务器无法知道这一次请求和上一次请求是同一个用户发过来的。Session 的作用“会话”(Session)是服务器为每个用户专门开辟的一块存储空间,用来在多次请求之间保存用户的数据。当用户第一次访问网站时,服务器会为他创建一个session 对象,并给浏览器返回一个Session ID(通常使用 Cookie 存放)。

2025-05-29 17:48:18 1087

原创 局部内部类与成员内部类的一些简单理解

就是简单的在外部类中重新定义一个类,内部类可以访问外部类的所有属性与方法,外部类却无法获取到内部类的属性,但是能够调用内部类的方法。就以现在的浅薄理解,我认为访问内部类的方法是创建内部类的唯一意义。

2025-05-27 17:17:02 299

原创 springAI调用deepseek模型使用硅基流动api的配置信息

主要就是model格式,一直提示模型不存在,我真服了。还有就是下面的.base-url与.chat.base-url不知道这俩的区别是啥,可能出错,注意甄别。但是硅基流动的格式不是这样,这个伞兵网站的api文档真是一坨,找了很久没找到具体格式,给的格式也不对。

2025-05-21 21:41:45 407 1

原创 找不到自定义包出现报错ModuleNotFoundError: No module named

很奇怪的报错,时不时抽风来一下,找不到的包是我自定义的一个包,这个包我放在根路径下的,同时包里也有__init__.py,使用相对路径与绝对路径去导包都不行。添加上述代码在根目录中搜索相应包,并将找到的路径进行添加,然后解决。

2025-05-08 16:26:09 188

原创 Post与Get以及@Requestbody和@Pathvariable标签的应用

这里添加PostMapping指定了使用Post形式进行数据传递,而RequestBody标签会将传递的Body(在这里使用的是jason格式)自动转换为自定义实体EmployeeDTO的新建对象。Post的使用场景:简单来讲适用于有安全性限制的,因为post请求的内容会被存在某个封装内容中(比如表单、jason格式等),这部分内容是不会被浏览器的cache所捕捉,安全性较强。Get的使用场景:与post对比而言,不具备安全性,所传输的信息会在url中进行展示。@Pathvariable标签。

2025-04-29 16:32:08 226

原创 nginx.exe打不开或者打开后浏览器显示连接出错

最近在敲一个烂大街项目时需要用到nginx服务器,由于直接下载的打包资源,打开nginx.exe后浏览器出现连接错误。创建好后,继续在该目录下的cmd控制台输入nginx.exe运行nginx服务器,即可解决该问题。根据名称排序查找nginx.exe进程,如果不存在,说明Nginx.exe启动出现了问题。如果在cmd中运行出现其他报错,可以参考报错信息,添加其余的空文件夹。2.如果1无法解决,ctrl+alt+del打开任务管理器,点击。,没有找到缓存文件需要的文件夹,按其需求进行创建即可。

2025-04-28 14:15:55 375

原创 Spring-SSM整合时GET方法出现404报错

后续思考是否是service的对象没有被接收到,重新调试后发现service对象的地址是存在的,不为null,到这里我就真的无语了,到底啥问题给我干的404,后来搜寻各大AI,还是CLAUDE3.7靠谱啊,问题居然出现在我的Controller层的命名不能为Controller,好吧,那无敌了。持续报错404,我从头到尾进行排查了一编,并且对service层进行了测试,都没有问题。上述代码为Controller层的测试代码,运行。

2025-04-23 20:52:47 199

原创 AOP基本概念

上述语句解释感觉太过玄妙不似常人能够听懂,所以结合自己理解,给自己留点备注:首先。

2025-04-18 16:15:55 290

原创 报错:Bean 必须为 ‘javax. sql. DataSource‘ 类型

后来想想用的jdk版本为17,可能有些高了,降jdk版本为11解决冲突,这个问题如果在设置源的时候有提示,那么应该不是源的问题,可以尝试降低jdk版本。仍然出现报错,我的pom.xml文件从网上下载下来的,应该不是包冲突。

2025-04-15 14:37:57 296

原创 SpringMvc获取请求数据

在url中将name与age进行编写,通过框架可以提取url中的name与age,这个条件是我们的形参要与url中的内容进行对应。比如现在的url运行服务器,输入url后会得到。

2025-04-02 17:59:58 539

原创 SpringMVC响应数据:页面跳转与回写数据

<body></body>

2025-04-02 13:34:48 1069

原创 Spring集成Web环境搭建

使用监听器的作用是简化提取配置文件的过程,方便操作。监听器的作用在于监听web服务器的初始化过程,将配置文件进行传递,从而方便后续的获取。通过监听器的模式,实现了解耦,如果修改了配置文件的名称或内容,将不必再在代码中重复修改,这个过程只需要在web.xml配置文件中进行相应修改即可。

2025-03-27 21:28:06 694

原创 mysql事务与索引

事务:

2025-03-26 15:24:15 202

原创 mysql多表查询

外连接左外连接的会将左表的信息进行全部展示,同理右外连接会将右表的信息进行全部展示#查询1:查询员工表所有员工的姓名,对应的部门名称(左连接)#查询2=查询3#查询2:查询员工表所有员工的姓名,对应的部门名称(右连接)#查询3:部门表,所有部门的名称,和对应的员工名称(右连接)#查询3=查询4#查询4:部门表,所有部门的名称,和对应的员工名称(左连接)

2025-03-26 13:51:53 624

原创 Mysql基础语法学习记录

注入:注入单个条目:insert table 表名(对应属性)(属性插入的内容)注入多个条目:insert table 表名(对应属性)(属性插入的内容1),(属性插入的内容2),...遇到的问题:1.如果需要修改列为非空,那么其中的内容不能为null,如果为null则会报错2.如果修改一个列为自增,此时表内必须没有自增列,且该列必须是主键# 查询1# 查询2:查询所有返回字段#查询所有员工的name,entrydate,并起别名#查询已有员工关联了哪几种职位。

2025-03-25 18:23:21 589

原创 springboot请求响应——响应

注:@RestController=@ResponseBody+@Controller,一方面用Controller标签标记该类为控制层,一方面用@ResponseBody表明需要返回响应。注:本响应接口与上述响应接口不同的地方在于没有使用@RequestBody标签,所以postman中也对应的是直接在Url中添加对应属性内容。注:@RequestBody用于标记接收的内容为响应体,对应的在Postman中的url中需要使用jason格式进行发送。注:@RequestMapping表明响应路径。

2025-03-24 13:56:53 432

原创 SpirngBoot部署JavaWeb项目学习记录一

刚才的例子是一个复合类,对于符合类,在url中的使用需要类.复合类.属性的形式来进行绑定,同理如果嵌套三层,那么url中的设置形式应为类.二层嵌套类.三层嵌套类.属性。需要注意的是,spring很智能,即使我们的形参中定义的是一个类,只要这个类中包含url中的属性内容,那么也是会被正确扫描到的,并且还不用去写标签。并且此时创建两个类:一个person类,包含age,name,addr三个属性,一个addr类,包含addr1和addr2两个属性。

2025-03-21 22:24:06 307

原创 网络编程——组播

而对于接收端,InetAddress address = InetAddress.getByName("224.0.0.1");对于发送端,只需要使用InetAddress addr = InetAddress.getByName("224.0.0.1");组播与单播的区别在于最开始调用的包不同,以及后续需要将其添加至相同的ip下。//接收打包数据内容。

2025-03-20 16:17:22 289

原创 网络编程学习2

如果我在一个测试类中先执行send,再执行recieve,那么就会出现send发送完了,recieve的还未执行的情况,当recieve开始执行时,已经没有内容传输过来,此时的recieve过程就会等待send。,现在有一个简单案例:通过控制台键入内容message,将message使用send发送并且使用recieve接收,最后在控制台打印输出message的内容。如果我先执行recieve再执行send那么同样的,recieve会卡住,无法继续向下执行。在接着上部分的内容进行学习。

2025-03-20 15:22:24 324

原创 网络编程的学习记录

首先创建DatagramSocket类的实例datagramSocket,之后将数据内容以及接收端的ip地址与端口号进行打包成DatagramPacket实例,调用datagramSocket实例中的方法.send发送数据内容(参数包含发送数据的对应的byte形式,以及对应的长度),最后关闭datagramSocket实例,释放资源。//发现recieve方法需要的是一个DatagramPacket,也就是一个打包好后的包,所以在前面创建一个包裹。//创建DatagramSocket类。

2025-03-20 13:57:28 248

原创 Vue学习记录

</div>new Vue({data :{})

2025-03-19 21:24:51 550

原创 BOM中遇到的一些问题

JS-对象-DOM嘿嘿嘿</div><br><div class="cls">嘟嘟嘟电影</input><input type="checkbox" name="hobby">游泳</input><input type="checkbox" name="hobby">洗澡

2025-03-19 17:31:22 330

原创 Spring使用Configuration类进行配置

通过使用@Configuration标签来标记配置类,也就是说我们现在不再需要创建某个xml文件作为配置文件,而是使用某个类,并且引入@Configuration标签来进行创建配置类。2.在确定好了配置类之后,我们还需要解决如何扫描标签的这个问题,在xml文件中使用context:component-scan>标签来进行扫描,而在配置类中只需要使用@CompoentScan(classpath:标签对应的上级包的路径)。对于这样的类,我们可以在配置类中构建单独的方法,来对这个封装类进行相应构建。

2025-03-17 14:25:00 673

原创 Spring标签使用

首先注意,xml的方式进行配置文件时,使用的是在自定义代码中调用ClassPathXmlApplicationContext("applicationContext.xml的路径")来生成一个context实例,然后调用context.getBean("对应类的Bean标签的id")来进行提取容器中构建的实例。这里的标签id指的是Component括号中的内容,比如@Component("b")中的"b"即为类B对应的实例的标签id。对应需要被扫描的类的上一级目录的路径。当使用标签时,会发生一些改变。

2025-03-17 13:07:05 382

原创 数据源与连接池

假设某个用户需要对jdbc中的资源进行反复调用,那么此时被池化的资源会长期被保存在池中,当用户进行调用的时候实质上采用代理的形式返回给用户,如果两次获取池中的相同内容,会获取到不同的代理,但代理中的实际内容(也就是保存在池中的必要内容)是不会发生改变的。数据源的创建目的在于节省资源,当某些资源会被来回进行提取的时候,那么每次进行创建和销毁都会造成开销。如果要验证这个内容,假设池中的内容被protected进行修饰,那么需要通过反射机制拿到实际内容。理解很浅,慢慢学习。

2025-03-15 21:24:49 103

原创 依赖注入Setter方法、有参构造方法

上述内容中的ref就是进行对象的注入,注入的对象是一个bean标签,并且指代的是这个bean标签的id,System.out.println("save成功");需要通过spring框架的bean标签中的属性来实现依赖注入。主要流程:创建业务层接口与实现类,调用数据库连接层的实现类。红色部分为调用数据库连接层的实现类,但是这里的。其中property标签中的name指定的是。

2025-03-15 16:05:50 386

原创 Spring基础从零开始学

1.1当scope为Singleton时,创建的对象是全局唯一的(开辟一块唯一的空间,不管使用这个bean标签创建多少个对象,最终只会调用相同空间中的唯一的那个对象)。工厂类需要首先构建一个工厂类,然后调用工厂类的方法构建出需要类的实例userDao,并且在上述配置文件的第二排中没有设置scope=protype,所以默认scope为singleton,这就导致通过工厂类创建两个userDao实例的地址是相同的。测试类对新建的工厂对象进行输出,输出的地址却是一样的,这很奇怪,最后发现错误出在配置的过程中。

2025-03-15 14:55:34 267

原创 静态工厂——单例实例

return age;简单来将,通过private static来构造一个静态变量,开辟一块固定区域用于装入内容,现在装入的是ClientService类的实例,然后构建一个方法用于外部进行调用public static ClientService getInstance(),外部调用后返回的即是固定的一个实例private static ClientService clientService = new ClientService();

2025-03-15 13:31:07 285

原创 SSM简单项目创建

int id;return id;

2025-03-13 18:33:05 586

原创 SpringMVC基础中的基础学习

我的这个demo项目的运行是在tocat的插件中进行的,通过run开始运行项目,首先会根据pom.xml配置文件读取到springmvc.xml文件,由于springmvc.xml文件定义了@Controller标签以及@RequestMapping标签,所以MVC会自动读取被标签标记到的类Controller,然后再根据@RequestMapping标签读取到类中的方法test,执行方法,会返回给MVC我的index.jsp,结合tomcat,通过html在浏览器显示出index.jsp中的内容。

2025-03-09 18:39:13 347

原创 Tomcat部署出现404报错

原因:应用程序上下文给删除了就好了。

2025-03-08 18:09:59 117

原创 Spring基础中的基础学习日志——注解

如果我们在类中的属性为另一个自建类,,比如我们创建了类A和类B,类A中的属性包含B,那么此时需要在类A中用@Autowired来标记B,这就和@Value类似,相当于@Value只能识别Java中自带的一些属性第一,而我们自创的一些属性(也就是自创的类)用@Value是识别不了的,所以需要用@Autowired来进行识别。-- <property name="name" value="小兔"></property>-->目前理解注解的目的就是简化属性注入的繁杂手续(后续再加深学习,可能有误)

2025-03-08 16:44:33 358

空空如也

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

TA关注的人

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