InkEcho

百无聊赖,思纪碎语

这是一篇用于测试 Cloudflare Pages 自动部署的文章。

如果你能看到这篇文章,说明部署流程已经成功配置!

测试内容

  • Obsidian 写作
  • GitHub 同步
  • Cloudflare Pages 自动构建

下一步

现在你可以:

  1. 删除这篇文章
  2. 开始用 Obsidian 写你自己的文章
  3. 通过 GitHub 推送后,网站会自动更新

WebSocket是实现实时通信的关键技术。本文介绍WebSocket的使用方法和最佳实践。

为什么需要WebSocket

HTTP是请求-响应模式,服务器无法主动推送数据。WebSocket建立持久连接,支持双向通信。

简单示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 服务端
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
ws.on('message', (message) => {
console.log('收到:', message);
ws.send('收到消息');
});
});

// 客户端
const ws = new WebSocket('ws://localhost:8080');
ws.onopen = () => ws.send('Hello');

应用场景

  • 聊天应用
  • 实时通知
  • 在线游戏
  • 股票行情

注意事项

  • 处理断线重连
  • 心跳检测保活
  • 消息压缩优化

WebSocket让实时应用成为可能!

2025年第一季度结束了,做个简单复盘。

工作成就

  1. 完成支付系统重构
  2. 主导技术分享3次
  3. 带了一个应届生

学习进展

  • 系统学习了领域驱动设计
  • 阅读了5本技术书籍
  • 完成了一个开源项目贡献

不足之处

  • 英语口语练习不够
  • 运动计划执行不严格
  • 睡眠质量有所下降

下季度目标

  1. 提升英语水平
  2. 恢复规律运动
  3. 产出更多技术文章

保持进步,每天都比昨天好一点。

微服务架构已经成为现代后端开发的主流选择。本文分享微服务设计的关键要点。

核心原则

  1. 单一职责 - 每个服务只负责一块业务
  2. 松耦合 - 服务间通过API通信
  3. 高内聚 - 相关功能放在同一服务

服务拆分

按业务能力拆分:

  • 用户服务
  • 订单服务
  • 支付服务
  • 物流服务

服务通信

  • 同步:REST API、gRPC
  • 异步:消息队列

关键挑战

  • 服务治理
  • 数据一致性
  • 分布式事务

微服务是手段,不是目的。

坚持健身已经半年了,身体状态明显改善,分享一下我的健身计划。

每周训练安排

  • 周一/周三/周五:力量训练
  • 周二/周四:有氧运动
  • 周六:核心训练
  • 周日:休息

力量训练内容

  1. 深蹲 - 4组x12次
  2. 卧推 - 4组x10次
  3. 引体向上 - 4组x8次
  4. 硬拉 - 3组x8次

饮食注意

  • 蛋白质摄入要充足
  • 训练后补充碳水化合物
  • 多喝水,少吃加工食品

健身是一场马拉松,坚持才是胜利。

Node.js性能优化是构建高并发应用的关键。以下是我总结的优化技巧。

内存管理

使用 --max-old-space-size 调整堆内存:

1
node --max-old-space-size=4096 server.js

事件循环

避免在事件循环中执行重计算:

1
2
3
4
5
6
7
8
// 使用setImmediate分批处理
function processBatch(items) {
const batch = items.splice(0, 100);
batch.forEach(processItem);
if (items.length > 0) {
setImmediate(() => processBatch(items));
}
}

集群模式

利用多核CPU:

1
2
3
4
5
6
7
8
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
}

性能优化需要持续监测和改进。

Scrum之父Jeff Sutherland的这本书,让我对敏捷开发有了全新的认识。

核心思想

敏捷不是方法论,而是一种思维方式。核心是快速迭代、持续改进。

Scrum框架

  • Sprint - 1-4周的迭代周期
  • Daily Scrum - 每日站会
  • Sprint Review - 迭代评审
  • Retrospective - 复盘会议

关键实践

  1. 制定清晰的目标
  2. 保持稳定的节奏
  3. 持续交付价值
  4. 定期反思改进

敏捷的本质是拥抱变化,以人为本。

CSS Grid是现代布局利器,比Flexbox更适合复杂的页面布局。

基本概念

  • grid container - 网格容器
  • grid item - 网格项
  • grid line - 网格线
  • grid cell - 网格单元格

简单示例

1
2
3
4
5
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}

常用属性

  • grid-template-columns/rows - 定义网格轨道
  • grid-area - 命名网格区域
  • grid-column/row - 指定项目位置

Grid让复杂布局变得简单!

利用端午假期去云南走了一圈,大理的苍山洱海给我留下了深刻的印象。

行程安排

  • Day1: 抵达大理,游洱海
  • Day2: 苍山徒步
  • Day3: 丽江古城
  • Day4: 玉龙雪山

洱海环湖

租了一辆电动车环洱海骑行,全程140公里。湖光山色,美不胜收。

美食推荐

  • 云南过桥米线
  • 腊排骨火锅
  • 鲜花饼

旅行的意义在于暂时离开熟悉的环境,感受不同的风土人情。

数据库性能优化是后端开发的重要课题。本文介绍索引优化的技巧。

索引类型

  • B-Tree索引 - 默认索引类型
  • Hash索引 - 适合等值查询
  • 全文索引 - 适合文本搜索

优化建议

  1. 选择合适的列建立索引
  2. 遵循最左前缀原则
  3. 避免在索引列上使用函数
  4. 控制索引数量

实战案例

1
2
3
4
5
-- 优化前
SELECT * FROM users WHERE YEAR(created_at) = 2024;

-- 优化后
SELECT * FROM users WHERE created_at >= '2024-01-01' AND created_at < '2025-01-01';

合理的索引设计能大幅提升查询性能。

0%