自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Json的博客

I am an ordinary person, but what about it?

  • 博客(38)
  • 收藏
  • 关注

转载 DeepSeek搭建个人知识库教程

AnythingLLM:这是一个知识库管理的前端工具,提供从上传知识、向量化数据到检索增强生成(RAG)的全流程服务。它完全开源且免费,非常适合个人用户。DeepSeek R1:这是幻方量化推出的大模型,性能与 Claude 3.5 相当,但 Token 成本极低。在本次方案中,我们将使用 DeepSeek R1 作为推理模型。

2025-03-05 11:06:08 1247

原创 DeepSeek 入门指导手册——从入门到精通【2】

🌟 通过这些技巧,您可以从 0 到 1 构建自媒体运营的爆款内容生产线,吸引并留住您的受众!好了,本章节到此告一段落。希望对你有所帮助,祝学习顺利。如有问题,欢迎微信搜索【码上遇见你】。

2025-02-25 13:37:44 585

原创 DeepSeek 入门指导手册——从入门到精通【1】

文本内容:你好呀,我是 DeepSeek,非常高兴能与你相遇!无论是编写代码、处理文件,还是创作文案和创意内容,我都能为你提供帮助,快来把你的任务交给我吧~作用:用户首次进入界面时,会看到这段欢迎语。它清晰地阐述了 DeepSeek 的核心能力,如代码编写、文件处理、创意内容生成等,从而引导用户明确自己的需求并进行输入。

2025-02-24 10:04:16 917

原创 对HttpServletRequest中的Header进行增删

这个 Controller 很简单,把客户端的所有 Header,以 JSON 形似响应给客户端。// 遍历所有请求Header,响应给客户端。} }// 遍历所有请求Header,响应给客户端。// 遍历所有请求Header,响应给客户端。} }// 遍历所有请求Header,响应给客户端。} }

2024-09-23 10:27:35 1554 1

原创 【Tomcat源码分析】启动过程深度解析 (二)

前文已述,Tomcat 的初始化由 Bootstrap 反射调用 Catalina 的 load 方法完成,包括解析 server.xml、实例化各组件、初始化组件等步骤。此番,我们将深入探究 Tomcat 如何启动 Web 应用,并解析其加载 ServletContextListener 及 Servlet 的机制。【Tomcat 源码分析】揭秘 Tomcat 启动-初篇Tomcat 启动逻辑层层递进,各部件协同运作。

2024-09-18 09:03:31 1057

原创 【Tomcat源码分析 】 类加载机制的源码解读

方法是 Tomcat 类加载机制的核心,它负责初始化 Tomcat 的各个类加载器,构建起 Tomcat 独特的类加载体系。通过这个分析过程,我们不仅了解了 Tomcat 启动和类加载的具体步骤,更深刻地理解了 Tomcat 采用这种独特的多层级类加载机制的深层原因,以及这种设计带来的种种优势。这段代码的逻辑非常简洁,它在 WebApp 类加载器不存在的情况下,会创建一个新的 WebApp 类加载器,并将其设置为当前。类开始,一步步深入,最终揭开了 WebApp 类加载器的面纱。好了,本章节到此告一段落。

2024-09-10 09:49:22 416

原创 【Tomcat源码分析 】 类加载机制的源码解读

继前文深入剖析双亲委派机制之后,本文将引直接走进具体的代码实现,一探其真正的实现思路。源码阅读Tomcat 启动的起点在于 Bootstrap 类的 main()方法。在 main()方法执行之前,其静态代码块(static{})会率先被执行。因此,我们将首先深入探讨静态代码块的运行机制,然后再分析 main()方法的执行流程。static {// 获取用户目录// 优先从环境变量获取 CATALINA_HOMEif (home!

2024-09-09 10:01:54 1198

原创 【Tomcat源码分析 】“深入探索:Tomcat 类加载机制揭秘“

在探究 Tomcat 类加载机制之前,让我们重温一下 Java 默认的类加载器,加深对其的理解。如同作者在《深入理解 Java 虚拟机》第二版中所言,类加载机制对于理解 Java 运行时环境至关重要。Java 虚拟机将描述类的字节码数据从 Class 文件加载至内存,并对其进行严格的校验、转换解析和初始化,最终生成可供虚拟机直接执行的 Java 类型。这一过程便是虚拟机的类加载机制。

2024-09-05 12:48:17 962

原创 【Tomcat源码分析】Pipeline 与 Valve 的秘密花园

在上一篇《Tomcat 源码分析(二)》中,我们对 Tomcat 的 Pipeline 和 Valve 组件进行了初步的探讨,并绘制了其整体架构图。本篇将深入源码,对这些组件进行更加细致的剖析。经过对代码的深入剖析,我们发现其中蕴含着两种经典的设计模式模板方法模式: Pipeline 接口作为抽象类,定义了请求处理的整体流程骨架。StandardPipeline 作为具体子类,通过实现抽象方法来填充骨架中的细节,从而定制化请求处理过程。

2024-09-04 13:55:33 1100

原创 【Tomcat源码分析】生命周期机制 Lifecycle

Tomcat 内部,如同精密齿轮般运转着各种组件,彼此协作,构建起庞大的 web 服务器架构。在这错综复杂的体系中,Lifecycle(生命周期机制)犹如灵魂,贯穿始终,赋予组件生命,协调运作。在深入探究各组件之前,我们不妨先解开 Lifecycle 的神秘面纱,领略它如何赋予组件生命,以及它背后的实现原理。Lifecycle,实则是一台精密的状态机,以时间为轴,管理着组件从诞生到消亡的每个阶段。当组件处于STARTING或STARTED状态时,调用 start()方法如同石沉大海,毫无反应。

2024-09-02 09:12:25 980

原创 Tomcat源码分析 (一)----- 手撕Java Web服务器需要准备哪些工作

HTTP 是一种协议,全称为超文本传输协议,它使得 Web 服务器与浏览器能够通过互联网传输与接收数据,属于一种请求/响应的通信机制。HTTP 协议的底层依赖于 TCP 协议进行数据传输。目前,HTTP 已经演进至 2.x 版本,历经从 0.9、1.0、1.1 到如今的 2.x,每次迭代都为协议增加了许多新功能。在 HTTP 的通信模式中,始终由客户端发起请求,服务器接收到请求后处理相应的逻辑,并在处理完成后返回响应数据。客户端接收完数据后,请求流程结束。

2024-08-19 11:45:53 744

原创 ✅深入理解InnoDB中的页分裂与页合并

正如,如上所说。InnoDB 的数据页是存储引擎中用于保存数据的基本单位,通常大小为 16KB。B+树的每个节点对应着一个数据页,包括根节点、非叶子节点和叶子节点。B+树通过节点之间的指针连接了不同层级的数据页,从而构建了有序的索引结构。我们知道,B+树是按照索引字段建立的,并且在 B+树中是有序的。然而,如果索引字段的值并不是连续的,那么在 B+树的结构中会如何呢?假设现在我们要插入一个索引值为 3 的新记录,它需要按顺序插入到页号为 20 的数据页中,放在索引值为 1 和 2 的记录之后。

2024-07-08 09:24:21 1233

原创 MySQL数据库碎片化:隐患与解决策略

为什么我们经常说不建议使用简单的 UUID 做 ID,当唯一索引,其实很大原因就是因为不规则的 UUID 会导致存储碎片,接下来聊一聊 MySQL 为什么会有存储碎片,影响大不大。MySQL 中的数据库表常会出现物理存储碎片,特别是在频繁执行插入、删除和更新操作的情况下。这些操作会导致数据页中部分空间未被有效利用,或者导致数据在物理存储上排列不连续,进而形成碎片。碎片的主要来源包括频繁的 DML 操作,如插入(insert)、更新(update)、删除(delete)。

2024-07-05 09:11:25 1163

原创 MySQL中insertOrUpdate的功能如何实现的

insertOrUpdate在我们日常使用中比较常见,那么它是如何实现的呢,不知道大家有没有考虑过呢?在MySQL中,可采用语句实现insertOrUpdate功能。值得留意的是,在出现重复键时,会在先前索引值和当前值之间添加临时键锁,这可能导致死锁。若要使用INSERT INTO …举个例子:设想有一张student表,包括id、name和age三列,其中id是主键。现在要插入一条数据,若该数据的主键已存在,则更新该数据的姓名和年龄,否则插入该数据。

2024-06-07 13:33:11 1294

原创 对线面试官 - 硬件级别之再谈Volatile关键字的指令重排序

指令乱序执行机制:指令不一定拿到了就可以立马执行,比如有的执行需要网络通信、磁盘读写、获取锁等等,有的指令不是立马就执行的,为了提升效率,在现代的很多处理器里面走的都是乱序执行的机制。以上就是new对象的一个过程,但是JIT动态编译为了加快程序的执行速度,步骤2是在初始化一个对象实例(比如里面执行一些磁盘读写,网络通信等等),JIT动态编译则可能重排为。但是有个问题:就是在其它处理器可能会看到的一个视觉假象,就是有可能出现看到的load和store的执行顺序并非真实的执行顺序而是重排序的。

2024-06-05 09:47:31 291

原创 被追着问UUID和自增ID做主键哪个好,为什么?

UUID(Universally Unique Identifier)是一种全局唯一标识符,用于在同一时空中的各台机器上保证唯一性。UUID 的生成基于特定算法,通常使用随机数生成器或基于时间戳的方式。生成的 UUID 以 32 位 16 进制数表示,总共 128 位(标准 UUID 格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,共 32 个字符)。由于 UUID 是由 MAC 地址、时间戳、随机数等信息生成的,因此具有极高的唯一性,几乎不可能重复。

2024-05-29 09:01:17 1093

原创 面试官追问的STW,到底什么是STW?有什么影响?

STW,即的缩写,指的是系统在执行特定操作时需暂停(停止)所有应用程序线程。这个概念在早起文章中有提到过(如图)。也有在文章提到过(如图):所以感兴趣的小伙伴可以去看下往期文章。

2024-04-16 09:38:02 1187

原创 ✅MySQL执行大事务会存在什么问题?

之前在如何实现百万级数据从Excel导入中有提到一句不建议利用大事务进行一个错误处理。为什么不建议呢。本次来简单说一下。实现百万级数据从Excel导入到数据库的方式所谓大事务,通常指包含大量要执行的SQL语句和较长执行时间的事务。这样的大事务往往会带来诸多问题。如下:占用数据库连接:这一点很好理解。随着SQL语句的增多,执行时间也会相应延长。大型事务会持续占用数据库连接,由于数据库连接资源有限,长时间占用可能导致其他事务无法获取连接,从而降低系统的吞吐量,影响系统的可用性。

2024-04-15 10:26:52 588

原创 ✅实现百万级数据从Excel导入到数据库的方式

在处理过程中,并非每条数据都直接操作数据库,以免对数据库造成过大压力。此外,在这一过程中,需考虑数据重复问题,可在Excel中设定若干字段为数据库唯一约束。此外,在处理过程中,需要考虑并发问题,因此我们将使用线程安全的队列来存储内存中的临时数据,如ConcurrentLinkedQueue。为了提升并发处理能力,我们将百万级数据存储在同一个Excel文件的不同工作表中,然后通过EasyExcel并发地读取这些工作表数据。一般不推荐直接回滚操作,而是自动重试,若尝试多次仍无效,则记录日志,随后重新插入数据。

2024-04-12 09:43:15 1506 2

原创 ✅基于TTL 解决线程池中 ThreadLocal 线程无法共享的问题

在Java的并发编程领域中,ThreadLocal被广泛运用来解决线程安全困境,它巧妙地为每个线程提供独立的变量副本,有效规避了线程间数据共享的问题。不过,在使用线程池时,传递线程局部变量在父子线程之间并非易事。这是因为ThreadLocal的设计初衷仅在于线程内的数据隔离,无法支持跨线程间的数据传递。

2024-04-09 09:57:11 677

原创 @Transactional事务是真的好用吗

最后,本文观点或许不会得到所有人的认同,很多人可能会称:Spring官方推崇无侵入的声明式事务,你又有何资格质疑。老实说,初入职场的那几年,我也钟情于声明式事务,认为其简洁、“优雅”。觉得那些热衷于编程式事务的前辈多此一举,缺乏工匠精神。然而,随着线上遇到几次问题后的反思,我们发现,有时候你的代码确实优雅无瑕。然而,这种优雅也常伴随一些副作用,并且前辈们也无法指责我,因为我的做法确实无可指摘…因此,有些事情,只能在切身体会后才能领悟。

2024-04-07 11:19:10 326

原创 什么是单元测试,和集成测试有什么区别?

是指对软件系统中最微小的可测试单位进行验证的过程。一般由开发人员编写,目的在于验证代码的准确性与可靠性。其旨在尽可能覆盖代码中的每个功能单元,如函数、方法、类等,并透过测试框架与断言来检验这些功能单元的正确性。通常自动化完成的单元测试可以快速执行。,则是审视整个系统或特定模块的测试流程。其目标在于确认系统内不同模块之间的互动与协作是否规范。由测试人员编写,旨在验证整个系统是否符合需求与规范。集成测试一般需要将各个模块整合,并利用手动或自动化测试工具来执行验证。

2024-04-03 09:24:20 621 3

原创 你们单测覆盖率是如何统计的?原理是什么?

Java字节码插桩技术是指在编译期或运行期,通过修改Java字节码的方式,在代码中插入额外的代码。这种技术。

2024-04-02 09:18:45 922 1

原创 大型企业通常如何进行单元测试?

有效的单元测试》是一本非常值得推荐的读物。有需要这本书的,可到文末领取。

2024-04-01 10:46:55 341

原创 Redis不再 “开源”

根据新许可证的条款,托管 Redis 产品的云服务提供商将不再允许免费使用 Redis 的源代码。例如,云服务提供商只有在与 Redis(Redis 代码的维护者)达成许可条款后,才能向用户交付 Redis 7.4。Redis 将继续支持其庞大的合作伙伴生态系统(包括托管服务提供商和系统集成商),并独家访问 Redis 通过其合作伙伴计划开发和提供的所有未来版本、更新和功能。总的来说,对于使用 Redis 开源版本和新版本的 Redis 的最终用户(使用双重许可证进行内部或个人使用),没有任何变化。

2024-03-28 09:33:10 413

原创 实战篇-Docker 安装ELK(单节点)

文中的apps目录是在/home/ubuntu目录下。

2024-03-27 13:41:21 1232

原创 Java对象的存活是如何判断的呢?以及JVM如何回收已经消亡的对象

在过往的文章中主要讲述了JVM-Java虚拟机内存模型,接下来我们讲解一下Java对象在虚拟机中是如何判断存亡的,如何回收已经消亡的对象的呢。也就是Java及在Java虚拟机中主要关注的也就是Java堆中的对象,因为这里面存放了Java世界中几乎所有的对象实例,要想对已经失去意义的对象也就是已经消亡的对象进行回收之前首先就要判断, 哪些对象还“存活”着,哪些对象已经“死去”(“死去”即不可 能再被任何途径使用的对象)了。 说到这里就不得不引出两个比较重要的算法:在很多教科书素材中都是这样提到的:会在对象中

2022-07-04 08:48:21 426

原创 一篇文章带你对Java对象创建过程解密

Java对于我们来说,它就是一门编程语言。Java程序在运行过程中无时无刻不在创建对象,在代码层面其实就是一个简单的`new`的一个过程。但是底层实现逻辑并非如此。那么它究竟是如何进行创建对象的呢?接下来我们一起来一探究竟。...

2022-06-22 21:36:21 123

转载 springboot 集成 spring security 自定义登录

springboot 集成 spring security 自定义登录转载于:https://www.cnblogs.com/wuzhenzhao/p/13095714.html

2021-05-11 11:11:38 171

原创 前端vue项目部署到tomcat,一刷新报错404解决方法

公司前端写的后台部署到tomcatwebapps目录下后,无法进行刷新,一刷新就会报错404,自动跳的404页面。在网上查了下,官方说是HTML5 History模式引发的问题,但是解决方案中,并没有tomcat的解决方案。如链接:https://router.vuejs.org/zh-cn/essentials/history-mode.html废话不多说直接进入主题我使用的是Vue4.X当运行命令npm run build 后 会产生一下如图所示的文件然后直接将图片一中的dist .

2020-09-14 16:11:55 4287 4

原创 关于element-ui popover组件通过数据渲染出多个popover时点击取消时 popover的显示与隐藏问题

关于element-ui popover组件通过数据渲染出多个popover时点击取消时 popover的显示与隐藏问题废话不多说直接上代码 <template slot-scope="scope"> <el-button @click="editRowData(scope.row)" type="primary" size="mini" class="el-icon-edit" >&l

2020-09-07 14:26:04 1379 1

原创 可以在后台自动获取电脑信息的代码

废话不多说直接上代码 很有用。。。。。。。。。。。public String login(Model model, HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException { String remoteHost = null; String auth = request.getHeader("Authorization"); String usern

2020-07-16 13:38:22 553

转载 Java 通过telnet协议 操作远程交换机

/***@date 2015年2月4日 下午3:15:13*@author XUQIANG*@filename TelnetConnection.java*@package com.merit.monitor.device.parameter.sdk*/package com.merit.monitor.device.parameter.sdk;import java.io.BufferedReader;import java.io.IOException;import java.io.I

2020-06-24 11:00:50 980

转载 高效的找出两个List中的不同元素

package com.czp.util;import java.util.Collection;import java.util.HashMap;import java.util.HashSet;import java.util.LinkedList;import java.util.Map;/**该类提供对集合类的高效操作@author*/public class CollectionUtil { /** * 不允许实例化 */ priva

2020-05-27 08:31:24 359

原创 超简洁的jquery操作页面中iframe内的dom元素

超简洁的jquery操作页面中iframe内的dom元素超简洁的jquery操作页面中iframe内的dom元素超简洁的jquery操作页面中iframe内的dom元素jquery$("#iframe1").contents().find("#news_text").html("");iframe1:页面中的iframe的ID;news_text:iframe内需要被操作的元素的ID...

2020-04-27 09:12:31 293

转载 IDEA部署tomcat的web项目配置tomcat遇到的问题

IDEA下使用tomcat部署web项目很不错的文章:转载自https://www.iteye.com/blog/yangjianzhouctgu-2218382

2020-03-23 08:39:27 141

原创 Spring框架值spring容器的相关内容(一)

Spring容器创建对象的三种方式构造器方式实例化默认调用这个类型的无参构造 <bean id="标识" class="包名.类名"></bean>静态工厂方法实例化本质上调用一个静态方法,获取一个对象 <bean id="标识" class="包名.工厂类名" factory-method="静态方法名"></bean>...

2019-09-24 10:07:38 117

原创 JAVA代码根据IP/掩码位数格式地址段得到起始地址和结束地址,可用IP数量,掩码

JAVA代码根据IP/掩码位数格式地址段得到起始地址和结束地址,可用IP数量,掩码IP地址:将IP和掩码位数拆分计算子网掩码根据子网掩码获取开始IPIP可用数量(包含广播地址)根据ip地址和掩码获取结束IPIP地址:String network ="10.102.90.128/26";将IP和掩码位数拆分 String arr[] = network.split("/"); Strin...

2019-07-10 17:03:04 2067

空空如也

空空如也

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

TA关注的人

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