自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不吃鱼的猫

不断的积累进步,慢不可笑,可笑的是不进步。

  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java编程如何写一个会导致死锁的程序?

第一次看到这个题目,觉得这是一个非常好的问题。很多人都知道死锁是怎么一回事儿:线程A和线程B相互等待对方持有的锁导致程序无限死循环下去。当然也仅限于此了,问一下怎么写一个死锁的程序就不知道了,这种情况说白了就是不懂什么是死锁,懂一个理论就完事儿了,实践中碰到死锁的问题基本上是看不出来的。真正理解什么是死锁,这个问题其实不难,几个步骤:1)两个线程里面共同持有两个Object对象:lock1...

2020-02-12 23:20:45 1333

原创 Spring RestTemplate方式实现HTTP请求

1. 简述RestTemplate是Spring用于同步client端的核心类,简化了与http服务的通信,并满足RestFul原则,程序代码可以给它提供URL,并提取结果。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。当然你也可以 通过setRequestFactory属性切换到不同的HTTP源,比如Apache HttpComponents、Netty和OkHtt...

2020-01-20 23:33:27 978

原创 常用的并发工具类(3)Semaphore

用法:控制同时访问某个特定资源的线程数量,用在流量控制(数据库连接),信号量,证书颁发。样例:import java.sql.*;import java.util.Map;import java.util.Properties;import java.util.concurrent.Executor;/** * * <p> * 类说明:数据库连接的平庸实...

2020-01-13 22:20:40 208

原创 常用的并发工具类(2)CyclicBarrier

用法:让一组线程达到某个屏障,一起被阻塞,一直到组内最后一个线程达到屏障时,屏障开放,所有被阻塞的线程会继续运行CyclicBarrier(int parties)另一个构造函数:CyclicBarrier(int parties, Runnable barrierAction),屏障开放,barrierAction定义的任务会执行样例:import java.util.Map;...

2020-01-13 22:17:06 129

原创 常用的并发工具类(1)CountDownLatch

作用:是一组线程等待其他的线程完成工作以后在执行,加强版joinawait用来开启等待,countDown负责计数器的减一样例:package com.xiangxue.ch2.tools;import com.xiangxue.tools.SleepTools;import java.util.concurrent.CountDownLatch;/*...

2020-01-13 22:14:32 114

原创 调用yield() 、sleep()、wait()、notify()等方法对锁有何影响?

面试点线程在执行yield()以后,线程持有的锁是不释放的线程在执行sleep()方法被调用以后,线程持有的锁是不释放的线程在调用wait()和notify()方法之前,必须要先持有锁。调用了wait()方法以后,锁就会被释放,当wait方法返回的时候,线程会重新持有锁调动notify(),notifyAll()方法之前,必须要先持有锁,调用notify(),notifyAll()...

2020-01-06 21:56:41 398 1

原创 样例join()方法

join()方法常常可能作为面试点:如何保证线程A一定等到线程B执行完以后再执行?方法:线程A,执行了线程B的join()方法,线程A必须要等待B执行完成了以后,线程A才能继续自己的工作。也可以用countDownLatch实现线程的顺序执行。以下直接上样例代码:import com.xiangxue.tools.SleepTools;/** * 类说明:演示下join方法的...

2020-01-02 22:45:33 114

原创 线程间协作-使用wait/notify/notifyAll

轮询:难以保证及时性,资源开销很大,等待和通知wait() 对象上的方法notify/notifyAll 对象上的方法等待和通知的标准范式等待方:获取对象的锁; 循环里判断条件是否满足,不满足调用wait方法, 条件满足执行业务逻辑通知方: 获取对象的锁; 改变条件 通知所有等待在对象的线程 notify和notifyAll应该用谁...

2020-01-02 21:41:34 95

原创 Map 集合遍历的4种方法

Map 集合初始化时,指定集合初始值大小。说明:HashMap 使用 HashMap(int initialCapacity) 初始化。正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即 loaderfactor)默认为 0.75,如果暂时无法确定初始值大小,请设置为 16(即默认值)。反例:HashMap 需要放置 1024 个...

2019-12-29 22:32:59 100

原创 Java 8中处理集合的优雅姿势——Stream

Java 8中处理集合的优雅姿势——Stream在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增、删、改、查、聚合、统计、过滤等操作。相比之下,关系型数据库中也同样有这些操作,但是在Java 8之前,集合和数组的处理并不是很便捷。不过,这一问题在Java 8中得到了改善,Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。本文就...

2019-12-28 21:40:15 218

原创 Java 8 中的 Streams API 详解

为什么需要 StreamStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于...

2019-12-28 21:35:45 74

原创 Java线程创建的常用方式

class SampleThread extends Thread { //重写run方法,start线程运行后,跑的就是run方法 public void run(){ //System.out.println(""); } public static void main(String[] args){ Thread ...

2019-12-14 15:29:46 79

原创 详解HHTPS-图解HTTP

最近看了图解HTTP一书,记录一下,面试常问的HTTPS。后续会不断修正。。。加油,小白。 在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用HTTPS 通信机制可以有效地防止这些问题。以下就先聊HTTP的缺点然后看HTTPS如何克服这些缺点。1.HTTP 的缺点通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的...

2019-12-08 21:47:23 53771

原创 8步练成手倒立

8步练成手倒立下面开始:【度娘】想做一个如果你一直玩如何做倒立和前臂倒立站,是另一个有趣的反转尝试。如果你有你的心在上下颠倒,这里有八个动作来练习。他们会帮助你建立力量和稳定,这样你就不会再站在你的手上!倒立吗?8移动到你那里(度娘的意思是:想练成手倒立吗?8步就可以成功!)第一步:俯卧撑【度娘】它可能看起来像倒立都是平衡的,但为了能够把你的身体...

2019-12-08 20:49:51 265

原创 springBoot之PageHelper分页

项目中使用这个工具分页特别好,记录一下。。。1.pom.xml中引入依赖maven查询网址:https://mvnrepository.com/<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter --><dependency&gt...

2019-12-04 21:38:40 88

原创 IDEA通过Git提交代码并过滤iml等文件

直接上方法:file --》setting--》Editor--》File Types --》ActionScript - -》Ignore files and folders --》想要过滤掉的文件类型后缀。例如想要过滤掉后缀为.iml的文件,就添加 *.iml; 后续通过idea提交代码时,就自动过滤掉后缀为.iml的文件。...

2019-11-20 22:25:01 5706 1

原创 基于AQS的CountDownLatch源码分析与使用

CountDownLatch的作用很简单,就是一个或者一组线程在开始执行操作之前,必须要等到其他线程执行完才可以。我们举一个例子来说明,在考试的时候,老师必须要等到所有人交了试卷才可以走。此时老师就相当于等待线程,而学生就好比是执行的线程。 注意:java中还有一个同步工具类叫做CyclicBarrier(多个线程间相互等待),他的作用和CountDownLatch类似。同样是等...

2019-11-19 23:12:16 96

原创 Idea设置类头注释和方法注释详细教程

1.类头注释打开file->setting->Editor->Fileand Code Templates->Includes->File Header/*** @task* @Author: JXS* @DateTime: ${DATE} ${TIME}* @Description: TODO* @Version v1.0*/最后点...

2019-11-19 22:37:33 602

原创 Mysql日期和字符串相互转换

date ----》char oracledate_format(date,'%Y-%m-%d %H:%i:%s'); to_char()char---》datestr_to_date('date',...

2019-11-19 21:47:18 146

原创 MySQL之concat以及group_concat的用法

本文中使用的例子均在下面的数据库表tt2下执行:一、concat()函数1、功能:将多个字符串连接成一个字符串。2、语法:concat(str1, str2,...)返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。所以使用时最好与ifnull函数结合使用IFNULL(v1,v2):其中:如果 v1 不为 NULL,则 IFNULL...

2019-11-18 22:29:33 4989

原创 关于显示锁与AQS学习整理

最近一直在学习各种锁的相关知识,这篇文章作为个人的学习整理,有优秀博客,也有学习视频也有参考书籍,记录,好记性不如烂笔头,加油我也可以很厉害的。遇到锁的东西会不断更新在此。。。显式锁说道显示锁,首先得介绍Lock接口Lock接口和核心方法void lock():获取锁,若没获取到锁则会阻塞。 void unlock():释放锁。 boolean tryLock():尝试去...

2019-11-05 22:11:45 138

原创 Oracle与MySQL的区别

(1) 对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮(2) 分页查询 MySQL是直接在SQL语句中写"select... from ...where...limit x, y",有limit就可以实现分页;而Oracle则是需要用到伪列ROWNUM和嵌套查询。Oracle...

2019-10-24 20:54:35 81

startUML-2.8版本-附破解文档

压缩文件包含2.8安装文件和安装文档

2018-08-22

空空如也

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

TA关注的人

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