自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 windows10环境搭建zookeeper集群,创建一个简单的zookeeper项目

一、windows10环境搭建zookeeper集群今天尝试在自己的windows系统中搭建zokeeper集群环境,记录下步骤和出现的问题以及解决方法。搭建环境1)电脑里下载的zookeeper版本是3.4.5,解压到D盘,创建3个目录,分别为server1,servr2,server3,将解压好的文件分别复制一份到这三个目录中。2)配置。进入到conf目录中,将zoo_s...

2019-04-01 15:38:08 945

原创 windows搭建redis集群

参考:https://www.cnblogs.com/thirteen-zxh/p/9187875.html1)安装redis环境,版本必须在3.0以上,我的是:3.2.1002)安装ruby环境,我的版本是:2.2.43)redis-cluster需要安装相关的依赖: win+r进入黑窗口,输入:gem install redis,安装的时候会出现很多问题,网上搜搜基本都可以解...

2019-03-28 11:19:56 225

原创 zookeeper:基于观察者模式设计的分布式服务管理框架

zookeeper:是一个集群,如果一个节点down掉,会有另外的节点来替代,并且数据是同步的。实现分布式的锁,数据的一致性保证,数据的高可用性。提供少量数据的存储和管理,监听机制 1. 从设计模式角度来看,是一个基于观察者模式设计的分布式服务管理框架,管理分布式环境中的数据,用来解决分布式集群中应用系统的一致性问题。他能提供类似于文件系统的目录节点树的方式的数据存储。但是zk...

2019-02-14 09:59:27 1080

原创 SpringBoot创建一个HelloWorld

首先创建一个maven项目,我选择了war,刚创建pom文件头报错,鼠标移到错误提示那块,点击换成低版本的就行.pom.xml中加入依赖:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation...

2018-11-12 18:11:33 203

原创 Spring Boot入门笔记

参考:https://www.jianshu.com/p/8e3de55d4373(1)@Configration标签   表示这个类可被Spring识别的配置对象的类,只有有这个标记的标签的类才能使用@Bean标签作用于对应的方法上面。(2)@Bean标签@Bean(destroyMethod = "destory", initMethod = "init")也可以通过这样的写法...

2018-11-10 15:12:55 185

原创 设计模式:适配器,桥接,代理模式的区别

适配器模式:将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。比如:手机的usb数据线可以被看做适配器,不同的手机通过不同的usb数据线连接到电脑相同的usb接口上。还有,栈和队列被称为容器适配器,他们本身都是基于线性表来实现的,但是对外提供了特定的操作接口。参考:https://www.cnblogs.com/-crazysnail/...

2018-11-03 17:49:04 2510 1

原创 AOP与IOC

1. 什么是AOP?核心思想:动态的添加和删除切面上的逻辑而不影响原来的执行代码。面向切面编程(AOP)完善spring的依赖注入,在spring中主要表现为两个方面:》》面向切面编程提供声明式事务管理》》spring支持用户自定义的切面面向切面编程是对面向对象编程的补充。将程序的运行过程分解成各个切面。两个特征:》》各个步骤之间良好的隔离性》》源代码无关性sp...

2018-11-02 15:30:21 332

原创 JDK动态代理与cglib区别

JDK动态代理与cglib区别:代理模式(之前的博客写过): https://mp.csdn.net/postedit/82844237代理类和被代理类实现相同的接口。利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用invokeHandler来处理。cglib:利用asm开源包,对代理对象类的class加载进来,通过修改其字节码生成子类来处理,所以比动态代理快。采用的...

2018-11-02 14:32:42 169

原创 代理模式

首先了解代理模式:给某一个对象提供一个代理,并由代理对象控制对原对象的引用,是一种对象结构型模式。(比如某台远程服务器提供了一个功能很强大的加密算法,而现在正在开发的系统又需要使用到该算法,由于该算法位于远程服务器端,封装该算法的对象位于远程服务器的内存中,本地内存中的对象无法直接访问,因此需要通过一个远程代理的机制来实现对远程对象的操作)subject(抽象主体角色)声明了真实主...

2018-11-01 20:04:09 287 1

原创 RestFul理念

什么是RestFul?Representational State Transfer:表现层状态转移来自百度百科:Restful是一种软件架构风格,设计风格,而不是标准,只是提供了一种设计原则和约束条件。主要用于客户端和服务器交互的软件。基于这个风格设计的软件可以更简洁,更有层次,更容易实现缓存等机制。所以只要符合Rest设计原则的API都可以被称为Restful.后端将资源发布为...

2018-11-01 19:56:12 178

原创 秋招面经

今年秋招惨痛的面试,已找到1. 国泰产险 电话面,一面挂hashmap的数据结构,设计模式,arraylist添加删除,数据结构,restful,SRUD,用HTTP动词来描述操作。GET,POST,PUT,DELETE.RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式。GET:http://www.xxx.com/source/id 获取指定ID的某...

2018-10-11 22:38:59 412

原创 垃圾回收

一、java内存区域5个区域:方法区,虚拟机栈,本地方法栈,堆,程序计数器。程序计数器:线程私有可以看做是当前字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。(分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器完成)java虚拟机栈:线程私有。生命周期与线程相同,虚拟机栈描述的是java方法...

2018-10-06 18:14:01 102

原创 设计模式:简单工厂,工厂模式,抽象工厂模式

 参考:http://www.cnblogs.com/Bobby0322/p/4178412.html简单工厂:水果工厂:只需知道水果的名字就可以得到相应的水果。可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。客户端只需知道产品对应的参数(通过名字或者参数),就可以得到对应的实例。Product是抽象接口或...

2018-10-05 22:27:23 230

原创 二叉树的多种遍历

二叉树的遍历:递归就不用说了,3行代码就解决了面试的时候遇到这个,想不起来了,现在总结一下。参考博客:https://blog.csdn.net/u012102306/article/details/52841163https://www.cnblogs.com/SHERO-Vae/p/5800363.html先序遍历:根左右。当前节点p放入栈中,判断P是否有左孩子,如果没...

2018-10-05 21:52:05 173

原创 常用的git命令

git:git branch  分支管理git checkout   切换分支或者创建分支git commit     提交cvs:cvs checkoutupdatecommithistory

2018-10-03 20:00:29 124

原创 OK Group笔试编程,求一个数的阶乘值后面有几个0

题目描述:求一个数的阶乘的值,最后求结果末尾有几个0;分析:1)如果用常规的算法,先求出这个数的阶乘,基本都会溢出,不管将结果定义为Long还是double类型的,还有就是效率特别低2)末尾产生0的情况,意思就是末尾是10,那么2*5 = 10.所以现在只需要算出2的个数和5的个数中两个的最小值就可以。显然,能被2整除的数比被5整除的数多,所以只要得出整除5的个数即可。假设某个...

2018-10-02 23:25:21 840

原创 二分查找

二分查找:https://blog.csdn.net/u014067137/article/details/80332251前提:待查的表必须是有序表因此折半查找适用于不经常变动,并且查找频繁的有序表思想:首先待查找的元素与表的中点位置比较,大于中点位置,直接查找右边,小于的话在左边找(升序)。缩小了比较的次数。代码:非递归的实现:时间复杂度为O(log2n)...

2018-10-02 23:16:30 127

原创 数据库索引,B树,B+树,group by,order by区别

数据库索引加索引后查询会变快,但是写入,删除,修改会变慢,增加了数据库的存储空间类似于书的目录。先了解下平衡树(b tree或者b+ tree).如果数据库的表有主键,那么表在磁盘上的存储结构就由整齐排列的结构变为树状结构。也就是平衡树结构,也就是整个表变成了一个索引。这样被称为聚集索引。因此一个表只能有一个聚集索引。为什么索引会给查询以外的操作带来影响?平衡树必须始终维持...

2018-09-26 20:19:40 782

原创 非阻塞NIO与IO

NIO与IO的区别:(1)NIO以块的方式处理数据,IO以字节流的形式写入和读出。因此NIO的效率比IO的效率高很多。(2)NIO采用通道和缓冲区的形式来进行处理数据的。它的通道是双向的,但是IO中的流是单向的。通道Channel:Channel是对IO包中的流的模拟。通过它可以对数据进行读取和写入,到任何目的地或者来自任何地方的所有数据都必须通过一个channel对象。通道就像是...

2018-09-25 21:10:05 170

原创 多线程:死锁,乐观锁,悲观锁

死锁:两个或者多个进程竞争统一资源而形成的僵持的局面,若无外力作用,将无法推进。本质原因:1)系统资源有限2)进程推进顺序不合理死锁的条件:(1)互斥。某个资源在一段时间只能有一个进程占有,只有当使用该资源的进程释放后,其他进程才能占有该资源。(2)请求和保持。进程A已经拥有了一些资源,现在要访问其他资源,A进程阻塞,但是在A等待的过程中,不会释放已有的资源,(3)...

2018-09-25 19:58:21 689

原创 java并发编程:线程池

线程池:在多线程环境中,如果并发的线程数量很多,并且每一个线程执行很短的时间就结束了, 频繁地创建线程和销毁线程是需要时间,这样会很大程度上降低系统的效率。而线程池使得线程可以复用,执行完一个任务,并不被销毁,而是继续执行其他的任务。核心类:ThreadPoolExecutorThreadPoolExecutor继承于AbstractExecutorService ,提供了4个构造器。...

2018-09-25 15:55:06 117

原创 剑指offer:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。

题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3分析: 判断字符串是否是数字,首先这个字符串必须只包括以下几种情况:1)0---9之间的数字2)e或者E,指数,不能在末尾,e后面如果有+  -   号,则正负号后面不

2018-09-24 20:43:21 739 1

原创 数据库:DDL,DML,DCL,实体完整性,参照完整性,用户自定义完整性

1.DDL,DML,DCLDDL:数据库定义语言。用来定义表或者改变表的结构,数据类型,表之间的连接,约束等初始化工作上。包括:CREATE    DROP    ALTER等DML:数据库操纵语言。对数据库的数据进行操作。包括:DELETE    UPDATE    INSERT    SELECT等DCL:数据库控制语言。用来设置或者更改数据库用户或者角色权限的语言,包括:GRAN...

2018-09-24 18:26:46 3857

原创 剑指offer:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。

题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。分析:一个字符串是数值的要求:1)每个

2018-09-17 23:00:05 607

原创 剑指offer:平衡二叉树(java)

题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。分析:满足:左右二叉树的层数之差小于等于11)递归知道了二叉树的深度怎么求,现在要判断是否是平衡二叉树,只要分别求出左右子树的深度,然后判断深度之差在小于2就行。//1.递归,如果二叉树左树层数与右边层数之差大于1,就不是平衡二叉树 public boolean IsBalanced_Solution(TreeNo...

2018-09-10 21:07:39 296 1

原创 剑指offer:求二叉树的深度(递归与非递归)

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。分析思路以及代码:分为三种情况:1)二叉树为空,直接返回02)左子树或者右子树为空,直接返回左子树或者右子树的深度3)左子树和右子树都不为空,分别求出左子树和右子树的深度,取最大值二叉树的结构:public class TreeNode {...

2018-09-09 17:23:10 395

原创 集合(一)Set:HashSet,TreeSet

集合(一)Set:HashSet,TreeSet参考:https://mp.weixin.qq.com/s/ZTNJIbrDfLUdkEU5aiDRFQSet是不允许出现重复的集合,主要有HashSet和TreeSet两大类,判断重复元素时,会用到HashCode()和equals()方法。HashSet使用HashMap的key存储元素,计算元素的hash值来获取元素在集合中的位置,...

2018-09-04 13:02:47 146

原创 集合(三)Map: HashMap HashTable TreeMap WeakHashMap

Map: HashMap  HashTable  TreeMap  WeakHashMapHashMap,HashTable,TreeMap都是Map的实现类。Map是用来存储键值对的数据结构,在数组中通过下标对其内容索引,在Map中,是通过对象来进行索引,用来索引的对象就是key,其对应的对象叫value.1.HashMap与HashTable的异同:都采用了hash法进行索引,...

2018-09-03 21:39:12 290

原创 集合(二)List,ArrayList,LinekList,Vector

ArrayList,LinkedList,VectorList,Queue中的元素有序可重复ArrayList,LinekList,Vector 均为可伸缩数组,即就是可以动态改变长度的数组。1.ArrayList:数组实现,查询速度快,插入慢,非线程安全。ArrayList底层维护了一个Object[]用于存储对象,默认数组的长度是10。可以通过new ArrayList(20)...

2018-09-03 20:53:05 531

原创 数组:判断一个数组中数值是否连续相邻

问题描述:一个数组序列,元素取值可能是0--65535中的任意一个数,相同数值不会重复出现。0可以重复出现。当从该数组序列中随机选取5个数值,判断这5个数值是否连续相邻。需要注意4点: 1.) 5个数值允许是乱序的,例如{8,7,5,0,6} 2.) 0可以通配任意数值,例如{8,7,5,0,6}中的0可以通配成9或4 3. )0可以多次出现 4. )全0算连续,只有一个非0算连续...

2018-08-21 12:12:09 1811

原创 数组:计算两个有序整型数组的交集

问题描述:假设两个含有n个元素的有序(非降序)整型数组a和b,其中 a = { 0,1,2 ,3,4 }, b = { 1,3,5,7,9 }.那么他们的交集为{ 1,3 }实现思路:1)二路归并法:分别从i,j从头开始遍历两个数组。若当前遍历的位置a[i]==b[j],则次=此数为两个数组的交集,记录下来,并且继续向后遍历a1,b1.若a[i] > b[j] ,则继续向...

2018-08-21 11:34:29 398

原创 迭代器Iterator,ConcurrentModificationException异常

1)迭代器Iterator是一个对象,它的工作是遍历并选择序列中的对象,提供了一种访问一个容器Container对象中的各个元素,而又不必暴露该对象的内部细节的方法。2)通过迭代器,开发人员不用了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。三个方法:1)iterator():返回一个Iterator,通过next()方法返回第一个...

2018-08-20 20:49:18 1605

原创 容器,集合:Collection,Set,List,Map,Collections

概念:Collection是整个集合框架的基础,它里面存储一组对象,表示不同类型的Collections,它的作用只是提供维护一组对象的基本接口而已。List,Queue,Set,Stack,都继承于Collection接口。Collection主要有三个接口,分别是List,Set,Queue,其中Set中的元素无序且不允许重复本文主要讲 List, Map, Set 3个接口。...

2018-08-20 19:58:21 161

原创 数据库:游标

游标:1)数据库中,游标提供了一种从表中检索出的数据进行操作的灵活手段,它实际上是一种能从包含数据记录的结果集中每次提取一条记录的机制。2)游标总是与一条SQL选择语句相关联,因为游标是由结果集(可以是0条,1条或相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成的。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。3)有数据缓冲的思想:游标的设计是一种数据缓...

2018-08-20 18:00:32 334

原创 数组:对数组中的两个子有序段进行合并

问题描述:数组a[0,mid-1]和a[mid,n-1]是各自有序的,对数组a[0,n-1]的两个子有序段进行合并,得到a[0,n-1]整体有序,要求空间复杂度为O(1)。假设数组中的两个子有序段都按升序排列。实现思路:1、插入排序方法,时间复杂度为O(n^2),空间复杂度为O(1)2、首先,遍历数组中下标为【0,mid-1】的元素,将遍历到的元素的值与a[mid]进行比较,如果a...

2018-08-20 11:05:10 217

原创 数组:如何求指定数字在数组中第一次出现的位置

问题描述:给定数组 a = { 3,4,5,6,5,6,7,8,9,8}, 这个数组相邻元素之差都为1, 给定数字9, 它在数组中第一次出现的位置下标为8实现思路:方法一:“蛮力”法,顺序遍历一遍数组中每一个元素,与9比较,时间复杂度为O(n)方法二:跳跃搜索法。首先用数组中第一个元素3与9进行比较,差值为6,由于相邻两个元素的差值为1,因此9在数组中出现最早的位置必定为:1+6 ...

2018-08-20 10:20:05 4138 1

原创 数据库:触发器,作用,分类,触发器与存储过程的区别

触发器:1)触发器是一种特殊类型的存储过程,它由事件触发,而不是程序调用或手工启动,当数据库有特殊的操作时,这些操作由数据库中的事件来触发,自动完成这些SQL语句。2)使用触发器可以用来保证数据的有效性和完整性,完成比约束更复杂的数据约束3)触发器可以查询其他表,而且可以包含复杂的 SQL 语句。 它们主要用于强制服从复杂的业务规则或要求。 例如,您可以根据客户当前的帐户状态,控制是否...

2018-08-19 21:36:19 10291 2

原创 数据库:存储过程,存储过程与函数的区别与联系

 概念:SQL语句在执行时要先编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。1)存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查)2)由于存储过程在创建时即在数据库服务器上进行了编...

2018-08-19 18:14:48 609

原创 数据库:事务(ACID 4大特性,隔离级别,脏读,不可重复读,虚读)

事务:定义(来自百度词条)https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1/9744607?fr=aladdin数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有...

2018-08-19 17:09:06 842

原创 数组:如何求数组中两个元素的最小值

问题描述:给定一个数组,数组中含有重复元素,给出两个数n1和n2,求这两个数字在数组中所出现位置的最小距离例如: 数组 { 4, 5, 6, 4, 7, 4,  6, 4, 7, 8, 5, 6, 4, 3, 10, 8}, 4和8的最小距离为2.实现思路:遍历数组,会遇到两种情况:1)当遇到n1时,记录下n1值对应的数组下标的位置n1_index,  通过求n1_index与...

2018-08-19 11:02:01 2602

空空如也

空空如也

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

TA关注的人

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