- 博客(29)
- 收藏
- 关注
原创 HTTPS加密机制解析:如何为你的数据穿上“防弹衣”?
在Java生态中实施HTTPS安全需要:定期更新JCE Unlimited Strength策略文件使用Bouncy Castle等加密库增强算法支持通过Java Mission Control监控SSL/TLS性能使用OWASP Dependency-Check检查依赖安全实施JVM安全审计(-Djava.security.debug=ssl)
2025-03-17 19:36:41
421
原创 Java IO 与文件系统:File 类与流操作详解
File类:用于操作文件和目录的元数据。字节流和用于读写字节数据。缓冲流:通过缓存提高 IO 性能。文件系统:理解文件系统的基本概念有助于更好地管理文件和目录。在实际开发中,建议使用语句管理资源,并结合缓冲流提高 IO 效率。通过掌握这些知识,可以轻松应对文件操作和数据流处理的编程需求。
2025-03-10 14:44:25
625
原创 Java 线程池详解:参数、工作流程与常见线程池
线程池是 Java 并发编程的核心工具,合理配置线程池参数和选择拒绝策略,可以显著提高程序的性能和稳定性。通过Executors工具类,我们可以快速创建常见的线程池,但在实际开发中,建议根据业务需求自定义线程池参数,并结合监控工具(如 JConsole)观察线程池的运行状态。
2025-03-10 10:58:52
826
原创 Java 解决 TCP 粘包问题详解:原理与实战示例
发送方发送多个应用层数据包(如包A和包B接收方可能一次性读取到合并后的数据(如包A包B),导致无法区分原始包边界。解决 TCP 粘包问题的核心是明确数据包边界方案实现要点适用场景固定长度填充数据到固定长度数据长度固定的简单协议长度字段包头添加长度字段,使用ByteBuffer变长数据的高效传输分隔符定义唯一分隔符,处理转义文本协议或自定义协议实际开发中,可结合现有协议(如 HTTP、Redis)的设计思想,或使用高性能网络框架(如 Netty 的。
2025-03-09 16:56:17
1212
原创 深入理解 TCP 协议:可靠传输、连接管理与经典面试题解析
TCP 协议的复杂性体现在其精细设计的可靠传输机制、连接管理策略和动态调整算法。实际应用中需结合 Wireshark 抓包工具观察 TCP 行为,或通过netstat命令查看连接状态。
2025-03-09 10:57:52
1420
原创 Java线程池:原理、使用与最佳实践
/ 自定义线程池参数2, // 核心线程数5, // 最大线程数60, TimeUnit.SECONDS, // 空闲线程存活时间new ArrayBlockingQueue<>(10), // 任务队列容量为10new ThreadPoolExecutor.AbortPolicy() // 拒绝策略:抛出异常// 模拟20个请求i < 20;i++) {
2025-03-06 20:27:21
732
原创 Java TCP 通信:实现简单的 Echo 服务器与客户端
TCP 协议的特点:TCP 是一种面向连接的协议,保证了数据的顺序、可靠性和完整性,适用于需要可靠传输的应用场景。和 Socket:这两个类是 Java 中实现 TCP 通信的核心类。用于监听客户端连接,Socket用于表示客户端连接。多线程处理:为了支持多客户端并发连接,服务器使用线程池来处理每个客户端的请求。流操作和是 Java 中用于读写数据的核心类。通过Scanner和,可以方便地进行文本数据的读写。日志与调试:在实际开发中,打印日志是非常重要的,它可以帮助我们监控程序的运行状态,排查问题。
2025-03-05 23:05:09
545
原创 Java UDP 通信:实现简单的 Echo 服务器与客户端
通过实现这个简单的 UDP Echo 服务器和客户端,我们可以总结出以下知识点:1. UDP 协议的特点:UDP 是一种无连接的协议,不保证数据包的顺序、可靠性或完整性,但具有低延迟和低开销的特点。2. DatagramSocket和 DatagramPacket:这两个类是 Java 中实现 UDP 通信的核心类。`DatagramSocket` 用于发送和接收数据包,而 `DatagramPacket` 用于封装数据包的内容、地址和端口信息。
2025-03-04 22:16:10
342
原创 阻塞队列(java)
阻塞队列(BlockingQueue)是一个线程安全的队列,支持阻塞的插入和移除操作。它常用于生产者-消费者问题等多线程环境中。以下是一个简单的 Java 实现,展示了如何使用来实现一个基本的阻塞队列示例。
2024-08-07 21:21:45
548
1
原创 volatile关键字
关键字是 一个类型修饰符,用于指示编译器某个变量的值可能会在程序执行过程中被异步地改变。它的主要作用是防止编译器对这个变量进行优化,从而确保每次访问这个变量时都会从内存中读取最新的值,而不是使用寄存器中的缓存值。也用于标识那些在中断服务例程中可能被修改的变量。常用于表示直接映射到硬件寄存器的变量。这些寄存器的值可能会因为外部硬件事件而发生变化。,以确保每次访问这个变量时都直接从内存中读取它的最新值,而不是使用寄存器中的缓存值。可以用于确保不同线程之间对某些共享变量的可见性。:在处理中断的程序中,
2024-08-06 21:16:18
338
原创 Thread类中的run方法和start方法的区别
2.start调用方法后, start方法内部会调用Java 本地方法(封装了对系统底层的调用)真正的启动线程,并执行run方法中的代码,run 方法执行完成后线程进入销毁阶段。1. run方法是一个类中的普通方法,主动调用和调用普通方法一样,会顺序执行一次;1.run方法的作用是描述线程具体要执行的任务。2.start方法的作用是真正的去申请系统线程。方法有着重要的区别。
2024-07-27 10:30:22
331
1
原创 进程和线程之间的联系和区别
综上所述,进程和线程在资源拥有、执行调度、稳定性和通信方式等方面存在显著差异,但它们之间又通过资源共享、并发执行和CPU调度等机制紧密联系在一起。
2024-07-18 15:20:59
201
1
原创 C语言从预处理到编译的那点事
通过上述四个阶段的处理,C语言的源代码可以转换为可以在计算机上运行的可执行程序。每个阶段都有其特定的任务和输出,它们共同协作完成整个编译过程。到这里我就介绍完啦,如果有什么遗漏的欢迎各位大佬在评论区进行补充。
2023-10-26 15:50:03
146
1
原创 C语言实现通讯录
hello,各位小伙伴们好!我是鸿,今天带大家用C语言写一个通讯录。这个通讯录能用来存储个人信息包括:姓名、年龄、性别、电话号码和住址。它能实现的功能包括:1.添加联系人。2.删除联系人信息。3.查找联系人信息。4.修改联系人信息。5.对通讯录进行排序。6.显示通讯录里面所有联系人的信息。准备好了吗?那就请系好安全带,走起!
2023-10-22 13:06:17
725
1
原创 C语言自定义类型详解—(结构体、联合体、枚举、位段)
struct Book //struct 类型名字//书名//书号//价格//作者//这里的book1和book2就是两个struct Book类型的结构体变量struct Book //struct 类型名字//书名//书号//价格//作者//这里的book1和book2就是在声明结构体的同时时定义的两个struct Book类型的结构体变量struct//书名//书号//价格//作者//这里的book1和book2就是结构体变量。
2023-10-12 19:59:43
299
5
原创 字符函数(详解加模拟实现)
Hello,大家好!我是鸿,今天和大家一起学习几个关于字符的函数。strcat是字符追加函数,该函数有两个参数(dest,source),目标地址和源地址,用法:把源地址的字符串追加到目标地址的空间里面去。例1:把arr2里面的内容追加到arr1中。结果:追加规则:找到目标空间的结束位置,即‘\0’处,把原空间的内容追加过去,包括原空间里面的‘\0’。
2023-09-30 17:48:34
174
原创 C语言 指针讲解
int *p;//定义一个名为p的指向整型变量的指针char *str;//定义一个名为str的指向字符型变量的指针可以简单认为:数据类型+ “ * ”+名称就能定义一个指针变量。本文主要介绍了指针在C语言中的基本概念和用法。首先介绍了数据在计算机中的存储方式,以及指针的概念。其次详细讲解了指针的定义、初始化、赋值和解引用等基本操作,并介绍了指针的运算,包括指针+-整数和指针+-指针的运算。最后,介绍了指针和数组的关系,并提出了避免野指针的方法。本文适合C语言初学者和需要加强指针基础的读者阅读。
2023-08-14 13:56:49
167
原创 数据在内存中的存储
本篇文章主要介绍了计算机中数据类型的分类、大端存储和小端存储以及整型和浮点型在内存中的存储规则。其中了解了数据类型的分类,包括整型,浮点型,构造类型,指针类型和空类型。同时也了解了计算机中数据的存储方式,包括大端存储和小端存储。
2023-08-03 11:57:44
318
7
原创 操作符详解(C语言)
(加) , - (减) ,* (乘) ,/ (除) ,% (取余,模运算) ,++ (自增) ,– – (自减)首先介绍(+ - *)这几个,在C语言中,这几个操作符和数学里面的没有什么区别,注意乘号(*)即可。对于/ (除)如果该操作符两边的操作数为整数则执行整数除法,如果两操作数有一个及以上则执行浮点数除法对于% (取余,模运算)%操作符的两个操作数必须为整型,其计算 结果为左操作数整除右操作数后余数最后总结一下,对于算术操作符需要注意两边操作数的类型,对于位移操作符需要掌握移动规则。
2023-08-01 22:47:35
211
1
原创 C语言小游戏——扫雷(基础版,简单易懂)
在电脑上扫雷是一款非常经典的小游戏,也是一些操作系统自带的游戏之一。一般由多个正方形区块组成,其中有些区块隐藏着炸弹,而其他区块则显示数字,数字表示该方块周围8个格子中有多少个炸弹。玩家需要在不触雷的前提下,依靠数字推断出哪些方块是炸弹,然后标记出来。标记完所有炸弹后,玩家将在不触雷的情况下清空所有非炸弹的方块,游戏胜利。如果玩家在标记过程中触雷,游戏失败。
2023-07-27 12:00:38
309
2
原创 C语言入门级游戏——三子棋(超详细保姆级教学)
三子棋的游戏总体已经实现了,该游戏用到了二维数组,循环,switch语句已经随机数生成等知识点,由于本人所学有限,该代码的优化就靠各位大佬啦!
2023-07-25 22:46:46
827
原创 C——二分查找法及其应用
定义一个左指针和一个右指针,初始时左指针指向数组的第一个元素,右指针指向数组的最后一个元素。计算左右指针的中间位置,即 mid = (left + right) / 2。将中间位置的元素与目标元素进行比较:如果中间元素等于目标元素,则找到了目标元素,返回位置。如果中间元素大于目标元素,则目标元素必然在左半部分,更新右指针为 mid - 1。如果中间元素小于目标元素,则目标元素必然在右半部分,更新左指针为 mid + 1。4.
2023-07-22 16:30:09
218
原创 如何用C语言写一个有趣的猜数字小游戏?
首先由我们的电脑随机生成一个1到100的数字,然后我们可以在键盘输入自己心中 猜到的数字。接下来就是由电脑对你所输入的这个数字进行判断。如果你猜的数字不等于电脑所生成的那个数字,则电脑会提醒你所猜测的数字比实际的数字大还是小,直到你猜对为止。
2023-07-18 18:33:59
1057
2
原创 开始尝试写博客啦!
学习是需要有一个反馈的过程,在平时的学习中需要有一个途径来检查自己有没有学到知识,我认为写博客就是一个很好的方法 ,它既能在和他人分享,帮助他人的同时又能检验和巩固自己的学习,这也是我写博客的一个原因。既然已经踏上了这条道路,我希望能分享自己所学的知识,为后面的人探探路,少踩坑。本人比较热爱fps游戏,希望能通过自己的学习和努力也开发出一款属于自己的游戏,同时也希望能找一份比较好的offer和更多牛人交流探索。hello,我是鸿,这是我在优快云上发表的第一篇博客,写的可能不是很好,多多包涵。
2023-07-09 23:23:51
303
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人