自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring jdbc:initialize-database分析

起因在使用内存数据库H2写数据库操作的单元测试的时候,因使用jdbc:initialize-database 来初始化数据库结构。现状spring-jdbc :3.1.1.RELEASE <jdbc:initialize-database data-source="dataSource" ignore-failures="NONE"> <jdbc:script location="classpath:initdata/info.sql"/> </jdbc:in

2021-03-31 21:20:49 699

原创 springboot 单元测试怎么写

本文基于springboot版本1.4+ 推荐使用mock完全单节点测试和全链路测试我们的单元测试是系统质量保证的重要一环,需要引起重视。但是由于目前分布式系统相互直接依赖繁杂 ,如果实际按业务数据来跑单元测试,那很难遵循单元测试的 AIR 原则【 Automatic(自动化)、Independent(独立性)、Repeatable(可重复)】 ,因而我们会引入mock来辅助完成单元测试。另一方面单元测试分为两部分 一个是单个最小单元的测试,另一种是单个系统内部全链路的测试。本文主要描述如果写全链路测试

2021-03-26 14:38:45 1316

原创 org.springframework.test.context.junit4.SpringJUnit4ClassRunner

spring 的单元测试是如何复用容器的1、创建runner执行器此时初始化的TestContextManager 中并没有上下文容器信息org.springframework.test.context.junit4.SpringJUnit4ClassRunner#createTestContextManager public SpringJUnit4ClassRunner(Class<?> clazz) throws InitializationError { super(claz

2021-03-24 15:03:09 1886

原创 单元测试-junit

脱离开发工具使用junit运行一个测试类import org.junit.runner.JUnitCore;import org.junit.runners.BlockJUnit4ClassRunner;import org.junit.runners.model.InitializationError;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;public class JunitExample

2021-03-23 20:05:57 313 1

原创 cannot have an existing value

写单元测试遇到下面的问题BaseTest 中的producer 已经存在值了再次被赋值导致系统异常org.springframework.beans.factory.BeanCreationException:Could not inject field: protected mq.producer.Producer BaseTest.producer; nested exception is java.lang.IllegalStateException: The field protected

2021-03-19 17:32:32 792

原创 aop bean增强

主要的两个类org.springframework.aop.framework.AbstractAdvisingBeanPostProcessororg.springframework.aop.framework.autoproxy.AbstractAutoProxyCreatorAOP下的实现类org.springframework.validation.beanvalidation.MethodValidationPostProcessororg.springframework.beans.f

2021-03-17 17:48:49 224

原创 org.springframework.aop.config.ConfigBeanDefinitionParser#parse

org.springframework.aop.config.ConfigBeanDefinitionParserpublic BeanDefinition parse(Element element, ParserContext parserContext) {1、 CompositeComponentDefinition compositeDef =new CompositeComponentDefinition(element.getTagName(), parserContext.extra

2021-03-16 20:33:59 118

原创 spring容器分析

org.springframework.context.Lifecycle 声明周期org.springframework.beans.factory.Aware 资源导入org.springframework.beans.factory.BeanFactory 对象读取org.springframework.core.AliasRegistry 对象注册 org.springframework.core.io.ResourceLoader 资源加载org.springframework.cor

2021-03-10 10:14:38 177 1

原创 maven-resource 打包资源管理

背景当我们做一些服务封装的时候,可能会使用到SPI相关的一些能力,当我们打包的时候可能需要指定需要打包那些资源文件,这个时候我们就会用到resource样例包结构src/main/resources/propsMETA-INFxxx.xmlxml配置 <build> <resources> <resource> <directory>src/main/resour

2021-03-02 14:24:39 171

原创 修改单例属性引发的血案

背景最近接触的一些系统中遇到一个问题,一个交易的服务对外提供了支付和退款两种能力,但是发现运行时交易的服务走了退款。原因是spring容器管理的一个对象service 属性运行时被改变,导致上下流程对不上的问题,多业务链路并发时引发运行时属性错乱,导致 支付和退款行为混淆下面是大体代码样例。记录下问题原因样例1、定义一个核心支付服务public interface CoreService { public BaseResult trade(TradeParam tradeParam);

2021-02-25 17:58:22 489

原创 AOP--入坑源头

1、AOP实现了一部分数据转换和加解密相关的工作,发现历史项目一堆都是around ,职责分工不是很合理,代码优化过程中入坑,目前还在扑腾,暂未出坑以下为初期的一个实验,基于spring-boot的几个不同的版本 。等以后有了结论之后再一点点完善2.4.2-------------doAround--start-------------before-------------doAfterReturning-------------doAfter-------------doAroun.

2021-02-09 18:32:42 96

原创 AOP aspectj idea 笔记

1、 idea专业版本 (非专业版不支持aspectj)2、创建个maven项目加入如下依赖 plugin尤其重要 ,需要运行编译后版本,才能发现生效<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.9.6</version></dependen...

2021-02-09 17:57:17 201 1

原创 fastjson定制序列化插件

背景在日常的开发过程中,对象序列化成JSON字符串的能力是很常用的,但是在实际使用过程中,或多或少的会有一些定制化的诉求,常规一些的序列化支持 fastjson提供了现成的序列化信息,直接指定使用即可 参考类 com.jd.fastjson.serializer.SerializerFeature。我的实际使用诉求是在序列化的过程中完成数据的脱敏工作,以保障诸如手机号 邮箱之类信息不被泄露,以下推荐两个可定制序列化插件 ,可以完成在序列化过程中针对key和value的定制处理。针对key的定制处理c

2020-10-30 10:08:54 393

原创 gson 反序列化后整形变浮点问题

public static void main(String[] args) { GsonBuilder builder = new GsonBuilder(); builder.setDateFormat("yyyy-MM-dd HH:mm:ss"); builder.registerTypeAdapter(new TypeToken<Map<String,Object>>(){}.getType(),new MapTypeAdapt

2020-07-23 21:12:11 1719 2

原创 idea 运行编译 提示找不到类问题记录

springboot项目 mvn clean install 打包正常application run的时候一直报各种类找不到,Idea清理缓存 重启 重新clone代码 都不能解决问题 ,推荐如图maven ->runner->Delegate IDE build/run actions to Maven 选中 将构建和运行委托给maven去执行 这样能避免因为idea的各种与maven编译运行的冲突 导致的各种乱七八糟的问题 均以maven为准就对了...

2020-07-20 15:33:17 4132 1

原创 基于docker环境构建nginx代理java项目操作手册

基于docker容器,把最常规的nginx+java的部署环境迁移到容器中的操作手册

2020-05-02 17:12:50 1007 3

原创 java项目docker云化入门

目录01 创建java项目1、指定pom父文件和依赖2、系统启动类3、API服务类02 开始处理dockefile03 打包构建镜像1、安装docker,初学者就直接用yum 一键安装即可2、打包3、检查当前服务器镜像4、启动docker镜像 并访问对应地址01 创建java项目从spring官网快速开始找一份样例代码即可,代码样例如下:1、指定...

2020-04-26 22:53:30 394

原创 大话分布式服务——初识分布式服务

初识分布式服务目录初识分布式服务简介正文创业期发展期成熟期后记简介 大家好,我们开始第一章 初识分布式服务正文 本文以初识为题,旨在初步介绍分布式服务的相关信息,给读者一个初步的印象。那么怎么来解读分布式服务呢?分布式服务是计算机系统服务中的一种概念,那什么算是分布式服务呢,这个要从软件系模式起源来介绍了。 一个成熟的...

2020-04-21 00:22:05 275

原创 大流量放大镜下看缓存击穿事件

缓存击穿这个词语在很多程序开发者来讲是再熟悉不过了。当下互联网大流量的环境下,缓存几乎可以说是在当前软件开发应用中必不可少的一点了。先简单介绍下业务场景,在渠道引流的过程中,下放引流利益点声明,引流之后针对完成任务的有效用户进行之前承诺利益点的发放,承诺有效期自然周有效。以此引流拉新业务为目标,程序上分为四大模块,分别是承诺声明利益点的展示模块、千人千面实时分析模块、分析结果业务管理模块、...

2020-04-18 17:02:36 266

原创 idea 重写对象toString 转成json

在生成 toString的页面 进入设置-》模板-》新增模板然后toString的时候使用新增的模板就行了记录处理模板如下public java.lang.String toString() {final java.lang.StringBuilder sb = new java.lang.StringBuilder("{");#set ($i = 0)#f...

2019-08-01 18:01:15 1318

原创 tomcat如何支持web应用引发的思考

此文属于基于现有工作经验的一个思考 ,纯属YY设想,无实际源码实现参考依据思考命题tomcat是如何支持一个web系统启动并且正常提供服务的现状我们开发一个web系统,然后部署到tomcat容器中,就可以正常提供服务了,比如Hellow Word我们访问http://localhost:80/ 就可以看到了,这就是一个最简单的web服务思考1、不管是从系统日志还是从访问地址上看,我们...

2019-05-09 17:21:42 151

原创 系统熔断

最近看这方面的信息 简单了解了下 写下随笔背景介绍基于服务拆分之后,各类远程调用横行的年代, 我们很容易出现的系统层级情况就是一个业务支撑需要N多服务,简单说下,图网上有的是就不贴了。假设有三层应用调用 A-B-C ,A对外提供列表服务,需要N个B和M个C,同时B也需要X个C,我们假设一个调用链路中的某个C系统故障 ,那A或者B 调用C时 就会被hold住,从而无法正常响应, 以此为例 A机...

2019-05-09 16:24:52 879

原创 RateLimiter 笔记

关于谷歌的RateLimiter限流的使用工具类记录package org.limit.example;import com.google.common.util.concurrent.RateLimiter;import java.util.concurrent.ConcurrentHashMap;/** * @Title: RateLimiterUtil * @Package...

2019-04-12 14:31:07 795

原创 mysql

SQL优化业务型优化:多表连接拆分为单表分表:取决表的业务是否支持水平拆分、表的大小、表的访问量(QPS+TPS)分库:表的大小、分表的梳理、表的总访问量(QPS+TPS)数据库拆分技术型优化在原SQL基础上,修改索引改造SQL结构增加表冗余字优化SQL步骤:分析现有业务指标和sql执行计划。改写sql写法或者调整索引。反复执行这两部。将where子句中查

2019-04-11 16:27:03 140

原创 sun.misc.Unsafe 笔记

858 /** 859 * Atomically update Java variable to &lt;tt&gt;x&lt;/tt&gt; if it is currently 860 * holding &lt;tt&gt;expected&lt;/tt&gt;. 861 * @return &lt;tt&gt;true...

2019-04-11 16:25:26 148

原创 全局唯一ID生成服务设计

一般在一些支撑大规模复杂业务中,都会有生成全局唯一的业务ID的诉求,本文就此ID生成服务的诉求来展开在实际业务系统中,一般会对ID生成服务有哪些要求,下面我们简单介绍几点全局唯一:在限制周内必须保证不能重复系统高可用:在特殊情况下 尽最大可能保证系统可用高并发高性能:此类基础服务,支持业务众多,一般调用量都比较大,同时要求性能很高使用简单:在当下的大环境中一般提供一个RPC服务输出可读...

2019-04-11 14:21:16 885

原创 定制MVC

MVC(模型(model)-视图(view)-控制器(controller)的缩写)要定制一个MVC ,首先要了解MVC的关系 这张图片是百度百科上使用的,通过如图我们可以得到以下几点用户输入 业务处理 数据模型 输出视图从一个HTTP请求的过程中来谈这个问题的时候。 输入输出就是一些列的报文,服务器端负责解析请求报文,而浏览器负责解析响应报文。 再业务处理的过程中,请

2019-04-09 16:23:05 160

原创 谈谈系统质量相关的思考

1、系统稳定性单元测试 灰度发布 结对编程 系统监控 压力测试 系统复核2、系统扩展性接口扩展性 业务设计的扩展性 新需求业务支撑快速搭建,模块化是否拆分到位,代码重用率等 系统扩容上无状态保证可以自动伸缩扩容3、系统高可用灾备 重试 限流 降级 熔断 负载均衡 系统性能提升 容量评估...

2019-04-09 16:22:44 255

原创 类加载器与双亲委派模型

java类如何加载双亲委派自定义一个java.lang.String是否可以被加载起来

2019-04-09 16:21:28 94

原创 DBCP连接池 操作sql超时控制

jdbc.url connectTimeout=5&amp;amp;socketTimeout=5&amp;amp;autoReconnect=true&lt;sqlMapConfig&gt; &lt;settings cacheModelsEnabled="false" enhancementEnabled="true" lazyLoadingEna...

2019-04-09 16:20:06 1280

原创 字符串模板替换

1、使用正则便打算来替换 public static String renderString(String content, Map&lt;String, String&gt; map){ Set&lt;Map.Entry&lt;String, String&gt;&gt; sets = map.entrySet(); for(Map.Entry&lt;Stri...

2019-02-15 11:02:23 587

原创 log4j日志级别配置完成后不生效 系统一直打印debug日志

介绍系统log4j.xml配置好了之后,系统日志级别没有按照预期的执行,控制台大量输出debug日志debug日志 排查问题可以,但是在生产环境下,打印数量巨大,导致系统IO开销增加,影响系统性能 因此我们要想办法把debug日志过滤掉方案系统log4j配置没有生效的原因如下 可供参考手误检查下系统配置中是否存在debug配置没有发现的 ,最好全文搜索下debug字段 ,查询是否有配置...

2019-01-11 18:16:38 10402

原创 Gson Map 处理问题笔记

情况描述 序列化 一个map对象使用Gson转换成字符串的时候,默认是处理成了空字符串,需要指定 java.lang.reflect.Type 的类型 这样才能序列化成功 反序列化 反序列化的时候指定的类型如果是Map接口类型 ,这个时候反序列化的时候会出现异常(com.google.gson.JsonParseException) 把指定类型调整为Map的实现类后可以反序列化成功。...

2018-07-13 11:03:12 545

原创 spring 解析xml加载bean的整个过程

第一步从spring的容器刷新开始org.springframework.context.support.AbstractApplicationContext#refresh ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); org.springframework.cont...

2018-04-12 11:27:38 1960

原创 mysql insert 空数据默认值问题

CREATE TABLE task ( id bigint unsigned NOT NULL AUTO_INCREMENT, taskType INT(10) unsigned DEFAULT '0' NOT NULL, retryCount INT DEFAULT '3' NOT NULL, status INT(1

2018-03-30 14:30:25 10328

原创 DB对象属性用包装类和基础类型的区别

我们在操作数据库的时候以下这段代码是很常见的了 <isNotEmpty property="status"> status=#status#, </isNotEmpty>private int stauts;private Integer status;这两部分代码还是有区别的,当我们使用int的时候, 1、如果数据库的信息支持null数据,那这个时候,查询会出现异常

2018-03-30 10:34:21 506

原创 spring list map

bean id="List" class="java.util.ArrayList"> constructor-arg> list value-type="java.util.HashMap"> ref bean="ServiceMap">ref>ref bean="ServiceMap">ref>ref bean="Serv

2018-03-30 09:54:51 192

原创 Gojs 学习笔记

样例代码1、引入Gojs<script src="go-debug.js"></script>2、在页面创建个有高宽大小的div<div id="myDiagramDiv" style="margin:auto;width:300px; height:300px; background-color:#ddd;"></div>3、创建GO画板var G = go.GraphObject.ma

2018-03-27 15:19:35 2192 2

原创 Uncaught TypeError: c(...).off is not a function(…

layer.open({title: 'test',content: 'hello layer'})运行上面的代码,能弹出对话框,但按确定对话框不消失. 控制台的错误代码如下。 Uncaught TypeError: c(…).off is not a function(…),控制台手动使用layer.close(z-index值) 可以关闭弹窗 解决方案升级Jquery 就行了<scri

2018-03-24 15:31:38 2607

原创 前端代码总结

jquery标签定位$("#edit input[id=id]").val(rows[0].id);easyUI给标签赋值 $("#content").textbox("setValue", "");

2018-03-21 10:47:33 356

OpenExplorer

eclipse OpenExplorer插件资源

2017-03-25

lombok.jar

eclipse lombok插件jar

2017-03-25

Discuz_X3.2_SC_UTF8.zip

discuz社区搭建源码,分分钟弄好社区,欢迎交流学习

2015-11-19

空空如也

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

TA关注的人

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