- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 JAVA8中关于Map新增computeIfAbsent方法的使用
JAVA8中关于Map新增computeIfAbsent方法的使用目录computeIfAbsent的语义使用说明源码解析目录computeIfAbsent的语义从map中根据key获取value为空,会将第二个参数的返回值存入并返回使用姿势map.computeIfAbsent("list", key -> Lists.newArrayList())使用说明如果不使用computeIfAbsent方法,java中的使用场景是什么样子的public Object computeIfA
2021-08-17 23:29:50
1671
原创 gradle学习笔记三:使用IDEA创建Gradle程序
### 前言在平常工作中,使用最多事IDEA开发,不可能说使用终端命令行就能高效率的完成一个应用的开发。在上一篇中熟悉了Gradle构建的Java应用程序的基本结构,本篇来记录一下如何使用Intelli IDEA创建一个Gradle程序
2020-04-28 22:08:49
487
原创 gradle学习笔记二:使用Gradle构建Java应用程序
### 前言首先,我也是一个Gradle小白,目前所了解到的Gradel是个自动化构建工具,可以帮助我们自动管理依赖,编译、打包程序。至于它的优缺点以及工作流程并不是很熟悉。正是因为如此,才需要系统的学习gradle。个人认为一个技术或者一个框架,如果经常使用它,系统的去学习是最快掌握它的方法。
2020-04-28 21:57:01
1252
原创 Centos7下安装JDK8 无需Oracle登录
下载jdk1.8由于现在下载jdk需要登录Oracle账户,可直接使用网盘下载:https://sn9.us/file/21580407-406977967下载完成后,解压并移动到opt目录下[root@bogon xiaoyuer]# tar -xzvf jdk-8u231-linux-x64.tar.gz [root@bogon xiaoyuer]# mv jdk1.8.0_231/ ...
2019-11-11 23:32:31
931
原创 Zookeeper Java API (二) zk节点内容的操作和节点的删除
获取节点内容获取节点内容的方法定义public byte[] getData(String path, boolean watch, Stat stat)其中: - path:要获取内容的节点路径 - watch:是否设置监控,也就是是否需要回调 - stat:节点状态 使用示例(异常自行处理)/** * 根据节点路径获取节点内容 * * @param pat...
2018-04-07 22:50:09
5274
原创 Zookeeper Java API (三) zk节点的通知(Watcher)和回调(CallBack)
Zk中的通知(Watcher)ZooKeeper中实现对接点的监控,需要实现Watcher接口类,实现其中的process方法public class WatcherDemo implements Watcher{ public void process(WatchedEvent event) { }}WatcherEvent对如下状态进行监听 1. ZooK...
2018-04-07 22:48:30
4920
2
原创 Zookeeper Java API (一) 创建Zookeeper连接和节点创建
添加Maven依赖<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.11</version></dependency&g
2018-04-05 18:03:34
4617
1
原创 java多线程十二 闭锁CountDownLatch
CountDownLatchCounyDownLatch是一个同步类,他允许一个或多个线程一直等待,直到其他线层的操作执行完成后再去执行。 A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads com...
2016-11-23 22:54:40
1851
原创 Java多线程十一 Exchanger
Exchanger类介绍1. Exchanger是一个同步类2. 在而且只能在两个线程之间进行数据交换3. 当一个线程到达exchange()调用点时,阻塞等待另外一个线程到达等待点,然后交换数据继续各自的执行4. 可以看做是一个双向的同步队列5. 应用于基因算法和流水线设计
2016-11-23 22:52:38
623
原创 java多线程十 Semaphore
1. Semaphore是一个计数信号量,允许n个任务同时访问某个资源2. 如果没有达到可允许的线程数量,当前使用acquire()方法获取许可,使用release()方法再访问完后释放许可3. Semaphore并不存在真正的允许对象(permit objects),仅仅是维护了一个允许访问的数量集
2016-11-23 22:50:55
825
原创 java多线程九 栅栏CyclicBarrier
CyclicBarrier是一个同步工具类,它允许一组线程在到达某个栅栏点(common barrier point)互相等待,发生阻塞,直到最后一个线程到达栅栏点,栅栏才会打开,处于阻塞状态的线程恢复继续执行.它非常适用于一组线程之间必需经常互相等待的情况。CyclicBarrier字面理解是循环的栅栏,之所以称之为循环的是因为在等待线程释放后,该栅栏还可以复用
2016-11-23 22:49:42
8564
1
原创 java多线程八 join()方法解析
理解join()方法首先先看一个例子:public class JoinDemo implements Runnable { private static int n = 0; public void run() { for (int i = 0; i < 5; i++) { n += 1; } } public s
2016-11-23 22:48:40
614
原创 Java多线程七:线程调度(休眠)sleep()
线程休眠线程休眠的目的是使线程让出CPU的使用权.当线程休眠时,会将CPU资源的使用交给其他线程,以便能够线程之间的轮换调用.当休眠一定时间后,线程就会苏醒,然后进入准备状态等待执行.sleep()函数如何让一个线程休眠.有两种方法,一是使用Thread.sleep(long millis)或者Thread.sleep(long millis, int nanos)方法.另一个是使用TimeUnit
2016-10-24 20:48:42
11321
原创 Java多线程六:线程优先级和yield()让步函数
可以看出,不管优先级和yield()函数都是试图控制线程的顺序执行.但是我们需要注意的一点是,在java中没有任何机制可以保证线程的执行顺序,两种做法只不过是增加了线程之间切换的几率而已.,
2016-10-24 20:47:07
4127
3
原创 Java多线程五:后台线程
后台线程下面是一个后台线程的例子:public class SimpleDaemons implements Runnable { public void run() { try { while (true) { TimeUnit.MILLISECONDS.sleep(100); Syste
2016-10-24 20:45:37
717
原创 Java网络编程基础
异常类型在了解Socket的内容之前,先要了解一下涉及到的一些异常类型。以下四种类型都是继承于IOException,所以很多之后直接弹出IOException即可。 - UnkownHostException:主机名字或IP错误 - ConnectException:服务器拒绝连接、服务器没有启动、(超出队列数,拒绝连接) - SocketTimeoutException:连接超时 - B
2016-10-24 20:43:40
500
转载 Java网络编程基础概念
网络编程中两个主要的问题如何准确的定位网络上一台或多台主机找到主机后如何可靠高效的进行数据传输在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(
2016-10-12 11:33:05
566
原创 java多线程四:Callable接口解析
Callable接口和Runnable接口首先看一下Runnable接口的定义:@FunctionalInterfacepublic interface Runnable { public abstract void run();}Runnable接口中仅仅定义了一个run()方法,返回值类型为void,当线程启动,任务执行完成后无法返回任何结果。现在看一下Callable接口的定义:@
2016-09-26 18:27:17
821
原创 Java多线程三:线程池和Executors类解析
线程池多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。一个线程池包括以下四个基本组成部分: 1. 线程池管理器(ThreadPool):用于创建并管
2016-09-26 15:05:36
802
1
原创 Java多线程二:Thread类介绍
类介绍首先看一下JavaDoc中对该类的介绍:1. Thread类表示程序中的一个可执行线程,java虚拟机允许程序中存在多个线程同时运行2. 每个线程都存在优先级,优先级高的线程比优先级低的线程更有几率得到线程。其实然并卵3. 线程可以声明为后台线程,通过后台线程声明和创建的线程也是后台线程4. 通过某个线程创建的线程拥有当前线程相同的优先级
2016-09-25 19:25:47
471
原创 Java多线程一:创建线程
Java中线程的创建一般有如下三种方法: 1. 继承Thread类,覆写run()方法 2. 实现Runnable接口,重写run()方法 3. 实现Callable接口,重写cal()方法继承Thread类public class MyThread1 extends Thread { @Override public void run() { System.ou
2016-09-25 17:21:07
598
原创 ZooKeeper客户端Curator使用一 创建连接
如何创建一个ZK连接工厂方法newClient()public static void main(String[] args) { final String connectString = "127.0.0.1:2181"; RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3); CuratorFrame
2016-08-23 19:32:52
12759
1
原创 ZooKeeper的数据结构模型和特点
前面几篇博客学写了ZooKeeper的安装,集群部署,以及常用命令,那么现在来看一下ZooKeeper的数据模型以及适用的场景.ZK的数据结构模型ZooKeeper会会维护一个具有层次关系的数据结构,非常类似于一个标准的文件系统,如下图所示: ZK的数据结构特点ZooKeeper这种数据结构有如下这些特点: 1. 每个子目录项如NameService都被称作znode,这个znode是被它所在的
2016-08-23 19:31:20
5832
1
原创 zookeeper在linux centos7下的集群介绍和配置
Zookeeper 有三种运行模式:单机模式、伪集群模式和集群模式。单机模式单机模式,顾名思义,只有一个zookeeper实例,我们安装完成并且启动zk,就是一个单机模式. 具体步骤和上一篇博客zookeeper的安装过程类似. 1. 首先保证已安装Java运行环境 2. 下载ZooKeeper安装包,可以去ZooKpper官网下载最新的Stable版本,并解压到指定目录 3....
2016-08-11 23:33:30
2855
原创 zookeeper安装与常用指令详解
ZooKeeper安装首先保证已安装Java运行环境下载ZooKeeper安装包,可以去ZooKpper官网下载最新的Stable版本,并解压到指定目录配置zoo.cfg 解压成功后,在conf文件夹下复制一份新的zoo_sample.cfg并重新命名为zoo.cfg具体操作流程如下# cd /opt //安装到opt目录下# wget http://mirror.bit.edu.c
2016-08-08 21:47:28
6205
原创 Java正则表达式Matcher.group(int group)相关类解析
在Java正则表达式的相关类Matcher中,有如下几个方法: - int groupCount() - String group(int group) - int start(int group) - int end(int group) - String group(String name) - int start(String name) - int end(String nam
2016-08-02 20:35:56
26720
3
原创 Java正则表达式Pattern.quote()方法详解
使用示例String pattern = Pattern.quote("1252343% 8 567 hdfg gf^$545");System.out.println("Pattern is : "+pattern);输出结果为 Pattern is : \Q1252343% 8 567 hdfg gf^$545\E方法解释在使用quote()方法之后,原有的字符串s变成了\Qs\E的样式,那
2016-07-27 22:18:20
23142
2
原创 Java正则表达式Pattern和Matcher类详解
概述Pattern类的作用在于编译正则表达式后创建一个匹配模式.Matcher类使用Pattern实例提供的模式信息对正则表达式进行匹配Pattern类常用方法及介绍Pattern complie(String regex) 由于Pattern的构造函数是私有的,不可以直接创建,所以通过静态方法compile(String regex)方法来创建,将给定的正则表达式编译并赋予给Patter
2016-07-27 22:14:47
81301
5
原创 StringTokenizer类详解
StringTokenizer类是一个用来对String进行分词编辑的应用类,类似于Java String 类中的split函数.构造函数StringTokenizer提供了三个构造参数public StringTokenizer(String str)public StringTokenizer(String str, String delim)public StringTokenizer(S
2016-07-21 22:34:27
6718
3
原创 spring security起步六:基于数据库的用户认证
在前面的例子中,我们的用户都是存放在内存中,现在就来实现spring security基于数据库的用户认证功能。配置数据源dataSource首先,这里使用的数据库连接池为druid,数据库为mysql,所以pom.xml需引入相应的jar包<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactI
2016-07-19 20:49:55
5859
1
原创 spring security起步五:Remember Me功能实现
spring security remember mespring security 自动登录
2016-07-15 22:59:55
9029
原创 spring security起步四:退出登录配置以及logout属性详解
用户退出登录实质是使当前登录用户的session失效的操作。一般来说,用户退出后,将会被重定向到站点的非安全保护页,比如登录页面.用户退出功能实现增加hader.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="htt
2016-07-15 22:55:58
50297
5
原创 spring security起步三:自定义登录配置与form-login属性详解
spring security 自定义登录页spring security custom login 404 Not Foundspring security 自定义登录 405 method not supported
2016-07-12 23:04:07
92362
11
原创 spring security起步二:自定义登录页
在上一篇文章 spring security 起步:框架搭建 最后,我们可以看到spring security自动为我们生成了一个默认的登录页。首先呢 那个登录页太丑,其次呢登录时我们也想实现一些其他的功能:比如找回密码,Remember me等。那么 我们如何实现自定义登录页功能呢?添加登录页实现登录的Controller配置spring security
2016-07-07 00:43:50
9132
原创 《maven 实战》笔记
《Maven实战》笔记一:创建HelloWorld《Maven实战》笔记二:使用Archetype生成项目骨架《Maven实战》笔记三:使用MyEclipse创建Maven项目
2016-06-29 22:23:49
1090
原创 svn在Linux环境下仓库的创建与权限访问
1.创建仓库1.1svn create 创建仓库语法:svnadmin create /directory我是在home/svnrepo下新建myproject仓库cd /homemkdir svnreposvnadmin create /home/svnrepo/myproject仓库创建成功以后,会出现一个仓库名字的文件夹 文件夹下面有以下几个文件和目录
2015-10-30 11:03:52
14321
原创 CentOS上subversion的安装与卸载
一安装subversion在Linux控制台中输入yum install subversion 安装subversion安装完成后使用svn --version 检查svn版本号 如出现以下类似信息证明安装成功二创建svn仓库如下图所示 在home目录下新建repo仓库
2015-10-22 15:57:53
10841
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人