
转载
文章平均质量分 85
zhengcs已被占用
这个作者很懒,什么都没留下…
展开
-
【转】Mybatis-Configuration-详解
ConfigurationMyBatis的初始化会执行SqlSessionFactoryBuilder的中build()方法,build方法又会调用XMLConfigBuilder()的内部parse()方法进行加载配置,所以我们先看一下parse()的源码:publicConfiguration parse() {if(parsed) {throw newBuild...转载 2020-03-02 17:22:36 · 326 阅读 · 0 评论 -
SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系
一 简介(1)过滤器:依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等关于过滤器的一些用法可以参考我写过的这些文转载 2018-01-24 11:59:36 · 211 阅读 · 0 评论 -
Java实现简单的RPC框架
一、RPC简介RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议。它允许像调用本地服务一样调用远程服务。它可以有不同的实现方式。如RMI(远程方法调用)、Hessian、Http invoker等。另外,RPC是与语言无关的。 RPC示意图如上图所示,假设Computer1在调用sayHi()方法,对于Comp转载 2018-01-15 15:12:12 · 242 阅读 · 0 评论 -
Java中:接口,抽象类,内部类
Java8中的接口public interface Output { //接口里定义的成员变量只能是常量 //默认使用public static final修饰 int MAX_CACHE_LINE = 50; //接口里定义的普通方法只能是public的抽象方法 void out(); void getData(String msg);转载 2018-01-15 11:04:00 · 218 阅读 · 0 评论 -
攻破JAVA NIO技术壁垒
现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能。再者,现在互联网的面试中上点level的都会涉及一下NIO或者AIO的问题(AIO下次再讲述,本篇主要讲述NIO),掌握好NIO也能帮助你获得一份较好的offer。 驱使博主写这篇文章的关键是网上关于NIO的文章并不是很转载 2018-01-14 17:51:56 · 185 阅读 · 0 评论 -
Java与Netty实现高性能高并发
1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高转载 2018-01-14 17:50:59 · 5183 阅读 · 1 评论 -
Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来转载 2018-01-14 17:50:33 · 131 阅读 · 0 评论 -
dubbo与zookeeper的关系
Dubbo建议使用Zookeeper作为服务的注册中心。1. Zookeeper的作用: zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用者知道,简单来说就是ip地址和服务名称的对应关系。当然也可以 通过硬编码的方式把这种对应关系在调用方业务代码中实现,但是如果提供服务的机器挂掉调用者无法知晓,如果不更改代码会继续请求挂掉的机器转载 2018-01-14 17:49:29 · 481 阅读 · 0 评论 -
深入分析Spring 与 Spring MVC容器
v1 Spring MVC WEB配置 Spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext,使得拥有web功能。那么,Spring MVC是如何在web环境中创建IoC容器呢?web环境中的IoC容器的结构又是什么结构呢?web环境中,Spring IoC容器是怎么启动呢?转载 2018-01-14 17:49:06 · 168 阅读 · 0 评论 -
Java分布式开发不得不知的Dubbo技术详细介绍
1 dubbox简介随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM) 是关键。垂直应用架构当访问量逐渐增大转载 2018-01-14 17:48:34 · 855 阅读 · 0 评论 -
浅谈一下缓存策略以及memcached 、redis区别
缓存策略三要素:缓存命中率 缓存更新策略 最大缓存容量。衡量一个缓存方案的好坏标准是:缓存命中率。缓存命中率越高,缓存方法设计的越好。 三者之间的关系为:当缓存到达最大的缓存容量时,会触发缓存更新策略,而缓存更新策略影响到了缓存命中率。可见,缓存方案的好坏依赖于缓存最大量的设置,以及缓存更新策略的选择。 对于经常变动的数据,不适合做缓存。对于静态、读写比高(一般10:1以上)转载 2018-01-12 15:19:21 · 197 阅读 · 0 评论 -
线程池原理(讲的非常棒)
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池转载 2018-01-12 15:02:26 · 332 阅读 · 0 评论 -
常用限流方案的设计和实现
为了保证在业务高峰期,线上系统也能保证一定的弹性和稳定性,最有效的方案就是进行服务降级了,而限流就是降级系统最常采用的方案之一。 限流即流量限制,或者高大上一点,叫做流量整形,限流的目的是在遇到流量高峰期或者流量突增(流量尖刺)时,把流量速率限制在系统所能接受的合理范围之内,不至于让系统被高流量击垮。 其实,服务降级系统中的限流并没有我们想象的那么简单,第一,限流方转载 2018-01-16 18:47:55 · 370 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2018-01-16 18:50:01 · 155 阅读 · 0 评论 -
【转】hystrix配置属性说明
目录目录配置详解Hystrix属性4种优先级Hystrix属性Command Properties 相关类 HystrixCommand执行相关 控制HystrixCommandrun 执行回退 控制HystrixCommandgetFallback 执行 对于线程池或者信号量执行策略都生效断路器 控制HystrixCircuitBreaker度量 主要度量HystrixComm...转载 2018-11-08 13:46:57 · 272 阅读 · 0 评论 -
【转】详解 Tomcat 的连接数与线程池
前言在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml 中写到过:Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine(也就是Servlet容器)来处理这个请求,并把...转载 2018-11-06 12:18:37 · 258 阅读 · 0 评论 -
【转】Tomcat线程池配置
1:配置executor属性打开/conf/server.xml文件,在Connector之前配置一个线程池:<Executor name="tomcatThreadPool" namePrefix="tomcatThreadPool-" maxThreads="1000" maxIdleTime="300000" ...转载 2018-11-06 11:33:36 · 239 阅读 · 0 评论 -
【转】系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
PS:下面是性能测试的主要概念和计算公式,记录下:一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间 QPS(TPS):每秒钟request/事务 数量...转载 2018-10-12 10:09:52 · 247 阅读 · 0 评论 -
【转】Redis分布式锁的正确实现方式
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的...转载 2018-08-17 11:44:45 · 251 阅读 · 0 评论 -
【转】javaweb面试总结(四、分布式事务、CAP原理和BASE思想、JDBC事务和JTA事务的区别、2PC与TCC区别)
CAP原理和BASE思想: http://www.jdon.com/37625分布式事务如何处理?解决方案有很多种!比如事务补偿机制:即在事务链中的任何一个正向事务操作,都必须存在一个完全符合回滚规则的可逆事务。或者两阶段提交、三阶段提交:分布式事务服务(DTS) 支付宝的DTS实现!最近也看见一个tcc方案GitHub - changmingxie/tcc-transactio...转载 2018-08-03 16:17:57 · 549 阅读 · 0 评论 -
过滤器、监听器与拦截器区别
拦截器Introspectoraop的一种实现依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用只能对controller请求进行拦截,对直接访问静态资源的请求则没办法进行拦截处理 过滤器Filter特殊的ServletFilter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后F...转载 2018-06-07 14:36:13 · 227 阅读 · 0 评论 -
Spring Boot常用注解
1.概述Spring Boot简化了Spring应用的开发,不需要繁琐的XML配置就能开发。 那Spring Boot是怎么实现自动配置的呢? 这就要用到Spring Boot中提供的许多注解:Spring提供XML配置、注解配置或Java配置来实现Bean的创建和注入Spring IoC(ApplicationContext)容器负责进行扫描Bean,进行Bean的初始化、配置和依赖管理本节介绍...转载 2018-06-07 14:35:25 · 194 阅读 · 0 评论 -
shell中if做比较
shell判断数组中是否包含某个元素:ary=(1 2 3)a=2if [[ "${ary[@]}" =~ "$a" ]] ; then echo "a in ary"else echo "a not in ary"fi判读字符串($str)是否包含另一个字符串($str1):方法1:if [ `echo $str | grep -e '$str1'` ] ; then ec...转载 2018-05-16 11:50:01 · 4481 阅读 · 0 评论 -
mysql常用函数汇总(分享)
一、数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x) 返回值e(自然对数的底)的x次方FLOOR(x) 返回小于x的最大整数值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,x2,...,xn) 返转载 2018-01-17 15:36:03 · 254 阅读 · 0 评论 -
redis详解(一)-- 概述
首先,分布式缓存框架 可以 看成是nosql的一种(1)什么是redis?redis 是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正)(2)Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作转载 2018-01-17 13:14:44 · 175 阅读 · 0 评论 -
JAVA集合类汇总
一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。二、层次关系如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口Collection接口是集合类的根接口,Java中没有提供这个接口的直转载 2018-01-16 18:52:29 · 201 阅读 · 0 评论 -
深入理解分布式事务,高并发下分布式事务的解决方案
1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产转载 2018-01-11 19:45:37 · 493 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法 若有不正之处请多多谅解,并欢迎转载 2018-01-11 18:22:07 · 162 阅读 · 0 评论 -
分布式锁原理及实现方式
本文转自:http://www.hollischuang.com/archives/1716 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance转载 2018-01-11 14:09:08 · 135 阅读 · 0 评论 -
Java设计模式之五:观察者模式
本文继续介绍23种设计模式系列之观察者模式。观察者模式中,一个被观察者管理所有相依于它的观察者物件,并且在本身的状态改变时主动发出通知。这通常通过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。角色抽象被观察者角色:把所有对观察者对象的引用保存在一个集合中,每个被观察者角色都可以有任意数量的观察者。被观察者提供一个接口,可以增加和删除观察者角转载 2017-08-10 11:33:29 · 188 阅读 · 0 评论 -
JAVA设计模式之四:原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clo转载 2017-08-10 11:31:07 · 226 阅读 · 0 评论 -
JAVA设计模式之三:代理模式
【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OO转载 2017-08-10 11:29:22 · 206 阅读 · 0 评论 -
JAVA设计模式之二:工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部转载 2017-08-10 11:27:34 · 198 阅读 · 0 评论 -
Java设计模式之一:单例模式
本文继续介绍23种设计模式系列之单例模式。概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并转载 2017-08-10 11:16:40 · 178 阅读 · 0 评论 -
java反射详解
本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解。下面开始正文。【案例1】通过一个对象获得完整的包名和类名123456789101112131415package Reflect;转载 2017-08-09 13:25:25 · 179 阅读 · 0 评论 -
java synchronized详解
记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问ob转载 2017-08-09 13:23:02 · 219 阅读 · 0 评论 -
Spring三大核心思想之三:AOP
一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnblogs.com/xrq730/p/4919025.htmlAOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Obje转载 2017-08-09 13:19:42 · 3884 阅读 · 0 评论 -
Spring三大核心思想之二:DI
spring第二个特性是依赖注入。 学习依赖注入,首先应该明白两个问题:1,谁依赖谁;2,谁注入,注入什么? 首先还是看代码: 还是这个bean: Java代码 package testSpring.business.bean; import org.springframew转载 2017-08-09 13:16:28 · 2515 阅读 · 0 评论 -
Spring三大核心思想一:IOC
首先,spring最核心,最基础的概念是什么?将spring类比java,java最核心,最基础的概念就是object了。java中,所有的操作都是针对object的(基础类型除外),java中,一切皆对象,一切都是object。类比下来,spring中最基础的概念是bean。在spring中,所以的类都可以认为是一个bean。(个人认为)在spring中的所有文件,都可以认为是注册了的bean和转载 2017-08-09 13:11:56 · 2995 阅读 · 0 评论 -
深入理解Java对象序列化
关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。作者:Sha Jiang来源:Sha Jiang的博客|2012-02-14 10:29 移动端 收藏 分享关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往转载 2017-08-09 11:13:42 · 219 阅读 · 0 评论