- 博客(21)
- 收藏
- 关注
原创 JUC编程03
newSingleThreadExecutor 和 newFixedThreadPool 本质都是使用无界队列,存在 OOM 风险;newCachedThreadPool 使用 SynchronousQueue,线程数不受限,存在线程爆炸风险,实际生产中应通过 ThreadPoolExecutor 自定义参数来创建线程池。线程池承载能力(吞吐极限) = maximumPoolSize + workQueue.capacity。
2026-02-03 21:55:38
677
原创 JUC编程02
总结:CyclicBarrier 用于协调一组线程在某个同步点相互等待,直到所有线程都到达后,再统一继续执行,并且支持在屏障触发时执行一个统一的动作,同时屏障可重复使用。总结:CountDownLatch 是一种同步工具,用于使一个或多个线程等待,直到其他线程完成一组操作,其内部通过一个不可重置的计数器实现线程间的协调。这样也是安全的,但是问题是:读和读也互斥,在**“读多写少”**的场景下,性能浪费很大。即时线程中途抛出异常,也必须释放许可,否则会“永久占坑”,导致死锁。
2026-02-03 21:54:42
724
原创 Java注解和反射
使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口。@interface用来声明一个注解。格式:public @interface 注解名 {定义内容}其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称。返回值类型就是参数的类型(返回值只能是基本类型,Class,String和enum)。可以通过default类声明参数的默认值。如果只有一个参数成员,一般参数名为value。
2025-12-09 20:37:08
612
原创 Java网络编程
地球村:地球村是互联网的发展;是信息网络时代的集中体现;是知识经济时代的一种形成,而现代交通工具的飞速发展,通信技术的更新换代,网络技术的全面运用使地球村得以形成。信封格式 >> (Ip数据报格式)什么是计算机网络?网络编程的目的:在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。
2025-10-17 15:33:28
755
原创 Java多线程
synchronized方法控制对“对象”的访问,每个对象对应一把锁,每个synchronized方法都必须获得调用该方法的对象的锁才能执行,否则线程会阻塞。多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。比如,食堂排队打饭,每个人都想吃饭,最天然的解决办法就是:排队,一个一个来。那是因为我们还没有习惯,用的多了,看习惯了,就好了。存在问题:多个线程操作同一个资源的情况下,存在线程不安全的问题,数据紊乱。
2025-10-10 20:37:06
645
原创 Java常用类
概念:在一个类的内部再定义一个完整的类。特点:编译之后可生成独立的字节码文件。内部类可直接访问外部类的私有成员,而不破坏封装。可为外部类提供必要的内部功能组件。基本数据类型所对应的引用数据类型。Object可统一所有数据,包装类的默认值是null。
2025-08-07 21:48:04
778
原创 Java异常
使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。创建自定义异常类。在方法中通过throw关键字抛出异常对象。如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要跑出给方法调用者的异常,继续进行下一步操作。再出现异常方法的调用者中捕获并处理异常。处理运行异常时,采用逻辑去合理规避同时辅助try-catch处理。
2025-08-01 21:15:29
908
原创 Java面向对象
面向对象编程(Object-Oriented Programming,OOP)以类的方式组织代码,以对象的方式组织(封装)数据。抽象封装继承多态从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。从代码的角度考虑是先有类后有对象。类是对象的模板。
2025-08-01 15:34:38
560
原创 java的数组
当一个数组中大部分元素都是0,或者为同一值的数组时,可以使用稀疏数组来保存该数据。记录数组一共有几行几列,有多少个不同值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模如下图:左边是原始数组,右边是稀疏数组// 1. 创建一个二维数组 11*11 0:没有棋子 奇数:黑棋 偶数:白棋// 初始化棋盘System.out.println("打印原棋盘:");System.out.println("打印稀疏数组:");
2025-07-22 21:31:36
1091
原创 Java的方法
Java的方法类似于其他语言的函数,是一段**用来完成特定功能的代码片段,**一般情况下,定义一个方法包含以下语法:**方法包含一个方法头和一个方法体。修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。返回值类型:方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。方法名:是方法的实际名称。方法名和参数表共同构成方法签名。参数类型:参数像是一个占位符。
2025-07-18 20:43:52
756
原创 Java流程控制
之前学习的基本语法中没有实现程序和人的互动,但是Java提供了这样一个工具类,可以获取用户的输入。java.util.Scanner是Java5的新特征,通过Scanner类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据。
2025-07-15 20:19:59
619
原创 Java的入门
1972年C诞生1982年C++诞生我们要建立一个新的语言1995年Java诞生1995年的网页简单而粗糙,缺乏互动性图形界面的程序(Applet)Bill Gates说:这是迄今为止设计的最好的语言!Java 2 标准版(J2SE):去占领桌面Java 2 移动版(J2ME):去占领手机Java 2 标准版(J2EE):去占领服务器大量的巨头加入他们基于Java开发了非常多的平台,系统,工具(三高问题:高可用、高性能、高并发)2006:Hadoop(大数据领域)
2025-07-01 20:17:29
717
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅