<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fth1002853070的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fth1002853070</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fth1002853070]]></copyright><item><title><![CDATA[Java多线程与操作系统的抢占式调度]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/163123375</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/163123375</guid><author>fth1002853070</author><pubDate>Thu, 23 Jul 2026 10:35:35 +0800</pubDate><description><![CDATA[多线程文件下载UI演示 该程序展示了一个模拟大文件下载的UI界面，采用主线程处理UI渲染、子线程负责下载的多线程架构。关键实现包括： 使用Swing创建包含进度条和状态显示的下载界面 通过后台线程执行HTTP文件下载，避免阻塞UI线程 采用Java 11的HttpClient进行网络请求和流式下载 实时更新下载进度到UI进度条，保持界面响应能力 正确处理下载完成/失败的状态反馈 程序演示了如何通过线程分离实现流畅的用户体验，同时执行耗时IO操作。]]></description><category></category></item><item><title><![CDATA[flexable-页面自适应方案]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/162622387</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/162622387</guid><author>fth1002853070</author><pubDate>Mon, 06 Jul 2026 09:47:25 +0800</pubDate><description><![CDATA[本文介绍了移动端H5页面适配不同终端设备的解决方案——手淘团队开发的flexible.js方案。该方案通过动态设置viewport、添加data-dpr属性和调整根元素font-size，实现基于rem的响应式布局。核心原理是将视觉稿分成100份，1rem=10a，通过JS计算不同屏幕下的基准值（如750px设计稿中1rem=75px）。开发者只需将设计图中的px值除以基准值转换为rem单位，文本则建议使用px配合data-dpr属性做适配。该方案有效解决了多终端适配问题，并提供了VS Code插件cssr]]></description><category></category></item><item><title><![CDATA[优秀的npm包推荐]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/161443044</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/161443044</guid><author>fth1002853070</author><pubDate>Wed, 27 May 2026 09:40:49 +0800</pubDate><description><![CDATA[一个小巧、安全、URL友好、唯一的 JavaScript 字符串ID生成器。]]></description><category></category></item><item><title><![CDATA[centos 时间校准]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/151458304</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/151458304</guid><author>fth1002853070</author><pubDate>Thu, 11 Sep 2025 00:13:36 +0800</pubDate><description><![CDATA[摘要：腾讯云人脸核身报错&quot;Signature expired&quot;是由于服务器时间不同步所致。通过检查发现CentOS服务器的chronyd服务未配置时间同步目标。解决步骤：1)编辑/etc/chrony.conf添加阿里云时间服务器(ntp.aliyun.com)；2)重启chronyd服务；3)验证同步状态，时间误差已减小并开始同步；4)最终通过date命令确认时间已校准为2025年9月10日CST时间。该方法有效解决了因时间偏差导致的API签名过期问题。]]></description><category></category></item><item><title><![CDATA[前端实现无感刷新token]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/149949242</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/149949242</guid><author>fth1002853070</author><pubDate>Tue, 05 Aug 2025 23:38:37 +0800</pubDate><description><![CDATA[无感刷新Token机制通过双Token认证系统实现用户无缝访问。Access Token用于API请求，有效期短；Refresh Token用于更新Access Token，有效期长且安全存储于HttpOnly Cookie。当Access Token过期时，Axios拦截器自动使用Refresh Token获取新Token，并重试失败请求，用户无感知。系统通过并发控制和队列管理确保原子性刷新，失败时自动登出。该机制大幅提升了Web应用的用户体验，将认证过程完全隐藏在后台运行。]]></description><category></category></item><item><title><![CDATA[pm2直接代理静态文件]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/148838158</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/148838158</guid><author>fth1002853070</author><pubDate>Mon, 23 Jun 2025 08:41:29 +0800</pubDate><description><![CDATA[摘要：本文介绍了使用pm2代理静态文件的方法。通过pm2启动http-server服务，指定静态文件路径（如/var/www/tcm-management/dist）、端口号（如4005）和服务名称（如tcm-mnt-4005）。这种方式可以作为nginx的替代方案，用于域名映射和管理静态资源服务。（98字）]]></description><category></category></item><item><title><![CDATA[Linux定时任务 cron task]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/147412039</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/147412039</guid><author>fth1002853070</author><pubDate>Tue, 22 Apr 2025 10:50:46 +0800</pubDate><description><![CDATA[Linux cron task]]></description><category></category></item><item><title><![CDATA[App上架与合规运营指南（含电商、医疗、社交、文娱、游戏等多个类别）]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/144577063</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/144577063</guid><author>fth1002853070</author><pubDate>Thu, 19 Dec 2024 09:55:56 +0800</pubDate><description><![CDATA[原文链接：  https://blog.youkuaiyun.com/li892011476/article/details/143256156。]]></description><category></category></item><item><title><![CDATA[前端实现共享屏幕]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/142757068</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/142757068</guid><author>fth1002853070</author><pubDate>Tue, 08 Oct 2024 13:24:51 +0800</pubDate><description><![CDATA[简单说下，前端实现共享屏幕主要用到 websocket 、 RTCPeerConnection、navigator.mediaDevices.getDisplayMedia({ video: true })这三个API这个必须实现，因为共享屏幕需要交换协议，通过websocket发送协议到服务器，然后转发给远程，交换双发协议，才能实现共享屏幕。其他方式发送也可以，不过考虑到共享屏幕伴随着聊天室，所以还是用websocket吧，学就完事儿了。这个是实现共享屏幕的重点，就是用于前端点对点网络传输的，想要实时传输]]></description><category></category></item><item><title><![CDATA[Nginx+certbot 免费Https证书]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/141429631</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/141429631</guid><author>fth1002853070</author><pubDate>Thu, 22 Aug 2024 15:34:21 +0800</pubDate><description><![CDATA[证书三个月会过期，但是可以无限续签，可通过以上命令重新申请，也可重新需续签或者自动续签。SSL证书具体位置：/etc/letsencrypt/live下。通过上面两步，直接将Nginx配置写入了已存在的配置文件。]]></description><category></category></item><item><title><![CDATA[pm2分隔日志大小]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/141331237</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/141331237</guid><author>fth1002853070</author><pubDate>Mon, 19 Aug 2024 17:50:18 +0800</pubDate><description><![CDATA[pm2-logrotate 是一个 pm2 的插件，可以对 pm2 日志进行管理，所以它的运行需要依靠 pm2。]]></description><category></category></item><item><title><![CDATA[js将用e表示的科学计数法转换成10的负N次方]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/141133755</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/141133755</guid><author>fth1002853070</author><pubDate>Mon, 12 Aug 2024 15:48:53 +0800</pubDate><description><![CDATA[，你可以通过解析这个数并手动构造这个格式来实现。组装结果：将系数和指数重新组合成 10 的负 N 次方形式的字符串。）表示的小数，并且想将其转换为用 10 的负 N 次方表示（例如。：将 value 转换为科学计数法字符串。中，如果你有一个用科学计数法（例如。将字符串分解为系数部分和指数部分。正则表达式解析：通过正则表达式。匹配科学计数法的指数部分。匹配小数点后的部分。]]></description><category></category></item><item><title><![CDATA[mysql 匹配JSON中的某个字段]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/141133467</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/141133467</guid><author>fth1002853070</author><pubDate>Mon, 12 Aug 2024 15:42:35 +0800</pubDate><description><![CDATA[表中有一个字段，它的类型是JSON，我想要匹配这个JSON串中的某个字段的值在 MySQL 中，如果某个字段是 JSON 类型，并且你需要查询 JSON 数据中name等于"张三"的所有记录，可以使用函数或->>运算符来提取 JSON 数据中的值，然后在 WHERE 子句中进行过滤。你可以使用以下两种方法来查询 name 为 “张三” 的记录。]]></description><category></category></item><item><title><![CDATA[.prettierrc 常用配置]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/139675570</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/139675570</guid><author>fth1002853070</author><pubDate>Fri, 14 Jun 2024 10:52:04 +0800</pubDate><description><![CDATA[【代码】.prettierrc 常用配置。]]></description><category></category></item><item><title><![CDATA[vue生成二维码中间自定义logo并截图分享]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/139622859</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/139622859</guid><author>fth1002853070</author><pubDate>Wed, 12 Jun 2024 11:58:04 +0800</pubDate><description><![CDATA[在公众号中，生成二维码，并在二维码中央添加自定义logo，然后生成一张分享给好友的 二维码图片。]]></description><category></category></item><item><title><![CDATA[前端构建优化]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/139401705</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/139401705</guid><author>fth1002853070</author><pubDate>Mon, 03 Jun 2024 09:37:00 +0800</pubDate><description><![CDATA[上面的代码功能是将实际使用的 config.ts 替换为自定义配置的 dev.routerConfig.ts 文件，那么 dev.routerConfig.ts 文件的内容又是如何产生的呢，其实就是借助了 inquirer 与 EJS 模板引擎，通过一个交互式的命令行问答，选取需要的模块，基于选择的内容，动态的生成新的 dev.routerConfig.ts 代码，这里直接上代码。需要注意的是，创建子进程和主进程之间的通信是有开销的，当你的 loader 很慢的时候，可以加上 happypack。]]></description><category></category></item><item><title><![CDATA[Midia下的Video标签与Audio标签属性和事件汇总]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/138848064</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/138848064</guid><author>fth1002853070</author><pubDate>Tue, 14 May 2024 11:45:40 +0800</pubDate><description><![CDATA[原文链接： https://zhuanlan.zhihu.com/p/59934212。]]></description><category></category></item><item><title><![CDATA[element-ui select 下拉框做成下拉加载更多]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/138566129</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/138566129</guid><author>fth1002853070</author><pubDate>Wed, 08 May 2024 11:55:56 +0800</pubDate><description><![CDATA[注意： vue 版本需要 ≥ 3.3。]]></description><category></category></item><item><title><![CDATA[服务器配置了gitlab的 sshkey，使用SSH方式拉取代码时仍需要输入密码]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/134665480</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/134665480</guid><author>fth1002853070</author><pubDate>Tue, 28 Nov 2023 13:41:22 +0800</pubDate><description><![CDATA[现象： 我在服务器上已经生成了  sshkey，并且已经上传到 gitlab，但是我在服务器上使用SSH 方式拉取代码的时候，仍需要输入密码。，想要每次登录服务器是都自动开启，需要在。我用的是移动云的服务器，默认没有开启。]]></description><category></category></item><item><title><![CDATA[CentOS 系统给nodejs 项目安装依赖报错 make: g++: No such file or directory]]></title><link>https://blog.youkuaiyun.com/fth1002853070/article/details/134662433</link><guid>https://blog.youkuaiyun.com/fth1002853070/article/details/134662433</guid><author>fth1002853070</author><pubDate>Tue, 28 Nov 2023 10:56:43 +0800</pubDate><description><![CDATA[我在给nodejs 项目安装依赖包的时候，报了如下错误。然后再去安装依赖就可以了。]]></description><category></category></item></channel></rss>