自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (2)
  • 收藏
  • 关注

原创 华为仓颉初探

华为正式发布自主研发的“仓颉”编程语言,主打四大特性:高效编程、安全可靠、轻松并发和卓越性能。作为一款面向全场景智能的新一代编程语言,仓颉融入鸿蒙生态,支持多范式编程、静态强类型检查和自动内存管理,提供用户态轻量化线程和并发数据结构。其性能优势体现在值类型支持、多层静态分析优化和超轻量运行时,并采用全并发内存标记整理GC算法降低延迟。基础语法方面,仓颉标识符命名规则灵活,支持变量类型推断,提供可变和不可变变量声明。名称“仓颉”寓意深刻,象征华为在技术自主创新上的追求。

2025-10-29 10:25:47 954

原创 Java线程池源码解析

本文深入剖析了Java线程池的核心实现类ThreadPoolExecutor的源码与设计哲学。文章从池化思想入手,系统解析了其七大核心参数如何协同工作,定义了线程池的资源分配与任务调度策略。进而,通过解读其精巧的位运算状态管理(一个ctl变量融合状态与线程数)和SHUTDOWN/STOP等状态流转逻辑,揭示了线程池的生命周期管控机制。最后,详细追踪了从任务提交(execute)、工作线程(Worker)创建与复用(getTask)、到线程回收的完整生命周期,并结合IO/CPU密集型场景给出了实践配置指南

2025-09-05 14:35:22 553

原创 Docker 镜像推送至 Coding 制品仓库超时问题排查与解决

本文档介绍了解决 Docker 镜像推送至 Coding 制品仓库超时问题的完整方案。当 docker push 失败但 curl 连接正常时,需通过 nslookup 检查域名解析、telnet 测试 443 端口连通性。问题根源在于 Docker 默认使用 HTTPS 协议,而 Coding 仓库实际采用 HTTP 协议。解决方案是修改 Docker 配置:在 /etc/docker/daemon.json 中添加 insecure-registries 字段指定仓库地址,重启 Docker 服务后验证

2025-07-15 17:37:59 504

原创 局域网环境下实现其他电脑远程访问虚拟机的详细设置指南

本文详细介绍了让局域网下其他电脑访问虚拟机的方法。在防火墙设置上,先打开本机防火墙高级设置,右键入站规则新建规则并选端口,输入如 8080 端口号,允许连接,设置名称与描述后,在规则属性的作用域中设允许远程访问的 IP 地址。虚拟机设置方面,打开 VMware 的虚拟网络编辑器,更改设置,选 NAT 模式并进行 NAT 设置,添加端口转发,主机端口填防火墙设置的端口,再填虚拟机 IP 和默认 22 端口。完成配置后可用 SSH 远程连虚拟机,不过不能用 PING 判断连接,因其非 TCP 协议。

2025-07-15 16:28:21 1601

原创 Volatile的隐藏陷阱:伪共享如何拖垮你的并发性能

本文深入解析 Java 中 volatile 关键字的内存可见性与指令重排序原理,揭示其在高并发场景下一个关键性能陷阱——伪共享。当多个频繁修改的 volatile 变量(如 long value1 和 value2)因内存布局落入同一 64 字节缓存行时,单个变量的修改会触发整个缓存行的失效与同步。通过对比实验:未优化时耗时 245ms,而添加 56 字节填充字段隔离变量后耗时骤降至 78ms,直观展现了伪共享导致的 3 倍性能差距。

2025-07-11 16:13:49 1029

原创 基于AOP+Redis的简易滑动窗口限流

本文围绕基于 AOP+Redis 的简易滑动窗口限流展开,对比了固定窗口与滑动窗口,指出固定窗口易在交界过载,滑动窗口以动态区间解决此问题;说明 Redis 有序集合 ZSET 因支持时间序列、高效范围操作和精确实时统计,适合实现滑动窗口限流。代码上,自定义SlidingWindowLimit注解定义限流参数,SlidingWindowLimitAspect切面类实现解析 SpEL、构建限流键等逻辑,并给出使用示例;原方法存在计数不准、并发及内存问题,优化后用 UUID 作成员、Lua 脚本执行并设过期时间

2025-07-09 17:54:58 1079

原创 synchronized全链路解析:从字节码到JVM内核的锁实现与升级策略

本文深度解析Java synchronized的底层机制。通过字节码反编译,揭示同步代码块(显式monitorenter/monitorexit)与同步方法(隐式ACC_SYNCHRONIZED)的核心差异。结合对象头Mark Word结构,剖析锁状态升级流程:无锁→偏向锁(Java 15前)→轻量级锁→重量级锁,并阐明触发条件(如自旋失败、竞争激烈)。通过JOL工具实时展示锁升级中对象头变化。

2025-07-09 14:35:51 1041

原创 AOP 实战:从代码解耦到日志切面的全流程解析

AOP 通过将日志记录、事务管理等横切逻辑抽象为切面,实现业务代码与公共逻辑的分离。本文从传统开发中重复代码泛滥的困境出发,解析 AOP 核心概念(切点、通知、代理机制)与执行流程,通过日志切面实战案例,展示如何用@Before/@Around等注解精准拦截 Controller/Service 层方法,实现调用日志记录、性能监控与异常处理。这种非侵入式编程范式,既避免了业务代码臃肿,又通过关注点分离提升系统可维护性,为企业级应用中横切逻辑的统一管理提供了系统性解决方案。

2025-06-23 14:59:08 1091

原创 JDK17 与 JDK8 共存指南:环境配置、版本切换全流程详解

本文介绍 JDK17 与 JDK8 共存方法。先从 Oracle 官网下载 JDK17,安装时记好路径以便配置环境变量。环境变量配置需删除自动添加的路径,添加新路径并设置两个不同的 JAVA_HOME 变量区分版本,通过修改变量值切换版本。在 IDEA 中切换 JDK 版本,以 Gradle 项目为例,进入项目结构添加 JDK 安装目录,在 Modules 中设置 Language Level 和 Module SDK 为对应版本,Gradle 项目还需在 Settings 里设置 Gradle JVM。

2025-06-12 11:29:31 2003

原创 代理模式:AOP 切面编程的底层实现基础

代理模式是通过代理对象控制目标对象访问的结构型设计模式,分静态与动态代理。静态代理编译时手动编写代理类,适合简单场景,虽实现简单但代码冗余;动态代理运行时生成代理类,借助 JDK、CGLIB 等实现,能非侵入式添加日志、权限等横切逻辑,常用于 AOP、RPC 等场景。其核心是 “控制访问” 与 “责任分离”,体现 “封装变化” 思想,让业务逻辑与增强逻辑解耦,是 Spring 等框架的底层技术。

2025-06-11 11:30:44 581

原创 Kafka入门-监控与可视化

本文详细介绍了Kafka监控系统的搭建过程,主要包括MySQL安装、Kafka环境准备和Kafka-Eagle安装三个步骤。首先通过yum安装MySQL并完成密码设置和远程访问配置;然后修改Kafka的启动参数,增加JVM配置和JMX端口;最后安装Kafka-Eagle可视化监控工具,配置Zookeeper集群信息和MySQL数据库连接,通过浏览器即可查看Kafka集群的详细信息。这套监控方案可实现Kafka集群的图形化管理和实时监控。

2025-06-09 15:29:20 517

原创 Kafka入门-Broker以及文件存储机制

afka Broker 是集群核心节点,通过 Zookeeper 注册元数据(如 Broker ID、分区状态)。节点服役 / 退役需通过kafka-reassign-partitions.sh工具重新分配分区副本,确保负载均衡。副本机制中,Leader 负责数据读写,Follower 同步数据,ISR 集合维护可用副本,超时副本被标记为 OSR。分区数据物理存储为多个 Segment 文件(含.log/.index/.timeindex),通过稀疏索引加速定位,默认按时间(7 天)或大小删除过期日志。

2025-06-09 15:21:42 1000

原创 Kafka入门-消费者

Kafka 消费者采用拉取(pull)模式获取数据,通过消费者组(group.id 相同)实现分区负载均衡,单个分区仅由组内一个消费者消费。Java 客户端需配置集群地址、反序列化器及消费者组 ID,支持订阅主题或指定分区消费。分区分配策略包括 Range、RoundRobin、Sticky 等,再平衡机制在消费者增减时重新分配分区。Offset 位移默认存储于系统主题 _consumer_offsets,支持自动提交(定时)或手动提交(同步 / 异步),可通过 seek() 方法指定 offset 或时间

2025-06-05 11:34:55 1114

原创 Kafka入门-生产者

本文深入讲解 Kafka 生产者的核心机制与编程实践。首先对比异步与同步发送 API,演示普通异步、带回调异步及同步发送的代码实现。随后解析分区策略:默认策略按分区指定、Key 哈希或黏性分区路由;自定义分区器可根据消息内容(如是否包含 "aha")自定义路由规则。通过调整 batch.size(默认 16KB)、linger.ms(默认 0ms)、压缩类型(如 snappy)及缓冲区大小(默认 32MB)可提升吞吐量。

2025-06-05 11:28:11 921

原创 Kafka入门- 基础命令操作指南

本文聚焦 Kafka 基础命令使用,涵盖主题管理、生产者与消费者操作及常见问题解决。主题操作包括通过--bootstrap-server连接 Broker,使用--create、--delete等参数创建、删除、修改主题,设置分区数与副本(需注意分区数仅可增不可减),通过--describe查看详细信息。生产者与消费者可通过kafka-console-producer.sh和kafka-console-consumer.sh连接主题,消费者加--from-beginning可接收历史消息。

2025-06-04 16:24:27 605

原创 Kafka入门-集群基础环境搭建(JDK/Hadoop 部署 + 虚拟机配置 + SSH 免密+Kafka安装启动)

本文聚焦 Kafka 集群基础环境搭建。内容包括创建 3 台 CentOS 虚拟机并配置静态 IP 与主机名,通过 Oracle 镜像安装 JDK 8、华为云镜像安装 Hadoop 3.1.3(Hadoop 为可选生态依赖),利用 scp、rsync 实现文件拷贝与差异更新,编写 xsync 集群分发脚本提升同步效率,以及通过生成 RSA 密钥对配置 SSH 免密登录实现节点间无密码通信。同时包括安装Kafka及启动

2025-06-04 16:10:12 1702

原创 PyTorch入门-模型训练、常用训练方法、模型验证

本文围绕 PyTorch 现有网络模型的应用与开发展开,以 VGG16 为例,介绍通过trchvision.models加载预训练模型并利用迁移学习适配新任务的方法,如修改或添加分类器层使输出适配 CIFAR-10 的 10 类需求。阐述模型保存与加载的两种方式(整体保存与参数保存),对比其特点。结合 CIFAR-10 演示完整训练流程,涵盖数据集加载、交叉熵损失函数与 SGD 优化器配置、TensorBoard 监控及 GPU 加速设置。最后通过实际图片验证模型分类效果,指出训练轮次不足可能导致识别偏差。

2025-05-28 14:53:57 1734

原创 PyTorch入门-神经网络

本文介绍神经网络及 PyTorch 应用。神经网络由多层神经元组成,通过前向传播计算结果,反向传播调整参数。PyTorch 的 torch.nn 模块可构建网络,包含线性层、卷积层、池化层等,激活函数引入非线性,正则化层减少过拟合。损失函数衡量预测差距,优化器更新参数,如 SGD、Adam。卷积层提取特征,池化层降维,Sequential 模块可快速堆叠网络层。文中还以 CIFAR-10 模型为例,展示构建网络、计算损失、反向传播及优化器调参过程,体现神经网络从构建到训练的完整流程。

2025-05-28 09:22:59 861 1

原创 PyTorch入门-DataLoader

PyTorch 中的 DataLoader 是一个高效的数据加载工具,主要功能包括批处理、随机打乱、多线程加载和数据预处理。它与 Dataset 协同工作,通过调用 Dataset 的 getitem 方法获取数据,并提供批量加载功能以提高训练效率。示例代码展示了如何使用 DataLoader 加载 CIFAR10 测试数据集,并通过 TensorBoard 可视化分组后的图片,其中通过设置 batch_size、shuffle 等参数优化数据加载过程。DataLoader 能够有效提升大型数据集的处理效率

2025-05-27 16:21:25 304

原创 PyTorch入门-torchvision

torchvision是PyTorch的计算机视觉扩展库,提供预训练模型、数据集和图像处理工具。以CIFAR10数据集为例,包含60,000张32x32彩色图像(10类)。通过torchvision.datasets.CIFAR10可下载数据集,使用transforms.ToTensor()将PIL图像转为Tensor格式。代码演示了数据下载、类型转换及TensorBoard可视化过程,展示了如何快速构建视觉项目。该库极大简化了计算机视觉任务的开发流程。

2025-05-27 16:17:25 344

原创 PyTorch入门-Transorforms

本文介绍了计算机视觉中常用的图像变换(transforms)方法,包括调整大小(Resize)、裁剪(Crop)、翻转(Flip)、旋转(Rotate)、归一化(Normalize)、颜色抖动(Color Jitter)和噪声添加(Add Noise)等操作。重点展示了PyTorch中如何使用torchvision.transforms模块实现图像归一化和随机裁剪等变换,并通过TensorBoard可视化处理效果。文章还说明了transforms.Compose的用法,它能将多个图像变换操作组合在一起,简化

2025-05-27 16:07:54 414

原创 PyTorch入门-TensorBoard

TensorBoard是TensorFlow的可视化工具,用于监控和优化机器学习模型训练过程。主要功能包括:可视化训练指标(损失、准确度)、展示模型结构(计算图、层参数)、分析权重/激活分布、支持多媒体数据(图像/音频/文本)展示,以及超参数调优。使用方式为安装后通过SummaryWriter记录数据(标量、图像等),启动TensorBoard服务并在浏览器查看可视化结果。安装命令为pip install tensorboard,运行后可通过http://localhost:6006访问界面,支持自定义日志

2025-05-27 15:57:07 719

原创 PyTorch入门-数据集与DataSet

本文介绍了机器学习中训练集(train)和验证集(val)的作用与特点,阐述了常见的数据集目录结构类型,包括按类别分类和图像-标签分离的两种组织形式。文章详细讲解了PyTorch中Dataset类的功能与实现方法,包括必须重写的__init__、__getitem__和__len__三个核心方法,并提供了一个将蚂蚁和蜜蜂图片分类数据集合并为训练数据集的完整代码示例,展示了如何自定义Dataset类来加载和管理图像数据。

2025-05-27 15:53:16 374

原创 PyTorch入门-安装教程

PyTorch 是一个广泛使用的开源深度学习框架,由 Facebook 的人工智能研究小组开发。它以其动态计算图的特性而闻名,允许用户在运行时灵活地改变网络结构,这使得调试和开发变得更加直观。PyTorch 提供了张量数据结构,类似于 NumPy 数组,但具备在 GPU 上高效计算的能力,同时支持自动微分功能,方便计算梯度,从而简化模型训练过程。其 API 设计简单易用,适合初学者和研究人员,配合丰富的库和工具,如 torchvision、torchtext 和 torchaudio,覆盖了计算机视觉、自然

2024-10-21 11:40:12 278

原创 FastApi SQLAlchemy SQLite

本文介绍了FastAPI的入门知识,并结合SQLAlchemy和SQLite来构建一个简单的Web应用。首先,阐述了FastAPI的基本概念及其安装方法,强调了其高性能和易用性。接着,介绍了如何使用SQLAlchemy作为ORM工具,与SQLite数据库进行交互。文章详细描述了创建数据库模型、设置数据库连接以及实现基本的CRUD(创建、读取、更新和删除)操作的步骤。同时,通过示例代码展示了如何在FastAPI中集成这些功能,使用户能够方便地添加和查询数据。

2024-10-14 10:47:23 1606

原创 Python入门

Python是一种高层次、通用的编程语言,因其简洁易读的语法和强大的功能而广受欢迎。它于1991年由吉多·范罗苏姆(Guido van Rossum)首次发布。

2024-10-14 10:32:25 1376

原创 新的刷题神器-豆包MarsCode!

今天偶然发现一个新的刷题神器`豆包MarsCode` ,它是字节旗下基于豆包大模型打造的智能开发工具,它提供了强大的AI能力,通过代码不全、代码推荐、单测生成等各项能力能够在编程的各个阶段给程序员们提供帮助。除了上述提到的功能之外,`豆包MarsCode`还有一项非常强大的功能——代码练习!

2024-09-11 17:00:21 6824 3

原创 Go语言入门-函数

在GO语言中如何声明函数,声明函数有哪些方式以及可变参数

2023-11-01 09:39:04 367

原创 Go语言入门-流程控制语句

Go语言入门-流程控制语句,条件语句、循环语句、选择语句、跳转语句等常用流程控制语句

2023-10-30 20:24:48 507

原创 Go语言入门-HelloWorld到变量常量及常用数据类型、输入输出、运算符、特殊字符

GO入门,从Helloworld到变量的定义、常量定义、常用数据类型、数据类型之间的转换、从控制台输入输出、常用运算符、特殊字符

2023-10-30 20:22:58 410

原创 Go安装教程

在Go中文网下载安装包

2023-10-30 20:19:13 372

原创 JOOQ快速入门

JOOQ快速入门,SpringBoot整合JOOQ,使用JOOQ对Mysql进行CRUD操作

2023-08-30 09:14:57 1119

原创 SpringBoot、SpringCloud、SpringCloudAlibaba的版本选择

Spring Boot与Spring Cloud、Spring Cloud Alibaba的版本兼容性关系如下:Spring Boot 3.x系列对应Spring Cloud 2022/2023和Spring Cloud Alibaba 2022.x,需JDK17+;Spring Boot 2.6.x对应Spring Cloud 2021.x和Spring Cloud Alibaba 2021.x,支持JDK8+。官方推荐通过https://start.spring.io/actuator/info获取最新

2023-08-25 14:45:35 3055

原创 Redis缓存笔记

Redis实现缓存,减少数据库压力。缓存面临的基本问题:缓存穿透,缓存雪崩,缓存击穿

2023-07-12 17:08:40 145

原创 Redis实现短信验证码登录

使用Redis实现短信验证登录功能

2023-07-12 11:46:41 1741

原创 SpringDataRedis操作Redis

使用SpringDataRedis来操作Redis

2023-07-11 14:25:41 218

原创 Redis入门常用命令

Redis是一个基于内存的键值型非关系型数据库(NoSQL)如果数据涉及安全问题,那么选择SQL进行存储,SQL满足ACID特性。Redis入门命令,常用数据结构命令

2023-07-11 11:56:49 145

原创 Curator操作Zookeeper

Curator客户端通过java代码操作zookeeper

2023-03-03 11:00:37 391

原创 zkCli 节点操作 + Java API操作

Zookeeper客户端操作摘要 本文介绍了Zookeeper的客户端操作方法和Java API使用。主要内容包括: 基础命令:通过zkCli客户端可执行ls、get等命令查看节点信息,包括创建时间、修改时间、数据版本等元数据 节点管理:create命令可创建持久/临时节点,set修改数据,delete删除节点 监听机制:通过-w参数可监听节点值或子节点变化,但每次监听只生效一次 权限控制:使用addauth添加认证,创建节点时可设置访问权限 Java API:通过ZooKeeper类连接集群,实现节点创建

2023-03-03 10:57:47 238

原创 Zookeeper 完整学习手册:原理入门 + 集群搭建(3 节点示例)+ 核心特性实战

Zookeeper是一款分布式协调服务,采用主从架构(Leader+Follower),具有高可用、数据一致性和顺序执行等特点。其核心功能包括分布式锁、无状态化实现等,遵循CP设计原则(一致性+分区容错性)。安装配置需设置数据目录和集群参数,通过myid文件标识服务器身份。集群选举机制基于服务器ID和ZXID,确保故障时快速选出新Leader。Zookeeper适用于分布式系统协调场景,通过心跳检测和观察者模式实现节点状态监控与数据同步,是分布式系统的重要基础组件。

2023-03-03 10:56:11 314

Mysql学习笔记、java开发

Mysql的查询、内连接、外连接、表的操作、增删改查、约束、事务、事务的隔离级别、索引、三大范式、数据库表的设计原则

2022-07-06

实验5 静态路由的配置.doc

计算机网络学习,实验巩固所学知识

2021-04-27

空空如也

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

TA关注的人

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