- 博客(28)
- 资源 (1)
- 收藏
- 关注

原创 可重入锁实例(ReentrantLock)-商品订购
```java@RequestMapping("/test")@RestControllerpublic class TestController { Goods goods = new Goods(); /** * 下单 * @return */ @RequestMapping("/placeOrder") public ResponseEntity test(){ return goods.placeOrder(.
2021-07-13 18:06:02
392
原创 MAC搭建Zookeeper环境
一.使用Zookeeper的好处简单的分布式协调过程同步 — 服务器进程之间的相互排斥和协作。有助于Apache HBase进行配置管理有序的消息序列化 — 根据特定规则对数据进行编码。 确保应用程序运行一致。可靠性原子性 — 数据转移 要么全部成功 要么全部失败二.zoo.cfgtickTime = 2000 — tickTime的意义:客户端与服务器...
2019-07-25 16:58:16
711
原创 WebSocket实现实时通讯
WebSocket是HTML5以后基于TCP协议应用层的一种全双工实时通讯协议。注:全双工:个人了解服务器和客户端可以进行信息的相互传递WebSocket由何而来 在没有WebSocket的时候,我们都是基于HTTP协议进行的一种实时通信。而HTTP协议并没有状态,而服务器只会响应来自客户端请求,而他并不具备持续连接. 所以我们...
2018-12-12 11:09:00
491
转载 单例模式
定义: 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。 特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例 单例模式的要点: 1,私有的构造方法 ...
2018-09-24 23:59:23
213
原创 java设计模式
一、工厂模式(Factory)二、建造模式(Builder)三、原始模型模式(Prototype)四、单例模式(Singleton)五、适配器(Adapter)六、桥梁模式(Bridge)七、合成模式(Composite)八、装饰模式(Decorator)九、门面模式(Facade)十、享元模式(Flyweight)十一、代理模式(Proxy)十二、职责...
2018-09-21 23:43:07
172
原创 CAS机制是什么?有什么缺点,会出现什么问题
CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。CAS的缺点:1.CPU开销较大在并发量比较高的情况下,如果许多线程反复尝试更新某一个变量,却又一直更新不成功,循环往复,会给CPU带来很大的压力。2.不能保证代码块的原子性CAS机制所保证的只是一个变量的原子性操作,...
2018-09-20 22:57:48
5432
原创 Nginx 知识总结(十七)
Nginx是一个自由、开源、高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当。Nginx以其高性能、稳定、功能丰富、配置简单及占用系统资源少而著称。 Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多. *基础功能 处理静态文件,索引文件以及自动索引;...
2018-09-19 23:49:23
181
转载 springboot 知识总结(十六)
什么是spring bootSpring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(...
2018-09-19 00:12:01
201
原创 二叉树 知识总结(十五)
二叉树的定义二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。2、二叉树的性质性质1:二叉树第i层上的结点数目最多为2i-1(i>=1)性质2:深度为k的二叉树至多有2k-1个结点(k>=1)性质3:包含n个结点的二叉树的高度至少为(log2n)+1性质4:在任意一棵二叉树中,若终端结点...
2018-09-17 23:09:10
242
原创 了解分布式 知识总结(十四)
随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。本文主要简单介绍了分布式系统的概念、分布式系统的特点、常用的分布式方案以及分布式和集群的区别等。 一、集中式系统 在学习分布式之前,先了解一下与之相对应的集中式...
2018-09-16 23:36:11
180
原创 Volatile和Synchronized四个不同点 知识总结(十三)
1 粒度不同,前者针对变量 ,后者锁对象和类2 syn阻塞,volatile线程不阻塞3 syn保证三大特性,volatile不保证原子性4 syn编译器优化,volatile不优化 volatile具备两种特性: 1.保证此变量对所有线程的可见性,指一条线程修改了这个变量的值,新值对于其他线程来说是可见的,但并不是多线程安全的。2.禁止指令重排序优化。...
2018-09-15 23:17:54
519
翻译 Hadoop 知识总结(十二)
Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。 Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。 Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。 Hadoop 还是可伸缩的,能够处理PB级数据。 ...
2018-09-14 23:49:51
199
翻译 什么是大数据? 知识总结(十一)
什么是大数据 大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。大数据技术,是指从各种各样类型的数据中,快速获得有价值信息的能力。适用于大数据的技术,包括大规模并行处理(MPP)数据库,数据挖掘电网,分布式文件系统,分布式数据库,云计算平台,互联网,和可扩展的存储系统。大数据的特点 具体来说,大数据具有4个基本特征: 一是数据体量巨大。百度...
2018-09-13 22:59:01
1488
原创 行级锁和表级锁 知识总结(十)
锁包括行级锁和表级锁 行级锁是一种排他锁,防止其他事务修改此行;在使用以下语句时,Oracle会自动应用行级锁:INSERT、UPDATE、DELETE、SELECT … FOR UPDATE [OF columns] [WAIT n | NOWAIT];SELECT … FOR UPDATE语句允许用户一次锁定多条记录进行更新使用COMMIT或ROLLBACK语句释放锁 ...
2018-09-12 22:48:28
5124
翻译 注解的意义 知识总结(九)
java 注解,从名字上看是注释,解释。但功能却不仅仅是注释那么简单。注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种: 生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等跟踪代码依赖性,实现替代配置文件功...
2018-09-11 21:59:20
242
原创 mybatis 使用场景及优缺点 知识总结(八)
1. Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的SQL,最后将SQL执行的结果再映射生成的Java对象。 2. Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵...
2018-09-10 22:35:34
359
原创 多线程死锁解决 知识总结(七)
我们可以使用synchronized 关键字来保证代码块的原子性。synchronized 能够使线程在执行到该代码块时,自动获取此内部锁,而一旦离开该代码块,无论是完成或者中断都会自动释放锁。显然这是一个独占锁,每个锁请求之间是互斥的。相对于众多高级锁 (Lock/ReadWriteLock 等),synchronized 的代价都比后者要高,但是 synchronzied 的语法比较简单,而且...
2018-09-09 21:50:32
153
原创 初识dubbo分布式框架 知识总结(六)
Dubbo是什么? Dubbo是一个分布式服务框架(RPC),致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.核心部分包含: 1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负...
2018-09-08 20:01:20
169
原创 HashMap何时扩容,扩容的算法是什么? 知识总结(五)
HashMap何时扩容: 当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值---即当前数组的长度乘以加载因子的值的时候,就要自动扩容 扩容的算法是什么: 扩容就是重新计算容量,向HashMap对象里不停的添加元素,而HashMap对象内部的数组无法装载更多的元素时,对象就需要扩大数组的长度,以便能装入更多的元素。当然Java里的数组是无法自动扩容的,...
2018-09-07 22:25:14
5182
1
原创 Java回收器中的停止-复制以及标记-清理 知识总结(四)
1.停止-复制? 停止-复制:首先我们将程序停止,重新分配一个新的内存空间去存储活的对象。分配之后,是所在内存地址空间有序的,然后把以前使用过的地址空间清除.在垃圾并不是非常多的时候,我们是感受不到那种间隙的。 图解:回收之后是有序的. 缺点:有点点浪费内存空间,如果对象存活率较高时要执行较多...
2018-09-06 20:34:05
415
原创 Java垃圾回收器如何工作 知识总结(三)
Java中,在堆的资源分配是比较高昂的。而垃圾回收期可以提高对象的创建速度。 假如某些对象在执行完某个操作的时候,不用了,随着程序的运行,这些废对象所占资源就比较的大。 为了解决这些问题,可以用: 一:堆指针 只是简单的移动到未分配的空间。不过这种方式在Java虚拟机中并没有很广用,因为如果多次移进移出。会严重的影响调度的效率 二:引用...
2018-09-05 20:34:01
160
原创 多线程的六种实现方式:知识总结(二)
实现多线程的主要有两种方式:一种是继承Thread类,另一种是实现Runnable接口.两种方式都很相似。第一去实现这个线程任务(线程类{ void run(){方法体}}),然后去执行这个线程任务(线程类.start())一.继承Thread类 步骤: 1.创建类并继承Thread类 2.重写run方法 ...
2018-09-04 19:47:49
237
原创 乐观锁和悲观锁 :知识总结(一)
乐观锁: 相对比较乐观,进行更新的时候,并不会刻意的上锁,只会对该字段进行一个判断,判断是否修改过。可能会导致更新失败 使用场合: 秒杀、比较适合读取操作比较频繁的场景 案例: 实现乐观锁的两种方式:利用版本号或者时间戳UPDATE TABLE...
2018-09-03 09:47:28
364
原创 Spring给程序员带来的好处
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。 Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean...
2018-08-30 14:58:07
1331
1
原创 Oracle 11g 安装步骤(桌面版)
1.准备文件将以下两个文件下载下来,并解压到同一目录(或者将文件1的文件复制到文件2的文件中),并且同一文件夹并且同一目录中不要以中文命名http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_database_1of2.ziphttp://download.oracle.com/otn/nt/oracle11g/...
2018-07-31 08:54:05
3435
2
原创 Tomcat工作原理
Tomcat是Servlet运行环境(容器),每一个Servlet执行init(),service(),destory().下面我们来分析一下Tomcat Server处理一个http请求过程来解释Tomcat原理假设 : 来自客户的请求为:http://localhost:8080/student/index.jsp 1.请求被发送到本机端口8080,被在哪里侦听的Coyote Ht...
2018-07-11 17:45:11
121
原创 int和Integer的区别
Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每 一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。 我们知道Java有8种基本数据类型:byt...
2018-07-10 08:48:11
956
原创 SpringMVC文件上传配置——单文件上传
1.导入相关jar包 这里我们用的是:commons-io-2.4.jar、commons-fileupload-1.2.2.jar、commons-lang-2.6.jar2.首先配置springmvc-servlet.xml(共同点):无论多文件还是单文件都要配置 <bean id="multipartResolver" class="org.springframewo...
2018-07-09 18:19:57
245
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人