![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 69
宽宽的乌托邦
这个作者很懒,什么都没留下…
展开
-
浅谈Java语言中的并发问题
前言大四上学期,选修课–科技论文写作的期末作业,自选题目。【摘要】本文以Java语言为载体,对并发的由来的原因、并发编程会带来什么问题、Java语言中对并发的支持做了简单阐述。致力于对并发方面搭建一个宏观上的知识体系,在并发的概述部分,简单介绍了硬件的发展,以及带来了什么问题,我们又是怎么解决这个问题的,以此引出并发的概念。在设计并发的进一步思考部分,介绍了要做到并发应该要从哪里入手,以及这么做会有什么问题,又该怎么解决。中间还穿插着介绍了Java语言特性的一些必要知识,以便之后了解实现原理的时候.原创 2021-02-25 23:38:00 · 270 阅读 · 0 评论 -
单例模式的各种情况简析
单例模式关键字:双重检验、禁止指令重排序、锁,反射、反序列化、枚举WHAT单例模式是指, 对象在内存中只存在一份实例,每次获取对象的时候,都是拿到的同一个内存地址的对象。WHY使用单例模式,可以避免频繁创建、销毁对象这样的开销,直接获取到地址值就可以。 另一方面,有可能我们每次需要的都是同一个对象,也就说有这样的业务需求,就比如 Spring 里默认的 bean 都是 singleton 模式的。HOW大体来说有 2 种方式实现。饿汉式类加载的时候就是直接进行实例初始化: 饿汉式。原创 2021-02-24 23:39:37 · 114 阅读 · 0 评论 -
从代码角度谈谈对注解的理解
注解 Annotation注解,简单来说就是对代码的一种增强技术,可以在源码期间、编译期间、运行期间获取到配置的注解信息,根据这些信息可以更加方便完成我们的目标。有关注解的一些信息都定义在 java.lang.annotation 包下面。@Target 注解:用这个注解来标记 我们定义的注解 可以用在什么地方。可取的值是一个ElementType 枚举类型:不用他, 表示可以在任何地方都可以使用@Retation 注解:我们写的 java 文件要经历 编译生成 .class 文件, 然后让原创 2021-02-23 23:52:50 · 187 阅读 · 0 评论 -
再谈对 Java 平台的理解
分 4 个部分来讲特性部分版本的更新应用未来的发展特性跨平台write once, run anywhere …运行一份代码的过程:编译期 : .java ===> .class运行时 : .class ===> 机器码. 分为 解释执行、编译执行解释执行: JVM 里有内置的解释器。 逐条读入,逐条执行。编译执行: JIT 编译器(Just-In-Time Completion),将热点代码 编译成 机器码。JDK9 时,引入 AOT原创 2020-06-16 09:52:28 · 101 阅读 · 0 评论 -
在 Java 里, 原来你是这样的 Stack!
提前声明:这里讨论的 Stack ,特指 Java 里的 Stack 类,在 Java 里,他的实现方法不好,并不是说这个数据结构不好。Stack 有什么问题并不是我们说 Stack 不好,就连 Java 官方也说过 Stack 这个类不好,应该用 Deque 接口来代替。可以看出, Stack 是继承了 Vector 这个类的,那么就会有 Vector 这个类里面相应的方法(除了 private 的之外)所以问题就来了。 我们所说的 Stack 是只能在一端进行 增加和删除 操作的一种数.原创 2020-06-06 18:44:33 · 224 阅读 · 0 评论 -
线程间的通信方法
锁和同步我们可以使用锁来保证同步。如果不同步的话,多个线程start后,他们的执行时间和顺序是不确定的。同步的意思就是 人为的确定 线程间的执行顺序; 可以用加 锁来解决。用 synchronized 关键字,可同步方法 或者 代码块。等待和通知在用锁的时候,如果我们访问的对象是被锁起来了的,这时就是处于 阻塞状态我们就需要不断的重新去尝试,直到拿到锁为止,这样就比较消耗性能和资源。可以用 等待 和 通知解决:Object 的 wait()、 notify()、 notifyAll()wa原创 2020-05-21 17:31:44 · 116 阅读 · 0 评论 -
Java 里的多线程极简入门
线程和进程的概念:一个进程可以看成是一个应用程序;线程可以看成进程里更细的划分,一个进程可以有多个线程,至少有一个主线程。(有多个 线路 可以执行,一个程序里面写了多个执行路径)单核CPU还不能说同时执行,一个CPU的核只能干一件事情,有多个事情的话,就看他的线程是怎么进行调度的了。如果是多核CPU,就可以同时干多个事情了。线程的调度方法:分时调度:每个线程分到相应的时间片,执行的时间到了时间片规定的时间,就按顺序切换另外一个线 程了。抢占式调度:线程有优原创 2020-05-21 15:09:06 · 111 阅读 · 0 评论 -
Java异常处理
第九节: 异常处理之前也写了一篇关于异常的,其实只看这篇也可以,这篇要比之前那篇详细一点点。。。异常的概述程序不可避免的会有bug,对于一些不符合逻辑的情况,我们就可以用 异常 来处理。一旦我们遇到了 异常(不正常、不符合逻辑) 的情况,系统就会自动的产生一个 异常类的实例化对象 来进行处理。(Java 是面向对象的语言,都是通过对象来解决问题。。。)Java 中的异常体系如下图:...原创 2020-05-07 23:36:02 · 130 阅读 · 0 评论 -
关于Java中的IO部分介绍
Java 的IO任何编程语言都要和文件打交道,都要有输入输出的操作。基于此,我们有字节、字符的输入、输出流的概念。输入输出的概念是相对的,一般我们都是站在编写的程序下的角度看的。我们还有 字节、字符的概念。字节:计算机存储东西,一般都是基于字节来存储的,也就是我们看到的五彩斑斓的电脑世界(比如说视频、图像、音频啊等等的),他们在内存中,在磁盘中,都是以 字节 的形式来存储的。(或...原创 2020-05-04 18:19:35 · 213 阅读 · 1 评论 -
面向对象03
第八节:面向对象高级记录现阶段感觉有用的知识点,查缺补漏。继承关键字 extends。Java 里的继承是 单继承。 一个子类 只能继承自 一个父类。子类的内存结构:类 都是在 堆 上分配内存空间的。 (创建子类对象时,都要先去看看有没有父类)只不过子类里有个 super( ) 的关键字,指向了父类的内存地址。也就是说,实现继承的手段,就是在子类的内存空间里,保存...原创 2020-04-29 22:25:36 · 123 阅读 · 0 评论 -
面向对象02
第7节:面向对象进阶记录现阶段,觉得有用的知识点封装用 权限修饰符 来控制访问权限。推荐用 private 权限修饰符控制(只有自己本类才可以操作),自己最了解, 不让类以外的东西来操作他们。权限修饰符类包子类不同包public√√√√protected√√√default√√private√this...原创 2020-04-28 14:50:22 · 107 阅读 · 0 评论 -
面向对象01
面向对象01记录一些写博客阶段认为有用的知识点面向对象的概念是对现实世界的理解加以抽象出来。把 数据和行为 组织成一个对象。面向过程 到 面向对象的转变,就是执行者(凡事亲历亲为) 到 指挥者(new一个对象,让对象来搞) 角色的转变。面向对象的 三大特征:封装、继承、多态。类和对象的关系可以类比于 图纸 和 实物 的关系。一个 .java 文件中...原创 2020-04-27 19:17:11 · 113 阅读 · 0 评论 -
Java中的 ArrayList、LinkedList、Vector
摘要极客时间里的Java核心技术系列,第8讲,记录一些笔记。关键词:Java 中关于 Collection 中的Vector是线程安全的,基于动态数组实现,和ArrayList差不多。...原创 2020-04-11 11:47:46 · 91 阅读 · 0 评论 -
Java中的int和Integer
摘要极客时间里的Java核心技术系列,第7讲,记录一些笔记。关键词:自动拆箱、自动装箱、缓存、静态工厂Java号称是一切接对象,对象都是引用类型,往往是分散的存储在堆的不同位置,所以就无法利用现代CPU的缓存机制。但是Java中也有基本数据类型的,在内存里就是一段连续的内存。基本数据类型和Java泛型并不能配合使用。Java 中的泛型是伪泛型,在编译期就转换为特定的类型了。所...原创 2020-04-09 22:38:14 · 293 阅读 · 1 评论 -
对Java中反射和动态代理的理解。
摘要极客时间里的Java核心技术系列,第5讲,记录一些笔记。关键词:introspect,proxy,asm,cglib,javassist,RPC,AOP(主要说的是对 动态代理 的理解)引入一般来说,编程语言有静态和动态之分,数据有强类型和弱类型之分。简单来说,语言类型信息在编译期检查的,就是静态语言;在运行期检查的,是动态语言。Java 是属于静态语言,强数据类型。但是...原创 2020-03-25 22:26:31 · 270 阅读 · 0 评论 -
对Java中String、StringBuffer、StringBuilder的理解
摘要极客时间里的Java核心技术系列,第5讲,记录一些笔记。关键词:final,compact Strings,intrinsic,永久代,元数据区,堆StringString类是我们最常用的一个类了,String类本身是 final 标记的。底层涉及到的知识及优化也有很多。JDK9中对 String 引入了 Compact Strings 的设计(完全用 byte[ ] 数组存储...原创 2020-03-24 23:13:59 · 131 阅读 · 0 评论 -
对Java中强引用、软引用、弱引用、虚引用的理解
摘要极客时间里的Java核心技术系列,第4讲,记录一些笔记。关键词:垃圾收集,引用计数,缓存,内存泄漏,可达性引用 可以用来 JVM的垃圾回收工作,通过引用判断 对象 是否存活。Java 堆中的对象,都有一个引用计数的属性,引用增加了1个,计数就加1。引用释放了1个,计数就减1。从JDK1.2开始,把引用划分为4个等级,就是题目所写的4个。所有引用类型,都是 java.lang...原创 2020-03-23 23:36:14 · 117 阅读 · 0 评论 -
对Java中 final、finally、finalize的理解
摘要极客时间里的Java核心技术系列,第3讲,记录一些笔记。关键词:final使用 final 来明确我们代码的语义,或者逻辑意图:final 修饰的类,不可继承。final 修饰的方法,不可重写。final 修饰的变量,不可改变但需要注意: final 变量 不等于 immutable, 比如:// final 只能约束 list引用 不能被重新赋值,但是list对象的行为...原创 2020-03-22 23:09:08 · 156 阅读 · 0 评论 -
对Java中的异常理解
摘要极客时间里的Java核心技术系列,第2讲,记录一些笔记。关键词:Throwabel,Error,Exception,Unchecked,Checked,日志。概述我们需要依靠异常处理机制来处理一些可能发生的意外情况,来保证程序的可靠性和健壮性。Java 里异常处理机制由 Throwable 类完成。他包括了 Error 和 Exception。 具体看下图:2条基本原则我们...原创 2020-03-21 22:23:06 · 116 阅读 · 0 评论 -
对Java平台的理解
摘要极客核心技术36讲系列,第1讲,看完之后的一些笔记。要有 知其然更要知其所以然 的学习态度。这篇文章主要是 记录了 Java的跨平台能力,或者说是Java的解释或编译运行的区别。关键词:解释,编译,热点代码,热点探测,计数器,JIT、AOT、代码爆炸2大特性:对Java来说,最显著的特性有2个:跨平台的能力。有垃圾收集器(Garbage Collection)。通过GC来...原创 2020-03-20 11:56:55 · 88 阅读 · 0 评论