- 博客(34)
- 收藏
- 关注
原创 getDeclaredMethods() 和 getMethods()的区别
使用 getDeclaredMethods() 输出的是 Child 类中声明的所有方法,无论访问修饰符如何,但不包括从 Parent 类继承的方法。使用 getMethods() 输出的是 Child 类中所有的公共方法以及从 Parent 类继承下来的公共方法。
2025-04-07 01:11:49
272
原创 spring security的cors跨域
非简单请求在请求时会进行预检OPTIONS,但是他并不携带认证信息,所以他可能会被spring security拦住。如果使用 CorsFilter 配置的跨域,只要过滤器优先级高于 Spring Security 过滤器就不会有问题,反之同样出现问题。那我们要怎么解决呢,spring security在配置文件中为我们提供了解决方法,我们需要在里面进行配置,相当于重新编写他的cros filter,具体看以下代码,spring security的代码格式为3+版本。
2025-04-04 20:47:16
181
原创 Springsecurity的AuthenticationEntryPoint
那我们如何自定义返回结果呢,ExceptionTranslationFilter是security的全局异常过滤器,而AuthenticationEntryPoint被ExceptionTranslationFilter用来作为认证方案的入口。这个方法给了三个参数,request,response,以及认证异常类。也就是认证异常的话,被filter接收,并且交给。在使用spring security实现登录,如果登录失败,默认操作是。即当用户请求处理过程中遇见认证异常时,被异常处理器(
2025-03-25 22:57:43
220
原创 使用easycode快速生成crud
easycode是一个插件,它集成了mybatis-plus,MongoDB,以及普通生成方法,可以快速的生成controller,service,mapper,entity层。然后就可以使用了,我们在右边的数据库中可以选择要生成的表,并且右键选择easycode。在idea中的plugins中搜索easycode,并且进行下载。下面可以选择你要生成的内容,也可以去设置里面更改他的模板内容。使用generate code,选择你要生成的内容就好了。
2025-03-20 00:14:17
162
原创 spring-cache的使用
spring cache是spring为我们提供的缓存框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能。的意思就是这个方法的返回值,也就是user,我这里将user.id放入key中。他还有很多种使用方法,具体可以看官方文档。通过下面的方法,就可以将一个新增的内容,通过注解缓存起来。通过这个框架,就可以更容易的实现缓存操作了。是你的自定义内容,key的里面使用。下面是@CacheEvict的使用。下面是@CacheAble的使用。的意思是存到缓存中的前置名字。
2024-12-09 19:04:48
322
原创 公共字段填充,统一使用aspect切片处理
对于crud,增加和修改总会有同样的字段填充,那我们可不可以简化操作,使得不需要每次都填写同样的内容呢,在这一方面可以使用mvc的aop切片来进行操作。我们利用识别包加注解的方式来判断往哪些方法里面去赋值。通过下列方法,获取到对象的set方法,并且通过invoke进行注入。这个是获取到方法体的所有参数,我们默认第一个是我们想要的参数。值,以及注解的方法体参数,通过参数,获取到set方法,通过。具体内容通过注解反射,获取到注解的。这就是通过注解加反射操作的方法了。这个是获取到注解的value值。
2024-11-28 16:51:35
118
1
原创 jackson增加消息转换器,实现时间序列化
可以实现这种格式的转换,但是如果这种类型的字段很多,写起来就会很臃肿,那有没有什么办法可以解决这个问题,可以写一个,全部改变呢。就是增加消息转换器,springmvc 对于消息转换器使用的事jackson转换,我们可以重写mvc的方法。在我们进行java转换为json时,普通的LocalDateTime无法转换为正常格式,如果使用注解方式。这个转换器继承Jackson的ObjectMapper类,重写序列化,以及反序列化。通过这个方法,就可以实现整体时间类型的转换了。添加自己的转换器到里面。
2024-11-28 00:21:47
162
原创 springboot使用websocket
这就是springboot下的基础使用全双工通信的方式。websocket我这里就不解释了,直接开始怎么用吧。首先引入springboot为我们提供好的jar包。然后编写配置类,扫描并添加有。
2024-03-29 23:29:00
274
1
原创 sqlite3在c语言的使用
sqlite3是单个文件类型的小型数据库,他只有单单的10mb,所以经常用于嵌入式设备当中,那对于sqlite3如何与c语言进行联系呢,下文就来介绍一下。sqlite3本身就是c语言所写出来的数据库,所以我们直接它的源文件。在下载好压缩包后进行解压,我这里是linux系统,所以使用命令解压完成之后,我们将文件夹里面的和拿出来,他就是我们要使用的库函数。在创建新文件,我们要把头文件引入这样就可以使用sqlite3为我们提供的函数了。
2024-03-14 09:41:31
529
原创 在统信上添加c/c++环境 gtk环境
是ubuntu的包管理命令,APT可以自动下载,配置,安装二进制或者源代码格式的软 件包,因此简化了 Unix系统上管理软件的过程,apt-get命令一般需要root权限执行,所以一般跟着sudo命令。如果你写了一个库,不管是静态的还是动态的,要提供给第三方使用,那除了给人家库/头文件,最好也写一个pc文件,这样别人使用就方便很多,不用自己再手动写依赖了你哪些库,只需要敲一个。从上面的例子,可以看出,pkg-config给出了gtk的头文件和库的所有信息!安装好后,使用以下命令可以查看安装库的具体信息。
2024-03-06 09:46:26
629
原创 交换机是什么?ensp的二层交换机如何实现
交换机是用于计算机通信所使用的东西,他可以使得局域网之间的电脑相互联系,虽然他们使用同一个网段,但是他们并不会分之间的网速。而在拥有交换机之前,网桥显然是做他的工作,但网桥显然处理不了冲突域。交换机上面有很多端口,可以多个设备通过交换机进行通信,我们所熟知的局域网游戏,内网聊天,都是这样进行的。
2024-01-06 19:55:26
834
原创 ensp实现的ospf路由协议
连续的 OSPF 路由器组成的网络叫做 OSPF 域,域内 Router-ID 必须唯一,也就是在同一个域内不允许出现两台相同 Router-ID 的路由器。Router-ID 可以手动设置,也可以自动生成,常见的做法是把设备的 Router-ID 指定为设备的 Loopback 接口的 IP 地址。OSPF 定义了多种类型的 LSA ,这些 LSA 各有用途,最终目的是让路由器知道网络的拓扑结构以及网段信息,并计算出最短路径数,从而发现到达全网各个网段的路由。,他保存了你的线路连接的另一个路由器。
2023-11-29 21:20:10
482
原创 java提供的优先级队列
比较器,我们需要提供给他基于对象的属性,他会帮我们自动进行比较,我这里放入的是Vertex的distance属性。队列是数据结构的内容,而java封装的优先级队列,他是队列的升级,他可以让用户基于某个内容进行优先级的排序。对于优先级队列,我们可以把它用到很多地方,比如算最小距离。我们通过优先级队列可以实现dijkstra算法。通过优先级队列为我么找出当前堆的最小对象,我们在通过改变他的临边来进行dijkstra的实现。
2023-11-12 11:37:14
82
原创 python的async
一直不理解python的async是什么,今天来学习一下。本质上来说async还是一个单进程单线程的程序,它类似于。而它最主要的核心其实就是event loop,他需要每一个任务主动告诉event loop,我结束了,你可以切换下一个任务了,所以也不会有竞争关系。
2023-11-01 22:33:59
1798
1
原创 websocket的使用
HTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。
2023-10-31 19:52:45
109
1
原创 node.js的安装及其配置
node.js是一个引擎,运行js的引擎,所以他可以当一个服务器使用。而node.js提供了前端所需要的打包工具`npm``,在这里我们可以先去。npm是一个下载工具,他跟manven、gradle本质上一样,所以他要是卡,也需要去配置下载源,并且他下载下来的位置也要确定。这里面包含了node_modules,npm的运行程序,node的运行程序。在node_modules中,包含了node.js下载的第一个。下载好之后,就可以在你选择的文件夹里面看到,vue的cmd。这里我下载一个全局vue的脚手架。
2023-10-26 20:47:37
48
原创 vue.js的使用
vue.js有两种使用语法,和,选项式api对待新人更加友好,符合面向对象的味道,而组合式api更加的灵活,适合老人进行复杂vue单页面展示等操作。1.声明式渲染Vue 的核心功能是声明式渲染:通过扩展于标准 HTML 的模板语法,我们可以根据 JavaScript 的状态来描述 HTML 应该是什么样子的。当状态改变时,HTML 会自动更新。能在改变时触发更新的状态被认为是响应式的。在 Vue 中,响应式状态被保存在组件中。我们可以使用 data 组件选项来声明响应式状态,该选项应该是一个返回对象
2023-10-26 10:36:11
297
原创 springboot3重新学习
springboot就是一个脚手架,他为我们将一切基本封装好了,我们只需要创建。你可以在创建,也可以使用的窗口进行创建。
2023-10-23 22:47:15
70
原创 Spring mvc重新学习
spring mvc我感觉我是上辈子学的了,但是这个辈子再来学习一下吧,spring mvc很简单,就是spring为我们封装的三层frame,分别是model view controller,很简单,model是对象的实体,view就是渲染给浏览器的视图,而controller就是对于后台的控制了。ok,那就让咱们开始吧。
2023-10-23 16:48:21
42
原创 flask-restful
必须继承 raw必须实现format函数pass# 这里使用attribute将forms内容传入自定义fields。
2023-08-18 12:30:36
275
1
原创 表单验证wtform的使用
csrf是什么呢,实际上csrf是一种web攻击,csrf全称是(Cross-site request forgery)跨站请求伪造,也就是跨域问题。他是一种对网站的恶意利用。简单来说,就是攻击者通过一些技术手段,来使用已经有你的登录信息的浏览器进行访问并进行一系列操作。浏览器只能识别真实用户的浏览器,但并不能识别是不是真正的用户在操作浏览器。在flask_wtform的实体类中新增方法,= '123':raise ValidationError('密码错误')
2023-08-16 15:43:21
238
1
原创 Flask的使用
利用python的包安装工具pip下载wheel查看当前项目的环境1.2 项目构造statictemplatesapp.pymtv:app.py是启动项目的main方法,我们需要在里面声明flask的启动函数。1.4 wsgi就是说python提供了很多web架构,但是这些架构没有统一的和web server进行连接的接口,而wsgi做的就是统一规则的接口,python代码根据wsgi接口将内容放到web server上。app.config包含了flask的配置内容,他被存到一个集合当
2023-08-13 14:45:46
284
1
原创 初步了解nginx
nginx是一个高性能的http和反向代理服务器,也是一个smtp 邮箱协议服务器。nginx是一款轻量级的web服务器,而tomcat就是重量级的web服务器。这里我专门百度了一下,看了一看nginx与tomcat和apache server的区别。nginx和apache server是http协议的服务器。http server所关心的一定也是http协议相关的内容,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能。
2023-07-28 20:15:00
85
1
原创 正向代理和反向代理
下图就是典型的负载均衡使用,当我们的访问量上涨后,显然一个应用服务器不够用,但是我们的80接口已经被占用了,我们如何让用户走到第二个端口号上呢,利用代理服务器进行反向代理来实现再好不过了。客户端去访问内容,实际上访问的是服务器那边所设置的代理服务器,我们这边客户端以为就是本人,其实是他们那边的中介,中介进行内容的拿去后在发送给我们,实际上就是另一边的代理服务器。比如我们国内访问外网,我们通过一个正向代理服务器,请求放到代理服务器,让代理服务器去找google拿内容,然后再返回给我们内部。
2023-07-27 23:49:50
93
1
原创 git上传本地内容到远程仓库
接下来就可以使用pull了。使用了pull之后,本地和远程仓库同步,在使用push进行上传即可。首先使用bash here打开git的命令行。然后进入到你的项目当中,首先实例化你的项目。意思是声明origin/master 远程仓库和本地仓库合并默认的master本地仓库分支。是远程仓库的内容跟本地仓库的内容不同步,这时候就需要先爬取远程仓库的内容。如果这个时候提醒你没有额外声明一个分支branch的话。声明之后,我们可以创建一个将要上传的远程仓库。这个地方的网址你必须拥有这个仓库!
2023-05-26 19:44:32
315
1
原创 selenium自动化实现获取网站内容
我们可以试用selenium为我们提供的浏览器自动化。浏览器自动化就是利用浏览器内核进行不可视化内容获取,简单来说就是直接拿到网站加载完成后的代码。今天我想要从某些图片网站拿些图片,但发现某些网站动态渲染图片,并不能利用普通的requests来进行拿取内容,那我们该怎么办呢?剩下在利用beautifulSoup进行裁剪获取到你想要获取到的内容就好了!这里我们使用chrome和chromium。利用函数get进行访问。将浏览器配置进行注册。
2023-05-26 11:06:51
344
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人