
Java编程思想
文章平均质量分 83
《Java编程思想》学习笔记
黄名富
他很懒,还没有添加介绍
展开
-
Java多线程基石—内存模型
Java Memory Model Java内存模型(JMM),定义了线程如何与内存交互及线程间的可见性、有序性和原子性。JMM屏蔽了各种硬件和操作系统的访问差异,保证Java程序在各种平台下对内存的访问都能保证一致效果。原创 2025-03-14 19:06:15 · 678 阅读 · 0 评论 -
计算机的三级缓存
CPU的处理速度远大于内存的吞吐速度,三级缓存是一种比内存读写速度更快的存储结构,用于缓解这种矛盾。原创 2025-03-11 20:15:00 · 706 阅读 · 0 评论 -
java 重点知识 — JVM存储模块与类加载器
jvm主要模块:方法区、堆、栈区、PC寄存器、本地方法栈;类加载器:负责将.class文件加载到jvm内存,并生成对应的Class<?>对象。原创 2025-03-05 22:24:27 · 1019 阅读 · 0 评论 -
【再探】Java—Java 沙箱机制与类加载器
沙箱(Sandbox)机制是将Java程序限定在JVM特定的运行范围内,并严格限制代码对本地系统资源的访问,以保证代码的有效隔离,防止对本地系统造成破坏。原创 2024-06-06 21:49:56 · 1311 阅读 · 0 评论 -
【再探】Java—HashMap原理
HashMap 不是线程安全的。底层实现的数据结构是:数组 + 链表 + 红黑树。当根据key 来获取键值时,根据key 的哈希值来快速定位其在数组中的位置,然后再在这个元素中的链条(或红黑树)中进行查找。HashMap 会自动扩展,但不会收缩。原创 2024-06-05 01:21:30 · 936 阅读 · 0 评论 -
【再探】Java—泛型
Java 泛型本质是参数化类型,可以用在类、接口和方法的创建中。原创 2024-05-24 01:20:02 · 968 阅读 · 0 评论 -
【再探】Java — 面向对象编程特性与内部类
封装、继承、多态及抽象是面向编程的四大特性。原创 2024-04-24 22:18:04 · 479 阅读 · 0 评论 -
一切都是对象
Java里的对象并非总是被垃圾回收。在Java中,垃圾回收器会负责释放对象占据的所有内存。而finalize()是用来释放通过创建对象方式以外的方式为对象分配了存储空间(在分配内存时可能采用了类似C语言的做法,而非Java中的通常做法,主要发生在使用“本地方法”的情况下)。原创 2023-07-23 10:13:36 · 84 阅读 · 0 评论 -
Java对象导论
对象具有状态、行为和标识。每个对象都可以拥有内部数据(它们给出了该对象的状态)和方法(它们产生的行为),并且每个对象在内存中都有一个唯一的地址(标识)。抽象过程就是在问题空间元素和解空间的对象之间创建一对一的映射。原创 2023-07-15 20:10:18 · 293 阅读 · 0 评论 -
Java线程池
服务端项目,经常需要处理执行时间很短而数目巨大的请求,如果为每一个请求创建一个新的线程,则会导致性能上的瓶颈。线程池核心原理是对线程对象进行管理,包括创建与销毁。图 线程池相关UML图。原创 2023-03-26 23:47:51 · 156 阅读 · 0 评论 -
java 并发集合
阻塞队列BlockingQueue,如果其是空的,从BlockingQueue中取数据的操作将会被阻塞,进入等待状态,直到BlockingQueue中添加了元素才会被唤醒。同样,如果BlockingQueue是满的,也就是没有空余空间,试图往队列中存放元素的操作也会被阻塞,进入等待状态,直到BlockingQueue有剩余空间时才会被唤醒。原创 2023-03-18 00:30:02 · 197 阅读 · 0 评论 -
定时器及单例模式
定时任务在Timer创建的线程中执行,而非创建新的线程。Timer使用队列列来保存线程。原创 2023-03-15 23:13:58 · 474 阅读 · 0 评论 -
Java 锁的使用
悲观锁:总是假设最坏的情况,认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改),所以每次在获取资源操作的时候都会上锁。乐观锁:总是假设最好的情况,认为共享资源每次访问的时候不会出现问题,线程可以不停执行,无需加锁,只是在提交修改的时候去验证对应的资源是否被其他线程修改了。原创 2023-03-13 00:04:20 · 907 阅读 · 0 评论 -
线程间通信
拥有相同锁的线程才可以实现wait/notify机制。它们都是Object类中的方法。wai使线程暂停运行,而notify通知暂停的线程继续运行。wait是使执行该方法的线程进行等待,在wait()所在的代码处暂停执行,并释放锁,直到接到通知或被中断为止。notify()也要在同步方法或同步块中调用,在调用前线程必须获得锁。执行notify()方法后,当前线程不会马上释放该锁,且等待状态的线程也并不能马上获取该对象锁。原创 2023-03-08 19:37:22 · 142 阅读 · 0 评论 -
对象及变量的并发访问
一个操作或者多个操作,要么全部执行并且执行过程不会被任何因素打断,要么就都不执行。原创 2023-03-01 22:46:47 · 166 阅读 · 0 评论 -
Java多线程技能
jvisualvm.exe,能监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。当前线程是指执行this.interrupted()方法的线程。守护线程是一种特殊的线程,当进程中不存在非守护线程时,则守护线程自动销毁。interrupt()中断线程,在线程中通过异常法来停止线程,能确定线程在哪里被停止及可以及时处理任务。比如A线程启动B线程,则B线程的优先级与A是一样的。原创 2023-02-24 01:55:57 · 93 阅读 · 0 评论 -
枚举与注解
所有的enum都继承自java.lang.Enum类,由于Java不支持多重继承,所以enum不能再继承其他类。原创 2023-02-04 17:16:46 · 100 阅读 · 0 评论 -
Java I/O系统
InputStream的作用是用来表示那些从不同数据源产生输入的类。这些数据包括:1)字节数组。2)String对象。3)文件。4)多线程中的数据源。“管道”,即从一端流入,从另一端输出。5)一个由其他种类的流组成吃的序列。6)其他数据源,如Internet连接等。FilterInputStream是用来提供装饰器类接口,以控制特定输入流(InputStream)。图 InputStream UML分析。原创 2022-11-13 21:15:35 · 214 阅读 · 0 评论 -
Java 数组与容器
HashMap基于散列表的实现,插入和查询“键值对”的开销是固定的。可以通过构造器设置容量和负载因子,以调整容器的性能原创 2022-11-03 00:38:59 · 254 阅读 · 0 评论 -
设计模式——享元模式
在程序设计过程中,有时需要创建大量或相似的对象实例,创建这么多的对象将耗费更多的系统资源。需要将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象,从而降低内存的消耗。原创 2022-10-29 11:02:57 · 349 阅读 · 0 评论 -
Java 泛型
无论在何时,只要你能做到,你就应该尽量使用泛型方法。原创 2022-10-26 19:57:26 · 4231 阅读 · 0 评论 -
Java类型信息
1,Java使用Class对象来执行其RTTI;2,每个类都有一个Class对象(新类和Class对象都保存在一个同名的.class文件中);3,一旦某个类的Class对象被载入内存,它就被用来创建这个类的所有对象;原创 2022-10-11 23:42:06 · 206 阅读 · 0 评论 -
Java正则表达式(正则表达式基础)
1)”-”(连字符)是一个特殊的元字符,它只有出现在[和]之间的时候才是元字符。字符集以外的地方,”-”只是一个普通字符;2)”^”的效果将作用于给定字符集合里的所有字符或字符区间,而不是仅限于紧跟在”^”字符后面的那一个字符或字符区间;[^a-z]:排除小写字母。^a-z: a-z 开头字符串。3)一般来说,当在字符集合里使用的时候,像”.”和”+”这样的元字符将被解释为普通字符,不需要转义,但转义了也没坏处。[\w.] 的效果与[\w\.]是一样的;原创 2022-10-04 07:31:36 · 290 阅读 · 0 评论 -
Java正则表达式
"语法是个难点,但它确实是一种简洁、动态的语言。它提供了一种完全通用的方式,能解决各种字符串处理相关问题:匹配、选择、编辑以及验证。”原创 2022-10-02 14:03:00 · 332 阅读 · 0 评论 -
Java内部类
内部类能访问其他外围对象的所有成员,不需要任何特殊的条件,还拥有其他的外围元素的访问权(包括private)。一个内部类无论嵌套多少层,它都能透明地访问所有它所嵌入的外围类的所有成员。原创 2022-09-15 23:06:53 · 210 阅读 · 0 评论 -
Java继承,多态,接口
“如何把变动的事务与保持不变的事物区分开来”,对于类库的开发,该类库的消费者如果知道该类库出现了新版本,也并不需要改写代码,而对于类库开发者来说必须有权限进行修改,并确保客户端代码不会因为改动而受到影响。原创 2022-09-10 12:03:41 · 909 阅读 · 0 评论 -
Java初始化与清理
对任何“活”的对象,一定能最终追溯到其存活在堆栈或静态存储区之中的引用。由此,从堆栈和静态存储区开始,遍历所有的引用,就能找到所有“活”的对象。对于发现的每个引用,必须追踪它所引用的对象,然后是此对象包含的所有引用,如此反复进行,直到“根源于堆栈和静态存储区的引用”所形成的网络全部被访问为止。所访问过的对象必须都是“活”的。...原创 2022-08-29 12:52:25 · 303 阅读 · 0 评论 -
Java运行过程
Java编译器将java源文件(.java)转换成字节码文件(.class),类加载器(ClassLoader)将字节码文件加载进内存,然后进行字节码校验,最后Java 解释器翻译成机器码。原创 2022-08-21 10:55:53 · 4155 阅读 · 0 评论