自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 java 子类重写父类方法时默认调用子类方法

背景子类继承父类,重载了父类方法。面试中经常考到方法的调用,以及构造函数先后顺序。例子定义父类,申明方法say()public class TestParent { protected static String name = "parent"; TestParent(){ say(); } public void say(){ ...

2020-04-17 14:11:50 3530 3

原创 (五)接口请求IP/URL限流(基于拦截器+注解+redis)

背景日常开发过程中,经常需要对一些资源消耗大的接口(例如:图片上传/下载接口,当遇到并发量大的时候,网络带宽咱比不断增加,导致程序无法正常运行)进行限流操作。以此来增加应用的稳定性和安全性。解决方案基于拦截器,在网关层对请求进行拦截,利用redis存贮请求来源信息,并进行计数,超过阀值时直接拒绝请求。利用注解来标记需要拦截的方法,方便灵活。(此方案基于springboot+redis)定义注解类Semaphore@Documented //生成文档@Inherited //可以被子类使用

2020-08-17 20:12:29 1049 1

原创 数据库主键ID管理方案

背景数据库常常使用自增主键。通常会遇到这些问题:当我们在导入旧数据时常常会发生主键重复冲突;数据库主键没有任何业务意义;常常会出现插入数据前需要获取数据主键的情况,MySQL下让人头大。解决方案生产过程中,常常用一张表以及函数来帮助维护业务表的主键。表用来存放业务表序列,函数用来处理并获取业务表序列。当有业务数据插入时,先通过函数获取该表的序列,此时可以通过此序列加上一些业务元素,即生成了有业务意义且唯一的主键。序列表的创建表主要两个字段,表名和当前序列号CREATE TABLE `t_ads_

2020-07-14 19:51:51 433

原创 shell脚本带参数启动不同版本项目

背景日常开发工作中,部署项目时,常常需要写一个脚本来实现项目重启(比如:jar/war)。随着时间的推移,一个项目会存在多个版本。因此需要传入一个版本参数来启动对应版本的项目。脚本实现if [ -n "$1" ]; thenpid=`ps -ef | grep -w test-0.0.1 | grep -v grep | awk '{print $2}'`echo "test $pid"if [ -n "$pid" ]then echo "kill -9 pid:" $pid k

2020-07-07 20:11:56 513

原创 dubbo服务提供/订阅者修改application.yml后启动报错java.nio.charset.MalformedInputException: Input length = 1

背景本地测试同一个服务由多台应用提供时。需修改配置文件(本地测试一台zk修改应用组件:server port,spring.dubbo.application.name,spring.dubbo.protocol.port)重新打包,生成多个jar。发现修改服务提供方/订阅方后,再启动时报错如下:Caused by: java.nio.charset.MalformedInputExcepti...

2020-04-14 20:03:12 573

原创 (四)使用拦截器鉴权

背景为增加系统安全性,对每个请求需要进行鉴权,过滤掉非法请求。基于Spring实现。鉴权通过时可通过ThreadLocal存储一些用户信息,方便之后业务使用。定义ThreadLocal对象@Componentpublic class CodeHolder { private static ThreadLocal<String> agentCodes = new Thr...

2020-04-13 21:42:44 498

原创 (三)使用AOP获取方法执行时间/记录请求/返回参数

背景:系统开发测试过程中,常需要关注请求参数和返回参数,以及方法运行时长(使用filter也可实现)。基于springAop注解实现@Aspect@Componentpublic class HttpAspect { //定义在controller包和所有子包里的任意类的public方法的执行 @Pointcut("execution(public * com.cb.sp...

2020-04-13 21:11:03 1951

原创 (二)全局异常处理

背景:常见代码中使用try&&catch捕获处理异常,仅针对代码块。若没有全局异常处理,系统出现未处理的异常时会直接返异常信息,影响用户体验。(一)定义异常信息定义异常信息操作接口public interface BaseErrorInfoInterface { public String getResultCode(); public String get...

2020-04-13 20:44:14 303

原创 (一)JDK动态代理简单实现

实现步骤(1)定义一个接口,代理的是接口(多态),不是具体的实现类;(2)定义处理类(实现InvocationHandler接口),重写invoke方法,由要代理接口的实现类来实例化处理类;(3)定义代理类Proxy,调用方法。创建接口:代理的是接口.不妨回顾一下mybatis的实现原理,在项目开发中的UserMapper接口和与之对应的UserMapper.xmlpublic inte...

2020-03-29 16:58:58 155

空空如也

空空如也

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

TA关注的人

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