- 博客(63)
- 资源 (2)
- 收藏
- 关注
原创 Netty之通道生命周期
输出结果,如下:handlerAdded()→channelRegistered()→channelActive()→数据传输的入站回调(channelRead()→channelReadComplete())→channelInactive()→channelUnregistered()→handlerRemoved()定义入站处理器InboundHandlerDemo,这个类继承ChannelInboundHandlerAdapter。将这个处理器添加到通道pipeline中。
2024-10-18 11:20:20 180 1
原创 Spring Security
这个类中没有多余的逻辑,都是HttpSecurity内部配置类中重写的方法执行,HttypSecurit的内部配置类就是我们通过HttpSecurity点出来的属性配置,比如:CsrfConfigurer,构建的时候,传入的就是上层配置类的HttpSecurity。,保存了各个SecurtiyConfigure初始化构建的HttpSecurity,httpSecurity经过build后返回的DefaultSecurityFilterChain对象,这个对象中包含的匹配路径,对应的过滤器集合。
2024-05-30 16:19:00 793
原创 Netty-NioServerSocketChannel与NioSocketChannel
NioServerSocketChannel与NioSocketChannel
2024-04-17 16:53:29 798
原创 Spring Security
主要逻辑是根据请求路径匹配到对应的SecurityFilterChain,然后调用SecurityFilterChain中的过滤器,完成逻辑处理。Spring Security是spring框架中的安全框架。做一些记录方便回顾。作为Servlet的filter实现。在请求到达servlet之前,做过滤处理。类里面有个匹配规则,只有符合这个规则的请求才会调用类里面的过滤器处理。过滤逻辑的主要实现。对应不同的请求,有不同的功率器处理。这个过滤器,主要职责是将业务处理,交给它的属性类。作为过滤器业务逻辑的实现。
2024-03-08 18:31:22 399
原创 Netty-ChannelHandle的业务处理
AbstractChannelHandlerContext是一个抽象类,实现ChannelHandlerContext。在这个抽象类里面,fire开头方法和invoke开头方法。1. fire开头方法,实现也是调用invoke开头方法。只不过入参的channelHandlerContext通过方法findContextInbound查询下一个入站或者出站的方法。2. invoke开头方法是静态方法,执行对应事件的方法。
2024-01-30 15:00:45 830
原创 Springboot之AOP的执行顺序
2.目标方法不抛异常:Around before–>Before–>目标方法–>AfterReturning–>After–>Around After。1.目标方法抛异常:Around before–>Before–>目标方法–>AfterThrowing–>After。4.多个切面拦截同一个方法,受@Order排序影响。目标方法执行之前,和执行之后的拦截顺序看上面的实验结果。获取AopService,调用testMethod方法。3.同一个切面内的多个同一类型的拦截方法。自动开启了aop的配置。
2023-10-09 10:03:02 388
原创 Git常用指令记录
Git常用指令记录查看远程提交分支 git remote show origin查看当前分支 git branch拉取指定分支的代码 git clone -b feature/删除本地分支 git branch -d [branch-name]切换分支 git checkout [branch-name]删除远程分支 git push origin --delete初始化代码仓库 git init提交 git commit -m推送 git push
2022-05-20 18:35:22 124
原创 IO模型和线程模型了解
IO模型Java层面的IO模型 我们知道BIO在高并发的情况下会出现性能的急剧下降的问题,甚至会由于创建过多的线程而导致系统OOM。BIO的性能问题一直被开发者诟病,所幸的是JDK1.4推出NIO,NIO基本解决了BIO的性能问题,是目前实现java高性能服务器的基础架构。BIONIOAIO操作系统层面的IO模型网络IO模型原作者地址阻塞IO模型 进程(线程)阻塞与recvfrom系统调用。假设我们要进行socekt读取数据。我们必然会调用read方法,此时这个read方法就会触发操
2022-04-02 09:03:11 480
原创 消息中间件
消息队列已经逐渐成为企业应用系统内部通信的核心手段,它具有低耦合,可靠投递,广播,流程控制,最终一致性等一系列功能。 消息队列是指利用高效可靠的消息传递机制 进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。RabbitMQRocketMQKafka...
2022-03-31 18:55:18 1588
原创 缓存的使用
缓存的使用 缓存的使用,主要是为了提高性能。redisguava缓存问题缓存穿透 大多数互联网应用中,缓存的使用方式如下图所示:当业务系统发起某一个查询请求时,首先判断缓存中是否有改数据。如果缓存中存在,则直接返回数据。如果缓存中不存在,则再查询数据库,保存到缓存,返回数据给客户端。缓存穿透: 当业务系统发起查询时,按照上述流程,首先会前往缓存中查询,由于缓存中不存在,然后前往数据库中查询。由于改数据压根不存在,因此数据库也返回空。这就是缓存穿透。 综上所述,大量访问业
2022-03-30 17:19:47 2798
原创 Mysql热点问题总结
Mysql热点问题总结索引相关为什么索引要存放到硬盘上? 数据库有两种存储介质。硬盘,内存。内存是临时存储,断电数据就会丢失。硬盘相当于永久存储介质,所以存储在硬盘上。 我们通过索引来查找数据的时候,需要计算磁盘 I/O 次数,磁盘 I/O 次数越多,越耗时。所以索引的数据结构,要尽量减少磁盘IO的操作次数。索引数据结构?平衡二叉树为什么不行? 我们知道,数据查询时间依赖磁盘 I/O 的次数。对于平衡二叉树来说,没访问一个节点,就需要进行一次磁盘 I/O 操作。虽然平衡二叉树比较的效率高
2022-03-25 18:41:12 1553
原创 Mysql数据库操作简介
mysql操作简介profiling MySQL 收集在 SQL 执行时所使用的资源情况。检查是否开启select @@profiling;如果没有开启,可以通过以下指令开启set profiling=1;执行自己的sql语句select * from stu_classrecord_2022 通过以下指令查看所执行sql的资源使用情况查看当前会话所产生的的所有profiles show profiles查看自己刚才执行sql的profileshow pr
2022-03-24 16:13:56 3003
原创 java中<<,>> 与 <<<,>>>
原码,反码,补码 计算机底层是以二进制表示的,计算机可以用原码 ,反码, 补码这三种编码方式表示一个数。对于正数,三种编码方式都相同。对于负数,三种编码方式对应的二进制是完全不同的。原码是我们可以直接识别的,为什么还要用反码和补码呢? 对于计算机,加减乘除已经是最基础的运算。要设计的尽量简单,计算机辨别符号位显然会让计算机的基础电路设计变得十分复杂,于是人们想出了将符号位也参与运算的方法。 根据运算法则减去一个正数等于加上一个负数,即:1-1=1+(-1)=0;所以机器可以只有加法而没有减法,
2021-12-29 16:43:49 1297 1
原创 idea-查看接口关系图
有时候为了梳理接口调用。需要了解接口的实现关系然后展示如下:接着右键接口,选择Show ImplementationsCtrl + A全选,展示:
2021-12-08 09:53:35 1999
原创 jdk-Object类
简言:Object是所有类的父类,经常会用到hashcode,equals方法。对这个父类也有一点好奇,就简单看看Object,做下记录。基于jdk1.8,通过目录可以看到Object属于java.lang包下的类。整体类通过快捷方式Alt + 7,可以查看类的整体结构package java.lang;/** * Class {@code Object} is the root of the class hierarchy. * Every class has {@code Objec
2021-11-17 20:38:54 412
原创 Mybatis-基础
简介查看Mybatis官方文档:https://mybatis.org/mybatis-3/zh/index.htmlMybatis是一款优秀的持久层框架,它支持自定义SQL,存储过程以及高级映射。Mybatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。Mybatis可以通过简单的XML或者注解来配置和映射原始类型,接口和java POJO为数据库中的记录。Mybatis SQL 映射框架使得一个面向对象构建的应用程序去访问一个关系型数据库变得更容易。MyBatis使用XM
2021-11-11 14:16:31 1286
原创 前端页面读取ukey
1.引入signocx.cab2.前端调用方法<html><head><title>signseal</title><script type="text/javascript">function readseal(){ alert("readseal"); var obj = window.document.getElementById("ocx"); var seal; var sealInfo = obj.ReadSe
2021-11-09 17:39:20 3983
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人