自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NVM for Windows 管理 Node.js 多版本

成功提示:Now using node v16.20.2 (64-bit)❌ 禁止:D:\Program Files\nvm、D:\软件\nvm。代表当前正在使用的版本。配置淘宝镜像(国内必备)✅ 推荐:D:\nvm。显示版本号即安装成功。

2026-04-09 17:08:33 406

原创 Android 生命周期详解

主要处理 setContentView、初始化控件、初始化数据、绑定 TabHost。流程:onStop → onRestart → onStart → onResume。页面可能被系统销毁时调用,存储当前 tab、输入框文字、列表位置。页面重建后调用,比 onCreate 晚,比 onStart 早。:页面第一次创建时调用,只执行一次。:页面即将销毁时调用,只执行一次。:页面从后台回到前台,但没被销毁。:页面获取焦点,可以点击、交互。:页面失去焦点,退到后台。:页面重建时恢复状态用。

2026-04-09 14:34:22 163

原创 Android 轻量级本地存储 SharedPreferences

这是系统级目录,普通文件管理器看不到,必须 root 或 adb 或 Android Studio 才能访问。是 Android 官方提供的存储工具,以 键值对形式存数据,存储在手机本地的 xml 文件里。

2026-04-09 12:40:15 120

原创 Android 底部导航栏(TabHost + TabWidget)实现方案

TabHost + TabWidget 是 Android 早期的官方底部导航方案。Google 现在推荐:BottomNavigationView。(底部导航)TabLayout。

2026-04-09 12:13:21 317

原创 Android 常用控件及核心属性

最常用的列表控件(聊天记录、商品列表、新闻列表),替代老旧的 ListView。继承自TextView,用于点击触发操作(提交、跳转、确认等)。拓展:AppCompatButton 兼容低版本,功能一致。继承自TextView,用于用户输入文字、密码、账号等。必须配合 RadioGroup 使用,实现单选。核心作用:展示大量数据列表,支持滑动、复用优化。用于内容超出屏幕时滚动显示(长文本、详情页)。最基础的控件,用于显示文字、标题、说明等。用于显示图片、图标、背景图。用于加载中、进度展示。

2026-04-08 10:31:56 465

原创 Android 布局介绍

(线性布局)是 Android 开发中最基础、最常用的布局管理器之一。它将子视图(Views)按照一个方向(水平或垂直)一个接一个地排列。核心排列方式通过 android:orientationvertical(垂直):子视图从上到下排成一列。horizontal(水平):子视图从左到右排成一排(默认值)。重要属性(权重):这是 LinearLayout 的强大功能,允许子视图按比例瓜分剩余空间。例如,如果你有两个按钮,权重都设为 1,它们将平分整个布局的宽度或高度。

2026-04-08 09:45:09 409

原创 Android 开发报错和配置记录

Gradle 版本与 Java (JDK) 版本不兼容。在 Android Studio 中,点击菜单栏:File > Settings… (Windows)。导航到:Build, Execution, Deployment > Build Tools > Gradle。找到 Gradle JDK 选项。在下拉菜单中,选择合适的 JDK。点击 OK 保存。最后点击顶部的 “Sync Project with Gradle Files” 图标(🐘图标)重新同步。

2026-04-07 11:54:09 662

原创 使用 Docker Compose 安装常用中间件

项目名_服务名_序号。宿主机IP:6379。宿主机IP:5672。

2026-02-03 18:29:06 832

原创 Docker 离线安装和镜像源配置

这是 Docker 守护进程(dockerd)的 systemd 服务配置文件,核心作用是告诉 Linux 的 systemd 服务管理器:如何启动、管理、重启 Docker 服务,以及Docker 服务的依赖关系、资源限制、运行策略等。这段脚本的核心是:接收一个 Docker 二进制 tar 包作为参数($1),自动完成解压、程序部署、systemd 服务配置、启动服务、设置开机自启,并最终验证 Docker 是否安装成功,全程会打印提示信息,方便查看执行进度。执行 docker info 命令。

2026-02-03 17:54:04 1401

原创 DataX 安装部署和使用示例

虽可通过“时间戳筛选增量数据 + 调度器(如 DolphinScheduler)定时执行”实现准实时同步,但不支持监听数据库日志(如 binlog)的实时同步方案。说明:DataX 官方无达梦库专用读写插件,但可通过通用关系数据库插件(rdbmsreader/rdbmswriter)实现达梦库数据同步。步骤 1:在 job/ 目录下新建配置文件。步骤 1:在 job/ 目录下新建配置文件。步骤 1:在 job/ 目录下新建配置文件。

2025-12-22 16:44:00 1406

原创 Apache Kafka 安装部署

Kafka 依赖 ZooKeeper 管理集群元数据,2.4.1 版本内置 ZooKeeper,可直接使用。检查是否启动:jps(应看到 QuorumPeerMain 进程)需先启动 ZooKeeper,再启动 Kafka。检查是否启动:jps(应看到 Kafka 进程)应显示 test-topic。

2025-11-18 15:03:05 833

原创 DolphinScheduler ^M 字符问题处理

每次启动时,这个函数都会将 bin/env/dolphinscheduler_env.sh 复制到 master-server/conf/dolphinscheduler_env.sh,而源文件 bin/env/dolphinscheduler_env.sh 本身就包含 Windows 行结束符。将源文件 bin/env/dolphinscheduler_env.sh 中的 ^M 字符也去除后,重新执行启动脚本就正常了。)在 Linux/Unix 系统中的显示。方案1:在 Vim 编辑器中处理。

2025-11-11 10:26:12 381

原创 ORACLE、MYSQL、达梦 SQL 语法兼容性分析

ORACLE、MYSQL、达梦均支持 CASE WHEN,但 MYSQL 不支持 DECODE 函数。

2025-09-24 10:00:33 1061

原创 React05 样式控制 & classnames工具优化类名控制

【代码】React05 样式控制 & classnames工具优化类名控制。

2024-11-04 22:56:34 627

原创 React04 State变量 & 组件渲染

State 是组件实例内部的状态。如果你渲染同一个组件两次,每个副本都会有完全隔离的 state,改变其中一个不会影响另一个。state setter 函数 (setIndex) 可以更新 state 变量并触发 React 重新渲染组件。在这个例子中,index 的初始值被 useState(0) 设置为 0。useState 的唯一参数是 state 变量的初始值。

2024-11-01 14:48:59 650

原创 React03 组件 & Props

一些组件将它们所有的 props 转发给子组件,正如 Profile 转给 Avatar 那样。因此,函数与类上的特性在 React 组件上同样具有,比如原型链,继承,静态属性等,所以不要把 React 组件和类与函数独立开来。每个父组件都可以提供 props 给它的子组件,从而将一些信息传递给它。组件本质上就是类和函数,但是与常规的类和函数不同的是,组件承载了渲染视图的 UI 和更新视图的。React 在底层逻辑上会像正常实例化类和正常执行函数那样处理的组件。函数式组件定义时首字母必须大写。

2024-10-23 09:13:39 762

原创 React02 JSX的基本使用

JSX是一种 JavaScript 的语法扩展,需要通过解析工具解析之后才能在浏览器中运行。注意:key 是 React 框架内部使用的用于提升更新性能的属性。

2024-10-13 00:34:41 778

原创 React01 开发环境搭建

【代码】React01 开发环境搭建。

2024-10-12 23:47:26 733

原创 java 的三种IO模型(BIO、NIO、AIO)

完成后,操作系统会通知应用程序,或者应用程序主动查询完成状态。使线程在等待IO完成的同时可以执行其他任务,提高了系统的并发性能。:同时管理多个通道,通过注册通道的事件(如连接就绪、读就绪、写就绪),使用单个线程就能处理多个通道,从而管理多个网络连接,提高了效率。每个客户端连接都会在一个独立的线程中处理,并且这个线程在处理 IO 操作时会阻塞,直到操作完成。数据从通道读取到缓冲区,或者从缓冲区写入到通道。:既可以从通道中读取数据,又可以写数据到通道。:用于在I/O操作完成后处理结果的回调接口。

2024-10-02 16:41:58 2596

原创 JUC并发编程_Lock锁

Java中的Lock锁是包下的一个接口,它提供了比关键字更灵活的锁定机制。

2024-09-29 18:59:38 968

原创 XXL-JOB 分布式任务调度平台

版本号需要和上一步拉取的项目版本一致2.2、XXL-JOB 相关配置properties 格式yaml 格式:2.3、定义执行器组件 Bean3、创建分布式定时任务3.1、执行器中定义Job方法3.2、定义执行器

2024-09-29 16:50:26 710

原创 JUC并发编程_自旋锁

【代码】JUC并发编程_自旋锁。

2024-09-28 18:42:28 326

原创 JUC并发编程_深入理解CAS

解决ABA问题的一种常见且有效的方法是使用带有版本号或时间戳的原子操作,这样可以确保在比较并交换(CAS)操作时,不仅能检查值是否相等,还能检查该值自上次读取以来是否未被其他线程修改过。:如果某个线程将内存位置的值从A改为B,然后又改回A,此时另一个线程使用CAS进行检查时会认为该值没有变化,但实际上它已经变化过了。类,它正是为了解决ABA问题而设计的,它在设置值的时候,除了要校验预期原值,还要校验版本号是否变更。:CAS操作只能保证单个共享变量的原子操作,对于多个共享变量,CAS无法保证其原子性。

2024-09-28 18:23:59 985

原创 JUC并发编程_实现单例模式

【代码】JUC并发编程_实现单例模式。

2024-09-26 14:26:13 371

原创 JUC并发编程_JMM 与 Volatile

期望执行的顺序是:1234,实际执行的顺序可能会变成 2134、1324,但编译器会保证顺序不是 4123,不会影响执行结果。源代码 --> 编译器优化的重排 --> 指令并行也可能会重排 --> 内存系统也会重排 --> 执行。型的变量来说,load、store、read和write操作在某些平台上允许例外)线程在执行任务的时候,不能被打扰的也不能被分割。正常的结果: x = 0;:你写的程序,计算机并不是按照你写的那样去执行的。指令重排导致的诡异结果: x = 2;(对于double和long类。

2024-09-26 14:05:37 996

原创 JUC并发编程_ForkJoin

JUC并发编程_ForkJoinForkJoin 的基本概念ForkJoin 的基本概念核心思想:分而治之(Divide and Conquer),即将大任务分解成小任务,并行处理后再合并结果应用场景:适用于递归分解型的任务,如排序、归并、遍历等,也适用于数组处理、并行化算法实现和大数据处理等领域

2024-09-26 13:16:29 423

原创 mysql手册17_经验总结

1、如何定位慢查询3、如何使用 EXPLAIN 优化查询4、什么是聚簇索引和二级索引(非聚簇索引)5、超大分页处理聚簇索引:索引的叶子节点直接包含数据行,聚簇索引有且仅有一个。如果存在主键,主键索引就是聚簇索引。如果不存在主键,将使用第一个唯一索引作为聚簇索引。如果既没有主键索引也没有唯一索引,InnoDB会自动生成一个rowid作为隐藏的聚簇索引。二级索引:索引的叶子节点关联对应的主键,所以一般需要回表操作,二级索引可以存在多个。

2024-09-25 17:33:05 645

原创 JUC并发编程_四大函数式接口和 Stream 流式计算

接受单个输入参数并返回布尔值结果。主要用于条件判断,比如检查字符串是否为空、数字是否大于某个值等。不接受任何参数但返回某种类型结果,主要用于提供数据,比如生成随机数、获取当前时间等。接受单个输入参数但不返回任何结果,主要用于执行某些操作,比如打印日志、发送数据等。接受一个输入参数并返回结果。主要用于转换数据,比如字符串转大写、数字加一等。

2024-09-24 23:02:23 439

原创 JUC并发编程_线程池

Java中的线程池主要由 java.util.concurrent 包下的Executor、ExecutorService、ThreadPoolExecutor等接口和类提供支持。其中,ThreadPoolExecutor是线程池的核心实现类。Executor:线程池的顶级接口,定义了execute(Runnable command)方法,用于提交任务。

2024-09-24 13:19:22 657

原创 JUC并发编程_阻塞队列 BlockingQueue

通过阻塞等待机制,阻塞队列能够自动平衡生产者和消费者的速度差异,防止生产者过快导致队列溢出,或消费者过慢导致队列空置。:Java中的线程池使用了阻塞队列来管理任务队列,当线程池中的线程数达到最大值时,新的任务会被放入阻塞队列中等待执行。生产者-消费者模式:阻塞队列支持生产者-消费者模式,即生产者向队列中添加元素,消费者从队列中取出元素。当队列满时,如果线程尝试向队列中添加元素,该线程将被阻塞,直到队列中有空间可用。当队列空时,如果线程尝试从队列中移除元素,该线程将被阻塞,直到队列中有元素可取。

2024-09-24 12:13:19 625

原创 JUC并发编程_ReadWriteLock

通过合理地使用读写锁,可以显著提高程序的并发性能和资源的利用率。当没有线程持有写锁时,读锁可以被多个线程同时获取,这提高了并发读取的效率。(Write Lock):写锁是独占的,当一个线程获得写锁后,其他线程无法获得读锁或写锁。确保每个锁都有对应的解锁操作,并且锁的获取顺序在多个线程中保持一致。:ReentrantReadWriteLock支持公平锁和非公平锁两种模式,可以根据需要选择合适的模式。数据保护:确保在写线程对数据进行修改时,能够排他性地访问数据,避免数据不一致的问题。是一个接口,它提供了。

2024-09-24 12:02:28 537

原创 Spring Cloud Alibaba 03_使用 openFeign 实现远程调用

注解以启用 OpenFeign 的自动配置。该注解会告诉 SpringBoot 在启动时扫描并注册所有标记了。注解声明一个 Feign 客户端,name 属性指定远程服务的名称。通过该接口定义远程服务的方法。

2024-09-22 20:57:03 652

原创 RabbitMQ09_实现延迟消息

这个插件可以将普通交换机改造为支持延迟消息功能的交换机,当消息投递到交换机后可以暂存一定时间,到期后再投递到队列。属性给队列A指定死信交换机,该死信交换机将消息路由到队列B,消费者监听消费队列B中的消息。发送消息给队列A并设置消息过期时间,使用。

2024-09-21 00:04:41 450

原创 RabbitMQ08_保证消息可靠性

消息投递到MQ但是MQ路由失败,MQ返回路由失败原因。持久消息投递到了MQ且入队完成持久化,返回ACK。临时消息投递到了MQ且入队成功,返回ACK。持久化消息:发送消息时将消息的。消息投递异常,返回NACK。

2024-09-20 15:58:44 1095

原创 Linux 更多命令

screen 终端多路复用工具。screen 终端多路复用工具。netStat 网络工具。netStat 网络工具。

2024-09-17 11:05:34 502

原创 Linux系统的字体管理

在Linux系统中,新安装的字体需要被加入到字体缓存中,以便系统能够识别和使用它们。因此,你需要在服务器上执行 fc-cache 命令来更新字体缓存。这个命令会扫描 /usr/share/fonts 目录(以及其他可能存在的字体目录,如 ~/.fonts),并更新字体缓存数据库。执行该命令后,系统将会重新扫描 /usr/share/fonts 目录,并将新拷贝的字体加入到字体缓存中。

2024-09-04 11:13:12 3760

原创 MINIO 对象存储服务

注:需要下载 MINIO SERVER(服务端) 和 MINIO CLIENT(客户端)两个文件。将下载的 MINIO 服务端与客户端文件放到bin目录下。创建minio相关目录:bin、data、log。MINIO 整合 SpringBoot。

2023-10-31 14:14:49 315

原创 IE报错 Stream ended unexpected

记录遇到的一个IE的神奇报错:环境: IE11HTML代码:JS代码:后端代码:现象: 在Chrome等浏览器测试正常,在IE浏览器上当文件处理模式勾选加密时上传失败,勾选解密时却上传成功。 错误信息:org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly问题原因: IE浏览器的缺陷,如果form的最后一个元素是checkBox、Radio之类的没有

2022-06-23 10:59:24 1187

原创 表格中的td内容换行显示

需求:将表格中td内容的换行显示解决办法:将表格中的数据用 div标签包裹,并添加如下属性:white-space:normal;word-break:break-all;word-wrap:break-word;注意:该div需要设置指定宽度,或为td设置宽度并设置div宽度为100%

2022-05-11 10:55:22 4473

原创 SpringBoot 使用 Jasypt 加解密

引入依赖<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.0</version></dependency>在属性文件中配置盐jasypt: encryptor: password: sa.

2022-03-01 15:16:50 1856 2

空空如也

空空如也

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

TA关注的人

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