- 博客(26)
- 资源 (13)
- 收藏
- 关注
原创 jstat -gcutil 命令使用
命令格式jstat -gcutil pid interval(ms)举例:jstat -gcutil 16361 1000线上服务器的GC情况如下:参数说明如下:S0: 新生代中Survivor space 0区已使用空间的百分比 S1: 新生代中Survivor space 1区已使用空间的百分比 E: 新生代已使用空间的百分比 O: 老年代已使用空...
2019-02-25 18:15:45 34468
转载 jvm优化—监控工具:诊断内存泄露、cpu飙升、线程死锁、响应变慢
在常见的线上问题时候,我们多数会遇到以下问题:内存泄露 某个进程突然cpu飙升 线程死锁 响应变慢...等等其他问题。如果遇到了以上这种问题,在线下可以有各种本地工具支持查看,但到线上了,就没有这么多的本地调试工具支持,我们该如何基于监控工具来进行定位问题?我们一般会基于数据收集来定位,而数据的收集离不开监控工具的处理,比如:运行日志、异常堆栈、GC日志、线程快照、堆快照等。...
2019-02-25 18:08:05 5162
转载 JProfiler10: 功能介绍
摘要: 性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。Java 作为最流行的编程语言之一,其应用性能诊断一直受到业界广泛关注。可能造成 Java 应用出现性能问题的因素非常多,例如线程控制、磁盘读写、数据库访问、网络I/O、垃圾收集等。背景性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天...
2019-02-25 15:40:13 2396
原创 JProfiler10.1.3:远程Linux服务器Tomcat的JVM性能监控
JProfiler安装环境Centos Linux 7.4 tomcat 8.0、jdk1.8.0_181 jprofiler_linux_10_1_3.tar.gz jprofiler_windows-x64_10_1_3下载软件官网地址:http://www.ej-technologies.com/download/jprofiler/files ,一个lin...
2019-02-25 11:49:20 9752
转载 如何合理的规划一次jvm性能调优
JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响。但也有一些基础的理论和原则,理解这些理论并遵循这些原则会让你的性能调优任务将会更加轻松。为了更好的理解本篇所介绍的内容。你需要已经了解和遵循以下内容:1、已了解jvm 垃圾收集器2、已了解jvm 性能监控常用工具3、能够读懂gc日志4、确信不为了调优而调优,jvm调优不能解决一切性能问题...
2019-02-22 17:17:31 9962
原创 Hystrix:普通Javaweb结合AOP使用
一、什么是HystrixHystrix是Netflix的一个开源框架,地址如下:https://github.com/Netflix/Hystrix中文名为“豪猪”,即平时很温顺,在感受到危险的时候,用刺保护自己;在危险过去后,还是一个温顺的肉球。所以,整个框架的核心业务也就是这2点:何时需要保护 如何保护 二、何时需要保护 对于一个系统而言,它往往承担着2层角...
2019-02-21 17:09:29 10808
原创 Hystrix: fallback method wasn't found
错误代码@HystrixCommand(fallbackMethod="getFallback",commandKey="getUserByName",groupKey="UserGroup", threadPoolKey="getUserByNameThread") @Override public String getUserByName(Stri...
2019-02-21 14:58:56 10319
转载 Hystrix使用笔记
文章目录Hystrix使用笔记一、简介二、Hystrix依赖隔离的原理三、Hystrix熔断机制四、Hystrix配置参数详细说明基础属性配置CommandGroupCommandKeyThreadPoolKey命令属性配置(1)执行属性execution.isolation.strategyexecution.isolation.thread.timeoutInMillisecondsexecu...
2019-02-20 17:24:15 501
原创 Spring:动态刷新JavaWeb应用ApplicationContext配置
在web应用开发中时常需要修改配置,并动态的重新加载ApplicationContext。比如,设置和切换数据库。 这时,不得不重启tomcat来加载spring配置文件 如果能在不重启tomcat的情况下,手动动态加载spring 配置文件,动态重启读取spring配置文件,这样会十分方便。 spring提供了refresh刷新机制。@RequestMapping(value="...
2019-02-20 10:42:37 9940 3
转载 JVM:类加载机制
前言:有这样一道面试题:class Singleton{ private static Singleton singleton = new Singleton(); public static int value1; public static int value2 = 0; private Singleton(){ value1++;...
2019-02-19 18:13:04 9072
转载 Java8 和 Java 9中并发工具的改变
Java 8 和 Java 9中 concurrent包有了一些改变, 本文对这些改变做了汇总。Java 8 中 Concurrent package的改变java.util.concurrent中新的类和接口增加了两个新接口和4个新类:接口CompletableFuture.AsynchronousCompletionTask 接口CompletionStage ...
2019-02-19 09:54:27 584
转载 Java8 :默认接口方法
从java8开始,接口不只是一个只能声明方法的地方,我们还可以在声明方法时,给方法一个默认的实现,我们称之为默认接口方法,这样所有实现该接口的子类都可以持有该方法的默认实现。一. 引入默认接口方法的背景默认方法让我们能给我们的软件库的接口增加新的方法,并且能保证对使用这个接口的老版本代码的兼容性。java8可以看做是java版本更新迭代过程中变化最大的一个版本(与时俱进,方能不...
2019-02-17 14:56:09 9470
转载 Java8 :流式数据处理
java8的流式处理极大了简化我们对于集合、数组等结构的操作,让我们可以以函数式的思想去操作,本篇文章将探讨java8的流式数据处理的基本使用。一. 流式处理简介在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个...
2019-02-17 14:53:31 13021 2
转载 Java8 : Optional 类,优雅判定null
Optional不是对null关键字的一种替代,而是对于null判定提供了一种更加优雅的实现NullPointException可以说是所有java程序员都遇到过的一个异常,虽然java从设计之初就力图让程序员脱离指针的苦海,但是指针确实是实际存在的,而java设计者也只能是让指针在java语言中变得更加简单、易用,而不能完全的将其剔除,所以才有了我们日常所见到的关键字null。空指...
2019-02-17 14:49:20 26532 4
转载 Java8 : Lambda 表达式
lambda表达式是java8给我们带来的几个重量级新特性之一,借用lambda表达式,可以让我们的java程序设计更加简洁。最近新的项目摒弃了1.6的版本,全面基于java8进行开发,本文将探讨行为参数化、lambda表达式,以及方法引用。 一. 行为参数化行为参数化简单的说就是函数的主体仅包含模板类通用代码,而一些会随着业务场景而变化的逻辑则以参数的形式传递到函数之中,采用行为...
2019-02-17 14:43:23 9345
原创 Java8:从匿名内部类到Lambda表达式&方法引用
匿名内部类、lambda和方法引用其实是相通的,从匿名内部类到lambda到方法引用是一个进化的过程,是一个简化的过程,更加是一个从抽象的过程。作用都是实现接口方法,换句话说就是实现接口;只是这个接口只有一个抽象方法。匿名内部类省去了实现类,直接new 接口名(){...} 没有实现类名,实际就是实现且创建了一个接口对象。匿名内部类也就是没有名字的内部类 正因为没有名字,所以...
2019-02-17 13:57:08 16392 4
翻译 Java8:20 个使用 Java CompletableFuture的例子
异步计算所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。 JDK5新增了Future接口,用于描述一个异步计算的结果。虽然 Future 以及相关使用方法提供了异步执行任务的能力,但是对于结果的获取却是很不方便,只...
2019-02-16 16:08:49 1632
原创 分布式事务:中间件方案
TX-LCN https://www.txlcn.org/zh-cn/高性能的分布式事务框架兼容dubbo、springcloud框架,支持RPC框架拓展,支持各种ORM框架、NoSQL、负载均衡、事务补偿LCN分布式事务框架是一款事务协调性的框架,框架本身并不创建事务,只是对本地事务做协调控制。 因此该框架与其他第三方的框架兼容性强,支持所有的关系型数据库事务,支持...
2019-02-15 13:34:04 10956
转载 分库分表:订单中心,多key业务如何进行数据库切分
本篇将以“订单中心”为例,介绍“多key”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践。什么是“多key”类业务所谓的“多key”,是指一条元数据中,有多个属性上存在前台在线查询需求。订单中心业务分析订单中心是一个非常常见的“多key”业务,主要提供订单的查询与修改的服务,其核心元数据为:Order(oid, buyer_uid, s...
2019-02-14 17:53:59 3834 1
转载 分库分表:用户中心,单key业务如何进行数据库切分
用户中心数据库切分架构实践|场景介绍 用户中心是一个十分常见的业务系统,涵盖用户登录、注册、信息查询与修改等服务。 用户的核心元数据为: User(uid,login_name,nickname,password,sex,age) 其中 ● uid :用户ID,主键 ● login_name,n...
2019-02-14 17:28:02 10006
转载 Redis: 分布式锁的正确实现方式( Java 版 )
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的...
2019-02-14 16:43:02 9036
原创 分库分表:中间件方案对比
背景分库分表这个词相信很多人都不陌生,在互联网公司数据到达一定规模的时候,多数都会对数据进行分库分表,或者也有人叫分片,英文翻译为Sharding;更加准确来说我们常常关心的是水平分片,即单个业务的某些表到达一定规模后,即使建立索引也无法从根本上带来很大的性能提升,这时我们会考虑把单表拆分。以MySQL为例,B+树索引的深度会随着记录的增多而逐渐加深,根据索引查询的开销也会越来越大...
2019-02-13 09:55:48 49215 2
原创 分库分表:应用场景、方式方法、面临问题
为什么要分库分表移动互联网时代,海量的用户每天产生海量的数量,比如:用户表、订单表、交易流水表。以支付宝用户为例,8亿;微信用户更是10亿。 订单表更夸张,比如美团外卖,每天都是几千万的订单。 淘宝的历史订单总量应该百亿,甚至千亿级别,这些海量数据远不是一张表能Hold住的。 事实上MySQL单表可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW以下是最佳...
2019-02-12 14:59:28 12474 3
转载 Java 必须掌握的 20+ 种 Spring 常用注解
注解本身没有功能的,就和xml一样。注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓配置。本文主要罗列Spring|SpringMVC相关注解的简介。Spring部分1.声明bean的注解@Component 组件,没有明确的角色@Service 在业务逻辑层使用(service层)@Repository 在数据访问层使用(dao层)@Controller...
2019-02-11 19:57:19 9421
转载 聊聊高并发系统之限流特技
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限...
2019-02-11 19:05:31 530
原创 SQL:union all和union的区别 和使用
如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复 union 是取唯一值,记录没有重复1、UNION 的语法:[SQL 语句 1]UNION[SQL 语句 2]...
2019-02-11 09:24:10 19704
MySQL:使用mysqldump在Windows数据库定时备份
2020-12-11
nssm-2.24-103.zip
2020-12-11
Linux--Java环境搭建(Jdk8、MySQL5.7、Redis3.2)
2019-04-20
idea :插件Statistic 统计代码数量和行数
2018-12-21
luke-6.6.0
2018-07-24
grafana-4.6.2.linux-x64.tar.gz
2017-11-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人