一.CyclicBarrier CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用.因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier. CyclicBarrier类似于CountDownLatch也是个计数器, 不同的是CyclicBarrier数的是调用了CyclicBa…
目录 Java开发过程中的常用工具类库 1. Apache Commons类库 2. Guava类库 3. Spring中的常用工具类 4. 其他工具 参考 Java开发过程中的常用工具类库 1. Apache Commons类库 Apache Commons是一个非常有用的工具包,为解决各种实际的问题提供了通用现成的代码,不需要我们程序员再重复造轮子.关于这个类库的详细介绍可以访问官网介绍.下面表格列出了部分的工具包.我们平时开发过程中可以根据自己的需要挑选合适的工具包. Components…
Java线程之 InterruptedException 异常   当一个方法后面声明可能会抛出InterruptedException 异常时,说明该方法是可能会花一点时间,但是可以取消的方法. 抛InterruptedException的代表方法有: 1. Java.lang.Object 类的 wait 方法 2. java.lang.Thread 类的 sleep 方法 3. java.lang.Thread 类的 join 方法 -- 需要花点时间的方法 执行wait方法的线程,会进入…
Java基础-考察JVM内部结构的常用工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们可以通过jvisualvm.exe考察jvm内部结构.而jvisualvm.exe这个程序存放在JDK的安装目录下的bin目录中.当然在JDK的安装目录下的bin目录中还有jmap以及jconsole两个工具都是可以查看JVM的堆内存结构的哟!接下来我会为大家展示这三个工具的方法,他们各自有各自的优点,如果是Windows开发环境的话,我个人比较喜欢jvisualvm的,如果在L…
25.mysql中的常用工具25.1 mysql客户端连接工具跳转至mysql安装目录下的bincd C:\Program Files\MySQL\MySQL Server 5.7\binmac下cd /usr/local/Cellar/mysql@5.7/5.7.22/bincd /usr/local/mysql/bin mysql [选项] [database]; --连接数据库 use [dbname]; --进入要操作的数据库选项表达方式语法: “-”+选项单词的缩写字符+选项值 例子:…
这个包中的很多工具类可以简化我们的操作,在这里简单的研究其中的几个工具类的使用. 1.StringUtils工具类 可以判断是否是空串,是否为null,默认值设置等操作: /** * StringUtils */ public static void test1() { System.out.println(StringUtils.isBlank(" "));// true----可以验证null, ""," "等 System.out.prin…
一.概述 很多时候,很多工具类其实spring中就已经提供,常用的工具类有: 参考:https://www.cnblogs.com/langtianya/p/3875103.html 内置的resouce类型 UrlResource ClassPathResource FileSystemResource ServletContextResource InputStreamResource ByteArrayResource EncodedResource 也就是Resource加上encodi…
1.在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题. 2.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利.本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景. 3.使用背景:(重要) 多线程环境中,通过队列可以很容易实现数据共享,比如经典的“生产者”和“消费者”模型中,通过队列可以很便利地实现两者之间的数据共享.假设我们有若干生产者线程,另外又有若干个消费…
一. CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下执行.假如我们这个想要继续往下执行的任务调用一个CountDownLatch对象的await()方法,其他的任务执行完自己的任务后调用同一个CountDownLatch对象上的countDown()方法,这个调用await()方法的任务将一直阻塞等待…
一.概述: BlockingQueue作为线程容器,可以为线程同步提供有力的保障.   二.BlockingQueue定义的常用方法 1.BlockingQueue定义的常用方法如下:   抛出异常 特殊值 阻塞 超时 插入 add(e) offer(e) put(e) offer(e, time, unit) 移除 remove() poll() take() poll(time, unit) 检查 element() peek() 不可用 不可用   1)add(anObject):把anO…
Java为开发提供了很多有用的工具类,这些工具类可以帮助我们更加高效的编写并发程序,本篇我们将介绍这些实用工具的用法. ThreadLocal ThreadLocal类用于解决多线程共享一个变量的问题,当多线程访问同一个变量时可能会导致结果的错误,防止这种错误第一种办法就是使用锁来保护对象:第二种方法就是彻底根除共享,即每个线程访问自己私有的变量.有的同学会觉得第二种方法就会有一些局限性,因为有些时候不得不共享同一个变量.是的确实有局限性,但是在很多情况下是可以不共享变量就能达到同样的效果,Th…
一.线程池的作用 平时的业务中,如果要使用多线程,那么我们会在业务开始前创建线程,业务结束后,销毁线程.但是对于业务来说,线程的创建和销毁是与业务本身无关的,只关心线程所执行的任务.因此希望把尽可能多的cpu用在执行任务上面,而不是用在与业务无关的线程创建和销毁上面.而线程池则解决了这个问题. 线程池的作用:线程池作用就是限制系统中执行线程的数量.根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果,从而避免平凡的创建和销毁线程带来的系统开销也有效的规避了因为创建的线程过多而耗尽系…
如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果,怎么办呢? 为此你可以保存与每个任务相关联的Future,然后不断地调用 timeout为零的get,来检验Future是否完成.这样做固然可以,但却相当乏味.幸运的是,还有一个更好的方法:完成服务 (Completion service). CompletionService整合了Executor和BlockingQueue的功能. 你可以将Callable任务提交给它去执行,然 后使用类似于队列中的take和poll…
什么是线程dump Java Thread dump记录了线程在jvm中的执行信息,可以看成是线程活动的日志.Java线程转储文件有助于分析应用程序和死锁情况中的瓶颈. 如何获取线程转储文件 在这里,我们将学习为java程序生成线程转储的多种方法,这些指令对于linux操作系统是有效的,但是在windows中,这些步骤可能有些不同. 1.使用VisualVM Profiler 右键选择线程Dump便会自动生成线程转储文件,当然你也可以连接远程机器对其进行监控和分析 2.jstack jdk自带的…
简述 FutureTask是Future接口的实现类,并提供了可取消的异步处理的功能,它包含了启动和取消(start and cancel)任务的方法,同时也包含了可以返回FutureTask状态(completed or cancelled)的方法.我们可以自定义一个Future任务,然后使用线程池执行器Java Thread Pool Executor 去异步执行任务. FutureTask 从类图中可以看出,FutureTask实现了接口RunnableFuture,接口RunnableF…
简述 在多线程中有时候我们希望一个线程执行完毕后可以返回一些值,在java5中引入了java.util.concurrent.Callable接口,它类似于Runnable接口,但是Callable可以有返回值. Java Callable接口使用通用定义对象的返回类型,executor类提供了在线程池中执行Java调用的有用方法,由于可调用任务并行运行,所以我们必须等待返回的对象. Future 实现接口Callable的任务返回的是java.util.concurrent.Future对象,…
翻译:https://www.journaldev.com/1061/thread-safety-in-java 我们知道线程安全在Java中是一个非常重要的主题,当多个线程操作共享数据时,如果没有任何控制,将会产生数据不一致的问题.数据不一致的重要原因是,当更新一个变量的值时,是分三步完成的,第一获取变量值,第二对变量值进行更新,第三将修改后的变量值刷新到内存. 下面我们用一个简单程序来验证一下这个问题,多线程去更新共享数据: package com.lkf.mulithread; publi…
Phaser是一个灵活的线程同步工具,他包含了CyclicBarrier和CountDownLatch的相关功能 首先,来看一下如何用Phaser替代CountDownLatch.对于CountDownLatch而言,有2个重要的方法,一个是await()方法,可以使线程进入等待状态,在Phaser中,与之对应的方法是awaitAdvance(int n).CountDownLatch中另一个重要的方法是countDown(),使计数器减一,当计数器为0时所有等待的线程开始执行,在Phaser中…
14.01_常见对象(正则表达式的概述和简单使用) A:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. 作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的 B:案例演示 需求:校验qq号码. 1:要求必须是5-15位数字 2:0不能开头 3:必须都是数字 a:非正则表达式实现 b:正则表达式实现 14.02_常见对象(字符类演示) A:字符类 [abc] a.b 或 c(简单类)…
JAVA线程状态图 1.C++/windows中主线程结束,其他线程必然死亡(即使调用pthread_detach解除父子关系,主线程消亡时也会导致子线程被迫关闭). ----1.1 一个进程中可以有很多的线程,可以在主线程上创建一个新线程(A),而在这个新线程(A)中可以再创建别的线程.这样的话,线程之间就可以层层嵌套; CreateTread()函数中就有一个参数可以指定创建线程的入口(就是可以自定义一个线程启动入口), ----1.2 当父线程消亡的时候,子线程是不会消亡的,是会继续执行到…
题目:给定一个字符串,求出字符串中每一个单词在字符串中出现的次数 旨意:map的分拣思想. 每一个key的包装类,存放出现的次数 /** * 作为包装类,用来存放英文单词,和该英文单词出现的次数 * @ClassName: Str * @Description: TODO(这里用一句话描述这个类的作用) * @author 尚晓飞 * @date 2014-7-30 下午6:57:29 * */ public class Str { private String st; private int…
<?php /** * 助手类 * @author www.shouce.ren * */ class Helper { /** * 判断当前服务器系统 * @return string */ public static function getOS(){ if(PATH_SEPARATOR == ':'){ return 'Linux'; }else{ return 'Windows'; } } /** * 当前微妙数 * @return number */ public static fun…
synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象: 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象: 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象: 修改一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象.——————…
转自:http://www.runoob.com/nodejs/nodejs-module-system.html util是一个Node.js核心模块,提供常用函数的集合,用于弥补JavaScript的功能的不足,util模块设计的主要目的是为了满足Node内部API的需求.其中包括:格式化字符串.对象的序列化.实现对象继承等常用方法.要使用util模块中的方法,只需require('util')引入即可. 格式化输出字符串:util.format(format[, ...]) 在控制台标准输…
1.介绍 ObjectMapper类是Jackson库的主要类,它提供一些功能将数据集或对象转换的实现 2.依赖包 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-…
文件查找 find 命令 语法格式 find命令总结: 常用选项: -name 查找/etc目录下以conf结尾的文件 find /etc -name "*.conf" -iname 查找当前目录下文件名为aa的文件,不区分大小写 find . -iname aa -user 查找文件属主为hdfs的所有文件 find . -user hdfs -group 查找文件属主为yarn的所有文件 find . -group yarn -type 查找文件属组为yarn的所有文件 find…
简述 java.util.Timer是一个定时器,用来调度线程在某个时间执行.在初始化Timer时,开启一个线程循环提取TaskQueue任务数组中的任务, 如果任务数组为空,线程等待直到添加任务: 当添加任务时,唤醒线程,提取数组中标记为1的任务, 如果该任务状态为CANCELLED,则从数组中删除任务,继续循环提取任务 TimerTask TimerTask是一个抽象类,它实现了Runnable接口,我们需要继承TimerTask来创建自己的任务类,然后可以使用Timer去调度我们自定义的任…
翻译:https://www.journaldev.com/1076/java-threadlocal-example?utm_source=website&utm_medium=sidebar&utm_campaign=Core-Java-Sidebar-Widget 简述 ThreadLocal类用来提供线程内部的局部变量,这种变量在多线程环境下通过get或set方法访问,它能保证各个线程的变量相对独立于其他线程内的变量.ThreadLocal实例通常来说都是private stati…
翻译:https://www.journaldev.com/1037/java-thread-wait-notify-and-notifyall-example 简述 java中Objct对象包含三个方法用于线程之间对于资源锁状态进行通讯,这三个方法分别是wait().notify().notifyAll(),今天我们就来学习一下这三个方法的应用. 任何对象上调用这些方法的当前线程都应该具有对象监视器,否则它将抛出java.lang.IllegalMonitorStateException 方法…
一.mysql 客户端连接工具 二.myisampack MyISAM表压缩工具 三.mysqladmin MySQL管理工具 四.mysqlbinlog 日志管理工具 五.mysqlcheck MyISAM表维护工具 六.mysqldump 数据导出工具 七.mysqlhotcopy MyISAM表热备份工具 八.mysqlimport 数据导入工具 九.mysqlshow 数据库对象查看工具 十.perror 错误代码查看工具 十一.replace 文本替换工具…