<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>飞狐的部落格</title>
    <link>https://lucumt.info/</link>
    <description>Recent content on 飞狐的部落格</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Mon, 09 Jun 2025 18:32:17 +0800</lastBuildDate>
    <atom:link href="https://lucumt.info/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>在GitBook中添加浏览器类型与版本检测</title>
      <link>https://lucumt.info/post/gitbook/add-browser-check-function/</link>
      <pubDate>Mon, 09 Jun 2025 18:32:17 +0800</pubDate>
      <guid>https://lucumt.info/post/gitbook/add-browser-check-function/</guid>
      <description>&lt;p&gt;在部门使用&lt;code&gt;GitBook&lt;/code&gt;的过程中，发现有些同事使用旧版的&lt;code&gt;Chrome&lt;/code&gt;浏览器会造成&lt;code&gt;GitBook&lt;/code&gt;页面显示不正常，故开发了一款插件对当前使用的浏览器类型和版本进行检测，强制使用不能低于特定版本的&lt;code&gt;Chrome&lt;/code&gt;浏览器，否则会弹出提示信息。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用SpringBoot3与JUnit5进行单元测试时依赖注入对象报空指针</title>
      <link>https://lucumt.info/post/junit/autowire-object-is-null-when-run-maven-test/</link>
      <pubDate>Mon, 24 Mar 2025 10:18:30 +0800</pubDate>
      <guid>https://lucumt.info/post/junit/autowire-object-is-null-when-run-maven-test/</guid>
      <description>&lt;p&gt;近期有个项目采用了&lt;a href=&#34;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes&#34;&gt;&lt;strong&gt;SpringBoot3&lt;/strong&gt; &lt;/a&gt;以及&lt;a href=&#34;https://junit.org/junit5&#34;&gt;&lt;strong&gt;JUnit5&lt;/strong&gt;&lt;/a&gt;进行单元测试，在此过程中一直提示&lt;code&gt;Spring&lt;/code&gt;中依赖注入报错的问题，该问题的解决方案比较特殊，主要是升级&lt;a href=&#34;https://maven.apache.org/surefire/maven-surefire-plugin&#34;&gt;&lt;strong&gt;maven-surefire-plugin&lt;/strong&gt;&lt;/a&gt;的版本，故简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在three.js中加载字节形式的点云数据并利用Draco加快渲染速度</title>
      <link>https://lucumt.info/post/pointcloud/show-pcd-data-via-bytes-in-threejs/</link>
      <pubDate>Tue, 11 Mar 2025 10:13:14 +0800</pubDate>
      <guid>https://lucumt.info/post/pointcloud/show-pcd-data-via-bytes-in-threejs/</guid>
      <description>&lt;p&gt;基于&lt;a href=&#34;https://lucumt.info/post/pointcloud/using-draco-to-encode-decode-and-transport-pointcloud-data&#34;&gt;利用Draco对点云数据进行编码解码以实现高效网络传输&lt;/a&gt;一文介绍个人项目中关于&lt;a href=&#34;https://threejs.org&#34;&gt;&lt;strong&gt;three.js&lt;/strong&gt;&lt;/a&gt;和&lt;a href=&#34;https://github.com/google/draco&#34;&gt;&lt;strong&gt;Draco&lt;/strong&gt;&lt;/a&gt;的使用实践。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Draco对点云数据进行编码解码以实现高效网络传输</title>
      <link>https://lucumt.info/post/pointcloud/using-draco-to-encode-decode-and-transport-pointcloud-data/</link>
      <pubDate>Wed, 26 Feb 2025 10:20:20 +0800</pubDate>
      <guid>https://lucumt.info/post/pointcloud/using-draco-to-encode-decode-and-transport-pointcloud-data/</guid>
      <description>&lt;p&gt;个人在项目中使用了&lt;a href=&#34;https://github.com/google/draco&#34;&gt;&lt;strong&gt;Draco&lt;/strong&gt;&lt;/a&gt;对&lt;a href=&#34;https://en.wikipedia.org/wiki/Point_cloud&#34;&gt;&lt;strong&gt;点云&lt;/strong&gt;&lt;/a&gt;数据进行编码与解码，其通过压缩点云数据以减少在网络传输过程中的数据包大小，最终加快点云帧的播放速度，同时由于网络上关于此方面的资料太少，故将其用法和个人踩过的坑简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]既然GPU如此强大，为啥我们还需要使用CPU?</title>
      <link>https://lucumt.info/post/translate/ai/if-gpus-are-so-good-why-do-we-still/</link>
      <pubDate>Mon, 17 Feb 2025 11:21:37 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/ai/if-gpus-are-so-good-why-do-we-still/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://codingstuff.substack.com/p/if-gpus-are-so-good-why-do-we-still&#34;&gt;&lt;strong&gt;If GPUs Are So Good, Why Do We Still Use CPUs At All?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>将有重叠或相邻的时间区间进行合并</title>
      <link>https://lucumt.info/post/algorithm/merge-overlapping-time-intervals/</link>
      <pubDate>Thu, 06 Feb 2025 14:16:03 +0800</pubDate>
      <guid>https://lucumt.info/post/algorithm/merge-overlapping-time-intervals/</guid>
      <description>&lt;p&gt;基于力扣中的&lt;a href=&#34;https://leetcode.cn/problems/merge-intervals/&#34;&gt;&lt;strong&gt;合并区间&lt;/strong&gt;&lt;/a&gt;题解对其进行适当的改进，以实现不仅能对重叠的时间区间进行合并，同时也可对相邻的时间区间进行合并。&lt;/p&gt;</description>
    </item>
    <item>
      <title>给GitBook生成的html页面中添加水印支持</title>
      <link>https://lucumt.info/post/gitbook/add-watermark-in-gitbook/</link>
      <pubDate>Thu, 16 Jan 2025 13:38:21 +0800</pubDate>
      <guid>https://lucumt.info/post/gitbook/add-watermark-in-gitbook/</guid>
      <description>&lt;p&gt;简要介绍个人基于&lt;a href=&#34;https://zhensherlock.github.io/watermark-js-plus/&#34;&gt;&lt;strong&gt;watermark-js-plus&lt;/strong&gt;&lt;/a&gt;开发的一款&lt;code&gt;GitBook&lt;/code&gt;&lt;a href=&#34;https://github.com/gitbook-plugin-fox/gitbook-plugin-watermark-fox&#34;&gt;&lt;strong&gt;水印插件&lt;/strong&gt;&lt;/a&gt;，可用于给&lt;code&gt;GitBook&lt;/code&gt;所有页面添加自定义水印，且能根据需求动态的开启或关闭。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Nodejs和React中使用Protocol Buffers对数据进行编码解码</title>
      <link>https://lucumt.info/post/web/using-protobuf-in-react/</link>
      <pubDate>Fri, 20 Dec 2024 10:13:13 +0800</pubDate>
      <guid>https://lucumt.info/post/web/using-protobuf-in-react/</guid>
      <description>&lt;p&gt;网络上关于如何在&lt;a href=&#34;https://react.dev/&#34;&gt;&lt;strong&gt;React&lt;/strong&gt;&lt;/a&gt;中使用&lt;a href=&#34;https://protobuf.dev/&#34;&gt;&lt;strong&gt;Protocol Buffers&lt;/strong&gt;&lt;/a&gt;进行数据编码/解码的资料不是很多，正好自己有这方面的需求，参考多方面的资料后将整个流程调试通过，故简单记录下，供自己和他人使用参考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>基于MySQL配置数据库主主同步</title>
      <link>https://lucumt.info/post/mysql/config-mysql-in-master-master-mode/</link>
      <pubDate>Mon, 16 Dec 2024 13:17:29 +0800</pubDate>
      <guid>https://lucumt.info/post/mysql/config-mysql-in-master-master-mode/</guid>
      <description>&lt;p&gt;主要参考&lt;a href=&#34;https://cloud.tencent.com/developer/article/2254761&#34;&gt;这篇文章&lt;/a&gt;中的相关说明，记录如何在&lt;code&gt;MySQL&lt;/code&gt;中实现&lt;code&gt;主主同步&lt;/code&gt;，即两个数据库可同时操作然后同时同步数据给对方。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Html文件生成chm文件</title>
      <link>https://lucumt.info/post/web/using-html-files-to-create-chm-file/</link>
      <pubDate>Mon, 25 Nov 2024 10:22:35 +0800</pubDate>
      <guid>https://lucumt.info/post/web/using-html-files-to-create-chm-file/</guid>
      <description>&lt;p&gt;对个人使用&lt;code&gt;HTML&lt;/code&gt;网页生成&lt;a href=&#34;https://en.wikipedia.org/wiki/Microsoft_Compiled_HTML_Help&#34;&gt;&lt;strong&gt;CHM&lt;/strong&gt;&lt;/a&gt;格式说明手册的使用经验进行简单的记录与分享。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]为什么我使用Vue来替代React</title>
      <link>https://lucumt.info/post/translate/web/why-i-chose-vue-over-react/</link>
      <pubDate>Mon, 18 Nov 2024 10:36:25 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/web/why-i-chose-vue-over-react/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://medium.com/@serpentarium13/why-i-chose-vue-over-react-b082d81315ab&#34;&gt;&lt;strong&gt;Why I chose Vue over React&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>给Hugo博客添加代码分组</title>
      <link>https://lucumt.info/post/hugo/add-code-tab-in-hugo/</link>
      <pubDate>Fri, 01 Nov 2024 21:13:04 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/add-code-tab-in-hugo/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gohugo.io/&#34;&gt;&lt;strong&gt;Hugo&lt;/strong&gt;&lt;/a&gt;默认没有提供代码分组的支持，本文基于&lt;a href=&#34;https://discourse.gohugo.io/t/code-tabs-widget/975&#34;&gt;这条帖子&lt;/a&gt;和&lt;a href=&#34;https://github.com/gitbook-plugin-fox/gitbook-plugin-prism-codetab-fox&#34;&gt;gitbook-plugin-prism-codetab-fox&lt;/a&gt;通过修改&lt;a href=&#34;https://github.com/olOwOlo/hugo-theme-even&#34;&gt;Even&lt;/a&gt;主题的相关代码，实现基于Tab的代码块分组功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>配置Harbor中镜像清理的策略实现定期自动清理冗余镜像</title>
      <link>https://lucumt.info/post/devops/config-harbor-strategy-to-clean-images/</link>
      <pubDate>Thu, 24 Oct 2024 10:09:39 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/config-harbor-strategy-to-clean-images/</guid>
      <description>&lt;p&gt;基于个人实际使用经验，简要记录如何通过给&lt;code&gt;Harbor&lt;/code&gt;项目配置镜像策略实现自动清理冗余的&lt;code&gt;Docker&lt;/code&gt;镜像，达到节省磁盘空间的目的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Harbor清理垃圾时一直提示10010 object is not found导致清理失败</title>
      <link>https://lucumt.info/post/devops/can-not-garbage-collection-in-harbor/</link>
      <pubDate>Wed, 23 Oct 2024 15:21:19 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/can-not-garbage-collection-in-harbor/</guid>
      <description>&lt;p&gt;记录&lt;code&gt;Harbor&lt;/code&gt;清理镜像垃圾时遇到的错误&lt;code&gt;{&amp;quot;errors&amp;quot;:[{&amp;quot;code&amp;quot;:&amp;quot;NOT_FOUND&amp;quot;,&amp;quot;message&amp;quot;:&amp;quot;{\&amp;quot;code\&amp;quot;:10010,\&amp;quot;message\&amp;quot;:\&amp;quot;object is not found\&amp;quot;,\&amp;quot;details\&amp;quot;:\&amp;quot;2cc49b89751876fa18acb008\&amp;quot;}&amp;quot;}]}&lt;/code&gt;导致回收失败，不能正常清理，最终占用越来越多的磁盘空间的解决过程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>记录如何解决Hugo博客没有被Bing检索收录的问题</title>
      <link>https://lucumt.info/post/hugo/enable-bing-index-for-my-hugo-website/</link>
      <pubDate>Mon, 07 Oct 2024 21:24:46 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/enable-bing-index-for-my-hugo-website/</guid>
      <description>&lt;p&gt;自己的&lt;code&gt;Hugo&lt;/code&gt;博客一直以来都无法被&lt;a href=&#34;https://www.bing.com/&#34;&gt;&lt;strong&gt;Bing&lt;/strong&gt;&lt;/a&gt;收录检索，本文简要记录自己通过改进&lt;a href=&#34;https://gohugo.io/&#34;&gt;&lt;strong&gt;Hugo&lt;/strong&gt;&lt;/a&gt;博客内容以及给&lt;code&gt;Bing&lt;/code&gt;多次发送技术支持邮件来解决这一问题的过程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Hugo来替代GitBook实现文档展示</title>
      <link>https://lucumt.info/post/hugo/using-hugo-to-show-document-like-gitbook/</link>
      <pubDate>Fri, 06 Sep 2024 10:26:52 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/using-hugo-to-show-document-like-gitbook/</guid>
      <description>&lt;p&gt;基于&lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt;中的&lt;a href=&#34;https://github.com/alex-shpak/hugo-book&#34;&gt;hugo-book&lt;/a&gt;主题简要记录搭建并生成类似&lt;code&gt;GitBook&lt;/code&gt;的展示效果，以便在需要进行文档管理与展示时，可以多一种选择。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]Git Worktree使用说明</title>
      <link>https://lucumt.info/post/translate/git/git-worktree/</link>
      <pubDate>Fri, 23 Aug 2024 13:17:18 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/git/git-worktree/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://fev.al/posts/git-worktree/&#34;&gt;&lt;strong&gt;Git Worktree&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用MyBatis-Plus时给SFunction接口创建属性数组以简化代码</title>
      <link>https://lucumt.info/post/java-core/create-array-for-function-interfaces/</link>
      <pubDate>Wed, 21 Aug 2024 19:51:08 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/create-array-for-function-interfaces/</guid>
      <description>&lt;p&gt;通过一个简单的实例介绍如何在使用&lt;a href=&#34;https://baomidou.com&#34;&gt;MyBatis-Plus&lt;/a&gt;时给&lt;a href=&#34;https://javadoc.io/doc/com.baomidou/mybatis-plus-core/3.4.3/com/baomidou/mybatisplus/core/toolkit/support/SFunction.html&#34;&gt;SFunction&lt;/a&gt;接口创建属性数组以简化代码，同时巩固下自己的&lt;code&gt;Java&lt;/code&gt;基础知识。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Hugo中利用Prism进行代码高亮</title>
      <link>https://lucumt.info/post/hugo/using-prismjs-to-highlight-code/</link>
      <pubDate>Tue, 30 Jul 2024 18:31:44 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/using-prismjs-to-highlight-code/</guid>
      <description>&lt;p&gt;简要介绍如何在基于&lt;a href=&#34;https://github.com/olOwOlo/hugo-theme-even&#34;&gt;&lt;strong&gt;Even&lt;/strong&gt;&lt;/a&gt;主题的&lt;a href=&#34;https://gohugo.io&#34;&gt;&lt;strong&gt;Hugo&lt;/strong&gt;&lt;/a&gt;博客中采用&lt;a href=&#34;https://prismjs.com&#34;&gt;&lt;strong&gt;Prism&lt;/strong&gt;&lt;/a&gt;替换默认的&lt;a href=&#34;https://github.com/alecthomas/chroma&#34;&gt;&lt;strong&gt;Chroma&lt;/strong&gt;&lt;/a&gt;进行代码高亮显示，实现支持更多的语言和更好的识别。&lt;/p&gt;</description>
    </item>
    <item>
      <title>KubeSphere中整合LDAP后不生效的原因分析</title>
      <link>https://lucumt.info/post/devops/ldap-integration-not-working/</link>
      <pubDate>Wed, 03 Jul 2024 19:37:01 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/ldap-integration-not-working/</guid>
      <description>&lt;p&gt;在给公司内部搭建的&lt;code&gt;KubeSphere&lt;/code&gt;整合&lt;code&gt;LDAP&lt;/code&gt;时，发现一开始整合后并不能立即使用&lt;code&gt;LDAP&lt;/code&gt;登录，一直提示无效的用户名或密码，经过多次折腾后找到一些规律，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>给GitBook中的SVG图像提供缩放和下载功能</title>
      <link>https://lucumt.info/post/gitbook/add-zoom-and-export-feature-for-svg-inside-gitbook/</link>
      <pubDate>Thu, 27 Jun 2024 20:35:45 +0800</pubDate>
      <guid>https://lucumt.info/post/gitbook/add-zoom-and-export-feature-for-svg-inside-gitbook/</guid>
      <description>&lt;p&gt;简要说明如何给&lt;code&gt;GitBook&lt;/code&gt;中的&lt;code&gt;SVG&lt;/code&gt;图像提供缩放和下载功能，实现可对复杂的&lt;code&gt;SVG&lt;/code&gt;图像进行缩放和下载。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Embed Multiple Google Trends Charts Into Single Html Page</title>
      <link>https://lucumt.info/post/web/embed-multiple-google-trends-charts-into-single-html-page/</link>
      <pubDate>Fri, 14 Jun 2024 11:07:55 +0800</pubDate>
      <guid>https://lucumt.info/post/web/embed-multiple-google-trends-charts-into-single-html-page/</guid>
      <description>&lt;style type=&#34;text/css&#34;&gt;&#xA;  #content {&#xA;     font-family:math;font-size:13pt;margin:1em 0;&#xA;  }&#xA;&#xA;  .post .post-header .post-title,&#xA;  .post .post-content h1{&#xA;     font-family:revert;&#xA;  }&#xA;&lt;/style&gt;&#xA;&lt;p&gt;A brief descripton about how to embed multiple google trends chart into single html page to make them working fine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>给Windows中的命令添加别名</title>
      <link>https://lucumt.info/post/other/add-alias-to-commands-on-windows/</link>
      <pubDate>Wed, 12 Jun 2024 13:26:28 +0800</pubDate>
      <guid>https://lucumt.info/post/other/add-alias-to-commands-on-windows/</guid>
      <description>&lt;p&gt;简要记录如何在&lt;code&gt;Windows&lt;/code&gt;操作系统中通过&lt;a href=&#34;https://en.wikipedia.org/wiki/Batch_file&#34;&gt;&lt;strong&gt;批处理脚本&lt;/strong&gt;&lt;/a&gt;来给复杂的命令添加别名以简化使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>创建多个GitHub Pages并且利用GoDaddy分别配置子域名</title>
      <link>https://lucumt.info/post/github/create-multiple-github-pages-and-config-godaddy-subdomain/</link>
      <pubDate>Mon, 20 May 2024 09:44:44 +0800</pubDate>
      <guid>https://lucumt.info/post/github/create-multiple-github-pages-and-config-godaddy-subdomain/</guid>
      <description>&lt;p&gt;简要记录如何基于同一个&lt;code&gt;GitHub&lt;/code&gt;账号创建多个&lt;a href=&#34;https://pages.github.com/&#34;&gt;&lt;strong&gt;GitHub Pages&lt;/strong&gt;&lt;/a&gt;并基于&lt;a href=&#34;https://www.godaddy.com/&#34;&gt;&lt;strong&gt;GoDaddy&lt;/strong&gt;&lt;/a&gt;配置多个子域名。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]Docker和Podman的差异</title>
      <link>https://lucumt.info/post/docker/difference-between-docker-and-podman/</link>
      <pubDate>Fri, 26 Apr 2024 10:46:34 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/difference-between-docker-and-podman/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.imaginarycloud.com/blog/podman-vs-docker/&#34;&gt;&lt;strong&gt;Podman vs Docker: What are the differences?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>在基于MySQL的Grafana的柱状中不显示0值</title>
      <link>https://lucumt.info/post/devops/hidden-zero-value-in-grafana-bar-chart/</link>
      <pubDate>Fri, 19 Apr 2024 17:21:43 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/hidden-zero-value-in-grafana-bar-chart/</guid>
      <description>&lt;p&gt;简单记录下自己在使用&lt;code&gt;Grafana&lt;/code&gt;过程中的一点点经验总结：通过修改sql的方式来消除柱状图中多余的0值。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[杂谈]记一次个人GitHub账号的找回过程</title>
      <link>https://lucumt.info/post/github/recovery-github-code-when-2fa-not-working/</link>
      <pubDate>Wed, 03 Apr 2024 10:12:47 +0800</pubDate>
      <guid>https://lucumt.info/post/github/recovery-github-code-when-2fa-not-working/</guid>
      <description>&lt;p&gt;简要记录下由于自己手机格式化刷机后，&lt;code&gt;GitHub&lt;/code&gt;两阶段认证失败导致最终无法完整登录，尝试过多种方式后最终通过&lt;code&gt;github-recovery-codes.txt&lt;/code&gt;恢复自己&lt;code&gt;GitHub&lt;/code&gt;账号的过程。&lt;/p&gt;&#xA;&lt;p&gt;2025/03/13更新，由于此篇文章的访问量较多，想必是很多人遇到了类似问题，为了节约大家时间，提前说明如下：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;此文只是单纯的作为记录，对其他遇到类似的问题的人不具有参考价值&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;如果你个人也是由于手机刷机且没有开启&lt;code&gt;2FA&lt;/code&gt;认证设备的远程备份或保存&lt;code&gt;github-recovery-codes.txt&lt;/code&gt;，则对中国大陆用户来说，&lt;code&gt;GitHub&lt;/code&gt;账号基本上找不回来了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>通过Docker快速安装Pinpoint</title>
      <link>https://lucumt.info/post/docker/install-pinpiont-via-docker/</link>
      <pubDate>Wed, 13 Mar 2024 18:10:19 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/install-pinpiont-via-docker/</guid>
      <description>&lt;p&gt;简要记录如何基于&lt;code&gt;docker-compose&lt;/code&gt;的方式安装&lt;code&gt;Pinpoint&lt;/code&gt;，以及基于&lt;code&gt;Dockerfile&lt;/code&gt;与&lt;code&gt;Jenkins&lt;/code&gt;流水线将项目添加到&lt;code&gt;Pinpoint&lt;/code&gt;中进行实时监控。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在基于KubeSphere的Jenkins的流水线中切换nodejs版本</title>
      <link>https://lucumt.info/post/devops/switch-nodejs-version-in-jenkins-pipeline/</link>
      <pubDate>Thu, 11 Jan 2024 10:17:42 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/switch-nodejs-version-in-jenkins-pipeline/</guid>
      <description>&lt;p&gt;近期有个项目组有个&lt;code&gt;Vue&lt;/code&gt;项目需要在基于&lt;code&gt;KubeSphere&lt;/code&gt;的&lt;code&gt;Jenkins&lt;/code&gt;流水线中用高版本的&lt;code&gt;nodejs&lt;/code&gt;进行编译，自己一开始尝试通过在流水线中直接升级&lt;code&gt;nodejs&lt;/code&gt;版本，但并未成功，后来参考&lt;code&gt;KubeSphere&lt;/code&gt;论坛上的相关说明才解决该问题，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GitBook插件中实现从多个不同的文件夹下加载css和js文件</title>
      <link>https://lucumt.info/post/gitbook/gitbook-plugin-load-css-and-js-from-multiple-folder/</link>
      <pubDate>Sun, 10 Dec 2023 16:21:12 +0800</pubDate>
      <guid>https://lucumt.info/post/gitbook/gitbook-plugin-load-css-and-js-from-multiple-folder/</guid>
      <description>&lt;p&gt;在&lt;a href=&#34;https://lucumt.info/post/gitbook/using-docker-to-build-gitbook-with-gitlab-runner/&#34;&gt;&lt;strong&gt;在Docker中构建GitBook并整合GitLab Runner的使用经验分享&lt;/strong&gt;&lt;/a&gt;一文中，自己在&lt;code&gt;Docker&lt;/code&gt;环境下基于&lt;code&gt;GitLab Runner&lt;/code&gt;实现了&lt;code&gt;GitBook&lt;/code&gt;的自动构建，同时基于实际使用需求添加了很多&lt;code&gt;GitBook&lt;/code&gt;插件，在此过程中积累了一些&lt;code&gt;GitBook&lt;/code&gt;插件的开发与使用经验。&lt;/p&gt;&#xA;&lt;p&gt;本文简要介绍自己在&lt;code&gt;GitBook&lt;/code&gt;插件定制化修改过程中如何实现从多个不同的文件夹下加载&lt;code&gt;js&lt;/code&gt;和&lt;code&gt;css&lt;/code&gt;文件的实现过程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>给Hugo中的Even主题添加搜索功能</title>
      <link>https://lucumt.info/post/hugo/enable-search-in-even-theme/</link>
      <pubDate>Thu, 30 Nov 2023 10:35:48 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/enable-search-in-even-theme/</guid>
      <description>&lt;p&gt;介绍如何在&lt;a href=&#34;https://gohugo.io/&#34;&gt;&lt;strong&gt;Hugo&lt;/strong&gt;&lt;/a&gt;的&lt;a href=&#34;https://github.com/olOwOlo/hugo-theme-even&#34;&gt;&lt;strong&gt;Even&lt;/strong&gt;&lt;/a&gt;主题中添加基于&lt;a href=&#34;https://www.fusejs.io/&#34;&gt;&lt;strong&gt;Fuse.js&lt;/strong&gt;&lt;/a&gt;的搜索功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Foxglove自定义插件开发说明</title>
      <link>https://lucumt.info/post/web/foxglove-custom-plugin-develop/</link>
      <pubDate>Wed, 22 Nov 2023 14:08:39 +0800</pubDate>
      <guid>https://lucumt.info/post/web/foxglove-custom-plugin-develop/</guid>
      <description>&lt;p&gt;基于&lt;a href=&#34;https://github.com/foxglove/create-foxglove-extension&#34;&gt;&lt;strong&gt;create-foxglove-extension&lt;/strong&gt;&lt;/a&gt;一文简要说明自己如何基于&lt;a href=&#34;https://en.wikipedia.org/wiki/Real-Time_Streaming_Protocol&#34;&gt;&lt;strong&gt;RTSP协议&lt;/strong&gt;&lt;/a&gt;给&lt;code&gt;Foxglove&lt;/code&gt;开发一款插件并应用于实际项目的流程。&lt;/p&gt;&#xA;&lt;p&gt;相关源码参见&lt;a href=&#34;https://github.com/foxglove-custom/rtsp-player-extension&#34;&gt;&lt;strong&gt;rtsp-player-extension&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在基于Docker搭建的Kafka UI中整合LDAP</title>
      <link>https://lucumt.info/post/kafka/integrate-ldap-into-kafka-ui/</link>
      <pubDate>Mon, 20 Nov 2023 15:37:31 +0800</pubDate>
      <guid>https://lucumt.info/post/kafka/integrate-ldap-into-kafka-ui/</guid>
      <description>&lt;p&gt;简要记录如何基于&lt;code&gt;docker&lt;/code&gt;搭建&lt;code&gt;Kafka&lt;/code&gt;服务器以及添加集成了&lt;code&gt;LDAP&lt;/code&gt;的&lt;code&gt;kafka-ui&lt;/code&gt;实现图形化界面的授权访问。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kafka每次都消费最新的数据</title>
      <link>https://lucumt.info/post/kafka/consume-latest-message-each-time/</link>
      <pubDate>Thu, 16 Nov 2023 15:42:25 +0800</pubDate>
      <guid>https://lucumt.info/post/kafka/consume-latest-message-each-time/</guid>
      <description>&lt;p&gt;近期项目中有一个数据展示功能，其数据来源于&lt;a href=&#34;https://kafka.apache.org/&#34;&gt;&lt;strong&gt;Kafka&lt;/strong&gt;&lt;/a&gt;，项目要求&lt;code&gt;Kafka&lt;/code&gt;每次都消费最新的数据，简要记录下其实现方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Foxglove基本功能使用说明</title>
      <link>https://lucumt.info/post/web/foxglove-function-instructions/</link>
      <pubDate>Wed, 15 Nov 2023 14:08:39 +0800</pubDate>
      <guid>https://lucumt.info/post/web/foxglove-function-instructions/</guid>
      <description>&lt;p&gt;基于&lt;a href=&#34;https://lucumt.info/post/web/using-foxglove-to-render-time-sequence-data/&#34;&gt;&lt;strong&gt;搭建基于Foxglove的时序数据播放环境&lt;/strong&gt;&lt;/a&gt;一文，结合实际项目的使用情况对&lt;code&gt;Foxglove&lt;/code&gt;的使用功能进行简要的介绍。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用SSH实现在Jekins中给远程服务器部署项目</title>
      <link>https://lucumt.info/post/devops/using-ssh-to-deploy-in-remote-server-in-jenkins/</link>
      <pubDate>Wed, 15 Nov 2023 10:14:18 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/using-ssh-to-deploy-in-remote-server-in-jenkins/</guid>
      <description>&lt;p&gt;简要记录如何整合&lt;code&gt;Jenkins&lt;/code&gt;与&lt;code&gt;SSH&lt;/code&gt;免密登录，实现通过&lt;code&gt;Jenkins&lt;/code&gt;流水线部署到不同的服务器环境下，提高开发与测试环境的灵活性。&lt;/p&gt;</description>
    </item>
    <item>
      <title>搭建基于Foxglove的时序数据播放环境</title>
      <link>https://lucumt.info/post/web/using-foxglove-to-render-time-sequence-data/</link>
      <pubDate>Mon, 13 Nov 2023 14:08:39 +0800</pubDate>
      <guid>https://lucumt.info/post/web/using-foxglove-to-render-time-sequence-data/</guid>
      <description>&lt;p&gt;简要介绍如何配置&lt;a href=&#34;https://foxglove.dev&#34;&gt;&lt;strong&gt;Foxglove&lt;/strong&gt;&lt;/a&gt;可视化工具的前后端环境以便实现在项目中以多种方式播放采集的&lt;a href=&#34;https://xie.infoq.cn/article/9783fa40d25a0a5ddbfd62d29&#34;&gt;&lt;strong&gt;时序数据&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[非原创]解决Gitbook安装过程中出现的Error: Missing required argument #1错误</title>
      <link>https://lucumt.info/post/gitbook/gitbook-install-missing-required-argement/</link>
      <pubDate>Fri, 13 Oct 2023 19:10:56 +0800</pubDate>
      <guid>https://lucumt.info/post/gitbook/gitbook-install-missing-required-argement/</guid>
      <description>&lt;p&gt;本文来源于个人在使用&lt;code&gt;GitBook&lt;/code&gt;中遇到的问题，尽管自己通过 &lt;strong&gt;&lt;a href=&#34;https://blog.csdn.net/AntiO2/article/details/125964797&#34;&gt;gitbook出现if (args[ii] == null) throw missingRequiredArg(ii 解决&lt;/a&gt;&lt;/strong&gt; 这篇文章很快的找到了问题的解决方案，但该文章发布在CSDN，而CSDN的使用体验糟糕已是尽人皆知(此处不得不说一声 &lt;strong&gt;CSDN fuck you!&lt;/strong&gt;)。&lt;/p&gt;&#xA;&lt;p&gt;为了给其他使用者提供一个简洁干净的参考，故写此文章。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Docker中构建GitBook并整合GitLab Runner的使用经验分享</title>
      <link>https://lucumt.info/post/gitbook/using-docker-to-build-gitbook-with-gitlab-runner/</link>
      <pubDate>Sat, 07 Oct 2023 10:14:02 +0800</pubDate>
      <guid>https://lucumt.info/post/gitbook/using-docker-to-build-gitbook-with-gitlab-runner/</guid>
      <description>&lt;p&gt;由于&lt;code&gt;Docsify&lt;/code&gt;采用单页渲染的方式，在初次打开是特别慢，近期将团队内部的知识库工具从&lt;code&gt;Docsify&lt;/code&gt;迁移到基于&lt;code&gt;Docker&lt;/code&gt;搭建的&lt;code&gt;GitBook&lt;/code&gt;并结合&lt;code&gt;GitLab Runner&lt;/code&gt;实现自动更新，在这其中踩了一些坑，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>对Docsify中的代码高亮显示进行增强</title>
      <link>https://lucumt.info/post/docsify/enchane-code-highlight-in-docsify/</link>
      <pubDate>Fri, 22 Sep 2023 10:13:56 +0800</pubDate>
      <guid>https://lucumt.info/post/docsify/enchane-code-highlight-in-docsify/</guid>
      <description>&lt;p&gt;记录下如何给&lt;a href=&#34;https://docsify.js.org/&#34;&gt;&lt;strong&gt;docsify&lt;/strong&gt;&lt;/a&gt;添加多语言的代码高亮支持，以及在代码高亮的同时能显示行号，便利使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>由于Nacos导致的Spring Boot与Spring Cloud版本不兼容原因分析</title>
      <link>https://lucumt.info/post/nacos/spring-boot-cloud-version-not-compatible-due-to-nacos/</link>
      <pubDate>Fri, 01 Sep 2023 10:19:48 +0800</pubDate>
      <guid>https://lucumt.info/post/nacos/spring-boot-cloud-version-not-compatible-due-to-nacos/</guid>
      <description>&lt;p&gt;简单记录由于&lt;a href=&#34;https://nacos.io/zh-cn/&#34;&gt;&lt;strong&gt;Nacos&lt;/strong&gt;&lt;/a&gt;导致的&lt;code&gt;Spring Boot&lt;/code&gt;与&lt;code&gt;Spring Cloud&lt;/code&gt;版本不兼容的原因分析过程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]二叉树的莫里斯遍历</title>
      <link>https://lucumt.info/post/translate/algorithm/what-is-morris-traversal/</link>
      <pubDate>Fri, 18 Aug 2023 11:18:47 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/algorithm/what-is-morris-traversal/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.educative.io/answers/what-is-morris-traversal&#34;&gt;&lt;strong&gt;What is Morris traversal&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]4000个点赞并且在不断增加，回忆之旅</title>
      <link>https://lucumt.info/post/translate/docker/4000-stars-and-counting-a-trip-down-memory-lane/</link>
      <pubDate>Sun, 13 Aug 2023 17:49:14 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/docker/4000-stars-and-counting-a-trip-down-memory-lane/</guid>
      <description>&lt;style&gt;&#xA;    .content img {&#xA;      margin-left: auto;&#xA;      margin-right: auto;&#xA;      display: block !important;&#xA;    }&#xA;&lt;/style&gt;&#xA;&lt;div class=&#34;admonition note&#34;&gt;&lt;p class=&#34;admonition-title&#34;&gt;说明&lt;/p&gt;&#xA;&lt;p&gt;在阅读阮一峰老师的&lt;a href=&#34;https://www.ruanyifeng.com/blog/2023/08/weekly-issue-266.html&#34;&gt;&lt;strong&gt;科技爱好者周刊（第 266 期）&lt;/strong&gt;&lt;/a&gt;时，发现其中一篇关于&lt;a href=&#34;https://docs.docker.com/compose/&#34;&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt;&lt;/a&gt;的文章&lt;a href=&#34;https://brianchristner.io/4000-stars-and-counting-a-trip-down-memory-lane/&#34;&gt;&lt;strong&gt;4&#39;000 Stars and counting, a trip down memory lane&lt;/strong&gt;&lt;/a&gt;很有意思，基于自己粗浅的英文翻译一下。&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>在Docker中遇到x509: certificate relies on legacy Common Name field, use SANs instead问题的解决</title>
      <link>https://lucumt.info/post/docker/x509-certificate-relies-on-legacy-common-name-field-use-sans-instead/</link>
      <pubDate>Thu, 06 Jul 2023 09:54:01 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/x509-certificate-relies-on-legacy-common-name-field-use-sans-instead/</guid>
      <description>&lt;p&gt;近期在给公司内部安装&lt;code&gt;KubeSphere&lt;/code&gt;新环境和维护原有&lt;code&gt;KubeSphere&lt;/code&gt;环境的过程中，频繁遇到&lt;code&gt;x509: certificate relies on legacy Common Name field, use SANs instead&lt;/code&gt;，此问题会影响正常功能的使用，简要介绍其解决方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]如何测试私有方法</title>
      <link>https://lucumt.info/post/translate/junit5/testing-private-methods/</link>
      <pubDate>Mon, 03 Jul 2023 22:42:07 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/testing-private-methods/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/testing-private-methods/&#34;&gt;&lt;strong&gt;How Do I Test Private Methods?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]Junit 5 预期异常 - 如何检测异常是否抛出</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-expected-exception/</link>
      <pubDate>Sun, 02 Jul 2023 14:21:43 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-expected-exception/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-expected-exception/&#34;&gt;&lt;strong&gt;JUnit 5 Expected Exception: How to assert an exception is thrown?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]JUnit5 Gradle示例 - 基于Gradle运行测试</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-gradle-example/</link>
      <pubDate>Tue, 27 Jun 2023 14:21:43 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-gradle-example/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-gradle-example/&#34;&gt;&lt;strong&gt;JUnit 5 Gradle Example&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]JUnit5 Maven示例-基于Surefire运行测试</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-maven-example/</link>
      <pubDate>Fri, 23 Jun 2023 12:21:43 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-maven-example/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-maven-example/&#34;&gt;&lt;strong&gt;JUnit 5 Maven Example: Running Tests with Surefire&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]从JUnit 4 迁移到JUnit 5 - 权威指南</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-migration/</link>
      <pubDate>Wed, 21 Jun 2023 22:21:43 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-migration/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-migration/&#34;&gt;&lt;strong&gt;Migrating From JUnit 4 to JUnit 5: A Definitive Guide&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]JUnit5 整合Kotlin</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-kotlin/</link>
      <pubDate>Wed, 21 Jun 2023 19:21:43 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-kotlin/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-kotlin//&#34;&gt;&lt;strong&gt;JUnit 5 With Kotlin for Java Developers&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]在JUnit 5中使用Mockito</title>
      <link>https://lucumt.info/post/translate/junit5/using-mockito-in-junit5/</link>
      <pubDate>Mon, 19 Jun 2023 19:21:43 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/using-mockito-in-junit5/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-mockito/&#34;&gt;&lt;strong&gt;Using Mockito With JUnit 5&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在KubeSphere的流水线中下载构建具有子模块的项目</title>
      <link>https://lucumt.info/post/devops/checkout-project-with-submodule-in-kubesphere/</link>
      <pubDate>Sat, 17 Jun 2023 14:27:13 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/checkout-project-with-submodule-in-kubesphere/</guid>
      <description>&lt;p&gt;在使用&lt;a href=&#34;https://www.kubesphere.io/zh/&#34;&gt;&lt;strong&gt;KubeSphere&lt;/strong&gt;&lt;/a&gt;对公司项目进行持续集成时，有一个项目在&lt;code&gt;Gitlab&lt;/code&gt;中采用了&lt;a href=&#34;https://git-scm.com/book/en/v2/Git-Tools-Submodules&#34;&gt;&lt;strong&gt;Submodules&lt;/strong&gt;&lt;/a&gt;结构，导致原有的流水线不能直接使用，一番折腾后找到两种方案，其中一种比较优雅，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]JUnit 5 参数化测试实用指南</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-parameterized-tests/</link>
      <pubDate>Sat, 17 Jun 2023 09:21:43 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-parameterized-tests/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-parameterized-tests/&#34;&gt;&lt;strong&gt;A More Practical Guide to JUnit 5 Parameterized Tests&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]JUnit 5 生命周期 - 注释之前和之后</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-test-lifecycle/</link>
      <pubDate>Fri, 16 Jun 2023 19:21:43 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-test-lifecycle/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-test-lifecycle/&#34;&gt;&lt;strong&gt;JUnit 5 Test Lifecycle: Before and After Annotations&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>KubeSphere中名为prometheus-k8s-0的pod一直处理Pending状态解决</title>
      <link>https://lucumt.info/post/devops/prometheus-k8s-0-pending-in-kubesphere/</link>
      <pubDate>Tue, 06 Jun 2023 16:17:41 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/prometheus-k8s-0-pending-in-kubesphere/</guid>
      <description>&lt;p&gt;简要记录下在安装完成&lt;a href=&#34;https://www.kubesphere.io/&#34;&gt;KubeSphere&lt;/a&gt;后由于缺少&lt;a href=&#34;https://openebs.io/&#34;&gt;OpenEBS&lt;/a&gt;而导致名为&lt;code&gt;prometheus-k8s-0&lt;/code&gt;的pod节点一直处于&lt;code&gt;Pending&lt;/code&gt;状态，进而导致在&lt;code&gt;KubeSphere&lt;/code&gt;集群管理中资源统计部分出现NaN的问题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Numpy将npz文件解析为csv文件</title>
      <link>https://lucumt.info/post/python/using-numpy-to-parse-npzp-into-csv/</link>
      <pubDate>Tue, 16 May 2023 10:09:16 +0800</pubDate>
      <guid>https://lucumt.info/post/python/using-numpy-to-parse-npzp-into-csv/</guid>
      <description>&lt;p&gt;记录下如何基于&lt;a href=&#34;https://numpy.org/&#34;&gt;&lt;strong&gt;NumPy&lt;/strong&gt;&lt;/a&gt;将&lt;code&gt;npz&lt;/code&gt;文件解析成多个&lt;code&gt;csv&lt;/code&gt;文件，以自己项目中使用的&lt;code&gt;npz&lt;/code&gt;文件结构为例，其它地方使用时可能会有差异&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]JUnit 5 嵌套测试 - 将关联的测试分组在一起</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-nested-tests/</link>
      <pubDate>Tue, 02 May 2023 13:12:24 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-nested-tests/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-nested-tests/&#34;&gt;&lt;strong&gt;JUnit 5 Nested Tests: Grouping Related Tests Together&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]JUnit 5 断言 - 验证测试结果</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-assertions/</link>
      <pubDate>Mon, 01 May 2023 13:37:22 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-assertions/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-assertions/&#34;&gt;&lt;strong&gt;JUnit 5 Assertions: Verifying Test Results&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]JUnit 5 入门 - 编写第一段测试代码</title>
      <link>https://lucumt.info/post/translate/junit5/junit-5-getting-started/</link>
      <pubDate>Mon, 01 May 2023 09:51:22 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/junit5/junit-5-getting-started/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://www.arhohuttunen.com/junit-5-getting-started&#34;&gt;&lt;strong&gt;Getting Started with JUnit 5: Writing Your First Test&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>KubeSphere在当前公司提升研发效率的使用实践分享</title>
      <link>https://lucumt.info/post/devops/share-kubepshere-using-experience-for-current-company/</link>
      <pubDate>Mon, 17 Apr 2023 14:31:45 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/share-kubepshere-using-experience-for-current-company/</guid>
      <description>&lt;p&gt;我司从2022年6月开始使用&lt;code&gt;KubeSphere&lt;/code&gt;到目前为止快一年时间，简要记录下此过程中的经验积累和问题反馈。&lt;/p&gt;</description>
    </item>
    <item>
      <title>给Gitlab添加LDAP登录认证</title>
      <link>https://lucumt.info/post/ldap/add-ldap-support-for-gitlab/</link>
      <pubDate>Fri, 14 Apr 2023 11:22:34 +0800</pubDate>
      <guid>https://lucumt.info/post/ldap/add-ldap-support-for-gitlab/</guid>
      <description>&lt;p&gt;简要记录如何基于&lt;code&gt;docker&lt;/code&gt;创建&lt;code&gt;Gitlab&lt;/code&gt;并集成&lt;code&gt;ldap&lt;/code&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;且仅允许&lt;code&gt;LDAP&lt;/code&gt;账号登录。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Python程序中使用Nacos</title>
      <link>https://lucumt.info/post/nacos/integrate-python-program-to-nacos/</link>
      <pubDate>Tue, 11 Apr 2023 09:25:53 +0800</pubDate>
      <guid>https://lucumt.info/post/nacos/integrate-python-program-to-nacos/</guid>
      <description>&lt;p&gt;简要介绍如何在基于&lt;a href=&#34;https://flask.palletsprojects.com/en/2.3.x/&#34;&gt;&lt;strong&gt;Flask&lt;/strong&gt;&lt;/a&gt;开发的程序中通过&lt;a href=&#34;https://nacos.io/en-us/&#34;&gt;&lt;strong&gt;Nacos&lt;/strong&gt;&lt;/a&gt;提供的&lt;a href=&#34;https://github.com/nacos-group/nacos-sdk-python&#34;&gt;&lt;strong&gt;nacos-sdk-python&lt;/strong&gt;&lt;/a&gt;实现在&lt;code&gt;Python&lt;/code&gt;程序中整合&lt;code&gt;Nacos&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Hugo中开启Highcharts图表支持</title>
      <link>https://lucumt.info/post/hugo/enable-highcharts-in-hugo/</link>
      <pubDate>Sun, 02 Apr 2023 16:39:51 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/enable-highcharts-in-hugo/</guid>
      <description>&lt;p&gt;基于&lt;a href=&#34;https://lucumt.info/post/hugo/enable-diagrams-in-hugo/&#34;&gt;在Hugo中开启图表支持&lt;/a&gt;一文，简要说明如何在&lt;code&gt;Hugo&lt;/code&gt;中基于&lt;code&gt;Markdown&lt;/code&gt;以优雅的方式集成&lt;a href=&#34;https://www.highcharts.com/&#34;&gt;Highcharts&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Hugo中开启图表支持</title>
      <link>https://lucumt.info/post/hugo/enable-diagrams-in-hugo/</link>
      <pubDate>Mon, 27 Mar 2023 09:46:50 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/enable-diagrams-in-hugo/</guid>
      <description>&lt;div class=&#34;admonition info&#34;&gt;&lt;p class=&#34;admonition-title&#34;&gt;说明&lt;/p&gt;&#xA;&lt;p&gt;若页面中图表显示不正常，可能是由于&lt;code&gt;js&lt;/code&gt;文件加载和图表渲染需要时间，请多等待几秒钟！&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;简要介绍在如何在&lt;code&gt;Hugo&lt;/code&gt;博客中基于&lt;a href=&#34;https://github.com/olOwOlo/hugo-theme-even&#34;&gt;Even&lt;/a&gt;主题开启&lt;a href=&#34;https://flowchart.js.org/&#34;&gt;flowchart&lt;/a&gt;、&lt;a href=&#34;https://bramp.github.io/js-sequence-diagrams/&#34;&gt;sequence&lt;/a&gt;和&lt;a href=&#34;https://mermaid.js.org/&#34;&gt;mermaid&lt;/a&gt;图表的支持。&lt;/p&gt;</description>
    </item>
    <item>
      <title>构建自定义的Nacos镜像支持MySQL数据源与LDAP认证</title>
      <link>https://lucumt.info/post/docker/build-custom-nacos-image-to-support-ldap-and-mysql/</link>
      <pubDate>Fri, 24 Mar 2023 15:59:58 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/build-custom-nacos-image-to-support-ldap-and-mysql/</guid>
      <description>&lt;p&gt;&lt;code&gt;Nacos&lt;/code&gt;官方的&lt;code&gt;docker&lt;/code&gt;镜像不支持&lt;code&gt;LDAP&lt;/code&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;同时在连接&lt;code&gt;mysql&lt;/code&gt;方面在某些版本中会出现&lt;strong&gt;No Datasource Set&lt;/strong&gt; 的异常，而其官方的release版本则很很稳定，同时又支持&lt;code&gt;LDAP&lt;/code&gt;。目前部门很多项目都是基于&lt;code&gt;docker&lt;/code&gt;部署的，处于简化使用，基于部署维护等原因，我决定通过Dockerfile来构建符合自己要求的&lt;code&gt;nacos&lt;/code&gt;镜像，在确保性能稳定的同时也能支持&lt;code&gt;ldap&lt;/code&gt;登录。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用shell脚本实现将微服务程序以docker容器方式自动部署</title>
      <link>https://lucumt.info/post/linux/using-script-to-deploy-microservice-application-in-docker/</link>
      <pubDate>Thu, 16 Mar 2023 11:22:47 +0800</pubDate>
      <guid>https://lucumt.info/post/linux/using-script-to-deploy-microservice-application-in-docker/</guid>
      <description>&lt;p&gt;基于&lt;a href=&#34;https://lucumt.info/post/devops/git-checkout-by-dynamic-repository-in-jenkins/&#34;&gt;在Jenkins中根据配置从不同的仓库中Checkout代码&lt;/a&gt;一文，说明如何利用&lt;code&gt;shell&lt;/code&gt;脚本在&lt;code&gt;Linux&lt;/code&gt;系统中实现自动化的部署与升级。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在批处理脚本中利用&amp;&amp;命令将多条命令优雅的拼接在一起</title>
      <link>https://lucumt.info/post/cmd/combine-mutiple-command-with-ampersand-elegant-in-cmd/</link>
      <pubDate>Fri, 10 Mar 2023 22:48:56 +0800</pubDate>
      <guid>https://lucumt.info/post/cmd/combine-mutiple-command-with-ampersand-elegant-in-cmd/</guid>
      <description>&lt;p&gt;简要介绍在&lt;code&gt;Windows&lt;/code&gt;系统中采用基于&lt;code&gt;CMD&lt;/code&gt;的批处理脚本进行自动化部署时，对通过&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;拼接的指令以更优雅的方式实现，以提高批处理脚本的可读性和可维护性。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Jenkins中根据配置从不同的仓库中Checkout代码</title>
      <link>https://lucumt.info/post/devops/git-checkout-by-dynamic-repository-in-jenkins/</link>
      <pubDate>Fri, 10 Mar 2023 22:48:50 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/git-checkout-by-dynamic-repository-in-jenkins/</guid>
      <description>&lt;style&gt;&#xA;div.mermaid &gt; svg { max-width: 60% !important; }&#xA;&lt;/style&gt;&#xA;&lt;p&gt;简要介绍如何在&lt;a href=&#34;https://kubesphere.io/zh/&#34;&gt;KubeSphere&lt;/a&gt;中使用&lt;a href=&#34;https://www.jenkins.io/&#34;&gt;Jenkins&lt;/a&gt;基于用户选择的不同&lt;a href=&#34;https://gitlab.com&#34;&gt;GitLab&lt;/a&gt;工程模块利用&lt;a href=&#34;https://git-scm.com/&#34;&gt;Git&lt;/a&gt;进行动态的代码下载和编译构建，&lt;strong&gt;将多条流水线缩减为一条，减少&lt;code&gt;Jenkins&lt;/code&gt;流水线的开发与维护成本&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于我</title>
      <link>https://lucumt.info/about/</link>
      <pubDate>Mon, 27 Feb 2023 18:44:29 +0800</pubDate>
      <guid>https://lucumt.info/about/</guid>
      <description>一个混迹于帝都的程序猿，主要从事Java、Python和Golang相关的开发工作，欢迎互相交流! 编程领域 Java，日常编程主要使用的语言，</description>
    </item>
    <item>
      <title>在Java中解析和存储包含微秒与纳秒的时间</title>
      <link>https://lucumt.info/post/java-core/parse-and-store-microsecond-nanosecond-in-java/</link>
      <pubDate>Fri, 17 Feb 2023 13:48:05 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/parse-and-store-microsecond-nanosecond-in-java/</guid>
      <description>&lt;p&gt;在软件开发领域，大部分时间精确到秒或毫秒即可满足日常需求，但在某些对时间要求严格的场景中需要使用微秒、纳秒等更精确的时间值，本文简要记录如何在Java中通过&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html&#34;&gt;LocalDateTime&lt;/a&gt;实现对于微秒、纳秒的精确解析以及转化为&lt;code&gt;long&lt;/code&gt;型时间戳。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用kubeadm init初始化时由于registry.k8s.io/pause:3.6导致初始化失败</title>
      <link>https://lucumt.info/post/k8s/kubeadm-init-not-working-due-to-default-registry-config/</link>
      <pubDate>Wed, 11 Jan 2023 11:31:45 +0800</pubDate>
      <guid>https://lucumt.info/post/k8s/kubeadm-init-not-working-due-to-default-registry-config/</guid>
      <description>&lt;p&gt;工作中涉及到&lt;code&gt;Kubernetes&lt;/code&gt;相关知识，自己之前一直没有系统性的学习&lt;code&gt;Kubernetes&lt;/code&gt;，近期在腾讯云上想安装&lt;code&gt;Kubernetes&lt;/code&gt;时一直遇到在执行&lt;code&gt;kubeadm init&lt;/code&gt;时&lt;code&gt;6443&lt;/code&gt;和&lt;code&gt;10280&lt;/code&gt;端口无法访问导致操作失败进而无法顺利安装&lt;code&gt;Kubernetes&lt;/code&gt;。一番排查后发现是由于从&lt;code&gt;1.24.0&lt;/code&gt;之后&lt;code&gt;Kubernetes&lt;/code&gt;默认采用&lt;code&gt;containerd&lt;/code&gt;作为运行时容器，其默认镜像为&lt;code&gt;registry.k8s.io&lt;/code&gt;，该镜像在国内无法访问导致的，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Python的不同模块中使用全局变量</title>
      <link>https://lucumt.info/post/python/using-global-variable-in-different-module/</link>
      <pubDate>Thu, 05 Jan 2023 10:55:48 +0800</pubDate>
      <guid>https://lucumt.info/post/python/using-global-variable-in-different-module/</guid>
      <description>&lt;p&gt;简要介绍如何在&lt;code&gt;Python&lt;/code&gt;中利用&lt;a href=&#34;https://docs.python.org/3/reference/simple_stmts.html#global&#34;&gt;&lt;strong&gt;global&lt;/strong&gt;&lt;/a&gt;关键字定义的全局变量在不同模块间共享，避免后续重复犯错。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Grafana和Prometheus对系统进行监控</title>
      <link>https://lucumt.info/post/devops/using-grafana-and-prometheus-to-monitor-systems/</link>
      <pubDate>Thu, 15 Dec 2022 10:56:54 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/using-grafana-and-prometheus-to-monitor-systems/</guid>
      <description>&lt;p&gt;简要介绍如何在&lt;code&gt;docker&lt;/code&gt;环境下利用&lt;a href=&#34;https://grafana.com/&#34;&gt;&lt;strong&gt;Grafana&lt;/strong&gt;&lt;/a&gt;和&lt;a href=&#34;https://prometheus.io/&#34;&gt;&lt;strong&gt;Prometheus&lt;/strong&gt;&lt;/a&gt;对系统进行监控。&lt;/p&gt;</description>
    </item>
    <item>
      <title>给Grafana软件集成LDAP实现单点登录</title>
      <link>https://lucumt.info/post/ldap/add-ldap-support-for-grafana/</link>
      <pubDate>Sun, 11 Dec 2022 10:39:47 +0800</pubDate>
      <guid>https://lucumt.info/post/ldap/add-ldap-support-for-grafana/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://grafana.com/&#34;&gt;&lt;strong&gt;Grafana&lt;/strong&gt;&lt;/a&gt;是一款用&lt;code&gt;Go&lt;/code&gt;语言开发的开源数据可视化工具，可以做数据监控和数据统计，带有告警功能，本文简要说明如何将基于&lt;code&gt;docker&lt;/code&gt;安装的&lt;code&gt;Grafana&lt;/code&gt;与&lt;code&gt;LDAP&lt;/code&gt;集成实现快捷登录。&lt;/p&gt;</description>
    </item>
    <item>
      <title>给Sonarqube软件集成LDAP实现单点登录</title>
      <link>https://lucumt.info/post/ldap/add-ldap-support-for-sonarqube/</link>
      <pubDate>Sun, 04 Dec 2022 11:29:12 +0800</pubDate>
      <guid>https://lucumt.info/post/ldap/add-ldap-support-for-sonarqube/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://docs.sonarqube.org/latest/&#34;&gt;SonarQube&lt;/a&gt;是管理代码质量一个开放平台，可以快速的定位代码中潜在的或者明显的错误，本文简要说明如何将基于&lt;code&gt;docker&lt;/code&gt;安装的&lt;code&gt;SonarQube&lt;/code&gt;与&lt;code&gt;LDAP&lt;/code&gt;集成实现快捷登录。&lt;/p&gt;</description>
    </item>
    <item>
      <title>给Yapi添加LDAP登录认证</title>
      <link>https://lucumt.info/post/ldap/add-ldap-support-for-yapi/</link>
      <pubDate>Thu, 01 Dec 2022 11:23:00 +0800</pubDate>
      <guid>https://lucumt.info/post/ldap/add-ldap-support-for-yapi/</guid>
      <description>&lt;p&gt;&lt;code&gt;YApi&lt;/code&gt; 是&lt;strong&gt;高效&lt;/strong&gt;、&lt;strong&gt;易用&lt;/strong&gt;、&lt;strong&gt;功能强大&lt;/strong&gt;的 api 管理平台，旨在为开发、产品、测试人员提供更优雅的接口管理服务&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;，由去哪儿网开发，本文基于&lt;a href=&#34;https://www.jianshu.com/p/a97d2efb23c5&#34;&gt;为 Yapi 定制 apline 版 Docker 镜像&lt;/a&gt;简要说明如何将基于&lt;code&gt;docker&lt;/code&gt;安装的&lt;code&gt;Yapi&lt;/code&gt;与&lt;code&gt;LDAP&lt;/code&gt;集成。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Java8中的lambda来实现字符串的解析与分组</title>
      <link>https://lucumt.info/post/java-core/using-lambda-to-parse-and-group-data/</link>
      <pubDate>Tue, 15 Nov 2022 16:20:57 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/using-lambda-to-parse-and-group-data/</guid>
      <description>&lt;p&gt;在项目中某个请求的参数采用了较为复杂的规则拼接而成，在服务器端查询时需要将其解析成符合要求的&lt;code&gt;Map&lt;/code&gt;与&lt;code&gt;List&lt;/code&gt;组合的格式。一开始自己采用的是传统的遍历方式实现，后续发现用&lt;code&gt;Java8&lt;/code&gt;中引入的&lt;code&gt;lambda&lt;/code&gt;表达式后代码变的更简洁、更优雅，故简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>搜索结果展示</title>
      <link>https://lucumt.info/search/</link>
      <pubDate>Tue, 15 Nov 2022 11:49:21 +0800</pubDate>
      <guid>https://lucumt.info/search/</guid>
      <description></description>
    </item>
    <item>
      <title>由于k8s中的错误配置导致无法创建新节点</title>
      <link>https://lucumt.info/post/k8s/cpu-resource-not-enough-due-to-invalid-k8s-config/</link>
      <pubDate>Fri, 11 Nov 2022 18:19:12 +0800</pubDate>
      <guid>https://lucumt.info/post/k8s/cpu-resource-not-enough-due-to-invalid-k8s-config/</guid>
      <description>&lt;p&gt;记录下自己在使用&lt;a href=&#34;https://kubesphere.io/&#34;&gt;KubeSphere&lt;/a&gt;过程中由于&lt;code&gt;YAML&lt;/code&gt;中错误的配置导致&lt;code&gt;Kubernetes&lt;/code&gt;经常资源紧张而无法创建与部署新节点的问题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Log4j2中实现只有在traceId有值时才输出</title>
      <link>https://lucumt.info/post/log4j/show-trace-id-only-if-exists-in-log4j2/</link>
      <pubDate>Thu, 13 Oct 2022 17:47:46 +0800</pubDate>
      <guid>https://lucumt.info/post/log4j/show-trace-id-only-if-exists-in-log4j2/</guid>
      <description>&lt;p&gt;记录如何在&lt;a href=&#34;https://logging.apache.org/log4j/2.x/&#34;&gt;&lt;strong&gt;Log4j2&lt;/strong&gt;&lt;/a&gt;中使用traceId实现&lt;a href=&#34;https://blog.51cto.com/u_15501087/5834195&#34;&gt;&lt;strong&gt;链路追踪&lt;/strong&gt;&lt;/a&gt;时只有在请求header中有&lt;code&gt;trace-id&lt;/code&gt;时才显示前端发送过来的&lt;code&gt;trace-id&lt;/code&gt;值。&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaScript学习-reduce函数</title>
      <link>https://lucumt.info/post/js/using-reduce-function-on-array/</link>
      <pubDate>Mon, 26 Sep 2022 09:39:47 +0800</pubDate>
      <guid>https://lucumt.info/post/js/using-reduce-function-on-array/</guid>
      <description>&lt;p&gt;简要记录下自己对于&lt;code&gt;JavaScript&lt;/code&gt;中&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce&#34;&gt;&lt;strong&gt;reduce()&lt;/strong&gt;&lt;/a&gt;函数的学习小结。&lt;/p&gt;</description>
    </item>
    <item>
      <title>个人Hugo博客关于Even主题的一些使用改进</title>
      <link>https://lucumt.info/post/hugo/share-experience-for-using-hugo-even-theme/</link>
      <pubDate>Sun, 18 Sep 2022 09:43:19 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/share-experience-for-using-hugo-even-theme/</guid>
      <description>&lt;p&gt;记录下个人&lt;a href=&#34;https://gohugo.io/&#34;&gt;&lt;strong&gt;Hugo&lt;/strong&gt;&lt;/a&gt;博客使用&lt;a href=&#34;https://github.com/olOwOlo/hugo-theme-even&#34;&gt;&lt;strong&gt;Even&lt;/strong&gt;&lt;/a&gt;主题时的一些使用心得与个人改进。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Nacos与KubeSphere创建多套开发与测试环境</title>
      <link>https://lucumt.info/post/devops/using-nacos-and-kubesphere-to-create-multiple-environments/</link>
      <pubDate>Thu, 15 Sep 2022 15:46:24 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/using-nacos-and-kubesphere-to-create-multiple-environments/</guid>
      <description>&lt;p&gt;基于&lt;a href=&#34;https://lucumt.info/post/devops/share-experiences-for-using-kubesphere/&#34;&gt;KubeSphere使用心得&lt;/a&gt;给部门搭建了&lt;code&gt;dev&lt;/code&gt;、&lt;code&gt;sit&lt;/code&gt;、&lt;code&gt;test&lt;/code&gt;、&lt;code&gt;prod&lt;/code&gt;这4套环境之后，一开始使用较为顺利，但随着项目的推进以及开发人员的增多，同时有多个功能模块需要并行开发与测试，导致原有的4套环境不够用。经过一番摸索后，实现了结合&lt;a href=&#34;https://nacos.io/zh-cn/docs/what-is-nacos.html&#34;&gt;Nacos&lt;/a&gt;在&lt;code&gt;KubeSphere&lt;/code&gt;中动态配置多套环境功能，通过修改&lt;code&gt;Nacos&lt;/code&gt;中的&lt;code&gt;JSON&lt;/code&gt;配置文件可很容易的从4套扩展为16套甚至更多。&lt;/p&gt;</description>
    </item>
    <item>
      <title>将3个小int整数合并到1个long中从而缩小数据量</title>
      <link>https://lucumt.info/post/bit/merge-three-int-number-into-a-long-number/</link>
      <pubDate>Thu, 08 Sep 2022 10:04:59 +0800</pubDate>
      <guid>https://lucumt.info/post/bit/merge-three-int-number-into-a-long-number/</guid>
      <description>&lt;p&gt;近期在工作中遇到由于&lt;code&gt;HTTP&lt;/code&gt;返回的内容较多导致系统响应延迟的问题，最终自己结合&lt;a href=&#34;https://en.wikipedia.org/wiki/Gzip&#34;&gt;gzip&lt;/a&gt;、&lt;a href=&#34;https://developers.google.com/protocol-buffers&#34;&gt;Protocol Buffers&lt;/a&gt;、&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E4%BD%8D%E6%93%8D%E4%BD%9C&#34;&gt;位运算&lt;/a&gt;等将&lt;code&gt;HTTP&lt;/code&gt;响应返回的数据从15M减少到1M从而解决系统无卡顿问题。其中对于&lt;code&gt;位运算&lt;/code&gt;部分自己是结合业务实际，将3个小型&lt;code&gt;int&lt;/code&gt;转化为1个&lt;code&gt;long&lt;/code&gt;，将数据量减少三分之一，简单记录下其实现(以&lt;code&gt;Java&lt;/code&gt;实现为例)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubesphere集成LDAP踩坑记录</title>
      <link>https://lucumt.info/post/devops/setting-ldap-for-kubesphere/</link>
      <pubDate>Sun, 04 Sep 2022 09:35:50 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/setting-ldap-for-kubesphere/</guid>
      <description>&lt;p&gt;之前在公司内部推广&lt;a href=&#34;https://kubesphere.io/&#34;&gt;KubeSphere&lt;/a&gt;用于持续集成和部署，取得了不错的反馈，考虑到大规模使用的便利性以及之前已有&lt;a href=&#34;https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol&#34;&gt;LDAP&lt;/a&gt;整合其它系统的成熟经验，很自然的想将&lt;code&gt;LDAP&lt;/code&gt;集成到&lt;code&gt;KubeSphere&lt;/code&gt;中。原以为会很容易，一番折腾下来费了不好功夫(&lt;strong&gt;&lt;code&gt;KubeSphere&lt;/code&gt;要求使用&lt;code&gt;LDAP&lt;/code&gt;时必须设置管理员账号和密码&lt;/strong&gt;)，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用GitHub Action实现Hugo博客在GitHub Pages自动部署</title>
      <link>https://lucumt.info/post/hugo/using-github-action-to-auto-build-deploy/</link>
      <pubDate>Sat, 03 Sep 2022 18:35:57 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/using-github-action-to-auto-build-deploy/</guid>
      <description>&lt;p&gt;作为一名IT民工，善于利用各种工具提升工作效率才算合格，本文简单记录自己如何利用&lt;a href=&#34;https://github.com/features/actions&#34;&gt;GitHub Actions&lt;/a&gt;实现个人&lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;博客在&lt;a href=&#34;https://pages.github.com/&#34;&gt;GitHub Pages&lt;/a&gt;中的自动化部署。&lt;/p&gt;</description>
    </item>
    <item>
      <title>将MinIO中的文件夹下载为ZIP文件</title>
      <link>https://lucumt.info/post/minio/download-minio-folder-as-zip-file/</link>
      <pubDate>Sat, 20 Aug 2022 20:35:44 +0800</pubDate>
      <guid>https://lucumt.info/post/minio/download-minio-folder-as-zip-file/</guid>
      <description>&lt;p&gt;公司项目采用&lt;a href=&#34;https://min.io/&#34;&gt;&lt;strong&gt;MinIO&lt;/strong&gt;&lt;/a&gt;作为数据存储，最近遇到一个需求是将其中的某个文件夹的数据基于其原有的结构下载为&lt;code&gt;ZIP&lt;/code&gt;文件，网上有很多下载为&lt;code&gt;ZIP&lt;/code&gt;的代码，个人觉得其中好多不够精简，简单记录下自己的实现。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Kubernetes中配置service-node-port-range不生效的问题</title>
      <link>https://lucumt.info/post/k8s/service-node-port-range-config-not-working-in-k8s/</link>
      <pubDate>Mon, 15 Aug 2022 18:27:59 +0800</pubDate>
      <guid>https://lucumt.info/post/k8s/service-node-port-range-config-not-working-in-k8s/</guid>
      <description>&lt;p&gt;近期在公司内部搭建基于&lt;a href=&#34;https://kubesphere.com.cn/&#34;&gt;&lt;strong&gt;KubeSphere&lt;/strong&gt;&lt;/a&gt;的持续集成平台时，发现其底层的&lt;a href=&#34;https://kubernetes.io/&#34;&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;&lt;/a&gt;默认的端口范围为&lt;strong&gt;30000-32767&lt;/strong&gt;而公司有多个采用微服务模块的项目在使用，默认的端口范围不便于分配使用，在基于网上文档修改的过程中自己踩到了一个坑，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>KubeSphere使用心得</title>
      <link>https://lucumt.info/post/devops/share-experiences-for-using-kubesphere/</link>
      <pubDate>Sat, 06 Aug 2022 18:00:08 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/share-experiences-for-using-kubesphere/</guid>
      <description>&lt;p&gt;目前公司的开发方式都是手工编译&amp;amp;部署，十分低效，最近将Web开发相关的项目都基于&lt;a href=&#34;https://kubesphere.io/&#34;&gt;KubeSphere&lt;/a&gt;通过基于&lt;a href=&#34;https://www.jenkins.io/&#34;&gt;Jenkins&lt;/a&gt;的流水线方式实现了自动部署，在此过程中遇到了一些阻塞点，简单记录下它们的解决方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>由于daemon.json中的配置与其它启动项冲突导致docker服务无法启动</title>
      <link>https://lucumt.info/post/docker/can-not-set-log-driver-and-log-opts-in-docker-daemon-json/</link>
      <pubDate>Thu, 04 Aug 2022 16:56:18 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/can-not-set-log-driver-and-log-opts-in-docker-daemon-json/</guid>
      <description>&lt;p&gt;由于公司的&lt;code&gt;docker&lt;/code&gt;容器在运行一段时间后日志变得很大，通过&lt;code&gt;shell&lt;/code&gt;脚本或者结合&lt;code&gt;docker stop&lt;/code&gt;、&lt;code&gt;docker rm&lt;/code&gt;和&lt;code&gt;docker run&lt;/code&gt;来重新创建实例方式都觉得太麻烦，按照网络上的建议在&lt;code&gt;/etc/docker/daemon.json&lt;/code&gt;中进行相关修改后却一直无法启动，同时错误信息一直提示&lt;code&gt;unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the config…e: json-file)&lt;/code&gt;，经过一番排查后终于找到原因，故记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Hugo生成的博客中动态的修改样式</title>
      <link>https://lucumt.info/post/hugo/change-hugo-style-in-even-theme/</link>
      <pubDate>Mon, 01 Aug 2022 17:04:09 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/change-hugo-style-in-even-theme/</guid>
      <description>&lt;p&gt;自己一直特别羡慕&lt;a href=&#34;https://www.cnblogs.com&#34;&gt;&lt;strong&gt;博客园&lt;/strong&gt;&lt;/a&gt;上某些博主的博文样式（如&lt;a href=&#34;https://www.cnblogs.com/wupeixuan/p/13450815.html&#34;&gt;武培轩&lt;/a&gt;,&lt;a href=&#34;https://www.cnblogs.com/javaguide/p/16385150.html&#34;&gt;JavaGuide&lt;/a&gt;)，这些博文样式第一眼看起来就很清爽,让人很有阅读的欲望，而我总感觉自己博客的样式特丑陋。即使不关注内容，只看排版布局和样式，有时候自己写完一篇文章自己都不想去看，何况别人！&lt;/p&gt;&#xA;&lt;p&gt;终于有一天我受不了自己的博客样式，决定对其升级一版，在这个过程中发现个人采用的博客主题&lt;a href=&#34;https://github.com/olOwOlo/hugo-theme-even&#34;&gt;&lt;strong&gt;Even&lt;/strong&gt;&lt;/a&gt;功能很强大，基于上没做啥修改就达到了自己想要的效果，特此记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>多个docker-compose.yml文件启动时容器冲突的原因分析</title>
      <link>https://lucumt.info/post/docker/multiple-docker-compose-conflict-analysis/</link>
      <pubDate>Mon, 25 Jul 2022 22:53:33 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/multiple-docker-compose-conflict-analysis/</guid>
      <description>&lt;p&gt;简要记录下近期在项目中遇到的多个&lt;code&gt;docker-compose.yml&lt;/code&gt;文件容器启动时发生冲突的原因分析。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]如何检测一个Hugo站点是开发环境还是生产环境</title>
      <link>https://lucumt.info/post/hugo/check-if-a-hugo-site-is-in-development-or-production/</link>
      <pubDate>Sun, 19 Jun 2022 12:09:19 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/check-if-a-hugo-site-is-in-development-or-production/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://dev.to/tylerlwsmith/check-if-a-hugo-site-is-in-development-or-production-2beb&#34;&gt;&lt;strong&gt;How to check if a Hugo site is in development or production&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>5.[译]同线程系统</title>
      <link>https://lucumt.info/post/translate/java-concurrency/same-threading/</link>
      <pubDate>Thu, 16 Jun 2022 12:16:44 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/java-concurrency/same-threading/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://jenkov.com/tutorials/java-concurrency/same-threading.html&#34;&gt;&lt;strong&gt;Same-threading&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;同线程系统(Same-threading)&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; 是由一个单线程横向扩展为N个线程系统并行执行的并发模型。&lt;/p&gt;&#xA;&lt;p&gt;同线程系统不是纯粹的单线程系统，因为它包含多个线程。 但其中每个线程都像单线程系统一样运，因此采用术语同线程而不是单线程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Chrome中将上传的文件夹数据转化为按树结构展示</title>
      <link>https://lucumt.info/post/web/convert-folder-upload-data-to-tree-node-in-chrome/</link>
      <pubDate>Sun, 20 Feb 2022 20:38:18 +0800</pubDate>
      <guid>https://lucumt.info/post/web/convert-folder-upload-data-to-tree-node-in-chrome/</guid>
      <description>&lt;p&gt;项目中有个模块支持按文件夹选中批量上传，用户希望在真正上传之前能够在浏览器中实时预览选中的文件夹层级结构，本文基于&lt;code&gt;Chrome&lt;/code&gt;浏览器为例，简要说明这一实现。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spring中BeanFactory和FactoryBean的区别以及使用场景</title>
      <link>https://lucumt.info/post/spring/spring-core/difference-between-factorybean-and-beanfactory/</link>
      <pubDate>Sun, 16 Jan 2022 11:00:01 +0800</pubDate>
      <guid>https://lucumt.info/post/spring/spring-core/difference-between-factorybean-and-beanfactory/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/BeanFactory.html&#34;&gt;&lt;strong&gt;BeanFactory&lt;/strong&gt;&lt;/a&gt;和&lt;a href=&#34;https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/FactoryBean.html&#34;&gt;&lt;strong&gt;FactoryBean&lt;/strong&gt;&lt;/a&gt;的区别与使用场景是&lt;a href=&#34;https://spring.io/&#34;&gt;&lt;strong&gt;Spring&lt;/strong&gt;&lt;/a&gt;面试中的高频题之一，本文基于网上资料和个人理解，简要说明他们之间的异同以及使用场景。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Java代码中集成LDAP</title>
      <link>https://lucumt.info/post/ldap/using-ldap-in-java/</link>
      <pubDate>Sun, 26 Dec 2021 09:15:58 +0800</pubDate>
      <guid>https://lucumt.info/post/ldap/using-ldap-in-java/</guid>
      <description>&lt;p&gt;简单记录个人项目中基于&lt;code&gt;Java&lt;/code&gt;使用&lt;a href=&#34;https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol&#34;&gt;&lt;strong&gt;LDAP&lt;/strong&gt;&lt;/a&gt;的相关经验，供后续参考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]如何处理MySQL中的死锁</title>
      <link>https://lucumt.info/post/mysql/how-to-deal-with-deadlocks-in-mysql/</link>
      <pubDate>Sat, 25 Sep 2021 17:03:21 +0800</pubDate>
      <guid>https://lucumt.info/post/mysql/how-to-deal-with-deadlocks-in-mysql/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://medium.com/geekculture/how-to-deal-with-deadlocks-in-mysql-58f4d830788b&#34;&gt;&lt;strong&gt;How to deal with deadlocks in mysql&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Linux脚本将Docker镜像手工上传到Harbor仓库</title>
      <link>https://lucumt.info/post/devops/upload-docker-image-to-harbor-via-shell/</link>
      <pubDate>Thu, 24 Jun 2021 20:38:59 +0800</pubDate>
      <guid>https://lucumt.info/post/devops/upload-docker-image-to-harbor-via-shell/</guid>
      <description>&lt;p&gt;简要说明如何通过&lt;code&gt;Linux&lt;/code&gt;指令将特定的&lt;code&gt;Docker&lt;/code&gt;镜像手工上传到&lt;code&gt;Harbor&lt;/code&gt;仓库&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用JDK8时区常量进行时区相关操作</title>
      <link>https://lucumt.info/post/java-core/get-datetime-in-specific-timezone/</link>
      <pubDate>Tue, 08 Jun 2021 16:01:47 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/get-datetime-in-specific-timezone/</guid>
      <description>&lt;p&gt;在进行&lt;code&gt;Java&lt;/code&gt;编程时有时候会涉及到时区相关的操作，本文简要介绍一种通过使用&lt;code&gt;JDK&lt;/code&gt;内置的时区常量来进行时区相关操作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>基于Docker创建Harbor镜像仓库系统</title>
      <link>https://lucumt.info/post/docker/install-harbor-via-docker/</link>
      <pubDate>Tue, 25 May 2021 10:05:48 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/install-harbor-via-docker/</guid>
      <description>&lt;p&gt;简要介绍基于&lt;code&gt;docker-compose&lt;/code&gt;安装&lt;code&gt;Harbor&lt;/code&gt;的过程，供后续参考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Docker容器内部获取当前容器实例的名称</title>
      <link>https://lucumt.info/post/docker/get-docker-name-inside-docker-container/</link>
      <pubDate>Thu, 06 May 2021 13:16:52 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/get-docker-name-inside-docker-container/</guid>
      <description>&lt;p&gt;介绍如何在&lt;code&gt;Docker&lt;/code&gt;容器内部获取当前容器名称的方法，特别感谢&lt;a href=&#34;https://medium.com/disassembly/get-container-name-inside-the-docker-container-1997d36aaecd&#34;&gt;&lt;strong&gt;Get container name inside the docker container&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MyBatis中插入JSON格式数据</title>
      <link>https://lucumt.info/post/mybatis/insert-json-data-in-mybatis/</link>
      <pubDate>Thu, 15 Apr 2021 09:37:41 +0800</pubDate>
      <guid>https://lucumt.info/post/mybatis/insert-json-data-in-mybatis/</guid>
      <description>&lt;p&gt;简单记录下如何在&lt;a href=&#34;https://mybatis.org/mybatis-3/&#34;&gt;&lt;strong&gt;MyBatis&lt;/strong&gt;&lt;/a&gt;中插入&lt;a href=&#34;https://www.json.org/json-en.html&#34;&gt;&lt;strong&gt;JSON&lt;/strong&gt;&lt;/a&gt;，以备参考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在利用docker安装的nginx中实现静态文件下载</title>
      <link>https://lucumt.info/post/docker/download-file-from-nginx-installed-via-docker/</link>
      <pubDate>Tue, 23 Mar 2021 10:46:12 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/download-file-from-nginx-installed-via-docker/</guid>
      <description>&lt;p&gt;简单记录利用&lt;code&gt;nginx&lt;/code&gt;结合&lt;code&gt;docker&lt;/code&gt;实现一个简易的静态文件下载服务器。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dockerfile中RUN、CMD与ENTRYPOINT的差异比较</title>
      <link>https://lucumt.info/post/docker/difference-between-run-and-cmd-and-entrypoint-in-dockerfile-build/</link>
      <pubDate>Sat, 20 Feb 2021 15:00:08 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/difference-between-run-and-cmd-and-entrypoint-in-dockerfile-build/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;https://codewithyury.com/docker-run-vs-cmd-vs-entrypoint/&#34;&gt;&lt;strong&gt;Docker RUN vs CMD vs ENTRYPOINT&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dockerfile中ADD与COPY的使用异同</title>
      <link>https://lucumt.info/post/docker/difference-between-add-and-copy-in-dockerfile-build/</link>
      <pubDate>Sat, 16 Jan 2021 15:00:05 +0800</pubDate>
      <guid>https://lucumt.info/post/docker/difference-between-add-and-copy-in-dockerfile-build/</guid>
      <description>&lt;p&gt;简要说明在使用&lt;a href=&#34;https://docs.docker.com/reference/dockerfile/&#34;&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;&lt;/a&gt;构建镜像时，&lt;a href=&#34;https://docs.docker.com/reference/dockerfile/#add&#34;&gt;&lt;strong&gt;ADD&lt;/strong&gt;&lt;/a&gt;与&lt;a href=&#34;https://docs.docker.com/reference/dockerfile/#copy&#34;&gt;&lt;strong&gt;COPY&lt;/strong&gt;&lt;/a&gt;指令的使用差异。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一次由wait造成的死锁问题分析</title>
      <link>https://lucumt.info/post/java-concurrency/analysis-deadlock-in-multiple-threads-caused-by-wait/</link>
      <pubDate>Sat, 12 Sep 2020 18:07:27 +0800</pubDate>
      <guid>https://lucumt.info/post/java-concurrency/analysis-deadlock-in-multiple-threads-caused-by-wait/</guid>
      <description>&lt;p&gt;在&lt;a href=&#34;https://lucumt.info/post/java-concurrency/print-a-b-c-in-turn-by-threads/&#34;&gt;多种方式实现在Java中用线程轮流打印ABC&lt;/a&gt;中自己本想用单个锁通过调用&lt;code&gt;wait()&lt;/code&gt;实现轮流打印，但一直遇到全部等待并停止执行的死锁问题，经过网上求助和自己分析，最终找到问题原因，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>多种方式实现在Java中用线程轮流打印ABC</title>
      <link>https://lucumt.info/post/java-concurrency/print-a-b-c-in-turn-by-threads/</link>
      <pubDate>Tue, 08 Sep 2020 11:11:06 +0800</pubDate>
      <guid>https://lucumt.info/post/java-concurrency/print-a-b-c-in-turn-by-threads/</guid>
      <description>&lt;p&gt;在&lt;code&gt;Java&lt;/code&gt;中采用3个线程不停的轮流打印ABC这3个字符，采用不同的方式实现。&lt;/p&gt;</description>
    </item>
    <item>
      <title>将Windows中的画图工具默认菜单从“文件”切换到“菜单”</title>
      <link>https://lucumt.info/post/other/switch-windows-paint-default-tab-to-home/</link>
      <pubDate>Tue, 07 Apr 2020 15:21:27 +0800</pubDate>
      <guid>https://lucumt.info/post/other/switch-windows-paint-default-tab-to-home/</guid>
      <description>&lt;p&gt;简要介绍如何在&lt;code&gt;Windows&lt;/code&gt;中的画图工具新打开一个画图时将其默认菜单从&lt;code&gt;文件&lt;/code&gt;切换到&lt;code&gt;菜单&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在MyBatis接口中使用Optional进行非空判断</title>
      <link>https://lucumt.info/post/mybatis/using-optional-in-mybatis-mapper/</link>
      <pubDate>Thu, 13 Feb 2020 14:40:19 +0800</pubDate>
      <guid>https://lucumt.info/post/mybatis/using-optional-in-mybatis-mapper/</guid>
      <description>&lt;p&gt;在进行&lt;code&gt;Java&lt;/code&gt;开发时，&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html&#34;&gt;&lt;strong&gt;NullPointerException&lt;/strong&gt;&lt;/a&gt;是一个很常见的异常，在&lt;code&gt;Java8&lt;/code&gt;中提供了&lt;a href=&#34;https://www.oracle.com/technical-resources/articles/java/java8-optional.html&#34;&gt;&lt;strong&gt;Optional&lt;/strong&gt;&lt;/a&gt;来避免此问题，而在&lt;a href=&#34;https://blog.mybatis.org/2019/01/mybatis-350-released.html&#34;&gt;&lt;strong&gt;MyBatis 3.5.0&lt;/strong&gt;&lt;/a&gt;中也提供了对&lt;code&gt;Optional&lt;/code&gt;的支持，本文简要叙述如何在&lt;code&gt;MyBatis&lt;/code&gt;中使用&lt;code&gt;Optional&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]Spring中@Configuration和@Component的对比</title>
      <link>https://lucumt.info/post/translate/spring/@configuration-vs-@component-in-spring/</link>
      <pubDate>Wed, 08 Jan 2020 16:21:26 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/spring/@configuration-vs-@component-in-spring/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;http://dimafeng.com/2015/08/29/spring-configuration_vs_component/&#34;&gt;&lt;strong&gt;Spring @Configuration vs @Component&lt;/strong&gt;&lt;/a&gt;。&lt;/p&gt;&#xA;&lt;p&gt;在&lt;a href=&#34;http://dimafeng.com/2015/08/16/cglib/&#34;&gt;前一篇文章&lt;/a&gt;中，我说过我们可以使用&lt;code&gt;@Component&lt;/code&gt;作为&lt;code&gt;@Configuration&lt;/code&gt;的一个备用选择，实际上这是来自于&lt;a href=&#34;https://github.com/spring-projects/spring-framework/issues/17430&#34;&gt;Spring team的官方建议&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL中由于user表中错误的host配置导入无法登录数据库</title>
      <link>https://lucumt.info/post/mysql/mysql-can-not-login-due-to-incorrect-host-config/</link>
      <pubDate>Thu, 22 Aug 2019 11:32:19 +0800</pubDate>
      <guid>https://lucumt.info/post/mysql/mysql-can-not-login-due-to-incorrect-host-config/</guid>
      <description>&lt;p&gt;在给&lt;code&gt;MySQL&lt;/code&gt;数据库进行配置时，对于&lt;code&gt;mysql&lt;/code&gt;数据库表下的&lt;code&gt;user&lt;/code&gt;表配置错误，导致无法通过命令登录进入&lt;code&gt;MySQL&lt;/code&gt;数据库，查找网上的文档发现可通过&lt;strong&gt;安全模式&lt;/strong&gt;进入，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Arrays.asList类型转换结果的坑</title>
      <link>https://lucumt.info/post/java-core/arrays-as-list-convert-result-in-java/</link>
      <pubDate>Mon, 22 Jul 2019 10:47:12 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/arrays-as-list-convert-result-in-java/</guid>
      <description>&lt;p&gt;在各种&lt;code&gt;Java&lt;/code&gt;编程规范中都强调尽量不用&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#asList-T...-&#34;&gt;java.util.Arrays.asList()&lt;/a&gt;方法以避免调用此方法生成的&lt;code&gt;List&lt;/code&gt;无法进行修改操作，个人近期在使用过程中发现该方法的另外一个坑，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在MySQL中对大量数据进行limit offset分页查询的优化</title>
      <link>https://lucumt.info/post/mysql/limit-large-size-data-in-mysql/</link>
      <pubDate>Mon, 11 Feb 2019 09:52:31 +0800</pubDate>
      <guid>https://lucumt.info/post/mysql/limit-large-size-data-in-mysql/</guid>
      <description>&lt;p&gt;在软件开发中采用&lt;code&gt;LIMIT OFFSET&lt;/code&gt;对数据库进行分页是常见操作，但在数据量很大时直接使用&lt;code&gt;LIMIT OFFSET&lt;/code&gt;查询尾部的数据会导致性能很慢，本文简要介绍2种改进方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL中快速创建大量测试数据</title>
      <link>https://lucumt.info/post/mysql/mysql-create-massive-test-data-quickly/</link>
      <pubDate>Fri, 08 Feb 2019 13:57:45 +0800</pubDate>
      <guid>https://lucumt.info/post/mysql/mysql-create-massive-test-data-quickly/</guid>
      <description>&lt;p&gt;在学习&lt;code&gt;MySQL&lt;/code&gt;索引和分库分表等知识的过程中，经常会涉及到创建大批量的测试数据，本文简要说明自己常用的几种创建方式以及各自的优劣对比。&lt;/p&gt;</description>
    </item>
    <item>
      <title>MySQL中不同SELECT COUNT统计总数时的区别</title>
      <link>https://lucumt.info/post/mysql/difference-and-usage-for-various-select-count/</link>
      <pubDate>Fri, 25 Jan 2019 17:18:27 +0800</pubDate>
      <guid>https://lucumt.info/post/mysql/difference-and-usage-for-various-select-count/</guid>
      <description>&lt;p&gt;在数据库中使用&lt;code&gt;COUNT&lt;/code&gt;函数统计总数是常用操作，本文参考网上资料以及个人实际操作记录下&lt;code&gt;MySQL&lt;/code&gt;中通过&lt;code&gt;COUNT(列名)&lt;/code&gt;、&lt;code&gt;COUNT(常量)&lt;/code&gt;以及&lt;code&gt;COUNT(*)&lt;/code&gt;在&lt;strong&gt;相同查询条件下&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/strong&gt; 的区别以及使用场景。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ClassNotFoundException与NoClassDefFoundError对比</title>
      <link>https://lucumt.info/post/java-core/difference-between-class-not-found-exception-and-no-class-def-found-error/</link>
      <pubDate>Wed, 02 Jan 2019 14:18:46 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/difference-between-class-not-found-exception-and-no-class-def-found-error/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html&#34;&gt;&lt;strong&gt;ClassNotFoundException&lt;/strong&gt;&lt;/a&gt;与&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/NoClassDefFoundError.html&#34;&gt;&lt;strong&gt;NoClassDefFoundError&lt;/strong&gt;&lt;/a&gt;是&lt;code&gt;Java&lt;/code&gt;开发中经常会遇到的异常与错误，本文基于个人工作中遇到的场景以及网上的资料，简要总结它们的差异、出现场景以及规避方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译]如何处理InterruptedException</title>
      <link>https://lucumt.info/post/translate/java-concurrency/dealing-with-interrupted-exception/</link>
      <pubDate>Sat, 15 Dec 2018 11:57:36 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/java-concurrency/dealing-with-interrupted-exception/</guid>
      <description>&lt;p&gt;本文翻译自 &lt;strong&gt;&lt;a href=&#34;https://www.ibm.com/developerworks/library/j-jtp05236/&#34;&gt;Dealing with InterruptedException&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这个故事可能很熟悉: 你正在编写一个测试程序，需要将程序暂停一段时间,于是你调用了&lt;code&gt;Thread.sleep()&lt;/code&gt;来实现。&#xA;但此时编译器或IDE会立即提示你没有处理非运行时异常 &lt;strong&gt;&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/?java/lang/InterruptedException.html&#34;&gt;InterruptedException&lt;/a&gt;&lt;/strong&gt;。那么，什么是&lt;code&gt;InterruptedException&lt;/code&gt;,为什么我们要必须处理它呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>volatile关键字在Java程序中的使用</title>
      <link>https://lucumt.info/post/java-concurrency/how-to-use-volatile-in-java/</link>
      <pubDate>Sat, 08 Dec 2018 23:49:33 +0800</pubDate>
      <guid>https://lucumt.info/post/java-concurrency/how-to-use-volatile-in-java/</guid>
      <description>&lt;p&gt;&lt;code&gt;volatile&lt;/code&gt;关键字在Java多线程编程中很常见，由于自己之前学习多线程时一度以为只要需确保线程可见性的代码都需要使用&lt;code&gt;volatile&lt;/code&gt;关键字，后来发现并不是这样的，故简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java中利用==和equals()进行字符串比较的说明</title>
      <link>https://lucumt.info/post/java-core/java-string-equal-compare/</link>
      <pubDate>Sat, 08 Dec 2018 23:02:10 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/java-string-equal-compare/</guid>
      <description>&lt;p&gt;Java中字符串的比较在面试中很常见，我们都知道比较字符串是否相等要使用&lt;code&gt;equals()&lt;/code&gt;而不是&lt;code&gt;==&lt;/code&gt;。本文首先利用&lt;code&gt;javap&lt;/code&gt;命令从class文件的角度来分析不同字符串比较的结果，然后分析下&lt;code&gt;Tomcat&lt;/code&gt;中如何获取前端输入的字符串参数,并以此说明Java Web开发中该如何正确的进行字符串的比较。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java中interrupt()、interrupted()、isInterrupted()的区别</title>
      <link>https://lucumt.info/post/java-concurrency/difference-between-interrupt-interrupted-isinterrupted/</link>
      <pubDate>Mon, 03 Dec 2018 22:57:56 +0800</pubDate>
      <guid>https://lucumt.info/post/java-concurrency/difference-between-interrupt-interrupted-isinterrupted/</guid>
      <description>&lt;p&gt;最近复习Java多线程相关知识时，发现线程中断的&lt;code&gt;interrupt()&lt;/code&gt;、&lt;code&gt;interrupted()&lt;/code&gt;、&lt;code&gt;isInterrupted()&lt;/code&gt;这3个方法容易让人产生混淆，结合官网的API以及实际代码验证，先简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用126邮箱在阿里云中发送SSL/TSL加密邮件</title>
      <link>https://lucumt.info/post/java-core/send-ssl-mail-with-126-in-aliyun/</link>
      <pubDate>Mon, 03 Dec 2018 21:54:05 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/send-ssl-mail-with-126-in-aliyun/</guid>
      <description>&lt;p&gt;由于工作原因需要在阿里云中部署一个Web系统，该系统会调用邮箱服务器定时给相关人员发送通知邮件,在测试邮箱配置时，发现始终无法正确发送邮件，而之前在研发环境和测试环境都能正常工作。网上查找之后，发现是阿里云出于安全原因默认禁止了25端口的出方向访问，需要进行&lt;a href=&#34;https://help.aliyun.com/knowledge_detail/56130.html?spm=5176.10695662.1996646101.searchclickresult.51d3cd65xV8EFf&#34; title=&#34;25端口解封申请&#34;&gt;&lt;strong&gt;25端口解封申请&lt;/strong&gt;&lt;/a&gt;，按照说明提交相应的申请后没想到不到一个小时就提醒申请未通过，同时提示使用465端口来发送加密邮件。基于此，本文简要说明如何使用126邮箱通过465端口在阿里云中发送邮件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在模板类中利用抽象类或接口default方法实现默认方法以简化开发与维护</title>
      <link>https://lucumt.info/post/java-core/default-method-in-abstract-class-and-interface/</link>
      <pubDate>Sat, 02 Jun 2018 13:27:06 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/default-method-in-abstract-class-and-interface/</guid>
      <description>&lt;p&gt;在开发大规模的&lt;code&gt;Java&lt;/code&gt;项目时，通常会涉及到各种设计模式，本文简要说明当使用&lt;a href=&#34;https://zh.wikipedia.org/zh-cn/%E6%A8%A1%E6%9D%BF%E6%96%B9%E6%B3%95&#34;&gt;&lt;strong&gt;模板方法&lt;/strong&gt;&lt;/a&gt;时，如何利用接口default方法或抽象类对具体的子类进行精简，便于开发与维护。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Quartz中动态设置定时任务的执行时间并立即生效</title>
      <link>https://lucumt.info/post/quartz/update-quartz-scheduler-dynamic/</link>
      <pubDate>Tue, 09 Jan 2018 22:10:30 +0800</pubDate>
      <guid>https://lucumt.info/post/quartz/update-quartz-scheduler-dynamic/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.quartz-scheduler.org/&#34;&gt;&lt;strong&gt;Quartz&lt;/strong&gt;&lt;/a&gt;是软件开发中常用的任务调度框架，实际中通常结合 &lt;a href=&#34;https://spring.io/&#34;&gt;&lt;strong&gt;Spring&lt;/strong&gt;&lt;/a&gt; 一起使用，并在Spring的配置文件中利用&lt;code&gt;0 0 12 ? \* WED&lt;/code&gt;这种方式以硬编码的方式配置定时任务的执行时间。有时候需要动态的设置定时任务的执行时间，如让用户自己选择何时备份数据，此时就需要采用动态设置其执行时间。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用dom4j修改含有回车换行符的XML文件</title>
      <link>https://lucumt.info/post/java-core/update-xml-file-has-line-breaks-using-dom4j/</link>
      <pubDate>Thu, 04 Jan 2018 11:21:42 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/update-xml-file-has-line-breaks-using-dom4j/</guid>
      <description>&lt;p&gt;这几天工作中遇到一个利用&lt;a href=&#34;https://dom4j.github.io/&#34;&gt;&lt;strong&gt;dom4j&lt;/strong&gt;&lt;/a&gt;更新XML文件的任务，由于XML文件中部分属性包含有换行符，利用&lt;code&gt;dom4j(1.6.1)&lt;/code&gt;默认的方法更新XML文件后换行符会丢失。 各种Google、StackOverflow折腾好久后终于解决该问题，简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>将基于Github Pages的自定义域名博客迁移到HTTPS</title>
      <link>https://lucumt.info/post/hugo/migrate-github-blog-from-http-to-https/</link>
      <pubDate>Sun, 24 Dec 2017 10:28:03 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/migrate-github-blog-from-http-to-https/</guid>
      <description>&lt;p&gt;越来越多的网站和个人博客都变成 &lt;a href=&#34;https://en.wikipedia.org/wiki/HTTPS&#34; title=&#34;https://en.wikipedia.org/wiki/HTTPS&#34;&gt;&lt;strong&gt;HTTPS&lt;/strong&gt;&lt;/a&gt; ，而自己的博客一直都是用的是 &lt;a href=&#34;https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol&#34; title=&#34;https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol&#34;&gt;&lt;strong&gt;HTTP&lt;/strong&gt;&lt;/a&gt; 协议，作为一个具有强迫症的人，每次用 &lt;a href=&#34;https://www.google.cn/chrome/browser/desktop/index.html&#34; title=&#34;https://www.google.cn/chrome/browser/desktop/index.html&#34;&gt;&lt;strong&gt;Chrome&lt;/strong&gt;&lt;/a&gt; 浏览器打开个人博客时看见浏览器地址栏显示的&lt;img src=&#34;https://lucumt.info/blog_img/hugo/migrate-github-blog-from-http-to-https/http_icon.png&#34; alt=&#34;&amp;ldquo;Chrome HTTP标识&amp;rdquo;&#34; title=&#34;Chrome HTTP标识&#34;&gt; 都感觉很不舒服。趁着前段时间不太忙，将个人博客从&lt;code&gt;HTTP&lt;/code&gt;迁移到了&lt;code&gt;HTTPS&lt;/code&gt; ，先记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>从复杂代码中找出Bug的几种方法</title>
      <link>https://lucumt.info/post/other/different-ways-find-bug-in-complex-code/</link>
      <pubDate>Sat, 23 Dec 2017 12:07:40 +0800</pubDate>
      <guid>https://lucumt.info/post/other/different-ways-find-bug-in-complex-code/</guid>
      <description>&lt;p&gt;工作中有时候会遇到某些大段复杂代码出现Bug的情况，不同于一般行数较小或逻辑较简单的代码，对于大段复杂的代码进行分析可能会很耗时，本文介绍几种个人在工作中用到的方法，供大家参考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在不同版本的MyBatis中通过Log4j打印实际执行的SQL</title>
      <link>https://lucumt.info/post/mybatis/print-sql-in-different-mybatis-version/</link>
      <pubDate>Mon, 18 Dec 2017 18:33:14 +0800</pubDate>
      <guid>https://lucumt.info/post/mybatis/print-sql-in-different-mybatis-version/</guid>
      <description>&lt;p&gt;项目中ORM框架用的是 &lt;a href=&#34;http://www.mybatis.org/mybatis-3/&#34;&gt;&lt;strong&gt;MyBatis&lt;/strong&gt;&lt;/a&gt;，最近由于业务上的需求将&lt;code&gt;MyBatis&lt;/code&gt;从&lt;strong&gt;3.1.1&lt;/strong&gt;升级到&lt;strong&gt;3.4.5&lt;/strong&gt;，发现升级后通过&lt;a href=&#34;https://logging.apache.org/log4j/1.2/download.html&#34;&gt;&lt;strong&gt;Log4j&lt;/strong&gt;&lt;/a&gt;显示SQL的配置方式发生了变化，由于变化较大，故先记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在不重新编译的情况下直接修改Java Class文件中的内容</title>
      <link>https://lucumt.info/post/java-core/modify-java-class-file-content-directly/</link>
      <pubDate>Sat, 12 Aug 2017 18:09:53 +0800</pubDate>
      <guid>https://lucumt.info/post/java-core/modify-java-class-file-content-directly/</guid>
      <description>&lt;p&gt;&lt;code&gt;Java&lt;/code&gt;程序实际上执行的是&lt;code&gt;Java&lt;/code&gt;文件编译后的&lt;code&gt;Class&lt;/code&gt;文件，这是任何一个&lt;code&gt;Java&lt;/code&gt;开发人员都了解的基本知识。&lt;/p&gt;&#xA;&lt;p&gt;若&lt;code&gt;Java&lt;/code&gt;程序执行的结果不符合要求，通常的解决方法是先修改&lt;code&gt;Java&lt;/code&gt;文件，重新编译成&lt;code&gt;Class&lt;/code&gt;文件后再次执行。但有时候我们不能直接修改&lt;code&gt;Java&lt;/code&gt;文件（如只有包含&lt;code&gt;class&lt;/code&gt;文件的&lt;code&gt;jar&lt;/code&gt;包），此时我们就只能直接修改&lt;code&gt;Class&lt;/code&gt;文件，本文将展示在基于不同的需求通过可视化工具和&lt;code&gt;Javassist&lt;/code&gt;库来直接对&lt;code&gt;Class&lt;/code&gt;文件进行修改的方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决EasyUI DataGrid中的行在列冻结时无法对齐的问题</title>
      <link>https://lucumt.info/post/web/easyui-datagrid-row-not-align-when-column-frozen/</link>
      <pubDate>Sun, 06 Aug 2017 00:06:36 +0800</pubDate>
      <guid>https://lucumt.info/post/web/easyui-datagrid-row-not-align-when-column-frozen/</guid>
      <description>&lt;p&gt;相对于传统的用HTML中TABLE实现的表格，利用&lt;a href=&#34;https://www.jeasyui.com&#34;&gt;&lt;strong&gt;EasyUI&lt;/strong&gt;&lt;/a&gt;中的&lt;a href=&#34;https://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&#34;&gt;&lt;strong&gt;DataGrid&lt;/strong&gt;&lt;/a&gt;实现的表格具有很多优点，如可以对列宽进行拖动调整、列冻结、行冻结、自定义格式化等功能，故而在Web开发中得到了广泛的应用。最近自己在使用DataGrid的列冻结功能时遇到了由于某些单元格中的内容较多导致该行无法对齐的问题，由于当前在EasyUI官网中无法找到该问题的解决方案，自己研究DataGrid的实现原理后，找到了变通的解决方案，故先记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>4. [译]并发的模型</title>
      <link>https://lucumt.info/post/translate/java-concurrency/concurrency-models/</link>
      <pubDate>Sat, 05 Aug 2017 00:10:11 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/java-concurrency/concurrency-models/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;http://tutorials.jenkov.com/java-concurrency/concurrency-models.html&#34;&gt;&lt;strong&gt;Java Concurrency / Concurrency Models&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;并发系统可以使用不同的并发模型来实现，并发模型是指线程在系统中如何写作来完成给定的任务。不同的并发模型以不同的方式拆分任务，线程间以不同的方式协作和通信，本文将深入研究在撰写本文时最流行并发模型(2015年)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在MyEclipse项目中不能打开birt报表的解决方法</title>
      <link>https://lucumt.info/post/web/cannot-open-birt-report-in-myeclipse-project/</link>
      <pubDate>Fri, 07 Apr 2017 10:47:28 +0800</pubDate>
      <guid>https://lucumt.info/post/web/cannot-open-birt-report-in-myeclipse-project/</guid>
      <description>由于业务要求，需要在利用MyEclipse中开发的Web项目中添加Birt报表统计功能，新建完一个report.rptdesign文件后双击</description>
    </item>
    <item>
      <title>3. [译]多线程的成本</title>
      <link>https://lucumt.info/post/translate/java-concurrency/multithreading-costs/</link>
      <pubDate>Sat, 01 Apr 2017 21:57:30 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/java-concurrency/multithreading-costs/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;http://tutorials.jenkov.com/java-concurrency/costs.html&#34;&gt;&lt;strong&gt;Java Concurrency / Multithreading Costs&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;从一个单线程程序切换为多线程程序在给我们带来好处的同时也会产生一些额外的成本，不要因为会使用多线程就将一个程序变为多线程实现。在准备使用多线程时，我们应该有一个清楚的认识：使用多线程带来的好处大于其成本，当有不确定时，我们应该尝试度量应用程序的性能和响应性来决定是否采用多线程，而不是靠猜来决定。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2. [译]多线程的优点</title>
      <link>https://lucumt.info/post/translate/java-concurrency/multithreading-benefits/</link>
      <pubDate>Sat, 01 Apr 2017 13:18:43 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/java-concurrency/multithreading-benefits/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;http://tutorials.jenkov.com/java-concurrency/benefits.html&#34;&gt;&lt;strong&gt;Java Concurrency / Multithreading Benefits&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;尽管多线程给程序实现带来了挑战，但由于多线程的一些优点我们仍然在使用它，其中的一些优点如下：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;更好的资源利用&lt;/li&gt;&#xA;&lt;li&gt;在某些场景可以简化程序设计&lt;/li&gt;&#xA;&lt;li&gt;提高程序响应&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>1. [译]Java多线程与并发教程</title>
      <link>https://lucumt.info/post/translate/java-concurrency/java-concurrency-multithreading-tutorial/</link>
      <pubDate>Thu, 30 Mar 2017 14:49:08 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/java-concurrency/java-concurrency-multithreading-tutorial/</guid>
      <description>&lt;p&gt;本文翻译自&lt;a href=&#34;http://tutorials.jenkov.com/java-concurrency/index.html&#34;&gt;&lt;strong&gt;Java Concurrency / Multithreading Tutorial&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;最开始一台电脑只有单个CPU，只能一次运行一个任务，之后出现的多任务处理则意味着计算机在同一时间可以处理多个程序（也可以称之为任务或进程），虽然它们并不是真正的并发。由于单个CPU被不同的程序共用，操作系统需要在程序运行过程中不停地切换CPU，在短暂的执行一个程序后就立即切换到下一个程序。&lt;/p&gt;&#xA;&lt;p&gt;多任务处理给软件开发人员提出了新的挑战，程序不能再假定拥有CPU所有的可用时间、内存和其它计算机资源，一个好的程序应该及时释放所有不需要使用的资源，以便其它程序可以使用它们。&#xA;之后出现的多线程则意味着可以在同一个程序里面执行多个线程，每一个执行的线程可以被认为是CPU在执行当前程序，当在同一个程序里面执行多个线程时，看起来像是拥有多个CPU在执行该程序。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Intellij IDEA中引用Golang本地包</title>
      <link>https://lucumt.info/post/golang/import-local-package-in-intellij-idea/</link>
      <pubDate>Sun, 05 Mar 2017 14:04:43 +0800</pubDate>
      <guid>https://lucumt.info/post/golang/import-local-package-in-intellij-idea/</guid>
      <description>&lt;p&gt;在学习&lt;code&gt;Golang&lt;/code&gt;时，自己最开始用的是&lt;code&gt;Eclipse&lt;/code&gt;中的&lt;a href=&#34;https://goclipse.github.io/&#34;&gt;&lt;strong&gt;goclipse&lt;/strong&gt;&lt;/a&gt;插件来进行&lt;code&gt;Golang&lt;/code&gt;编程，但其对&lt;code&gt;Golang&lt;/code&gt;的支持不是太好，如代码格式化、自动导入引用包等都无法直接在&lt;code&gt;Eclipse&lt;/code&gt;中使用，并且其自动提示功能也没有像&lt;code&gt;Java&lt;/code&gt;那么强，于是转用&lt;a href=&#34;https://www.jetbrains.com/idea/&#34;&gt;&lt;strong&gt;Intellij IDEA&lt;/strong&gt;&lt;/a&gt;安装&lt;a href=&#34;https://plugins.jetbrains.com/plugin/5047-go&#34;&gt;&lt;strong&gt;Golang插件&lt;/strong&gt;&lt;/a&gt;来替代使用，安装完插件后的&lt;a href=&#34;https://www.jetbrains.com/idea/&#34;&gt;&lt;strong&gt;Intellij IDEA&lt;/strong&gt;&lt;/a&gt;对&lt;code&gt;Golang&lt;/code&gt;的支持在各方面都很令人满意，唯独引入本地包的支持不太好用。经过一阵摸索自己找出了解决方案，先记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>计算两个平行于坐标轴的矩形相交的面积</title>
      <link>https://lucumt.info/post/algorithm/calculate-total-area-of-two-rectangles/</link>
      <pubDate>Sun, 26 Feb 2017 19:26:33 +0800</pubDate>
      <guid>https://lucumt.info/post/algorithm/calculate-total-area-of-two-rectangles/</guid>
      <description>&lt;p&gt;之前面试时遇到一个算法题:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;假定两个矩形各条边都是平行于坐标轴，已知k、l、m、n分别为其中一个矩形左下角和右上角x轴、y轴坐标，p、q、r、s分别为另一个矩形的左下角和右上角x轴、y轴坐标，求这两个矩形的总面积，当矩形相交时要减去相交的面积。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;此题利用常规的枚举法很复杂，但利用排除法和归纳法却能很快解决，故先记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在iframe嵌套的html5中播放视频时全屏显示和取消音量调整</title>
      <link>https://lucumt.info/post/web/show-video-in-html5-page/</link>
      <pubDate>Sun, 30 Oct 2016 19:48:17 +0800</pubDate>
      <guid>https://lucumt.info/post/web/show-video-in-html5-page/</guid>
      <description>&lt;p&gt;由于项目需要，最近使用了在&lt;code&gt;html5&lt;/code&gt;中播放视频的功能，期间遇到了几个坑，先简单记录下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>不通过第三方变量来交换两个变量的值</title>
      <link>https://lucumt.info/post/algorithm/swap-two-variables-without-temp-variable/</link>
      <pubDate>Fri, 12 Aug 2016 11:03:09 +0800</pubDate>
      <guid>https://lucumt.info/post/algorithm/swap-two-variables-without-temp-variable/</guid>
      <description>&lt;p&gt;变量交换是编程中经常使用的功能，本文记录几种不通过不添加第三方变量来交换两个变量的实现方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>mybatis batch insert exception的解决方法</title>
      <link>https://lucumt.info/post/mybatis/mybatis-batch-insert-exception/</link>
      <pubDate>Mon, 30 May 2016 18:20:37 +0800</pubDate>
      <guid>https://lucumt.info/post/mybatis/mybatis-batch-insert-exception/</guid>
      <description>&lt;p&gt;在利用 &lt;a href=&#34;http://www.mybatis.org/mybatis-3/&#34;&gt;&lt;strong&gt;MyBatis&lt;/strong&gt;&lt;/a&gt;进行多条数据插入时，为了提高性能我们可能会使用批量插入的功能来实现。示例代码如下:&lt;/p&gt;&#xA;&lt;p&gt;SQL配置文件:&lt;/p&gt;&#xA;&lt;pre class=&#34;line-numbers language-xml &#34; title=&#34;xml&#34;&gt;&#xA;&lt;code&gt;&amp;lt;insert id=&amp;#34;addAuthorityRoleBatch&amp;#34; parameterType=&amp;#34;List&amp;#34;&amp;gt;&#xA;    INSERT INTO system_authority_role(role_id,authority_id)&#xA;      VALUES&#xA;      &amp;lt;foreach collection=&amp;#34;list&amp;#34; item=&amp;#34;authRole&amp;#34; separator=&amp;#34;,&amp;#34;&amp;gt;&#xA;        (#{authRole.roleId},#{authRole.authorityId})&#xA;      &amp;lt;/foreach&amp;gt;&#xA;  &amp;lt;/insert&amp;gt;&lt;/code&gt;&#xA;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>利用SpringMVC下载大文件时内存溢出的处理</title>
      <link>https://lucumt.info/post/spring/spring-mvc/download-big-file-using-springmvc/</link>
      <pubDate>Sun, 20 Mar 2016 16:41:29 +0800</pubDate>
      <guid>https://lucumt.info/post/spring/spring-mvc/download-big-file-using-springmvc/</guid>
      <description>&lt;p&gt;文件的上传和下载是Web系统中的一个很普通的功能，实现的方式也有很多种，如利用 &lt;a href=&#34;https://docs.oracle.com/javase/7/docs/api/java/io/package-summary.html&#34;&gt;&lt;strong&gt;java.io&lt;/strong&gt;&lt;/a&gt;下面的各种IO类自己实现，或者利用 &lt;a href=&#34;https://commons.apache.org/proper/commons-io/&#34;&gt;&lt;strong&gt;Commons IO&lt;/strong&gt;&lt;/a&gt;包中的&lt;code&gt;FileUtils&lt;/code&gt;、 &lt;code&gt;IOUtils&lt;/code&gt; 类中封装好的方法直接调用。由于目前我所开发的系统采用了 &lt;a href=&#34;http://docs.spring.io/autorepo/docs/spring/3.2.x/spring-framework-reference/html/mvc.html&#34;&gt;&lt;strong&gt;SpringMVC&lt;/strong&gt;&lt;/a&gt;来作为项目的MVC实现，所以很自然的采用 &lt;a href=&#34;http://docs.spring.io/autorepo/docs/spring/3.2.x/spring-framework-reference/html/mvc.html&#34;&gt;&lt;strong&gt;SpringMVC&lt;/strong&gt;&lt;/a&gt;内置的API进行文件的下载，但在实际使用过程中发现其对大文件的下载支持不太好，现把解决方案记录如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Spring和JUnit对数据库操作进行单元测试</title>
      <link>https://lucumt.info/post/spring/spring-core/using-junit-in-spring/</link>
      <pubDate>Sun, 20 Mar 2016 16:27:21 +0800</pubDate>
      <guid>https://lucumt.info/post/spring/spring-core/using-junit-in-spring/</guid>
      <description>&lt;p&gt;在进行Java程序开发时，我们偶尔会被要求使用&lt;a href=&#34;http://junit.org/&#34;&gt;&lt;strong&gt;JUnit&lt;/strong&gt;&lt;/a&gt;进行单元测试来确保我们所写的程序逻辑是正确的。一个良好的单元测试应该具备 &lt;code&gt;覆盖度高&lt;/code&gt;，&lt;code&gt;可重复执行&lt;/code&gt;,&lt;code&gt;单一性&lt;/code&gt;等特点。本文主要关注&lt;code&gt;可重复执行&lt;/code&gt;，在Web开发中，大部分方法都会使数据库的记录发生变化，为了能够重复执行，必须利用&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1&#34;&gt;&lt;strong&gt;数据库事务&lt;/strong&gt;&lt;/a&gt;来进行&lt;code&gt;回滚&lt;/code&gt;从而达到重复执行的目的。最原始的方法是利用 &lt;a href=&#34;https://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html&#34;&gt;&lt;strong&gt;java.sql.Connection&lt;/strong&gt;&lt;/a&gt;类的 &lt;code&gt;commit()&lt;/code&gt; 或 &lt;code&gt;rollback()&lt;/code&gt; 方法来在每个单元测试方法中手动的进行提交或回滚，此种方式使得单元测试代码嵌入了与实际业务逻辑无关的数据库操作事务控制代码。利用&lt;a href=&#34;https://spring.io/&#34;&gt;&lt;strong&gt;Spring&lt;/strong&gt;&lt;/a&gt;和&lt;a href=&#34;http://junit.org/&#34;&gt;&lt;strong&gt;JUnit&lt;/strong&gt;&lt;/a&gt;通过注解的方式我们可以很容易的对单元测试中的数据库操作进行事务控制。&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Spring Security动态改变登录用户的权限</title>
      <link>https://lucumt.info/post/spring/update-authority-dynamic-using-spring-security/</link>
      <pubDate>Sun, 20 Mar 2016 16:05:52 +0800</pubDate>
      <guid>https://lucumt.info/post/spring/update-authority-dynamic-using-spring-security/</guid>
      <description>&lt;p&gt;利用&lt;a href=&#34;http://projects.spring.io/spring-security/&#34;&gt;&lt;strong&gt;Spring Security&lt;/strong&gt;&lt;/a&gt;来管理我们的web程序时，通常需要在&lt;code&gt;UserDetailsService&lt;/code&gt;接口中的&lt;code&gt;loadUserByUsername&lt;/code&gt;方法中来初始化权限信息,但&lt;code&gt;UserDetailsService&lt;/code&gt;一般用于登录验证，这也意味着用户的权限在登录过程中就会被计算出来。通常情况下由于用户的权限很少发生变化，在登录过程中计算出用户权限是合理的，但有些情况下，我们需要在中途来动态的改变用户的权限，此时我们可以利用&lt;a href=&#34;http://projects.spring.io/spring-security/&#34;&gt;&lt;strong&gt;Spring Security&lt;/strong&gt;&lt;/a&gt;提供的API来实现。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在Spring中利用Mock对HttpServletRequest进行单元测试</title>
      <link>https://lucumt.info/post/spring/spring-mvc/using-mock-test-http-servlet-request/</link>
      <pubDate>Sat, 19 Mar 2016 22:43:47 +0800</pubDate>
      <guid>https://lucumt.info/post/spring/spring-mvc/using-mock-test-http-servlet-request/</guid>
      <description>&lt;h2 id=&#34;编写单元测试时的注意事项&#34;&gt;编写单元测试时的注意事项&lt;/h2&gt;&#xA;&lt;p&gt;根据软件开发过程中的&lt;a href=&#34;https://en.wikipedia.org/wiki/Test-driven_development&#34;&gt;&lt;strong&gt;TDD&lt;/strong&gt;&lt;/a&gt;理论，在我们编写自己的代码时，要尽量使得该代码能够进行单元测试。为了能够使得代码可以进行单元测试，我们在给接口或方法传入参数时要尽量传入简单参数，避免传入&lt;code&gt;HttpServletRequest&lt;/code&gt; , &lt;code&gt;ServletContext&lt;/code&gt;等和web上下文相关的复杂对象。但仍有部分情况下基于代码简洁性和可维护性的考虑，我们需要传入&lt;code&gt;HttpServletRequest&lt;/code&gt;对象，此时对此类方法进行&lt;a href=&#34;http://junit.org/&#34;&gt;&lt;strong&gt;JUnit&lt;/strong&gt;&lt;/a&gt;单元测试时会较为困难，本文介绍一种在&lt;a href=&#34;https://spring.io/&#34;&gt;&lt;strong&gt;Spring&lt;/strong&gt;&lt;/a&gt;中通过&lt;a href=&#34;http://mockito.org/&#34;&gt;&lt;strong&gt;Mock&lt;/strong&gt;&lt;/a&gt;来模拟&lt;code&gt;HttpServletRequest&lt;/code&gt;对象进行&lt;a href=&#34;http://junit.org/&#34;&gt;&lt;strong&gt;JUnit&lt;/strong&gt;&lt;/a&gt;单元测试的方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mediawiki添加回到顶部的方法</title>
      <link>https://lucumt.info/post/web/mediawiki-back-to-top/</link>
      <pubDate>Fri, 18 Mar 2016 23:14:59 +0800</pubDate>
      <guid>https://lucumt.info/post/web/mediawiki-back-to-top/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;&lt;strong&gt;Mediawiki&lt;/strong&gt;&lt;/a&gt;是&lt;a href=&#34;https://www.wikipedia.org/&#34;&gt;&lt;strong&gt;维基百科&lt;/strong&gt;&lt;/a&gt;系统所采用的框架，适合于需要快速搭建知识分享的场合。采用&lt;a href=&#34;https://www.mediawiki.org/wiki/MediaWiki&#34;&gt;&lt;strong&gt;Mediawiki&lt;/strong&gt;&lt;/a&gt;生成的知识共享平台和&lt;a href=&#34;https://www.wikipedia.org/&#34;&gt;&lt;strong&gt;维基百科&lt;/strong&gt;&lt;/a&gt;的操作与使用类似，都支持采用&lt;a href=&#34;https://zh.wikipedia.org/zh-cn/Markdown&#34;&gt;&lt;strong&gt;Markdown&lt;/strong&gt;&lt;/a&gt;语法来编辑。在有些时候，某些词条的内容很长，使得浏览器出现了滚动条，如果能仿照微博等网站添加一个&lt;strong&gt;回到顶部&lt;/strong&gt;的功能，将会给我们的使用带来很大的便利，本文介绍一种实现方法：&lt;/p&gt;</description>
    </item>
    <item>
      <title>[译] Java Volatile 关键字详解</title>
      <link>https://lucumt.info/post/translate/java-concurrency/java-volatile-keyword/</link>
      <pubDate>Mon, 07 Mar 2016 18:03:18 +0800</pubDate>
      <guid>https://lucumt.info/post/translate/java-concurrency/java-volatile-keyword/</guid>
      <description>&lt;p&gt;本文翻译自 &lt;a href=&#34;http://tutorials.jenkov.com/java-concurrency/volatile.html&#34;&gt;&lt;strong&gt;Java Volatile Keyword&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Java关键字&lt;code&gt;volatile&lt;/code&gt;用于将一个Java变量标记为&lt;strong&gt;在主内中存储&lt;/strong&gt;，更准确的解释为：每次读取一个&lt;code&gt;volatile&lt;/code&gt;变量时将从电脑的主内存中读取而不是从CPU缓存中读取，每次对一个&lt;code&gt;volatile&lt;/code&gt;变量进行写操作时，将会写入到主内存中而不是写入到CPU缓存中。&lt;/p&gt;&#xA;&lt;p&gt;事实上，从&lt;code&gt;Java5&lt;/code&gt;之后，&lt;code&gt;volatile&lt;/code&gt;关键字不仅仅可以用来确保&lt;code&gt;volatile&lt;/code&gt;变量是写入到主内存和从主内存读取数据，我会在下面的章节进行详细的介绍：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows中由于系统权限不同导致的mysqldump不生效的原因分析</title>
      <link>https://lucumt.info/post/mysql/can-not-run-program-mysqldump/</link>
      <pubDate>Thu, 03 Mar 2016 14:33:43 +0800</pubDate>
      <guid>https://lucumt.info/post/mysql/can-not-run-program-mysqldump/</guid>
      <description>&lt;p&gt;项目中用到了&lt;code&gt;MySQL&lt;/code&gt;数据库的备份功能，通过调用&lt;code&gt;Java&lt;/code&gt;程序中的&lt;a href=&#34;http://docs.oracle.com/javase/6/docs/api/&#34;&gt;&lt;strong&gt;Runtime&lt;/strong&gt;&lt;/a&gt;来执行&lt;code&gt;mysqldump&lt;/code&gt;命令自动的生成相关的&lt;code&gt;MySQL&lt;/code&gt;数据库文件以供恢复之用。相关的代码如下:&lt;/p&gt;&#xA;&lt;pre class=&#34;line-numbers language-java &#34; title=&#34;java&#34;&gt;&#xA;&lt;code&gt;Runtime runtime = Runtime.getRuntime();&#xA;String mysqlCmd = &amp;#34;mysqldump&amp;#34; &amp;#43; &amp;#34; -u&amp;#34; &amp;#43; username &amp;#43; &amp;#34; -p&amp;#34; &amp;#43; password &amp;#43; &#xA;           &amp;#34;  -h &amp;#34; &amp;#43; databaseAddress &amp;#43; &amp;#34; &amp;#34; &amp;#43;databaseName;&#xA;Process process = runtime.exec(mysqlCmd);&lt;/code&gt;&#xA;&lt;/pre&gt;&lt;p&gt;但是在客户那里实际使用时，有时候会出现在cmd中&lt;code&gt;MySQL&lt;/code&gt;命令可以正常识别但是程序不能正常执行的情况，报错信息如下:&lt;/p&gt;</description>
    </item>
    <item>
      <title>利用Github Pages和基于Go的Hugo搭建个人博客</title>
      <link>https://lucumt.info/post/hugo/create-website-with-hugo/</link>
      <pubDate>Sat, 27 Feb 2016 22:23:37 +0800</pubDate>
      <guid>https://lucumt.info/post/hugo/create-website-with-hugo/</guid>
      <description>&lt;p&gt;一直以来都想拥有一个属于自己的博客，前段时间在学习&lt;code&gt;Go&lt;/code&gt; ，于是利用&lt;code&gt;Hugo&lt;/code&gt; 和&lt;code&gt;Github Pages&lt;/code&gt; 搭建了一个简易的个人博客，先简单记录下。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
