- 博客(1597)
- 资源 (17)
- 收藏
- 关注
原创 FeignClient配置超时时间 单独配置 全局配置
三种FeignClient超时时间设置:1、全局默认超时时间2、对整个接口类单独配置超时时间3、对单独Feign方法设置超时时间
2022-06-29 12:19:35
8796
原创 Mybatis源码:MapperProxy 代理模式
代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。意图:为其他对象提供一种代理以控制对这个对象的访问。主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。何时使用:想在访问一个类时做一些控制。如何解决:增加中间层
2022-03-10 19:53:16
441
1
原创 Mybatis源码:Cache 装饰器模式
装饰器模式介绍装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。何时使用:在不
2022-03-10 10:33:11
185
原创 Mybatis源码: Builder Mapper Executor
by yan 20220302以下为Activiti 构造 initSqlSessionFactory时,完成Mybatis 的 DefaultSqlSessionFactory的过程。时序图MyBatis解析xml配置文件通过XMLConfigBuilder等一系列Builder类解析为Mapper对象模型关键代码 //XMLConfigBuilder.parseConfiguration private void parseConfiguration(XNode root) {
2022-03-02 19:54:20
411
1
原创 Activiti源码 之Command与 CommandInterceptor
by yan 20220228Activiti 命令拦截器 执行过程Activiti每发执行一个Command时都会经过一个责任链模式的命令拦截器(采用命令模式实现的拦截器),执行一系列的CommandInterceptor 。具体过程如下,以Activiti默认的id生成器为例子:Activiti默认id生成策略默认采用的是org.activiti.engine.impl.db.DbIdGenerator时序图注:如果在高并发的场景下,可能一个线程读取一段block之后,还没有来得及upd
2022-02-28 12:20:20
772
原创 Activiti源码 ProcessEngineConfiguration
by yan 20220223ProcessEngineConfiguration 类图
2022-02-28 10:35:25
387
转载 spring事务传播属性
spring事务传播属性在 spring的 TransactionDefinition接口中一共定义了六种事务传播属性:PROPAGATION_REQUIRED – 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS – 支持当前事务,如果当前没有事务,就以非事务方式执行。PROPAGATION_MANDATORY – 支持当前事务,如果当前没有事务,就抛出异常。PROPAGATION_REQUIRES_NEW – 新建事务,如果当前存在
2022-02-23 19:06:21
819
原创 数据库操作的隔离级别 Transaction Isolation Levels
by yan 20220223ANSI/ISO Transaction Isolation Levels(ANSI/ISO标准的隔离级别)(1)未提交读(read uncommitted)(2)提交读 或 不可重复读(read committed)(3)重复读(repeatable read)(4)序列化(Serializable)isolation levels 的一些表现(1)Dirtyreads(脏读)Atransaction reads data that has been
2022-02-23 17:06:07
925
原创 Activiti之H2
//by yan 20211229H2数据库误删Saved Settings装上H2数据库后,操作失误,把Saved Settings列表里面的项目删除了,并进行了保存。想要恢复原设置的时候,发现卸载后重装也不行。解决方法:删除 ~/.h2.server.properties文件,重装H2即可注意:找不到路径的同学搜索“h2.server.properties”。~应该是指就是操作系统当前用户的目录 自行baidu 【~】的含义。Activiti里的测试用例与h2数据库JPAVariab
2021-12-29 19:04:09
935
原创 Activiti源码 之工厂模式
//ProcessEngineConfigurationImpl.java // session factories //////////////////////////////////////////////////////// public void initSessionFactories() { if (sessionFactories == null) { sessionFactories = new HashMap<Class<?>, Sessi
2021-12-28 14:28:15
298
原创 Activiti源码之建造者模式 Builder
建造者模式介绍建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着
2021-12-27 16:50:39
229
原创 Activiti源码 之 DataManager & EntityManager
by yan 20211223阅读了Activiti 相关源码,记录下对DataManager & EntityManager的理解。DataManager是一层相对底层的抽象,主要负责数据的持久化操作。通过DbSqlSession实现数据库的CRUD,DbSqlSession 是Activiti里对底层session的一个封装。默认使用了Mybatis的SqlSession操作数据库。Activiti 封装了几种session。如图通过EntityCache实现数据的缓存操作。Ent
2021-12-23 12:21:36
1153
转载 编程命名法则
命名法则目前,业界共有四种命名法则:驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法,其中前三种较为流行。(1)驼峰命名法驼峰命名法是指混合使用大小写字母来构成变量和函数的名字,函数名中的每一个逻辑断点都有一个大写字母来标记。例如:printMessageName();用途:驼峰命名法近年来越来越流行了,在许多新的函数库和Microsoft Windows这样的环境中,它使用得相当多。(2)匈牙利命名法匈牙利命名法通过
2021-12-08 11:36:02
561
原创 spring cloud + nacos + feign调用
//by yan 20211119需求:简单建个项目,用来测试调用注册在nacos的服务接口。步骤:idea -> new project-> Spring Initializr踩坑:1、开始是maven包引入报错。修改各种配置 pom repositories 、 maven 配置等,有时还要删除项目.idea重启idea。总结大多是maven的版本问题。最后都是使用idea 自带版本 “Bundled (Maven 3)” 就ok。2、spring boot 和spring c
2021-12-02 11:10:24
577
原创 Activiti 中的 命令模式与责任链模式
类图: 命令模式:CommandInvoker -》Command-》Receiver(Command实现)责任链模式:CommandInterceptor 一个自循环实现CommandInvoker 连接把两种模式连接起来。public class CommandInvoker extends AbstractCommandInterceptor { private static final Logger logger = LoggerFactory.getLogger(Comma
2021-10-26 12:24:35
1088
原创 idea会抛出Unable to import maven project: See logs for details错误
问题描述:从github/svn/git上下拉下来的项目,在maven更新中,idea会抛出Unable to import maven project: See logs for details错误解决:1、修改maven的jdk for important为jdk版本; 【File | Settings | Build, Execution, Deployment | Build Tools | Maven | Importing】2、重新导入项目;...
2021-10-15 11:49:19
166
转载 怎样理解 MVVM ( Model-View-ViewModel ) ?
来源:https://www.cnblogs.com/aisowe/p/11432722.htmlMVVM的产生/实现/发展可以写一篇很长的博客了, 这里仅写一下个人对MVVM的一些肤浅的认识.1.在 没有MVVM之前, 前端可以说是jQuery一把梭,jQuery解决的是前端在写页面 交互/ 功能 时需要频繁操作 dom这一痛点, 在 简化dom操作 这一点上, 没有哪个库比jQuery更出色. 而且还能解决大部分浏览器兼容性问题, 用起来别提...
2021-07-14 15:42:17
320
原创 js 正则 显示千分号 支持整数和小数
js 正则 显示千分号 支持整数和小数:“1344328888341.2342”.replace(/^(-?\d+?)((?:\d{3})+)(?=.\d+∣|∣)/, function (all, pre,g) {console.log(arguments);console.log(all);console.log(pre);console.log(g);return pre + g.replace(/\d{3}/g, ‘,$&’); });“1,344,328,888,341.23
2021-06-30 16:58:09
316
原创 Spring源码 --Idea module 相互引用
idea spring-framework module 源码引用不到其它module的问题。编辑器红色,识别不到类。解决:
2021-05-08 18:39:24
277
原创 pip install 包的安装位置
pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。目前如果你在python.org下载最新版本的安装包,则是已经自带了该工具。Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。pip 官网:https://pypi.org/project/pip/你可以通过以下命令来判断是否已安装:pip --version # Python2.x 版本命令pip3 --version # Py..
2021-02-21 12:26:45
3323
转载 MySQL 使用Navicat连接MySQL8出现1251错误
来源:https://www.cnblogs.com/wcwnina/p/9569535.htmlMySQL 使用Navicat连接MySQL8出现1251错误安装了MySQL8.x.x后使用Navicat连接总是出现1251错误,故在此记录一下解决方法。错误提示1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client解决办法...
2020-06-14 11:03:38
290
转载 BeanShell快速入门---Java应用
来源:https://www.iteye.com/blog/jiasudu-105761快速入门欢迎使用BeanShell.这是一个速成课程。我们将省去一些重要的选项和细节。要学习更多的内容请看本User´s Guide的其它部分。下载和运行BeanShell请到http://www.beanshell.org下载最新的JAR文件。你可以用图形桌面模式和命令行模式起动BeanShell。如果你只是要玩一玩BeanShell,你可以在BeanShell的jar文件上双击来起动Be...
2020-06-12 12:11:14
515
转载 Docker部署Elasticsearch集群
来源:https://www.cnblogs.com/lixuebin/p/10814052.html参考文档:https://hub.docker.com/r/library/elasticsearch/https://hub.tenxcloud.com/repos/tenxcloud/elasticsearchhttps://hub.alauda.cn/repos/library/elasticsearch环境:CentOS 7.2docker-engine-1.11..
2020-05-31 13:42:41
678
原创 centos 升级gcc
//by yan 20200523centos 升级gcc: centos7默认 gcc版本是4.8.5,编译不了redis6,需要升级[root@VM_16_17_centos redis-6.0.3]# gcc -vUsing built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapperTarget: x86_64-redhat-linuxCo
2020-05-23 12:38:42
337
转载 SpringBoot启动出现java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
来源:https://blog.csdn.net/Demorea/article/details/86509421首先打开pom.xml,找到mysql连接驱动的依赖<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dep...
2020-05-09 18:52:14
505
原创 mysql版本 time类型
Target Server Type : MySQLTarget Server Version : 50723导入 mysql5.1版本中遇到了一些问题: 报语法错误。解决:shop_time_open time(6) NULL DEFAULT NULL COMMENT ‘开店时间’,shop_time_close time(6) NULL DEFAULT NULL COMMENT ‘关店时间’,改为:shop_time_open time NULL DEFAULT NULL COM
2020-05-09 16:13:36
367
转载 MySQL 字段约束 null, not null, default, auto_increment
转载自:http://www.xiaoxiaozi.com/2009/07/09/1111/没有规矩,不成方圆,任何事物都是如此。在 MySQL 中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。今天我们就来看一下 MySQL 的字段约束:NULL 和 NOT NULL 修饰符、DEFAULT 修饰符,AUTO_INCREMENT 修饰符。NULL 和 NOT NULL 修饰符可以在每个字段后面都加上这 NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(
2020-05-09 15:15:02
399
原创 SSH putty Disconnected: Server protocol violation: unexpected SSH2_MSG_UNIMPLEMENTED packet
问题使用putty 连接公网云服务器时报错如下:Disconnected: Server protocol violation: unexpected SSH2_MSG_UNIMPLEMENTED packet解决:在connection -> ssh-kex ,将diffie-hellman group exchange调下去就可以啦!参考视频:https://www.you...
2020-04-23 10:58:38
1721
转载 Promise
来源:https://www.jianshu.com/p/1b63a13c2701promise是什么?1、主要用于异步计算2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果3、可以在对象之间传递和操作promise,帮助我们处理队列为什么会有promise?为了避免界面冻结(任务) 同步:假设你去了一家饭店,找个位置,叫来服务员,这个时候服务员对你说,对不...
2020-04-17 00:53:15
165
转载 事务隔离级别(IsolationLevel)
来源:https://www.cnblogs.com/wms01/p/6183241.html事务隔离级别(IsolationLevel)事务的特性(ACID)1、原子性(Atomicity) 事物是数据库的逻辑工作单位,事务中的诸多操作要么全做要么全不做2、一致性(Consistency) 事务执行结果必须是使数据库从一个一致性状态变到另一个一致性状态3、隔离性(Isol...
2020-02-25 14:22:09
638
原创 Spring源码:AOP转文
Spring源码分析-深入浅出AOP(图文分析)https://blog.csdn.net/c_unclezhang/article/details/78769426Spring中AOP的配置从1.0到5.0的演进http://cxis.me/2017/04/10/Spring%E4%B8%ADAOP%E7%9A%84%E9%85%8D%E7%BD%AE%E4%BB%8E1.0%...
2019-12-26 20:27:17
529
原创 Spring源码:AOP(1)
AOP的组成部分几个关键部分: 一个是AOP的配置(拦截规则的配置),一个是代理对象的创建,一个是统一的拦截调用过程。AOP的配置:Spring是自己定义了一套规则同时集成了AspectJ的语法,抽象为了Pointcut类。代理对象的创建:SpringAOP定义了一个工厂类AopProxy,同时支持JDK动态代理和CGlib动态代理。统一的拦截调用过程:则是使用了AOP联盟中定义的拦截过程...
2019-12-25 18:25:58
192
原创 @javax.inject.Inject,新的注入依赖规范
这个是 Java EE 6 规范 JSR 330 – Dependency Injection for Java 中的东西,也就是 Java EE 的依赖注入。Spring自带的@Autowired的缺省情况等价于JSR-330的@Inject注解; Spring自带的@Qualifier的缺省的根据Bean名字注入情况等价于JSR-330的@Named注解; Spring自带的@Qualifi...
2019-12-23 18:42:55
4756
原创 Java源码:java.lang.reflect反射之AccessibleObject、ReflectionFactory、Filed、Method、Constructor类
//by yan 20191206Java的反射机制,它的定义是:程序在运行中时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。简单的来说就是可以通过Java的反射机制知道自己想知道的类的一切信息。在Java的反射机制中,类中的三个组成部分便是其重点,也就是Filed、Method、Constructor类。相关类图:...
2019-12-06 17:46:47
240
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人