Redis 安装配置和性能优化
目录
简介
一、Redis 基础概念与优势
1.1 关系型与非关系型数据库对比
1.2 Redis 核心特性
二、Redis 部署
2.1 环境准备与源码安装
2.2 服务脚本配置与启动
三、Redis 配置参数
四、Redis 命令工具与常用操作
4.1 命令行工具(redis-cli)
4.2 性能测试工具(redis-benchmark)
五、Redis 持久化机制
5.1 RDB 持久化:快照存储
5.2 AOF 持久化:日志追加
5.3 RDB 与 AOF 如何选择
六、Redis 性能优化与内存管理
6.1 内存碎片率
碎片率优化策略:
6.2 内存使用率控制
优化手段:
6.3 内存淘汰策略优化
策略选择建议:
七、总结与最佳实践
Redis 核心优势总结
生产环境最佳实践
简介
Redis 作为高性能内存键值存储系统,在现代互联网架构中扮演着核心角色。本文将从基础概念入手,详细介绍 Redis 的安装部署、核心配置、常用命令、持久化机制及性能优化策略,帮助读者全面掌握 Redis 技术栈。
一、Redis 基础概念与优势
1.1 关系型与非关系型数据库对比
关系型数据库(SQL) 基于二维表格模型,通过 SQL 语句操作数据,典型代表有 MySQL、Oracle 等。其优势在于数据一致性高、事务支持完善,但在应对高并发读写、海量数据存储和横向扩展时存在瓶颈。
非关系型数据库(NoSQL) 是“Not Only SQL”的缩写,包括 Redis、MongoDB 等。它们具有非关系型、分布式、开源及横向扩展等特点,专门解决传统数据库在 Web 2.0 场景下的“三高”问题:
- High Performance:应对每秒上万次的高并发读写
- Huge Storage:处理海量数据的高效存储与查询
- High Scalability & Availability:支持灵活的横向扩展与高可用架构
1.2 Redis 核心特性
Redis(Remote Dictionary Server)是基于内存的开源 NoSQL 数据库,采用 key-value 存储形式,具有以下显著优势:
- 高性能:数据读取速度最高达 110000 次/秒,写入速度 81000 次/秒
- 丰富数据类型:支持 Strings、Lists、Hashes、Sets、Ordered Sets 等
- 持久化支持:提供 RDB 和 AOF 两种持久化方式,保障数据安全
- 原子性操作:所有命令均为原子性执行
- 主从复制:支持 master-slave 模式实现数据备份与读写分离
二、Redis 部署
2.1 环境准备与源码安装
在 Linux 系统中安装 Redis 需先准备编译环境,以下是完整安装流程:
# 安装编译工具(GCC、Make 等)
[root@localhost src]# dnf -y install tar gcc make# 解压 Redis 源码包(以 redis-4.0.9 为例)
[root@localhost src]# tar xvzf redis-4.0.9.tar.gz# 进入源码目录
[root@localhost src]# cd redis-4.0.9/# 编译 Redis(使用默认配置)
[root@localhost redis-4.0.9]# make# 安装到指定目录(/usr/local/redis)
[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install# 创建软链接方便全局调用
[root@localhost ~]# ln -s /usr/local/redis/bin/* /usr/local/bin/
命令解释:
-
dnf install
:安装编译所需的工具包 -
tar xvzf
:解压 Redis 源码压缩包 -
make
:编译 Redis 源码 -
make install
:将二进制文件安装到指定目录 -
ln -s
:创建软链接,使 Redis 命令可在任意路径执行
2.2 服务脚本配置与启动
Redis 源码包提供了安装脚本,可快速配置为系统服务:
# 进入工具脚本目录
[root@localhost redis-4.0.9]# cd utils/# 运行安装脚本(交互式配置)
[root@localhost utils]# ./install_server.sh# 查看 Redis 服务监听端口
[root@localhost utils]# netstat -lnupt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 5494/redis-server# 服务控制示例
[root@localhost ~]# /etc/init.d/redis_6379 stop # 停止服务
[root@localhost ~]# /etc/init.d/redis_6379 start # 启动服务
[root@localhost ~]# /etc/init.d/redis_6379 restart # 重启服务
[root@localhost ~]# /etc/init.d/redis_6379 status # 查看状态
脚本配置说明:
- 安装脚本会引导用户配置端口(默认 6379)、配置文件路径、日志文件路径等
- 生成的服务脚本位于
/etc/init.d/redis_6379
,支持系统服务管理 -
netstat
命令用于验证 Redis 服务是否正常启动并监听指定端口
三、Redis 配置参数
Redis 主配置文件为 /etc/redis/6379.conf
,以下是关键配置项解析:
# 基础网络配置
bind 127.0.0.1 192.168.10.161 # 监听的主机地址,可指定多个IP
pidfile /var/run/redis_6379.pid # PID文件路径,用于进程管理
port 6379 # 服务端口号
daemonize yes # 以守护进程模式运行,后台启动# 日志配置
loglevel notice # 日志级别(debug/verbose/notice/warning)
logfile /var/log/redis_6379.log # 日志文件路径# 持久化配置(RDB)
save 900 1 # 900秒内至少1个key变更则生成RDB快照
save 300 10 # 300秒内至少10个key变更则生成快照
save 60 10000 # 60秒内至少10000个key变更则生成快照
dbfilename dump.rdb # RDB文件名
dir /var/lib/redis/6379 # 数据文件存储目录# 连接与资源限制
timeout 300 # 客户端闲置300秒后关闭连接(0表示禁用)
maxclients 10000 # 最大客户端连接数(0表示不限制)
maxmemory 17179869184 # 最大内存限制(16GB)
maxmemory-policy allkeys-lru # 内存不足时的淘汰策略(LRU算法)# 安全配置
requirepass foobared # 客户端连接密码(需通过AUTH命令验证)# AOF持久化配置
appendonly yes # 启用AOF持久化
appendfilename appendonly.aof # AOF文件名
appendfsync everysec # AOF同步策略(always/everysec/no)
no-appendfsync-on-rewrite yes # AOF重写时暂停同步
auto-aof-rewrite-percentage 100 # AOF文件体积增长100%时触发重写
auto-aof-rewrite-min-size 64mb # AOF重写的最小文件体积
关键配置说明:
- bind:建议在生产环境中绑定具体IP,避免公网暴露
- maxmemory:根据服务器内存大小设置,通常为物理内存的45%-95%
- maxmemory-policy:常用策略包括
allkeys-lru
(淘汰最少使用键)、volatile-ttl
(淘汰即将过期键) - appendfsync:AOF同步策略中,
everysec
是性能与安全性的平衡选择 - RDB与AOF:建议同时启用两种持久化方式,RDB用于快速恢复,AOF用于减少数据丢失
四、Redis 命令工具与常用操作
4.1 命令行工具(redis-cli)
redis-cli 是 Redis 的官方命令行客户端,支持连接与操作 Redis 服务器:
# 连接本地 Redis 服务器
[root@localhost ~]# redis-cli
127.0.0.1:6379> ping # 测试连接,返回PONG表示正常# 连接远程 Redis 服务器(带密码)
[root@localhost ~]# redis-cli -h 192.168.10.161 -p 6379 -a "password"# 查看命令帮助
127.0.0.1:6379> help @list # 查看List类型相关命令
127.0.0.1:6379> help set # 查看set命令详细说明# 数据操作示例
127.0.0.1:6379> set teacher zhanglong # 存储键值对
OK
127.0.0.1:6379> get teacher # 获取键值
"zhanglong"# key相关操作
127.0.0.1:6379> keys * # 查看所有key
1) "teacher"
2) "k1"
127.0.0.1:6379> exists teacher # 判断key是否存在
(integer) 1
127.0.0.1:6379> del teacher # 删除key
(integer) 1
参数解析:
-
-h
:指定远程服务器IP -
-p
:指定端口号 -
-a
:指定连接密码 -
help @group
:按功能分组查看命令 -
keys *
:通配符查询,生产环境慎用(可能阻塞服务器)
4.2 性能测试工具(redis-benchmark)
redis-benchmark 用于测试 Redis 服务器的性能表现:
# 基本性能测试(100并发,10万请求)
[root@localhost ~]# redis-benchmark -h 192.168.10.161 -p 6379 -c 100 -n 100000
8225.04 requests per second # 每秒处理请求数# 测试指定数据大小的性能(100字节)
[root@localhost ~]# redis-benchmark -h 192.168.10.161 -p 6379 -q -d 100
PING_NLINE: 88261.25 requests per second # 不同操作的性能指标
SET: 83612.04 requests per second
GET: 84961.77 requests per second# 测试特定命令的性能(set和lpush)
[root@localhost ~]# redis-benchmark -t set,lpush -n 100000 -q
SET: 85763.29 requests per second
LPUSH: 86580.09 requests per second
选项说明:
-
-c
:并发连接数 -
-n
:总请求数 -
-d
:SET/GET值的字节大小 -
-t
:指定测试的命令列表 -
-q
:仅显示每秒请求数(query/sec)
五、Redis 持久化机制
5.1 RDB 持久化:快照存储
RDB(Redis Database)将内存中的数据定时快照到磁盘,形成二进制文件(dump.rdb)。
RDB 工作原理
- Redis fork 出子进程
- 子进程将数据集写入临时文件
- 写入成功后替换旧的 RDB 文件
RDB 优缺点
- 优点:
- 文件体积小,便于备份与迁移
- 恢复速度快,适合大规模数据集
- 持久化过程对主进程影响小(子进程执行)
- 缺点:
- 数据安全性低,可能丢失最近一次快照后的所有数据
- 大规模数据集快照时可能导致服务器短暂阻塞
RDB 配置优化
# 调整快照触发条件(示例:更频繁的快照)
save 300 1 # 5分钟内1个key变更即快照
save 60 10 # 1分钟内10个key变更即快照
5.2 AOF 持久化:日志追加
AOF(Append Only File)以日志形式记录所有写操作,重启时重放日志恢复数据。
AOF 工作原理
- 客户端发送写命令到服务器
- 服务器将命令追加到 AOF 缓冲区
- 根据配置策略将缓冲区内容同步到磁盘
AOF 优缺点
- 优点:
- 数据安全性高,可配置为每秒同步或实时同步
- 日志文件以文本格式存储,可读性强
- 支持自动重写(rewrite),避免日志文件过大
- 缺点:
- 文件体积通常大于 RDB
- 恢复速度慢于 RDB
- 频繁同步会影响性能
AOF 配置优化
# 启用AOF并优化配置
appendonly yes # 启用AOF
appendfsync everysec # 每秒同步(平衡性能与安全)
auto-aof-rewrite-percentage 200 # 体积增长200%时触发重写
auto-aof-rewrite-min-size 100mb # 重写最小体积100MB
5.3 RDB 与 AOF 如何选择
- 优先使用 AOF:适用于对数据安全性要求高的场景(如金融交易)
- 优先使用 RDB:适用于对恢复速度要求高、允许少量数据丢失的场景(如缓存)
六、Redis 性能优化与内存管理
6.1 内存碎片率
内存碎片率是衡量 Redis 内存使用效率的重要指标,可通过 info memory
命令查看:
192.168.9.236:7001> info memory
# Memory
used_memory: 1789108864 # Redis分配的内存总量(字节)
used_memory_human: 1.67G # 人类可读格式
used_memory_rss: 1834389504 # 操作系统分配的物理内存
mem_fragmentation_ratio: 1.03 # 内存碎片率(理想值≈1)
碎片率优化策略:
- 碎片率 > 1.5:重启 Redis 服务,释放无效碎片
# 安全重启(先保存数据再关闭)
127.0.0.1:6379> shutdown save
- 碎片率 < 1:说明发生内存交换,需增加物理内存或减少 Redis 内存占用
- 调整内存分配器:Redis 支持
libc
、jemalloc
、tcmalloc
,可编译时指定
6.2 内存使用率控制
优化手段:
- 使用 32 位实例:当数据量 < 4GB 时,32 位实例可减少内存占用
# 编译时指定32位模式(修改Makefile)
# CFLAGS= -m32 make
- 合理使用 Hash 结构:存储对象时使用 Hash 而非多个 String
# 推荐方式:单个Hash存储用户信息
127.0.0.1:6379> hset user:1 name "张三" age 25 job "developer"
# 避免方式:多个String存储
127.0.0.1:6379> set user:1:name "张三"
127.0.0.1:6379> set user:1:age 25
- 设置 key 过期时间:主动淘汰无效数据
127.0.0.1:6379> set token abc123 ex 3600 # 1小时后过期
127.0.0.1:6379> expire user:10086 86400 # 设置key有效期为1天
6.3 内存淘汰策略优化
通过 maxmemory-policy
配置内存不足时的淘汰策略:
# 常用淘汰策略配置
maxmemory-policy allkeys-lru # 对所有key使用LRU算法淘汰
# maxmemory-policy volatile-ttl # 对过期key中优先淘汰TTL短的
# maxmemory-policy allkeys-random # 随机淘汰
策略选择建议:
- 数据集包含大量过期键:
volatile-ttl
- 希望淘汰最少使用的键:
allkeys-lru
- 对淘汰策略不敏感:
allkeys-random
- 禁止淘汰(仅读操作):
no-enviction
七、总结与最佳实践
Redis 核心优势总结
- 内存存储带来的极致性能(十万级 QPS)
- 丰富的数据结构(String/List/Hash/Set/ZSet)
- 完善的持久化与高可用方案(RDB/AOF/主从/集群)
- 简单易用的命令体系与客户端支持
生产环境最佳实践
- 部署优化:
- 绑定具体 IP,禁止公网访问
- 设置强密码(
requirepass
) - 启用后台守护进程(
daemonize yes
)
- 持久化优化:
- 同时启用 RDB 和 AOF
- AOF 采用
everysec
同步策略 - 定期备份 RDB 文件到异地存储
- 内存优化:
- 设置
maxmemory
为物理内存的 45%-95% - 采用
allkeys-lru
淘汰策略 - 合理使用 Hash 结构与过期时间
- 监控与运维:
- 实时监控内存碎片率、CPU 使用率
- 配置告警(内存不足、持久化失败)
- 定期进行主从切换演练
通过掌握上述 Redis 技术要点,开发者可以在缓存加速、实时计数、排行榜、消息队列等场景中充分发挥 Redis 的性能优势,构建高效稳定的分布式系统。
相关文章:
Redis 安装配置和性能优化
目录 简介 一、Redis 基础概念与优势 1.1 关系型与非关系型数据库对比 1.2 Redis 核心特性 二、Redis 部署 2.1 环境准备与源码安装 2.2 服务脚本配置与启动 三、Redis 配置参数 四、Redis 命令工具与常用操作 4.1 命令行工具(redis-cli) 4.2…...

购物商城网站 Java+Vue.js+SpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块
购物商城网站 JavaVue.jsSpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块 百度云盘链接:https://pan.baidu.com/s/10W0kpwswDSmtbqYFsQmm5w 密码:68jy 摘 要 随着科学技术的飞速发展,各行各业都在…...
PostgreSQL 安全纵深防御:从权限到加密
文章目录 PostgreSQL 安全纵深防御:从权限到加密 第一章:角色与权限体系 - PostgreSQL的安全基石 1.1 角色(ROLE)的本质与演进1.2 权限模型的三层架构1.3 GRANT/REVOKE 实战精解1.4 默认权限(DEFAULT PRIVILEGES&#…...
【美团技术团队】从实际案例聊聊Java应用的GC优化
【美团技术团队】从实际案例聊聊Java应用的GC优化 1. 美团技术团队优秀文章2. 绪论 1. 美团技术团队优秀文章 Java NIO浅析 https://tech.meituan.com/2016/11/04/nio.html红黑树深入剖析及Java实现 https://tech.meituan.com/2016/12/02/redblack-tree.htmlJava 8系列之重新认…...

在word中点击zotero Add/Edit Citation没有反应的解决办法
重新安装了word插件 1.关掉word 2.进入Zotero左上角编辑-引用 3.往下滑找到Microsoft Word,点重新安装加载项...

整合swagger,以及Knife4j优化界面
因为是前后端项目,需要前端的参与,所以一个好看的接口文档非常的重要 1、引入依赖 美化插件其中自带swagger的依赖了 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter&…...

Unity | AmplifyShaderEditor插件基础(第四集:简易shader)
一、👋🏻前言 大家好,我是菌菌巧乐兹~本节内容主要讲一下,第一个用ASE的shader。 我们用通用的光照模版吧。(universal-通用/Lit-光照) 通用的光照模版 如果你尝试建设了,会发现Universal这个…...
【安全攻防与漏洞】量子计算对HTTPS的威胁:后量子密码学进展
⚛️ 一、量子计算对HTTPS的核心威胁 Shor算法破解非对称加密 Shor算法可高效分解大整数(破解RSA)和计算椭圆曲线离散对数(破解ECC),而HTTPS依赖的TLS握手阶段依赖RSA/ECC进行密钥交换和身份验证。一旦实用化量子计算…...

linux C语言中的动态库 静态库说明
静态库 gcc -fpic -c add.c sub.c 这个命令之后会得到 add.o 于 sub.o (-c 只编译不链接) ar rcs mymath.a add.o sub.o 将编译好的文件编译成.a静态库用于调用 在使用中 gcc main.c -I../include ../lib/mymarh.a -0 mytest 需要这个函数的声明放在include文件下…...

Flash烧录速度和加载配置速度(纯FPGA ZYNQ)
在工程综合完成或者implement完成后,打开综合设计或者实现设计。 toots--->Edit Device Properties--->打开比特流设置 将bitstream进行压缩 上图中,时钟频率选择的档位有限,最大为66MHZ io的bus width可以设置为x1,x2,x4 vivado在设计…...

解构与重构:PLM 系统如何从管理工具进化为创新操作系统?
在智能汽车、工业物联网等新兴领域的冲击下,传统产品生命周期管理(PLM)系统正在经历前所未有的范式转换。当某头部车企因 ECU 软件与硬件模具版本失配导致 10 万辆智能电车召回,损失高达 6 亿美元时,这场危机不仅暴露了…...

Redis:介绍和认识,通用命令,数据类型和内部编码,单线程模型
介绍和认识 Redis是一个基于内存的,高性能的,支持许多数据类型的NoSQL数据库,可以持久化,也支持分布式。 在许多的互联网产品中,对于数据库的访问速度要求很高,例如Mysql数据库无法满足其要求,…...
N2语法 強調、限定
1,~限りでは 接続:认知类动词 意味:据…所… 例文: 私の知る限りでは、彼は悪い人ではありません。(据我所知,他不是坏人) 私の調べた限りでは、彼は悪人では…...
OpenAI 即将推出 GPT-5:开启多模态、持续记忆对话新时代
2025年5月起,关于 OpenAI 新一代旗舰模型 GPT-5 的传闻不断升温。根据多方可信消息,OpenAI 正在积极准备 GPT-5 的正式发布,预计将在 2025 年夏末上线。这一代模型不仅是在规模上的升级,更是在能力与交互模式上的一次突破。 本文…...
《前端面试题:CSS预处理器(Sass、Less等)》
CSS预处理器深度解析:Sass与Less的全面指南 掌握CSS预处理器是现代前端开发的必备技能,也是提升开发效率的关键工具 一、为什么需要CSS预处理器? 在现代前端开发中,原生CSS的局限性日益明显: 缺乏编程特性࿰…...

嵌入式开发之STM32学习笔记day20
STM32F103C8T6 PWR电源控制 1 PWR简介 PWR(Power Control)电源控制单元是STM32微控制器中一个重要的组成部分,它负责管理系统的电源管理功能,以优化功耗并提高效率。PWR负责管理STM32内部的电源供电部分,可以实现可编…...
vue-19(Vuex异步操作和变更)
异步操作和变更 异步操作和变异对于 Vuex 中的状态管理至关重要,尤其是在处理数据获取、API 调用或任何需要时间完成的操作时。正确处理异步操作可以确保应用程序的状态保持一致和可预测。本章将深入探讨异步操作的复杂性、它们与变异的关系以及有效管理它们的最佳…...
人工智能-Chain of Thought Prompting(思维链提示,简称CoT)
Chain of Thought Prompting(思维链提示,简称CoT) 是一种通过引导大模型生成中间推理步骤来增强其复杂问题解决能力的技术。它让模型在回答问题时,不仅输出最终答案,还展示出逐步分解问题、逻辑推理的过程。以下是大模…...
[GESP202412 五级] 奇妙数字 题解
解题思路引用 FJ_EYoungOneC的解法 数字 x 是奇妙数字当且仅当 xpa 其中 p 为任意质数且 a 为正整数。 那么我们可以对 n 进行质因子分解,并统计每个质数因子的个数。 假设数字 n 含有 9 个因子 2,那么可以凑出 21,22,23,共三个数。 那么…...
《操盘实战》速读笔记
文章目录 书籍信息概览第一部分 趋势困惑第二部分 入仓困惑第三部分 止损困惑第四部分 止盈困惑第五部分 资管困惑第六部分 交易系统困惑第七部分 心态困惑 书籍信息 书名:《操盘实战:如何走出股票、期货的交易困境》 作者:张胜波 概览 第…...
元素 “cas:serviceResponse“ 的前缀 “cas“ 未绑定
错误信息“元素 ‘cas:serviceResponse’ 的前缀 ‘cas’ 未绑定”表明 XML 文档包含带有命名空间前缀 cas 的元素,但未定义或正确绑定该前缀。以下是解决此问题的步骤: 1. 理解问题 XML 命名空间:XML 元素可以通过前缀(如 cas&…...
CppCon 2014 学习:CHEAP, SIMPLE, AND SAFE LOGGING USING C++ EXPRESSION TEMPLATES
这段代码定义了一个简单的日志宏 LOG,用来在代码里方便地打印调试信息。 代码细节解析: #define LOG(msg) \if (s_bLoggingEnabled) \std::cout << __FILE__ << "(" << __LINE__ << "): " << msg &…...

专业级PDF转CAD解决方案
PDF 文件因其出色的便携性和稳定性,已成为许多用户的首选格式。但在涉及图像编辑或精细调整时,CAD 文件显然更具优势。 这款 CAD 图纸转换工具,界面清爽、操作直观,是处理图纸文件的理想助手。 它不仅支持不同版本 CAD 文件之间…...
如何屏蔽端口
通过Windows防火墙屏蔽端口 1. 按下“Windows”键“R”键,输入“control”并回车,打开控制面板。 2. 在控制面板中找到“系统和安全”,点击进入。 3. 选择“Windows Defender 防火墙”,然后在左侧点击“高级设置”。 4.…...
nvidia系列教程-agx-orin安装ros
目录 前言 一、安装前的准备工作 二、ROS安装 三、ROS验证 总结 前言 在机器人开发、自动驾驶等领域,NVIDIA Jetson AGX Orin 凭借其强大的算力成为开发者的得力工具。而 ROS(Robot Operating System)作为机器人领域广泛使用的开源框架,为开发者提供了丰富的功能和工具。…...

STM32 智能小车项目 两路红外循迹模块原理与实战应用详解
在嵌入式系统、机器人、智能设备等场景中,红外反射型光电传感器 被广泛应用于黑白识别、障碍检测、物体计数、位置判断等任务。其中,RPR220 是一款性能稳定、体积小巧的红外光电收发管,本文将详细介绍其工作原理、引脚参数、接线说明以及典型…...
[论文阅读] 软件工程 | 量子计算如何赋能软件工程(Quantum-Based Software Engineering)
arXiv:2505.23674 [pdf, html, other] Quantum-Based Software Engineering Jianjun Zhao Subjects: Software Engineering (cs.SE); Quantum Physics (quant-ph) 量子计算如何赋能软件工程 我们在开发软件时,常常会遇到一些棘手的问题。比如,为了确保软…...

SSL安全证书怎么安装?
SSI并非一个标准的、广为人知的安全证书类型,通常网站安装的是SSL/TLS证书,用于加密网站和用户浏览器之间的通信,保障数据传输安全。以下以安装SSL/TLS证书为例,介绍网站安装证书的步骤: 一、证书申请与获取 选择证书…...
Python爬虫实战:研究RoboBrowser库相关技术
1. 引言 1.1 研究背景与意义 随着电子商务的快速发展,商品信息呈现爆炸式增长。据 Statista 数据显示,2025 年全球电子商务销售额预计将达到 7.4 万亿美元,海量的商品数据蕴含着巨大的商业价值。对于电商企业而言,及时获取竞争对手的产品信息、价格动态和用户评价,能够帮…...

电子电器架构 --- OTA测试用例分析(上)
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...