![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 88
qq_34341338
这个作者很懒,什么都没留下…
展开
-
JUC学习记录(二)- AtomicInteger
AtomicInteger内部调用了Unsafe的方法,保证原子性;什么是原子性:指操作要么成功要么失败(失败则进行事务回滚)从一个例子从开始学习AtomicInteger Executor executor = Executors.newFixedThreadPool(10); for (int i = 0; i < 10; i++) { executor.execute(() -> { for (int j原创 2020-06-29 20:24:45 · 229 阅读 · 0 评论 -
JUC学习(一)-CAS与Unsafe
CAS与Unsafe参考自:https://tech.meituan.com/2019/02/14/talk-about-java-magic-class-unsafe.html无锁执行者CAS-乐观CAS全程是Compare And Swap,即比较交换;其核心算法:执行函数CAS(V,E,N)其中:V代表要更新的变量E代表预期值N代表新值算法:当V==E时,修改V=N;否则什么都不做。若V!=E即代表此变量在其他线程中进行了更新。Unsafe前言位于sun.mis原创 2020-06-27 23:09:13 · 247 阅读 · 1 评论 -
代理模式
设计模式之代理模式定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。特点:真实对象职责清晰客户端直接调用代理端,保护真实对象UML结构图对图中三个部分进行解释:Subject:抽象角色,定义操作Proxy:代理对象,持有真实对象;客户端直接操作对象RealSu...原创 2019-11-23 15:24:34 · 192 阅读 · 0 评论 -
观察者模式
观察者模式一、定义又叫发布-订阅模式;定义了对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖者都会收到通知并自动更新。最为典型的例子:EventBus三方框架,主要用于Android的通信。二、UML类图从它的UML类图中可以看出,主要有四个角色:发布者/被观察者(抽象):添加、移除、通知观察者的职责订阅者/观察者(抽象):提供公共的更新方法具体的被观察者具体的观察...原创 2019-09-17 14:35:11 · 164 阅读 · 0 评论 -
求平方根之牛顿迭代法
牛顿迭代法牛顿迭代法(Newton’s method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。推导过程:代码实现: public static int mySqrt(int x) { if (x < 0) return (int) Double.NaN...原创 2019-06-24 15:11:34 · 342 阅读 · 0 评论 -
Java设计模式之单例模式(Singleton)
1.简介保证一个类仅有一个实例(防止实例化多个对象),且提供一个访问它的全局访问点。可以严格的控制客户怎么访问它,何时访问它。它与静态工具类的不同点:静态工具类不保存状态,仅提供静态方法与静态属性静态工具类不能用于继承静态工具类是方法属性的集合,单例类有着唯一的对象实例减少JVM对于new的消耗2.如何实现?私有构造提供全局访问点内部构建函数3.实现方式懒汉式...原创 2019-05-21 16:16:19 · 124 阅读 · 0 评论 -
Java注解Annotation
Annotation翻译过来为注解、释文等。而在Java中注解算是一个尤为重要的知识点,而且不易理解。摘抄至百度百科:java.lang.annotation,接口 Annotation。对于Annotation,是Java5的新特性,JDK5引入了Metadata(元数据)很容易的就能够调用Annotations。Annotations提供一些本来不属于程序的数据,比如:一段代码的作者或者...原创 2019-03-07 15:19:17 · 178 阅读 · 0 评论 -
Java CountDownLatch线程同步辅助类
最近几篇文章都是关于线程的,本篇文章也同样是关于线程的。工作中,肯定少不了公司开会这一步骤;而开会时也需要等到开会人员全部到场后会议才能开始,这时候我们该如何实现呢?当然是使用Java API中的CountDownLatch线程同步辅助类了。1.CountDownLatch介绍使用CountDownLatch辅助类,调用await()后可以让线程等待其他线程完成一组操作/步骤后继续进行,否...原创 2019-02-14 10:40:55 · 224 阅读 · 0 评论 -
Java-Notify、NotifyAll、Wait使用
上篇文章中学到了Synchronized的使用,这篇文章就介绍一下Notify、NotifyAll、Wait。1.Notify、NotifyAll、Wait这三个方法均属于Object类,但是它们多用在多线程中。三者的区别以及各自的含义(使用的注意事项):notify: 唤醒一个正在wait当前对象锁的线程,并继续执行notifyAll:唤醒全部在wait当前对象锁的线程,所有线程...原创 2019-02-13 19:58:33 · 312 阅读 · 0 评论 -
Java之Synchronized关键字
在多线程环境中,有可能会出现多个线程同时访问同一个资源的情况,资源可以是:一个文件、变量、对象、数据库表等。而单个线程的执行过程是不可控的,可能导致结果与逾期不同。这个资源被称为“临界资源”(也称共享资源)。1.什么情况出现线程安全问题情况重现:public class Main { public static void main(String[] args) {// ...原创 2019-02-12 14:38:52 · 189 阅读 · 0 评论 -
Java设计模式之装饰者模式(Decorator)
1.简介设计原则:开发-封闭 多组合少继承指在不改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。他是通过创建一个包装对象,也就是装饰来包裹真实的对象。特点:装饰对象和真实对象(被装饰的对象)具有相同接口;装饰对象包含一个真实对象的引用;装饰对象接受所有来自客户端的请求并转交真实对象;装饰对象可以在转发请求之前/后添加附加功能组成:成分抽象构建(Co...原创 2019-01-30 10:15:03 · 154 阅读 · 0 评论 -
Java IO流
1.IO整体概括Java中的IO体系主要分为以下三大类个人总结,不是很完整,如有出错,请多多指教。未列出全部方法,有的方法类似直接省略。io流的整体分类:输入流输出流字节流InputStreamOutputStream字符流ReaderWriter什么是输入输出呢,我以我个人认知的简单叙述:(有点简陋)输入流:以程序本身为参考点,简单说就...原创 2019-01-22 21:41:19 · 120 阅读 · 0 评论 -
Java File类使用及获取整个目录下的文件/删除整个文件夹
1.File类Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。有以下四种方法构建一个File对象:File(File parent,String child):以父抽象路径名和子路径名字符串创建新的File实例。File(String pathName):给定路径名字符串转换为抽象路径名来创建新的File实例。File(St...原创 2019-01-21 21:12:48 · 32985 阅读 · 5 评论 -
Java-BigDecimal高精度运算
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等...原创 2019-01-20 22:30:05 · 249 阅读 · 0 评论 -
Java设计模式之策略模式(Strategy)
为什么要学习设计模式?我们之所以要学习设计模式,并不是把具体的某些模式原原本本地照搬来用,而是通过学习这些模式,了解到底什么是“封装变化”,“对象间松耦合”,“针对接口编程”等概念,从而设计出符合前面所讲到四个特性——易维护,易扩展,易服用,灵活性好的程序。1.简介指对象的某个行为在不同时间/场景下有不同的实现方式,即实现的算法。策略模式是定义一系列算法的方法,从概念上来看,所有这些...原创 2019-01-25 15:28:17 · 222 阅读 · 0 评论 -
Java Serializable序列化高级
之前的文章中有介绍Android种的序列化的相关知识,但是对于一些深入的知识没有说明并且学习到,这篇文章记录一下。Android序列化相关知识.1.Serializable使用的几个注意点客户端A与客户端B通过网络传输数据C,客户端A将C序列化后传给B,B在反序列化得到数据。C类在客户端A/B中所处的包以及包名必须完全一致,且实现Serializable接口,同时serialVersion...原创 2019-01-25 10:46:50 · 125 阅读 · 0 评论 -
Java-RandomAccessFile使用
前几篇文章讲的是File以及相关流的使用,这节主要介绍随机访问文件的使用。随机访问文件,如其名:使用它能够对文件进行一系列的随机操作。1.RandomAccessFile基本介绍看看它的类继承结构吧:可以看出它继承了Object类以及实现了DataOutput, DataInput, Closeable三个接口,我们可以看出它并没有继承自IO流体系中的任何一个,但是它本身使用的是字...原创 2019-01-24 16:38:08 · 707 阅读 · 0 评论 -
Java创建线程的四种方式
1.线程是什么?线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线...原创 2018-11-23 22:08:55 · 273 阅读 · 0 评论 -
Java基础之反射
大家肯定都使用过流行的开源框架,那么这些框架的实现原理呢,一般来说它们都是基于反射来实现的,因此,反射对于我们来说至关重要。这边文章主要讲解反射的基本原理以及使用。本文学习自(https://blog.csdn.net/sinat_38259539/article/details/71799078),非常感谢作者1.概述JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类...原创 2018-11-13 10:52:48 · 127 阅读 · 0 评论