<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"><channel><title>杨杨得议</title><link>https://yanglei.ltd</link><atom:link href="https://yanglei.ltd/rss.xml" rel="self" type="application/rss+xml"/><description>生而为学，死亦无悔</description><generator>Halo v2.25.4</generator><language>zh-cn</language><image><url>https://yanglei.ltd/upload/favicon-ovaa.png</url><title>杨杨得议</title><link>https://yanglei.ltd</link></image><lastBuildDate>Thu, 16 Jul 2026 20:20:25 GMT</lastBuildDate><item><title><![CDATA[管团队这几年，我最大的教训]]></title><link>https://yanglei.ltd/archives/A9bucL5R</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=%E7%AE%A1%E5%9B%A2%E9%98%9F%E8%BF%99%E5%87%A0%E5%B9%B4%EF%BC%8C%E6%88%91%E6%9C%80%E5%A4%A7%E7%9A%84%E6%95%99%E8%AE%AD&amp;url=/archives/A9bucL5R" width="1" height="1" alt="" style="opacity:0;">带团队最大的教训是不要把自己当成技术最强的人，否则自己离开后团队无法运转。真正好的管理是搭建制度让团队脱离leader也能正常运转。核心经验分为五块：一是Owner精神，每个人圈定自己领域并配Backup，临时项目用虚拟小组弹性协作；二是轮值分享与故障复盘，强制实战分享并沉淀文档，复盘只找根因和产出改进措施，不追责；三是多维考核，OKR定方向、KPI守底线，加上方案设计、排查能力、知识贡献等软性维度；四是梯队建设，核心岗位必有Backup，识别高潜成员给空间，交叉轮岗提高系统理解；五是经验沉淀，从标准化、流程化、工具化、自动化到产品化逐步升级。最终目标：让团队不需要你也能良好运转，你才有精力思考更大更远的事。]]></description><guid isPermaLink="false">/archives/A9bucL5R</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F%25E7%25AE%25A1%25E7%2590%2586%25E5%259B%25A2%25E9%2598%259F%25E6%2596%2587%25E7%25AB%25A0%25E5%25B0%2581%25E9%259D%25A2.jpg&amp;size=m" type="image/jpeg" length="49196"/><category>默认分类</category><pubDate>Wed, 1 Jul 2026 08:57:00 GMT</pubDate></item><item><title><![CDATA[一种超大规模数据导出Excel的实现方法]]></title><link>https://yanglei.ltd/archives/gEZtR6Qw</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=%E4%B8%80%E7%A7%8D%E8%B6%85%E5%A4%A7%E8%A7%84%E6%A8%A1%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%87%BAExcel%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%B3%95&amp;url=/archives/gEZtR6Qw" width="1" height="1" alt="" style="opacity:0;">在大规模数据导出Excel场景中，传统POI库易因内存堆积导致OOM，阿里巴巴开源的EasyExcel通过流式写入和事件驱动模型显著降低内存占用，可应对百万级数据导出。核心策略为分页从数据库读取数据（如每次20万条）并立即分批流式写入Excel，配合try-with-resources自动释放资源，确保内存常驻对象最小化。生产环境建议采用异步导出避免HTTP超时，并通过关闭自动列宽、使用覆盖索引等优化性能。实验表明，在384MB堆内存下导出500万条数据，内存占用稳定在300MB以内。该方案还可扩展为导出微服务，通过消息中间件和统一数据协议实现高灵活性和解耦。]]></description><guid isPermaLink="false">/archives/gEZtR6Qw</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F%25E5%25AF%25BC%25E5%2587%25BAExcel%25E6%2596%2587%25E7%25AB%25A0%25E5%25B0%2581%25E9%259D%25A2.jpg&amp;size=m" type="image/jpeg" length="32153"/><category>Java</category><pubDate>Fri, 19 Jun 2026 10:47:00 GMT</pubDate></item><item><title><![CDATA[一种文件分片上传的实现方法]]></title><link>https://yanglei.ltd/archives/apHvgG6z</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=%E4%B8%80%E7%A7%8D%E6%96%87%E4%BB%B6%E5%88%86%E7%89%87%E4%B8%8A%E4%BC%A0%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%B3%95&amp;url=/archives/apHvgG6z" width="1" height="1" alt="" style="opacity:0;">]]></description><guid isPermaLink="false">/archives/apHvgG6z</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F2026-07-14%2520121107.png&amp;size=m" type="image/jpeg" length="808012"/><category>Java</category><pubDate>Fri, 12 Jun 2026 06:29:00 GMT</pubDate></item><item><title><![CDATA[从0到1：构建SpringBoot项目脚手架的设计思路与实战]]></title><link>https://yanglei.ltd/archives/4gcJQXGy</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=%E4%BB%8E0%E5%88%B01%EF%BC%9A%E6%9E%84%E5%BB%BASpringBoot%E9%A1%B9%E7%9B%AE%E8%84%9A%E6%89%8B%E6%9E%B6%E7%9A%84%E8%AE%BE%E8%AE%A1%E6%80%9D%E8%B7%AF%E4%B8%8E%E5%AE%9E%E6%88%98&amp;url=/archives/4gcJQXGy" width="1" height="1" alt="" style="opacity:0;">针对后端开发重复搭建项目、代码风格不统一的问题，基于开源项目 springboot-project-seed 构建可复用脚手架。采用 Spring Boot 3.0.1 + JDK 17，封装统一响应结构（Res&lt;T&gt;）和全局异常处理（@ControllerAdvice），实现 API 行为一致；通过 AOP 日志切面记录请求与耗时，用 ThreadLocal 传递用户上下文；集成 @Async 异步任务、@Scheduled 定时检测 Kafka 消费者掉线并自动重启，以及文件分片上传和 WebSocket 实时推送等实战功能。提供 Dockerfile 及多环境配置，支持一键部署。开发者可直接克隆项目，修改配置后专注于业务逻辑，显著减少重复劳动，提升交付效率。]]></description><guid isPermaLink="false">/archives/4gcJQXGy</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F2026-07-14%2520114657.png&amp;size=m" type="image/jpeg" length="666678"/><category>Java</category><pubDate>Fri, 5 Jun 2026 01:45:00 GMT</pubDate></item><item><title><![CDATA[kolla-ansible部署openstack]]></title><link>https://yanglei.ltd/archives/bf9Am4WH</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=kolla-ansible%E9%83%A8%E7%BD%B2openstack&amp;url=/archives/bf9Am4WH" width="1" height="1" alt="" style="opacity:0;">文章介绍了使用VirtualBox和kolla-ansible部署OpenStack单机版的全过程。首先规划网络：采用NAT-Network和Host-only组合，创建三个虚拟交换机分别用于控制面、外部网络和数据面。准备虚拟机（Debian 12.6，8C8G256G，EFI分区，三网卡），配置静态IP并安装VirtualBox增强工具。基础配置包括关闭防火墙、更换中科大源。安装Docker、Python虚拟环境、kolla-ansible（推荐源码安装）。通过kolla-ansible自动生成密码、修改globals.yml，执行bootstrap-servers、prechecks、deploy完成部署，最后安装openstack client并生成admin-openrc.sh令牌。附录提供了dbus模块缺失等常见问题的解决方法。读者可掌握基于VirtualBox快速搭建OpenStack单机测试环境的核心步骤。]]></description><guid isPermaLink="false">/archives/bf9Am4WH</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F2026-07-14%2520114319.png&amp;size=m" type="image/jpeg" length="642769"/><category>Openstack</category><pubDate>Sat, 17 May 2025 03:00:00 GMT</pubDate></item><item><title><![CDATA[kolla构建openstack镜像]]></title><link>https://yanglei.ltd/archives/zAqYa5nL</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=kolla%E6%9E%84%E5%BB%BAopenstack%E9%95%9C%E5%83%8F&amp;url=/archives/zAqYa5nL" width="1" height="1" alt="" style="opacity:0;">]]></description><guid isPermaLink="false">/archives/zAqYa5nL</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F2026-07-14%2520113848.png&amp;size=m" type="image/jpeg" length="776332"/><category>Openstack</category><pubDate>Sat, 3 May 2025 06:38:00 GMT</pubDate></item><item><title><![CDATA[通过noVNC和websockify连接到QEMU、KVM]]></title><link>https://yanglei.ltd/archives/dP9QvXhA</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=%E9%80%9A%E8%BF%87noVNC%E5%92%8Cwebsockify%E8%BF%9E%E6%8E%A5%E5%88%B0QEMU%E3%80%81KVM&amp;url=/archives/dP9QvXhA" width="1" height="1" alt="" style="opacity:0;">基于QEMU/KVM/libvirt虚拟化环境，文章介绍了如何通过noVNC与websockify实现浏览器访问虚拟机VNC。核心方案：noVNC是支持HTML5的VNC客户端，QEMU自带的VNC Server需改为监听0.0.0.0；通过websockify代理将WebSocket请求转为TCP连接宿主机VNC端口。关键步骤包括修改qemu.conf、获取虚拟机VNC端口号、启动noVNC与websockify。进阶用法通过token文件实现单端口代理多台虚拟机，并分离noVNC与websockify独立部署。最后提供了Docker容器化websockify的方案，便于微服务化管理。读者可据此搭建灵活、可扩展的Web VNC访问机制，提升虚拟机管理体验。常见连接失败问题源于IP/端口错误或虚拟机未开机。]]></description><guid isPermaLink="false">/archives/dP9QvXhA</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F20170630233810.png&amp;size=m" type="image/jpeg" length="334637"/><category>虚拟化</category><pubDate>Thu, 15 Aug 2024 14:15:00 GMT</pubDate></item><item><title><![CDATA[libvirt Java API用法连载之libvirt Java API使用详解（四）]]></title><link>https://yanglei.ltd/archives/pWIwuyX3</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=libvirt%20Java%20API%E7%94%A8%E6%B3%95%E8%BF%9E%E8%BD%BD%E4%B9%8Blibvirt%20Java%20API%E4%BD%BF%E7%94%A8%E8%AF%A6%E8%A7%A3%EF%BC%88%E5%9B%9B%EF%BC%89&amp;url=/archives/pWIwuyX3" width="1" height="1" alt="" style="opacity:0;">通过 libvirt Java API 可通过 Connect 对象与 Hypervisor 建立本地或远程连接（支持读写/只读及安全验证）。管理镜像依赖 StoragePool（宿主物理硬盘）和 StorageVolume（虚拟机磁盘），支持遍历、查询、创建、克隆及删除；StorageVolume 可基于 qcow2 格式派生镜像。管理虚拟机通过 Domain 对象，支持生命周期操作（创建临时虚拟机、定义持久化虚拟机、启动、强制关机、删除等）。实现网络桥接需修改宿主机网络配置。关键 API 包括 storagePoolCreateXML、storageVolCreateXMLFrom、domainDefineXML 等，注意临时与持久资源的区别。]]></description><guid isPermaLink="false">/archives/pWIwuyX3</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2FlibvirtJavaAPI%25E4%25BD%25BF%25E7%2594%25A8%25E8%25AF%25A6%25E8%25A7%25A3%25E5%25B0%2581%25E9%259D%25A2.jpg&amp;size=m" type="image/jpeg" length="38895"/><category>虚拟化</category><pubDate>Thu, 8 Aug 2024 14:14:00 GMT</pubDate></item><item><title><![CDATA[libvirt Java API用法连载之libvirt C、Java API介绍与jna、libvirt Java SDK引入（三）]]></title><link>https://yanglei.ltd/archives/dpkeq9xZ</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=libvirt%20Java%20API%E7%94%A8%E6%B3%95%E8%BF%9E%E8%BD%BD%E4%B9%8Blibvirt%20C%E3%80%81Java%20API%E4%BB%8B%E7%BB%8D%E4%B8%8Ejna%E3%80%81libvirt%20Java%20SDK%E5%BC%95%E5%85%A5%EF%BC%88%E4%B8%89%EF%BC%89&amp;url=/archives/dpkeq9xZ" width="1" height="1" alt="" style="opacity:0;">]]></description><guid isPermaLink="false">/archives/dpkeq9xZ</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F2026-07-14%2520111148.png&amp;size=m" type="image/jpeg" length="782276"/><category>虚拟化</category><pubDate>Thu, 1 Aug 2024 14:13:00 GMT</pubDate></item><item><title><![CDATA[libvirt Java API用法连载之Ubuntu16.04安装QEMU与libvirt（二）]]></title><link>https://yanglei.ltd/archives/WVCeTs1Z</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=libvirt%20Java%20API%E7%94%A8%E6%B3%95%E8%BF%9E%E8%BD%BD%E4%B9%8BUbuntu16.04%E5%AE%89%E8%A3%85QEMU%E4%B8%8Elibvirt%EF%BC%88%E4%BA%8C%EF%BC%89&amp;url=/archives/WVCeTs1Z" width="1" height="1" alt="" style="opacity:0;">]]></description><guid isPermaLink="false">/archives/WVCeTs1Z</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F2026-07-14%2520105131.png&amp;size=m" type="image/jpeg" length="1088996"/><category>虚拟化</category><pubDate>Thu, 25 Jul 2024 14:12:00 GMT</pubDate></item><item><title><![CDATA[libvirt Java API用法连载之KVM、QEMU区别与libvirt简介（一）]]></title><link>https://yanglei.ltd/archives/Fym4q0Qs</link><description><![CDATA[<img src="https://yanglei.ltd/plugins/feed/assets/telemetry.gif?title=libvirt%20Java%20API%E7%94%A8%E6%B3%95%E8%BF%9E%E8%BD%BD%E4%B9%8BKVM%E3%80%81QEMU%E5%8C%BA%E5%88%AB%E4%B8%8Elibvirt%E7%AE%80%E4%BB%8B%EF%BC%88%E4%B8%80%EF%BC%89&amp;url=/archives/Fym4q0Qs" width="1" height="1" alt="" style="opacity:0;">]]></description><guid isPermaLink="false">/archives/Fym4q0Qs</guid><dc:creator>kyyee</dc:creator><enclosure url="https://yanglei.ltd/apis/api.storage.halo.run/v1alpha1/thumbnails/-/via-uri?uri=%2Fupload%2F2026-07-14%2520104702.png&amp;size=m" type="image/jpeg" length="459776"/><category>虚拟化</category><pubDate>Thu, 18 Jul 2024 14:09:00 GMT</pubDate></item></channel></rss>