- 博客(21)
- 资源 (12)
- 收藏
- 关注
原创 Java多线程学习(六)——Lock的使用
锁是用于通过多个线程控制对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只能有一个线程可以获取锁,并且对共享资源的所有访问都要求首先获取锁。 但是,一些锁可能允许并发访问共享资源,如ReadWriteLock的读写锁。Java5之后并发包中新增了Lock接口以及相关实现类来实现锁功能。虽然synchronized方法和语句的范围机制使得使用监视器锁更容易编程,并且有助于避免涉及锁的...
2019-11-08 07:02:38
199
原创 SpringBoot连接Elasticsearch实战总结
记一次线上的elasticsearch查询采坑第一次使用elasticsearch,于是从网上找轮子复制粘贴。早好轮子测试完毕,上线。可是几天下来发现接口响应时间一直都偏高(默认的超时时间是500ms),所以就不停的对代码优化,缩短时间。但是到最后代码已经不能再优化了,响应时间依然没有明显的下降趋势,甚至在高峰期会严重超时。接下来会慢慢讲解elasticsearch使用优化。Spring Bo...
2019-09-17 08:26:20
4196
原创 Java多线程学习(五)——等待通知机制
等待通知机制的实现方法wait()的作用是使当前线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程放到“预执行队列”,并在wait()所在的代码处停止执行,直到接到通知或中断为止。只能在同步方法或同步快中使用wait()方法,执行wait()后,当前线程释放锁。方法notify()也要在同步方法或同步快中调用,在调用前也必须获得该对象的的对象级别锁。该方法用来通知那些可...
2019-09-11 08:31:49
221
转载 简洁又快速地处理集合——java8 Stream(下)
上一篇文章我讲解 Stream 流的基本原理,以及它的基本方法使用,本篇文章我们继续讲解流的其他操作值得注意的是:学习 Stream 之前必须先学习 lambda 的相关知识。本文也假设读者已经掌握 lambda 的相关知识。本篇文章主要内容:一种特化形式的流——数值流Optional 类如何构建一个流collect 方法并行流相关问题一. 数值流前面介绍的如int sum...
2019-09-10 08:43:33
341
1
转载 简洁又快速地处理集合——java8 Stream(上)
Java 8 发布至今也已经好几年过去,如今 Java 也已经向 11 迈去,但是 Java 8 作出的改变可以说是革命性的,影响足够深远,学习 Java 8 应该是 Java 开发者的必修课。今天给大家带来 Java 8 Stream 讲解,为什么直接讲这个,是因为只要你学完,立刻就能上手,并能让它在你的代码中大展身手。值得注意的是:学习 Stream 之前必须先学习 lambda 的相关知...
2019-09-09 08:34:30
179
原创 设计模式(四)——搞懂什么是代理模式
代理模式定义:为其他对象提供一种代理以控制对这个对象的访问上图中,Subject是一个抽象类或者接口,RealSubject是实现方法类,具体的业务执行,Proxy则是RealSubject的代理,直接和client接触的。代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。值得注意的是,代理类和被代理类应该共同实现一个接口,或者是共同继承某个类。代理模式优...
2019-07-08 10:42:04
306
原创 Java多线程学习(四)——volatile关键字
volatile关键字当用volatile关键字声明变量的时候,就等于告诉虚拟机,这个变量极有可能被某些程序或者线程修改,为了保证比那辆被修改后应用程序范围内的所有线程可以看到这个改动,虚拟机必须采用一些方法保证这个变量的可见性。volatile与死循环public class PrintString { private boolean isContinue = true; ...
2019-06-28 07:39:13
179
原创 Java多线程学习(三)——synchronized(下)
synchronized同步语句块用关键字synchronized声明方法是有弊端的。比如线程A调用同步方法执行一个长时间任务,那么线程B就要等较长时间才能调用。下面看一个例子:public class Task { private String getData1; private String getData2; public synchronized voi...
2019-06-27 08:26:09
194
原创 Java多线程学习(三)——synchronized(上)
在前两节的《Java多线程学习(一)——多线程基础》和《Java多线程学习(二)——Thread类的方法介绍》中我们接触了线程安全和非线程安全的概念,这节就来学习一下synchronized关键字的使用。1、变量的线程安全性“非线程安全”问题存在于“实例变量中”,如果是方法内部私有的变量,则不存在“非线程安全”的问题。如果两个线程同时操作对象中的实例变量,会出现非线程安全的问题,解决方法是在方...
2019-06-26 07:59:14
160
原创 设计模式(二)——工厂模式
工厂模式 定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法是一个类的实例化延迟到子类。工厂方法可以解耦,降低代码的重复性。工厂模式分类简单工厂:静态工厂方法,一个模块仅需要一个工厂类, 没有必要把它产生出来。工厂方法:多个工厂抽象工厂:为创建一组相关或相互依赖的对象提供一个接口, 而且无须指定它们 的具体类。代码:GitHub简单工厂方法一个模块仅需要一个工厂类...
2019-06-13 08:12:39
144
原创 Java虚拟机(三)——类加载机制
虚拟机类加载机制类加载时机 类从被加载到虚拟机内存开始到卸载内存为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载 类必须立即初始化情况:遇到 new、getstatic、putstatic和invokestatic这4条字节码指令时。使用java.lang.reflect包方法对类进行反射调用时候。当初始化一个类的时候,欺父类没有被初始化要先初始化其父类。虚拟...
2019-06-11 08:17:51
118
原创 Java虚拟机笔记(一)
JDK和JRE区别 1、一般把Java程序设计语言,java虚拟机,java API类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境。 2、Java API类库中Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。Jav...
2019-02-26 17:54:30
185
原创 一篇搞懂Java线程池
欢迎关注微信公众号:xiaosen_javashare在上一篇文章《spring boot使用@Async异步任务》中我们了解了使用@Async的异步任务使用,在这篇文章中我们将学习使用线程池来创建异步任务的线程。在《阿里巴巴Java开发手册中》对线程使用有如下要求:接下来就让我们就好好了解一下线程池。线程池简单介绍在Java5中引入Executor框架。ThreadPoolEx...
2019-02-20 13:52:53
221
原创 设计模式(一)——单例模式
单例模式 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。构造器私有化,不能被new出来。项目代码:Github单例的应用优点在内存中只有一个实例, 减少了内存开支当一个对象的产生需要 比较多的资源时, 如读取配置、 产生其他依赖对象时, 则可以通过在应用启动时直接产生一 个单例对象, 然后用永久驻留内存的方式来解决单例模式可以避免对资源的多重占用, 例如一个写...
2019-02-18 10:23:59
190
原创 计算机网络协议
如果您对我的文章感兴趣,欢迎关注微信公众号:Java笔记分享七层协定 越接近硬件的阶层为底层,越接近应用程序的层为高层。无论接收端还是发送端,每一阶层只认识对方的同一阶层数据。客户端通过应用程序将数据放入第七层,再将第七层数据打包到第六层,依次打包到第一层,然后传送给接收端,接收端主机由第一层开始,依序打开每个包,然后交给对应的阶层处理。TCP/IP TCP/IP 也是使用 OSI ...
2019-02-16 17:00:22
322
原创 spring boot使用@Async异步任务
github项目地址:https://github.com/lgsdaredevil/asyncTest开启异步任务在应用主类中添加@EnableAsync注解写异步任务方法 @Async public Future<String> ansync(String name){ try { Thread.sleep(10000);...
2019-02-15 14:51:27
487
1
原创 Java基础(二)public、private、protected修饰的方法
GitHub: https://github.com/lgsdaredevil/keyWords.gitpublic:公共的,外部可见方法public void publicTest(){ System.out.print("this is public method!\n"); }private:私有的,外部不可见,只能本类调用的方法private v...
2018-05-22 15:18:09
12594
1
原创 Java基础(一)String、StringBuffer、StringBuilder
太长不看版字符串拼接速度:StringBuilder > StringBuffer > StringStringBuilder 非线程安全 StringBuffer线程安全正文一、String类 1、String类是不可变类,一旦String被创建,包含在这个对象中的字符串序列是不可变的,直至对象被销毁。String类通过cha...
2018-05-21 16:40:27
160
实战Hadop:开启通向云计算的捷径.刘鹏
2018-05-23
《云计算》第二版
2018-05-23
JAVA2核心技术第1卷:基础知识
2018-05-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人