自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 一起学Java(11)-[日志篇]教你分析SLF4J源码,掌握Logger接口实现类加载原理

​最近各种事情很忙,今天继续。在第十篇(一起学Java(10)-为项目引入Log框架(Log篇二-引入SLF4J接口层框架))中,我们为项目(https://github.com/lihongzheshuai/java-all-in-one)引入了SLF4J和Logback框架,按计划通过阅读源码研究下SLF4J的实现原理。

2024-08-29 12:25:04 233

原创 一起学Java(10)-[日志篇]教你为本项目引入SLF4J接口层框架

​在上一节一起学Java(9)-为项目引入Log框架(Log篇一-框架演进和设计逻辑中,我们已经理清了Java日志框架的演进过程、设计思想和核心框架。从这节开始,进入实战研究环节。​

2024-08-29 12:22:41 95

原创 一起学Java(9)-[日志篇]教你掌握Java日志框架的演进和设计逻辑

例如:在生产环境中,开发人员通常无法直接调试代码,日志提供了一个详细的执行轨迹,帮助开发人员重现问题。因此,在进入其他框架和代码研究前,我首先想到的就是先完成项目日志框架的引入,进一步夯实基础工作。例如:在生产环境中,开发人员通常无法直接调试代码,日志提供了一个详细的执行轨迹,帮助开发人员重现问题。因此,在进入其他框架和代码研究前,我首先想到的就是先完成项目日志框架的引入,进一步夯实基础工作。要完成Log框架的引入,首先要弄清楚有哪些框架可选以及框架之间的关系逻辑,进而完成框架对比和选型。

2024-08-27 22:46:23 246

原创 一起学Java(8)-[起步篇]教你如何进行本项目的PR和将IDE相关文件移除版本控制

我们的项目的第一个PR比我预想的来的早了很多。)的PR。今天就介绍一下这次PR和项目调整的主要内容。

2024-08-27 22:45:19 284

原创 一起学Java(7)-[起步篇]教你为本开源项目编写README文件

​在现代软件开发中,README文件是任何项目中不可或缺的一部分。它不仅为用户提供了项目的基本信息,还指导开发者如何使用、安装和贡献代码。其实,早在2014年的文章《为项目编写Readme.MD文件》中,我就提到过关于README的事情。今天为了我们的项目,旧事重提也为让大家再get一个知识点,我们再来说说这个README文件。

2024-08-24 23:28:07 470

原创 一起学Java(6)-[起步篇]教你掌握本协作项目中Gie和IDEA相关配置文件

​前两篇文章(《一起学Java(4)-java-all-in-one协作项目相关文件研究(Gradle篇-上)》和《一起学Java(5)-java-all-in-one协作项目相关文件研究(Gradle篇-下))》)我们已经完成了对项目中Gradle相关文件的研究,按照计划我们继续研究项目的其他配置文件,主要是Git和IDEA自身两类。

2024-08-24 23:26:45 226

原创 一起学Java(5)-[起步篇]教你掌握本协作项目中的Gralde相关配置文件(下)

​接上篇《一起学Java(4)-java-all-in-one协作项目相关文件研究(Gradle篇-上)》,本文继续研究项目中Gradle相关文件。​

2024-08-23 20:50:44 174

原创 一起学Java(4)-[起步篇]教你掌握本协作项目中的Gralde相关配置文件(上)

​将思绪拉回java-all-in-one项目,如果你fork并下载了代码,你会看到在项目中除了HelloWorldMain代码外,还存在很多文件。如果你并不了解他们的作用并有足够的好奇心,那你应该想要知道他们的作用。带着好奇,今天我也来研究一下,先从Gradle相关的开始。​

2024-08-23 20:48:10 177

原创 一起学Java(3)-Java项目构建工具Gradle和Maven场景定位和优缺点对比

在第一步创建的项目(java-all-in-one)项目里,我们提到了使用Gradle作为项目构建工具。看到这里,不知道你是否有疑惑,什么是项目构建工具。Java项目常用构建工具有哪些?都有什么特点?

2024-08-22 20:21:31 393

原创 一起学Java(2)-如何利用Github进行项目代码fork和协作同步

​在第一步中(一起学Java(1)-新建一个Gradle管理的Java项目)我们已经完成了项目的创建并托管到了Github上。现在自然要首先解决同学们如何下载代码和进行代码同步更新和联系的问题。这就涉及到Git的fork理念和协作模式的问题。具体介绍如下。​

2024-08-22 20:14:55 227

原创 白话Java - try-finally块

本文讲述的是Java中try finally代码块执行顺序,和当其存在于循环中的时候的跳出和执行问题。白话,也要简化,一段代码,来说明问题

2024-08-06 14:24:39 680

原创 白话Java - 守护线程

关于”白话”, 偶然想到的词。目的就是用简洁,明快的语言来告诉您,我所知道的一切。Java中的线程分两类,用户线程和守护线程。

2024-08-06 14:20:38 703

原创 Netty4自学笔记 (3) - Netty NIO Server和Client 样例说明

更新节奏缓慢,因为每晚学习注意力不够集中,学习进展缓慢。本还给自己找了一大堆其他理由,但摸着良心问自己,似乎只有这个理由说的通。

2024-08-03 11:47:59 979

原创 Netty4自学笔记 (2) - Java NIO

距离上一篇博文已经过去了半个多月。这期间有一周多的时间用在了准备单位举办的英语竞赛上。余下的时间沉迷于陪孩子玩耍和睡觉,日复一日。

2024-08-03 11:45:32 1074

原创 Netty4自学笔记 (1) - Java BIO

五六年过去了,Netty早已发展到了4.x系列,好奇也好,求知也罢,我打算重学Netty,虽然严格来说,我已不是IT从业人员,但我仍希望保留对技术的热爱与追求。

2024-08-02 08:26:09 745

原创 Java NIO框架Netty教程(十七) - Netty4 Hello world

最近很多人问我有没有Netty4的Hello World样例,很早之前知道Netty要出4,当时只知道4的包名完全边了,因为Netty从JBoss中独立出来了,并采用了新的netty.io的域名,但是没想到代码也有这么大的调整。

2024-08-02 08:23:26 789

原创 Java NIO框架Netty教程(十六)-ServerBootStrap启动流程源码分析

​有一段事件没有更新文章了,各种原因都有吧。搬家的琐事,搬家后的安逸呵呵。不过,OneCoder明白,绝不能放松。对于Netty的学习,也该稍微深入一点了。

2024-08-01 08:17:00 725

原创 Java NIO框架Netty教程(十五)-利用Netty进行文件传输

​如果您持续关注OneCoder,您可能会问,在《Java NIO框架Netty教程(十四)- Netty中OIO模型(对比NIO)》中不是说下节介绍的是,NIO和OIO中的worker处理方式吗。这个一定会有的,只是在研究的过程中,OneCoder发现了之前遗留的文件传输的代码,所以决定先完成它。

2024-08-01 08:13:32 1041

原创 Java NIO框架Netty教程(十四)-Netty中OIO模型(对比NIO)

这个周末搬家,并且新家目前还没有网络,本周的翻译的任务尚未完成,下周一起补上,先上一篇OIO和NIO对比的小研究。

2024-07-31 08:50:28 1156

原创 Java NIO框架Netty教程(十三)-并发访问测试(下)

​在上节(《Java NIO框架Netty教程(十二)-并发访问测试(中)》),我们从各个角度对Netty并发的场景进行了测试。这节,我们将重点关注上节最后提到的问题。在多线程并发访问的情况下,会出现错误警告。本文继续研究具体原因。

2024-07-31 08:24:51 751

原创 Java NIO框架Netty教程(十二)-并发访问测试(中)

​写在前面:对Netty并发问题的测试和解决完全超出了我的预期,想说的东西越来越多。所以才出现这个中篇,也就是说,一定会有下篇。至于问题点的发现,OneCoder也在努力验证中。

2024-07-30 08:46:16 640

原创 Java NIO框架Netty教程(十一)-并发访问测试(上)

之前更新了几篇关于JVM研究的文章,其实也是在做本篇文章验证的时候,跑的有点远,呵呵。回归Netty教程,这次要讲的其实是针对一个问题的研究和验证结论。另外,最近工作比较忙,所以可能会分文章更新一些阶段性的成果,而不是全部汇总更新,以免间隔过久。

2024-07-30 08:40:55 915

原创 Java NIO框架Netty教程(十)-Object对象的连续收发解析分析

​如果您一直关注OneCoder,我们之前有两篇文章介绍关于Netty消息连续收发的问题。(《Java NIO框架Netty教程(五)- 消息收发次数不匹配的问题 》、《 Java NIO框架Netty教程(七)-再谈收发信息次数问题 》)。如果您经常的”怀疑”和思考,我们刚介绍过了Object的传递,您是否好奇,在Object传递中是否会有这样的问题?如果Object流的字节截断错乱,那肯定是会出错的。Netty一定不会这么傻的,那么Netty是怎么做的呢?

2024-07-29 08:32:10 895

原创 Java NIO框架Netty教程(九)-Object对象编/解码

​看到题目,有的同学可能会想,上回不是说过对象传递了吗?是的,只是在《Java NIO框架Netty教程(八)-Object对象传递》中,我们只是介绍如何使用Netty提供的编/解码工具,完成对象的序列化。这节是想告诉你Netty具体是怎么做的,也许有的同学想自己完成序列化呢?况且,对象的序列化,随处可用:) 先看怎么编码。

2024-07-29 08:29:51 1085

原创 Java NIO框架Netty教程(八)-Object对象传递

说了这么多废话,才提到对象的传输,不知道您是不是已经不耐烦了。一个系统内部的消息传递,没有对象传递是不太现实的。下面就来说说,怎么传递对象。

2024-07-28 16:16:23 766

原创 Java NIO框架Netty教程(七)-再谈收发信息次数问题

​在《Java NIO框架Netty教程(五)- 消息收发次数不匹配的问题》里我们试图分析一个消息收发次数不匹配的问题。当时笔者还是心存疑惑的。所以决定先学习一下Java NIO的Selector机制。经过简单的了解,笔者大胆的猜测和”武断”一下该问题的原因。

2024-07-28 16:12:56 1045

原创 Java NIO框架Netty教程(六)-Java NIO Selector模式

看到标题,您可能觉得,这跟Netty有什么关系呢?确实,如果你完全是使用Netty的,那么可能你可以完全不需要了解Selector。但是,不得不提的是,Netty底层关于NIO的实现也是基于Java的Selector的,是对Selector的封装。所以,我个人认为理解好Selector对于使用和理解Netty都是很多有帮助的。当然,如果您确实不关心这些,只想会用Netty就可以了。那么下文,您可以略过:)

2024-07-26 08:38:28 1118

原创 Java NIO框架Netty教程(五)- 消息收发次数不匹配的问题

​不说废话了,好好学习。上回通过代码理解了Netty底层信息的流的传递机制,不过只是一个感性上的认识。教会你应该如何使用和使用的时候应该注意的方面。但是有一些细节的问题,并没有提及。

2024-07-26 08:29:37 594

原创 Java NIO框架Netty教程(四)- ChannelBuffer

​在字符串消息收发中提到。ChannelBuffer是Netty中非常重要的概念。所有消息的收发都依赖于这个Buffer。我们通过Netty的官方的文档来了解一下,基于流的消息传递机制。

2024-07-25 08:40:56 748

原创 Java NIO框架Netty教程(三)- 字符串消息收发

​了解了Netty的基本概念,开发起来应该会顺手很多。在“Hello World”代码中,我们只是在完成绑定的时候,在各自的本地打印了简单的信息,并没有客户端和服务端的消息传递。这个肯定是最基本的功能。在上代码之前,先补充一个Netty中重要的概念,ChannelBuffer。

2024-07-25 08:37:39 469

原创 Java NIO框架Netty教程(二) - 白话概念

HelloWorld的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什。方便自己以后更灵活的使用和扩展。声明,笔者一介码农,不会那么多专业的词汇和缩写,只能以最简单苍白的话来形容个人的感受和体会。如果您觉得这太不专业,笔者首先只能抱歉。

2024-07-24 22:13:58 573

原创 Java NIO框架Netty教程(一) - Hello Netty

/ 设置一个处理服务端消息和各种消息事件的类(Handler) bootstrap.setPipelineFactory(new ChannelPipelineFactory() { @Override public ChannelPipeline getPipeline() throws Exception { return Channels.pipeline(new HelloClientHandler());Netty框架是基于事件机制的,简单说,就是发生什么事,就找相关处理方法。

2024-07-24 21:37:35 732

原创 log4j日志封装说明—slf4j对于log4j的日志封装-正确获取调用堆栈

​日志是项目中必用的东西,日志产品里最普及应该就是log4j了。(logback这里暂不讨论。) 先看一下常用的log4j的用法,一般来说log4j都会配合slf4j或者common-logging使用,这里已slf4j为例。添加gradle依赖:

2024-07-23 21:43:13 641

原创 Java文件读取 jar包内文件读取

最近遇到一些Jar包内外配置文件读取的问题。索性自己测试总结一下,与大家分享。主要是关于ClassLoader.getResource和Class.getResource方法路径区别的问题

2024-07-23 21:37:41 410

原创 一起学Java(1)-新建一个Gradle管理的Java项目

一时兴起,也为了便于跟大家同步学习进展和分享样例代码,遂决定创建一个全新的Java项目,并通过Github与大家分享。本文就是记录该项目的创建过程以及其中的一些知识要点(如Gradle等)。为了紧跟技术潮流和提高操作效率,本项目通过IDEA直接创建,用Gradle进行配置管理和用Git进行版本管理,并托管到Github上。Github地址为:

2024-07-22 22:49:22 591

原创 Spring研究-容器初始化之FileSystemXmlApplicationContext构造函数

面对茫茫多的Spring的工程和代码,很多人可能会无从下手。其实想想,Spring也是有入口的,那就是配置文件的加载。Spring容器的构建完全是基于配置文件的配置的。不论是Web工程,还是普通的Java应用,加载Spring配置文件都是首要的工作。所以,我就从配置文件的加载学起。

2024-07-22 10:57:37 1000

原创 未初始化的String相 “+“ 为什么会打印出“nullnull“

今天在我的一个qq群里有人问了这样一个问题。 String c = a+b;System.out.println(c); a,b未初始化。输出为什么是nullnull

2024-07-21 08:45:22 770

原创 字节码分析-Java中String用==判断值相等一定是错的么

经常听到有同学讨论,在Java中String判断值相等应该用equals()而不能用==,并且分析的信誓旦旦。那么真相真的是这样么?==就完全不能用么?Java内部的原理究竟是如何呢?这需要理解它们背后的原理。

2024-07-21 08:33:27 822

原创 2024年主流使用的JDK版本及其核心特性介绍

​在群里交流的时候,经常遇到不同同学使用的JDK版本五花八门,并且很多不知道其使用版本的特点。作为Java开发者,理解不同JDK版本的核心特性和优势不仅能提高我们的开发效率,还能帮助我们更好地选择适合自己项目的版本。

2024-07-20 13:46:19 2636

原创 JDK安装包.exe和.msi差异

在Oracle官网下载Java Development Kit (JDK)安装包时,针对 Windows 操作系统,除zip压缩包外,安装包通常有两种格式:.exe 和 .msi。

2024-07-20 08:29:50 979

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除