服务端2月18日 17:37
C++ 性能怎么优化?编译器/缓存/并发三层面实战指南C++ 性能优化的核心原则是"先测量,再优化"。编译器层面,`-O2` 是发布标配,`-O3` 会启用更激进的自动向量化和循环展开但可能引入浮点精度变化;`-flto` 链接时优化让编译器跨翻译单元内联,`-march=native` 生成针对当前 CPU 的指令,非同构集群部署时禁用。内存层面,缓存命中率是第一瓶颈——CPU 从 L1 读数据约 1ns,从主存读约 100ns,差两个数量级;数据结构要按访问模式紧凑排列,避免伪共享(多线程各自原子递增同一缓存行的不同变量,每次都要跨核同步缓存行)。算法层面,选对容器比微优化重要百倍:`vector` 连续内存缓存友好,`unordere...服务端2月18日 17:38
C++ 网络编程怎么实现?socket/epoll/多路复用详解C++ 网络编程的核心是套接字(socket)加 I/O 多路复用。TCP 服务端流程:`socket()` 创建监听套接字 → `bind()` 绑定地址端口 → `listen()` 开始监听 → `accept()` 取出已连接套接字 → `recv()/send()` 读写数据。UDP 不需要 `listen/accept`,直接 `recvfrom()/sendto()` 收发数据报。当并发连接数上来后,需要 I/O 多路复用:`select` 用位图监控 fd 集合,每次调用都要重新构建,有 1024 个 fd 的上限;`poll` 用数组替代位图,没有数量限制,但仍然是 O...服务端2月18日 17:40
C++ 智能指针怎么用?unique_ptr/shared_ptr/weak_ptr 区别与陷阱C++ 智能指针通过 RAII 原则自动管理堆内存生命周期:对象在构造时获取资源,析构时释放资源,即使异常抛出也能保证析构函数执行。`unique_ptr` 表达独占所有权,不可拷贝只能移动,零开销抽象,性能等价于裸指针;`shared_ptr` 表达共享所有权,内部维护引用计数,最后一个 `shared_ptr` 析构时释放资源,引用计数操作是原子的所以线程安全,但指向对象本身的并发访问需要额外同步;`weak_ptr` 是 `shared_ptr` 的弱引用观察者,不增加引用计数,用来打破循环引用和实现缓存/观察者模式。优先用 `make_unique`/`make_shared` ...服务端2月18日 17:55
i18next 是什么?核心特性和插件体系详解i18next 是 JavaScript 生态中最成熟的国际化框架,核心定位是"框架无关的翻译运行时"。它不绑定 React/Vue/Angular,核心库可以在 Node.js、浏览器、React Native 任何环境运行。核心特性包括:**命名空间**——把翻译按模块拆成多个 JSON,按需加载,避免单文件膨胀;**插值**——`{{name}}` 语法在翻译文本中嵌入动态值,支持格式化函数;**复数**——内置各语言的复数规则(英语 1 item / 2 items,阿拉伯语有 6 种复数形式),不需要手动判断;**延迟加载**——配合 `i18next-http-backend...服务端2月18日 17:55
i18next 怎么初始化配置?resources/命名空间/插件集成指南i18next 初始化配置是前端国际化的核心环节。`i18next.init()` 接收一个配置对象,最关键的几个选项:`lng` 设置当前语言,`fallbackLng` 指定翻译缺失时的回退语言,`resources` 直接内联翻译资源,`ns` 和 `defaultNS` 管理命名空间拆分。React 项目需要通过 `initReactI18next` 插件注入 i18next 实例,否则 `useTranslation` hook 无法工作。语言检测用 `i18next-browser-languagedetector`,可以按 querystring → cookie → lo...服务端2月18日 17:56
i18next 插值、复数、上下文怎么用?{{变量}}/CLDR/context 详解i18next 的插值通过 `{{variable}}` 语法实现变量替换,如 `t('hello', { name: 'Tom' })` 对应翻译文件中 `Hello {{name}}`。数组插值用 `{{arr,0}}` 按索引取值。嵌套插值用 `$t(key)` 引用其他翻译条目,实现翻译文本的复用。复数处理根据语言类型自动匹配:英语等单复数语言使用 `key_one`/`key_other` 后缀,俄语等有复杂复数规则的语种遵循 CLDR 规范自动映射对应后缀(如 `key_zero`/`key_one`/`key_few`/`key_many`/`key_other`)。上下文...服务端2月18日 17:56
React 项目怎么用 react-i18next?useTranslation/Trans/HOC 详解`react-i18next` 是 i18next 的 React 绑定层,核心 API 有三个:`useTranslation` Hook、`withTranslation` HOC、`Trans` 组件。`useTranslation` 是最常用的方式,返回 `t` 函数和 `i18n` 实例,组件内调用 `t('key')` 即可获取翻译文本,语言切换时自动重渲染。`withTranslation` 是类组件的对应方案,通过 props 注入 `t` 函数。`Trans` 组件用于处理含 HTML 标签的翻译,如 `Hello <bold>World</bold>`,翻译文件中对应...服务端2月18日 17:57
i18next-http-backend 怎么远程加载翻译资源?配置/缓存/SSR`i18next-http-backend` 是 i18next 官方的远程翻译资源加载插件,核心配置项 `loadPath` 指定资源 URL 模板,支持 `{{lng}}` 和 `{{ns}}` 占位符,插件会在初始化或切换语言时自动请求对应 JSON 文件。`savePath` 用于回写(如新增 key 时持久化),默认 `/locales/add/{{lng}}/{{ns}}`。自定义请求可通过 `request` 选项替换默认 fetch 实现,适用于需要加鉴权头或自定义错误处理的场景。缓存方面,配合 `i18next-localstorage-backend` 可将已加载资源...服务端2月18日 17:58
i18next 性能怎么优化?延迟加载/缓存/减少重渲染方案i18next 性能优化的核心思路是减少首次加载体积和降低不必要的重渲染。延迟加载命名空间是最直接的手段,将非关键翻译(如后台管理页面的文案)设为按需加载,首屏只加载 `common` 等必要命名空间。配合 `i18next-http-backend` 实现翻译资源的远程加载,避免将全部语言的 JSON 打进 JS Bundle。语言维度同样按需加载,当前语言加载完毕后再预加载用户可能切换的语言。Bundle 层面,i18next 内部依赖了 lodash,应使用 lodash-es 或手动替换为轻量实现以支持 tree-shaking。React 侧,`react-i18next` 的...服务端2月18日 17:58
i18next 怎么检测和切换语言?浏览器/SSR 方案详解i18next 通过 `i18next-browser-languagedetector` 插件实现语言检测,默认按 querystring → cookie → localStorage → navigator → htmlTag 的顺序依次探测,命中即停止。检测结果默认写入 localStorage 和 cookie 做持久化,可通过 `cacheUserLanguage` 自定义缓存方式。手动切换语言调用 `i18n.changeLanguage('zh')`,该方法内部会重新触发初始化流程并发出 `languageChanged` 事件。在 React 中,`react-i18n...