
java学习笔记
文章平均质量分 58
哈密瓜刨冰
好好学习,用心分享
展开
-
网络相关基本概念
区分当前主机上的指定的应用程序(进程)。一台主机上使用网络的程序有很多,可以通过端口号区分主机收到的数据要交给哪个程序处理使用。把功能定位类似的协议放在一层,并约定好层和层之间的交互关系。协议之间不能随意相互交互,只有相邻的层之间才可以。进行一切通信的基础。通信至少要有两个主机,让接收方能理解发送方的数据,双方要按照同样的规则构造/解析数据。网络传输的信号有光信号/电信号/电磁波。封装就是把上层的数据,加上头部(或尾部),形成下层可识别的新数据格式。服务器是一个持续运行、等待并响应客户端请求的程序或设备。原创 2025-04-12 15:03:33 · 415 阅读 · 0 评论 -
File 类的用法和 InputStream, OutputStream 的用法
File[] listFiles() 返回 File 对象代表的目录下的所有文件,以 File 对象表示 如果想看到所有目录和文件,需要递归。进行文件系统操作,使用路径进行初始化表示具体的文件(可以存在,也可以不存在),基于这个对象进行后续操作。IDEA会自动转换。void deleteOnExit() 根据 File 对象,标注文件将被删除,删除动作会到 JVM 运行结束时 才会进行。read() 读一次返回一个字节的内容(byte) 实际返回类型是int,读取完毕是-1 .使用循环读取文件所有内容。原创 2025-04-07 22:27:28 · 585 阅读 · 0 评论 -
文件操作和IO
狭义的文件:硬盘上的文件以及保存文件的目录(文件夹)(本章所指)广义的文件:计算机的硬件设备、软件资源在操作系统中都会被视为“文件”。例如标准输入(键盘)stdin、标准输出(控制台)stdout、打印机、网卡:和内存对比机械硬盘 顺序读写效率较高,随机读写效率较低,因为磁头移动需要时间。固态硬盘不存在上述 物理结构,更接近于“内存”,通过大规模集成电路,实现存储功能。操作系统专门有一个模块“”,通过“文件资源管理器”观察文件系统管理的文件。文件目录结构是”树形结构“。分隔符分隔目录和目录。原创 2025-04-06 18:58:34 · 821 阅读 · 0 评论 -
锁策略, cas 和 synchronized 优化过程
1.1 常見的鎖策略 預測鎖衝突概率 樂觀鎖:加鎖的時候,假設出現鎖衝突的概率不大。圍繞加鎖做的工作會更少。 悲觀鎖:加鎖的時候,假設鎖出現衝突的概率很大。圍繞加鎖做的工作會更多。 synchronized “自適應” 初始是樂觀的。鎖衝突達到一定程度就會轉變爲悲觀的。 加鎖開銷(時間開銷) 重量級鎖 輕量級鎖 挂起等待鎖:悲觀鎖/重量級鎖的一種典型實現。讓出cpu資源,過一段時間通過其他途徑得知,再伺機而動。 自旋原创 2024-09-24 03:41:36 · 588 阅读 · 0 评论 -
綫程池構造函數
此处的ThreadFactory就可以针对线程池里的线程工厂设计模式是一种在创建类的实例时使用的设计模式。程序员使用的时候,通过形如“submit”这样的方法,把要执行的任务设定到线程池里。初始情况下,可能有M个线程,实际使用中,发现M不太够用,就会自动增加M的个数。核心线程数+非核心线程数的最大值為最大线程数核心线程,会始终存在于线程池内部。非核心线程,繁忙的时候,被创建出来,不繁忙了,空闲了,就会把这些线程真正释放掉。在Java标准库的线程池中,就把里面的线程,分成两类。原创 2024-09-22 17:40:04 · 463 阅读 · 0 评论 -
线程安全问题
synchronized是JVM提供的功能,通过c++代码实现,进一步的依靠操作系统api实现的加锁。操作系统api来自于cpu上支持的特殊指令实现的。修改操作,不是”原子“的。原子是指在cpu视角不可分割的最小单位:一条指令。java中提供了synchronized关键字,来完成加锁操作。synchronized (locker) 锁任意对象。synchronized (this) 锁当前对象。针对第三个原因,把”非原子“的修改变成”原子“{}里的就是要打包到一起的代码。一个线程针对一把锁连续加锁两次。原创 2024-08-23 14:54:44 · 215 阅读 · 1 评论 -
Java 线程的几种状态
TERMINATED:Thread对象虽然还在,但是内核的线程已经销毁(线程已结束)TIMED_WAITING:有超时时间的等待,如sleep和带参数join。NEW:Tread对象有了,但是未start,内核的线程还没有。RUNNABLE:就绪,正在cpu运行和随时可以去cpu上运行。WAITING:没有超时时间的阻塞等待,join/wait。BLOCKED:锁竞争引起阻塞。原创 2024-08-22 14:17:22 · 220 阅读 · 0 评论 -
Thread 类的基本用法
一个Thread对象,只能对应系统中的一个线程,只能调用一次start。如果已经调用过start,则进入到其他状态,接下来执行start都会抛出异常。start调用系统函数,真正在系统内核中,创建线程(创建PCB,加入到链表中)。currentThread()是Thread的静态方法,能获取到调用这个方法的实例,类似于this。run描述了线程要执行的任务,也可以称为”线程的入口“。让后结束的线程等待先结束的线程结束,先结束后阻塞才解除。操作系统对于线程执行时随机调度,抢占式执行的过程。原创 2024-08-22 14:15:59 · 318 阅读 · 0 评论 -
只出现一次的数字 Java题解
除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。如有解释不清的地方,欢迎评论探讨!这里运用了hashset的思想。原创 2024-05-31 17:42:37 · 254 阅读 · 1 评论 -
Java哈希表代码
array数组是哈希表 默认了哈希冲突的阈值是0.75。以上,如果有解释不到位的地方欢迎留言探讨!这是一个内部类,并给出初始化。原创 2024-05-30 16:04:02 · 142 阅读 · 0 评论 -
继承多态 知识要点
继承 extendsclass 子类 extends 父类子类就可以不定义父类当中的成员了使代码重复使用继承之后要添加新成员,否则无意义,自己的成员优先super 指定告诉编译器访问的父类中的成员,构造方法没有被继承,需要super调用。和this一样不能出现在static方法中。super()调用父类的构造方法。必须要在第一行,并且不能和this()同时出现不同包中的子类用super引用java不支持多继承 ,有接口final 常量,方法不能被重写组合 把一个类作为另一个类的成员。原创 2024-03-21 23:05:15 · 330 阅读 · 0 评论 -
类和对象 java 要点总结
使用**import static**导入包中静态的方法和字段 static修饰的在方法区,不属于对象,通过对象的引用来访问会警告,应该通过类名来访问,属于类。- **包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式**,**在同一个工程中允许存在相同名称的类,只要处在不同的包中即可**- 包:域名逆置 package可查看 src底下为默认包 **为了更好的管理类,把多个类收集在一起成为一组,称为软件包**。- 普通代码块/局部代码块 定义在方法中,不需要条件,直接执行。原创 2024-03-19 13:37:19 · 409 阅读 · 0 评论 -
数据类型与运算符 java
public static void main(String[] args){ //快捷键:psvm main//sout常见代码补全: 如上 按tab或者回车ctrl+d 复制。原创 2024-03-17 10:53:20 · 402 阅读 · 0 评论