Arganzheng's Blog

stay hungry, stay foolish

JMX学习

关于JMX JMX 全称是 Java Management Extensions, Java5.0开始引入,提供连接、监控和管理远程JVM的方式。 MBean 一个MBean是一个被管理的Java对象,有点类似于JavaBean,一个设备、一个应用或者任何资源都可以被表示为MBean,MBean会暴露一个接口对外,这个接口可以读取或者写入一些对象中的属性,通常一个MBean需要定义一个接口,以MBean结尾,例如:DataSourceMBean, 格式为XXXMBean,这个是规范,必须得遵守。 MBeanServer MBean的容器,提供远程访问、命名空间管理和安全服务。 JMX 指定了在 MBeanServer 和 JMX 客户之间通信所使用的协议...

tomcat监控

法一、使用JMX(RMI) 配置允许远程JMX访问: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port={port to access} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname={optional, allow what ip to access this Tomcat} 具体配置如下: $ cd {tomcat-folder} $ vim bin/seten...

MySQL主从同步失败

最近MySQL经常报主从错误,如果是网络问题,应该是间断性的,但是今天早上一直在报错。上去看了一下log,发现一直在报这个错误: 150527 11:30:01 [Note] Slave I/O thread killed while connecting to master 150527 11:30:01 [Note] Slave I/O thread exiting, read up to log 'master-bin.000052', position 308678027 150527 11:30:01 [Note] Slave SQL thread initialized, starting replication in log 'master-bin....

如何限制某个IP对MySQL的访问

背景 昨天下午发布完不久突然收到很多报警邮件,线上所有接口都报处理超时,基本访问不了。查看tomcat日志,发现大量的获取DB链接timeout错误: 2015-05-14 21:28:21,578 [ERROR] [http-nio-8092-exec-155] me.aranzheng.study.nantianmen.web.ManagementController (ManagementController.java:567): has error org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceE...

如何自定义Spring XML Bean配置

我们一直使用Spring XML配置Bean,已经习惯了Spring的Bean定义语法。 <bean id="..." class="..."> <property name="xxx", value="" /> </bean> TIPS Spring 2.0之前使用的是DTD做XML校验,2.0之后开始使用XSD文件。 使用DTD需要在XML开头指定DTD文件的位置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springfra...

任务调度框架设计和实现

Quartz的问题 1. 任务创建者同时也是执行者之一 现象 有时候我们的任务是动态创建的,并且为了友好,会提供界面创建定时任务。这个创建任务的动作往往是放在一个管理后台系统进行,但是我们不希望这个系统因为创建了Quartz任务就作为运行实例参与到任务的调度执行了。Quartz是一个去中心化的实现,没有区分任务创建者和任务执行者,任何Quartz实例都同时兼顾两种身份。 解决方案 Quartz支持RMI调用,可以在管理后台通过RMI让集群中的任何实例创建任务。当然,也可以通过其他RPC方式调用。 缺点 相对比较麻烦。另外,RPC调用在有多台机器的时候负载均衡比较麻烦。 2. 不支持子集群 现象 有时候我们希望任务能够隔离,比如 A和B这两个Qua...

java standalone模板

经常有一些需求需要跑一个standalone程序。不像war有标准的目录结构,standalone需要自己打包,组织好依赖和classpath等。于是搞了一个standalone模板。大概如下: standalone工程目录如下: mystandalone src bin main resources cache conf-mybatis conf-spring ...

nginx日志格式

最近我们要调用IDL的一个人脸识别接口,但是人家那个接口是部署在南京机房,并且只能内部调用。从最小化成本的考虑,对于海外用户,我们在香港搭建了一个nginx走专线中转进行提速。在国内则是在北京机房。 中转的配置很简单,就是一个简单的proxypass: http { upstream idl { server 10.205.xxx.xx:8788; } upstream idl-test { server 10.46.xxx.xx:8787; } server { listen 8080; server_name face.arganzhen...

Java中如何正确的加载配置文件

取决于配置文件的位置,有不同的获取方式: 文件系统 绝对路径 相对路径 classpath:java特有的 对于文件系统路径,那么简单通过File得到相应的文件,进行加载就可以了。 对于classpath中的文件,那么就需要使用ClassLoader进行加载的了。 在Java中主要有如下方法: URL java.lang.ClassLoader.getResource(String name) URL java.lang.ClassLoader.findResource(String name) URL java.lang.ClassLoader.getSystemResource...

Java DNS查询内部实现

源码分析 在Java中,DNS相关的操作都是通过通过InetAddress提供的API实现的。比如 比如查询域名对应的IP地址: String dottedQuadIpAddress = InetAddress.getByName( "blog.arganzheng.me" ).getHostAddress(); 或者反过来IP对应域名: InetAddress[] addresses = InetAddress.getAllByName("8.8.8.8"); // ip or DNS name for (int i = 0; i < addresses.length; i++) { String hostname = addresses[i]...

×