自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(218)
  • 收藏
  • 关注

原创 史上最全版支付宝之所以厉害的原因:来看内部架构剖析

支付宝系统架构概况典型处理默认资金处理平台财务会计支付清算核算中心交易柔性事务支付宝的开源分布式消息中间件–Metamorphosis(MetaQ)Metamorphosis (MetaQ) 是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞吐量大和支持本地和XA事务等特性,适用 于大吞吐量、顺序消息、广...

2016-04-21 13:38:56 242

原创 java 动态编译和加载类

import javax.tools.*;import javax.tools.JavaCompiler.CompilationTask;import java.io.File;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java....

2016-04-20 10:03:03 208

原创 oracle 查看锁定数据 session 以及清除session

select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time;  3、杀死该session ? alter system...

2016-04-15 16:14:06 218

原创 TOMCAT源码分析及启动过程

前言:   本文是我阅读了TOMCAT源码后的一些心得。 主要是讲解TOMCAT的系统框架, 以及启动流程。若有错漏之处,敬请批评指教!建议:   毕竟TOMCAT的框架还是比较复杂的, 单是从文字上理解, 是不那么容易掌握TOMCAT的框架的。 所以得实践、实践、再实践。 建议下载一份TOMCAT的源码, 调试通过, 然后单步跟踪其启动过程。 如果有不明白的地方, 再来查阅本文, 看是否能得到...

2016-04-10 17:12:27 144

原创 Tomcat学习之ClassLoader

类装载器JDK中提供了3种不同的类加载器:启动类装载器,扩展类装载器和系统类装载器。引导类装载器,用于引导启动JAVA虚拟机,当执行一个JAVA程序时,就会启动引导类装载器,它是使用本地代码来实现的,会装载%JAVA_HOME%\\jre\lib\rt.jar,它是所有类装载器类的父装载器。扩展类装载器负责载入标准扩展目录中的类,其搜索路径是%JAVA_HOME%\jre\lib\ext,只...

2016-04-10 16:25:25 125

原创 Redis复制与可扩展集群搭建

Redis复制流程概述Redis的复制功能是完全建立在之前我们讨论过的基于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生,那么首先要注意你的系统内存容量规划,原因可以参考我上一篇文章中提到的Redis磁盘IO问题。Redis复制流程在Slave和Master端各自是一套状态机流转,涉及的状态信息是: S...

2016-04-09 14:57:39 104

原创 Redis内存使用优化与存储

 Redis常用数据类型Redis最为常用的数据类型主要有以下五种:StringHashListSetSorted set在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的: 首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如...

2016-04-09 13:39:10 103

原创 Redis内存使用优化与存储

传统MySQL+ Memcached架构遇到的问题实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。Memcached与MySQL数据...

2016-04-09 11:21:40 114

原创 memcache的线程模型

MC采用一master多worker的工作模型,由master负责accept客户端请求,然后以RR分发给worker;-t 线程数,用于处理请求,默认为4 -b backlog队列长度,默认1024线程结构体typedef struct {      pthread_t thread_id;        /* unique ID of this thread */      struct...

2016-04-09 10:49:14 150

原创 系统发布流程

系统发布总体分两个阶段:准备阶段、执行阶段准备阶段:整理数据库脚本、整理源代码(branch、tag)并打好生产包,这些都可在发布执行之前完成执行阶段:更新数据库、执行应用程序发布脚本准备阶段1、整理数据库更新脚本2、准备应用程序发布源代码         a、从trunk分出一个branch                   执行命令: mvn release:...

2016-04-08 16:51:01 1147

原创 自定义方法注解实现事务完成后执行方法

     起因:有时候我们有这样的需求,在一个事务方法中调用了其他类的某个方法,但希望这个方法再事务提交后执行。       思考:被调用的方法,肯定要做到延迟执行,可以把执行的方法放入ThreadLocal里,等事务提交后拿出来执行,但怎么判断事务已经提交了呢,这个就要用到spring 事务处理的AbstractPlatformTransactionManager类里面的回调功能pr...

2016-04-08 14:04:36 2643

自定义缓存注解遇到的问题与解决

               起因:由于系统要集成memcached实现缓存服务,java客户端选用xmemcache,本来想集成spring的缓存注解,@Cacheabale,@CachePut,@Cacheevict,但是由于项目中spring版本不够无法使用上面注解,而且版本又不能升级,为了系统的稳定性。           解决办法:为了不想把缓存的操作,侵入业务代码,于是...

2016-04-08 13:18:00 175

原创 JVM调优总结(2):调优方法

原文:http://blog.csdn.net/zhoudaxia/article/details/26956831调优设置堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2...

2016-04-07 23:06:47 134

原创 成为Java GC专家(5)—Java性能调优原则

原文:http://www.importnew.com/13954.html这是“成为Java GC专家”系列的第五篇文章。在第一篇深入浅出Java垃圾回收机制中,我们已经学习了不同的GC算法流程、GC的工作原理、新生代(Young Generation)和老年代(Old Generation)的概念。你应该了解了JDK7中5种GC类型以及各种类型对应用程序的影响。在第二篇如何监...

2016-04-07 22:41:34 118

原创 激励名言 摘抄其他编程人员的话

1:我还是那么拥有激情,我同时愿意为技术奉献自我,因为我知道自己所做的事情是在为谁而服务,它所产生的价值是什么,技术追求也不会改变,因为他不仅仅是我 经济收入的来源,更加让我体会到社会的变更,必须让我们也去不断的改变,才能与时俱进,自己能与时俱进,也同时证明自己在社会中的价值所在,这同时也是任 何一个搞技术的人来讲,一种成就感的来源和动力。 来源 http://blog.csdn.ne...

2016-04-06 17:52:36 172

原创 Netty源码分析 之 实现原理

 个人觉得Netty之所以高性能主要是因为它的多路I/O复用模型和零拷贝的Buffer。Netty中有两大核心组件ChannelFactory与ChannelPipeline,可以说Netty的整个架构的核心都是靠这两大组件支撑起来的。 Netty的网络模型(ChannelFactory)  ChannelFactory有两组线程池BossPool和WorkerPo...

2016-04-04 20:47:28 250

原创 反应器(Reactor)模式

概述Java NIO非堵塞技术实际是采取反应器模式,或者说是观察者(observer)模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。同步和异步区别:有无通知(是否轮询)堵塞和非堵塞区别:操作结果是否等待(是否马上有返回值),只是设计方式的不同NIO 有一个主要的类Selector,这个类似一个观...

2016-04-04 20:28:43 141

原创 系列技术 教程博客地址

1: 阮一峰 技术博客    http://www.ruanyifeng.com/blog/archives.html 2:netty 教程 http://blog.csdn.net/kobejayandy/article/details/11495121                      http://www.cnblogs.com/zou90512/tag/Netty/...

2016-04-04 11:30:08 141

原创 图解 B+ 树的插入和删除 ( 一看就懂)

由于无法显示图片请看附件

2016-04-01 15:20:08 2833

原创 69道Spring面试题和答案

目录Spring 概述依赖注入Spring beansSpring注解Spring数据访问Spring面向切面编程(AOP)Spring MVCSpring 概述1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化...

2016-03-31 21:46:01 127

原创 redis 基本信息查看

edis FLUSHALL删除所有现有的数据库,而不仅仅是当前选择的一个的键。此命令不会失败。返回值字符串返回语法redis FLUSHALL命令的基本语法如下所示:redis 127.0.0.1:6379> FLUSHALL 例子     redis 127.0.0.1:6379> FLUSHALL OK flushdb 执...

2016-03-30 12:30:36 256

原创 IO基础入门之I/O多路复用技术

在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O 多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个客户端请求。与传统的多线程/多进 程模型比,I/O多路复用的最大优势是系统开销小,系统不需要创建新的额外进程或者线程,也不需要维护这些进程和线程的运行,降底了系统的维护工作量,...

2016-03-29 13:18:03 162

原创 再谈select, iocp, epoll,kqueue及各种I/O复用机制

首先,介绍几种常见的I/O模型及其区别,如下:blocking I/Ononblocking I/OI/O multiplexing (select and poll)signal driven I/O (SIGIO)asynchronous I/O (the POSIX aio_functions)blocking I/O  ...

2016-03-29 12:51:20 107

原创 webservice 简单介绍

1.什么是webservice?webservice是一种跨编程语言和跨操作系统平台的远程调用技术。所谓的远程调用,就是一台计算机a上的一个程序可以调用另一台计算机b上的一个对象的方法,比如:银联提供给商场的pos机刷卡系统。什么情况下可能用到远程调用技术呢?例如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方...

2016-03-19 21:30:00 116

原创 ActiveMQ讯息传送机制以及ACK机制详解

ActiveMQ消息传送机制以及ACK机制详解    AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机制    Producer客户端使用来发送消息的, Consumer客户端用来消费消息;它们的协同中心就是Act...

2016-03-19 17:39:12 117

原创 SQL注入之DVWA平台测试mysql注入

今天主要针对mysql常用注入语句进行测试。测试环境与工具:测试平台:DVWA,下载地址:http://www.2cto.com/soft/201303/38043.html,也可下载metaspolit-table2虚拟机,里面已经部署好了dvwa.。渗透工具burpsuite-1.4.07:下载地址:http://www.2cto.com/soft/201211/35515.ht...

2016-03-19 11:13:05 231

原创 动态编辑加载自定义类

package test;import java.io.File;  import java.lang.reflect.Method;  import java.net.URI;  import java.net.URISyntaxException;  import java.util.Arrays;    import javax.tools.JavaCompiler;  import ...

2016-03-17 23:39:30 103

原创 Java动态代理机制详解(JDK和CGLIB,Javassist,ASM)

lass文件简介及加载Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象:class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生成的、具体class文件...

2016-03-17 23:10:06 196

原创 MySQL执行计划解读

Explain语法EXPLAIN SELECT ……变体:1. EXPLAIN EXTENDED SELECT ……将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT ……用于分区表的EXPLAIN执行计划包含的信息 id包...

2016-03-12 20:16:49 93

原创 Java IO vs NIO vs AIO vs 协议Servlet 3.0 以及NIO的框架

nio(new io)从jdk1.4就有了,但是一直没用过,今天看了一下,记录如下:     同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。     异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API)。     阻塞 : AT...

2016-03-12 17:12:25 176

原创 Redis上踩过的一些坑-美团

上上周和同事(龙哥)参加了360组织的互联网技术训练营第三期,美团网的DBA负责人侯军伟给大家介绍了美团网在redis上踩得一些坑,讲的都是干货和坑。    分为5个部分:   一、 周期性出现connect timeout   二、redis bgrewriteaof问题   三、redis内存占用飙升   四、redis内存使用优化    五、redis c...

2016-03-12 15:29:00 202

原创 亿级Web系统搭建——单机到分布式集群

当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。  Web负载均衡  Web负载均衡(Load Balancing),简单地说就是给我们的服...

2016-03-06 21:23:42 119

原创 Web系统大规模并发——电商秒杀与抢购

电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,...

2016-03-06 21:12:32 116

原创 浏览器 HTTP 协议缓存机制详解

最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control、为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag,有时又没有带?等等。。。后来查了一些资料以及同事亲自验证,总算对这些问题有了个清晰的理解,现在整理出来以备忘。1、缓存的分类缓存分为服务端侧(server side,比如 Nginx...

2016-03-06 17:53:28 100

原创 SQL 优化经验总结34条

(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被...

2016-03-05 12:08:48 88

原创 java 知识 点

面试要点 了解一下教育背景,是否有真正做过文本分类的算法,可以了解一下分类算法是否熟悉 是否有过B/S的开发经验 传递参数时,什么时候是值传递,什么时候是引用传递 是否使用过JDBC,JDBC的使用方法 try-catch-finally中,如果在try或catch中有return过,是否还执行 简述快速排序 不是用中间变量实现swap(x,y)函数 1、 除了在从前的项目中使用了哪些开源框架...

2016-03-02 13:40:40 401

原创 maven 背后工作原理

Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),它有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,请别将Maven的生命周期看成一个整体哦,三个生命周期是独立线性执行的!分别是: Clean Lifecycle 在进行真正的构建之前进行一些清理工作。 Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。 Si...

2016-03-02 10:48:13 148

原创 Java开发中的23种设计模式详解(转)

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代 码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用 设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对...

2016-03-01 14:14:06 66

原创 设计模式六大原则

目录:设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大原则(6):开闭原则 设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不...

2016-02-29 13:24:34 86

原创 Java中的IO流系统详解

摘要:Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStre...

2016-02-28 18:13:21 97

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除