自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (13)
  • 收藏
  • 关注

转载 Java并发之AQS详解

一、概述  谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!  类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。  以下是本文的目录大...

2018-11-15 07:50:40 234

原创 CAP理论浅析

一、什么是CAP理论       CAP理论观点是,在分布式计算机系统中不可能同时提供一下全部三个保证: 一致性(Consistency):所有节点同一时间看到的是相同的数据。 可用性(Availability):不管是否成功,确保每一个请求都能接收到响应。 分区容错性(Partition tolerance):系统任意分区后,在网络故障时,仍能操作。 二、为什么只能三选二?下...

2018-10-28 12:57:12 421

原创 分布式提交

在分布式系统中,事务往往包含多个参与者的活动,单个参与者的活动是能够保证原子性的,而保证多个参与者之间原子性则需要通过两阶段提交或者三阶段提交算法来实现。两阶段提交:            两阶段提交协议(Two-phase commit protocol,2PC)的过程涉及协调者和参与者。协调者可以看做是事务的发起者,同时也是事务的一个参与者。对于一个分布式事务来说,一个事务是涉及多个参...

2018-10-27 10:56:37 558

原创 设计模式之迭代器模式

迭代器模式是一种行为型模式。迭代器模式允许对一组对象元素的遍历以完成功能实现。UML图: 角色说明: Container:抽象容器:用于定义聚合关系的接口。ConcreteContainer:具体容器:一个聚合关系的实现。Iterator:迭代器:它会实现一个用于定义迭代器的抽象迭代器接口。ConcreteIterator:具体迭代器:迭代器的实现。迭代器模式的创建...

2018-10-21 09:30:04 404

原创 设计模式之代理模式(二)——动态代理

动态代理:在程序运行时,通过反射机制动态的创建一个代理类先来一个小Demo,逐步理解动态代理  1.声明一个接口,里面有一个move的方法public interface Moveable { void move();}2.创建一个Tank类,实现上面的接口,重写方法:public class Tank implements Moveable{ @Ove...

2018-10-10 20:52:31 230

原创 设计模式之代理模式(一)——静态代理

代理模式:给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用。UML图:角色:抽象角色(Subject):它是一个由真实角色实现的接口,并能够表征真实角色的功能。该接口同时也必须由代理角色所实现,这样代理角色就能够用于所有真实角色能够使用的地方代理角色(Proxy):它维护了能够允许代理角色访问真实角色的引用。代理角色与真实角色都实现了同一个接口,这样代理角色就能够代...

2018-10-10 10:12:39 194

原创 设计模式之装饰者模式

装饰者模式主要用于动态的给一个对象添加一些额外的职责,就增加功能来说,装饰者模式比生成子类更为灵活。一般来说,继承可以来扩展类的功能,但与继承不同的是,通过装饰者模式,我们可以选择一个类的某个对象,对其进行修改,而不会影响这个类中其他的实例。继承会直接为类增加功能,而装饰者模式则会通过将对象与其他对象进行包装的方式将功能添加到类。装饰者模式UML图:       在应用装饰者模式的时候,我...

2018-10-09 20:10:41 215

原创 设计模式之外观模式

简介:《设计模式》对外观模式的定义:为子系统中的一组接口提供一个统一接口,外观模式定义了一个更高层的接口,使子系统更加容易使用。也就是说:外观模式隐藏了系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。外观模式结构图:角色:       1:门面角色(Facade):外观模式的核心,被客户角色所调用,它熟悉子系统的功能        2:子系统角色:实现了子系统的功能...

2018-10-08 19:32:20 332

原创 TCP三次握手和四次挥手过程原理及扩展(二)

【1】TCP如何保证可靠性传输?  在传递数据之前,会有三次握手来建立连接 应用数据被分割成TCP认为最合适的数据库(按字节编号,合理分片),这和UDP完全不同,应用程序产生的数据报长度保持不变。(将数据截断为合理的长度) 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。(超时重发) 当RCPU收到发自TCP连接的另一端的...

2018-10-04 17:12:20 299

原创 TCP三次握手和四次挥手过程原理及扩展(一)

先上图: 三次握手过程状态:         LISTEN:表示服务器端的某个SOCKET处于监听状态,可以接受连接了。        SYN_SENT:当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入SYN_SENT状态,并等待,服务端发送三次握手的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。       SYN_RCVD...

2018-10-02 10:36:38 255

原创 (一)OIS和TCP/IP各层的结构、功能、协议

之前学过计算机网络相关的知识,最近好像忘得差不多了,再重新拿起课本,进行学习。参考模型各层的功能:物理层:定义了为建立、维护和拆除物理链路所需的机械的、电气的、功能的和规程的特性,其作用是使原始的数据比特流能在物理媒体上传输。具体涉及接插件的规格、“0”,“1”信号的电平表示、首发双方的协调等内容。 数据链路层:比特流被组织成数据链路协议数据单元(通常称为帧),并以其为单位进...

2018-10-01 15:40:25 2358

原创 RabbitMQ(二)——消息确认机制

RabbitMQ的消息确认机制(事务+confirm) 两种方式:       AMQP:实现了事务机制      Confirm模式事务机制txSelect:用于将当前channel设置成transation模式txCommit:用于事务提交txRollback:回滚事务代码实操:生产者:public class TxSend { private st...

2018-09-29 07:25:48 468

原创 RabbitMQ学习(一)

简单队列: P:消息生产者红色区域:消息队列C:消息消费者代码实操:先写一个获取连接的工具类:public class ConnectionUtils { public static Connection getConnection() throws IOException, TimeoutException{ //定义一个连接工厂 Connection...

2018-09-28 16:17:46 243

原创 (一)找到单链表中倒数第K个结点

本文旨在总结一下这道题的几种解法题目描述:输入一个链表,输出该链表中倒数第K个结点解法一:蛮力法   从链表的第一个节点开始,统计当前节点后面的节点个数。如果后面的节点个数小于n-1,说明链表中的节点个数不够。如果数量大于n-1,则移动到下一个结点(作为新的当前节点),重复该过程直至当前节点后面的节点个数等于n-1.算法结束   时间复杂度为O(n^2)。对于每个结点,都需要从当前节...

2018-09-27 11:46:17 1592

转载 深入理解Java虚拟机(四)——JVM堆内存设置原理

 堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。 Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),N...

2018-08-23 16:27:17 176

原创 深入理解java虚拟机(三)——垃圾收集算法

话不多说,直接开始。标记—清除算法:最基础的算法就是标记—清除算法了。该算法分为两个阶段:标记、清除。首先标记出需要回收的对象,在标记完成后统一回收掉所有被标记的对象。由下图可知,该算法有两个主要缺点:一个是效率问题(标记和清除效率都不高);一个是空间问题(清除后产生大量的内存碎片),这会导致程序在以后运行过程中需要分配大对象时找不到足够的连续内存而不得不提前触发另一次垃圾收集动作...

2018-08-14 20:08:03 195

原创 MySQL多数据源实战(二)——Spring多数据源 一主多从读写分离

本篇文章将在代码层面实现主从复制读写分离1.首先,得搞三个数据源,怎么做在上篇文章中已经介绍过,一主两从:如下图3306作为主库,进行写,3307和3308作为读库,进行读取操作 。2.创建一个Spring工程:具体怎么创建就不在进行赘述了。3.因为有三个数据源,所以在jdbc.properties中要配置三份数据库的连接信息:jdbc_url_m=jdbc:mysql:...

2018-08-13 21:10:38 1294 1

原创 深入理解java虚拟机(二)——判断对象是否可回收

上一篇文章简单介绍了Java内存运行时区域的各个部分。主要可以分为两部分:线程私有区域和数据共享区域。线程私有区域就不需要过多考虑内存回收问题,因为方法结束或线程结束时,内存也就随之回收了。所以内存回收是对共享区域内存的回收。首先介绍对堆内存的回收。如何判断对象“死去”?在堆中存放着Java中几乎所有的对象实例,垃圾收集器在对对象进行回收前,首先要判断对象是否存活,如何判断呢,有两种方...

2018-08-13 00:40:54 210

原创 Shiro(五)——权限注解

@RequiresAuthentication:表示当前Subject已经通过login进行了身份验证;即Subject.isAuthenticated()返回true @RequiresUser:表示当前Subject已经身份验证或者通过记住我登录的 @RequiresGuest:表示当前Subject没有身份验证或通过记住我登录过,即是游客身份 @RequiresRoles(value=...

2018-08-10 21:46:48 351

原创 Shiro(四)——授权

Coding之前,先来解释一下相关的概念吧授权:也称访问控制,即在应用中控制谁访问哪些资源(如访问页面/编辑数据/页面操作/等)。在授权中需了解几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、角色(Role)。 主体(Subject):访问应用的用户,在Shiro中使用Subject代表该用户,用户只有授权后才能访问响应的资源。 资源(Reso...

2018-08-10 09:20:38 170

原创 shiro(三)——认证、MD5加密、多Realm验证

代码接着之前文章的进行。首先表单页面:包含用户名密码:只是为了实现功能,就不细究页面的美观了。。<form action="shiro/login" method="POST"> username:<input type="text" name="username"/> <br><br> passwor

2018-08-09 09:26:57 290

原创 shiro(二)——集成Spring

1.导入spring、Springmvc与Shiro以及对日志支持的jar包 在web.xml中配置spring、springmvc、以及shiro的相关配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml...

2018-08-08 17:30:23 152

原创 Shiro(一)——基本组件初步认识

几天前的面试过程中,被问到了有没有了解过Shiro。之前对Shiro也了解过一点,只是浅尝辄止,接下来,就花点时间好好学习一下Shiro。本文只是了解一下Shiro的架构及其内部的基本组件。简介:Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。并且相对于其他安全框架,Sh...

2018-08-08 00:29:29 360

原创 SpringCloud实战(四)——Hystrix线程隔离,请求缓存,请求合并

上篇文章已经简单的介绍了Hystrix的请求熔断和服务降级,本篇文章将介绍剩下的三个特性。线程隔离:在Hystrix中, 主要通过线程池来实现资源隔离. 通常在使用的时候我们会根据调用的远程服务划分出多个线程池.比如说,一个服务调用两外两个服务,你如果调用两个服务都用一个线程池,那么如果一个服务卡在哪里,资源没被释放,后面的请求又来了,导致后面的请求都卡在哪里等待,导致你依赖的A服务把你卡在哪...

2018-08-07 09:25:31 2197

原创 SpringCloud实战(三)——Hystrix请求熔断服务降级

本篇文章将讲Hystrix,该组件的核心功能就是请求熔断,服务降级。当然还有其他的功能:依赖隔离、请求缓存、请求合并。Hystrix特性:1.请求熔断: 当Hystrix Command请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open). 这时所有请求会直接失败而不会发送到后端服务. 断路器保持在开路状态一段时间后(默认5秒), 自动切换到半开路状态(HA...

2018-08-06 08:56:25 1122 1

原创 SpringCloud实战(二)——Ribbon客户端负载均衡

本篇文章将介绍SpringCloud Ribbon在客户端负载均衡的调用服务。Ribbon:客户端的负载均衡。什么是客户端的负载均衡呢?就是客户端是知道哪些服务是高可用的,哪些服务还没有挂掉。一、创建一个工程:pom文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://m...

2018-08-05 09:02:55 385

原创 SpringCloud实战(一)——Eureka

众所周知,微服务中最基础,最核心的就是注册中心了。下面利用Eureka实现服务注册中心,并注册一个简单的服务提供者。一、创建一个SpringBoot工程,pom.xml文件如下<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs...

2018-08-04 10:32:15 220

原创 深入理解java虚拟机(一)——java内存区域

运行时数据区域               java虚拟机在执行Java程序的过程中会将它所管理的内存划分为若干个不同的数据区域,这些区域都各有各的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。JVM运行时数据区如图: 1.程序计数器:       是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号...

2018-08-04 08:40:02 192

原创 ActiveMQ(一)

ActiveMQ:一款消息中间件。目的:异步,解耦。异步:将一些与业务关联不大的功能模块异步出去。解耦:降低模块之间的藕合。消息中间件的传输模式点对点模式:点对点模式中有三个角色,消息队列(Queue)、发送者(Sender)、接收者(Receiver)。发送者将消息发送到一个特定的队列中,等待接收者从队列中获取消息。P2P的三个特点:每个消息只能被一个接收者消...

2018-07-31 15:48:16 154

原创 HashMap、HashTable、ConcurrentHashMap的区别

引言Hashmap和HashTable的区别: 简单的回答: HashMap是非线程安全的,HashTable是线程安全的(synchronized) HashMap内部的Key和Value允许空值,HashTable则都不可以 HashMap效率比HashTable效率高 Java中的另一个线程安全的与HashMap功能极其类似的类是什么?同样是线程安全,它与HashTab...

2018-07-31 15:43:52 174

原创 dubbo-admin.war运行报错:Bean property 'URIType' is not writable or has an invalid

因为 jdk 是1.8的版本,和 dubbo-admin 存在兼容性问题。所以报错:Bean property 'URIType' is not writable or has an invalid;解决方法,修改 tomcat 默认的 jdk到 1.7 :1) 修改bin文件夹下面的catalina.bat文件,把如下内容rem ----- Execute The Requeste...

2018-07-20 10:41:07 227

原创 MySQL多数据源实战(一)——MySQL主从复制

如上图,我将会将数据库拆分为一个写库,两个读库。主从复制 找到Mysql所在的安装目录:整体复制两份到别的地方,在复制之前应该先停掉MYSQL服务。 修改复制过来的conf下的my.ini文件:修改端口号分别为3307,3308 修改basedir和datadir: 在Mysql目录下新建data文件夹4.以管理员身份运行命令提示符:5.进行如下输入:但...

2018-07-19 13:50:38 382

原创 AOP小结

AOP概述:           AOP(Aspect Oriented Programming),即面向切面编程。可以说是OOP(Object Oriented Programming,面向对象编程的切入点)的补充和完善。        OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合,不过在OOP允许开发者自定义纵向的关系,但并不适合横向的关系,例如日志...

2018-07-18 09:06:05 168

原创 SpringMVC实现全局异常处理

在springMVC中进行全局异常处理的配置<bean class="cn.znx.blog.exception.MyExceptionResolver"></bean>定义全局异常处理类:需要实现HandlerExceptionResolver接口 package cn.znx.blog.exception;import com.google.gson...

2018-07-16 21:56:48 246

原创 NIO(二)——概述

NIO目的是用来解决传统IO的问题NIO中的几个基础概念通道(Channel):传统IO进行读写操作:这里的Stream相当于一个传输的通道。传统IO中,stream是单向的,如InputStream只能进行读取操作,OutputStream只能进行写操作。NIO中,channel是双向的,既可以用来进行读取操作,又可以进行写操作。Buffer(缓冲区)在NIO中所...

2018-07-16 20:24:11 166

原创 SpringBoot整合Mybatis遇到的问题

初学SpringBoot,在集成Mybatis的过程中遇到了点问题:出现问题之前的操作:使用Mybatis的generator自动生成dao层和entity层中的类和接口在UserController中注入userMapper:代码如下:@Autowiredprivate UserMapper userMapper;运行SpringBoot应用,报错!!!问题如下:Field userMappe...

2018-06-11 23:12:18 456 2

原创 NIO(一)——Buffer

                                    NIO(一)——Buffer    NIO简介NIO即New IO,是用来代替标准IO的,提供了与标准IO完全不同传输方式。核心:通道(Channel)和缓冲区(Buffer)和选择器(Selectors),Channel负责传输,Buffer负责存储与标准IO的区别标准IO是面向字节流的,NIO是面向缓冲区的标准IO是阻塞I...

2018-05-23 09:54:05 192

原创 Spring之AOP(一)

AOP:Aspect OrientedProgramming,即面向切面编程。是spring框架的另一个核心。AOP利用一种称为“横切”的技术,剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,即为“Aspect”,切面。简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,以便减少系统的重复代码,降低模块之间的耦合度,提高可操作性和可维护性。AOP核心概念:...

2018-04-30 20:56:27 150

原创 设计模式之单例模式

单例模式之前看过单例模式,昨天突然用到,就再回顾并总结了一下,当做复习。核心:保证一个类只有一个实例,并且提供一个访问该对象的全局访问点常见应用场景:Windows的任务管理器Windows的回收站项目中,读取配置文件的类,一般也只有一个对象,没有必要酶促使用配置文件数据,每次new一个对象去读取.........优点:由于单例模式只生成一个实例, 减少了系统性能开销,当一个对象的产生需要比较多的...

2018-04-13 14:00:40 182

原创 Spring之IOC(一)

Spring之IOC(一)对于Spring的基本概念在这里就不在赘述了。Spring的最核心的两部分则是AOP(面向切面编程)和IOC(控制反转)。本篇文章主要讲我对IOC的理解。IOC:即Inversion of Control,控制反转。首先,IOC不是一种技术,而是一种思想。我们可以把IOC模式看做是工厂模式的升华,可以把IOC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件...

2018-04-12 20:28:22 150

从Paxos到Zookeeper分布式一致性原理与实践.zip

《从Paxos到Zookeeper分布式一致性原理与实践》高清PDF。

2019-07-28

Java核心技术36讲

极客时间Java核心技术36讲,如有问题,请下方留言。。

2018-12-23

Bootstrap常用页面模板

Bootstrap常用页面模板。包含常用登陆注册页,后台管理体系页面等。

2018-11-14

Mybatis开发手册

Mybatis开发手册+Mybatis官方文档。。。。。。。。。。

2018-11-11

SSM学生管理系统

该项目使用Spring、SpringMVC、Mybatis搭建,MySQL为数据库。

2018-11-10

Python机器学习基础教程(完整电子版).pdf

Python机器学习基础教程(完整电子版).pdf,如有问题,直接留言即可

2018-10-31

SSM+BootStrap+MYSQL简单增删改查

很久之前写的,该项目使用Spring+SpringMVC+MyBatis+Bootstrap+MySQL实现的简单增删改查小Demo,换点积分

2018-10-22

设计模式解析+Java设计模式(PDF)

设计模式解析(PDF)高清+Java设计模式(PDF)。如有疑问,联系[email protected]

2018-10-09

网上商城源码+数据库(完全个人设计)

自己之前写的练手的小项目,没地方放了,丢到上面吧。 技术:JSP+Servlet+MYSQL+BootStrap+Html+CSS+Jquery 说明:完全自己设计编写,不是网上其他的抄来抄去的。

2018-09-12

jquery.json.min.js

jquery.json.min.js的2.4.0版本,自己测试是可以使用的

2018-04-23

软件开发文档大全

该软件开发文档大全中包括了软件开发过程中所需要写的文档模板。

2018-04-14

ELK三件套资源

ElasticSearch5.5.2,logstash5.5.2,kibana5.5.2的windows环境下安装包

2012-11-18

空空如也

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

TA关注的人

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