微信通知
基于企业微信与小程序集成,通过API获取access_token,查询通讯录并匹配医生信息,异步发送小程序通知消息。需配置企业微信appId、secret及小程序信息,实现订单提醒等场景的精准推送。
一场FullGC故障排查
本文通过一次JDOS容器CPU使用率达104%的告警,深入排查发现系Full GC频繁触发所致。结合JVM监控与堆内存分析工具JProfiler,定位到因将大Excel样本加载为List<Map>导致堆内存膨胀,进而引发Full GC。进一步分析显示HashMap存储效率低是主因,空间利用率不足18%。最终提出“激进治疗”(移出JVM内存)与“保守治疗”(精简字段)两类解决方案,并总结了从现象到本质的完整排查思路,强调关注JVM而非仅机器监控的重要性。
3.1 数据库设计
本文介绍基于三范式与DDD的数据库设计流程,结合AI工具辅助分析页面原型,通过部门、员工及工作经历模块演示表结构设计与优化,强调人工校验与调整的重要性,并完成MySQL建表与数据初始化。
1-MongoDB相关概念
MongoDB是一款高性能、无模式的文档型NoSQL数据库,适用于高并发、海量数据、高扩展性场景。适用于社交、游戏、物联网、物流、直播等应用,支持JSON风格BSON存储,具备丰富查询、索引、分片、副本集等功能,适合非事务性、频繁读写、灵活 schema 的业务需求。
3-MongoDB常用命令
本案例介绍如何使用MongoDB存储文章评论数据,涵盖数据库与集合的创建、删除,文档的增删改查、批量操作、投影查询、分页排序及统计功能,全面掌握MongoDB基本操作。
零拷贝
实现高效文件传输需减少上下文切换与内存拷贝。传统方式频繁系统调用导致性能低下,而零拷贝技术通过合并读写操作、利用PageCache和SG-DMA,将切换和拷贝次数降至最低。大文件场景则宜用异步IO+直接IO避免缓存污染,提升并发性能。
One Trick Per Day
初始化Map应避免容量设置不当,Guava的`newHashMapWithExpectedSize`或手动计算初始容量。禁止使用`Executors`创建线程池,易因无界队列或过多线程导致OOM,应显式使用`ThreadPoolExecutor`并设有限队列。`Arrays.asList`返回不可变列表,禁止修改操作。遍历Map时优先使用`entrySet`或JDK8的`forEach`提升性能。`SimpleDateFormat`非线程安全,用`ThreadLocal`隔离或改用Java 8新时间API。并发更新记录需加锁,推荐乐观锁(version控制),冲突率低时更高效,重试不少于3次。
4-MongoDB索引知识
MongoDB索引通过B树结构提升查询效率,避免全表扫描。支持单字段、复合、地理空间、文本及哈希索引,优化相等匹配、范围查询、排序等操作,显著提升大数据量下的查询性能。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,所有泛型信息被移除,仅保留原始类型(如Object或限定类型)。例如,List<String>和List<Integer>在运行时均为List,导致无法通过instanceof判断泛型类型。类型检查在编译期完成,基于引用而非对象本身。擦除后的方法调用通过桥接方法和自动强转实现多态兼容。静态成员不能使用类的泛型参数,因泛型实例化依赖对象创建,而静态上下文无此支持。
4.3 服务端(Cursor)-接口开发(员工管理)
基于SpringBoot+Mybatis+PageHelper,使用JDK8+新语法实现员工管理功能,涵盖分页查询、新增、修改、删除、详情及全量查询接口,操作emp与emp_expr表,支持多条件筛选与级联工作经历处理,高效完成前后端交互。