Java 应用启动时出现编译错误进程会退出吗?

背景

开发的尽头是啥呢?超超级熟练工!

总结最近遇到的一些简单问题:

  1. Java 应用的某个线程,如果运行时依赖的 jar 不满足,线程是否会退出?进程是否会退出?
  2. Netty 实现 TCP 功能时,换行符到底用的是什么呢?
  3. 表结构设计时,预留扩展字段的好处。
  4. Kafka 兼容矩阵汇总。

运行时编译错误

开发在本地测试时,IDEA 环境会严格要求依赖的满足,如果缺少依赖的 class 时,编译都通不过,更别说运行起来了。

但是,发布到服务器上的时候,外部依赖方式引用通过 -cp 类路径,如果对应依赖的包没有设置到类路径下时,应用会怎么样呢?

总结几种情况如下:
1)启动类依赖的 Jar 包缺失时,Java 应用启动时会报错,应用不会启动。

2)程序中 Jar 包缺失时,如果是多线程环境,且依赖该包的类只在某个线程中被引用的,那么它不会影响程序,进程不会退出的。

3)如果通过线程池提交任务,而任务依赖的包没被满足的话,这个任务会结束,但是线程池还在,进程还在。

4)程序运行过程中,行首的 import 语句的类找不到时,不会导致程序异常,甚至不会抛出异常来。尤其是用线程池的时候,它的 run 方法即使用 try-catch 也不会捕获到类不存在异常。

Netty 包解析换行符的作用

利用 Netty 自定义 TCP 请求解析时使用 channel.pipeline().addLast(new LineBasedFrameDecoder(65535)); 时,那么客户端发送数据必须使用换行符 \n 结尾才能被解析到。

确切地说,应该是用服务端操作系统的换行符,以下是客户端发送时的 demo ,必须以接收端的换行符结尾。

String line = System.getProperty("line.separator");
ByteBuffer buf = ByteBuffer.allocate(2048);

// TODO. 待发送的数据
byte [] data = "".getBytes();
buf.put(data, 0, data.length);
buf.put(line.getBytes());            

DOM 元素 ID 命名及影响

使用 jQuery 操作 html 节点时,节点的 ID 中不能有 . ,否则会无法识别目标节点、操作无效。

建表预留扩展字段

两年前参与实现的一个模块,支持 N 种服务类型,N 最初只有 3 种,实现的时候说可能不确定。

两年过去了,支持的服务扩展到了6种,还好当初建表的时候额外创建了6个 ext1.....6 的扩展字段,需求变一点,用一个扩展字段,今年4月竟然用完了6个扩展字段,一直没动过表结构。

建表时预留扩展字段的意识来自从业的第一家企业,那时项目中几乎每个表都有至少三个 ext 字段。刚入行时比较单纯,感觉这种设计思路很好,就一直记着,还是挺有用的!

Kafka 兼容矩阵

Kafka Server 的版本不确定,那么编写 Kafka 客户端应用时,如何选择 Kafka-client 版本呢?

在 Kafka 0.10.2.0 之前,Kafka 服务器端和客户端版本之间的兼容性是“单向”的,即高版本的 broker 可以处理低版本 client 的请求。

反过来,低版本的 broker 不能处理高版本 client 的请求。由于升级client要远比升级broker简单得多,因此这个限制给很多用户带来了麻烦,甚至有很多人都不愿意去升级broker版本——毕竟无downtime的情况下正确升级Kafka服务器是个不小的挑战。

自 0.10.2.0 版本开始,社区对这个问题进行了优化,0.10.2.0 之后用户可以简单地升级client端代码到这个版本就可以很容易地实现与低版本Kafka服务器的交互了。

《客户端兼容矩阵》
在这里插入图片描述
项目实践发现,Java 的 Kafka 客户端,client 3.4.0 几乎可以兼容 2.x 的 Server 端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/781334.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STL复习-序列式容器和容器适配器部分

STL复习 1. 常见的容器 如何介绍这些容器,分别从常见接口,迭代器类型,底层实现 序列式容器 string string严格来说不属于stl,它是属于C标准库 **底层实现:**string本质是char类型的顺序表,因为不同编译…

CC2530寄存器编程学习笔记_点灯

下面是我的CC2530的学习笔记之点灯部分。 第一步:分析原理图 找到需要对应操作的硬件 图 1 通过这个图1我们可以找到LED1和LED2连接的引脚,分别是P1_0和P1_1。 第二步 分析原理图 图 2 通过图2 确认P1_0和P1_1引脚连接到LED,并且这些引…

项目/代码规范与Apifox介绍使用

目录 目录 一、项目规范: (一)项目结构: (二)传送的数据对象体 二、代码规范: (一)数据库命名规范: (二)注释规范: …

【0基础学爬虫】爬虫框架之 feapder 的使用

前言 大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0…

mac|Mysql WorkBench 或终端 导入 .sql文件

选择Open SQL Script导入文件 在第一行加入use 你的schema名字,相当于选择了这个schema 点击运行即可将sql文件导入database 看到下面成功了即可 这时候可以看看左侧的目标database中有没有成功导入table,如果没有看到的话,可以点一下右上角的…

Bert入门-使用BERT(transformers库)对推特灾难文本二分类

Kaggle入门竞赛-对推特灾难文本二分类 这个是二月份学习的,最近整理资料所以上传到博客备份一下 数据在这里:https://www.kaggle.com/competitions/nlp-getting-started/data github(jupyter notebook):https://gith…

【JavaEE】多线程进阶

🤡🤡🤡个人主页🤡🤡🤡 🤡🤡🤡JavaEE专栏🤡🤡🤡 文章目录 1.锁策略1.1悲观锁和乐观锁1.2重量级锁和轻量级锁1.3自旋锁和挂起等待锁1.4可…

AI大模型的智能心脏:向量数据库的崛起

在人工智能的飞速发展中,一个关键技术正悄然成为AI大模型的智能心脏——向量数据库。它不仅是数据存储和管理的革命性工具,更是AI技术突破的核心。随着AI大模型在各个领域的广泛应用,向量数据库的重要性日益凸显。 01 技术突破:向量数据库的内在力量 向量数据库以其快速检索…

TypeError: Cannot read properties of null (reading ‘nextSibling‘)

做项目用的Vue3Vite, 在画静态页面时,点击菜单跳转之后总是出现如下报错,百思不得其解。看了网上很多回答,也没有解决问题,然后试了很多方法,最后竟然发现是template里边没有结构的原因。。。 原来我的index.vue是这样…

自注意力 公式解释

公式 (\mathbf{y}_i f(\mathbf{x}_i, (\mathbf{x}_1, \mathbf{x}_1), \ldots, (\mathbf{x}_n, \mathbf{x}_n)) \in \mathbb{R}^d) 描述了自注意力机制中单个词元的输出表示如何生成。我们来逐步解释这个公式: 输入序列 (\mathbf{x}_1, \mathbf{x}_2, \ldots, \math…

2024吉他手的超级助手Guitar Pro8中文版本发布啦!

亲爱的音乐爱好者们,今天我要来和你们分享一款让我彻底沉迷的软件—Guitar Pro。如果你是一名热爱吉他的朋友,那么接下来的内容你可要瞪大眼睛仔细看哦!👀🎶 Guitar Pro免费绿色永久安装包下载:&#xff0…

《昇思 25 天学习打卡营第 11 天 | ResNet50 图像分类 》

《昇思 25 天学习打卡营第 11 天 | ResNet50 图像分类 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 计算机视觉-图像分类,很感兴趣 且今日精神颇佳,一个字,学啊 上一节&…

【数据结构】经典链表题目详解集合(反转链表、相交链表、链表的中间节点、回文链表)

文章目录 一、反转链表1、程序详解2、代码 二、相交链表1、程序详解2、代码 三、链表的中间节点1、程序详解2、代码 四、回文链表1、程序详解2、代码 一、反转链表 1、程序详解 题目:给定单链表的头节点 head ,请反转链表,并返回反转后的链…

STM32实现硬件IIC通信(HAL库)

文章目录 一. 前言二. 关于IIC通信三. IIC通信过程四. STM32实现硬件IIC通信五. 关于硬件IIC的Bug 一. 前言 最近正在DIY一款智能电池,需要使用STM32F030F4P6和TI的电池管理芯片BQ40Z50进行SMBUS通信。SMBUS本质上就是IIC通信,项目用到STM32CubeMXHAL库…

基于ROS的智能网联车远程交互软件,全UI无需记忆指令,剑指核心原理。

基于ROS的智能网联车远程交互软件,全UI无需记忆指令,剑指核心原理。 服务于中汽恒泰,伟大的项目,希望看官点赞,谢谢~~ 进程(节点)列表化,参数面板化,实现快速机器人配置…

SpringMVC(2)——controller方法参数与html表单对应

controller方法参数与html表单对应 0. User实体类 import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable; import java.util.Date; import java.util.List; import java.util.Map;public class User implements Serializable {private …

CosyVoice - 阿里最新开源语音克隆、文本转语音项目 支持情感控制及粤语 本地一键整合包下载

近日,阿里通义实验室发布开源语音大模型项目FunAudioLLM,而且一次包含两个模型:SenseVoice和CosyVoice。 CosyVoice专注自然语音生成,支持多语言、音色和情感控制,支持中英日粤韩5种语言的生成,效果显著优于…

apk反编译修改教程系列-----修改apk 解除软件限制功能 实例操作步骤解析_3【二十二】

在前面的几期博文中有过解析去除apk中功能权限的反编译步骤。另外在以往博文中也列举了修改apk中选项功能权限的操作方法。今天以另外一款apk作为演示修改反编译去除软件功能限制的步骤。兴趣的友友可以参考其中的修改过程。 课程的目的是了解apk中各个文件的具体作用以及简单…

JavaWeb—Servlet

概述 Javaweb的核心就是围绕servlet Servlet就是一个接口, 定义了java类 被浏览器访问到(tomcat识别)的接口 将来就是自己写一个类 ,实现servlet接口 ,重写方法 执行过程 当服务器接收到客户端浏览器的请求后&#xff…

【机器学习】机器学习与时间序列分析的融合应用与性能优化新探索

文章目录 引言第一章:机器学习在时间序列分析中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 自回归模型1.2.2 移动平均模型1.2.3 长短期记忆网络1.2.4 卷积神经网络 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 A…