<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>笔记 on QiYue's Blog</title><link>https://hello-github-ui-github-io.onrender.com/categories/%E7%AC%94%E8%AE%B0/</link><description>Recent content in 笔记 on QiYue's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>&amp;copy; 2026 QiYue's Blog</copyright><lastBuildDate>Thu, 17 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hello-github-ui-github-io.onrender.com/categories/%E7%AC%94%E8%AE%B0/index.xml" rel="self" type="application/rss+xml"/><item><title>博客配置Twikoo评论系统</title><link>https://hello-github-ui-github-io.onrender.com/posts/%E5%8D%9A%E5%AE%A2%E9%85%8D%E7%BD%AEtwikoo%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/</link><pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/%E5%8D%9A%E5%AE%A2%E9%85%8D%E7%BD%AEtwikoo%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/</guid><description>&lt;h1 class="relative group"&gt;一、创建 MongoDB 免费数据库&#10; &lt;div id="一创建-mongodb-免费数据库" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e4%b8%80%e5%88%9b%e5%bb%ba-mongodb-%e5%85%8d%e8%b4%b9%e6%95%b0%e6%8d%ae%e5%ba%93" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;打开：&lt;/p&gt;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://hello-github-ui-github-io.onrender.com/posts/%E5%8D%9A%E5%AE%A2%E9%85%8D%E7%BD%AEtwikoo%E8%AF%84%E8%AE%BA%E7%B3%BB%E7%BB%9F/featured.png"/></item><item><title>ElasticSearch学习</title><link>https://hello-github-ui-github-io.onrender.com/posts/elasticsearch%E5%AD%A6%E4%B9%A0/</link><pubDate>Fri, 11 Sep 2026 10:50:00 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/elasticsearch%E5%AD%A6%E4%B9%A0/</guid><description>&lt;h2 class="relative group"&gt;数据格式&#10; &lt;div id="数据格式" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e6%95%b0%e6%8d%ae%e6%a0%bc%e5%bc%8f" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Elasticsearch 是面向文档型的数据库，一条数据在这里就是一个文档。es里面的概念和关系型数据库中的概念比对如下，可以依此进行理解：&lt;/p&gt;</description></item><item><title>用 Pages CMS + Hugo + GitHub Pages 搭一套免费可视化博客</title><link>https://hello-github-ui-github-io.onrender.com/posts/%E7%94%A8-pages-cms-+-hugo-+-github-pages-%E6%90%AD%E4%B8%80%E5%A5%97%E5%85%8D%E8%B4%B9%E5%8F%AF%E8%A7%86%E5%8C%96%E5%8D%9A%E5%AE%A2/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/%E7%94%A8-pages-cms-+-hugo-+-github-pages-%E6%90%AD%E4%B8%80%E5%A5%97%E5%85%8D%E8%B4%B9%E5%8F%AF%E8%A7%86%E5%8C%96%E5%8D%9A%E5%AE%A2/</guid><description>&lt;h2 class="relative group"&gt;1. 前置准备&#10; &lt;div id="1-前置准备" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-%e5%89%8d%e7%bd%ae%e5%87%86%e5%a4%87" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;需要：&lt;/p&gt;</description></item><item><title>Java封装同步锁</title><link>https://hello-github-ui-github-io.onrender.com/posts/java%E5%B0%81%E8%A3%85%E5%90%8C%E6%AD%A5%E9%94%81/</link><pubDate>Wed, 02 Mar 2022 20:50:01 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/java%E5%B0%81%E8%A3%85%E5%90%8C%E6%AD%A5%E9%94%81/</guid><description>&lt;blockquote&gt;&lt;p&gt;先来看一段简单的同步锁代码&lt;/p&gt;&#10;&lt;/blockquote&gt;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@Controller&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;DemoController&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;private&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;final&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Logger&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;LoggerFactory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getLogger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DemoController&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nd"&gt;@RequestMapping&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/process/{orderId}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nd"&gt;@ResponseBody&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Object&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;process&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@PathVariable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;orderId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orderId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;throws&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Exception&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;synchronized&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;[{}] 开始&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orderId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;1500&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;[{}] 结束&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;orderId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Object&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HashMap&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;put&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;result&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;success&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;这段代码使用了 synchronized 同步锁（锁对象是this），但是出现了一个问题，对于同一个订单的id请求时，在多线程环境下就不应该再进入这段处理代码中，&#10;比如orderId=001时已经进入了 synchronized 中开始执行了，此时又进来一个 orderId=001的请求，因为orderId一致，就不应该再进来。&#10;但实际情况是：因为同步锁对象是 this，而两次请求的对象不同，自然不属于同一个对象，导致 synchronized 并不会起作用。&lt;/p&gt;</description></item><item><title>Git进阶宝典</title><link>https://hello-github-ui-github-io.onrender.com/posts/git%E8%BF%9B%E9%98%B6%E5%AE%9D%E5%85%B8/</link><pubDate>Thu, 27 Jan 2022 23:07:43 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/git%E8%BF%9B%E9%98%B6%E5%AE%9D%E5%85%B8/</guid><description>&lt;blockquote&gt;&lt;p&gt;在 Git 专题的开篇，我就提醒大家一定要记住这几个专用名词，对掌握 Git 有很大的帮助：&#10;Workspace：工作区&#10;Index / Stage：暂存区&#10;Repository：仓库区（或本地仓库）&#10;Remote：远程仓库&#10;当然了，没记住的话，也不要紧了，今天就趁机再温故一遍。&lt;/p&gt;</description></item><item><title>Centos7安装Redis</title><link>https://hello-github-ui-github-io.onrender.com/posts/centos7%E5%AE%89%E8%A3%85redis/</link><pubDate>Mon, 10 Jan 2022 16:25:48 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/centos7%E5%AE%89%E8%A3%85redis/</guid><description>&lt;h1 class="relative group"&gt;&lt;strong&gt;1. 下载&lt;/strong&gt;&#10; &lt;div id="1-下载" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-%e4%b8%8b%e8%bd%bd" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;从官网下载redis压缩包到本地&lt;/p&gt;</description></item><item><title>Linux Mint20 使用体验</title><link>https://hello-github-ui-github-io.onrender.com/posts/linux-mint20-%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/</link><pubDate>Sat, 04 Dec 2021 11:10:18 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/linux-mint20-%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/</guid><description>&lt;p&gt;&lt;a href="https://pic.imgdb.cn/item/61ab5b682ab3f51d9166eeb3.jpg" target="_blank" rel="noreferrer"&gt;https://pic.imgdb.cn/item/61ab5b682ab3f51d9166eeb3.jpg&lt;/a&gt;&lt;/p&gt;&#10;&#10;&lt;h1 class="relative group"&gt;&lt;strong&gt;MySQL8 的安装&lt;/strong&gt;&#10; &lt;div id="mysql8-的安装" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#mysql8-%e7%9a%84%e5%ae%89%e8%a3%85" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;我们在下载一个软件之前首先要做的一件事是什么呢？对喽，先看一下电脑上有没有已安装该软件了，若有则彻底卸载它。来，就让我们来体验一下这个流程吧。&lt;/p&gt;</description></item><item><title>Flink安装部署</title><link>https://hello-github-ui-github-io.onrender.com/posts/flink%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/</link><pubDate>Tue, 16 Nov 2021 22:49:52 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/flink%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/</guid><description>&lt;h2 class="relative group"&gt;下载&#10; &lt;div id="下载" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e4%b8%8b%e8%bd%bd" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;div&#10; class="tab__container w-full"&#10; &#10; &gt;&#10; &lt;div class="tab__nav" role="tablist"&gt;&#10; &lt;div class="flex flex-wrap gap-1"&gt;&lt;button&#10; class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"&#10; role="tab"&#10; aria-selected="true"&#10; data-tab-index="0"&#10; data-tab-label="Windows"&gt;&#10; &lt;span class="flex items-center gap-1"&gt;&#10; &#10; Windows&#10; &lt;/span&gt;&#10; &lt;/button&gt;&lt;button&#10; class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "&#10; role="tab"&#10; aria-selected="false"&#10; data-tab-index="1"&#10; data-tab-label="Linux"&gt;&#10; &lt;span class="flex items-center gap-1"&gt;&#10; &#10; Linux&#10; &lt;/span&gt;&#10; &lt;/button&gt;&lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;div class="tab__content mt-4"&gt;&lt;div class="tab__panel tab--active" data-tab-index="0"&gt;&#10; &#10;&lt;h3 class="relative group"&gt;下载&#10; &lt;div id="下载" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e4%b8%8b%e8%bd%bd" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;blockquote&gt;&lt;p&gt;要想运行flink，前提必须安装 JDK1.8x&#10;官网下载地址：&lt;code&gt;https://flink.apache.org/zh/downloads.html&lt;/code&gt;。或者百度云下载：&lt;a href="https://pan.baidu.com/s/1MXBwNuC-_y8tIqaEWCY1og" target="_blank" rel="noreferrer"&gt;链接&lt;/a&gt; 提取码: &lt;code&gt;jw3e&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Centos7安装MySQL8.x</title><link>https://hello-github-ui-github-io.onrender.com/posts/centos7%E5%AE%89%E8%A3%85mysql8.x/</link><pubDate>Tue, 16 Nov 2021 14:41:43 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/centos7%E5%AE%89%E8%A3%85mysql8.x/</guid><description>&lt;h1 class="relative group"&gt;&lt;strong&gt;上传安装包到Linux&lt;/strong&gt;&#10; &lt;div id="上传安装包到linux" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e4%b8%8a%e4%bc%a0%e5%ae%89%e8%a3%85%e5%8c%85%e5%88%b0linux" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;下载 MySQL server 包：++&lt;a href="https://pan.baidu.com/s/14y8C5SdgiNtjNlvE9Kow7A" target="_blank" rel="noreferrer"&gt;链接&lt;/a&gt;++ 提取码: &lt;code&gt;4aqx&lt;/code&gt;&lt;/p&gt;</description></item><item><title>MySQL函数-存储过程-索引学习</title><link>https://hello-github-ui-github-io.onrender.com/posts/mysql%E5%87%BD%E6%95%B0-%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B-%E7%B4%A2%E5%BC%95%E5%AD%A6%E4%B9%A0/</link><pubDate>Wed, 03 Nov 2021 14:48:14 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/mysql%E5%87%BD%E6%95%B0-%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B-%E7%B4%A2%E5%BC%95%E5%AD%A6%E4%B9%A0/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;在自己的个人项目中，我们可能会需要在表中随机生成一些数据以供我们进行相应的测试。这时候就可以通过存储过程来向表中添加规定条数的数据。&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Difference between FileReader vs FileInputStream in Java</title><link>https://hello-github-ui-github-io.onrender.com/posts/difference-between-filereader-vs-fileinputstream-in-java/</link><pubDate>Mon, 25 Oct 2021 18:14:33 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/difference-between-filereader-vs-fileinputstream-in-java/</guid><description>&lt;p&gt;Difference between FileReader vs FileInputStream in Java? Answer&#10;Even though both FileReader and FileInputStream are used to read data from a file in Java, they are quite different. The main difference between the FileReader and FileInputStream is that one reads data from a character stream while the other reads data from a byte stream. The FileReader automatically converts the raw bytes into characters by using the platform&amp;rsquo;s default character encoding. This means you should use this class if you are reading from a text file that has the same character encoding as the default one.&lt;/p&gt;</description></item><item><title>Java实现批量重命名文件</title><link>https://hello-github-ui-github-io.onrender.com/posts/java%E5%AE%9E%E7%8E%B0%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6/</link><pubDate>Sun, 26 Sep 2021 17:37:31 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/java%E5%AE%9E%E7%8E%B0%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6/</guid><description>&lt;h2 class="relative group"&gt;前言&#10; &lt;div id="前言" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e5%89%8d%e8%a8%80" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;有时候，我们需要对一个目录下的所有图片都进行重命名，如果你选择手动方式进行，在图片少的情况下还可以进行，但是如果一个目录下有几百张图片时，你就会感到无比痛苦了。这时候就会想借助工具来实现了。如下就是一种很简单的实现方式。&lt;/p&gt;</description></item><item><title>Java代码实现裁剪图像</title><link>https://hello-github-ui-github-io.onrender.com/posts/java%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0%E8%A3%81%E5%89%AA%E5%9B%BE%E5%83%8F/</link><pubDate>Sun, 26 Sep 2021 17:11:40 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/java%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0%E8%A3%81%E5%89%AA%E5%9B%BE%E5%83%8F/</guid><description>&lt;h2 class="relative group"&gt;前言&#10; &lt;div id="前言" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e5%89%8d%e8%a8%80" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;前些时候，我在某个网站上注册了一个账号，在修改个人头像时，发现该网站仅支持矩形头像的显示，但是我个人是比较喜欢圆形头像的；&#10;因此我需要将电脑上一张矩形图片处理成白底圆形的图片，但是我找了好多在线方法（ps：不太喜欢给电脑上下载许多不常用的工具），发现&#10;都不太好用，于是决定看能否用代码来实现这个需求，因此有了本文。&lt;/p&gt;</description></item><item><title>SpringBoot之Logback日志文件配置</title><link>https://hello-github-ui-github-io.onrender.com/posts/springboot%E4%B9%8Blogback%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE/</link><pubDate>Mon, 23 Aug 2021 23:19:53 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/springboot%E4%B9%8Blogback%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E9%85%8D%E7%BD%AE/</guid><description>&lt;h2 class="relative group"&gt;概述&#10; &lt;div id="概述" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e6%a6%82%e8%bf%b0" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;Logback是一个日志框架，Logback和Log4j都是开源的日志工具库，Logback是Log4j的改良版本，内置实现了slf4j，比Log4j拥有更多的特性，性能也带来很大提升。SpringBoot默认内置了Logback日志框架，Spring Boot 集成logback需要添加 &lt;code&gt;spring-boot-starter-logging&lt;/code&gt; 依赖，而此依赖已经在 &lt;code&gt;spring-boot-starter&lt;/code&gt; 中添加过了，所以不用再添加此依赖了(如下图) ：&#10;&lt;figure&gt;&lt;img&#10; class="my-0 rounded-md"&#10; loading="lazy"&#10; decoding="async"&#10; fetchpriority="low"&#10; alt="img"&#10; src="https://pic.imgdb.cn/item/6123ac4244eaada7399e7576.jpg"&#10; &gt;&lt;/figure&gt;&#10;&lt;/p&gt;</description></item><item><title>网络编程模式学习</title><link>https://hello-github-ui-github-io.onrender.com/posts/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%BC%8F%E5%AD%A6%E4%B9%A0/</link><pubDate>Tue, 22 Jun 2021 08:17:40 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%BC%8F%E5%AD%A6%E4%B9%A0/</guid><description>&lt;div&#10; &#10; class="flex px-4 py-3 rounded-md shadow" style="background-color: #e63946"&#10; &#10; &gt;&#10; &lt;span&#10; &#10; class="pe-3 flex items-center" style="color: #1d3557"&#10; &#10; &gt;&#10; &lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"&gt;&#10;&lt;path fill="currentColor" d="M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-2.8-5.6-5.6-11.2-9.8-16.8l-50.6 58.8s-81.4-103.6-87.1-110.6C133.1 243.8 112 273.2 112 306.8C112 375.4 162.6 416 225.7 416z"/&gt;&lt;/svg&gt;&lt;/span&gt;&#10; &lt;/span&gt;&#10;&#10; &lt;span&#10; &#10; style="color: #f1faee"&#10; &#10; &gt;&#10;&lt;h1 class="relative group"&gt;Java共支持三种网络编程模式：BIO，NIO，AIO&#10; &lt;div id="java共支持三种网络编程模式bionioaio" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#java%e5%85%b1%e6%94%af%e6%8c%81%e4%b8%89%e7%a7%8d%e7%bd%91%e7%bb%9c%e7%bc%96%e7%a8%8b%e6%a8%a1%e5%bc%8fbionioaio" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&#10; &#10;&#10;&#10;&#10;&lt;div&#10; &#10; class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"&#10; &#10; &gt;&#10; &lt;span&#10; &#10; class="text-primary-400 pe-3 flex items-center"&#10; &#10; &gt;&#10; &lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&#10; &lt;/span&gt;&#10;&#10; &lt;span&#10; &#10; class="dark:text-neutral-300"&#10; &#10; &gt;&#10;&lt;h2 class="relative group"&gt;三种IO模式适用场景&#10; &lt;div id="三种io模式适用场景" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e4%b8%89%e7%a7%8dio%e6%a8%a1%e5%bc%8f%e9%80%82%e7%94%a8%e5%9c%ba%e6%99%af" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;ul&gt;&#10;&lt;li&gt;BIO方式适用于连接数目比较小且固定的架构，这种方式对服务器资源要求比较高，并发有局限性，JDK1.4以前是唯一的选择，好处是编码实现方式简单，且也容易理解。&lt;/li&gt;&#10;&lt;li&gt;NIO方式适用于连接数目多且连接比较段的架构，比如聊天服务器，弹幕系统等，相比BIO编码较复杂，JDK1.4以后开始支持。&lt;/li&gt;&#10;&lt;li&gt;AIO方式适用于连接数据多且连接较长的场景，比如相册服务器等，编程较复杂，JDK1.7才开始支持。目前好像并为得到广泛使用。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h1 class="relative group"&gt;BIO(blocking I/O) 基本介绍&#10; &lt;div id="bioblocking-io-基本介绍" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#bioblocking-io-%e5%9f%ba%e6%9c%ac%e4%bb%8b%e7%bb%8d" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;Java BIO是传统的Java io编程，相关的类和接口在java.io包中&#10;Java BIO：同步阻塞，一个连接为一个线程，连接一个客户端就需要启动一个线程进行处理，如果连接未断开且未做任何事，会造会不必要的开销。可以通过线程池优化。&#10;Java BIO：适用于连接数目较小且相对固定的架构，对服务器的要求比较高，对并发有局限性。JDK1.4以前唯一的选择，简单易理解。&lt;/p&gt;</description></item><item><title>Intellij IDEA 常用功能</title><link>https://hello-github-ui-github-io.onrender.com/posts/intellij-idea-%E5%B8%B8%E7%94%A8%E5%8A%9F%E8%83%BD/</link><pubDate>Wed, 28 Apr 2021 00:07:43 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/intellij-idea-%E5%B8%B8%E7%94%A8%E5%8A%9F%E8%83%BD/</guid><description>&lt;h2 class="relative group"&gt;Tab 页&#10; &lt;div id="tab-页" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tab-%e9%a1%b5" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;在 intellij idea 中，直接使用快捷键 &lt;code&gt;ctrl+e&lt;/code&gt; 来找到最近访问过的文件；&#10;使用 &lt;code&gt;ctrl+shift+e&lt;/code&gt; 来访问最近编辑过的文件。&lt;/p&gt;</description></item><item><title>Java代码的执行顺序</title><link>https://hello-github-ui-github-io.onrender.com/posts/java%E4%BB%A3%E7%A0%81%E7%9A%84%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F/</link><pubDate>Sun, 31 Jan 2021 22:45:23 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/java%E4%BB%A3%E7%A0%81%E7%9A%84%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F/</guid><description>&lt;h2 class="relative group"&gt;Java 代码的执行顺序&#10; &lt;div id="java-代码的执行顺序" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#java-%e4%bb%a3%e7%a0%81%e7%9a%84%e6%89%a7%e8%a1%8c%e9%a1%ba%e5%ba%8f" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;通过以下代码，更加快速地理解代码的执行顺序，以助于理解jvm的加载顺序，帮助我们在写代码时，写出更深刻的代码。&lt;/p&gt;</description></item><item><title>Git-commit-中添加表情</title><link>https://hello-github-ui-github-io.onrender.com/posts/git-commit-%E4%B8%AD%E6%B7%BB%E5%8A%A0%E8%A1%A8%E6%83%85/</link><pubDate>Tue, 23 Jun 2020 09:23:43 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/git-commit-%E4%B8%AD%E6%B7%BB%E5%8A%A0%E8%A1%A8%E6%83%85/</guid><description>&lt;h1 class="relative group"&gt;git commit 中使用表情&#10; &lt;div id="git-commit-中使用表情" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#git-commit-%e4%b8%ad%e4%bd%bf%e7%94%a8%e8%a1%a8%e6%83%85" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;我们经常可以在github上看到国外大佬的commit信息中有很多可爱的表情，这是怎么做到的呢？&#10;ok，可以这样使用哦：&lt;code&gt;git commit -m '提交信息 :emoji:'&lt;/code&gt;，示例：&lt;code&gt;git commit -m '增加新功能 :sparkles:'&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Java 中 IO 操作总结</title><link>https://hello-github-ui-github-io.onrender.com/posts/java-%E4%B8%AD-io-%E6%93%8D%E4%BD%9C%E6%80%BB%E7%BB%93/</link><pubDate>Mon, 06 Jan 2020 03:35:31 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/java-%E4%B8%AD-io-%E6%93%8D%E4%BD%9C%E6%80%BB%E7%BB%93/</guid><description>&lt;h1 class="relative group"&gt;&lt;font color=#FF8C00&gt;java IO 操作分析&lt;/font&gt;&#10; &lt;div id="java-io-操作分析" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#java-io-%e6%93%8d%e4%bd%9c%e5%88%86%e6%9e%90" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;直接看代码吧&lt;/p&gt;</description></item><item><title>GitHub上传大文件</title><link>https://hello-github-ui-github-io.onrender.com/posts/github%E4%B8%8A%E4%BC%A0%E5%A4%A7%E6%96%87%E4%BB%B6%E7%9A%84%E6%96%B9%E5%BC%8F/</link><pubDate>Mon, 30 Dec 2019 05:17:52 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/github%E4%B8%8A%E4%BC%A0%E5%A4%A7%E6%96%87%E4%BB%B6%E7%9A%84%E6%96%B9%E5%BC%8F/</guid><description>&lt;h1 class="relative group"&gt;github上传文件限制&#10; &lt;div id="github上传文件限制" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#github%e4%b8%8a%e4%bc%a0%e6%96%87%e4%bb%b6%e9%99%90%e5%88%b6" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;github默认地上传文件限制是不超过100M，注意：是单个文件不能超过100M(注意：本篇的密码必须是SHA256加密后的密文)&lt;/p&gt;</description></item><item><title>Java中使用HSSFWorkbook生成Excel</title><link>https://hello-github-ui-github-io.onrender.com/posts/java%E4%B8%AD%E4%BD%BF%E7%94%A8hssfworkbook%E7%94%9F%E6%88%90excel/</link><pubDate>Tue, 12 Nov 2019 22:14:11 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/java%E4%B8%AD%E4%BD%BF%E7%94%A8hssfworkbook%E7%94%9F%E6%88%90excel/</guid><description>&lt;figure&gt;&lt;img&#10; class="my-0 rounded-md"&#10; loading="lazy"&#10; decoding="async"&#10; fetchpriority="low"&#10; alt=""&#10; src="https://img.imgdb.cn/item/604b7e335aedab222ce6192e.jpg"&#10; &gt;&lt;/figure&gt;&#10;&#10;&lt;h1 class="relative group"&gt;HSSFWorkbook 介绍&#10; &lt;div id="hssfworkbook-介绍" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#hssfworkbook-%e4%bb%8b%e7%bb%8d" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;开发中经常会遇到 Excel 的处理，在 Java 中，操作 excel 目前有两个主流框架，分别是：&lt;/p&gt;</description></item><item><title>MySQL触发器</title><link>https://hello-github-ui-github-io.onrender.com/posts/mysql%E8%A7%A6%E5%8F%91%E5%99%A8/</link><pubDate>Thu, 13 Jun 2019 04:04:46 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/mysql%E8%A7%A6%E5%8F%91%E5%99%A8/</guid><description>&lt;h1 class="relative group"&gt;MySQL 触发器&#10; &lt;div id="mysql-触发器" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#mysql-%e8%a7%a6%e5%8f%91%e5%99%a8" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&#10;&lt;h2 class="relative group"&gt;前言&#10; &lt;div id="前言" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e5%89%8d%e8%a8%80" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;这里呢，有两张表，分别是 &lt;code&gt;CXY_TS_ORDER_TICKET &lt;/code&gt; 和 &lt;code&gt;CXY_TS_ORDER_TICKET_STATUS&lt;/code&gt; 表，在 &lt;code&gt;CXY_TS_ORDER_TICKET &lt;/code&gt; &lt;code&gt;表里面有一个&lt;/code&gt;get_status&lt;code&gt;字段，现在呢，我们想在该字段发生变化时，在&lt;/code&gt;CXY_TS_ORDER_TICKET_STATUS` 表中，将该字段插入，并且记录变化时间以及发生变化的记录的主键。因此呢，我打算用触发器去实现这个需求&lt;/p&gt;</description></item><item><title>MySQL约束</title><link>https://hello-github-ui-github-io.onrender.com/posts/mysql%E7%BA%A6%E6%9D%9F/</link><pubDate>Fri, 26 Apr 2019 16:54:23 +0800</pubDate><guid>https://hello-github-ui-github-io.onrender.com/posts/mysql%E7%BA%A6%E6%9D%9F/</guid><description>&lt;h1 class="relative group"&gt;约束的定义&#10; &lt;div id="约束的定义" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e7%ba%a6%e6%9d%9f%e7%9a%84%e5%ae%9a%e4%b9%89" aria-label="锚点"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h1&gt;&#10;&lt;p&gt;约束用于规定表中的数据规则，保证表中的记录的完整和有效。如果存在违反约束的数据行为，行为会被约束终止，约束可以在创建表时规定(通过 create table 语句)，或者在表创建之后规定(通过 alter table 语句)&lt;/p&gt;</description></item></channel></rss>