自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单词拆分 leetcode

/ 外层循环:遍历背包容量(字符串长度/结束位置)// 内层循环:遍历分割点(物品的选择)

2025-10-04 04:42:30 410

原创 零钱兑换 leetcode

/ 内层循环:遍历背包容量(目标金额)// 外层循环:遍历物品(硬币面额)

2025-10-04 04:38:48 595

原创 完全平方数 leetcode

/ 内层循环:遍历背包容量(目标数字)// 外层循环:遍历物品(完全平方数)

2025-10-04 04:37:11 297

原创 使用 C++ 调用 Elasticsearch API

std::cout << "\n搜索结果 (" << searchResults["hits"]["total"]["value"] << " 个匹配):" << std::endl;std::cout << "文档1 ID: " << id1 << "\n文档2 ID: " << id2 << std::endl;std::cout << "索引创建成功: " << indexName << std::endl;std::cerr << "错误: " << e.what() << std::endl;

2025-07-13 05:39:40 460

原创 error while loading shared libraries

当出现 **"error while loading shared libraries"** 且确认是因为 **未正确加载环境变量**(特别是 `LD_LIBRARY_PATH`)时,根本原因确实是修改环境变量后**未执行 `source` 命令**,导致新配置未生效。**原因**:当前终端会话仍在使用旧的 `LD_LIBRARY_PATH`(不包含 `/opt/custom/libs`)- `source 文件名` 或 `. 文件名` 命令会让当前 Shell **立即执行**指定文件中的所有命令。

2025-07-12 10:56:31 509

原创 cannot open shared object file

使用 `apt-file search libxxxx.so` 或 `dnf provides */libxxxx.so` 查找所属包。- 库的包名通常是 `libxxxx` 或 `libxxxx-dev`(开发版包含 `.so` 文件)- 库文件存在(如 `libxxxx.so.1.2`),但缺少 `libxxxx.so` 软链接。- 父目录需有 `execute` 权限(`drwxr-xr-x`)- 库文件至少需 `read` 权限(`-r--r--r--`)

2025-07-11 20:00:56 678

原创 subprocess.Popen子进程退出状态码

需调用`wait()`/`poll()`/`communicate()`等待结束。| Windows系统 | 32位整数 | 范围 `0-4294967295` || Unix系统 | 8位整数 | 范围 `0-255` (实际值模256) |- `-2` (SIGINT): 键盘中断 (Ctrl+C)| 进程未结束 | `None` | 使用`poll()`检查状态 |- **1**:通用错误(如`grep`未找到匹配)| 被信号终止 | 负值 | Unix特有(如`-9`) |

2025-07-10 11:40:58 506

原创 git配置密钥

如果是 OpenSSH 格式(`id_rsa`),需用 **PuTTYgen** 转换(TortoiseGit 自带该工具)。- 使用 **PuTTYgen**(TortoiseGit 自带)打开 `id_rsa` → 点击 **Save private key** 保存为 `.ppk` 文件。2. 如果看到欢迎消息(如 `Hi username!- 右键单击任意文件夹 → 选择 **TortoiseGit** → **Settings**。- 如果私钥是 **PuTTY 格式(.ppk)**,直接加载。

2025-07-09 16:17:38 684

原创 定位程序卡死的命令

#2 0x0000555555555123 in process_request () at src/worker.c:123 # 卡在锁获取。# tcp LISTEN 0 128 *:8080 *:* users:(("java",pid=567,fd=12)) # 正常监听。# #1 0x0000555555555123 in main_loop () at app.py:42 # 显示卡在 poll 调用。# | | | | | | | | | | └─ wa:I/O 等待 CPU 时间。

2025-07-08 12:26:38 536

原创 dbf文件导入db2数据库

使用专业工具如 **[DBF Viewer 2000](https://www.dbfview.com)** 或 **[ESF Database Migration Toolkit](https://www.easyfrom.net)** 可直接导出DBF到DB2。- DBF通常使用`GBK`或`LATIN1`编码,转换时需指定正确编码,避免乱码。- `MODIFIED BY COLDEL,`:指定列分隔符为逗号(CSV格式)。- `INSERT INTO`:插入到现有表(表需提前创建)。

2025-07-07 18:27:44 325

原创 CSV文件

它的名字来源于其结构特点:**C**omma-**S**eparated **V**alues(逗号分隔值)。* **包含分隔符的值:** 如果一个值本身包含分隔符(例如,地址 `北京市,海淀区`),为了不破坏结构,这个值**必须**用引号(通常是双引号 `"`)包裹起来。* 文件的第一行通常(但不强制)是**表头行**,包含每一列数据的名称(字段名),如上面例子中的 `姓名,年龄,城市`。* 例:`"他说:""你好!* 这些值之间用特定的**分隔符**(通常是英文逗号 `,`)隔开。

2025-07-05 07:12:34 413

原创 json库访问数组

在 C++ 的 JSON 库(如 **Boost.JSON** 或类似设计)中,表达式 `jsonData[json::value::uint(0)]` 使用 `uint` 名称的原因主要与**类型安全设计**和 **JSON 值的统一访问接口**有关。- 若键是 **`uint`/`int` 类型**的 `json::value` → 访问 **JSON 数组**的索引。- 若键是 **`string` 类型**的 `json::value` → 访问 **JSON 对象**的成员。

2025-07-04 12:07:51 424

原创 字符与字节

**中文字符**(包括汉字和常用中文标点):每个字符占用 **3 字节**(UTF-8 使用可变长度编码,中文字符通常在 Unicode 的 U+0800 到 U+FFFF 范围,固定为 3 字节)。- **中文字符**:每个字符占用 **2 字节**(大多数中文字符在基本平面,极少情况如生僻字可能占用 4 字节,但这里忽略)。- **推荐使用 UTF-8 编码作为基准**:1024 字节可存储约 **1024 个英文字符** 或 **341 个中文字符**。- **为什么 1024 字节?

2025-07-03 22:24:29 726

原创 切换用户后找不到动态库

su` 默认启动的是**非登录Shell**(non-login shell),仅继承当前用户的环境变量(包括`LD_LIBRARY_PATH`),但不会加载目标用户的配置文件(如 `~/.bashrc`, `~/.profile`, `/etc/profile`)。- 这会模拟完整登录过程,加载目标用户的 `~/.profile`, `~/.bashrc`, `/etc/profile` 等配置文件。- 或确保库安装在标准路径(如 `/usr/lib`, `/lib`),这些路径默认已包含在缓存中。

2025-07-03 06:48:02 453

原创 database和schema

**对象权限(`SELECT`, `INSERT`, `USAGE` on schema, etc.)** 可以在 **Database、Schema 或单个对象级别** 精细控制。在高斯数据库(GaussDB,特别是基于 openGauss 内核的版本)中,**Database(数据库)** 和 **Schema(模式)** 是两个不同层级、具有不同隔离性和管理目标的概念。* **备份/恢复、资源管理、用户权限(如 `CONNECT`)** 通常在 **Database 级别** 操作。

2025-07-01 18:05:42 545

原创 linux .so文件搜索路径

**查看**:`echo $LD_LIBRARY_PATH` 或 `env | grep LD_LIBRARY_PATH`。- `LD_LIBRARY_PATH` 的路径优先级高于系统默认路径,但低于 `RPATH`(编译时指定的路径)。- 检查是否拼写错误(如 `LD_LIBRBRY_PATH` → `LD_LIBRARY_PATH`)。- **调试**:`ldd` 和 `LD_DEBUG=libs` 是排查动态库问题的利器。### **2. 设置 `LD_LIBRARY_PATH`**

2025-06-29 08:10:46 764

原创 将 MySQL 中的 3 亿条数据从源表移动到历史表

使用文件导出/导入(`SELECT INTO OUTFILE` + `LOAD DATA INFILE`):导出和导入各约 1-4 小时(速度可达 50,000-200,000 行/秒),加上删除源表(`TRUNCATE` 瞬间完成),总时间约 **2-6 小时**。加上删除操作(可能额外 20-50% 时间),总时间约 **20-100 小时(约 1-4 天)**。- **事务和日志**:长事务(如一次性操作)可能导致锁定和日志膨胀(binlog、redo log),减慢速度。

2025-06-27 20:51:56 892

原创 面试题:设计一个短链接生成服务

* 重定向读最终一致可接受。* **自定义模式:** 验证自定义码合法性(字符集、长度)-> 调用 **Custom Code Check Service** (或直接查存储) 检查唯一性 -> 如果可用,使用该 `short_code`。* **优点:** **绝对唯一**(ID 生成器保证),无需冲突处理;* **标准模式:** 调用 **ID Generator (Snowflake)** 获取全局唯一 ID -> Base62 编码 -> 得到 `short_code`。

2025-06-27 07:29:16 388

原创 实用编程技巧

**实现:** 使用 DI 框架(如 `Microsoft.Extensions.DependencyInjection` (.NET Core), `Spring Framework` (Java), `Guice` (Java), `Dagger` (Android/Java), `Angular's DI` (TypeScript), `inversifyJS` (TypeScript/JS))。* **优点:** 避免使用大量的条件判断语句(`if-else`/`switch-case`);

2025-06-26 19:16:08 694

原创 会话ID

系统2通过不同的会话ID(如 `sess_abc123xyz` vs `sess_def456uvw`)清晰地区分来自不同用户或同一用户不同设备/浏览器的独立会话,确保A用户的操作不会影响到B用户的购物车。查询缓存/数据库,找到 `sess_abc123xyz` 对应的会话数据(其中包含用户ID `user_789` 和一个空的或已有的购物车列表)。使用会话ID `sess_abc123xyz` 查找会话状态,获取关联的购物车(包含A和B)和用户信息(`user_789`)。响应可能还包含用户信息等。

2025-06-25 17:29:39 591

原创 静态存储区 C++

*静态存储区(Static Storage)**是程序内存中的一个固定区域,用于存储**全局变量**、**静态变量**(包括全局静态变量和局部静态变量)以及**常量**。- 位于程序的 **`.data` 段(已初始化数据)** 或 **`.bss` 段(未初始化数据)**,而非栈(Stack)或堆(Heap)。- **静态存储区**是程序内存中一种**持久化、自动管理**的区域,适合需要长期存在或跨作用域共享的数据。- **静态变量(static)**:即使函数退出,其值仍保留(如局部静态变量)。

2025-06-24 07:49:31 315

原创 股票资金账户

集中清算与交收: 在每个交易日结束后,中国结算根据交易所的成交数据,对所有交易进行清算(计算每个证券账户应收+应付的证券和资金净额)。多边净额结算: 中国结算作为所有交易的中央对手方(CCP),计算出证券公司(而非单个投资者)对中国结算的应收应付资金净额。股票交易中涉及的资金账户由商业银行的存管系统,中国结算的清算交收系统,证券公司的客户账户管理系统共同协作处理。交易清算: 在交易日结束后,根据中国结算的清算数据,负责与证券公司之间进行客户交易结算资金的划拨(净额交收)。成交后,系统进行资金扣减;

2025-06-23 07:25:34 470

原创 将业务表数据从系统1传输到系统2

**幂等性:** 无论哪种方法,**系统2在接收和处理数据时必须实现幂等性**(多次处理同一条数据的效果与处理一次相同)。**生产系统间实时交互慎用此方法。* **适用场景:** **最常用和推荐的方式**,适用于绝大多数需要可靠、异步、解耦传输的场景,特别是数据变化频繁、实时性要求较高但不是严实时、系统需要独立演进的情况。1. **优先考虑异步解耦:** 在大多数现代分布式系统中,**消息队列**和**变更数据捕获**是最常用且推荐的模式,因为它们提供了良好的松耦合性、可靠性和可扩展性。

2025-06-22 11:34:08 595

原创 Unix ODBC和Mysql ODBC

在 Linux/Unix 服务器上运行的应用(如 Python 脚本、PHP 网站、C++程序)通过 ODBC 连接任意数据库。配置文件: `odbc.ini`(数据源配置)、`odbcinst.ini`(驱动路径注册)。MySQL ODBC特指 MySQL 官方提供的 ODBC 驱动程序(名为 MySQL Connector/ODBC)。ODBC驱动:翻译应用程序的ODBC调用 → 转换为特定数据库的通信协议(如 MySQL 的 TCP/IP)。它是 Unix ODBC 框架中的一个具体驱动组件。

2025-06-21 16:49:35 549

原创 股票账户的管理和交易

中国证券登记结算有限责任公司(简称“中国结算”)确实是负责股票的账户管理(开户、销户)和登记、存管、清算、交收等后台业务的中央机构。在结算日(通常是T+1日),中国结算作为中央对手方,组织完成证券从卖方账户到买方账户的划转(过户),以及资金从买方账户到卖方账户的划转。投资者(个人或机构)通过自己开户的证券公司(券商)的交易软件(电脑端、手机APP)或电话委托等方式,下达买入或卖出股票的指令(包括股票代码、价格、数量)。它不参与交易的撮合过程。而股票的交易业务,即买卖指令的撮合与执行,是由证券交易所完成的。

2025-06-21 06:08:35 337

原创 使用 `Expect` 工具实现了自动化文件传输

`expect eof`:等待 `scp` 进程结束,`eof` 表示 "End Of File",即进程结束的信号。- `scp -rp`:`scp` 命令的选项 `-r` 表示递归复制目录,`-p` 表示保留文件权限和时间戳。- `send "$password\r"`:向 `scp` 进程发送密码,`\r` 表示回车。设置超时时间为 30 秒。- `expect`:`Expect` 命令,用于等待并匹配特定的输出。- `"password:"`:匹配 `scp` 命令提示的密码输入。

2025-06-20 11:44:57 604

原创 面试题:设计一个分布式“附近的人”功能(如微信附近的人、交友应用位置匹配)

存储结构:`Sorted Set` (Key: `geohash_prefix`, Value: `UserID`, Score: `timestamp`)- **查询服务**:接收查询请求 → 计算 Geohash → 查询缓存 → 未命中则查数据库 → 计算距离排序 → 返回结果。- **Geohash 原理**:将二维经纬度编码为一维字符串(如 `wx4g0b`),前缀匹配可快速定位相邻区域。- 选型:**RedisGEO** (内存) 或 **PostGIS** (磁盘)

2025-06-19 06:33:15 719

原创 db2数据库 变更数据表(CD表)

在DB2数据库中实现主从同步的逻辑复制(Logical Replication)并捕获变更数据表(CD表,Change Data Table),通常需要借助DB2的**Change Data Capture (CDC)** 功能或第三方工具(如IBM InfoSphere Data Replication)。DB2会自动为每个启用CDC的表生成对应的CD表(默认命名如`<schema_name>_<table_name>_CD`),存储变更数据(INSERT/UPDATE/DELETE)。

2025-06-18 20:23:22 552

原创 条件写在left join后的on 和写在where的区别

在 MySQL 中,将条件写在 `LEFT JOIN` 的 `ON` 子句和 `WHERE` 子句中的区别主要体现在 **结果集是否保留左表所有行** 以及 **过滤时机** 上。- **没有订单的用户** 以及 **有订单但状态不是 'paid' 的用户** 均被过滤掉(因为 `orders.status` 为 `NULL` 或不等于 `'paid'`)。- **对左表的影响**:**会** 过滤掉左表中不满足条件的行(包括未匹配到右表的行)。

2025-06-18 07:09:55 740

原创 db2主从同步 逻辑复制 APPLY_THROTTLE参数

在 DB2 主从逻辑复制(如 **Q 复制**)中,**`APPLY_THROTTLE`** 参数用于控制从库 **Apply 程序** 的处理速度,其核心作用是通过限制事务处理的频率或速率,平衡主从同步的负载和性能。适当增加 `THROTTLE` 值(如 `1000`),可降低从库负载,但会增大同步延迟。- 若同时设置 `COMMIT_COUNT=1`(单事务提交),可结合 `THROTTLE` 控制事务提交间隔,进一步优化性能。3. **限速处理**:通过 `THROTTLE` 控制事务处理间隔。

2025-06-15 18:06:18 376

原创 设计一个类似支付宝或微信支付的在线支付系统

**面试题:设计一个在线支付系统** **要求:** 1. **核心功能:** * 用户充值(从银行卡充值到账户余额)。 * 用户支付(使用余额向商户或其他用户付款)。 * 用户提现(将余额提现到银行卡)。 * 查询交易流水(充值、支付、提现记录)。 * (可选) 商户收款、退款流程。2. **非功能性需求:** * **强一致性:** 资金操作(尤其是扣款)**必须**保证准确无误,不能多扣、少扣、重复扣。这是金融系统的生命线。 * **高可用性:** 支付是核心

2025-06-12 11:55:41 937

原创 高斯数据库端口8000和3306

8000 | GaussDB(for openGauss) | 基于openGauss内核 | 企业级OLTP/OLAP混合负载 || 3306 | GaussDB(for MySQL) | MySQL兼容架构 | MySQL生态迁移场景 || **端口** | **对应产品** | **技术架构** | **定位场景** || **考量因素** | 优先8000端口 | 优先3306端口 || **场景** | **推荐端口** | **原因** || 节点1:8000 | | 节点1:3306 |

2025-06-09 18:10:00 439

原创 git合并分支 excel文件冲突

在 Git 合并分支时,如果遇到 **Excel 文件冲突**(`.xlsx`、`.xls` 等),处理方式与普通文本文件不同。- **合并冲突表现**:当两个分支对同一个 Excel 文件有修改时,Git 会直接标记为冲突,但无法显示具体差异。- **二进制文件特性**:Excel 文件是二进制格式(非纯文本),Git 无法解析其内容差异。- **优先人工协商**:合并 Excel 冲突的关键是 **人工沟通**,确认最终版本。#### **方法三:使用 Git 配置合并工具(高级)**

2025-06-08 10:37:32 805

原创 awk命令 ll | awk ‘{print $NF “.test“}’ |xargs touch

**{print $NF “.test”}** 的作用是提取每行的最后一个字段(文件名),并在其后添加“.test”,然后打印出来。- **xargs touch** 的作用是将前一个命令(`awk`)的输出作为参数传递给 `touch` 命令,从而创建对应的文件。- `ll` 是 `ls -l` 的别名,以长格式显示当前目录下文件和目录的详细信息,包括文件权限、所有者、大小、修改时间等。- **$NF** 是 awk 的内置变量,表示当前行的最后一个字段。

2025-06-06 11:33:35 475

原创 db2主从同步 逻辑复制中命令的执行位置

队列管理器(如 `QM_SOURCE` 和 `QM_TARGET`)相关的命令(`crtmqm`、`strmqm`、`runmqsc` 等)是通过 **IBM MQ 的命令行工具** 在 **操作系统的 Shell 终端** 中执行的,而不是在 DB2 的 SQL 环境中。- **所有队列管理器操作**(如创建、启动、定义队列)需在 **安装了 IBM MQ 的服务器** 的操作系统终端中执行。- **执行位置**:与 `crtmqm` 相同,需在队列管理器所在的服务器终端执行。

2025-06-05 12:34:30 280

原创 监控逻辑漏洞

监控逻辑仅检查 **CD表更新状态**(如 `IBMSNAP_REGISTRY.CD_NEW_SYNCHPOINT` 变更),认为此时同步已完成。- **`sync_log` 文件**:是复制完成的最终标志(由DB2 Apply程序在文件导出后生成),但存在 **1分钟延迟**。问题本质是**监控仅检测了复制中间状态(CD表更新),未覆盖最终完成标志(sync_log或导出文件)**。- **实际缺陷**:CD表更新仅表示 **变更数据已捕获**,但**尚未完成文件导出**(需额外时间)。

2025-06-05 07:56:32 542

原创 db2top命令 db2

:** 显示当前活动视图的**详细帮助 (Help)** 信息,列出该视图下可用的所有**子命令 (通常是单键)** 及其功能。要熟练掌握 `db2top`,关键在于熟悉主要视图的切换键 (`d`, `t`, `b`, `V`, `a`, `l`, `m`, `L`),并养成在**每个视图下按 `h` 查看详细子命令**的习惯。* 其他按键 (`d`, `t`, `b`, `a`, `u`, `i`, `m`, `L` 等) 用于快速切换到不同的性能监控维度。

2025-06-04 21:59:32 377

原创 面试题:设计一个类似 Twitter 的微型博客平台的核心 Feed 系统

这个设计围绕 **“读远大于写”** 和 **“低延迟读”** 的核心挑战,采用了 **写扩散为主 + 大V读扩散的混合模式**,并重度依赖 **Redis Sorted Sets 作为 Timeline Cache** 来实现毫秒级读取。* 对于查询到的**每个粉丝 (follower_id)**,将这条新推文的 `tweet_id` **插入**到该粉丝在 **Timeline Service (Redis)** 中的 `Home Timeline` Sorted Set (以时间戳为 Score)。

2025-06-02 12:02:27 317

原创 asn.ibmsnap_registry表 数据库同步

**捕获程序** 读取源数据库日志,从 `CD_OLD_SYNCHPOINT` 开始扫描变更,直至 `CD_NEW_SYNCHPOINT`。- 当复制周期成功完成后,`CD_NEW_SYNCHPOINT` 会更新为新的稳定位置,并同步更新 `CD_OLD_SYNCHPOINT`。- 此时 `CD_OLD_SYNCHPOINT` 同步更新为原 `CD_NEW_SYNCHPOINT` 的值。-- 替换为实际表名。- **问题:** 复制停止,`CD_NEW_SYNCHPOINT` 不更新。

2025-05-30 21:57:14 339

原创 db2主从同步 逻辑复制 事务合并导致的主键冲突问题

若从库仍报错,需检查 **Capture 程序的事务捕获逻辑**(如 `ASNQCCP` 参数 `GROUP_COMMIT` 是否关闭)。1. **事务未及时提交**:主库的两个操作(DELETE 和 UPDATE)未独立提交,被 Capture 程序识别为一个事务。- **问题根源**:若主库的两个操作未显式提交(如使用自动提交关闭),可能被 Capture 程序捕获为单个事务。2. **Apply 批处理设置**:Apply 程序默认批量提交事务,可能将多个主库事务合并处理。

2025-05-29 19:51:13 389

空空如也

空空如也

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

TA关注的人

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