<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Zichen_Lin的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Zichen_Lin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Zichen_Lin]]></copyright><item><title><![CDATA[一劳永逸解决mac打开csv中文乱码问题]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/151822460</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/151822460</guid><author>Zichen_Lin</author><pubDate>Thu, 18 Sep 2025 11:25:37 +0800</pubDate><description><![CDATA[摘要： 本文介绍如何在 macOS 下通过 Automator 创建右键快捷操作，实现一键将 UTF-8 编码的 CSV 文件转换为 GBK 编码。主要步骤包括：使用 Automator 创建&quot;快速操作&quot;，添加 Shell 脚本调用 iconv 命令进行编码转换，并设置输出新文件命名规则（GBK_原文件名.csv）。最终效果是在 Finder 中右键文件即可选择转换操作，转换成功后会生成新文件并弹出系统通知。该方法无需第三方工具，利用 macOS 原生功能实现高效编码转换。]]></description><category></category></item><item><title><![CDATA[记一次 SpringBoot + Docker 内部容器通信失败问题]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128702753</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128702753</guid><author>Zichen_Lin</author><pubDate>Mon, 16 Jan 2023 12:09:54 +0800</pubDate><description><![CDATA[记一次通过docker-compose 启动 SpringBoot项目后,项目连接第三方服务失败问题,一直提示 Failed connecting to host ]]></description><category></category></item><item><title><![CDATA[docker-compose（二）：SpringBoot + Docker Compose]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206834</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206834</guid><author>Zichen_Lin</author><pubDate>Tue, 06 Dec 2022 17:20:10 +0800</pubDate><description><![CDATA[原文地址：http://www.linzichen.cn/article/1597479427321626624在上篇 docker-compose（一）：SpringBoot + Docker 案例 一文中，通过一个简单的 SpringBoot 项目整合了基于容器运行的 mysql 和 redis，并通过 nginx 做了接口的代理转发。在运维方面，其实是存在几个痛点的：针对以上问题，我们可以使用 Docker 官方的开源项目  来实现对 Docker 容器集群的快速编排。 项目是 Docker 官方的开]]></description><category></category></item><item><title><![CDATA[docker-compose（一）：SpringBoot + Docker 案例]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206799</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206799</guid><author>Zichen_Lin</author><pubDate>Tue, 06 Dec 2022 17:19:11 +0800</pubDate><description><![CDATA[原味地址：http://www.linzichen.cn/article/1595243013943066624本文主要演示通过 在  服务器上安装 、 及 ，并通过一个简单的 SpringBoot 项目进行连接并测试，最后通过 nginx 代理我们后端的接口请求。1、拉取镜像
2、创建mysql容器
3、进入mysql容器内部
4、 mysql 连接
5、创建库和表
6、测试远程连接由于是自己的虚拟机，所以不需要开放端口也能访问，如果是购买的服务器，则需要开放端口，并重启防火墙。1、拉取镜像
2、自定义r]]></description><category></category></item><item><title><![CDATA[Dockerfile 实践]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206738</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206738</guid><author>Zichen_Lin</author><pubDate>Tue, 06 Dec 2022 17:18:14 +0800</pubDate><description><![CDATA[Dockerfile详解,利用Dockerfile构建SpringBoot镜像包]]></description><category></category></item><item><title><![CDATA[Docker镜像推送阿里云和私有库]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206715</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206715</guid><author>Zichen_Lin</author><pubDate>Tue, 06 Dec 2022 17:16:18 +0800</pubDate><description><![CDATA[docker镜像推送到阿里云和私有库]]></description><category></category></item><item><title><![CDATA[聊聊ThreadLocal]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206670</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/128206670</guid><author>Zichen_Lin</author><pubDate>Tue, 06 Dec 2022 17:15:11 +0800</pubDate><description><![CDATA[ThreadLocal, ThreadLocal弱引用,ThreadLocal源码剖析,ThreadLocalMap]]></description><category></category></item><item><title><![CDATA[JS 生成文章目录树]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127506928</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127506928</guid><author>Zichen_Lin</author><pubDate>Tue, 25 Oct 2022 09:21:01 +0800</pubDate><description><![CDATA[原文地址：我们在网页浏览文章时，会发现在页面上总有一块固定区域，用来展示文章的目录结构，以帮助我们快速定位到对应的内容。今天我们就用JavaScript来实现文章目录树的功能。]]></description><category></category></item><item><title><![CDATA[线性表之链表]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127424418</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127424418</guid><author>Zichen_Lin</author><pubDate>Thu, 20 Oct 2022 11:57:59 +0800</pubDate><description><![CDATA[数据结构之链表结构,包含单向链表,双向链表快,慢指针解决中间值和有环链表入口问题,循环链表之约瑟夫问题]]></description><category></category></item><item><title><![CDATA[vue动态生成路由及常见问题]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354236</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354236</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 22:07:41 +0800</pubDate><description><![CDATA[在一些常见的 RBAC 系统中，对于角色和权限的管理是极其重要的。一个人可以拥有多个`角色`，而一个角色又会被赋予多个`权限`。不同的角色在登录后台系统后，看到的系统菜单也是不同的。在前后端不分离的项目中，后端可以整合 `Spring Security`、`Shiro`等安全框架对页面元素进行标签化管理。但是随着前后分离模式的普及，我们现常常把展示逻辑放到前端来完成。本文就详细聊一聊在 vue 中如何实现对于菜单的动态控制。]]></description><category></category></item><item><title><![CDATA[React脚手架配置别名（非eject）]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354218</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354218</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 22:06:35 +0800</pubDate><description><![CDATA[之前在用 react 脚手架写项目时，发现在引入自定义组件或 js 的时候，不能够像vue似的通过别名@来引入，如果涉及层级过深，那么一堆的相对路径../../也是颇为头痛，且及不雅观。使用初始化项目，不会有webpack的配置项。如果想手动修改配置，需要通过把 webpack 的配置文件分解到 config 文件夹，此过程是不可逆的。如果只是修改一些简单的配置，则推荐使用第三方依赖，其作用是帮助我们重写 react 脚手架的配置。]]></description><category></category></item><item><title><![CDATA[thymeleaf 整合 pjax 无刷新跳转]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354190</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354190</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 22:05:18 +0800</pubDate><description><![CDATA[原文地址：在一些需要做seo优化的应用里，比如门户网站、博客论坛网站、商城商品页网站等，我们的数据常常采用服务端渲染的方式来展现，目的是为了让爬虫更好的抓取到，从而在搜索引擎搜索时，可以搜到到我们自己的应用网站。]]></description><category></category></item><item><title><![CDATA[CompletableFuture 引发的线上问题]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354165</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354165</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 22:03:16 +0800</pubDate><description><![CDATA[1、不建议直接使用CompletableFuture的get()方法，而是使用future.get(5, TimeUnit.SECONDS);方法指定超时时间。2、在使用CompletableFuture的时候线程池拒绝策略最好使用AbortPolicy，如果线程池满了直接抛出异常中断主线程，达到快速失败的效果。3、耗时的异步线程和CompletableFuture的线程做线程池隔离，让耗时操作不影响主线程的执行。]]></description><category></category></item><item><title><![CDATA[聊聊MySQL中的锁]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354153</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354153</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 22:01:44 +0800</pubDate><description><![CDATA[在程序开发中，当多个线程并发操作共享数据时，我们需要保证在任何时刻最多只能有一个线程在操作，以保证数据的完整性和一致性。比如在 JAVA 中，单体应用有和锁，分布式应用有分布式锁。同样在数据库中，用户数据作为一种共享资源，同样也提供对应的锁机制。]]></description><category></category></item><item><title><![CDATA[CSS var() 函数]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354135</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354135</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 22:00:38 +0800</pubDate><description><![CDATA[借用下W3C的定义：var() 函数用于插入自定义的属性值，如果一个属性值在多处被使用，该方法就很有用。只听文字介绍可能并不清楚，直接上案例就一目了然了。使用:root可以在css中创建全局样式变量。通过:root本身写的样式，相当于html，但优先级比后者高。var()函数在特点场景下能优化很多冗余代码（一组元素下，需要针对每个元素写结构相同但值不同的css）。经过测试，发现style="--"具有继承性，父元素定义的自身属性，子元素也是可以通过var()函数来使用的。]]></description><category></category></item><item><title><![CDATA[实现无滚动条滑动效果]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354107</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354107</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 21:59:41 +0800</pubDate><description><![CDATA[而不同内核的浏览器对滚动条的处理方式也不同，且局域块中出现滚动条不是特别美观，基于这种情况，我们常常选择隐藏滚动条且支持滑动的效果。在网页中，有些宽高固定的区域，如果它们的内容高度或宽度超出了自身的宽高，会导致浏览器自身。]]></description><category></category></item><item><title><![CDATA[SQL响应慢如何分析解决]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354087</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354087</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 21:57:52 +0800</pubDate><description><![CDATA[创建自定义函数之前，需要设置数据库服务信任我们自定义的函数或触发器，即设置为ON。创建生成随机数的函数可以分析当前会话中mysql都做了什么，以及资源消耗的情况，可以用于sql调优的测量。默认情况是处于关闭状态，并保存最近15次的运行结果。此功能开启后，我们可以通过由上可见，我们在当前会话中执行过的sql可以通过all：显示所有的开销信息。block io：显示块io开销。context switches： 上下文切换开销。cpu：显示cpu开销信息。]]></description><category></category></item><item><title><![CDATA[wmware创建虚拟机]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354057</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127354057</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 21:56:28 +0800</pubDate><description><![CDATA[现在大多数公司项目的生产环境都是采用linux服务器，所以在开发阶段，为了让程序的一些配置和生产环境配置类似，我们需要把数据库、ftp、nginx和其他一些中间件等都安装在linux环境下。但由于我们的个人电脑大多都是windows系统，所以我们需要在windows系统里装一个linux系统，也就是本文主要介绍的虚拟机。只要笔记本主机有外网，那么linux虚拟机也可以连接外网。虚拟机有自己的固定ip，即使关机重启，ip不变，在终端连接时，不需要经常更改ip。主机和虚拟机可以ping通，可以使用。]]></description><category></category></item><item><title><![CDATA[InnoDB索引数据结构]]></title><link>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127353969</link><guid>https://blog.youkuaiyun.com/Zichen_Lin/article/details/127353969</guid><author>Zichen_Lin</author><pubDate>Sun, 16 Oct 2022 21:54:45 +0800</pubDate><description><![CDATA[MySQL官方对索引的定义为：索引（Index）是帮助MySQL高效获取数据的数据结构。索引的本质：实际就是数据结构，可以简单理解为“排好序的快速查找数据结构”，满足特点查找算法。这些数据结构以某种方式指向数据，这样就可以在此基础上实现高级查找算法.索引是在存储引擎中实现的，因此每种存储引擎的索引不一定完全相同，并且每种存储引擎不一定支持所有索引类型。同时，存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引，总索引长度至少为256个字节。]]></description><category></category></item></channel></rss>