- 博客(121)
- 资源 (5)
- 收藏
- 关注
原创 Java8中新增的时间类
一.LocalTime类1.1 介绍:1.LocalTime.now(): 获取系统当前时间2.LocalTime.of(int hour,int minute,int second)按指定时间创建LocalTime对象3.getHour(): 返回小时4.getMinute(): 返回分钟5.getSecond(): 返回秒1.2 demo演示: public class ...
2019-11-11 21:00:17
455
转载 Eureka、Zookeeper和Consul 的区别
主要区别的话,看CAP选择,大部分注册中心,就是在这个定理去选择的,具体怎么选择,看下文CAP定理: 指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可同时获得。一致性(C): 在分布式系统中的所有数据备份,在同一时刻是否同样的值。(所有节点在同一时间的数据完全一致,越多节点,数据同步...
2019-09-21 09:43:06
2229
原创 通过流式集合对list集合中的数据进行统计
主要使用的是Collectors工具类和流式集合搭配使用进行统计操作demo演示:import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.stream.Collectors;public class GradeCount { public static void...
2019-08-22 20:55:18
3440
原创 通过流式集合接口对list集合进行模糊查询和筛选
一.通过Matcher中的find()方法对list集合进行模糊查询操作1.创建实体对象:public class User { private Integer id; private String name; private String password; public User() { } public User(Integer...
2019-08-22 15:11:25
6984
2
原创 传统map遍历和java8新的遍历方式比较
本篇文章主要是讲关于原始对map的遍历以及java8提供的新的遍历方式,个人感觉在代码的优化上是非常简洁的1.创建测试数据 Map<String, Object> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key...
2019-07-16 15:06:33
1131
原创 anyMatch和allMatch以及noneMatch的区别
一.方法的介绍:boolean anyMatch(Predicate<? super T> predicate)只要有一个条件满足即返回trueboolean allMatch(Predicate<? super T> predicate)必须全部都满足才会返回trueboolean noneMatch(Predicate<? super T> pre...
2019-07-16 10:59:32
65231
3
原创 定时器Timer的使用
一.序言: 在JDK库汇总的Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务,Timer类的主要左右就是设置计划任务,但封装任务的类却是TimerTask类,执行计划任务的代码要放入TimerTask的子类中,因为TimerTask是一个抽象类.二.demo演示:1.指定未来的时间执行任务:public class MyTask1 extends Time...
2019-07-11 14:02:25
471
原创 多线程中的读写锁
一.序言: 类ReentrantLock具有完全互斥排他的效果,即同一时间只有一个线程在执行ReentrantLock.lock()方法后面的任务,这样做虽然保证了实例变量的线程安全性,单效率却是非常低的.所以在JDK中提供了一种读写锁ReentrantReadWriteLock类,使用它可以加快运行效率,在某些不需要操作实例变量的方法中,完全可以使...
2019-07-09 14:45:44
1659
原创 多线程中的公平锁和非公平锁
一.公平锁与非公平锁概念: 锁Lock分为"公平锁"和"非公平锁",公平锁表示线程获取锁的顺序是按照线程加锁的顺序分配的,即先来先得的FIFO先进先出的顺序,而非公平锁就是一个获取锁的抢占机制,是随机获得锁的,和公平锁不一样的就是先来的不一定先得到锁,这个当时可能造成某些线程一直拿不到锁,结果也就是不公平的了。二.创建一个类,在构造中初始化Reen...
2019-07-04 11:12:43
948
原创 ReentrantLock类与Condition类配合实现等待/通知机制
一.ReentrantLock概述: ReentrantLock和synchronized一样效果,都可以同步执行,ReentrantLock通过lock方法获得锁,unlock方法释放锁。二.ReentrantLock常用方法:lock(): 获取锁,调用该方法当前线程将会获取锁,当锁获取后,该方法将返回,否则阻塞。lockInt...
2019-07-04 09:45:47
990
原创 对List集合中对象的某一个属性进行去重排序
引言: 本文主要介绍通过JDK提供的原始的去重排序和使用Lambda表达式的形式进行集合中数据的去重和排序一.环境准备:1.实体类:public class User { private Long id; private String name; public Long getId() { return ...
2019-06-05 14:04:20
6410
原创 设计模式之原型模式
一.介绍1.定义:指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象不需要知道任何创建的细节,不调用构造函数2.类型:创建型3.适用场景:类初始化消耗较多资源new产生的一个对象需要非常繁琐的过程(数据准备,访问权限等)构造函数比较复杂循环体中生产大量对象时4.优点:原型模式性能比直接new一个对象性能高简化创建过程5.缺点:必须配备克隆方法(cl...
2019-05-31 14:25:53
193
原创 设计模式之建造者模式
一.介绍1.建造者定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示用户只需指定需要建造的类型就可以得到他们,建造过程及细节不需要知道2.类型:创建型3.适用场景:如果一个对象有非常复杂的内部结构(很多属性)想把复杂对象的创建和使用分离4.优点:封装性好,创建和使用分离扩展性好,建造者之间独立,一定程度上解耦5.缺点:产生多余的Buil...
2019-05-23 15:23:23
188
原创 redis哨兵架构搭建与测试
一.Redis-sentinel简介 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance),Redis 的 Sentinel 为Redis提供了高可用性。使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。1.该系统有以下三个作用:1).监控(Monitoring):Sentinel会不断地检...
2019-05-08 17:05:25
403
原创 redis主从架构搭建
一.绪论 Redis的复制功能是基于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生。 当Slave启动并连接到Master之后,它将主动发送一个SYNC命令( 首先Master会启动一个后台进程,将数据快照保存到文件中[rdb文件] Master 会...
2019-05-08 11:48:30
648
原创 ArrayBlockingQueue有界阻塞队列方法与源码解析
一.构造方法解析1.构造指定大小的有界队列,默认为非公平的public ArrayBlockingQueue(int capacity) { this(capacity, false);}2.构造指定大小的有界队列,指定为公平或者非公平锁 默认false为非公平public ArrayBlockingQueue(int capacity, boolean fair) {...
2019-04-17 11:44:26
673
原创 Springboot集成kafka
一.kafka在mac环境下的安装1.安装kafka$brew install kafka上面安装过程中已经自动安装了zookeeper2.软件位置/usr/local/Cellar/zookeeper/usr/local/Cellar/kafka3.配置文件位置/usr/local/etc/kafka/zookeeper.properties/usr/local/etc/k...
2019-04-02 16:39:37
564
原创 网络编程之Netty实践(三)
一.介绍 Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化...
2019-04-02 09:39:01
2885
原创 网络编程之NIO(二)
一.NIO定义 Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。 线程通常将...
2019-04-02 08:43:16
187
原创 网络编程之BIO(一)
一.编程套路服务端:1. 创建服务器端实例 ServerSocket ss = new ServerSocket();2. 指定服务器的监听端口 ss.bind(new InetSocketAddress(9999));3. 创建Socket进行请求转发给Socket Socket s = ss.accept();4. 获取客户端意图 InputStream request = s...
2019-04-01 19:16:57
466
原创 Flink框架的安装和使用(二)
第一步.安装Flink1.我个人是在Mac电脑上进行安装的,安装过程很简单不需要做其他什么配置,下面就开始进行安装(有点慢):brew install apache-flink2.安装完成之后启动Flink和进入Web交互页面brew info apache-flink3.如果启动成功的话通过http://localhost:8081进入Web页面第二步.创建maven项目1....
2019-03-11 16:27:58
570
1
原创 AES和Base64加密算法结合使用
两种加密算法的结合使用是为了更加安全,使得真正的密码只用用户自己知道,并且外人河南破解。废话不多说,我这里直接写了AES加密算法和BASE64加密算法的工具类,可以直接调用一. BASE64加密工具类package com.AES;import sun.misc.BASE64Decoder;import sun.misc.BASE64Enco...
2019-02-27 16:53:05
4516
原创 docker学习笔记
Docker学习目标:掌握Docker基础知识,能够理解Docker镜像与容器的概念完成Docker安装与启动掌握Docker镜像与容器相关命令掌握Tomcat Nginx 等软件的常用应用的安装掌握docker迁移与备份相关命令能够运用Dockerfile编写创建容器的脚本能够搭建与使用docker私有仓库1 Docker简介1.1 什么是...
2019-02-21 14:48:40
252
原创 索引失效的原因和如何避免
一.环境准备1.随便创建一个User表,然后向其中插入一些测试数据2.创建User表的单索引或者双重索引create index idIndex on User(id); //单索引create index index_id_name on User(id,name); //双重索引3.检查索引是否创建成功show index from User;显示下面结果表示...
2019-02-20 11:28:18
9117
原创 手写ArrayList的实现
一.引言众所周知ArrayList是一种数组的实现方式,也就说明其有序有下标不肯重复,查询快增删慢的特点,今天有时间就研究了一下其实现方法并手写了一些,实现原理草考一下链接实现原理二.demo实践1.首先创建一个NewList接口 package org.ligh.arraylist; /** * Created by ${ligh} on 2019/2/15 上午9:...
2019-02-15 10:44:08
1520
2
原创 Sprinboot集成dubbo+zookeeper完成注册中心以及生产者和消费者之间的调用关系
一.介绍1.1 dubbo是阿里巴巴soa服务化治理方案的核心框架,是一个分布式服务的框架,致力于提高性能和透明化rpc远程服务调用方案,已经soa服务治理方案。看到这里会有点懵,什么是soa呢,什么是rpc呢???soa:面向服务的架构,将应用程序的不同功能单元(也叫作服务)通过服务之间的定义良好的接口和契约联系起来。rpc:远程过程调用协议,是一种通过网络从远程计算机程序上请求服务,而...
2019-01-31 10:17:25
2878
原创 Flink框架的介绍和实现原理(一)
一.Flink是什么:Apache Flik 是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能。二.Flink特点: 现在的开源方案,会把流处理和批处理作为两种不同的应用类型:流处理一般需要支持低延迟,Exactly-once保证,而批处理需要支持高吞吐,高效处理.Flink是完全支持流处理,也就是说作为流处理看待时输入数据流是无界的;...
2019-01-29 15:46:44
4006
原创 Springboot集成Quartz完成定时任务
一.Quartz的介绍和使用思路:1.介绍:&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Q
2019-01-28 15:58:10
2020
原创 Springboot集成Shiro完成认证授权
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。三个核心组件:Subject, SecurityManager 和 Realms.Subject: 即“当前操作用户”。但是,在Sh...
2019-01-24 11:52:19
3263
5
原创 centos7后台打包上线jar包脚本的编写
首先执行命令:cd /etc/systemd/system到这个目录下,新建一个 wx-demo.service,可以把wx-demo设置为你想起的服务名用vi编辑一个新的脚本vi wx-demo.service脚本内容[Unit] Description=wx-demo#描述 After=syslog.target network.target #依赖 [Ser...
2019-01-14 15:04:45
1055
原创 SpringBoot集成ElasticSearch对API的实际应用封装(七)
第一步.添加配置文件在resources创建elasticsearch.yml配置文件并添加一下配置:#elasticsearch集群名称,默认是elasticsearchspring.data.elasticsearch.cluster.name=wali#节点的地址,注意api模式下的端口号是9300,千万不要写成9200等spring.date.elasticsearch.clu...
2018-12-29 08:49:32
1618
原创 SpringBoot集成ElasticSearch完成增删改查操作(六)
第一步.依赖配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>2.0.2.RELE...
2018-12-28 15:53:35
1086
原创 搜索引擎ElasticSearch的简单查询以及高级查询(五)
一.简单查询://查询id为1的数据,请求方式为GET127.0.0.1:9200/book/novel/1二.条件查询:1.查询全部的数据: 请求方式为post127.0.0.1:9200/book/_search请求参数: { "query": { "match_all": {} } }2.指定返回条数...
2018-12-28 15:05:20
801
原创 搜索引擎ElasticSearch理论以及增删改操作(四)
一.基础概念:1.集群和节点:集群: 一个集群是由一个或多个节点组合而成,每一个集群都有一个唯一的名字,默认是ElasticSearch,所有的节点都是通过cluster_name(集群的名字)加入集群的,每一个节点都有自己的名字,比如slave1,slave2等,2.索引:含有相同属性的文档集合,例如可以用一个索引代表消费者的数据,另一个索引代表产品的数据,3.类型:索引可以定义...
2018-12-28 14:53:08
274
原创 搜索引擎ElasticSearch分布式的搭建(三)
第一步.配置主节点1.配置环境:vim config/elasticsearch.yml在配置文件中加上下面的配置:cluster.name: walinode.name: master //主节点的名字node.master: truenetwork.host: 127.0.0.1 //主节点的ip2.配置完成重新启动:首先查找到原来启动的进程:ps -ef | gr...
2018-12-25 14:44:05
202
原创 搜索引擎ElasticSearch插件的安装(二)
第一步.下载插件项目:进入到github中输入elasticsearch,找到mobz/elasticsearch-head然后把项目克隆到自己的本地,进行安装进入到项目目录下执行:npm install然后输入启动命令npm run start第二步.环境配置:1.进入到原来安装的elasticsearch进行环境的配置:vim config/elasticsearc...
2018-12-25 10:37:23
189
原创 搜索引擎ElasticSearch单实例的安装(一)
第一步.概念:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。第二步.下...
2018-12-25 09:07:39
320
2
原创 mysql 的存储引擎介绍,以及悲观锁和乐观锁
mysql 的存储引擎介绍:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库。而在设计表的时候,我们都会关注一个问题,使用什么存储引擎。等一下,存储引擎?什么是存储引擎?什么是存储引擎?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nb
2018-12-24 09:56:37
217
原创 java中Adapter适配器模式
一.引言:类适配器与对象适配器的使用场景一致,仅仅是实现手段稍有区别,二者主要用于如下场景: (1)想要使用一个已经存在的类,但是它却不符合现有的接口规范,导致无法直接去访问,这时创建一个适配器就能间接去访问这个类中的方法。 (2)我们有一个类,想将其设计为可重用的类(可被多处访问),我们可以创建适配器来将这个类来适配其他没有提供合适接口的类。 以上两个场景其实就是从两个角度来...
2018-12-18 09:32:48
1820
1
原创 java中Delegate委派模式
一.引言: 委派模式有点像代理模式又有点像策略模式。例如:公司老板给项目经理下达任务,将任务全权交给项目经理,由项目经理根据一定的策略将任务分配给小组成员,项目经理从头跟到尾。项目经理就像一个受老板授权的中介,老板不需要和小组成员直接联系,甚至可以不知道他的存在。二.实现:1.创建员工都必须要做的干活接口/** * Created by ${...
2018-12-17 19:13:19
9574
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人