自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(172)
  • 资源 (2)
  • 收藏
  • 关注

转载 Guava用法总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j16421881/article/details/79874819 </div> &lt

2018-12-19 16:24:25 6566 2

原创 try catch finally 执行顺序深究

撸代码的时候经常会用到try catch finally,但是如果不理解其中的真正用法 可能程序就会出问题哦,在这里测试几种情况下的返回值Test1: 最简单的在try返回 public static final int test1() { int x = 0; try { System.out.println("try"); x = 1; return x;...

2018-12-04 17:23:39 1263 1

转载 深入浅出一致性Hash原理

一、前言在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用...

2018-12-03 09:59:21 603

转载 JDK1.8源码分析之LockSupport(一)

今天发现一个写的很好的juc系列的源码分析,出于对作者的尊重,这里不复制作者的内容  直接给出作者的原文地址:https://www.cnblogs.com/leesf456/p/5347293.html...

2018-11-20 18:05:05 283

原创 Collections.shuffle函数的实现

shuffle是用来随机打乱元素位置的下面是使用示例:public class ShuffleTest {      public static void main(String[] args) {          List<Integer> list = new ArrayList<Integer>();          for (int i = 0;...

2018-11-17 10:06:23 1360

原创 java 回溯法实现求迷宫路线

首先我们定义一个 n * n 的二维数组,模拟迷宫,用2这个数字表示迷宫的墙壁 ,0表示迷宫的路线 ,那么我们主要的思路就是 在迷宫的入口 判断入口的上下左右 哪一个方向不是墙壁 我们则进入进去,同时我们用1 这个数字表示走过的路线 0表示不通的路线 这就是我们大致的思路 下面是代码实现,代码上面都有具体注释 很容易看懂代码:public class TestMaze { // 定义...

2018-11-07 14:33:57 1635

原创 java 八皇后问题

八皇后问题来自国际象棋当中的皇后的摆法问题,是一个经典的算法问题国际象棋:             国际象棋是一个8 乘 8 的正方形棋盘,其中皇后 可以直线行走,斜线行走   都是不分上下左右和格数的下图是一种可行的八皇后摆法:所以,可归纳问题的条件为,8皇后之间需满足:             1.不在同一行上             2.不在同一列上     ...

2018-11-07 10:38:22 12085 7

原创 java 一行代码判断一个数是否2的整数幂

我们观察2的整数幂 换成二进制都有一个规律 如下:2 -> 0000 0010        4 -> 0000  0100       8 -> 0000  10002-1= 1 ->  0001        4-1=3  ->   0011      8-1=7 ->     0111这时我们 用 n & (n -1)  会发现结果都为...

2018-11-07 09:28:31 2345

原创 java实现小顶堆 在指定数据中找出前n大的数

小顶堆:      我们利用的特性:每个节点都比左右孩子小      图示:      取数组前n个数,构成小顶堆     然后从数组里面获取数据,如果比堆顶小,直接抛弃,如果比堆顶大,就替换堆顶,并调整堆,使堆始终满足小顶堆的特性    93比18大,替换18    调整堆然后依次处理下一个数44对数组内的数调整完成后,前n个大的数 就在小顶堆...

2018-11-06 11:06:41 1697

原创 字典树 Trie Java实现

Trie,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。 每个节点的所...

2018-11-05 14:24:10 1299

转载 Spring.profile实现开发、测试和生产环境的配置和切换

软件开发过程一般涉及“开发 -> 测试 -> 部署上线”多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等。为避免每次切换环境时都要进行参数配置等繁琐的操作,可以通过spring的profile功能来进行配置参数的切换。以我用到的项目的实际情况为例,首先可以在resources文件夹下分别为每个环境建立单独的文件夹(也可以额外建立一个common文件夹,用于存放公共的...

2018-10-26 10:43:21 577

转载 JAVA回调机制(CallBack)详解

 序言最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义。当然了,我在理解了回调之后,再去看网上的各种讲解,确实没什么问题。但是,对于初学的我来说,缺了一个循序渐进的过程。此处,将我对回调机制的个人理解,按照由浅到深的顺序描述一下,如有不妥之处,望不吝赐教!开始之前...

2018-10-24 17:25:07 897 2

原创 ThreadPoolExecutor里面4种拒绝策略

threadPoolExecutor类实现了ExecutorService接口和Executor接口,可以设置线程池corePoolSize,最大线程池大小,AliveTime,拒绝策略等。常用构造方法:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime, TimeUnit unit,B...

2018-10-22 15:11:45 1443

转载 AtomicStampedReference解决ABA问题

在运用CAS做Lock-Free操作中有一个经典的ABA问题:线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如下面的例子:现有一个用单向链表实现的堆栈,栈顶为A,这时线程T1已经知道A.next为...

2018-10-20 09:23:14 1171

原创 java-两种方法求两个数组中重复的元素 lamdba

1、第一种普通的利用for循环:public static void main(String[] args) { Integer[] arr1 = { 1, 2, 5, 2, 6, 8, 9 }; Integer[] arr2 = { 2, 3, 4, 6, 9, 10 }; Set<Integer> sames = getSames(arr1, arr2); ...

2018-10-19 14:50:41 3566 1

原创 Java-快速排序

在要排的数(比如数组A)中选择一个中心值key(比如A[0]),通过一趟排序将数组A分成两部分,其中以key为中心,key右边都比key大,key左边的都key小,然后对这两部分分别重复这个过程,直到整个有序。        整个快排的过程就简化为了一趟排序的过程,然后递归调用就行了。        一趟排序的方法:1,定义i=0,j=A.lenght-1,i为第一个数的下标,j为最后一个数...

2018-10-18 16:10:22 103

原创 java——实现二分查找法

二分查找又称折半查找,它是一种效率较高的查找方法。折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小 于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元素...

2018-10-17 15:35:39 1216

原创 基于redis 实现布隆过滤器

简介Redis中有一个数据结构叫做Bitmap(下方有官网详解),它提供一个最大长度为512MB(2^32)的位数组。我们可以把它提供给布隆过滤器做位数组。根据《数学之美》中给出的数据,在使用8个哈希函数的情况下,512MB大小的位数组在误报率万分之五的情况下可以对约两亿的url去重。而若单纯的使用set()去重的话,以一个url64个字节记,两亿url约需要128GB的内存空间,不敢想象...

2018-10-12 15:23:41 4028 1

转载 Java中Lambda表达式的使用

今天逛论坛的时候,无意间看见一篇很好的关于Java中Lambda表达式的使用的文章,为了尊重作者,这里不直接转载,只贴出文章的连接,方便以后复习https://www.cnblogs.com/franson-2016/p/5593080.html...

2018-10-11 11:31:36 238

原创 设置cas sso单点登录地址从properties读取

查看单点登录源码发现,casServerLoginUrl地址 会先从 FilterConfig 中获取,也就是全局配置文件中获取,当然我们也可以在web.xml中用<param-name>casServerLoginUrl</param-name><param-value>http://127.0.0.1:8080/cas/login<...

2018-09-27 14:45:53 3227 2

转载 Java面试题——继承,多态

一、面向对象的思想Java是一门纯粹的面向对象的语言。面向对象这种程序设计模式它将现实世界中的一切事物都看作是对象,例如,一个人是一个对象,汽车、飞机、小鸟等等,都是对象;它强调从对象出发,以对象为中心用人类的思维方式来认识和思考问题。每个对象都具有各自的状态特征(也可以称为属性)及行为特征(方法),java就是通过对象之间行为的交互来解决问题的。类是面向对象中一个重要的概念。类是具有相同属性...

2018-09-26 18:08:59 486

原创 Spring整合Quartz框架实现分布式定时任务

1、集群使用定时任务的问题:   目前大部分在集群中处理定时任务的方式不是正真的分布式处理方式,而是一种伪分布式,这种方式存在一个明显的缺陷就是当集群中机器宕机, 那么整个定时任务就会挂掉或者不能一次性跑完,会对业务产生严重的影响。  而且在集群环境中,同样的定时任务,在集群中的每台服务器都会执行,这样定时任务就会重复执行,不但会增加服务器的负担,还会因为定时任务重复执行造成额外的不可预期...

2018-09-21 15:49:13 768

原创 linux下 使用keepalived 实现nginx 负载均衡+主备高可用

1.什么是负载均衡高可用        nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重。        为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的...

2018-09-19 17:43:25 1687 4

原创 linux下keepalived安装教程

1、安装环境yum -y install kernel-devel*yum -y install openssl-*yum -y install popt-develyum -y install lrzszyum -y install openssh-clientsyum -y install libnl libnl-devel popt 2、开始安装上传 keepa...

2018-09-19 15:31:49 1212

原创 分布式锁(三)__基于redis实现

本文参考借鉴了论坛大佬的一篇很详细的博文并在此基础上加以实现,在此谢谢此位博主!,博文连接:https://www.cnblogs.com/linjiqin/p/8003838.html前言首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后...

2018-09-17 10:57:24 165

原创 分布式锁(二)__基于数据库实现

原理介绍:要基于数据库实现分布式锁,最简单的方式可能就是直接创建一张锁表,然后通过操作该表中的数据来实现。当需要锁住某个方法或资源时,就在该表中增加一条记录,想要释放锁的时候就删除这条记录问题:1.这把锁依赖数据库的可用性,数据库是一个单点,一旦数据库挂掉,会导致业务系统不可用2.这把锁没有失效时间,一旦解锁操作失败,会导致锁记录一直在数据库中,其他线程无法再获得锁3.这把...

2018-09-15 21:18:56 317

原创 分布式锁(一)__基于Zookeeper实现可重入分布式锁

1  重入的实现对于锁的重入,我们来想这样一个场景。当一个递归方法被sychronized关键字修饰时,在调用方法时显然没有发生问题,执行线程获取了锁之后仍能连续多次地获得该锁,也就是说sychronized关键字支持锁的重入。对于ReentrantLock,虽然没有像sychronized那样隐式地支持重入,但在调用lock()方法时,已经获取到锁的线程,能够再次调用lock()方法获取锁而...

2018-09-15 17:23:54 4106 2

原创 zookeeper集群搭建

首先上传zookeeper软件包到服务器:解压: tar zxf zookeeper-3.4.6.tar.gz上面的图已经包含解压后的文件夹了建立zkookeeper-cloud文件夹:mkdir zookeeper-cloud复制zookeeper-3.4.6 三份到01 02 03 文件夹:                          cp -r zookee...

2018-09-12 15:18:24 232

原创 spring + jedis 连接 redis集群

首先引入jedis的pom依赖:<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.2</version></dependency>下面是项目

2018-09-12 13:26:19 375

原创 redis集群搭建

Redis集群基本介绍Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation。Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低Redis集群的性能, 并导致不可预测的行为。Redis 集群通过分区partition来提供一定...

2018-09-12 12:05:28 271

原创 Jedis连接操作redis

首先引入jedis的pom依赖:<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.2</version></dependency>启动red

2018-09-12 10:11:18 6905 1

原创 centos6.4 安装redis单机版

Redis是c语言开发的,安装c语言需要c语言的编译环境检查虚拟机是否安装gcc说明没有安装执行安装命令:yum install gcc-c++安装完成后再次输入gcc命令,显示如下,则安装成功首先上传安装包到服务器:解压:tar zxf redis-3.0.0.tar.gz  进入解压文件夹,编译redis: cd redis-3.0.0 执行 m...

2018-09-11 20:37:30 242

原创 centos6.4启动dubbo控制台

首先上传tomcat和dubbo.war到服务器解压tomcat:  tar zxf apache-tomcat-7.0.47.tar.gz 复制dubbo-admin.war到tomcat的webapps目录:cp dubbo-admin-2.5.4.war apache-tomcat-7.0.47/webapps/dubbo-admin.war查看是否复制成功...

2018-09-10 16:31:10 330 2

原创 MySql6.0连接问题

今天更新了mysql数据库到7.0,跑了一下之前的项目,结果跑错了网上找了下  发现mysql6.0以上驱动包及url写法都变了这里记录一下正确的连接方式:jdbc.driver=com.mysql.cj.jdbc.Driver#jdbc.driver=com.mysql.jdbc.Driver 6.0一下写法jdbc.url=jdbc:mysql://localhost:330...

2018-09-10 15:57:13 531

转载 centos6.4安装jdk

jdk是很多程序的前置依赖,所以在安装对应软件之前可能需要先安装jdk,今天安装了一下,记录下来。我下载的是jdk1.8tar版本,官网速度慢的话,网上还是有很多资源的,比如这里:jdk1.8下载 我使用的是root用户进行安装1.先创建文件目录[root@bo...

2018-09-10 11:58:48 158

原创 zookeeper单机版安装

环境:centos6.4  zookeeper-3.4.6安装之前需要先安装jdk,请自行百度安装1、上传 zookeeper-3.4.6.tar.gz 到/local 目录2、解压文件:# tar zxf  zookeeper-3.4.6.tar.gz查看是否解压成功:在zookeeper根目录下面新建data目录:cd conf目录:修改zo...

2018-09-10 11:47:36 361

原创 mybatis逆向工程插件

一个简单的利用mybatis连接数据库生成实体和mapper的工程下面是项目结构图:首先lib引入jar包:GeneratorSqlmap.java:import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import or...

2018-09-09 23:00:50 2564

原创 svn代码管理和使用

1.首先下载server安装文件 下载地址:https://www.visualsvn.com/server/download/然后安装,安装步骤全部使用默认选项即可,所以这里省略安装步骤2、打开软件打开后界面如下:打开后的软件没有任何信息的时候如上:Respositories上右键新建respositories:下一步:输入仓库名,点击下一步:...

2018-09-09 21:32:40 2166

原创 spring整合rocketMq使用(完整代码,适合小白)

pom.xml:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd...

2018-09-07 15:21:48 14161 4

原创 基于centos6.4 搭建RocketMQ 集群(双master模式)

1、服务器环境 两台centos6.4环境的虚拟机,具体信息如下ip 角色 模式 192.168.0.117 nameServer1,brokerServer1 Master1 192.168.0.118 nameServer2,brokerServer2  Master2 2、修改hosts文件ip映射: # vim /etc/host...

2018-09-02 20:32:49 262

mybatis逆向工程

一个简单的根据数据库表结构生成映射文件的项目,包括bean和mybatis的查询数据库的.xml文件,和接口映射文件

2018-09-09

基于socket实现的rpc调用demo

基于socketServer和socketClient实现的远程Rpc调用Demo

2018-09-02

空空如也

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

TA关注的人

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