Java
_jan_
这个作者很懒,什么都没留下…
展开
-
Redisson 3.11.3 - redis协议处理器(使用netty-client和redis-server交互)
.public class RedisChannelInitializer extends ChannelInitializer<Channel> { public enum Type {PUBSUB, PLAIN} // .... @Override protected void initChannel(Channel ch) throws Exception { initSsl(config, ch); // 初始化原创 2021-04-02 19:34:58 · 384 阅读 · 0 评论 -
Redisson 3.11.3 - AsyncSemaphore
.import lombok.extern.slf4j.Slf4j;import org.redisson.pubsub.AsyncSemaphore;@Slf4jpublic class AsyncSemaphoreTest { /** * <pre> * 1、获取锁 * 1、有锁资源 * 1、直接执行回调 * 2、没有锁资源 *原创 2021-04-01 23:17:58 · 505 阅读 · 1 评论 -
Redisson 3.11.3 - Promise
.import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.redisson.client.RedisConnectionException;import org.redisson.misc.RPromise;import org.redisson.misc.RedissonPromise;import java.util.function.BiConsumer;@Slf4jpublic class Redisso原创 2021-04-01 23:17:02 · 824 阅读 · 0 评论 -
spring-cloud Edgware.SR6 之 spring config server 1.4.7 (配置中心)配置机制、开放的接口(控制器)
org.springframework.cloud.config.server.environment.EnvironmentControllerorg.springframework.cloud.config.server.resource.ResourceController.EnvironmentController@RestController@RequestMapping(method = RequestMethod.GET, path = "${spring.cloud.con原创 2021-03-18 18:15:45 · 243 阅读 · 0 评论 -
spring-cloud Edgware.SR6 之 netflix eureka server 1.4.7(注册中心) 配置机制、开放的接口(api处理器)
./** * 扫描含有 @Path、@Provider 注解的类列表 * <pre> * * * @see com.netflix.discovery.provider.DiscoveryJerseyProvider * @see com.netflix.eureka.resources.InstancesResource * 处理 http://127.0.0.1:8761/eureka/instances 类请求 * @see com.netflix.eure原创 2021-03-18 18:08:28 · 251 阅读 · 1 评论 -
spring-cloud Edgware.SR6 之 netflix eureka client 1.4.7 (注册中心)可调用的接口列表
com.netflix.discovery.shared.transport.jersey.JerseyApplicationClient./** * <pre> * @see com.netflix.discovery.shared.transport.jersey.JerseyApplicationClient * * @see com.netflix.discovery.shared.transport.jersey.JerseyApplicationClient#ge.原创 2021-03-18 17:38:58 · 158 阅读 · 0 评论 -
sharding sphere 4.1.1 - key生成器
内置有两种:UUID、SNOWFLAKE./** */@Slf4jpublic class KeyGeneratorTest { /** * @see org.apache.shardingsphere.core.rule.TableRule#TableRule */ public static void main(String[] args) throws Exception { testGenerateKey("UUID");原创 2021-03-16 11:09:16 · 599 阅读 · 0 评论 -
sharding sphere 4.1.1 - “路由装饰器RouteDecorator-主从” 之 “控制强制读主库”
.MasterVisitedManager.setMasterVisited();org.apache.shardingsphere.masterslave.route.engine.MasterSlaveRouteDecorator#decorateorg.apache.shardingsphere.masterslave.route.engine.impl.MasterSlaveDataSourceRouter#routeorg.apache.shardingsphere.mastersl原创 2021-03-13 14:19:21 · 504 阅读 · 0 评论 -
sharding sphere 4.1.1 - 各种表达式的解析器(居于groovy)
1、使用groovy引擎进行处理./** * @see org.apache.shardingsphere.core.strategy.route.ShardingStrategyFactory */@Slf4jpublic class ExpressionParserTest { /** * @param args * @throws Exception */ public static void main(String[] args) t原创 2021-03-13 14:14:23 · 1554 阅读 · 0 评论 -
sharding sphere 4.1.1 - 参数重写器 之 “分片参数重写器”、“加密参数重写器”
.分片参数重写器org.apache.shardingsphere.sharding.rewrite.parameter.ShardingParameterRewriterBuilderpublic final class ShardingParameterRewriterBuilder implements ParameterRewriterBuilder { private final ShardingRule shardingRule; priva.原创 2021-03-13 14:10:58 · 330 阅读 · 0 评论 -
sharding sphere 4.1.1 - “重写装饰器SQLRewriteContextDecorator-加密”
..原创 2021-03-12 16:09:41 · 212 阅读 · 0 评论 -
sharding sphere 4.1.1 - 使用Antlr解析sql语句
.public class AntlrTest { /** * @param args * @throws Exception * @see org.apache.shardingsphere.sql.parser.core.parser.SQLParserFactory#createSQLParser(java.lang.String, org.apache.shardingsphere.sql.parser.spi.SQLParserConfiguration原创 2021-03-12 15:46:18 · 985 阅读 · 1 评论 -
sharding sphere 4.1.1 - “重写装饰器SQLRewriteContextDecorator-分片”
1、遍历《参数重写器》、对参数进行重写2、注册《token生成器》到《重写上下文对象》.org.apache.shardingsphere.sharding.rewrite.context.ShardingSQLRewriteContextDecoratorpublic final class ShardingSQLRewriteContextDecorator implements SQLRewriteContextDecorator<ShardingRule>, Rout.原创 2021-03-12 15:36:51 · 232 阅读 · 0 评论 -
sharding sphere 4.1.1 - 概述 之 “SQL路由器DataNodeRouter、SQL重写器SQLRewriteEntry”
.1、路由 1、调用spi实现RoutingHook接口的bean的start方法 2、调用解析引擎解析出SQLStatement 3、创建SQLStatementContext 4、遍历《装饰器》列表 1、org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator 1、解析分表条件 ShardingConditions 2原创 2021-03-12 14:44:13 · 434 阅读 · 0 评论 -
sharding sphere 4.1.1 - “路由装饰器RouteDecorator-主从”
..原创 2021-03-12 14:31:01 · 140 阅读 · 0 评论 -
sharding sphere 4.1.1 - “路由装饰器RouteDecorator-分片” 之 “分片路由-引擎”
..原创 2021-03-12 13:18:40 · 532 阅读 · 0 评论 -
sharding sphere 4.1.1 - “路由装饰器RouteDecorator-分片” 之 “分片条件-引擎”
.InsertClauseShardingConditionEngine(处理insert语句)// org.apache.shardingsphere.sharding.route.engine.condition.engine.InsertClauseShardingConditionEngine#createShardingConditionspublic final class InsertClauseShardingConditionEngine { private原创 2021-03-12 13:15:34 · 369 阅读 · 0 评论 -
sharding sphere 4.1.1 - “SQL路由DataNodeRouter” 之 调用“sql解析引擎、路由装饰器RouteDecorator-xxx”
// org.apache.shardingsphere.underlying.route.DataNodeRouter#routepublic final class DataNodeRouter { // .... /** */ public RouteContext route(final String sql, final List<Object> parameters, final boolean useCache) { .原创 2021-03-12 10:51:33 · 178 阅读 · 0 评论 -
sharding sphere 4.1.1 - “路由装饰器RouteDecorator-分片” 之 调用“分片条件-引擎、分片路由-引擎”
// org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator#decoratepublic RouteContext decorate(final RouteContext routeContext, final ShardingSphereMetaData metaData, final ShardingRule shardingRule, final ConfigurationProperties properti.原创 2021-03-12 10:27:04 · 661 阅读 · 0 评论 -
sharding sphere 4.1.1 - 支持的分片策略
// org.apache.shardingsphere.core.strategy.route.ShardingStrategyFactorypublic final class ShardingStrategyFactory { /** * Create sharding algorithm. * * @param shardingStrategyConfig sharding strategy configuration * @retur.原创 2021-03-12 10:13:04 · 504 阅读 · 0 评论 -
xxl-job (定时任务平台) 2.2.0 源码片段 - Executor的接口列表
1、"/beat",用途:用于检查心跳;直接返回成功2、"/idleBeat",用途:用于检查忙碌状态;忙碌中(执行任务中,或者队列中有数据)3、"/run",用途:用于执行任务;4、"/kill",用途:用于中断线程;5、"/log",用途:用于读取日志;.// com.xxl.job.core.server.EmbedServer.EmbedHttpServerHandler#processprivate Object process(HttpMethod httpMethod, S原创 2021-03-02 09:58:18 · 528 阅读 · 0 评论 -
xxl-job (定时任务平台) 2.3.1 源码片段 - Scheduler执行调度
1、开启事务、开启《悲观锁》2、扫描xxl_job_info中trigger_next_time符合条件的记录(后期提前5秒记录,数量为(快线程数量+慢线程数量)*20)3、把符合提交的任务放入异步线程,http通知《执行器》4、更新xxl_job_info中的trigger_next_time,即:更新下次执行时间5、提交事务.扫描符合的任务// com.xxl.job.admin.core.thread.JobScheduleHelper#startpublic void sta原创 2021-02-24 09:59:45 · 730 阅读 · 0 评论 -
xxl-job (定时任务平台) 2.3.1 源码片段 - Scheduler接受注册
.原创 2021-02-23 19:07:42 · 496 阅读 · 0 评论 -
spring boot 1.5.3 源代码片段 - 配置Tomcat(TomcatEmbeddedServletContainerFactory)
机制:1、在初始化TomcatEmbeddedServletContainerFactory的时候,会被 EmbeddedServletContainerCustomizerBeanPostProcessor#postProcessBeforeInitialization(...) 拦截2、EmbeddedServletContainerCustomizerBeanPostProcessor 会扫描实现EmbeddedServletContainerCustomizer接口的bean,并调用cust原创 2021-02-23 15:05:34 · 1570 阅读 · 0 评论 -
mybatis3.4.1源代码 - 内置的Executor
org.apache.ibatis.executor.BatchExecutor 用于批量执行org.apache.ibatis.executor.ReuseExecutor 用于复用Statementorg.apache.ibatis.executor.CachingExecutor 用于缓存控制(由类上的 @CacheNamespace 或者 @CacheNamespaceRef 控制)org.apache.ibatis.executor.SimpleExecutor 用于简单执行(默认)...原创 2021-02-08 11:04:01 · 205 阅读 · 0 评论 -
netty3.6.6 源码片段 - sink接口
netty3.6.6的DefaultChannelPipeline对象内有依赖个sink。org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink/** * Receives and processes the terminal downstream {@link ChannelEvent}s. * <p> * A {@link ChannelSink} is an internal component...原创 2021-02-07 18:21:43 · 143 阅读 · 0 评论 -
mybatis3.4.1源代码 - 插件的安装、执行
插件安装器public class InterceptorChain { private final List<Interceptor> interceptors = new ArrayList<Interceptor>(); public Object pluginAll(Object target) { // 1.target === Executor for (Interceptor interceptor : inte原创 2021-02-06 10:54:52 · 125 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码片段 - 内置的Filter
// org.apache.dubbo.rpc.Filter// dubbo-config/dubbo-config-api/META-INF/services/org.apache.dubbo.rpc.Filter// mockfilter=org.apache.dubbo.config.mock.MockFilter // 支持unknown;//// dubbo-filter/dubbo-filter-cache/META-INF/dubbo/internal/org.apa...原创 2021-02-05 17:37:21 · 224 阅读 · 0 评论 -
mybatis-plus 3.4.0 - SqlSource生成器
// return Stream.of(// new Insert(),// new Delete(),// new DeleteByMap(),// new DeleteById(),// new DeleteBatchByIds(),// new Update(),// new UpdateById(),// new SelectById(),// .原创 2021-02-05 15:51:14 · 258 阅读 · 0 评论 -
mybatis-plus 3.4.0 - 通过lambda表达式解析获取字段名
package cn.java.demo.mybatis_plus.internal;import cn.java.demo.mybatis_plus.mapper.entity.OrderEntity;import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache;import com.baomidou.myb...原创 2021-02-05 15:44:05 · 4033 阅读 · 2 评论 -
spring4.3.6源代码 - tx - 如何支持@Transactional注解下的数据库操作使用同一个连接
1、居于TransactionSynchronizationManager.getResource(this.dataSource) 从线程上下文resources获取ConnectionHolder对象spring-tx(@Transactional)// org.springframework.transaction.support.AbstractPlatformTransactionManager#getTransactionpublic final Transacti...原创 2021-02-05 11:59:58 · 591 阅读 · 0 评论 -
mybatis3.4.1源代码 - ReturnType、ResultMap.getType()
ReturnType == ResultMap.getType()1、实例类2、list、map的value值类型package cn.java.demo.ibatis.internal.resolve_return_type;import java.util.ArrayList;import java.util.List;import java.util.Map;public interface UserMapper { // --- void void me.原创 2021-02-04 14:50:05 · 203 阅读 · 0 评论 -
mybatis3.4.1源代码 - MetaObject、MetaClass
MetaObject:用于访问对象信息,如:读取对象属性、设置对象属性MetaClass:用于访问类信息,如:获取gettter方法、获取setter方法package cn.java.demo.ibatis.internal;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.apache.ibatis.executor.resultset.ResultSetWrapper;import org.apa...原创 2021-02-04 13:17:58 · 244 阅读 · 1 评论 -
mybatis3.4.1源代码 - 对 <if>、${} 等标签的擦除
org.apache.ibatis.scripting.xmltags.DynamicSqlSourceorg.apache.ibatis.scripting.xmltags.TrimSqlNodeorg.apache.ibatis.scripting.xmltags.IfSqlNodeorg.apache.ibatis.scripting.xmltags.ForEachSqlNode。。。。package cn.java.demo.ibatis.internal.sqlnode;.原创 2021-02-04 11:04:49 · 259 阅读 · 0 评论 -
mybatis3.4.1源代码 - 参数处理器、结果集处理器
绑定参数org.apache.ibatis.scripting.defaults.DefaultParameterHandler#setParameterspublic void setParameters(PreparedStatement ps) { ErrorContext.instance().activity("setting parameters").object(mappedStatement.getParameterMap().getId()); List...原创 2021-02-03 19:31:07 · 230 阅读 · 1 评论 -
mybatis3.4.1源代码 - ognl
${...} 是居于ognl表达式替换的package cn.java.demo.ibatis.internal.ognl;import lombok.extern.slf4j.Slf4j;import org.apache.ibatis.ognl.OgnlContext;import org.apache.ibatis.ognl.OgnlException;import org.apache.ibatis.ognl.OgnlRuntime;import org.apache.ibatis原创 2021-02-03 19:01:17 · 260 阅读 · 0 评论 -
mybatis3.4.1源代码 - XxxMapper.java 方法支持多参数的处理机制
mybatis对于《多参数》的调用,最后会映射为《一维》的参数调用。代理// org.apache.ibatis.binding.MapperMethod#executepublic Object execute(SqlSession sqlSession, Object[] args) { Object result; switch (command.getType()) { case INSERT: { Object param = method.conv..原创 2021-02-03 17:13:52 · 79 阅读 · 1 评论 -
mybatis-plus 3.4.0 - 生成SqlSource并添加到mybatis
Mapper.class 类的注解处理器com.baomidou.mybatisplus.core.MybatisMapperAnnotationBuilder#parse(){ // ... // 注入 CURD 动态 SQL , 放在在最后, because 可能会有人会用注解重写sql if (GlobalConfigUtils.isSupperMapperChildren(configuration, type)) { GlobalConfigU...原创 2021-02-03 16:38:02 · 364 阅读 · 1 评论 -
apache dubbo 2.7.3 源代码片段 - Protocol扩展的Listener机制
org.apache.dubbo.rpc.protocol.ProtocolListenerWrapperpublic class ProtocolListenerWrapper implements Protocol { private final Protocol protocol; public ProtocolListenerWrapper(Protocol protocol) { if (protocol == null) { ...原创 2021-02-03 14:57:05 · 127 阅读 · 0 评论 -
apache dubbo 2.7.3 源代码片段 - Protocol扩展的Filter机制
org.apache.dubbo.rpc.protocol.ProtocolFilterWrapperpublic class ProtocolFilterWrapper implements Protocol { private final Protocol protocol; public ProtocolFilterWrapper(Protocol protocol) { if (protocol == null) { throw ne原创 2021-02-03 14:51:04 · 172 阅读 · 0 评论