摘要: Hotspot Architecture Hotspot虚拟机架构 JVM主要组件包括类加载器,运行时数据区和执行引擎。 Key Hotspot Components 关键组件 在进行性能调优时,主要关注虚拟机的三个组件。java堆保存着对象实例,由JVM启动时选定的GC进行维护。大部分调优参数都涉 阅读全文
posted @ 2018-08-28 17:22 benx621 阅读(156) 评论(0) 推荐(0) 编辑
摘要: Java常用的八种排序算法与代码实现 排序问题一直是程序员工作与面试的重点,今天特意整理研究下与大家共勉!这里列出8种常见的经典排序,基本涵盖了所有的排序算法。 1.直接插入排序 我们经常会到这样一类排序问题:把新的数据插入到已经排好的数据列中。将第一个数和第二个数排序,然后构成一个有序序列将第三个 阅读全文
posted @ 2018-07-17 09:25 benx621 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 一、注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把 阅读全文
posted @ 2018-04-13 13:31 benx621 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 1、基本操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service iptables start # 重启防火 阅读全文
posted @ 2018-03-31 17:42 benx621 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 转http://www.cnblogs.com/wangweiNB/p/5620845.html 一、redis主从搭建 1、搭建redis master 1>redis安装 mkdir -p /usr/local/webserver/redis //安装目录 cd /usr/local/webse 阅读全文
posted @ 2017-08-31 21:18 benx621 阅读(192) 评论(0) 推荐(0) 编辑
摘要: collector种类GC在 HotSpot VM 5.0里有四种:incremental (sometimes called train) low pause collector已被废弃,不在介绍.类别serial collectorparallel collector( throughput c... 阅读全文
posted @ 2015-10-13 15:28 benx621 阅读(190) 评论(0) 推荐(0) 编辑
摘要: JVM参数的含义 实例见实例分析参数名称含义默认值-Xms初始堆大小物理内存的1/64(113543K(130112K), 0.0094143 secs][Full GC 121376K->10414K(130112K), 0.0650971 secs]-XX:+PrintGCDetails输出形式... 阅读全文
posted @ 2015-10-12 14:18 benx621 阅读(174) 评论(0) 推荐(0) 编辑
摘要: redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的 命令。 由于redis是单线程来处理所有client的请求的所以做到这点是很容易的。一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处... 阅读全文
posted @ 2015-01-15 12:15 benx621 阅读(141) 评论(0) 推荐(0) 编辑
摘要: String 可以存储任意类型数据。 DEL 删除给定的一个或多个 key DUMP 序列化给定 key ,并返回被序列化的值 EXISTS 检查给定 key 是否存在。 EXPIRE 为给定 key 设置生存时间 EXPIREAT 为给定 key 设置生存时间 KEYS 查找所有符合给定模式 p... 阅读全文
posted @ 2015-01-15 12:14 benx621 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 配置文件参数说明:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile /var/r... 阅读全文
posted @ 2015-01-15 12:12 benx621 阅读(169) 评论(0) 推荐(0) 编辑
摘要: ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在... 阅读全文
posted @ 2014-10-30 11:16 benx621 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 本文转自 http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html#!comments文 中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证... 阅读全文
posted @ 2014-08-01 14:03 benx621 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 1、先通过keytool生产私钥,保存在keystore中keytool -genkey -alias serverkey -keystore server.keystore -keyalg RSA输入keystore密码:123456输入的主密码:1234562、导出公钥keytool -export -alias serverkey -keystore server.keystore -file server.crt代码实例:import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io. 阅读全文
posted @ 2014-04-08 18:24 benx621 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.blogjava.net/stone2083/archive/2007/12/20/169015.html本文通过模拟场景,介绍SSL双向认证的java实现默认的情况下,我认为读者已经对SSL原理有一定的了解,所以文章中对SSL的原理,不做详细的介绍。如果有这个需要,那么通过GOOGLE,可以搜索到很多这样的文章。模拟场景:Server端和Client端通信,需要进行授权和身份的验证,即Client只能接受Server的消息,Server只能接受Client的消息。实现技术:JSSE(Java Security Socket Extension)是Sun为了解决在I 阅读全文
posted @ 2014-04-03 17:28 benx621 阅读(659) 评论(0) 推荐(0) 编辑
摘要: 本文转自:http://www.cnblogs.com/laoyangHJ/articles/java_gc.html详细介绍Java垃圾回收机制垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再使用的对象。GC通 过确定对象是否被活动对象引用来确定是否收集该对象。GC首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。引用计数收集器引用计数是垃圾收集器中的早期策略。在这种方法中,堆中 阅读全文
posted @ 2014-02-25 10:22 benx621 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 本文转自:http://www.cnblogs.com/ggjucheng/archive/2012/01/06/2314679.htmlJava Socket的api可能很多人会用,但是Java Socket的参数可能很多人都不知道用来干嘛的,甚至都不知道有这些参数。backlog用于ServerSocket,配置ServerSocket的最大客户端等待队列。等待队列的意思,先看下面代码public class Main { public static void main(String[] args) throws Exception { int port = 8999;... 阅读全文
posted @ 2014-02-25 10:05 benx621 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html浏览器缓存机制浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires; Cache-control等)。但是也有非HTTP协议定义的缓存机制,如使用HTML Meta 标签,Web开发者可以在HTML页面的节点中加入标签,代码如下:html code上述代码的作用是告诉浏览器当前页面不被缓存,每次访问都需要去服务器拉取。使用上很简单,但只有部分浏览器可以支持,而且所有缓存代理服务器都不支持,因为代理不解析HTML内容本身。下面我主要介绍HTTP 阅读全文
posted @ 2014-02-21 10:31 benx621 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 本文转自:http://freeloda.blog.51cto.com/2033581/1288553大纲一、前言二、环境准备三、安装与配置Nginx四、Nginx之反向代理五、Nginx之负载均衡六、Nginx之页面缓存七、Nginx之URL重写 八、Nginx之读写分离注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm一、前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解、nginx作为we... 阅读全文
posted @ 2014-02-20 17:38 benx621 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 本文转自:http://www.blogjava.net/neverend/archive/2012/03/31/373127.html介绍下对于Mysql锁机制的理解从基本概念开始:共享锁共享锁的代号是S,是Share的缩写,共享锁的锁粒度是行或者元组(多个行)。一个事务获取了共享锁之后,可以对锁定范围内的数据执行读操作。 排它锁排它锁的代号是X,是eXclusive的缩写,排它锁的粒度与共享锁相同,也是行或者元组。一个事务获取了排它锁之后,可以对锁定范围内的数据执行写操作。假设有两个事务t1和t2如果事务t1获取了一个元组的共享锁,事务t2还可以立即获取这个元组的共享锁,但不能立即获取这个 阅读全文
posted @ 2014-02-18 09:52 benx621 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 文章转自:http://hedengcheng.com/?p=7711背景11.1MVCC:Snapshot Read vs Current Read21.2Cluster Index:聚簇索引31.32PL:Two-Phase Locking31.4Isolation Level42一条简单SQL的加锁实现分析52.1组合一:id主键+RC62.2组合二:id唯一索引+RC62.3组合三:id非唯一索引+RC72.4组合四:id无索引+RC82.5组合五:id主键+RR92.6组合六:id唯一索引+RR92.7组合七:id非唯一索引+RR92.8组合八:id无索引+RR112.9组合九:Se 阅读全文
posted @ 2014-02-18 09:47 benx621 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 文章转载自:http://www.cnblogs.com/hellojava/archive/2012/12/28/2835730.htmlweb.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配 置,可以方便的开发web工程。web.xml主要用来配置Filter、Listener、Servlet等。但是要说明的是web.xml并不是必须 的,一个web工程可以没有web.xml文件。1、WEB工程加载web.xml过程 经过个人测试,WEB工程加载顺序与元素节点在文件中的配置顺序无关。即不会 因为 filter 写在 listener 的前面而会.. 阅读全文
posted @ 2014-02-18 09:30 benx621 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 本脚本依赖 jodd http工具箱,流程为登录、查询、解析、审核package jodd.http;import java.io.BufferedReader;import java.io.IOException;import java.io.StringReader;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class AutoApply { String username = ""; String passw 阅读全文
posted @ 2013-12-06 19:06 benx621 阅读(466) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock 非公平锁lock: 如果stage==0 或 线程为当前线程 则 设置state=state+1 ,设置当前线程为独占线程 如果state不为0,且独占线程不是当前线程则: 如果tail为null,设置tail和head为new Node() addWaiter(Node.EXCLUSIVE) 新加一个独占Node,把该Node添加到链表的尾部 acquireQueued(Node)在for(;;)中执行 如果node节点的上一个节点为head且tryAcquire为true,则设置node为head(获得了锁,同时删除了上一个节点) 如果不是,则设置... 阅读全文
posted @ 2013-11-26 23:46 benx621 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 先看代码package com.benx.data;import javax.annotation.Resource;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Isolation;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;@Service( 阅读全文
posted @ 2013-11-21 11:24 benx621 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 例子Spring 配置文件 接口类package com.benx.aspectj.service;public interface IHello { public String say();}接口实现类package com.benx.aspectj.service;public class HelloImpl implements IHello { public St... 阅读全文
posted @ 2013-11-12 18:04 benx621 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 例子IHello 接口类package com.benx.mvc;public interface IHello { public void say(); }IHello接口实现类package com.benx.mvc;public class HelloImpl implements IHello { public void say() { System.out.println("Hello World"); } }拦截器package com.benx.mvc;import org.aopalliance.intercept.MethodInt... 阅读全文
posted @ 2013-11-11 15:38 benx621 阅读(823) 评论(0) 推荐(0) 编辑
摘要: 例子public interface IHello { public void say(); }public class HelloImpl implements IHello { public void say() { System.out.println("Hello World"); }}public class HelloInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation methodinvocation) throws Throwa... 阅读全文
posted @ 2013-11-11 14:51 benx621 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 先看例子 myAdvisor debugInterceptor 配置点:1、interceptorNames 拦截器数组2、targetName 目标类3、singleton 是否单例,默认true4、proxyInterfaces 代理接口5、optimize 建议使用cglib6、proxyTargetClass问题:1、如何判断是使用jdk代理还是使用CGLIB? 答:默认使用jdk,如果没有使用接口或optimize 为true或proxyTargetCl... 阅读全文
posted @ 2013-11-08 18:08 benx621 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 初始化流程:1、创建WebApplicationContext context,设置context的setServletContext、setServletConfig、setId、setNamespace2、执行context.refresh(),加载spring文件,参见文章 spring 加载流程3、把context加入request Attribute 中key 为 FrameworkServlet.class.getName() + ".CONTEXT." ServletName4、spring加载问题后执行DispatcherServlet .onRefresh 阅读全文
posted @ 2013-11-06 16:40 benx621 阅读(626) 评论(0) 推荐(0) 编辑
摘要: AbstractApplicationContext.refresh()1、加载节点,获取节点的命名空间 如果命名空间为beans,默认处理import , alias , bean , beans 如果不是benas命名空间,则读取spring jar包中的META-INF/spring.hander,然后根据命名空间找到对应的解析器 加载beanDefinition2、prepareBeanFactory3、postProcessBeanFactory(beanFactory);4、invokeBeanFactoryPostProcessors(beanFactory); 执行容器中实现. 阅读全文
posted @ 2013-11-06 09:53 benx621 阅读(1459) 评论(0) 推荐(0) 编辑