- jvm监控工具一览
Daniel 大东
jvm
下面是对BTrace、JAD、JMAP、JSTAT、JSTACK、JINFO以及MARK工具的比较表:工具/属性功能适用场景使用难度是否侵入式是否需要重启JVMBTrace动态跟踪和监控Java应用程序性能分析、故障排查、日志收集、安全监控中等无侵入式否JAD反编译Java字节码文件(.class)查看Java代码,尤其是源代码丢失时低无侵入式否JMAP导出堆内存快照、显示内存使用统计分析内存泄漏
- Java技术专题-Java Agent探针的技术介绍(1)
洛神灬殇
前提概要Java调式、热部署、JVM背后的支持者JavaAgent:各个JavaIDE的调试功能,例如eclipse、IntelliJ;热部署功能,例如JRebel、XRebel、spring-loaded;各种线上诊断工具,例如Btrace、Greys,还有阿里的Arthas;各种性能分析工具,例如VisualVM、JConsole等;Agent的介绍JavaAgent直译过来叫做Java代理,
- BTrace的使用
谁说咖啡不苦
简介BTrace可以动态地向目标应用程序的字节码注入追踪代码所依赖的技术:JavaComplierApi、JVMTI、Agent、Instrumentation+ASMBTrace安装新建环境变量:BTRACE_HOME,下载Release来使用。简单的使用packagecom.songshuang.btrace;importcom.sun.btrace.annotations.*;importc
- jvm-sandbox分享
Benett-Chen
Java虚拟机
引子相信大家都遇到过这种场景,线上出故障了,但是关键代码里面忘记打日志了,导致无法复现和准确定位问题。这时候可能需要重写加上日志,部署到服务器,但这第一耗时间,第二可能破坏现场,比如可能是线程池的问题呢?所以如果可以不重启服务器,就可以给代码加上日志,是多么棒的一件事呀。那能不能实现,ofcourse。如何手动实现当然市面上有很多工具可以实现热部署,比如btrace,jvm-sandbox等。那如
- Btrace使用
SparkOnly
btrace是一个java平台上使用的动态追踪工具btrace工具下载github的地址为:https://github.com/btraceio/btrace/tree/master下载地址为:https://github.com/btraceio/btrace/releases这里记录下我对btrace的使用示例代码编写新建maven工程其中配置文件如下:4.0.0cn.yebtrace1.0
- Java Agent
小白龙ProMonkey
javajvm开发语言
摘要JavaAgent就是Java探针,是一个JVM插件,常用于代码热更新,AOP,JVM监控等功能。这个技术对大多数的同学来说可能有点陌生,但是对Java软件开发人员来说肯定都多多少少接触过,只是相对其原理,我们更多的关注在以它为核心的工具使用上。例如常见的热部署(JRebel,spring-loaded)、各种线上诊断工具(btrace,阿里的Arthas)、代码覆盖率工具(JaCoCo),如
- Btrace入门
程序员青菜学厨艺
Java技术java
一、前言今天收到客户报的一个Bug,登录系统查看发现没有相关日志输出,方法中相关的请求参数及变量都没有打印出来,给排查问题造成很大不便,我们知道解决Java系统疑难杂症有两大利器,其一是tcpdump用于网络抓包分析、其二是Btrace用于动态跟踪Java代码,tcpdump在前面一些文章有介绍它的简单使用(用抓包工具分析HTTPS报文)、Btrace其实我也没有实际用过,但因为第一次听说是在20
- 重要升级!btrace 2.0 技术原理大揭秘
字节跳动技术团队
动手点关注干货不迷路项目GitHub地址:https://github.com/bytedance/btrace背景介绍在一年多前,我们对外正式开源了btrace(AKARheaTrace),它是基于Systrace的高性能Trace工具,目前字节跳动已经有接近10+产品团队使用btrace做日常性能优化工作。在这一年期间,我们收到很多社区以及公司内部反馈,包括使用体验、性能体验、监控数据等上都
- Java笔记:BTrace-Java线上异常排查
zui初的梦想
java笔记开发语言
BTrace是什么BTrace是检查和解决线上的问题的杀器,BTrace可以通过编写脚本的方式,获取程序执行过程中的一切信息,并且,注意了,不用重启服务,是的,不用重启服务。写好脚本,直接用命令执行即可,不用动原程序的代码。原理总体来说,BTrace是基于动态字节码修改技术(Hotswap)来实现运行时java程序的跟踪和替换。大体的原理可以用下面的公式描述:Client(Javacompilea
- Btrace那些事
张兆坤的那些事
Javauser
BTrace系列之一:简介BTrace系列之二:简单示例BTrace系列之三:实际案例分析BTrace使用简介BTraceUser'sGuide
- 在IDE开发工具中(idea、eclipse等)配置BTrace的编码环境
重色思倾国
BTrace是基于动态字节码修改技术(Hotswap)实现java实时性能分析与动态监控。看到网上有人问如何在IDE(如IDEA、eclipse等)中编码BTrace实现自动提示的功能。以IDEA为例(其他IDE工具同理),要实现相关提示自然就需要有相应的库文件支持。要么来自IDEA自带的库,要么来自第三方,在编写BTrace源码时,既然没有提示,肯定需要自己手动引入BTrace相关jar包。1.
- 在线Profiling技术之Btrace
CleverApe
线上问题偶尔发生,最让人苦恼的是,在问题追踪过程中,有些关键位置没有打log,无法进一步确定问题原因。重新加日志发布项目?当然可以,但显然线上运行服务,大部分情况下,是不允许这样做的。为了解决这种问题,Btrace应运而生。查了不少Btrace资料,本人也亲自实践了一下,总结出一些遇到的坑和解决方法。Btrace使用有两种方法1.工程引入maven依赖com.sun.tools.btracebtr
- Java性能调优及问题追踪--Btrace的使用
老兵一枚
原文地址:https://www.cnblogs.com/rwxwsblog/p/6248210.html生产环境中经常遇到格式各样的问题,如OOM或者莫名其妙的进程死掉。一般情况下是通过修改程序,添加打印日志;然后重新发布程序来完成。然而,这不仅麻烦,而且带来很多不可控的因素。有没有一种方式,在不修改原有运行程序的情况下获取运行时的数据信息呢?如方法参数、返回值、全局变量、堆栈信息等。Btrac
- 从底层入手,解析字节码增强和Btrace应用
邴越
这篇文章聊下字节码和相关的应用。1、机器码和字节码机器码(machinecode),学名机器语言指令,有时也被称为原生码(NativeCode),是电脑的CPU可直接解读的数据。通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还
- Java动态追踪之BTrace【0】:官方Wiki译文与译注
IconExp
无关紧要的译序:几个月前,在网上翻到了章亦春巨巨关于动态追踪技术的博文,被Dtrace这个工具吸引了。特别是可以通过它在对目标程序运行影响很小的情况下,生成目标程序运行的火焰图这一点。而无奈最近几个月的工作占据了我从十点睁开眼到凌晨闭眼睡觉的所有时间,抽不出时间来研究下这个东西。意识到这个工作状态会一直持续下去,所以辞职了。这几天就好好把这个东西搞一下。Dtrace工具使用的主要场合是,使用D语言
- 【Java综合专栏】「引领序幕」全链路追踪原理之Java Agent探针的技术介绍(上篇)
洛神灬殇
深入浅出JVM原理及调优深入浅出Java原理及实战javajvm开发语言
前提概要Java调式、热部署、JVM背后的支持者JavaAgent:各个JavaIDE的调试功能,例如eclipse、IntelliJ;热部署功能,例如JRebel、XRebel、spring-loaded;各种线上诊断工具,例如Btrace、Greys,还有阿里的Arthas;各种性能分析工具,例如VisualVM、JConsole等;Agent的介绍JavaAgent直译过来叫做Java代理,
- 使用arthas进行线上java应用诊断
enilu
最近发现一个挺好用的工具:alibaba出的Arthas。这是一个java应用线上诊断工具。如果你之前用过Btrace,那么理解起来Arthas就不难。这两个都是java线上应用诊断工具。比如你想了解当前执行应用的内存占用,线程情况,具体参数值等信息,无需麻烦的打日志,上线就可以用上面的工具轻轻松松解决问题。之前也了解过Btrace,但是鉴于用起来太麻烦,一直不喜欢用。这次发现了Arthas,用起
- 阿里诊断工具arthas的使用
我叫小八
java
引言它是阿里开源的Java诊断工具,进一步简化了动态追踪技术,有了它,可以直接查看类加载信息、JVM信息、线程堆栈信息、追踪方法执行情况,反编译类文件等,基本涵盖了前面提到的java命令行工具的功能和BTrace的功能。无需太多额外工作,只需熟悉Arthas提供的命令即可,很方便。其实Arthas底层跟BTrace一样,是基于jvmAgent方式,使用Instrumentation方式修改字节码方
- java常用性能监控或调试工具一览
重色思倾国
1.MAT主要针对堆内存分析2.jmapdmup出堆内存快照3.jstackdump出线程快照4.visualVM/Jconsole一站式分析平台(可插件拓展)5.BTrace依赖动态字节码实现动态监控6.SA(ServiceabilityAgent)/HSDB(对SA封装)基于快照分析jvm底层调用情况7.linux各种命令perf、iostat、mpstat、sar、vmstat、top、ne
- 第三章:基于BTrace的监控调试
秦仙云
本文主要参考慕课网若鱼老师课程Java生产环境下性能监控与调优详解请支持正版,抵制盗版,维护每一位辛苦付出的人的合法权益!本章关键词:BTrace、拦截、注意事项一、入门1.做什么的?可以在应用程序不重启,不修改的情况下,正在运行的情况下,动态的修改字节码,达到监控调试的目的可以动态的向目标应用程序的字节码注入追踪代码用到的技术JavaComplierApi、JVMTI、Agent、Instrum
- 利用神器BTrace 追踪线上 Spring Boot应用运行时信息
java菜
在现实业务中,Kafka经常会遇到的一个集成场景就是,从数据库获取数据,因为关系数据库是一个非常丰富的事件源。数据库中的现有数据以及对该数据的任何更改都可以流式传输到Kafka主题中,在这里这些事件可用于驱动应用,也可以流式传输到其它数据存储(比如搜索引擎或者缓存)用于分析等。实现这个需求有很多种做法,但是在本文中,会聚焦其中的一个解决方案,即Kafka连接器中的JDBC连接器,讲述如何进行配置,
- JVM沙箱容器,一种JVM的非侵入式运行期AOP解决方案
JAVA高级
目标群体BTRACE好强大,也曾技痒想做一个更便捷、更适合自己的问题定位工具,既可支持线上链路监控排查,也可支持单机版问题定位。有时候突然一个问题反馈上来,需要入参才能完成定位,但恰恰没有任何日志,甚至出现在别人的代码里,好想开发一个工具可以根据需要动态添加日志,最好还能按照业务ID进行过滤。系统间的异常模拟可以使用的工具很多,可是系统内的异常模拟怎么办,加开关或是用AOP在开发系统中实现,好想开
- 04.BTrace 监控与调试
心释逍遥lx
Jvm与调优imoocJVMMarkdownBTrace可以动态地向目标应用程序的字节码注入追踪代码BTrace只能本地执行,不支持远程BTrace可以在生产环境下使用,但是被修改的字节码不会被还原JavaComplierApi、JVMTI、Agent、Instrucmentation+ASMBTrace安装下载BTrace:https://github.com/btraceio/btrace新建
- BTrace 初探
一个喜欢折腾的健身爱好者
BTrace是一款java诊断工具.今天使用的时候碰到几个坑,先记录一下.下载下来以后直接运行报错root@iZ2ze89756yjbvq7le6obdZ:~/btrace-bin-1.3.11/bin#./btrace6582/root/testBtrace.javaExceptioninthread"main"java.lang.NoClassDefFoundError:com/sun/sou
- 线上调试debug神器 Arthas(阿尔萨斯) 简单介绍&教程
洪韭菜
Tool
今天我们来看一大利器:arthas(阿尔萨斯)arthas官网地址:https://alibaba.github.io/arthas/arthas的文档真的写得非常棒,可以说一看就会。但是我还是想写一下一些自己的文档,毕竟我们往往只会用到其中皮毛功能而已。翻阅其所有文档也还是有点浪费了!返回顶部一、为什么要用Arthas?其实,这个问题在前面已回答,而且,你为什么要用btrace?同理!具体理由如
- Btrace线上跟踪Java程序问题点
十五倍压枪
背景:线上服务接口在大量调用中出现相同的参数却有时会超时返回空结果现象,本地测试无法顺利重现该现象,初步怀疑是httpclient连接耗尽导致无法获得新连接从而直接超时返回。但是无法从日志中做出判断,因为日志没有任何报错信息只有查询耗时达到超时时间。方案:1.调整参数试图本地还原出线上出现的场景。2.使用Btrace编写脚本在线调试/*https://www.cnblogs.com/zengkef
- btrace 开源!基于 Systrace 高性能 Trace 工具
字节跳动技术团队
pythonjavaandroidlinux数据库
介绍btrace(又名RheaTrace)是抖音基础技术团队自研的一款高性能AndroidTrace工具,它基于Systrace实现,并针对Systrace不足之处加以改进,核心改进点如下。效率提升:编译期间为App方法自动注入自定义事件,并提供高效、灵活配置规则。性能提升:改进Systrace文件实时写atrace数据方式,性能提升最大400%以上。实用性提升:额外提供更详细IO等数据,大幅提升
- [原]btrace 开源!基于 Systrace 高性能 Trace 工具
ByteDanceTech
介绍btrace(又名RheaTrace)是抖音基础技术团队自研的一款高性能AndroidTrace工具,它基于Systrace实现,并针对Systrace不足之处加以改进,核心改进点如下。效率提升:编译期间为App方法自动注入自定义事件,并提供高效、灵活配置规则。性能提升:改进Systrace文件实时写atrace数据方式,性能提升最大400%以上。实用性提升:额外提供更详细IO等数据,大幅提升
- Java问题排查
星城天空
GC日志:在线分析:GCEasy:https://gceasy.io/分析工具:GCPlot,GCViewer线程Dump:在线分析FastThread:https://fastthread.io/分析工具:TDA堆Dump:在线分析:HeapHero:https://heaphero.io/分析工具:MATBTrace系:btrace:https://github.com/btraceio/bt
- BTrace使用小结
lfckop
简介BTrace是一个安全的JVM动态追踪工具,最初为原Sun公司Kenai项目下面的一个子项目。典型的使用场景是,“我要查个问题,可那个方法没有打印入口参数和返回结果日志”,“我想看某个方法的执行耗时”,“我想查看某方法如System.GC()的调用栈”等等,这些都是BTrace可以小试牛刀的地方。它的优势是,直接attach应用JVM,不用重启应用进程,可比较快速方便地定位问题。不错的教程如果
- Java实现的简单双向Map,支持重复Value
superlxw1234
java双向map
关键字:Java双向Map、DualHashBidiMap
有个需求,需要根据即时修改Map结构中的Value值,比如,将Map中所有value=V1的记录改成value=V2,key保持不变。
数据量比较大,遍历Map性能太差,这就需要根据Value先找到Key,然后去修改。
即:既要根据Key找Value,又要根据Value
- PL/SQL触发器基础及例子
百合不是茶
oracle数据库触发器PL/SQL编程
触发器的简介;
触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。触发器和过程函数类似 过程函数必须要调用,
一个表中最多只能有12个触发器类型的,触发器和过程函数相似 触发器不需要调用直接执行,
触发时间:指明触发器何时执行,该值可取:
before:表示在数据库动作之前触发
- [时空与探索]穿越时空的一些问题
comsci
问题
我们还没有进行过任何数学形式上的证明,仅仅是一个猜想.....
这个猜想就是; 任何有质量的物体(哪怕只有一微克)都不可能穿越时空,该物体强行穿越时空的时候,物体的质量会与时空粒子产生反应,物体会变成暗物质,也就是说,任何物体穿越时空会变成暗物质..(暗物质就我的理
- easy ui datagrid上移下移一行
商人shang
js上移下移easyuidatagrid
/**
* 向上移动一行
*
* @param dg
* @param row
*/
function moveupRow(dg, row) {
var datagrid = $(dg);
var index = datagrid.datagrid("getRowIndex", row);
if (isFirstRow(dg, row)) {
- Java反射
oloz
反射
本人菜鸟,今天恰好有时间,写写博客,总结复习一下java反射方面的知识,欢迎大家探讨交流学习指教
首先看看java中的Class
package demo;
public class ClassTest {
/*先了解java中的Class*/
public static void main(String[] args) {
//任何一个类都
- springMVC 使用JSR-303 Validation验证
杨白白
springmvc
JSR-303是一个数据验证的规范,但是spring并没有对其进行实现,Hibernate Validator是实现了这一规范的,通过此这个实现来讲SpringMVC对JSR-303的支持。
JSR-303的校验是基于注解的,首先要把这些注解标记在需要验证的实体类的属性上或是其对应的get方法上。
登录需要验证类
public class Login {
@NotEmpty
- log4j
香水浓
log4j
log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, HTML, DATABASE
#log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, ROLLINGFILE, HTML
#console
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4
- 使用ajax和history.pushState无刷新改变页面URL
agevs
jquery框架Ajaxhtml5chrome
表现
如果你使用chrome或者firefox等浏览器访问本博客、github.com、plus.google.com等网站时,细心的你会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变。并且能够很好的支持浏览器前进和后退。
是什么有这么强大的功能呢?
HTML5里引用了新的API,history.pushState和history.replaceState,就是通过
- centos中文乱码
AILIKES
centosOSssh
一、CentOS系统访问 g.cn ,发现中文乱码。
于是用以前的方式:yum -y install fonts-chinese
CentOS系统安装后,还是不能显示中文字体。我使用 gedit 编辑源码,其中文注释也为乱码。
后来,终于找到以下方法可以解决,需要两个中文支持的包:
fonts-chinese-3.02-12.
- 触发器
baalwolf
触发器
触发器(trigger):监视某种情况,并触发某种操作。
触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)
语法:
create trigger triggerName
after/before 
- JS正则表达式的i m g
bijian1013
JavaScript正则表达式
g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止。 i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写。 m:表示
- HTML5模式和Hashbang模式
bijian1013
JavaScriptAngularJSHashbang模式HTML5模式
我们可以用$locationProvider来配置$location服务(可以采用注入的方式,就像AngularJS中其他所有东西一样)。这里provider的两个参数很有意思,介绍如下。
html5Mode
一个布尔值,标识$location服务是否运行在HTML5模式下。
ha
- [Maven学习笔记六]Maven生命周期
bit1129
maven
从mvn test的输出开始说起
当我们在user-core中执行mvn test时,执行的输出如下:
/software/devsoftware/jdk1.7.0_55/bin/java -Dmaven.home=/software/devsoftware/apache-maven-3.2.1 -Dclassworlds.conf=/software/devs
- 【Hadoop七】基于Yarn的Hadoop Map Reduce容错
bit1129
hadoop
运行于Yarn的Map Reduce作业,可能发生失败的点包括
Task Failure
Application Master Failure
Node Manager Failure
Resource Manager Failure
1. Task Failure
任务执行过程中产生的异常和JVM的意外终止会汇报给Application Master。僵死的任务也会被A
- 记一次数据推送的异常解决端口解决
ronin47
记一次数据推送的异常解决
需求:从db获取数据然后推送到B
程序开发完成,上jboss,刚开始报了很多错,逐一解决,可最后显示连接不到数据库。机房的同事说可以ping 通。
自已画了个图,逐一排除,把linux 防火墙 和 setenforce 设置最低。
service iptables stop
- 巧用视错觉-UI更有趣
brotherlamp
UIui视频ui教程ui自学ui资料
我们每个人在生活中都曾感受过视错觉(optical illusion)的魅力。
视错觉现象是双眼跟我们开的一个玩笑,而我们往往还心甘情愿地接受我们看到的假象。其实不止如此,视觉错现象的背后还有一个重要的科学原理——格式塔原理。
格式塔原理解释了人们如何以视觉方式感觉物体,以及图像的结构,视角,大小等要素是如何影响我们的视觉的。
在下面这篇文章中,我们首先会简单介绍一下格式塔原理中的基本概念,
- 线段树-poj1177-N个矩形求边长(离散化+扫描线)
bylijinnan
数据结构算法线段树
package com.ljn.base;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
/**
* POJ 1177 (线段树+离散化+扫描线),题目链接为http://poj.org/problem?id=1177
- HTTP协议详解
chicony
http协议
引言
- Scala设计模式
chenchao051
设计模式scala
Scala设计模式
我的话: 在国外网站上看到一篇文章,里面详细描述了很多设计模式,并且用Java及Scala两种语言描述,清晰的让我们看到各种常规的设计模式,在Scala中是如何在语言特性层面直接支持的。基于文章很nice,我利用今天的空闲时间将其翻译,希望大家能一起学习,讨论。翻译
- 安装mysql
daizj
mysql安装
安装mysql
(1)删除linux上已经安装的mysql相关库信息。rpm -e xxxxxxx --nodeps (强制删除)
执行命令rpm -qa |grep mysql 检查是否删除干净
(2)执行命令 rpm -i MySQL-server-5.5.31-2.el
- HTTP状态码大全
dcj3sjt126com
http状态码
完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在线查阅。HTTP 1.1的状态码被标记为新特性,因为许多浏览器只支持 HTTP 1.0。你应只把状态码发送给支持 HTTP 1.1的客户端,支持协议版本可以通过调用request
- asihttprequest上传图片
dcj3sjt126com
ASIHTTPRequest
NSURL *url =@"yourURL";
ASIFormDataRequest*currentRequest =[ASIFormDataRequest requestWithURL:url];
[currentRequest setPostFormat:ASIMultipartFormDataPostFormat];[currentRequest se
- C语言中,关键字static的作用
e200702084
C++cC#
在C语言中,关键字static有三个明显的作用:
1)在函数体,局部的static变量。生存期为程序的整个生命周期,(它存活多长时间);作用域却在函数体内(它在什么地方能被访问(空间))。
一个被声明为静态的变量在这一函数被调用过程中维持其值不变。因为它分配在静态存储区,函数调用结束后并不释放单元,但是在其它的作用域的无法访问。当再次调用这个函数时,这个局部的静态变量还存活,而且用在它的访
- win7/8使用curl
geeksun
win7
1. WIN7/8下要使用curl,需要下载curl-7.20.0-win64-ssl-sspi.zip和Win64OpenSSL_Light-1_0_2d.exe。 下载地址:
http://curl.haxx.se/download.html 请选择不带SSL的版本,否则还需要安装SSL的支持包 2. 可以给Windows增加c
- Creating a Shared Repository; Users Sharing The Repository
hongtoushizi
git
转载自:
http://www.gitguys.com/topics/creating-a-shared-repository-users-sharing-the-repository/ Commands discussed in this section:
git init –bare
git clone
git remote
git pull
git p
- Java实现字符串反转的8种或9种方法
Josh_Persistence
异或反转递归反转二分交换反转java字符串反转栈反转
注:对于第7种使用异或的方式来实现字符串的反转,如果不太看得明白的,可以参照另一篇博客:
http://josh-persistence.iteye.com/blog/2205768
/**
*
*/
package com.wsheng.aggregator.algorithm.string;
import java.util.Stack;
/**
- 代码实现任意容量倒水问题
home198979
PHP算法倒水
形象化设计模式实战 HELLO!架构 redis命令源码解析
倒水问题:有两个杯子,一个A升,一个B升,水有无限多,现要求利用这两杯子装C
- Druid datasource
zhb8015
druid
推荐大家使用数据库连接池 DruidDataSource. http://code.alibabatech.com/wiki/display/Druid/DruidDataSource DruidDataSource经过阿里巴巴数百个应用一年多生产环境运行验证,稳定可靠。 它最重要的特点是:监控、扩展和性能。 下载和Maven配置看这里: http
- 两种启动监听器ApplicationListener和ServletContextListener
spjich
javaspring框架
引言:有时候需要在项目初始化的时候进行一系列工作,比如初始化一个线程池,初始化配置文件,初始化缓存等等,这时候就需要用到启动监听器,下面分别介绍一下两种常用的项目启动监听器
ServletContextListener
特点: 依赖于sevlet容器,需要配置web.xml
使用方法:
public class StartListener implements
- JavaScript Rounding Methods of the Math object
何不笑
JavaScriptMath
The next group of methods has to do with rounding decimal values into integers. Three methods — Math.ceil(), Math.floor(), and Math.round() — handle rounding in differen