<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[借人之智，完善自己]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cl_ghost</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cl_ghost]]></copyright><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/136549142</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/136549142</guid><author>cl_ghost</author><pubDate>Thu, 07 Mar 2024 23:47:32 +0800</pubDate><description><![CDATA[今天使用Java进行Excel导出的使用到了Hutool的ExcelWriter功能进行导出。中间需要用到手动换行，网上找了很多资料，哪怕是用到bing的gpt，搜到的答案还是有点问题，好在最终看文档，找到了解决方案，这里记录一下。]]></description><category></category></item><item><title><![CDATA[Python 安装win32com失败]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/134537391</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/134537391</guid><author>cl_ghost</author><pubDate>Tue, 21 Nov 2023 17:45:24 +0800</pubDate><description><![CDATA[今天进行服务器迁移， 中间有用的python调用win32com组件让docx转换成pdf。不出意外的话出意外了，pip安装win32com的时候各种安装不上，在cmd上面，一开始安装的时候，提示找不到包，然后再网上找，安装各种镜像之类的，还是不行，后面有进行各种镜像的修改，还是不行。上面的指令我只用了第一个就成功了。没用清理掉缓存之前，也是一直安装失败的。我把这个文件夹删掉了，然后调用下面的指令重新安装。今天处理完问题之后，记录一下，与人方便与己方便。]]></description><category></category></item><item><title><![CDATA[el table 修改鼠标在行上改变背景颜色]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/133213292</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/133213292</guid><author>cl_ghost</author><pubDate>Sat, 23 Sep 2023 18:22:21 +0800</pubDate><description><![CDATA[2. 然后再最下面下面创建style样式，是<style scoped> 的，不是scss sass的。el table 在制作的时候，需要修改当鼠标停留在指定行上的时候，修改背景颜色等相关样式。当然，也可以添加其他的样式，比如字体的颜色。如将字体变成红色:则添加。上面就是在鼠标悬停的时候，修改对应表格的样式。就可以完成指定需求了。]]></description><category></category></item><item><title><![CDATA[Linux 同步系统时间并且写入到硬件]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/129649966</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/129649966</guid><author>cl_ghost</author><pubDate>Sun, 19 Mar 2023 13:54:02 +0800</pubDate><description><![CDATA[Linux  时间同步]]></description><category></category></item><item><title><![CDATA[Mysql数据库日常使用备注]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/128795920</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/128795920</guid><author>cl_ghost</author><pubDate>Mon, 30 Jan 2023 00:34:20 +0800</pubDate><description><![CDATA[mysql 日常操作记录]]></description><category></category></item><item><title><![CDATA[Spring 三级缓存解决循环依赖]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/128474229</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/128474229</guid><author>cl_ghost</author><pubDate>Wed, 28 Dec 2022 21:37:45 +0800</pubDate><description><![CDATA[spring三级缓存循环依赖自己的理解]]></description><category></category></item><item><title><![CDATA[Springboot 通过上下文环境获取bean对象]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/128403428</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/128403428</guid><author>cl_ghost</author><pubDate>Wed, 21 Dec 2022 23:51:20 +0800</pubDate><description><![CDATA[springboot 通过上下文获取 bean对象]]></description><category></category></item><item><title><![CDATA[vite vue3 代理发布不停自动刷新的问题]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/128270408</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/128270408</guid><author>cl_ghost</author><pubDate>Sat, 10 Dec 2022 23:16:53 +0800</pubDate><description><![CDATA[vue3 vite 使用代理发布，不停的网页更新]]></description><category></category></item><item><title><![CDATA[java读取串口数据]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/126446498</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/126446498</guid><author>cl_ghost</author><pubDate>Sun, 21 Aug 2022 00:53:30 +0800</pubDate><description><![CDATA[java 串口 读写]]></description><category></category></item><item><title><![CDATA[table自动分页]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/125883000</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/125883000</guid><author>cl_ghost</author><pubDate>Tue, 19 Jul 2022 23:11:53 +0800</pubDate><description><![CDATA[table自动打印分页]]></description><category></category></item><item><title><![CDATA[idea springboot 自定义注释无效]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/125531227</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/125531227</guid><author>cl_ghost</author><pubDate>Wed, 29 Jun 2022 22:59:38 +0800</pubDate><description><![CDATA[idea创建aspct导致注释无效]]></description><category></category></item><item><title><![CDATA[vue里面的model]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/124563453</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/124563453</guid><author>cl_ghost</author><pubDate>Tue, 03 May 2022 22:59:59 +0800</pubDate><description><![CDATA[vue里面的model双向绑定，就是一种代码组合即语法糖，我们之前在实现功能的时候，父组件通过props向子组件里面传递参数，子组件处理完成之后，如果想将结果传回父组件的话，需要调用emit里面的自定义方法实现回传。父组件通过定义的方法，然后接收到子组件传递过来的参数之后，进行赋值处理即可。

vue这里面实现了一个简单的方式实现了上面的功能，及model，双向绑定。对于开发者来说，简化了一些代码，实际就是vue给你封装了，只需要简单的代码就可以实现传值-修改-回传的功能，其实本质还是 传递数据-加工-调用]]></description><category></category></item><item><title><![CDATA[vite sass 报错问题]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/124533605</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/124533605</guid><author>cl_ghost</author><pubDate>Sun, 01 May 2022 22:03:06 +0800</pubDate><description><![CDATA[今天学些vite, 使用scss里面的scop里面的时候，运行报错，提示错误内容如下:

internal server error preprocessor dependency sass not found. did you install it vite

从网上找了好几个，说是安装各种东西，都不是很理想，终于在一片博客里面，发现了下面的指令：

npm install sass --save-dev

运行了之后，系统就能够正常运行了，希望这个博客也能解决你的问题
...]]></description><category></category></item><item><title><![CDATA[Python通过PyPDF2给pdf加密，权限分析]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/124519212</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/124519212</guid><author>cl_ghost</author><pubDate>Sat, 30 Apr 2022 21:46:17 +0800</pubDate><description><![CDATA[前两天做了一个通过python里面的加密，如果想给pdf添加指定的权限，而不是全部锁死活着全部放开，这种就比较复杂。PyPDF2的官方文档里面，针对权限做了说明，其实就是使用二进制占位符进行权限判断的。

 通过官方文档可以了解到，pdf一共通过32位的二进制进行权限判断，具体每个字段的意思如下:







上面的文档分别表示每个二进制的对应的意思，

1~2: 是指定字段，必须是0，这两个字段不需要操作

3: 打印权限

4: 表示除 6/9/11 位编辑功能以外的其他编辑功能，可以理解为 二级..]]></description><category></category></item><item><title><![CDATA[Python给pdf制定权限加密]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/124437584</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/124437584</guid><author>cl_ghost</author><pubDate>Tue, 26 Apr 2022 21:37:27 +0800</pubDate><description><![CDATA[上一篇文章介绍了，为了保护pdf，使用python给pdf添加密码。但是，上锁之后，让客户可以看，但是不能随意复制、打印之类的话，还是不能满足的。因为加密之后，所有的功能权限都进行了加密。就是一个开关。如果我想让客户只能看，但是不能复制，能打印，那么这个需求就不能满足。为了让人看，你得提供密码，但是密码给了，那么用户就能继续复制。所以，我现在想结合加密的两个密码，进行分别授权。

这里面需要对PyPDF2进行一些源码的修改。

找到源码，如下图:



然后找到



给方法添加了一个参数，然后在后面进行.]]></description><category></category></item><item><title><![CDATA[使用Python给pdf进行加密]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/124414901</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/124414901</guid><author>cl_ghost</author><pubDate>Mon, 25 Apr 2022 21:38:39 +0800</pubDate><description><![CDATA[这一段时间公司做了一个项目, 由系统生成pdf文件，并且提供客户下载使用。为了保护资源防止用户随便的操作，需要再pdf上面添加密码，对文档生成保护，这里采用了python的方式对文件进行处理。

使用工具: python

用到的插件: PyPDF2

运行环境: win10



下面直接贴代码:



from PyPDF2 import PdfFileWriter, PdfFileReader
path = r'C:/Users/TF/Desktop'
 
pdf_reader = PdfFileRe]]></description><category></category></item><item><title><![CDATA[vite 创建vue3 ts的项目]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/123979128</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/123979128</guid><author>cl_ghost</author><pubDate>Wed, 06 Apr 2022 21:56:13 +0800</pubDate><description><![CDATA[昨天手贱，在package.js里面不小心加了一个+的字符，导致整个项目编辑的时候，出现了问题。一晚上没有成功，无奈，治好重建，当我重新创建好了之后，发现之前测试的项目有好了。现在记录一下创建项目的流程，以后就好找了。

   为什么选择vite vue3 ts 这种。首先，个人感觉vite要比webpackage要快一点。之前一个webpackage什么都没有，启动的话，至少得几秒的时间。vite创建完成之后，启动三位数毫米级，不到1秒的时间。后来随着自己的学习，往里面添加了vuex、 route...]]></description><category></category></item><item><title><![CDATA[router4 ts动态添加路由]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/123746091</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/123746091</guid><author>cl_ghost</author><pubDate>Fri, 25 Mar 2022 21:46:22 +0800</pubDate><description><![CDATA[今天研究route4.0 在vue3里面，使用ts的方式定义路由并且进行动态添加。route4.0在添加路由的方式上面做了一点点的改动。跟之前的有点不一样，因此记录一下。

一、创建路由文件

在项目route里面创建一个简单地index.ts文件。定义内容如下:


/**
  ts版本的路由
  2022年2月28日21:00:46
  CL
 */

import { createRouter, createWebHashHistory, createWebHistory, RouteRecordRa]]></description><category></category></item><item><title><![CDATA[vue3 ts版本深度拷贝功能推荐ts-deepmerge]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/123583374</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/123583374</guid><author>cl_ghost</author><pubDate>Fri, 18 Mar 2022 23:20:57 +0800</pubDate><description><![CDATA[在使用js版本开发vue的时候，需要用到深度拷贝。一般都是用的deepMerge这个进行深度拷贝。但是在VUE3里面，尤其使用ts版本的时候，就不能很好的使用deepMerge这个控件了。从网上找了个一下，出现一个ts版本的deepMerge可以实现深度拷贝功能。

安装:


npm i ts-deepmerge

然后在需要引入的地方


import merge from "ts-deepmerge";
import _config from './config'     // 需要合并的第一个模块
]]></description><category></category></item><item><title><![CDATA[vue3 里面model用法使用记录]]></title><link>https://blog.youkuaiyun.com/cl_ghost/article/details/123537494</link><guid>https://blog.youkuaiyun.com/cl_ghost/article/details/123537494</guid><author>cl_ghost</author><pubDate>Wed, 16 Mar 2022 22:01:02 +0800</pubDate><description><![CDATA[model在vue里面实现双向绑定。通过父节点向子节点传递参数。子节点通过操作再回传给父节点的变量。有点像prop和$emit组合使用。要知道，在子节点里面，是不能通过=去赋值prop里面的变量。唯一的方法，就是通过$emit调用父类方法，并且把参数传递过去，通过父类修改变量，从而修改子类里面的prop值的参数。

   v-model通过双向绑定，可以不用父类自己定义修改参数的方法。直接在子类里面调用指定的方法就可以了。vue3的用法和vue2里面的model使用方式差不多，但是还有点差距。

父节...]]></description><category></category></item></channel></rss>