- 博客(53)
- 收藏
- 关注
原创 WebSocket 详解--spring boot简单使用案例
WebSocket 是一种网络通信协议,专为在单个 TCP 连接上进行全双工通信而设计。WebSocket 允许客户端和服务器之间的消息能够实时双向传输。这与传统的 HTTP 请求-响应模式有很大的不同。
2024-06-13 10:32:31
1682
1
原创 使用poi将pptx文件转为图片详解
前端需要上传pptx文件,后端保存为图片,并将图片地址保存数据库,最后大屏展示时显示之前上传的pptx的图片。需求看上去是简单的,简单聊一下,不管是使用vue的elementui还是传统的layui都有很好的实现组件,这里我们重点不在前端,所以不去细说,感兴趣的同学可以了解一下。
2023-12-26 15:04:45
2012
1
原创 在spring boot项目引入mybatis plus后的的案例实践
主要就是先继承一个ServiceImpl,然后实现一个IService,就完成了,当然了,如果说是项目分层比较严格的,可以把接口和实现分开写,就是你的接口去继承IService,然后你的实现去继承自己的接口,中间有一个中间人的意思,这个也是程序设计的原则之一、依赖倒置原则。当我在尝试使用较早一些的稳定版本的时候,发现了mybatis和mybatis plus包出现了冲突的情况,然后切换了高版本的,问题解决。
2023-12-20 16:05:00
1721
原创 垃圾收费站
编码方式:x-www-form-urlencoded将表单内的数据转换为键值对,如name=java&age=23,而form-data则将表单数据处理为一条消息,以标签为单元,用分隔符分开,既可以上传键值对,也可以上传文件。// 输出图片文件路径。反复调试了一下,确定是前端传完,后端接收时就出现的问题,猜想会不会是form-data这个传参方式不对,改成了x-www-form-urlencoded,就不会有了。访问的时候出现了问题,后端接收到的数组多出了一层中括号,也就是被两层中括号包裹,
2023-10-26 11:21:44
570
原创 实际项目中如何进行问题排查
这个功能真的很方便,比起重启带来的代价,真的是不可比的。比如,重启时可能导致负载重分配,选主等等问题,就不是你能控制的了。如上,是直接更改线上代码的方式,但是一般好像是编译不成功的。场景:我找到了问题所在,能否线上直接修改测试,而不需要在本地改了代码后,重新打包部署,然后重启观察效果?场景:我新修改的内容在方法内部,而上一个步骤只能看到方法,这时候可以反编译看下源码。场景:我新写了一个类或者一个方法,我想知道新写的代码是否被部署了?场景:我想看下我新加的方法在线运行的参数和返回值?
2023-10-19 15:59:48
171
原创 JQuery、JSON、AJAX、XML、IO流、多线程、反射核心知识点详解
JQuery、JSON、AJAX、XML、IO流、多线程、反射随笔,查漏补缺用
2023-10-11 16:38:09
1277
原创 服务器上部署python脚本
8../configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl –with-openssl-9.rpath=auto 标粗的这个一定别漏了。1.wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz --no-check-certificate 下载openssl1.1.1。2.tar -zxf openssl-1.1.1n.tar.gz 解压。
2023-10-09 14:46:46
1850
原创 Spring Cloud详解
微服务架构的提出者:马丁福勒简而言之,微服务架构样式[1]是一种将单个应用程序开发为一组小服务的方法,每个小服务都在自己的进程中运行并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建,并且可以由全自动部署机制独立部署。这些服务的集中管理几乎没有,它可以用不同的编程语言编写并使用不同的数据存储技术。1、 微服务架构只是一个样式,一个风格。2、 将一个完成的项目,拆分成多个模块去分别开发。3、 每一个模块都是单独的运行在自己的容器中。4、 每一个模块都是需要相互通讯的。
2023-08-29 09:35:09
42176
4
原创 异步servlet
先来说说什么是非异步 Servlet。在 Servlet3.0 之前,Servlet 采用 Thread-Per-Request 的方式处理 Http 请求,即每一次请求都是由某一个线程从头到尾负责处理。如果一个请求需要进行 IO 操作,比如访问数据库、调用第三方服务接口等,那么其所对应的线程将同步地等待 IO 操作完成, 而 IO 操作是非常慢的,所以此时的线程并不能及时地释放回线程池以供后续使用,如果并发量很大的话,那肯定会造性能问题。
2023-08-29 09:13:29
339
原创 nacos服务器启动报错集合
开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,application.properties中的配置信息为: 解决办法:查看数据库连接配置即可
2023-08-28 15:47:23
1438
原创 本地镜像管理
用户可以通过命令查看本地所有镜像,如下:仓库名称,仓库一般用来存放同一类型的镜像。仓库的名称由其创建者指定。如果没有指定则为。一般来说,仓库名称有如下几种不同的形式。[namespace\ubuntu]:这种仓库名称由命名空间和实际的仓库名组成,中间通过隔开。
2023-08-25 09:41:15
237
原创 docker和虚拟机的区别
docker 解决了哪些痛点:简化环境管理传统的软件开发与发布环境复杂,配置繁琐,经常有读者在微信上问:我的代码开发环境可以运行,一旦部署到服务器上就运行不了了。这个问题很常见,也确实很烦人,但是问题总要解决,开发环境、测试环境、生产环境,每个环节都有可能出现这样那样的问题,如果能够在各个环境中实现一键部署,就会方便很多,例如一键安装 linux 、一键安装 mysql、一键安装 nginx 等,docker 彻底解决了这个问题。虚拟化更加轻量级。
2023-08-25 09:23:10
137
原创 linux入门详解
在Linux操作系统出现之前,还有一个操作系统叫做Minix,Minix操作系统是由Andrew的大学教授研发出来的,当时大学教授是为了给学生上课,买了一套Unix操作系统,参考Unix自己写了一个操作系统,并且命名为Minix。同时将Minix开源,供学校内部的研究和教学,到了2000年,Andrew将Minix操作系统完全对外开源。Minix由于完全对外开源之后,在互联网上迅速的传播,但是大家在使用时,发展Minix不时很完美,内部存在各种各样问题。
2023-08-25 09:18:45
191
原创 Spring Boot简介
SpringBoot是由Pivotal团队研发的,SpringBoot并不是一门新技术,只是将之前常用的Spring,SpringMVC,data-jpa等常用的框架封装到了一起,帮助你隐藏这些框架的整合细节,实现敏捷开发。SpringBoot就是一个工具集。SpringBoot项目不需要模板化的配置。SpringBoot中整合第三方框架时,只需要导入相应的starter依赖包,就自动整合了。
2023-08-25 09:04:12
124
原创 Mybatis-Plus详解
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。官网:https://mybatis.plus/ 或 https://mp.baomidou.com/[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dob6W9Zf-1692866307335)(Pictures/1556243079102.png)]文档地址:https://mybatis.plus/guide/源码地址:htt
2023-08-24 16:42:07
385
原创 Spring MVC详解
/set getpublic String addUser(@RequestBody User user){//@RequestBody将请求体中的json数据转换为java对象@JsonSerialize(using = MySerializer.class) // 使用MySerializer输出某属性//在输出此属性时,使用MySerializer输出....get/set则输出json时:{"id":xx,"name":"xxx","salary":10000.13}
2023-08-24 16:24:25
1809
原创 Spring IOC详解
这个注解表示当前类是一个配置类,那么当前类中,所有添加了 @Bean 注解的方法都会被注册到 Spring 容器中,如果有其他方法调用到一个添加了 @Bean 注解的方法,那么不会立马执行对应的方法,而是先去 Spring 容器中查看是否有对应的对象,如果有,则直接从容器中获取即可,如果容器中没有的话,才回去执行对应的方法。默认情况下,如果我们向 Spring 容器注入一个 Bean 的时候,不指定构造方法,那么默认使用的构造方法就是无参构造方法,所以如果你的类里边没有无参构造方法,就会出错。
2023-08-24 16:17:23
273
原创 Spring AOP详解
注意,这个地方虽然我们用 CalculatorImpl 类型接收的 Spring 容器中的 Bean,但实际上返回的对象并不是 CalculatorImpl 本身,而是它的子类的实例,此时使用的动态代理是 CGLIB动态代理。在项目运行的时候,在不改变已有代码的情况下,自动的向方法中添加新的功能。通过修改该属性,可以在有接口的情况下,也是用 CGLIB 动态代理。此时,由于被代理的对象有接口,所以就会使用 JDK 动态代理。AOP 的本质实际上就是动态代理。
2023-08-24 16:15:56
417
原创 Spring详解
*** 定义bean后处理器* 作用:在bean的创建之后,进行再加工*//*** 在bean的init方法之前执行* @param bean 原始的bean对象* @return*/System.out.println("后处理器 在init之前执行~~~"+bean.getClass());/*** 在bean的init方法之后执行* @param bean postProcessBeforeInitialization返回的bean。
2023-08-24 16:13:05
626
原创 Maven详解
AntMavenGradleMaven这个单词来自于意第绪语(犹太语),意为知识的积累.Maven是一个基于项目对象模型(POM)的概念的纯java开发的开源的项目管理工具。主要用来管理java项目,进行依赖管理(jar包依赖管理)和项目构建(项目编译、打包、测试、部署)。此外还能分模块开发,提高开发效率。Maven生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven就可以自动化的执行构建命令了。Clean Lifecycle在进行真正的构建之前进行一些清理工作。
2023-08-24 16:04:02
1212
原创 JSP详解
JSTL:全称Java Server Pages Standard Tag LibraryJSP标准标签库(JSTL)是一个JSP标签集合。
2023-08-24 15:53:16
365
原创 jQuery详解
jQuery是一个快速、简洁的JavaScript代码库。jQuery设计的宗旨是“Write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript操作方式,优化HTML文档操作、事件处理、动画设计和Ajax交互。CDN的全称是Content Delivery Network,即内容分发网络, 使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
2023-08-24 15:47:52
3544
原创 servlet详解
浏览器能够解析的文件:HTML、CSS、JS,图片、文本文档等网页模板:JSP、Freemarker、Thymeleaf…对于 jsp、freemarker 这样的模板文件,浏览器无法展示出来注意:修改端口号需要重新启动Tomcat才能生效2.6 项目部署及访问静态资源2.6.1 创建项目2.6.2 URL访问资源经验:URL主要有4部分组成:协议、主机、端口、资源路径URL组成2.6.3 Tomcat响应流程图请求响应流程图
2023-08-24 15:04:55
214
原创 JDBC详解
JDBC(Java Database Connectivity) Java 连接数据库的规范(标准),可以使用 Java 语言连接数据库完成 CRUD 操作。用户输入的数据中有 SQL 关键字或语法并且参与了 SQL 语句的编译,导致 SQL 语句编译后的条件含义为 true,一直得到正确的结果。这种现象称为 SQL 注入。代表用户完成的一个业务功能,可以由一个或多个DAO的调用组成。(软件所提供的一个功能都叫业务)。service 层核心思想命名:XXXView职责:收集用户的数据和需求、展示数据。
2023-08-23 10:33:03
743
原创 JUC--CompletableFuture
比如主线程让一个子线程去执行任务,子线程可能比较耗时,启动子线程开始执行任务后,主线程就去做其他事情了,忙其他事情或者先执行完,过了一会才去获取子任务的执行结果或变更任务状态。Future接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务的执行结果,取消任务带带执行,判断任务是否被取消,判断任务执行是否完毕等。CompletableFuture通用:它是Future的功能增强版,减少阻塞和轮询,可以传入回调对象,当异步任务完成或者发生异常时,自动调用回调对象的回调方法。
2023-07-05 13:32:49
607
原创 JUC--多线程-用户线程-守护线程
管程:Monitor(监视器),也就是我们平时所说的锁,其实是一种同步机制,他的义务是保证(同一时间)只有一个线程可以访问被保护的的数据和代码。并发:在同一实体上的多个事件,是在一台处理器上“同时”处理多个任务,同一时刻,其实是只有一个事件在发生。并行:在不同实体上的多个事件,是在多台处理器上同时处理多个任务,同一时刻,大家真的都在做事情,各做各的。进程:简单的说,在系统中运行一个应用程序就是一个进程,每一个进程都有它自己的内存空间和系统资源。锁:synchronized。
2023-07-04 15:45:29
167
原创 Spring Security--多个过滤器链和多个用户表
可以看到,当请求到达FilterChainProxy之后,FilterChainProxy 会根据请求的路径,将请求转发到不同的Spring Security Filters 上面去,不同的Spring Security Filters 对应了不同的过滤器,也就是不同的请求将经过不同的过滤器。注意的是,规则一定要统一,一条执行链的规则,如/web/**,下面一切的接口都加/web/**,包括登录的接口。上图,我直接在内存中写了个用户,模拟不同表的用户,下面是数据库的用户登录。
2023-06-14 12:33:25
2075
原创 Spring Security--获取登录成功的用户信息
在用户登录成功后,自动将用户信息存入到SecurityContextHolder中。3.下一个请求来的时候,还是会经过SecurityContextPersistenceFilter 过滤器,,此时系统还是会从Httpsession 中读取出登录成功的用户信息,并将之存入SecurityContextHolder 中。2.在登录请求处理完毕后,响应数据给前端时,也会经过SecurityContextPersistenceFilter 过滤器,此时,会将用户信息存入Httpsession中。
2023-06-13 16:16:42
1684
原创 Spring Security--会话管理
在服务器,Spring Security维护了一个会话注册表,所有的登录上来的用户,都会注册到这个注册表中,本质上是一个map集合,map是用户对象,value保存了用户所有的会话对象,Map。如图,在这个层级还可以配置一些会话的其他策略,比如:超过了一个了怎么办,是把上一个踢掉还是怎么办,就是说这个会话策略里还有其他配置,你目前处于这个层级,是会话配置的层级。同样的,回到这一级又可以配其他策略,比如session的策略,就是在这一级。不同浏览器之间也是不同的会话。
2023-06-13 14:27:55
874
原创 Spring Security--自动登录
rememberMe还有一个key属性,当key设置了值的时候,即使服务端重启了也不用重新登录。分三部分:用户名:时间戳:加密字符串(根据用户名+用户密码+时间戳+key加密的字符串)因为有的接口可以支持rememberMe认证,有的接口不支持,用上图的方式做区别。我们记住登录后,关掉浏览器再打开,访问一下接口,可以访问,说明记住登录成功了。然后发送请求时加上:remember-me字段。value值可以为,ture,1,on。//禁止给url编码。//读取当前用户信息。base64解密完是。
2023-06-12 16:43:07
790
1
原创 Spring Security--密码加密
第二个matches方法:密码比对的方法,rawPassword是明文密码,encodedPassword是加密后的密码,你把这来个参数传进来,它会自动帮你比对,然后放回一个boolean值。可以设置密码的强度 4-31的数字,数字越大,密码强度越高,所需要的时间就越久 可以防止有人频繁去试密码,我们比对的时间会更长。项目的话,我们是继续写的,此时项目是已经实现了数据库的用户名,密码登录,且用的是自己的登录页面。对象,这里是把所有的加密方式都写出来了,匹配你的密码的加密方式,默认是”bcrypt“
2023-06-12 15:24:03
1766
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人