- 博客(80)
- 资源 (1)
- 收藏
- 关注
原创 【mysql】配置的模块化管理
主配置(如mysqld.cnf)通常保留 MySQL 安装时的默认核心配置(如端口、数据目录、用户),避免直接修改主配置导致误操作。自定义配置(如字符集、连接数、日志设置)可以单独写在conf.d/目录下的文件中(如),按需添加/删除,不影响主配置。!是 MySQL 配置的“模块化管理工具”,核心价值是分离默认配置与自定义配置、分类管理不同功能配置、适配系统升级,让 MySQL 配置更灵活、易维护。日常使用中,推荐将自定义配置(如字符集、性能优化、日志)放在conf.d/下,无需改动主配置,降低维护风险。
2025-11-21 11:12:28
456
原创 【mysql】将数据源从windows 迁移到 ubuntu的过程
要将 Windows 系统的 MySQL 数据源迁移到 Ubuntu 系统的 MySQL,核心思路是,全程保证 MySQL 版本兼容、字符集一致,避免数据乱码或结构损坏。
2025-11-21 11:05:31
684
原创 【SqlServer】日志文件无法收缩的解决方法
正常情况下,不要轻易的收缩日志文件,但是日积月累,日志文件太大,造成硬盘空间不足,不得已去收缩时,却发现收缩不了,那是因为在还原的完整模式下活动事务一直使用日志,所以无法收缩。
2025-11-11 23:02:51
294
原创 【English】您只知道 look at 表示 “看” 这一种意思吗?
含义类型具体意思关键语境特征例句浓缩基础(视觉)朝……看有明确观察对象(人/物)基础(视觉)查看、检查为确认细节(文件/身体等)引申(抽象)考虑、思考针对问题、方案、人选引申(抽象)看待、对待强调态度、视角引申(数值)达到、高达描述价格、年龄等数值。
2025-09-25 22:16:27
671
原创 【Java】spring 中类注册 六种方式
Spring 提供了多种 Bean 注册方式:1)注解驱动自动扫描(@Component及其派生注解);2)Java配置类(@Configuration+@Bean),适合第三方类注册;3)XML配置文件(传统方式);4)@Import注解(批量/动态导入);5)BeanDefinitionRegistryPostProcessor(底层动态注册)。这些方法覆盖了声明式、编程式及动态注册场景,可根据项目需求灵活选择。
2025-09-25 17:02:20
1035
原创 【nginx】在ubuntu上的安装
通过以上步骤,即可在 Ubuntu 系统中成功安装并使用 Nginx 1.28 版本。若需自定义模块,可在。在浏览器中输入服务器 IP,若看到 “Welcome to nginx!” 页面,说明安装成功。从 Nginx 官方网站下载 1.28 版本(可通过。步骤添加对应参数(参考官方文档)。
2025-09-23 16:13:31
957
原创 【Java】Ubuntu上发布Springboot 网站
本文介绍了在Ubuntu系统上部署Spring Boot应用的三种方法。首先需要安装Java环境(推荐OpenJDK 17)。方法一:直接运行JAR包,适合测试环境,使用java -jar命令启动;方法二:通过Systemd管理,适合生产环境,支持开机自启和状态监控;方法三:使用Docker部署,实现环境隔离,需编写Dockerfile并构建镜像。文章详细说明了每种方法的操作步骤,包括文件上传、服务配置、日志查看等,并提供了端口开放和配置环境变量的建议。生产环境推荐后两种方法,其中Docker方式更便于环境
2025-09-18 16:25:19
452
1
原创 【English】情态动词
英语中的情态动词(Modal Verbs)是一类辅助动词,主要用于表达说话人的语气、态度(如能力、可能性、必要性、请求等),本身有词义但不能独立作谓语,需后接动词原形构成谓语。
2025-09-17 20:57:08
540
原创 【English】复合句中的先行词在从句中是否充当成分
先行词是定语从句的修饰对象,而关系词的作用是替代先行词并在从句中充当成分,因此先行词的语法功能通过关系词在从句中体现。若先行词在从句中不充当任何成分,那么该从句就不是定语从句,可能是同位语从句(同位语从句中的先行词不充当成分,仅作从句的内容说明)。定语从句(先行词充当成分):The newsis true.(先行词“the news”在从句中作宾语)同位语从句(先行词不充当成分):The news。
2025-08-22 11:28:26
730
原创 【网络】http 协议中 Vary 标头的作用
Vary标头是 HTTP 缓存机制的“精准导航仪”,通过定义响应依赖的请求头部,确保缓存服务器能正确区分不同场景的响应版本,既提高缓存效率,又避免返回错误内容。在内容协商、设备适配等场景中,Vary是保障缓存正确性的核心工具。
2025-08-21 17:26:40
502
原创 【网络】OSI 七层模型通俗理解:从用户到信号的全流程分工
OSI七层模型将网络通信分为七个层级,每层分工明确:物理层(信号传输)、数据链路层(相邻设备通信)、网络层(跨网络路由)、传输层(可靠数据传输)、会话层(连接管理)、表示层(数据格式转换)、应用层(用户服务)。数据从上层向下传递时逐层封装,接收时反向解封。该模型如同快递运输流程,各司其职确保数据准确送达,是网络通信的基础框架。(149字)
2025-08-19 10:17:04
1868
1
原创 MIME(多用途互联网邮件扩展)
通配符类型*/*表示任意类型,type/*表示某大类下的所有子类型(如image/*表示所有图像类型)。自定义 MIME 类型:某些应用会定义私有类型(如),但需双方约定才能正确解析。
2025-08-14 18:09:26
1188
原创 HTTP 协议详细介绍
HTTP 是一种无状态的应用层协议,基于请求-响应模式工作:客户端发送请求,服务器接收后处理并返回响应。其设计初衷是传输超文本(如 HTML 文档),但随着互联网发展,已扩展到传输图片、视频、JSON 等各类数据。
2025-08-13 14:07:58
847
原创 Java:Springboot + jwt 实现带权限的认证(不使用spring security)
不使用spring security, 使用spring boot + jwt 实现轻量级的带权限的认证
2025-08-13 09:57:22
511
原创 Java: 关键字 final 、 static 和 构造代码块
关键字 final 和 static的作用和注意点。构造代码块的作用和使用场景,以及 和静态代码块的区别
2025-08-11 11:20:49
785
原创 Ant风格的通配符
Ant风格是一种通配符匹配模式,最初源自Apache Ant(一个Java构建工具),后来被广泛应用于Spring、Servlet等众多框架中,用于路径匹配(如URL路径、资源文件路径等)。Ant风格的特点是简洁直观,特别适合处理层级结构的路径匹配,因此在各类框架中被广泛采用。),即匹配单层路径中的任意内容。
2025-08-08 16:11:25
432
原创 Java:过滤器和拦截器的区别
过滤器是 Servlet 级别的“全局拦截”,适合处理容器层面的通用逻辑,不依赖 Spring。拦截器是 Spring MVC 级别的“业务拦截”,适合处理与 Spring 集成的业务逻辑,功能更灵活。实际开发中,两者可配合使用(如 Filter 处理编码和跨域,Interceptor 处理接口权限)。
2025-08-08 11:40:49
1188
原创 Java:自定义一个jwt 工具类
本文通过自定义JWT工具类CustomJwtUtils,演示了如何生成和验证JWT令牌。该工具类包含生成Token、验证Token功能,采用HMAC-SHA256算法进行签名,并实现了Base64编解码、JSON转换等辅助方法。文中指出实际开发中通常会使用成熟的jwt库(如jjwt、java-jwt等),但通过手动实现可以加深对JWT原理的理解。文章还提供了相关技术文章的参考链接,包括Token、数字签名等基础知识。
2025-08-08 10:41:47
1581
原创 Base64 是什么?
Base64是一种将二进制数据编码为64个可打印字符的编码方式,主要用于在文本协议(如HTTP)中安全传输二进制数据。其核心原理是将每3字节数据拆分为4个6位块,映射到A-Z、a-z、0-9、+、/等字符。编码后数据长度会增加约1/3,并用=填充不足部分。常见应用场景包括电子邮件附件、URL参数和数据存储等。虽然Base64能避免二进制数据与协议控制符冲突,但它不具备加密功能,且会导致数据膨胀。主流编程语言均提供Base64支持,使用时需注意编码对象应为二进制数据而非字符串。
2025-08-07 14:44:54
1480
原创 信息安全: 数字签名signature
数字签名是一种用于验证数字信息(如文件、消息、交易等)真实性、完整性和发送者身份的技术,本质上是传统手写签名在数字世界的安全替代方案。它通过密码学手段,确保信息在传输或存储过程中未被篡改,且能证明发送者的身份(防止抵赖),它的核心功能就两个字:认证。
2025-08-04 14:23:23
516
原创 Java:注解(Annotation)
开发者可根据需求定义自己的注解,需使用@interface关键字,并结合元注解指定其行为。// 元注解:指定注解的保留周期和可修饰的元素// 注解的"属性"(类似方法声明,可指定默认值)String value() default "操作日志";// value是特殊属性,使用时可省略属性名// 使用@Log注解,可指定属性值(value可省略属性名)@Log("用户登录")// 业务逻辑。
2025-08-01 17:08:39
883
原创 Java:为什么需要通配符捕获(wildcard capture)
Java为什么需要通配符捕获,通配符捕获机制通过临时绑定未知类型变量,解决泛型通配符"?"导致的类型信息缺失问题。它允许编译器在方法作用域内将通配符"?"绑定到具体类型变量T,从而在保持类型安全的前提下实现对通配符集合的操作。典型应用如交换列表元素的swap方法,通过辅助泛型方法捕获实际类型,解决了向通配符集合写入元素的编译错误。该机制平衡了泛型的灵活性与类型安全性,是Java泛型系统的重要补充。
2025-07-29 17:29:26
516
原创 Java: 构造器表达式 Constructor Expression /构造器引用(Constructor Reference)
"constructor expression"(构造器表达式)通常指的是使用构造器引用(Constructor Reference)的表达式。构造器引用允许你通过类名和new关键字来引用构造器,而不必显式写出 Lambda 表达式的参数和new调用
2025-07-28 11:58:05
355
原创 Java: 反射机制的 ParameterizedType(参数化类型)
Java反射中的ParameterizedType接口用于处理泛型参数化类型,在类型擦除后仍能获取泛型信息。它通过getActualTypeArguments()获取类型参数,getRawType()获取原始类型,getOwnerType()获取所有者类型(内部类场景)。典型应用包括JSON反序列化、依赖注入等框架开发,通过子类继承泛型父类的方式规避类型擦除限制。该接口与GenericArrayType、TypeVariable等共同构成Java反射的类型体系,是运行时处理泛型的重要工具。
2025-07-18 14:28:39
1130
原创 英语:词根 Meta
文章摘要:"Meta"源自希腊语,意为"超越"或"自我参照",表示对事物本身的反思或更高层次的抽象。在计算机领域常见于metadata(描述数据的数据)、metalanguage(描述语言的语言)和HTML的<meta>标签(描述网页元信息)。
2025-07-16 15:16:41
1513
原创 Java :通配符捕获(Wildcard Capture)
什么是通配符捕获?本文解释了Java泛型中的通配符捕获机制。通过分析《Java核心卷1》中的代码示例,说明了为何不能直接在swap(Pair<?> p)方法中实现交换逻辑:因为通配符?表示未知类型,编译器无法确定具体类型参数。文章详细阐述了swapHelper泛型方法的作用,它通过类型参数<T>捕获具体类型,从而安全地操作泛型对象。还解释了通配符捕获的概念,即编译器将通配符?隐式转换为具体类型参数的过程。最后指出这种设计允许客户端代码灵活处理不确定类型的泛型对象,同时保持类型安全。
2025-07-15 10:32:36
481
原创 Java :编译器的占位符 T#1
Java泛型中的T#1是编译器为通配符?创建的临时类型变量,用于表示某个确定的具体类型。它存在于编译阶段,用于类型检查和推导,确保泛型操作的类型安全。T#1不是可见的具体类型,而是一个内部占位符,在运行时会被擦除。当操作Pair<?>时,编译器会捕获?为T#1,并根据实际对象类型(如String)推断其具体值。这种机制允许在保持类型安全的情况下操作未知类型的泛型实例。不同编译器可能使用不同表示(如CAP#1),但原理相同。
2025-07-14 17:31:29
309
原创 Java :T extends Comparable<? super T> 和 T extends Comparable<T>的区别
《Java泛型函数比较:T extends Comparable<T> vs T extends Comparable<? super T>》 摘要:本文对比了两个Java泛型函数的区别,主要在于类型参数的不同约束。T extends Comparable<T>要求类型T必须直接实现与自身比较,而T extends Comparable<? super T>允许T与自身或其父类比较,兼容继承场景。后者适用范围更广,能处理子类复用父类比较逻辑的情况,如Dog继承
2025-07-11 16:41:47
491
原创 Java :Optional容器类
Java 8引入的Optional类为处理可能为null的值提供了更安全的方式,有效减少NullPointerException。摘要介绍了创建Optional的三种方法(of/ofNullable/empty),判断值存在的isPresent/isEmpty/ifPresent方法,获取值的get/orElse/orElseGet/orElseThrow方法,以及转换值的map/flatMap和过滤值的filter操作。通过示例展示了Optional的典型用法,并提示注意事项:避免滥用、慎用get()、不
2025-07-10 15:54:31
936
原创 Java:函数式接口 Supplier<T>
Java中Supplier<T>接口是一个无参数但返回指定类型值的函数式接口,核心用途包括延迟计算、解耦生产逻辑和函数式编程。典型应用场景有:1) 结合Optional实现默认值懒加载;2) 作为工厂方法封装对象创建;3) 缓存数据加载等。示例展示了生成随机数、延迟创建默认值以及作为方法参数传递生成逻辑等用法,有效避免不必要的资源消耗,提高代码灵活性。Supplier通过get()方法实现"需要时才计算"的特性,在资源敏感场景中尤为实用。
2025-07-10 15:51:40
411
原创 js 深入理解函数(二):扩展操作符、函数的内部对象、属性和方法
深入理解函数的内部对象this、arguments,函数属性和方法以及扩展操作符的使用
2024-10-09 08:37:12
1383
原创 js 深入理解代理和反射
代理和反射提供了拦截并向基本操作嵌入额外行为的能力。具体地说,可以给目标对象定义一个关联的代理对象,而这个代理对象可以作为抽象的目标对象来使用。在对目标对象的各种操作影响目标对象之前,可以在代理对象中对这些操作加以控制对刚刚接触这个主题的开发者而言,代理是一个比较模糊的概念,而且还夹杂着很多新术语。其实只要看几个例子,就很容易理解了。使用代理的主要目的是可以定义捕获器(trap)。捕获器就是在处理程序对象中定义的“基本操作的拦截器”。
2024-09-29 09:50:06
998
原创 js 深入理解类-class
ES 6 终于有了class 关键字了,继承可以节省了很多冗长的代码。那么有了类 这个语法糖,以前学习的原型、对象、构造函数的知识是不是都没用了。恰恰相反,ES 6的类 其实都是在使用 原型、构造函数的概念。所以学习本章的内容最好学习前面几章的知识。
2024-09-20 10:49:34
4907
原创 js 深入理解生成器
生成器是一种可以用来控制迭代器(iterator)的函数,它可以随时暂停,并可以在任意时候恢复。这种新能力具有深远的影响,比如,使用生成器可以自定义迭代器和实现协程。迭代是一种所有编程语言中都可以看到的模式。ECMAScript 6 正式支持迭代模式并引入了两个新的语言特性:迭代器和生成器。
2024-09-13 14:11:42
1509
spring boot + jwt 的带权限认证
2025-08-13
Newtonsoft.Json .net framework 3.5 和.net framework 4.0两个版本
2024-05-07
c语言实现单链表 (数据结构与算法 严蔚敏版 作业)完整源码
2024-04-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅