- 博客(88)
- 资源 (22)
- 收藏
- 关注
原创 基于TestNg和powerMocker的单元测试
UT单元测试的意义TestNg + Mock单元测试的意义以前的公司里面前后端都是自己开发的(前端为传统的jsp),测试起来很方遍,自己把项目启动本地就可以进行e2e测试了,可是后来到了现在的这家公司,项目体量很大,虽然后端也可以本地运行起来利用swagger进行接口测试,但是规定UT不能低于85% 。 刚开始觉得没有多大用处,很多的地方的UT只是为了应付code review。 慢慢的就会发现UT的居多好处,此处仅写下自己的一些感悟,详细的好处可以自行的baidu/google.UT相当于白盒
2021-09-27 09:40:18 340
原创 SpringBoot源码解析(一): SpringBoot设计初衷
SpringBoot设计初衷基于Servlet开发java webservelt 开发的步骤servlet 开发的痛点:基于SpringMVC 开发java web核心步骤痛点SpringBoot 核心功能SpringBoot核心注解@SpringBootApplication@EnableAutoConfiguration设计初衷基于Servlet开发java webservelt 开发的步骤传统的java web的开发,都是基于javax-servlet api, 原始的api 倾入性太强需要继
2021-09-12 21:03:55 397
原创 SpringMVC中的异常处理
exception-handling-in-spring-mvcSpringMVC异常处理方式SpringMVC异常处理方式对于自定义的异常建议用@ResponseStatus注解2.其他的异常建议使用 @ExceptionHandler全局异常用 @ControllerAdviceREST API 返回异常 @ResponseBody更多详细信息参考官方文档:https://spring.io/blog/2013/11/01/exception-handling-in-spr
2021-09-07 17:02:58 136
原创 ActiveMQ
ActiveMQ一. ActiveMQ是什么1. JMS是什么2. JMS的对象模型3. JMS的消息结构3. ActiveMQ的特性4.ActiveMQ的安装4.1 下载4.2 安装-解压及用4.3 启动ActiveMQ5. ActiveMQ服务6. 防火墙添加ActiveMQ的端口5. ActiveMQ使用5.1 使用web管理平台5.2 we管理配置5.3 在java中使用5.4 在spring中使用二. ActiveMQ支持的消息协议1. ActiveMQ支持哪些协议![在这里插入图片描述](ht
2021-08-25 08:05:51 1317
原创 多线程下的线程安全
线程安全一. 线程安全之可见性1. JVM运行时数据区2. Java内存模型(Java Memory Model ,JMM) VS JVM运行时数据区2.1 初看Java内存模型2.2 多线程中的问题2.3. 内存缓存2.4. CPU指令重排2.5. JIT编译器(Just in time compiler)2.6. volatile关键字2.7.shared variables 定义2.8. 线程间操作的定义2.9. 对于同步的规则定义2.10 Happens-before先行发生原则2.11 fina
2021-08-22 17:18:52 424
原创 java基础
java基础一. java 程序运行原理1.class文件内容2.JVM运行时数据区2.1 方法区2.2 堆内存2.3 虚拟机栈2.4 本地方法栈2.5 程序计数器3.查看class文件内容3.1 class内容-版本号/访问控制3.2 class内容-常量池3.3 class内容-构造方法3.4 class内容-程序入口main方法4. 程序完整运行分析二. 线程状态java.lang.Thread.State.三. 线程终止1. 不正确的线程终止 - Stop2. 正确的线程终止- Interrupt3
2021-08-21 13:52:27 942
原创 4.11 安全防护
安全防护常见的安全问题Hash算法与碰撞数字签名 与 数字证书请求重放 与 中间人攻击openId 、 author常见的安全问题Hash算法与碰撞数字签名 与 数字证书请求重放 与 中间人攻击openId 、 author
2021-07-16 07:53:44 771 2
原创 3.4.10 数据库中间件 - Sharding-JDBC
Sharding-JDBCSharding-JDBC概览Sharding-JDBC入门Sharding-JDBC读写分离Sharding-JDBC分库分表分库分表概念拆分方式分布式主键绑定表广播表Sharding-JDBC事务应用数据治理配置中心Sharding-JDBC概览Sharding-JDBC入门Demo 项目Sharding-JDBC读写分离Sharding-JDBC分库分表分库分表概念拆分方式### 逻辑表### 数据节点### 分片策略#### 5种分片策
2021-07-13 07:50:53 378
原创 3.4.2 数据库中间件 -mycat
数据库中间件为什么要数据库中间件数据库中间件设计要点数据库拆分垂直拆分水平拆分分片规则分库分表的技术难点数据库中间件的两种实现模式客户端模式服务端代理模式为什么要数据库中间件数据库中间件设计要点数据库拆分垂直拆分水平拆分分片规则分库分表的技术难点数据库中间件的两种实现模式客户端模式服务端代理模式...
2021-07-12 11:57:29 664
原创 3.4.2.1 mysql 基础知识及调优
Mysql 运行结构Mysql架构存储引擎概述InnoDB整体架构单表ibd文件内容说明InnoDB 磁盘数据存储概念梳理B-tree and B-plus-tree硬盘操作2. 数据在磁盘中的存储 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210624231507578.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG
2021-07-07 08:52:38 1694 2
原创 3.2.2.2 nginx代理缓存机制
Ngnix的代理缓存机制Nginx简介Ngnix缓存简介Nginx 缓存Nginx简介Note: C10K concurrent 10K request.Ngnix缓存简介Nginx 缓存
2021-06-23 10:32:08 94
原创 3.2.6.2 lvs+keepalived+ngnix+tomact实现高性能负载均衡集群
lvs+keepalived+nginx+tomcat 原理及配置回顾LVS Keepalived Nginx拓扑图搭建步骤一、 编译安装Nginx二、 安装jdk1.8和tomcat在最后添加jdk环境变量使环境变量生效查看jdk版本查看jdk路径启动tomat查看tomcat页面是否可以正常访问 需要对照文档自己来一遍回顾LVS Keepalived Nginx拓扑图搭建步骤一、 编译安装Nginx 安装前准备对于nginx编译安装需要先安装编译 的工具,然后再安装nginx依赖
2021-06-23 07:45:04 431 1
原创 3.2.5.4 Nginx实用插件
Nginx实用插件限流算法漏桶令牌桶Nginx 限流Nginx黑白名单限流算法漏桶–任意的速率流入 固定的速率流出令牌桶Nginx 限流Nginx黑白名单以上的配置均为静态的配置Nginx的黑白名单 想要动态的配置可以去查找nginx对应的模块插件https://www.oschina.net/search?identification=1624338099026&scope=project&q=nginx...
2021-06-22 22:13:02 701
原创 3.2.5.3 电商高并发缓存实战 通过Nginx缓存你的电商数据
Nginx缓存Nginx缓存Nginx清除缓存一、 编译安装Nginx并添加 ngx_cache_purge 模块二、 修改配置三、 测试Nginx缓存Nginx清除缓存一、 编译安装Nginx并添加 ngx_cache_purge 模块 安装前准备对于nginx编译安装需要先安装编译 的工具,然后再安装nginx依赖yum -y install gcc gcc-c++ autoconf automake makeyum -y install zlib zlib-devel o
2021-06-22 12:07:11 193
原创 3.2.5.2.1 通过Lua扩展Nginx
LuaLua 入门Lua 环境安装Lua 基本语法Nginx添加Lua扩展模块Nginx添加Lua扩展模块Nginx+Lua+Redis高性能后端接口一、 需求分析二、 广告缓存架构概述三、 广告表结构四、 代码实现定义lua缓存命名空间(在http几点下)Lua 入门Lua 环境安装Lua 基本语法Nginx添加Lua扩展模块编译安装Nginx 安装前准备对于nginx编译安装需要先安装编译 的工具,然后再安装nginx依赖yum -y install gcc gcc-c+
2021-06-22 07:27:51 177
原创 3.2.5.1 Ngnix配置Https
Ngnix 配置Https数据加密数据安全的重要性保证数据安全的手段加密方式对称加密非对称加密总结数字证书证书类型Http 和 Https数据加密数据安全的重要性保证数据安全的手段加密方式对称加密非对称加密总结数字证书证书类型Http 和 Https...
2021-06-15 23:10:37 344 6
原创 3.2.4.2 通过DNS实现高可靠的负载均衡和访问加速
DNSDNS简介DNS工作原理DNS负载均衡DNS与其他负载均衡工具对比DNS简介DNS工作原理DNS负载均衡DNS与其他负载均衡工具对比—resolv.conf 一般Linux下都会自动的安装上– 修改DNS服务器的地址– named.conf.local– 创建 db.163.com– named.conf.option– 重启bind9 sudo service bind9 restart...
2021-06-14 20:55:14 240
原创 3.2.4.1 使用CND实现应用的缓存和加速
CDN应用的缓存和加速CDN 简介dig命令CDN主要特点CDN服务模式CDN工作流程CDN关键技术CDN 简介dig命令– JQuery 下载 网易邮箱的下载 等都用到CDNCDN主要特点CDN服务模式CDN工作流程CDN关键技术...
2021-06-14 15:49:45 247
原创 3.2.3.3搭建LVS负载均衡集群简介
LVS负载均衡集群简介LVS简介LVS NAT 模式LVS IP Tunnel 模式LVS DR 模式LVS 调度算法LSV集群搭建负载均衡集群简介LVS简介LVS NAT 模式LVS IP Tunnel 模式LVS DR 模式LVS 调度算法LSV集群搭建
2021-06-14 15:21:00 99
原创 3.3.2 基于VIP的keepalived高可用架构
KeepalivedKeepalived简介Keepalived工作原理Keepalived应用场景高可用集群高可用架构高可用高可用集群实现Keepalived高可用集群的解决方案Keepalived简介Keepalived工作原理Keepalived应用场景高可用集群高可用架构高可用高可用集群实现Keepalived高可用集群的解决方案...
2021-06-10 00:00:04 133
原创 3.2.3.1 LVS基础概念解析
LVSLVS简介Linux Virtual Server项目网络分层IP虚拟服务器软件IP调度算法内核Layer-7交换机KTCPVSLVS集群特点LVS与Nginx对比LVS简介Linux Virtual Server项目网络分层IP虚拟服务器软件IP调度算法内核Layer-7交换机KTCPVSLVS集群特点LVS与Nginx对比...
2021-06-09 23:37:56 169
原创 3.2.2.4 高性能Nginx最佳实践
Nginx高性能配置Nginx简介Nginx监听端口Nginx虚拟主机Nginx配置locationNginx常规配置Nginx高性能配置Nginx事件配置Nginx配置实例Nginx简介Nginx监听端口Nginx虚拟主机Nginx配置locationNginx常规配置– basic.conf include others– expires.confNginx高性能配置– ab 并发访问的工具Nginx事件配置Nginx配置实例...
2021-06-09 23:14:54 129
原创 3.2.2.3 Lua扩展Nginx
Lua 与NginxNgnix简介![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608080532995.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xhcnJ5X3podV8xMjM=,size_16,color_FFFFFF,t_70)ngx_lua模块协程(Coroutine)Nginx进程模型
2021-06-09 08:02:32 80
原创 3.2.1.1 负载均衡导学
负载均衡什么是负载均衡负载均衡的目的、目标负载均衡实现方式划分负载均衡协议层划分负载均衡类型的技术选择什么是负载均衡负载均衡的目的、目标负载均衡实现方式划分负载均衡协议层划分负载均衡类型的技术选择...
2021-06-01 23:20:25 118
原创 3.1.1.1 系统垂直扩展和水平扩展
系统垂直扩展和水平扩展系统的发展垂直扩展硬件垂直扩展的限制水平扩展系统的发展垂直扩展硬件垂直扩展的限制水平扩展
2021-06-01 23:08:01 261
原创 关于OOM问题解决及优化
OOMOOM-内存1. 内存分配 线上jvm-没有太多样2.内存使用优化方向:如何减少STW时间如何减少GC的次数3.实操--OOM问题OOM-内存OOM: out of memory关于JVM的内存相关的配置很多开源的JAVA组件上有对应的推荐eg:http://rocketmq.apache.org/docs/system-config/1. 内存分配 线上jvm-没有太多样> jvm堆内存占70%机器总内存(经验值)> 相同的Xms和Xmx值---提升系统稳定性 不
2021-05-18 08:11:20 1388 2
原创 3.3.4 Tomcat网络处理线程模型及参数调优
Tomcat网络模型BIO+同步ServletAPR+异步ServletNIO+异步ServletNIO处理流程Tomcat 参数调优参数调优jmx脚本网络模型BIO+同步ServletAPR+异步ServletNIO+异步ServletNIO处理流程Tomcat 参数调优参数调优1、 测试环境准备jmeter地址: https://jmeter.apache.org/download_jmeter.cgi下载地址:http://mirrors.tuna.tsinghua.ed
2021-05-06 18:32:32 376
原创 3.3.2 BIO 网络编程
BIO网络编程简单C/S程序 - 服务端示例Http协议- 请求数据包解析响应数据包解析响应状态码服务端升级版 -返回Http内容 让浏览器可以访问欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导
2021-04-30 12:17:15 235
原创 3.3.1 TCP/UDP协议
TCP/UDP协议OSI网络七层模型各层的主要功能传输控制协议TCPTCP握手机制用户数据报协议UDP和TCP比较Socket编程OSI网络七层模型各层的主要功能传输控制协议TCPTCP握手机制用户数据报协议UDP和TCP比较Socket编程操作系统级别提供的接口,各种语言会在这个基础上进行再次的封装...
2021-04-28 08:10:43 133
原创 3.2.5 JVM参数及调优
JVM参数及调优调优基本概念常用JVM参数GC调优思路通用GC参数垃圾收集器Parallel参数调优垃圾收集器CMS参数调优垃圾收集器G1参数调优运行时JIT编译优化参数调优演示测试环境:1.示例代码-11.1 GC分析,主要查看GC导致的stop-the-world,这将导致我们的程序延时增大。1.2 GC调优2、示例代码 -22.1 GC调优结语调优基本概念常用JVM参数GC调优思路通用GC参数垃圾收集器Parallel参数调优垃圾收集器CMS参数调优cms在jdk9中已经废弃
2021-04-28 07:46:49 164
原创 3.2.4 JDK内置命令工具
JDK内置命令内置命令javapjpsjstatjcmdjinfojhatjmapjstack内置工具JconsoleJvisualVM内置命令javapjava 反编译工具,主要用于根据java字节码文件反汇编为java原代码文件jps显示当前所有java进程pid的命令jstat监视java虚拟机(JVM)统计信息jcmdjinfojhatjmapjstack内置工具JconsoleJvisualVM...
2021-04-27 08:09:13 158
原创 3.2.3 垃圾回收机制
垃圾回收机制自动垃圾收集如何确认内存需要被回收可达性分析算法引用类型和可达性级别![在这里插入图片描述](https://img-blog.csdnimg.cn/20210418232857811.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xhcnJ5X3podV8xMjM=,size_16,color_FFFFFF,t_70)垃圾收集算法分代
2021-04-19 23:19:22 95
原创 3.2.1 类加载机制
类加载机制运行时数据区类生命周期类加载器验证问题查看类对应的加载器JVM如何知道我们的类在何方类不会重复加载类的卸载双亲委派模型运行时数据区类生命周期类加载器验证问题查看类对应的加载器/** * 查看类的加载器实例 */public class ClassLoaderView { public static void main(String[] args) throws Exception { // 加载核心类库的 BootStrap ClassLoade
2021-04-18 23:21:17 435 2
原创 4.3.1 功能与性能
功能与性能系统性能的含义可扩展性可靠性可维护性可用性系统性能的含义可扩展性可靠性fail over : 失效转移 当系统中某台服务器出现问题,可以把请求转移到Backup备份机器fail back : 失效恢复 failover之后,待master故障恢复时候,接受Backup继续恢复处理请求的过程fail safe :失效安全 故障的情况下也不会造成系统损坏,比如数据丢失或者错乱fail fast : 快速失败 预测到失败后,执行特定流程
2021-04-18 21:00:06 91
原创 4.3.7 fork/join并发处理框架
fork/join并发处理框架用来做什么意图梳理实现思路适用用来做什么ForkJoinPool是ExecutorService接口的实现,它专为可以递归分解成小块的工作而设计。fork/join框架将任务分配给线程池中的工作线程,充分利用处理器的优势,提高程序性能。使用fork/join框架的第一步是编写执行一部分工作的代码。雷士的伪代码如下: 如果(当前工作部分足够小) 直接做这项工作其他 把当前工作分成两部分 调用这两个部分并等待结果将此代码包装在ForkJoinTash子类中,通
2021-04-18 20:45:53 88
原创 csp unsafe-inner
unsafe-innerunsafe-innerunsafe-evalunsafe-inner在response header "Content-Security-Policy"中若是 script-src 不支持 ‘unsafe-inner’ 则下列的在jsp/html页面中直接写行内脚本的形式不被允许。禁用在script标签下直接写方法及行内样式 必须通过js脚本的模式引入禁止直接在标签中直接写事件的方式 ,必须在js中添加事件监听禁用在标签内通过style直接添加样式,必须通过css
2021-04-16 14:09:53 149
原创 4.3.6 FutureTask核心思想
FutureTaskwhere-经典场景where-经典场景查询多个系统数据后进行 汇总返回:public class ThreadTest_Demo { static ExecutorService executors = Executors.newScheduledThreadPool(2); public static void main(String[] args) throws ExecutionException, InterruptedException {
2021-04-16 09:20:50 115
原创 4.3.5 并发工具类
并发工具类AQSSemaphoreCountDownLatchCyclicBarrierAQS### 实现AQS的方法可以实现对应的锁Semaphorepublic class Semaphore_Demo {// static KaneSemaphore sp =new KaneSemaphore(6); static Semaphore=new Semaphore(6); public static void main(String[] args) {
2021-04-16 08:27:10 186
JAVA实现手写数据库.zip
2021-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人