自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 资源 (3)
  • 收藏
  • 关注

原创 2024java开发学习路线

别问,问就是Java已死!这是在2023年疫情解封后,市场经济低迷的情况下,有人对Java开发领域的质疑。然而,正是在这样的背景下,小伟按照以下的学习路线成功地获得了十几K的校招offer(小伟普本哈,985的学霸们当然不屑啦)。从零基础入门到可以找到工作的程度,至少需要准备一年半!科班出身,已经学习过java、数据库等一些课程,根据个人情况,时间适当减少。如果你正处于大三,那么现在正是你迎接挑战、开启职业生涯的最佳时机!如果你已经大四,正面临着找工作的焦虑,我建议你选择别的学科或者直接参加培训班!

2024-01-15 15:50:23 1380

原创 SpringSecurity + JWT(前后端分离)

想必大四的小伙伴们陆陆续续开始写毕业设计了,对于网络安全框架SpringSecurity在网上的资源都是前后端不分离的,这里记录一下小伟的前后端分离版。

2022-09-30 10:09:09 5509 5

原创 Java中的volatile

​ volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用synchronized所带来的庞大开销,倘若能恰当的合理的使用volatile,自然是美事一桩。为了能比较清晰彻底的理解volatile,我们一步一步来分析。首先来看看如下代码上面这个例子,模拟在多线程环境里,t1线程对flag共享变量修改的值能否被t2可见,即是否输出 “-----flag被设置为

2022-06-28 00:31:25 25053 12

原创 后端掌握Vue知识

Vue框架想要成为真正的“互联网Java全栈工程师”还有很长的一段路要走,其中前端是绕不开的一门必修课。1、简介概述Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用(SPA)提供驱动。1.1、前端分析Soc原

2021-11-01 20:36:23 3996

原创 ElasticsearchRestTemplate DSL日志打印

SpringBoot打印ElasticsearchRestTemplateDML日志

2024-09-20 13:44:32 788

原创 Arthas线上诊断神器-如何安装?

Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。那么我们该如何安装它呢?

2024-08-27 16:13:45 246

原创 AQS的同步队列和条件队列原理

AQS中的 同步队列 和 条件队列 是两种不同队列,同步队列主要用于实现锁机制(也就是锁的获取和释放),而条件队列用于实现条件变量,条件变量是并发编程中一种用于线程间通信的机制,它允许一个或多个线程在特定条件成立之前等待并释放相关的锁,直到其他线程改变了条件并显式的唤醒等待在该条件中的线程。比较典型的一个条件队列使用场景就是 ReentrantLock 的 Condition。

2024-08-10 16:26:48 754 1

原创 AQS为什么采用双向链表?

双向链表支持双向遍历,插入和删除更加灵活。

2024-08-07 09:58:43 483

原创 为什么不用浮点数表示金额?

在二进制中,1/2、1/4、1/8 都可以清晰地表示为小数,而 1/5 或 1/10 则是循环小数。因此,0.1 和 0.2(1/10 和 1/5)在以 10 为基数的系统中是清晰的小数,但在计算机使用的以 2 为基数的系统中则是循环小数。10 的素因数是 2 和 5。因此 1/2、1/4、1/5、1/8 和 1/10 都可以清晰地表示出来,因为分母都使用 10 的素因数。相比之下,1/3、1/6、1/7 和 1/9 都是循环小数,因为它们的分母使用素因数 3 或 7。这就是我们所熟知的浮点数。

2024-07-27 18:11:44 258

原创 PHP基础语法【上】

超详细php基础语法,上~

2024-06-18 19:30:23 788

原创 基于Spring Ai 快速创建一个AI会话

基于SpringAi对接ChatGpt实现一个简单的AI会话

2024-05-08 10:48:09 785 2

原创 IDEA新版本创建Spring项目只能勾选17和21却无法使用Java8的完美解决方案

我们知道IDEA页面创建Spring项目,其实是访问spring initializr去创建项目。我们可以通过阿里云国服间接创建Spring项目,将。想创建一个springboot的项目,使用Spring Initializr创建项目时,发现版本只有17~21,无法选择Java8。

2024-04-28 20:53:01 691

原创 Mac下XDebug安装

第一次碰到debug还要装插件的语言~

2024-04-19 11:41:16 1069

原创 Mac下brew安装php7.4

php是世界上最好的语言

2024-04-18 20:19:34 1763 1

原创 Homebrew安装与卸载

mac下安装homebrew

2024-04-18 20:06:25 438

原创 MySQL索引剖析【了解背后的数据结构】

MySQL官方对索引的定义为:索引是帮助MySQL高效获取数据的数据结构。即索引是数据结构,可以简单的理解为“排好序的快速查找数据结构”,满足特定查找算法,这些数据结构以某种方式指向数据。索引的作用相当于图书的目录,可以根据目录中的页码快速查找到所需的内容。

2024-03-24 12:34:13 1973 2

原创 5分钟搞懂MySQL存储引擎

存储引擎就是存储数据、处理和保护数据等技术的实现方式。(在物理上如何表示记录,怎么从表中读取数据,以及怎么把数据写入具体的物理存储器上,都是存储引擎负责的事情)

2024-03-14 14:03:54 980

原创 红警For Mac(RAM芯片可玩)

红警共和国之辉、尤里复仇

2023-12-05 11:14:17 950

原创 连接服务器的脚本

expect 是处理交互的一种脚本语言,spawn启动指定进程 -> expect获取指定关键字 -> send想指定进程发送指定指令 -> 执行完成后退出spawnexpectsendinteractsetputs。

2023-11-22 19:27:37 1123

原创 Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed解决

我们发现pdf中包含JPEG2000格式的图片时,图片将渲染不出来。原因是不能读取JPEG2000格式的图片,需要引入以下工具。通过查看日志发现以下报错。

2023-10-12 15:50:27 1017 1

原创 基于wechatpay-java实现微信支付JSAPI

相较于 v2 版本,v3 版本的接口文档在阅读上可能显得相对凌乱。它的组织结构可能不太清晰,难以快速理解整个流程。但是,一旦我们对基本流程有了大致了解,我们可以利用 wechatpay-java 来简化开发过程(一把梭哈)。

2023-10-06 21:44:54 3540 5

原创 手撸RPC【gw-rpc】

在之前的博文中,我们学习了Netty的基础知识,了解了其原理和组件。在本篇博文中,我们将结合实际案例,分享一个基于Netty的简化版RPC(远程过程调用)实现。通过这个案例,我们不仅可以学习Netty的使用和原理,还能够对RPC的设计有一个整体的学习。

2023-09-26 21:21:46 1312

原创 使用Java将PPT、PDF和html转换图片并上传OSS

最近小雨遇到了一个需求,需要在前端小程序中嵌入展示Office文件的功能。然而,前端使用开源组件进行在线预览会导致性能消耗较大的问题(转半天圈圈)。产品理想的效果是用户上传Office文件后,浏览起来与页面一样流畅。没错,作为服务端的老铁,可以提供更强大的计算资源和处理能力来支持前端小伙伴实现需求(We are a team🏠)!这种情况下,可以在服务端使用开源插件对文件进行预览切片,将文件的预览效果保持为一张一张的图片,用户预览时直接夹在图片即可。

2023-09-21 20:05:21 1499 1

原创 使用Netty进行协议开发:多协议支持与自定义协议的实现

在TCP/IP中,数据传输是通过流的方式进行的,这意味着数据被分割成一系列的数据包,并通过网络传输。这样的流式传输方式虽然高效,但没有明确的消息边界,因此在接收端需要一种机制来确定消息的开始和结束位置。协议的目的就是划定消息的边界,制定通信双方要共同遵守的通信规则。

2023-09-20 21:52:23 1148

原创 从源码角度解读xxl-job的工作流程

当涉及到理解和解读开源项目的源代码时,我们总是能够从中获得宝贵的知识和经验。本篇博客将带领大家深入探索xxl-job的源码,这是一个功能强大且广泛使用的分布式任务调度平台。通过深入研究xxl-job的源码,我们将揭开其内部的工作机制和设计原理。

2023-09-20 11:22:04 270

原创 快速学习Netty

Netty在Java网络应用框架中的地位就好比——Spring框架在JavaEE开发中的地位。哪些框架使用了Netty?Dubbo、gRPC、Spring5、Zookeeper、RocketMQ、ElasticSearch、Hadoop、Spark、Cassandra等,因为它们都有网络通信需求

2023-09-16 15:31:03 202

原创 探索Netty的EventLoop

EventLoopGroup,即“事件循环组”,是一组 EventLoop,channel 一般会调用 EventLoopGroup 的 `register` 方法来绑定其中一个 EventLoop,后续这个 channel 上的io事件都由此 EventLoop 来处理(保证了 io 事件处理时的线程安全)。EventLoopGroup继承 netty 自己的 EventExecutorGroup,实现了 `Iterable` 接口提供遍历 EventLoop 的能力,另有 `next()` 方法获取…

2023-09-07 20:10:30 309

原创 探索Netty的Channel

Netty 中的 Channel 可以看成网络编程中的 Socket,其提供了一系列 IO 操作的 API,比如 read、write、bind、connect 等,大大降低了直接使用 Socket 类的复杂性。同时也包含了 Netty 框架相关的一些功能,包括获取 Channel 的 EventLoop,获取缓冲区分配器 ByteBufAllocator 和 pipeline 等。

2023-09-06 15:36:56 207

原创 探索Netty的ByteBuf

ByteBuf 是 Netty 中的字节容器,它类似于 Java 中的 ByteBuffer,但是提供了更强大、更灵活的功能。ByteBuf 是一个可扩展的、可读写的字节容器,可以动态地分配和释放内存,支持零拷贝技术,同时具备高效的读写操作和内存管理能力。

2023-09-05 20:32:58 197

原创 探索Netty的Future&Promise

在异步处理时,经常用到这两个接口首先要说明 netty 中的 Future 与 jdk 中的 Future 同名,但是两个接口,netty 的 Future 继承自 jdk 的 Future,而 Promise 又对 netty Future 进行了扩展。

2023-09-05 15:35:43 510

原创 探索Netty的ChannelHandler

ChannelHandler 基于责任链模式实现,负责对IO事件进行拦截和处理, 也可以终止事件的传递。ChannelHandler 有两个重要的子接口:ChannelInboundHandler和ChannelOutboundHandler,分别拦截入站和出站的各种 I/O 事件。

2023-09-04 17:45:19 265

原创 探索Netty的ChannelPipeline

EventLoop可以说是 Netty 的调度中心,负责监听多种事件类型:I/O 事件、信号事件、定时事件等,然而实际的业务处理逻辑则是由 ChannelPipeline 中所定义的 ChannelHandler 完成的,ChannelPipeline 和 ChannelHandler应用开发的过程中打交道最多的组件,为用户提供了 I/O 事件的全部控制权。

2023-09-02 22:03:33 428

原创 快速掌握Java NIO

NIO,全拼是 non-blocking io,即 非阻塞IO。(网络上也有很多将NIO的N翻译成New,这是因为NIO是在Java 1.4版本中新增加的一种I/O模型。)与传统的I/O模型不同,NIO提供了一种基于缓冲区(Buffer)和通道(Channel)的I/O操作方式。NIO的主要优势在于它可以实现非阻塞式I/O操作,从而提高了系统的并发处理能力。在传统的I/O模型中,当一个线程在进行I/O操作时,其他线程会被阻塞,直到I/O操作完成。而在NIO模型中,线程可以继续执行其他的任务,而不必等待I

2023-08-25 18:05:25 770

原创 「实战教程」如何使用POI读取模板PPT填充数据并拼接至目标文件

在本篇博客中,我们将分享如何使用POI库读取模板PPT并填充数据,最终生成目标文件。我们参考了CSDN上的其他博客,结合具体代码进行演示,展示使用POI库操作PPT文件的方法和技巧。在使用POI库读取模板PPT并填充数据的过程中,我们需要先导入POI的相关jar包,然后通过SlideShow类读取模板文件,使用Slide类对PPT中的幻灯片进行操作,例如获取文本框、图片等元素,并使用TextRun类对文本框进行文本替换样式调整。在数据填充完成后,我们可以通过SlideShow类将填充好的幻灯片拼接至目标文件

2023-04-12 16:12:07 4499 11

原创 企业微信回调接口验签

企业微信提供了回调接口,允许企业服务商和企业应用接收到企业微信的事件通知和用户操作通知。在接收到回调通知时,需要进行验签操作,以确保通知的安全性和有效性。企业微信回调接口验签是保证回调通知安全性和有效性的重要步骤。在实际开发中,需要根据具体业务需求,进行验签操作的扩展和优化,以确保企业微信API的安全使用。

2023-03-30 20:29:40 662 2

原创 Maven生命周期、mvn命令、Maven插件

我们开发一个项目的时候,通常有这些环节:创建项目、编写代码、清理已编译的代码、编译代码、执行单元测试、打包、集成测试、验证、部署、生成站点等,这些环节组成了项目的生命周期,这些过程也叫项目的构建过程。​ maven将项目的生命周期抽象成了3套生命周期,每套生命周期又包含多个阶段,每套中具体包含哪些阶段是maven已经约定好的,但是每个阶段具体需要做什么,是用户可以自己指定的。

2023-03-30 17:53:28 521

原创 Maven依赖管理

maven中依赖的范围、依赖的传递、依赖的排除、继承、聚合、属性、版本管理、资源配置、多环境开发配置等

2023-03-30 17:48:55 1759

原创 Maven和Gradle的区别

Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。这里在详细的解释一下两个关键词:构建比如说去便利店买一杯冰美式,顾客只需要知道购买哪个产品,并不知晓产品的构建过程。构建就是将原材料整合一起制作成产品的过程。Java项目构建过程包含的主要的环节如下清理:删除上一次构建的结果,为下一次构建做好准备编译:Java 源程序编译成 *.class 字节码文件测试:运行提前准备好的测试程序报告:针对刚才测试的结果生成一个全面的信息。

2023-03-30 17:25:24 1026

原创 CentOS7.6快速安装Docker

CentOS7.6腾讯云服务器上演示快速安装Docker,以及配置镜像和安全卸载Docker!

2023-03-01 11:30:53 338

原创 RocketMQTemplate 实现消息发送

springboot整合RocketMQ,发送普通消息、过滤消息、同步消息、延时消息、批量消息、异步消息、单向消息、顺序消息、事务消息样例并分析源码。

2023-02-22 20:15:36 6242 2

个人整理的Spring、SpringMVC、MyBatis相关知识的思维导图

个人整理的Spring、SpringMVC、MyBatis相关知识的思维导图

2022-05-05

黄龚伟2019112118.zip

CSDN首页的静态页面源代码和课程设计报告!期末拿来用包过!

2021-11-18

JavaWeb书城项目源代码

Servlet和jsp实训项目

2021-06-11

空空如也

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

TA关注的人

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