自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(171)
  • 资源 (3)
  • 收藏
  • 关注

原创 第六章 Netty深入剖析之Netty编码

上一章节我们分析了netty的ByteToMessageDecoder,本章节我们分析netty的编码功能,其核心功能封装在父类MessageToByteEncoder中,本章节我们以案例驱动,下面为本章功能代码已经列出,我们已经学习过了netty的事件传播机制,故知道ChannelInboundHandler的调用顺序是从下到上,故先调用BizHandler再调用Encoder.BizHandler的writeAndFlush()方法,这里就是我们本章故事的起点。//我们要编码的对象public

2021-01-21 23:41:18 401 2

原创 第五章 Netty深入剖析之Netty解码

。在第四章中为止我们基本了解了netty的基本原理,但是到我们实际的业务场景之间还有一部分内容需要我们深入讨论一下,就是netty解码和编码器。在本讲中我们以ByteToMessageDecoder为切入点,展开一系列解码器的讨论。为呼应上下文我们有必要说一下,当客户端有消息发送过来后,我们eventLoop监听到事件后会触发读事件,进而调用pipeline 链中的 channelRead()回调函数,这也是我们本讲的入口函数。接下来我们就从ByteToMessageDecoder类的channelRe

2021-01-21 18:44:33 295 2

原创 第四章 Netty深入剖析之pipeline及事件传播机制

通过前面的章节我们可能注意到,我们有些细节没有将上下文调用关系,就直接看核心代码了,原因就是没有讲解netty pipeline的事件传播机制导致的,等学完本讲,我相信小伙伴们已经有能力自己试着理解之前缺失的内容了。目录pipeline的初始化过程添加channelHandler 和删除 channelHandlerinBound事件的传播outBound事件的传播异常的传播总结在讲解pipeline的事件传播机制之前我们先来看一下pipeline的初始化过程p.

2021-01-13 23:48:56 725 2

原创 第三章 Netty深入剖析之netty客户端新连接接入

我们从之前的篇文章已经学习到了服务器端在NIOEventLoop中是如何处理io事件的,我们本讲的开始也是这个地方,就是当客户端新连接接入后具体的执行流程,好话不多少我们先粘贴出我们代码分析的上下文NioEventLoop的run方法体的processSelectedKey()方法,这是我们本章故事的起点,就是当bossgroupEventLoop监听到OP_ACCEPT事件后的一系列步骤。private void processSelectedKey(SelectionKey k, Abstract

2021-01-13 12:35:32 509 3

原创 第二章 Netty深入剖析之NioEventLoop

继上一话中我们引申出来的NIOEventLoop,现在我们讲解代码实现,本话内容如下目录ThreadPerTaskExecutor创建线程选择器NioEventLoop的启动NioEventLoop执行检测IO事件处理IO事件reactor线程任务的执行ThreadPerTaskExecutor我们从NioEventLoopGroup的构造函数入手,进行分析首先构造一个执行器,并使用一个特定的线程工厂创建线程,我们去newDefaultThreadFactory方法中

2021-01-08 23:08:10 494 3

原创 第一章 Netty深入剖析之Netty服务端启动

最近一段时间在学习netty,但是不知道原理用起来总是觉得很懵逼,现在一系列的文章都是在大咖的讲解下结合我自己的理解总结出的一系列分析。汇总下来,有两个目的,一个目的是方便自己日后回顾快速复习,一是希望能对其他小伙伴产生帮助,如果是这样的话,也是级感欣慰,话不多说我们步入正题。今天这一话的基本目录如下:目录服务端channel的创建服务端channel 的初始化channel注册到selector服务端口的绑定我们建立在一个基本服务端代码上做分析,代码如下:public .

2021-01-08 15:00:52 1711 3

原创 spring mvc之视图及restful(下篇restful篇)

简介不知道你是否清楚我们controller中方法的参数如何来的,我们的方法返回值如何处理的呢,我们requestBody中的内容(xml,properties,json)如何转化为方法参数的呢,我们返回的bean如何转变为reponse body 中的特定格式的响应内容的呢?本文将解开谜团。大致流程图解参数处理和返回值处理通过上图,引入了几个相关概念。处理方法参数解析器 Hand...

2019-07-21 16:58:01 216

原创 spring mvc之视图及restful(上篇视图篇)

开篇本篇文章试图解释清楚一些我们比较模糊的springmvc概念,包括视图内容协商,restful内容协商,以及HandlerMethodReturnValueHandler,HandlerMethodReturnValueHandler也就是handler method 入参的处理和返回值得处理。谢谢大家。考虑内容篇幅过于臃肿,分为上下两篇,上篇spring mvc之视图,下篇restful...

2019-07-21 11:10:12 459

原创 spring boot 之application

SpringApplication 准备阶段配置 Spring Boot Bean 源通过 Java 配置 Class 或 XML 上下文配置文件集合,用于 Spring Boot BeanDefinitionLoader 读取 ,并且将配置源解析加载为Spring Bean 定义推断 Web 应用类型根据当前应用 ClassPath 中是否存在相关实现类来推断 Web 应...

2019-07-20 16:11:48 317

原创 统一日志

日志接口日志接口有两种,一种是java 标准的日志接口,另一种是slf4j日志接口。这是两种接口标准的定义。我们需要使用分别的实现去完成真正的日志输出。以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;给系统里面导入slf4j的jar和实现类的先关调用的实现但是我们的应用程序会引入别的框架,而他们的日志实现又是千差万别,比如...

2019-07-09 16:25:53 457

原创 spring security 记住我功能的实现原理

记住我大致思路spring security 给我们提供了两种实现记住我的机制:1 创建一个cookie,将用户名和密码等相关信息编码后放入,带下一个session时进行用户名密码的读取,并同数据库中的username,password进行匹配。2 基于上面的实现方式有一个缺点,就是用户敏感信息暴露,为了解决这个我们通过一张凭证,在初次登陆后,我们生成一张凭证,cookie中存一份,...

2019-07-01 11:18:31 1847

原创 spring security 认证与授权下篇

上篇回顾匿名用户经过匿名访问过滤器 将会在contextHolder中存储一个匿名认证,经过异常处理拦截器,经过权限校验拦截器,由于是匿名认证所以权限管理器通过投票器校验失败,抛出权限校验异常,异常处理拦截器处理调用认证切入点重定向到/login 路径下,如果您已经理解了就可以在继续往下看了。如果没有还请您进行断点调试匿名访问经过的第四个待分析的拦截器DefaultLoginPag...

2019-06-30 23:22:44 719

原创 spring security 认证与授权流程上篇

spring security contextspring security context 谈到他我们就得谈一谈他的作用,生命周期接口如下public interface SecurityContext extends Serializable { Authentication getAuthentication(); void setAuthentication(A...

2019-06-30 21:38:54 2482

原创 spring security 认知

spring ,spring security ,servlet 的整合原理我们知道,spring对于自定义命名空间的解析是交给 类路径下的META-INF\spring.handlers文件中的handler进行解析,我们的spring security 命名空间的解析交给了SecurityNamespaceHandler解析器,进行解析处理为beanDefind。此时我们就将相关bean放...

2019-06-30 21:04:33 142

原创 支付系统中日志的具体落地,实现快速发现,快速报警,指标分析

适用于通用服务日志(如nginx/redis/mysql日志)之外的所有线上落盘日志,包括服务端业务日志,BI日志,移动端APP日志。:要求所有新业务模块以及深度重构的模块实施日志规范,鼓励现有业务模块通过日志组件替换或改造来实施标准日志规范l 日志基础分类l 日志存储与拆分l 日志内容基础要求l 不允许记录的日志l 日志内容及格式要求格式示例: [INFO][2015-12-02T00:00:07.099+0800][格式说明:和之间用列表之间用**双竖线(||)**分隔,且各个域中不允许出现空格。

2023-12-13 17:31:47 903

原创 一文看懂支付前链路流程

首先支付流程讲究的就是快,还有就是订单的冲入,我们不能说一笔交易订单进来都加一个分布式锁去解决,所以我们目前常用的做法就是一个订单进来,首先落库,如果落库失败,并且是主键重复的话,那么调用查询接口,查询订单,进行原单比对,比对无误的话,可以接着走后续的流程。这样做是比较常见的做法。

2023-12-13 17:21:18 1176

原创 在线程能否获取父线程的ThreadLocal里面的值,肯定点,能

子线程如果获取父线程的threadLocal变量

2023-06-09 17:23:43 244

原创 关于mybatis 中缓存要说点东西

首先mybatis 中支持一级缓存和二级缓存,默认一级缓存是开启的,二级缓存是没有开启的,而且一级缓存是在Executor 实例化的时候创建并赋值的,而executor的创建是在sqlsession 创建时实例化的,也就是她的声明周期始于sqlsession,我们知道 默认的sqlsession 是线程不安全的,所以我们基本都是单线程去访问sqlsession,所以缓存也就没有并发读写的问题,主要是考虑内存溢出的问题。如果是这种情况的话,就需要替换mybatis默认的cache了。

2023-06-01 00:32:25 127

原创 关于自动映射在项目中的具体落地(dozer)

项目开发过程中,经常需要编写model之间的转换,最常见的有:等操作,故为了简化代码的开发工作,需要简化对象属性之间复制的步骤,目前有两种解决方案,一种是定义converter 使用手写或插件生成,对各个属性进行set方法的设置。IDEA提供GenerateAllSetter插件,可帮助我们快速生成上述代码。另一中方案是使用自动映射框架进行属性的自动设置,基本有两种方向,一种是基于反射进行的,另一中是进行预编译生成相关代码,当然了 后一种在项目运行中效率是最高的。但是我们下面讲解的具体落地 使用的是基于反射

2023-05-29 12:51:56 455

原创 mybatis 在当前项目中的实际应用及自定义分页的实现

mybatis 在当前项目中的实际应用及自定义分页的实现

2023-05-25 10:31:05 1521 2

原创 论 spring 的三级缓存

spring三级缓存解决循环依赖问题

2023-05-09 13:58:15 1046

原创 java 八股文

java 八股文

2022-12-07 20:03:16 1544 1

原创 Mybatis 源码分析

mybatis 的配置文件解析的能力是交给了XMLCconfigBuilder 去解析的创建一个 configuration 对象baseBuilder 中 ,类型注册器 和 别名注册器等,其实都是Configuration 的成员变量typeAliasRegistry 别名注册器Configuration 在构造的之后会默认添加一些类的别名到别名注册器中xmlconfigbuilder 的成员变量 及继承关系configuration 的成员变量MetaClass 及 reflector关于

2022-11-23 11:19:56 281

原创 ThreadLocal学习

首先,每个Thread 里面都有一个成员 ThreadLocal.ThreadLocalMap 类型的成员变量看到这里我们应该清楚了 ThreadLocal.ThreadLocalMap 的数据结构,如下图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YeVbUiSu-1668950584616)(https://weijinhao.gitee.io/markdown-picture/ThreadLocal原理图.png)]

2022-11-20 21:24:10 265

原创 java 容器

ArrayList 的默认初始化容量为0,首次添加元素时,创建容量为(10 || 添加集合大小) ,以后每次扩容的话,为当前容量的1.5倍。

2022-11-20 21:22:22 296

原创 css笔记

css3 基础内容

2022-11-01 20:30:34 1065

原创 mysql 随笔

mysql数据库是系统数据库,包含存储MySQL服务器运行时所需信息的表。授予系统表GrantSystemTables对象信息系统表ObjectInformationSystemTables记录系统表LogSystemTables服务器端帮助系统表Server-SideHelpSystemTables时区系统表TimeZoneSystemTables复制系统表ReplicationSystemTables。...

2022-07-21 14:15:20 389

原创 mybatis 源码总结

mybatis 的一些总结XMLConfigBuildermybatis 的配置文件解析的能力是交给了XMLCconfigBuilder 去解析的public SqlSessionFactory build(Reader reader, String environment, Properties properties) { try { XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, prope

2022-05-17 23:59:33 228

原创 spring security oauth 源码解析(jwt角度)

spring security oauth jwt

2022-04-24 21:40:57 918 1

原创 支付系统中如何应用加密方式的

支付系统中如何应用加密方式的加密方式分为 对称加密 和非对称加密。支付系统中主要使用 非对称加密。非对称加密在支付系统中的具体应用是 消息的加解密(公钥加密,私钥解密), 消息 签名 和验签(私钥 加签名,公钥 验证签名)。当然 消息并不一定非要是加密的。关于加密算法的具体原理,大家可以参见这篇文章。一文彻底搞懂加密、数字签名和数字证书再来看看支付宝中 加密的具体实现 // 只有新接口和设置密钥才能支持加密,我们按到只有我们设置了请求参数中要求加密才会加密 if (

2022-02-18 16:32:52 5198

原创 mysql 事务隔离级别深究

mysql 事务隔离级别深究事务隔离级别读未提交读已提交可重复读串行化以上隔离级别的实现完全是基于 mysql提供的 锁 以及MVCC 机制 去实现的。mysql中的锁 分别有 共享锁 和 排它锁 还有意向锁 。关于意向锁的一点解释上面的关系其实说明的是意向锁和表级别共享锁和表级别排他锁之间的关系(最早以为这里的X、S是行级锁,所以看的云里雾里)。举个栗子:假如表上面已经被加了意向排他锁(IX),证明此时有事务在修改表中的具体某行的数据,那么对应行的数据这时可能被加了

2022-02-09 16:39:11 948 2

原创 mybatis 使用指南(全)

maven引入generator插件关于 mybatis 的generator 的代码自动生成,官网为我们提供了多种整合方式,具体使用那个整合方式,视我们具体情况决定,这里我们采用 maven插件的形式,关于插件配置属性的参数,可以点进maven 连接中查看具体参数配置。说明参考官网说明。 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybat

2022-01-14 18:43:56 2046

原创 记当前项目中国际化的做法

记当前项目中国际化的做法spring 为我们提供了根据Locale 通过code 获取国际化的操作,所以我们在此基础上进行国际化的项目应用LocaleResolver MessageResouce首先配置一个LocaleResolver 用来根据环境解析 Locale @Bean public LocaleResolver localeResolver() { // 通过浏览器头部的语言信息来进行多语言选择 AcceptHeaderLocaleResol

2022-01-11 15:44:35 489

原创 雪花算法生成全局id

雪花算法生成全局id算法原理SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:SnowFlake可以保证:所有生成的id按时间趋势递增整个分布式系统内不会产生重复id(因为有datacenterId和workerId来做区分)算法实现package com.kaffatech.mocha.dsuite.id.manager.impl;import java.util.List;import java.util.Set;import java.ut

2021-12-16 16:48:20 287

原创 雪花算法生成全局id

雪花算法生成全局id算法原理SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:SnowFlake可以保证:所有生成的id按时间趋势递增整个分布式系统内不会产生重复id(因为有datacenterId和workerId来做区分)算法实现package com.kaffatech.mocha.dsuite.id.manager.impl;import java.util.List;import java.util.Set;import java.ut

2021-12-16 16:41:42 223

原创 Spring Cloud Ribbon 原理解析

Spring Cloud Ribbon 原理解析commons的视角下看待Ribbonspring cloud 为我们提供了 负载均衡的统一客户端接口,commons 模块下。public interface LoadBalancerClient extends ServiceInstanceChooser { <T> T execute(String serviceId, LoadBalancerRequest<T> request) throws IOExcept

2021-12-15 16:46:41 137

原创 Spring Cloud Ribbon 原理解析

Spring Cloud Ribbon 原理解析commons的视角下看待Ribbonspring cloud 为我们提供了 负载均衡的统一客户端接口],commons 模块下。public interface LoadBalancerClient extends ServiceInstanceChooser { <T> T execute(String serviceId, LoadBalancerRequest<T> request) throws IOExcep

2021-12-15 14:51:29 353

原创 全局唯一id及业务码生成工具

雪花算法生成全局id算法原理SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:SnowFlake可以保证:所有生成的id按时间趋势递增整个分布式系统内不会产生重复id(因为有datacenterId和workerId来做区分)算法实现package com.kaffatech.mocha.dsuite.id.manager.impl;import java.util.List;import java.util.Set;import java.ut

2021-11-25 19:56:59 528

原创 mybatis总结

mybatis总结编程走的坑由于没有指定关联的 id,导致只查询出一对多的第一个元素<resultMap id="blogResult" type="Blog"> <id property="id" column="blog_id" /> <result property="title" column="blog_title"/> <association property="author" javaType="Author"> &l

2021-09-06 00:03:13 120

原创 ResetTemplate 使用样例

ResetTemplate 使用样例说明: 具体的注意事项已经在放在了注释中了,请读者自行查看@SpringBootTestclass RestApplicationTests { @Autowired private RestTemplate restTemplate; private String username = "weijinhao"; private String password = "123456"; /** * 测试get方法

2021-09-06 00:00:44 582

converter实现

自定义类型转化器的实现

2023-05-29

mysql ubuntu版

这是mysql的deb版,详细的安装步骤我已经上传到了我的博客中,经参见http://blog.csdn.net/c1523456/article/details/79444578

2018-03-13

vim的自定义配置文件

下载解压后,里面有一个脚本,直接sudo运行脚本即可,他会给你导配置文件和插件,这样的话你就可以有和ide差不多的功能了

2018-03-13

springAOP所依赖的jar包

springAOP所依赖的jar包:aopalliance-1.0,aspectj-1.7.3,aspectjweaver-1.7.4,cglib-nodep-2.1_3

2016-10-22

空空如也

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

TA关注的人

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