Java
文章平均质量分 92
Java 基础与核心知识点
郎涯技术
微信搜一搜:【郎涯技术】关注我。
卖码为生,有代码洁癖。不爱广度,爱深度 — 专注分享Java / 在线教育 / 视音频领域等技术。
想和你一起,每天进步一点点,做一个不凡的人!
展开
-
线程池抛出异常 捕获不到怎么办
https://mp.weixin.qq.com/s/VfReAqovJwmn5IoadC_7ug,郎涯进行简单排版与补充在实际开发中,我们常常会用到线程池,但任务一旦提交到线程池之后,如果发生异常之后,怎么处理?怎么获取到异常信息?在了解这个问题之前,可以先看一下 线程池的源码解析,从源码中我们知道了线程池的提交方式:submit 和execute 的区别,接下来分别使用他们执行带有异常的任务!看结果是怎么样的!运行结果:可以看到:submit 不打印异常信息,而 execute 则会打印异常信息。转载 2023-04-28 11:45:00 · 1246 阅读 · 0 评论 -
常见内存溢出与CPU 100%问题
另外提一个参数也很有用,正常来说如果程序出现 OOM 之后,就是有代码存在内存泄漏的风险,这个时候即使能对外提供服务,其实也是有风险的,可能造成更多的请求有问题,所以该参数非常有必要,可以让 K8S 快速的再拉起来一个实例。因为 “AaAa” 和 “BBBB” 的 hash 值相同,会定位到用一个 bucket 中,这样就形成了 CAS 嵌套,产生死循环问题。通过 print 命令将线程 PID 转为 16 进制,根据该 16 进制值去打印的堆栈日志内查询,查看该线程所驻留的方法位置。原创 2023-04-29 09:30:00 · 1535 阅读 · 0 评论 -
Java 零拷贝是什么
什么是零拷贝传统的 IO 执行流程零拷贝相关的知识点回顾零拷贝实现的几种方式java 提供的零拷贝方式零拷贝字面上的意思包括两个,“零”和“拷贝”:合起来,那零拷贝就是不需要将数据从一个存储区域复制到另一个存储区域。做服务端开发的小伙伴,文件下载功能应该实现过不少了吧。如果你实现的是一个web程序,前端请求过来,服务端的任务就是:将服务端主机磁盘中的文件从已连接的 socket 发出去。关键实现代码如下:传统的 IO 流程,包括 read 和 write 的过程。流程图如下:[外链图片转存失败,源站可能有转载 2022-12-07 08:00:00 · 381 阅读 · 0 评论 -
实战 工作中常见的设计模式
平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中,我都使用过哪些设计模式。假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码:这个代码可能会存在哪些问题呢?说得专业一点的话,就是以上代码,违背了面向对象编程的开闭原则以及单一原则。如果你的代码就是酱紫:有多个等条件分支,并且每个条件分支,可以封装起来替换的,我们就可以使转载 2022-06-17 08:00:00 · 1065 阅读 · 0 评论 -
Java Annotation注解总结
使用注解注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”。注解则可以被编译器打包进入class文件,是一种用作标注的“元数据”。注解类型从JVM的角度看,注解本身对代码逻辑没有任何影响,如何使用注解完全由工具决定。Java的注解可以分为三类:第一类是由编译器使用的注解,例如:@Override:让编译器检查该方法是否正确地实现了覆写@SuppressWarnings:告诉编译器忽略此处代码产生的警告这类注解不会被编译进入.class文件,它们在编译后就被编译器扔掉了。第原创 2021-10-21 11:00:37 · 270 阅读 · 0 评论 -
Java Reflection反射机制 一篇就懂了
反射是为了解决在运行期,对某个实例一无所知的情况下,如何调用其方法反射机制优缺点:优点可以让咱们的代码更加灵活、为各种框架提供开箱即用的功能提供了便利缺点让我们在运行时有了分析操作类的能力,这同样也增加了安全问题。比如可以无视泛型参数的安全检查(泛型参数的安全检查发生在编译时)。另外,反射的性能也要稍差点,不过,对于框架来说实际是影响不大的。Java Reflection: Why is it so slow?应用场景像咱们平时大部分时候都是在写业务代码,很少会接触到直接使用反.原创 2021-10-21 10:57:59 · 313 阅读 · 0 评论 -
Java IO流学习总结(1万字)
序列化 vs 反序列化如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。简单来说:序列化: 将数据结构或对象转换成二进制字节流的过程反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应原创 2021-10-21 10:47:06 · 515 阅读 · 1 评论 -
Java Generics泛型 看这一篇就够了
Java使用擦拭法实现泛型,编译器内部永远把所有类型T视为Object处理使用泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型就是编写模板代码来适应任意类型泛型的好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查注意泛型的继承关系:可以把ArrayList向上转型为List(T不能变!),但不能把Li.原创 2021-10-21 10:41:09 · 531 阅读 · 0 评论 -
史上最全的 Java 集合容器详解(3万字)
集合概述为什么要使用集合数组有如下限制:数组初始化后大小不可变数组只能按索引顺序存取而集合提高了数据存储的灵活性,Java 集合不仅可以用来存储不同类型不同数量的对象,还可以保存具有映射关系的数据Java 集合概览Java 集合也叫作容器,定义在 java.util 包中,支持泛型。主要是由两大接口派生而来:一个是 Collecton 接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。Java 集合使用统一的 Iterator 遍历,尽量不要使用遗留接口。注:图原创 2021-10-21 10:34:06 · 793 阅读 · 0 评论 -
Java8 用法优雅的函数式编程与stream,看这一篇就够了!
Java 不支持单独定义函数,但可以把静态方法视为独立的函数,把实例方法视为自带 this 参数的函数。Java 平台从 Java 8 开始,支持函数式编程。函数式编程(Functional Programming)就是一种抽象程度很高的编程范式,把函数作为基本运算单元,函数可以作为变量,还可以返回函数。Java 8 中的函数(方法)是“值”的一种新的形式,可以将方法作为参数进行传递。而作为参数进行传递的方法主要是 Lambda表达式 和 方法引用。其中:单方法接口被称为 FunctionalIn原创 2021-07-28 14:34:09 · 2966 阅读 · 2 评论 -
Java 多线程详解
多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。 一. 线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:Java线程具有五种基本状态 新建状态...原创 2015-05-31 11:40:57 · 914 阅读 · 0 评论 -
Jsp与Servlet区别
Servlet 编程是纯粹的 java 编程,而 jsp 则是 html 和 java 编程的中庸形式。jsp 就是在html里面写java代码,servlet 就是在 java 里面写 html 代码。其实 jsp 经过容器解释之后就是 servlet。只是我们自己写代码的时候尽量能让它们各司其职,jsp 更注重前端显示,servlet 更注重模型和业务逻辑。不要写出万能的 jsp 或 serv...转载 2018-12-25 18:22:30 · 451 阅读 · 0 评论 -
Java 事件监听器
事件 事件是用户在界面上的一个操作(通常使用各种输入设备,如:鼠标、键盘等来完成)。 当一个事件发生时,该事件用一个事件对象来表示。事件对象有对应的事件类。不同的事件类描述不同类型的用户动作。事件类包含在java.awt.event和javax.swing.event包中。 事件源 产生事件的组件叫事件源。在一个按钮上单击鼠标时,该按钮就是事件源...原创 2015-05-28 21:15:42 · 1732 阅读 · 0 评论 -
Java 集合类详解
一、容器类介绍① Java容器类都可以自动地调整自己的尺寸。② Collection 接口是一组允许重复的对象。③ Set 接口继承 Collection,不允许重复,使用自己内部的一个排列机制。④ List 接口继承 Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。⑤ Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有...原创 2015-05-29 07:35:31 · 1223 阅读 · 0 评论 -
Java String字符串的格式化
JDK1.5中,String 类新增了一个很有用的静态方法 String.format(): format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。 format(String format, Object... args) 使用指定的格式字符串和参...原创 2015-05-14 22:03:30 · 1066 阅读 · 0 评论 -
Java 销毁对象
终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的。使用终结方法会导致行为不稳定、降低性能,以及可移植性问题。 在Java中完成这样的工作主要是依靠try-finally机制来协助完成的,然而Java中还提供了另外一种被称为finalizer的机制,使用者仅仅需要重载Object对象提供的finalize方法,这样当JVM的在进行垃圾回收...原创 2015-05-16 06:44:49 · 2625 阅读 · 0 评论 -
Java 包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。 包装类均位于java.lang包,包装类和基本数据类型的对应关系如...原创 2015-05-16 07:41:53 · 985 阅读 · 0 评论 -
Java String字符串的操作
在Java中,String类包含有50多个方法来实现字符串的各种操作。字符串变量必须初始化后才能使用,如果声明时赋值为null,则声明的字符串的值为null,否则表示未初始化的状态。以下介绍一些我们需要经常使用的方法。 (1)字符串的连接 public String concat(String str) 该方法的参数为一个String类对象,作用是...原创 2015-05-14 20:37:26 · 1241 阅读 · 0 评论 -
Java Arrays类对数组的常用操作
1、数据的遍历public class TestClass { public static void main(String[] args) { /*二维数组,每一维可以不一样*/ int a[][] = new int[][]{{1,2,3},{4,5,6},{8,9,10,7}}; Arrays.sort(a[2]); for(int i=0; i<a.le原创 2015-05-15 07:37:50 · 4815 阅读 · 0 评论 -
Java 内部类
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。 内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。 注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部...转载 2015-05-26 21:08:58 · 650 阅读 · 0 评论 -
Java 开发环境的搭建
JDK VS JRE JDK:Java Development Kit,是Java的开发环境,包含开发所需要的工具 JRE:Java Runtime Environment,是Java的运行环境,作用是运行Java程序 Java知识点 Java是通过JVM来执行字节码文件 Java是跨平台的,因为JVM不是跨平台的,每个操作系统...原创 2015-05-09 22:24:39 · 920 阅读 · 0 评论 -
Java 高精度的大数字运算
为了解决Java基本数据类型在运算时会出现的溢出和计算不精确的问题。Java 提供了两个类BigInteger和BigDecimal,专门用于进行高精度运算。凡是能用int 或float 做的事情,用BigInteger和BigDecimal也可以做,只是必须换用方法调用,而不是使用运算符。高精度整数BigInteger BigInteger支持任意精度的整数,也...原创 2015-05-19 07:06:27 · 5832 阅读 · 0 评论 -
Java Object类
一、概述 Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。在不明确给出超类的情况下,Java会自动把Object作为要定义类的超类。可以使用类型为Object的变量指向任意类型的对象。Object类有一个默认构造方法pubilc Object(),在构造子类实例时,都会先调用这个默认构造方法。 Obj...原创 2015-05-25 21:03:23 · 685 阅读 · 0 评论 -
Java instanceof
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。 用法: result = object instanceof class 参数: Result: 布尔类型。 Object:...原创 2015-05-25 21:21:57 · 986 阅读 · 0 评论 -
Java 类的继承
1. 继承的概念 继承在本质上是 特殊 —— 一般 的关系,即常说的is-a关系。子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法。在Java中使用extends关键字来标识两个类的继承关系。 2. 继承中的初始化顺序 从类的结构上而言,其内部可以有如下四种常见形态:属性(包括类属性和实例属性)、方法(包括类方法和实例方法)、构造器和初...原创 2015-05-25 20:25:25 · 762 阅读 · 0 评论 -
Java与C++的异同之语言基础
1. 包声明 一个Java应用程序是由若干个类组成的,文件名必须和类名同名。package为包的关键字,用于声明类所在的包。2. 基本数据类型 对于long型值,若赋给的值大于或小于int型值范围,则需要在数字后添加L或l,表示该数值为长整型。 默认情况下小数都被看作double型,若使用float型小数,则需要在小数后面添加F或f。 布原创 2015-05-11 21:15:04 · 908 阅读 · 0 评论