自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

许文杰的博客

欢迎来到我的博客

  • 博客(91)
  • 资源 (10)
  • 收藏
  • 关注

原创 分布式事务之TCC

TCC本质上也是一种二阶段协议,不同在于TCC需要与具体业务耦合,下面首先看下TCC步骤: 所有事务参与方都需要实现try,confirm,cancle接口。 事务发起方向事务协调器发起事务请求,事务协调器调用所有事务参与者的try方法完成资源的预留,这时候并没有真正执行业务,而是为后面具体要执行的业务预留资源,这里完成了一阶段。 如果事务协调器发现有参与者的try方法预留资源时候发现资源不...

2018-07-31 15:37:17 3301 1

原创 分布式事务之异步消息补偿

1、MQ发送方发送远程事务消息到MQ Server; 2、MQ Server给予响应, 表明事务消息已成功到达MQ Server. 3、MQ发送方Commit本地事务. 4、若本地事务Commit成功, 则通知MQ Server允许对应事务消息被消费; 若本地事务失败, 则通知MQ Server对应事务消息应被丢弃. 5、若MQ发送方超时未对MQ Server作出本地事务执行状态的反馈...

2018-07-27 22:09:54 7195

原创 分布式事务之两阶段提交与三阶段提交

  随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。   为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。本文主要介绍关于分布式事务,二阶段提交和三阶段提交。   在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本,这些副本会放置在不同的物理的机器上...

2018-07-27 20:31:49 2840

原创 浅谈Java中的类加载机制

如下图所示,JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。 加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为访问方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从ZIP包中读取(比如从jar包和war包中读取),也可以在运行时计算生成(动...

2018-07-14 15:52:05 544

原创 HTTP协议请求头和响应头

HTTP请求和相应的内容: HTTP请求包括: 1、请求行:请求的http方法+URL+http的版本号 2、请求头 3、请求体:(key=value)HTTP响应包括: 1、状态行:http协议的版本+状态码+描述 2、响应头 3、响应体:web服务器把要发送给客户端的文档信息放在响应体http请求头: accept:浏览器通过这个头告诉服务器,它...

2018-05-11 23:48:33 1349

原创 浅谈Http长连接和Keep-Alive以及Tcp的Keepalive

Keep-Alive模式: 我们知道Http协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时,每个请求/应答,客户端和服务器都要新建一个连接,完成之后立即断开连接;当使用Keep-Alive模式时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。 http1.0中默认是关闭的,需...

2018-05-11 16:57:55 52616 3

原创 浅谈Java线程池

public class ThreadPoolExecutor extends AbstractExecutorService { public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, Blocki...

2018-05-07 18:28:46 206

原创 redis主从复制原理

前言: Redis持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障。 Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结...

2018-05-06 17:16:13 3580

原创 ArrayList实现原理分析

ArrayList概述: ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会...

2018-05-05 22:47:09 246

原创 HashSet实现原理分析

HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调...

2018-05-05 21:21:31 217

原创 算法题:两个大数相加(java)

题目: 大数相加不能直接使用基本的int类型,因为int可以表示的整数有限,不能满足大数的要求。输入的两个大数可能正可能负分析: 首先需要判断两个大数的正负号,使用字符串来模拟小学数学中的两个数的加减法。代码:/** * 两个大数相加,输入的两个大数的正负号不确定 */public class Solution { public static void main...

2018-04-29 18:11:55 3268

原创 redis基础知识

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下: 1、字符串类型 2、散列类型 3、列表类型 4、集合类型 5、有序集合类型。redis的特点: 1、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 2、Redi...

2018-04-26 23:43:24 218

原创 redis集群的分区实现原理

绪论 Redis Cluster本身提供了自动将数据分散到Redis Cluster中不同节点的能力,分区实现的关键点问题包括:如何将数据自动地分散到不同的节点,使不同节点的存储数据相对均匀;如何保证客户端能够访问到正确的节点和数据;如何保证重新分片的过程中不影响正常服务。这篇文章通过了解这些问题来认识Redis Cluster分区实现原理。认识Redis Cluster Redis Cl...

2018-04-26 21:49:18 588

原创 初步了解redis集群

集群原理1、redis-cluster架构图: 架构细节: (1)所有redis节点彼此互联(通过PING-PONG机制),内部使用二进制协议优化传输速度和带宽。 (2)节点fail是通过集群中超过半数的节点检测失效时才生效。 (3)客户端与redis节点直连,不需要中间proxy层。客户端不需要连接集群中的所有节点,连接集群中任何一个可用节点即可。 (4)redis-clust...

2018-04-26 20:58:11 272

原创 HashMap实现原理分析

1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。      数组数组存储区间是连续的,占用内存严重,故空间复杂很大。但数组的按照二分查找时间复杂度小,为O(logn);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,...

2018-04-23 21:47:52 171

原创 java线程中join方法的简单讲解

一、作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并发执行变为串行执行。具体看代码:public class Test { public static void main(String[] args) throws InterruptedException { ThreadJoinTest t1 = new ThreadJoinTes...

2018-04-11 22:17:16 363

原创 浅谈Java中Volatile关键字

很早就接触了volatile,但是并没有特别深入的去研究它,只有一个朦胧的概念,就是觉得用它来解决可见性问题,但可见性又是什么呢?最近经过查阅各种资料,并结合自己的思考和实践,对volatile有了比较深刻的认识,在此总结并分享给大家。可见性如何理解可见性,还是来看个会出现死循环的例子:  这是为什么呢?先来看看java的内存模型,如下图: java...

2018-04-02 11:34:02 2190

原创 java中的静态代理、动态代理以及Cglib代理

Java的三种代理模式1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接...

2018-03-27 17:58:39 166

原创 设计模式之代理模式

一、概述  代理模式为一个对象提供一个替身以控制对这个对象的访问。其实代理就是做到类似转发的功能,针对不同代理,转发的具体实现不同。二、解决问题  从原理知道他就是控制客户对一个对象的访问,它跟现实中的中介代理类似,只是作为代表做一些受理工作,真正执行的并不是它自己。比如买火车票,外面有很多火车票代理点,我们直接去代理点买票就好而不用跑到火车票买了(暂时不考虑网购哈...

2018-03-27 17:40:18 173

原创 设计模式之工厂模式

1. 简单工厂模式1.1 描述简单工厂模式是由一个工厂对象根据收到的参数决定要创建哪一个类的对象实例。1.2 使用场景工厂类负责创建的对象比较少,客户只需要传入工厂类参数,对于如何创建对象(逻辑)不关心。简单工厂模式很容易违反高内聚低耦合的原则,因此一般只在很简单的情况下使用。1.3 优点最大的优点在于工厂类中包含了必要的逻辑,根据客户需要的逻辑动态实例化相关的类。1.4 例...

2018-03-27 15:46:57 172

原创 使用PriorityQueue实现堆结构

在堆排序这篇文章中千辛万苦的实现了堆的结构和排序,其实在Java 1.5版本后就提供了一个具备了小根堆性质的数据结构也就是优先队列PriorityQueue。下面详细了解一下PriorityQueue到底是如何实现小顶堆的,然后利用PriorityQueue实现大顶堆。Priorit...

2018-03-26 21:29:17 257

原创 谈谈final、finally、finalize的区别

1、final修饰符(关键字) 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此,一个类不能既被声明为abstract,又被声明为final。将变量或者方法声明为final,可以保证他们在使用中不被改变。其初始化可以在两个地方,一个是其定义处,也就是说,在final变量定义时直接给其赋值;二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数...

2018-03-20 17:28:45 133

原创 Java中的四种引用方式

强引用(StrongReference)强引用就是指在程序代码之中普遍存在的,比如下面这段代码中的object和str都是强引用:Object object = new Object();String str = "hello";只要某个对象有强引用与之关联,JVM必定不会回收这个对象,即使在内存不足的情况下,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。比如下面这...

2018-03-20 16:19:51 262

原创 Java中的String,StringBuilder,StringBuffer的区别

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 1、首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String  String最慢的原因:   String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改...

2018-03-16 19:52:49 143

原创 java中j=j++和j=++j的理解

先来看一段程序:public class Test1 { public static void main(String[] args) { int j = 0; for(int i = 0; i < 100; i++){ j = j++; } System.out.println(j);...

2018-03-01 10:44:23 22925 9

原创 在CentOS上安装FTP服务器过程中遇到的问题

安装ftp服务器

2018-01-25 23:15:39 1244

原创 设置Eclipse的编码格式

eclipse编码格式的设置

2018-01-11 12:06:25 6185

原创 在linux下安装jdk、mysql、tomcat环境

linux下安装jdk、mysql、tomcat环境

2018-01-08 11:41:28 662

原创 全文检索引擎Solr的基本原理

一、总论根据http://lucene.apache.org/java/docs/index.html定义:Lucene是一个高效的,基于Java的全文检索库。所以在了解Lucene之前要费一番工夫了解一下全文检索。那么什么叫做全文检索呢?这要从我们生活中的数据说起。我们生活中的数据总体分为两种:结构化数据和非结构化数据。结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等

2018-01-06 11:56:11 715

转载 JBPM与Spring整合

Spring与Jbpm的整合1,整合的必要性:流程中对业务数据操作与流程操作需要在同一个事务中实现例如:请假流程——请假人提交请假申请,流程跳转到下一个节点任务(JBPM数据);记录请假人信息到用户表(业务数据)一个操作,可能会同时涉及到JBPM数据和业务数据,如果用两个事务,可能会导致业务与流程的数据不一致。 2,整合图整合原理:(1)使用Spring容器

2017-11-15 18:25:39 587

转载 SSH2框架整合小案例

SSH2框架整合小案例2017-07-05 00:34 152人阅读 评论(0)收藏举报分类: SSH2整合 目录(?)[+]StrutsSpringHibernate整合一创建web工程搭建Struts框架开发环境二搭建Hibernate开发环境三搭建Spring开发环境四Spring与Hibernate整合五S

2017-11-15 17:06:48 317

原创 浅谈Struts2中的值栈

Struts2中值栈的理解

2017-11-11 12:42:52 380

原创 浅谈Struts2中的ValueStack、StackContext、request

提出问题: StackContext和ValueStack、request

2017-10-18 18:02:50 429

原创 我们使用AOP的好处

我将从最基础的原始代码–>使用设计模式(装饰器模式与代理)–>使用AOP三个层次来讲解一下我们使用AOP的好处,

2017-10-16 13:43:28 16012 2

原创 java web项目——MySQL中文乱码问题解决

在我们开发java web项目使用MySQL数据库时,常会遇到中文乱码的问题,比如:使用MySQL命令行查询数据库中的表显示中文乱码;使用jdbc访问数据库读取到中文乱码;在jsp页面显示中出现中文乱码等等问题。

2017-10-01 11:44:37 7872 2

原创 MySql之事务处理详解

在我们谈到事务时,我们想想为什么会有事务存在?现在看看下面这个例子: 如果有以下一个场景:A用户和B用户是银行的储户。现在A要给B转账500元。那么需要做以下几件事: 1. 检查A的账户余额>500元; 2. A账户转账扣除500元; 3. B账户收款增加500元; 正常的流程走下来,A账户扣了500,B账户加了500,皆大欢喜。那如果A账户扣了钱之后,系统出故障了呢?A白白损失了500

2017-09-25 17:59:50 416

原创 设计模式之单例模式

单例模式就是有且仅有一个实例化对象。这有什么用处呢?其实有一些对象我们只需要一个,比如说:线程池、缓存、对话框、处理偏好设置和注册表的对象、日志对象、充当打印机显卡等设备的驱动程序的对象。事实上,这些对象只能有一个实例,如果制造出了多个实例,就会导致许多问题产生,例如:程序的行为异常、资源使用过量、或者是不一致的结果。实现单例的方法: 1、首先将该类的构造方法私有化 2、然后提供一个static

2017-09-24 22:30:43 228

原创 三大主流数据库sql server、mysql、oracle的分页操作

三大主流数据库sql server、mysql、oracle的分页操作

2017-04-01 11:08:44 994

原创 java对三大主流数据库sql server、mysql、oracle的连接和操作

Java对三大主流数据库的连接和操作

2017-03-31 19:56:07 3699 2

原创 Java中,配置文件的加载

加载配置文件的方法

2017-03-22 15:55:36 427

黑马程序员19期java学院全部培训资料和22套java web项目

黑马程序员19期java学院全部培训资料和22套java web项目 2016 黑马19期 JAVAEE最新9月: 01、第一阶段java基础 02、第二阶段 Java web(24天) 03、第三阶段struts框架技术(5天) 04、第四阶段Hibernate(ORM框架技术)(4天) 05、第五阶段Spring3框架技术(7天) 06、第六阶段jQuery(2天) 07、第七阶段Oracle(3天) 08、第八阶段web service(2天 ) 09、第九阶段maven(1天) 10、第十阶段项目管理 11、第十一阶段项目:物流管理系统(12天) 12、第十二阶段mybatis(2天) 13、第十三阶段springmvc(2天) 14、第十四阶段lucene(1天) 15、第十五阶段solr(1天) 16、第十六阶段JavaEE_linux 17、第十七阶段redis(1天) 18、大数据:hadoop7天完整版(2016年3月最新版) 19、所有用到的jar包 20、19期压缩包解压密码.docx java项目视频22套: 第01项目:OA办公自动化项目(四套) 第02项目:CRM客户关系管理项目(两套) 第03项目:宅急送项目 第04项目:杰信商贸SSH版 第05项目:电力项目(两套) 第06项目:校内网项目 第07项目:Java邮件开发教程 第08项目:java网上在线支付实战视频 第09项目:俄罗斯方块游戏开发_视频教程 第10项目:交通灯管理系统视频教程 第11项目:银行业务调度系统视频教程 第12项目:供应链系统视频教程 第13项目:网上商城项目 第14项目:药品集中采购系统视频教程 第15项目:杰信商贸SSM版 第16项目:国家税务协同平台项目 第17项目:javaWeb聊天室 第18项目:点餐系统 第19项目:网上书店 第20项目:手机进销存系统 第21项目:新巴巴运动网 第22项目:基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站(自定义模板)

2018-01-07

java开发文档

java开发文档。jdk1.6。java开发文档。jdk1.6。java开发文档。jdk1.6。

2017-11-27

【MyEclipse】配置代码格式化模版

MyEclipse代码格式化模版,可以参照我的博客进行设置,http://blog.csdn.net/u010028869/article/details/49780515

2017-10-15

校内网项目

该项目整合了ssh框架,实现了用户的注册、登陆、修改个人信息、上传头像、上传相册等功能

2017-06-26

公司部门内部留言本

本软件作为内部员工之间留言和发送消息使用。通过口令验证,可留言、上传附件和下载附件。

2017-04-29

文件的上传与下载

该项目使用struts web框架,实现用户注册、上传头像、查看用户信息以及下载用户头像等功能

2017-04-15

jsp标准标签库的使用

该资料中含有jsp标准标签库的使用案例,涵盖了常用的jsp标签、条件标签、迭代标签等等

2017-04-09

新闻管理系统model2模式

该项目采用model2开发模式,将项目分为界面层、业务层、数据访问层、数据库层,下层为上层提供服务。实现对用户登陆验证、新闻查询、添加新闻、安全退出等功能!

2017-03-28

新闻管理系统model1模式

该项目采用传统的model1开发模式,实现对用户登陆验证、新闻查询、添加新闻、安全退出等功能!

2017-03-28

网上书城销售系统

该项目支持用户在网上书城下订单购买图书,并能查看用户的购物车及历史订单。

2017-03-19

空空如也

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

TA关注的人

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