摘要:``` package com.ligotop.core.utils; import com.ligotop.core.exceptions.BusinessException; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; public class HttpMethodUtil { public 阅读全文
posted @ 2019-11-03 23:11 发挥哥 阅读 (11) 评论 (0) 编辑
摘要:参考《架构探险 从零开始写javaweb框架》4.6章节 自定义ThreadLocal ThreadLocal容器,存放线程局部变量,设计目标:解决线程并发问题,使用场景:存放JDBC Connection,达到事务控制的能力。 将connection放在DBUtil中的静态变量,多个线程操作DBU 阅读全文
posted @ 2019-10-30 00:44 发挥哥 阅读 (10) 评论 (0) 编辑
摘要:本篇博客参考《架构探险 从零开始写java web框架》4.3章节 1代理接口: 2代理链(责任链模式,同一个对象可以被多个Proxy层层代理): 4Proxy接口的抽象实现,模板方法模式: 5举例某个具体的Proxy实现: 6自定义注解@Aspect,作为代理标记: 7初始化框架并创建代理对象放入 阅读全文
posted @ 2019-10-29 23:44 发挥哥 阅读 (23) 评论 (0) 编辑
摘要:JDK动态代理【接口】: CGLIB动态代理【类或接口】: 依赖: 编码: Spring AOP: 增强类: 编程式: 声明式: 切面: 动态代理拦截了类中所有方法,需要在代码中对所拦截的方法名加以判断,不太优雅的做法。 Spring AOP也拦截了类中所有方法,可通过切面Advisor(增强类Ad 阅读全文
posted @ 2019-10-28 22:20 发挥哥 阅读 (8) 评论 (0) 编辑
摘要:某服务器上部署了若干tomcat实例,即若干垂直切分的Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警。 问:如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载? 步骤一、找到最耗CPU的进程PID 工具:top 方法: · 执行top -c  阅读全文
posted @ 2019-10-21 23:38 发挥哥 阅读 (10) 评论 (0) 编辑
摘要:Get请求url不超过4000字节 Rest成熟度:level 0:使用http作为传输方式,leve 1:引入资源概念,每个资源有对应的url,level 2:使用http方法进行不同操作,使用http状态码表示不同结果,level 3:使用超媒体,在资源表达式中包含链接信息,一般做到level 阅读全文
posted @ 2019-09-11 23:39 发挥哥 阅读 (141) 评论 (0) 编辑
摘要:参数校验:简单的就逐个手动写代码校验,推荐用Valid,使用hibernate-validator提供的,如果参数不能通过校验,报400错误,请求格式不正确: 步骤1:在参数对象的属性上添加校验注解如@NotBlank 步骤2:用@Valid注解controller方法的参数对象 常用校验注解(通过 阅读全文
posted @ 2019-09-11 23:38 发挥哥 阅读 (255) 评论 (0) 编辑
摘要:同一个对象,在不同的场景,返回不同的属性,如getUserById返回User对象包含password值,而getAllUsers返回User集合,不包含password值(通过接口查看显示,序列化的时候直接忽略该属性,而非返回null),这些场景称为视图,使用JsonView: 三个步骤: 1.通 阅读全文
posted @ 2019-09-11 23:36 发挥哥 阅读 (84) 评论 (0) 编辑
摘要:概念: 在 HTML 中,, , , 阅读全文
posted @ 2019-08-16 19:35 发挥哥 阅读 (16) 评论 (1) 编辑
摘要:Mybatis的分支选择: 循环In: 阅读全文
posted @ 2019-08-04 21:00 发挥哥 阅读 (128) 评论 (0) 编辑