![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
xiaosen-L
欢迎关注微信公众号:xiaosen_javashare
展开
-
Java基础(一)String、StringBuffer、StringBuilder
太长不看版 字符串拼接速度:StringBuilder > StringBuffer > String StringBuilder 非线程安全 StringBuffer线程安全 正文 一、String类 1、String类是不可变类,一旦String被创建,包含在这个对象中的字符串序列是不可变的,直至对象被销毁。 String类通过cha...原创 2018-05-21 16:40:27 · 116 阅读 · 0 评论 -
简洁又快速地处理集合——java8 Stream(下)
上一篇文章我讲解 Stream 流的基本原理,以及它的基本方法使用,本篇文章我们继续讲解流的其他操作 值得注意的是:学习 Stream 之前必须先学习 lambda 的相关知识。本文也假设读者已经掌握 lambda 的相关知识。 本篇文章主要内容: 一种特化形式的流——数值流 Optional 类 如何构建一个流 collect 方法 并行流相关问题 一. 数值流 前面介绍的如 int sum...转载 2019-09-10 08:43:33 · 300 阅读 · 1 评论 -
简洁又快速地处理集合——java8 Stream(上)
Java 8 发布至今也已经好几年过去,如今 Java 也已经向 11 迈去,但是 Java 8 作出的改变可以说是革命性的,影响足够深远,学习 Java 8 应该是 Java 开发者的必修课。 今天给大家带来 Java 8 Stream 讲解,为什么直接讲这个,是因为只要你学完,立刻就能上手,并能让它在你的代码中大展身手。 值得注意的是:学习 Stream 之前必须先学习 lambda 的相关知...转载 2019-09-09 08:34:30 · 141 阅读 · 0 评论 -
Java多线程学习(四)——volatile关键字
volatile关键字 当用volatile关键字声明变量的时候,就等于告诉虚拟机,这个变量极有可能被某些程序或者线程修改,为了保证比那辆被修改后应用程序范围内的所有线程可以看到这个改动,虚拟机必须采用一些方法保证这个变量的可见性。 volatile与死循环 public class PrintString { private boolean isContinue = true; ...原创 2019-06-28 07:39:13 · 126 阅读 · 0 评论 -
设计模式(四)——搞懂什么是代理模式
代理模式 定义:为其他对象提供一种代理以控制对这个对象的访问 上图中,Subject是一个抽象类或者接口,RealSubject是实现方法类,具体的业务执行,Proxy则是RealSubject的代理,直接和client接触的。 代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。值得注意的是,代理类和被代理类应该共同实现一个接口,或者是共同继承某个类。 代理模式优...原创 2019-07-08 10:42:04 · 227 阅读 · 0 评论 -
Java多线程学习(三)——synchronized(下)
synchronized同步语句块 用关键字synchronized声明方法是有弊端的。比如线程A调用同步方法执行一个长时间任务,那么线程B就要等较长时间才能调用。 下面看一个例子: public class Task { private String getData1; private String getData2; public synchronized voi...原创 2019-06-27 08:26:09 · 142 阅读 · 0 评论 -
Java多线程学习(三)——synchronized(上)
在前两节的《Java多线程学习(一)——多线程基础》和《Java多线程学习(二)——Thread类的方法介绍》中我们接触了线程安全和非线程安全的概念,这节就来学习一下synchronized关键字的使用。 1、变量的线程安全性 “非线程安全”问题存在于“实例变量中”,如果是方法内部私有的变量,则不存在“非线程安全”的问题。如果两个线程同时操作对象中的实例变量,会出现非线程安全的问题,解决方法是在方...原创 2019-06-26 07:59:14 · 126 阅读 · 0 评论 -
Java虚拟机(三)——类加载机制
虚拟机类加载机制 类加载时机 类从被加载到虚拟机内存开始到卸载内存为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载 类必须立即初始化情况: 遇到 new、getstatic、putstatic和invokestatic这4条字节码指令时。 使用java.lang.reflect包方法对类进行反射调用时候。 当初始化一个类的时候,欺父类没有被初始化要先初始化其父类。 虚拟...原创 2019-06-11 08:17:51 · 81 阅读 · 0 评论 -
设计模式(二)——工厂模式
工厂模式 定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法是一个类的实例化延迟到子类。 工厂方法可以解耦,降低代码的重复性。 工厂模式分类 简单工厂:静态工厂方法,一个模块仅需要一个工厂类, 没有必要把它产生出来。 工厂方法:多个工厂 抽象工厂:为创建一组相关或相互依赖的对象提供一个接口, 而且无须指定它们 的具体类。 代码:GitHub 简单工厂方法 一个模块仅需要一个工厂类...原创 2019-06-13 08:12:39 · 103 阅读 · 0 评论 -
Java虚拟机笔记(二)
欢迎扫码关注我原创 2019-03-26 17:41:12 · 114 阅读 · 0 评论 -
Java多线程学习(二)——Thread一些方法
本文章首发微信公众号:IT笔记分享 欢迎扫码关注我原创 2019-03-17 17:45:30 · 185 阅读 · 0 评论 -
Java多线程学习(一)
本文章首发微信公众号:IT笔记分享 欢迎扫码关注我原创 2019-03-06 11:04:00 · 106 阅读 · 0 评论 -
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 · 138 阅读 · 0 评论 -
一篇搞懂Java线程池
欢迎关注微信公众号:xiaosen_javashare 在上一篇文章《spring boot使用@Async异步任务》中我们了解了使用@Async的异步任务使用,在这篇文章中我们将学习使用线程池来创建异步任务的线程。 在《阿里巴巴Java开发手册中》对线程使用有如下要求: 接下来就让我们就好好了解一下线程池。 线程池简单介绍 在Java5中引入Executor框架。 ThreadPoolEx...原创 2019-02-20 13:52:53 · 167 阅读 · 0 评论 -
设计模式(一)——单例模式
单例模式 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。构造器私有化,不能被new出来。 项目代码:Github 单例的应用 优点 在内存中只有一个实例, 减少了内存开支 当一个对象的产生需要 比较多的资源时, 如读取配置、 产生其他依赖对象时, 则可以通过在应用启动时直接产生一 个单例对象, 然后用永久驻留内存的方式来解决 单例模式可以避免对资源的多重占用, 例如一个写...原创 2019-02-18 10:23:59 · 137 阅读 · 0 评论 -
计算机网络协议
如果您对我的文章感兴趣,欢迎关注微信公众号:Java笔记分享 七层协定 越接近硬件的阶层为底层,越接近应用程序的层为高层。无论接收端还是发送端,每一阶层只认识对方的同一阶层数据。客户端通过应用程序将数据放入第七层,再将第七层数据打包到第六层,依次打包到第一层,然后传送给接收端,接收端主机由第一层开始,依序打开每个包,然后交给对应的阶层处理。 TCP/IP TCP/IP 也是使用 OSI ...原创 2019-02-16 17:00:22 · 263 阅读 · 0 评论 -
Java基础(二)public、private、protected修饰的方法
GitHub: https://github.com/lgsdaredevil/keyWords.git public:公共的,外部可见方法 public void publicTest(){ System.out.print("this is public method!\n"); } private:私有的,外部不可见,只能本类调用的方法 private v...原创 2018-05-22 15:18:09 · 12466 阅读 · 1 评论 -
Java多线程学习(五)——等待通知机制
等待通知机制的实现 方法wait()的作用是使当前线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程放到“预执行队列”,并在wait()所在的代码处停止执行,直到接到通知或中断为止。只能在同步方法或同步快中使用wait()方法,执行wait()后,当前线程释放锁。 方法notify()也要在同步方法或同步快中调用,在调用前也必须获得该对象的的对象级别锁。该方法用来通知那些可...原创 2019-09-11 08:31:49 · 167 阅读 · 0 评论