- 博客(47)
- 资源 (4)
- 收藏
- 关注
原创 Java故障分析基础
JVM基础垃圾回收器GC日志jps, jinfo命令jmap, jhat命令jstat命令线程dumpjvisualVM / jconsole 参考链接:JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解...
2018-05-06 18:44:44 234
原创 SpringData JPA整理
一 首先熟悉几种jpa中的接口Repository,CrudRepository,PagingAndSortingRepository,JpaRepository,JpaSpecificationExecutorRepository是一个空接口: 1 2 3 4 @Indexed public interface Reposito...
2018-09-30 09:44:36 415
转载 Mockito教程
转载自:https://www.cnblogs.com/Ming8006/p/6297333.html建议阅读:Mockito API:https://static.javadoc.io/org.mockito/mockito-core/2.22.0/org/mockito/Mockito.htmlSpringBoot @MockBean, @SpyBean:https://docs....
2018-09-29 17:56:55 238
原创 SpringMVC单元测试-MockMvc
一 简介 MockMvc实现对Http请求的模拟,可以方便对Controller进行测试,使得测试速度快、不依赖网络环境,而且提供验证的工具,使得请求的验证统一而且很方便。 二 常见使用方式1 MockMvcBuilder构造MockMvc的构造器2 MockMvcRequestBuilders创建请求request3 mockMvc调用perform,执行一个reques...
2018-09-29 17:18:39 729
原创 SpringBoot Actuator & SpringBoot Admin
SpringBoot Actuator提供了很多监控和管理你的spring boot应用的HTTP或者JMX端点,并且你可以有选择地开启和关闭部分功能。当你的spring boot应用中引入依赖之后,将自动的拥有审计、健康检查、Metrics监控功能。Spring Boot Admin用于监控基于Spring Boot的应用,它是在Spring Boot Actuator的基础上提供简洁的...
2018-09-29 17:14:19 217
转载 Swagger
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。主要作用:1. 接口的文档在线自动生成。 2. 功能测试。 相关链接:Swagger使用指南:https://blog.csdn.net/s...
2018-09-29 17:12:18 382
转载 Spring @AliasFor
原文地址:https://blog.csdn.net/wolfcode_cn/article/details/80654730 在Spring的众多注解中,经常会发现很多注解的不同属性起着相同的作用,比如@RequestMapping的value属性和path属性,这就需要做一些基本的限制,比如value和path的值不能冲突,比如任意设置value或者设置path属性的值,都能够通过另...
2018-09-26 10:58:13 530 1
原创 java命令查询属性信息
System.getProperty("user.home")可以查询JAVA系统的user.home属性的值,除了user.home,还有user.dir, file.separator, file.encoding等,可以用命令查看: 1 2 3 4 java -XshowSettings:all -version jav...
2018-09-26 09:44:54 813
原创 windows版本免安装redis, nginx, zookeeper
redis官网:https://redis.io/windows版本免安装redis下载链接:https://github.com/MSOpenTech/redis/releases nginx官网:http://nginx.org/windows版本免安装redis下载链接:http://nginx.org/en/download.html注意:如果直接双击nginx.ex...
2018-09-11 22:02:03 362
转载 fail-fast 与 fail-save 机制的区别
参考:https://blog.csdn.net/bigtree_3721/article/details/67095084
2018-06-04 09:36:45 1482
原创 MAT(Memory Analyzer tool)使用
当线上环境出现OOM/内存泄漏了,怎么办?让虚拟机在发生内存溢出时 Dump 出当前的内存堆转储快照,配置-XX:+HeapDumpOnOutOfMemoryError,当出现OOM时,分析dump下来的hprof文件,一般使用MAT辅助查看。 安装方式:1 eclipse安装MAT插件;安装说明:https://www.ibm.com/developerworks/cn/opensource/o...
2018-05-12 16:29:07 709
转载 dubbo参数调优
dubbo中配置优先级规律:方法级配置优先级高于接口级,consumer的优先级高于provider。详细:consumer的method配置 > provider的method配置consumer的reference配置 > provider的service配置consumer的consumer节点配置 > provider的provider节点配置 本地参数配置优...
2018-05-09 22:29:15 1663
原创 jps, jinfo命令
jps主要用来输出JVM中运行的进程状态信息。-q 不输出类名、Jar名和传入main方法的参数-m 输出传入main方法的参数-l 输出main类或Jar的全限名-v 输出传入JVM的参数 jinfo ...
2018-05-06 19:21:26 585
原创 线程dump
当应用程序运行变慢或者发生故障时,可能通过分析java的Thread Dumps得到分析他们得到阻塞和存在瓶颈的线程。线程堆栈是虚拟机中线程(包括锁)状态的一个瞬间状态的快照,即系统在某一个时刻所有线程的运行状态,包括每一个线程的调用堆栈,锁的持有情况。主要包含的信息包括 1、线程名字,id,线程的数量等。 2、线程的运行状态,锁的状态(锁被哪个线程持有,哪个线程在等待锁等) 3、调用堆...
2018-05-06 18:32:38 655
原创 jstat命令
概述Jstat 查看某个Java进程内的线程堆栈信息,用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:- 类的加载及卸载情况- 查看新生代、老生代及持久代的容量及使用情况- 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间- 查看新生代中Eden区及Survior区中容量及分配情况等常用命...
2018-05-06 18:23:55 657
原创 jmap, jhat命令
jmap命令有下面几种常用的用法jmap [pid]jmap -histo:live [pid] >a.logjmap -dump:live,format=b,file=xxx.xxx [pid]用得最多是后面两个。其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。 jmap查看各个代的内存使用jmap 可以从 core du...
2018-05-06 18:11:52 378
原创 GC日志
阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量。因此增加本节内容来讲解如何理解GC日志。每一种收集器的日志形式都是由它们自身的实现所决定的,换而言之,每个收集器的日志格式都可以不一样。但虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性,例如以下两段典型的GC日志分析。日志分析实例一33.125: [GC [DefNew: 3324K-...
2018-05-06 17:12:17 155
原创 垃圾回收器
HotSpot虚拟机中有7种垃圾收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1。垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法、分代收集)的具体实现,不同商家、不同版本的JVM所提供的垃圾收集器可能会有很在差别,此处主要介绍HotSpot虚拟机中的垃圾收集器。JDK7/8后,HotSpot虚拟...
2018-05-06 16:46:04 181
原创 JVM基础知识
一、目的通过对线上jvm常见故障的用例的分析,提高大家对系统故障的分析和处理能力,减少系统由故障造成的宕机时间,提高系统的可用性。二、JVM概况jvm为java虚拟机的简称,在这里一般指Oralce旗下的Hotspot,在处理故障前首先必须了解JVM相关基础知识。在此简单介绍如下。1.1.1 虚拟机的基本结构JVM内存基本结构如下 各部分功能详细在此不重复描述,请自行百度或查阅相关书籍。 ...
2018-05-06 16:07:12 142
原创 Guava Cache本地缓存
Guava介绍Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法。Guava Cache适用场景1 消耗一些内存空间来提升速度;2 缓存中存放的数据总量不会超出内存容量。(Guava Cache是单个应用运行时的本地缓存,不把数据存放到文...
2018-05-06 12:21:37 550
原创 服务部署
蓝绿部署1 需要两个相同的环境(基础架构),蓝色环境 + 绿色环境。2 当你想要升级某模块/应用 ,在蓝色环境中进行操作,部署新版本,并进行测试。3 监测新版本应用,是否有故障和异常。 3.1 运行良好,删除绿色环境使用的资源。 3.2 运行出现了问题,通过负载均衡器/反向代理/路由指向快速回滚到绿色环境。 注意细节:切换环境时,需要妥当处理未完成的业务和新的业务。需要...
2018-05-06 12:15:36 206
原创 SQL IN, NOT IN, EXISTS, NOT EXISTS
IN与EXISTS执行流程IN:在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快。(IN时不对NULL进行处理)EXISTS:在查询的时候,遍历循环外表,然后看外表中的记录有没有和内表的数据一样的。匹配上就将结果放入结果集中。使用EXISTS关键字进行查询的时候,首先查询的不是子查询的内容,而是查主查询的表, 如果两个...
2018-04-20 18:33:44 133
转载 ==, equals, hashcode的理解
一、java对象的比较等号(==):对比对象实例的内存地址(也即对象实例的ID),来判断是否是同一对象实例;又可以说是判断对象实例是否物理相等; equals():对比两个对象实例是否相等。当对象所属的类没有重写根类Object的equals()方法时,equals()判断的是对象实例的ID(内存地址),是否是同一对象实例;该方法就是使用的等号(==)的判断结果,如Object类的源代码所示:Ja...
2018-04-15 20:24:51 128
原创 google thumbnailator
Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生成处理后的图片,且允许微调图片的生成方式,同时保持了需要写入的最低限度的代码量。还支持对一个目录的所有图片进行批量处理操作。支持的处理操作:1 图片缩放(按原比例;按指定大小;按指定比例;)2 区域裁...
2018-04-15 14:40:49 1198
原创 Mysql date, time, timestamp日期时间相关
date: 格式:YYYY-MM-DD,时间范围:[0000-00-00, 9999-12-31],存储空间:3bytestime: 格式:HH:MM:SS,时间范围:[00:00:00, 23:59:59]timestamp: 1 4个字节存储,时间范围为:'1970-01-01 00:00:01.000000' 到 '2038-01-19 03:14:07.999999'2 以UTC格式(世界...
2018-04-11 18:08:20 368
原创 Freemarker 使用注意事项
上次借助 Freemaker 模板引擎来动态构造 Kylin 访问的 SQL,在使用过程中,遇到了一些坑。${} 输出变量时需要注意:示例 WHERE shop_id = ${val} 里的 val = 1000,构造出来的 SQL ,会变成:shop_id = 1,000,原因:${} 默认情况下 Freemarker 会将数字用逗号分隔解决:加上"?c"(例如示例里的那个,WHERE sho...
2018-04-08 00:09:54 800
原创 Mysql GROUP_CONCAT 使用注意事项
GROUP_CONCAT 函数返回一个字符串结果,该结果由分组中的值连接组合而成,常和 GROUP BY 连用。如果需要自定义分隔符可以使用 SEPARATOR。示例:SELECT GROUP_CONCAT(id) ids FROM sys_oem_resources WHERE pid IS NOT NULL GROUP BY pid; SELECT GROUP_CONCAT(id SEPARA...
2018-04-07 21:16:42 2431
原创 常用linux配置文件
/etc/hosts:用户IP与域名的对应解析表/etc/sysconfig/network:机器名、网卡启动、网关等配置/etc/fstab:记录开机自动挂载的文件系统/etc/rc.local:开机加载的程序/etc/profile:配置全局环境变量配置文件/etc/group:用户组信息/etc/passwd:用户帐号信息/etc/shadow:用户密码信息/etc/sudoers:执行使用...
2018-03-31 23:33:04 509
原创 Java 访问 Kylin 总结
这次开发功能是OEM统计报表。统计报表的数据由大数据平台部的同事收集,数据的展示由我们部门开发。大数据那边使用 Kylin 分布式分析引擎(kylin官方文档)。Kylin 虽比较偏向大数据相关,但最终大佬们决定把访问 Kylin 的 Dubbo 接口也由我们开发,比较坑。 解决方案一:Mybatis首先我们搭建一个 shop-mod-bigdata (+ shop-mod-bigdata-int...
2018-03-31 11:34:20 2132 1
转载 分布式锁2 Java非常用技术方案探讨之ZooKeeper 【转载】
前言: 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。以自己结合实际工作中的一些经验和网上看到的一些资料,做一个讲解和总结。之前我已经写了一篇关于分布式锁的文章: 分布式锁1 Java常用技术方案 。上一篇文章中主要写的是在日常项目中,较为常见的几种实现分布式锁的方法。通过这些方法,基本上可以解决我们日常...
2018-03-31 10:16:56 134
转载 分布式锁1 Java常用技术方案【转载】
前言: 由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。所以自己结合实际工作中的一些经验和网上看到的一些资料,做一个讲解和总结。希望这篇文章可以方便自己以后查阅,同时要是能帮助到他人那也是很好的。 =======================================================...
2018-03-31 10:15:43 178
原创 Maven知识点整理
Maven不仅是依赖管理工具,准确来说是一个项目管理工具,贯穿了整个项目生命周期,编译,测试,打包,发布...依赖是使用Maven坐标来定位的,而Maven坐标 主要 由GAV(groupId, artifactId, version)构成。Maven思想:约定大于配置。依赖归类使用<properties>来归类管理。示例:1234567891011121314151617181920...
2018-03-21 22:26:16 255
原创 分离架构设计
随着业务发展,用户量越来越多,系统会开始遇到一些性能瓶颈。一、动静分离相关链接:《动静分离,改造小收益大》 二、读写分离相关链接:《读写分离,改造小收益大》 三、前后台分离相关链接:《前后台分离,改造小收益大》《前后端分离架构实践》《前后端分离的缺点》...
2018-03-19 18:10:45 213
转载 MySQL行转列与列转行
行转列例如:把图1转换成图2结果展示图1 图2 1234567CREATE TABLE `TEST_TB_GRADE` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `USER_NAME` varchar(20) DEFAULT NULL, `COURSE` varchar(20) DEFAULT NULL, `SCORE` float DEFAULT ...
2018-03-14 22:22:33 365
转载 Java线程池拒绝策略
Java线程池拒绝策略 相关资料:线程池的RejectedExecutionHandler(拒绝策略):http://blog.csdn.net/jgteng/article/details/54411423JAVA线程池:http://blog.csdn.net/jgteng/article/details/54409887...
2018-03-10 11:51:40 163
原创 MySQL 分页优化
MySQL 用 LIMIT offset, length 进行分页。但当表记录数很大,会发现大页数的查询时间明显比小页数的查询时间大。MySQL并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回 N 行,当 offset 特别大的时候,效率就非常的低下解决方式一:在业务上限制总页数。解决方式二:借助索引,快速定位。方式二是比较常用的。示例:devic...
2018-03-01 11:42:45 121
原创 工作电脑小技巧
0 常用 Win + R 后的命令:cmdservices.mscregeditmsconfigmstsccalc 1 使用 Teamviewer 远程工具 2 公司电脑断电,希望来电后自动启动电脑:进入 BIOS,找到电源设置,修改来电后自动重启。不同型号的电脑提示不同,根据英文提示,应该是可以找到的。附上一些找到资源链接:https://jingyan.baidu.com/article/48...
2018-02-11 10:01:18 146
原创 SQL语句兼容性规范
一、DDL兼容性规范(防止表结构变更后,原有的SQL执行报错)只能增加字段或修改字段长度(字段长度改大),不能修改字段名字和类型,不能删除字段不能删除表或者修改表名称 二、DML兼容性规范insert语句需指定列,INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)字段的含义只能扩充而不能修改和缩减,如需修改和缩减
2018-02-05 19:41:24 600
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人