<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[muzitian的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/muzitian</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; muzitian]]></copyright><item><title><![CDATA[Tesseract-OCR 下载安装和使用]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/148106034</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/148106034</guid><author>muzitian</author><pubDate>Wed, 21 May 2025 10:30:45 +0800</pubDate><description><![CDATA[此时可以勾选**Additional language data(download)**选项来安装OCR识别支持的语言包，这样OCR便可以识别多国语言，比如可以选择math,英文，中文等。表示tesseract_cmd配置的是你安装tesseract的绝对路径，这样就能找到tesseract了。我在配置自己电脑的时候，也看了很多帖子，配置了好几遍，总是感觉很玄学，多多尝试。5、查看是否安装成功，打开cmd，输入tesseract4 -v回车，若显示版本号即为安装成功。2、打开安装，需要选择的选项，看下图。]]></description><category></category></item><item><title><![CDATA[EasyOCR 模型文件下载]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/148090995</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/148090995</guid><author>muzitian</author><pubDate>Tue, 20 May 2025 16:38:37 +0800</pubDate><description><![CDATA[EasyOCR是一款支持多语言的OCR工具，能够识别80多种语言和多种书写脚本。为了使用EasyOCR，用户需要安装EasyOCR库并下载相应的模型文件。本项目提供了EasyOCR的模型文件下载，用户只需将下载的模型文件解压并复制到用户目录下的.EasyOCR/model文件夹中即可使用。安装EasyOCR库可以通过pip命令完成，具体命令为pip install easyocr。使用EasyOCR时，用户可以通过编写Python代码调用其功能，进行文字识别。为确保模型文件正确加载，用户需注意文件路径的正确]]></description><category></category></item><item><title><![CDATA[excel序号自动递增：excel如何自动填充连续数字，六种方法解决！]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/147480497</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/147480497</guid><author>muzitian</author><pubDate>Thu, 24 Apr 2025 15:49:30 +0800</pubDate><description><![CDATA[如果您的需求更为复杂，您还可以创建自定义的递增序列。选择您想要开始序列的单元格，然后在Excel的菜单栏中选择“文件” -> “选项” -> “高级”选项卡。在“编辑自定义列表”中，您可以输入您想要的递增顺序，然后点击“添加”和“确定”。接下来，您只需在单元格中输入起始值，然后使用填充手柄来填充整个序列。通过以上介绍的多种方法，您可以轻松地在Excel中实现序号的自动递增。根据您的具体需求，选择适合您的方法，既能提高工作效率，又能使数据更加整洁有序。]]></description><category></category></item><item><title><![CDATA[Java中的TreeSet集合解析]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/143950814</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/143950814</guid><author>muzitian</author><pubDate>Thu, 21 Nov 2024 17:28:25 +0800</pubDate><description><![CDATA[对于TreeSet，最重要的方法是add()、remove()、contains()等方法，这些方法通过调用AbstractSet类中的方法实现。我们并没有使用Collections.sort()方法来对集合进行排序，而是使用了TreeSet函数，它会自动按照元素的自然排序进行排序。与其他集合不同，treeset会按照元素的自然排序对其进行排序。Stream.of("a1", "a2", "a3") .map(s -> s.substring(1)) // 对每个字符串元素从下标1位置开始截取。]]></description><category></category></item><item><title><![CDATA[varchar类型字段为什么经常定义成255]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/136503659</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/136503659</guid><author>muzitian</author><pubDate>Wed, 06 Mar 2024 13:41:20 +0800</pubDate><description><![CDATA[也就是说varchar(20)和varchar(255)相应的索引长度分别为20*3(utf-8)(+2+1),255*3(utf-8)(+2+1)。但实际上，varchar(255)并不是最优的字符定义长度，究竟定成多少，还是要根据实际需求来决定，例如这个字段我就不需要创建索引，定义超过255，是可以的，只能说255是常规情况下较少出错的一个值。2、少申请一个字节，记录字符创长度，一个8位的tinyint，可以表示的无符号数值的范围是，0-255，如果长度超过了255，需要在申请个字节。]]></description><category></category></item><item><title><![CDATA[Windows10系统打开管理员命令提示符的六种]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/135369912</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/135369912</guid><author>muzitian</author><pubDate>Wed, 03 Jan 2024 18:02:53 +0800</pubDate><description><![CDATA[在Windows10系统的运行过程中，我们常常需要打开管理员命令提示符，打开Windows10系统管理员命令提示符的方法很多，下面总结一下打开Windows10系统管理员命令提示符的方法。]]></description><category></category></item><item><title><![CDATA[Linux下查看压缩文件内容的10种方法(小结)]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/134426232</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/134426232</guid><author>muzitian</author><pubDate>Wed, 15 Nov 2023 18:16:19 +0800</pubDate><description><![CDATA[通常来说，我们查看归档或压缩文件的内容，需要先进行解压缩，然后再查看，比较麻烦。上面简单介绍了 10 个不同的命令，可以使让你能够在不提取文件的前提下查看归档/压缩文件的内容，若你对其中某些命令感兴趣，可以自己慢慢钻研。tar 命令不仅仅可以用于压缩/解压文件，还可以在不提取 tar 文件的情况下使用 tar -tf 命令查看压缩包内容。对于上面的 rar 文件，你也可以使用带有 l 参数的 unrar 命令查看 rar 文件的内容。在不提取 zip 文件的情况下可以使用 zip -sf 命令查看其内容。]]></description><category></category></item><item><title><![CDATA[网络知识基础一]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133896481</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133896481</guid><author>muzitian</author><pubDate>Wed, 18 Oct 2023 00:04:51 +0800</pubDate><description><![CDATA[应用层虽然没有四层负载快,但是支持很多功能,比如说他支持http信息的改写、头部信息的改写、（意识是，七层代理着用户往后请求的时候把我们用户请求的头部信息加上，长连接协议也可以修改等）、安全应用规则控制、URL匹配规则控制、以及转发、rewrite等一些规则，所以在应用层的服务里面，可以做的内容就更多了。当然四层有四层的好处,七层七层的好处,四层就不支持协议的转发,(http,https,DNS等)只支持IP，但是它的速度快.确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。]]></description><category></category></item><item><title><![CDATA[简述什么是服务端包含（Server Side Include）？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133896393</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133896393</guid><author>muzitian</author><pubDate>Tue, 17 Oct 2023 23:40:31 +0800</pubDate><description><![CDATA[如果您希望您的文件保留 .html 或 .htm 扩展名，请要求您的系统管理员对服务器进行配置，以检查所有文件（而不只是具有某一扩展名的文件）是否具有 server-side include（服务器端包括）。当访问者浏览器请求含有 include（包括）指令的文档时，服务器处理 include（包括）指令并创建新的文档，在新文档中 include（包括）指令被所包括的文件内容取代。但可惜的是，除非在服务器上已安装了特殊的软件，否则 IIS 不允许您包括在文件夹层次结构中高于当前文件夹的文件夹中的文件。]]></description><category></category></item><item><title><![CDATA[简述常见HTTP状态码分类？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133896221</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133896221</guid><author>muzitian</author><pubDate>Tue, 17 Oct 2023 23:32:02 +0800</pubDate><description><![CDATA[当浏览器接收并显示网页前，此网页所在的服务器会返回一个包含 HTTP 状态码的信息头（server header）用以响应浏览器的请求。有时候我们在访问一些网站的时候会经常看到一些网站有报错情况，同时在浏览器中会显示某些错误代码，很多人并不清楚这些错误代码代表的是什么意思。HTTP 1.1 新增状态码。HTTP状态码由三个十进制数字组成，第一个十进制数字定义了状态码的类型，后两个数字没有分类的作用。请求已实现，已根据请求创建了新资源，将同时返回资源的URI。客户端请求的内容并未改变，服务器将返回空内容。]]></description><category></category></item><item><title><![CDATA[基础知识汇总一]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133872497</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133872497</guid><author>muzitian</author><pubDate>Tue, 17 Oct 2023 00:30:27 +0800</pubDate><description><![CDATA[静态变量是和类绑定到一起的，而不是类的实例对象。类似的，静态方法是属于类的方法，而不是类对象，它的调用并不作用于类对象，也不需要创建任何的类实例。View与Controller通信需要利用代理协议的方式，当有数据更新时，MOdel也要与Controller进行通信，这个时候就要用Notification和KVO，这个方式就像一个广播一样，MOdel发信号，Controller设置监听接受信号，当有数据更新时就发信号给Controller，Model和View不能直接进行通信，这样会违背MVC设计模式。]]></description><category></category></item><item><title><![CDATA[简述Session与Cookie的区别？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133872256</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133872256</guid><author>muzitian</author><pubDate>Mon, 16 Oct 2023 22:53:05 +0800</pubDate><description><![CDATA[1. 由于HTTP协议是无状态的协议，所以服务端需要记录用户的状态时，就需要用某种机制来识具体的用户，这个机制就是Session.典型的场景比如购物车，当你点击下单按钮时，由于HTTP协议无状态，所以并不知道是哪个用户操作的，所以服务端要为特定的用户创建了特定的Session，用用于标识这个用户，并且跟踪用户，这样才知道购物车里面有几本书。2. 思考一下服务端如何识别特定的客户？这个信息可以写到Cookie里面，访问网站的时候，网站页面的脚本可以读取这个信息，就自动帮你把用户名给填了，能够方便一下用户。]]></description><category></category></item><item><title><![CDATA[Java中Exception和Error有什么区别？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133842905</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133842905</guid><author>muzitian</author><pubDate>Sun, 15 Oct 2023 15:07:50 +0800</pubDate><description><![CDATA[在Exception分支中有一个重要的子类RuntimeException（运行时异常），该类型的异常自动为你所编写的程序定义ArrayIndexOutOfBoundsException（数组下标越界）、NullPointerException（空指针异常）、ArithmeticException（算术异常）、MissingResourceException（丢失资源）、ClassNotFoundException（找不到类）等异常，这些异常是不检查异常，程序中可以选择捕获处理，也可以不处理。]]></description><category></category></item><item><title><![CDATA[finalize()方法什么时候被调用？析构函数(finalization)的目的是什么？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133842740</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133842740</guid><author>muzitian</author><pubDate>Sun, 15 Oct 2023 15:03:52 +0800</pubDate><description><![CDATA[垃圾回收器（garbage colector）决定回收某对象时，就会运行该对象的 finalize() 方法 但是在 Java 中很不幸，如果内存总是充足的，那么垃圾回收可能永远不会进行，也就是说 filalize() 可能永远不被执行，显然指望它做收尾工作是靠不住的。此时，垃圾回收器会自动回收或者说销毁该对象，重写完之后，我们运行程序，来验证finalize方法在此时是否会被自动调用，此时main方法中的代码是这样的，在第7行，已经将d赋值为null，意味着Dog对象已经没有任何引用了。]]></description><category></category></item><item><title><![CDATA[hashCode()和equals()方法的重要性体现在什么地方？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133842581</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133842581</guid><author>muzitian</author><pubDate>Sun, 15 Oct 2023 14:54:44 +0800</pubDate><description><![CDATA[如果我们想要两个name相等的两个对象让它被系统认为是同一个，即调用equals()方法或者“==”时返回true，那么就需要重写equals方法了。判断两个对象是否相等，就是“==”，两个对象的地址是否相同；传递性：对于任意引用x，y和z，如果x.equals(y)返回true，y.equals(z)返回true，那么x.equals(z)也应该返回true。那么由于两个对象的地址不同，所以得到的hashCode不同，即使他们的name一样，但是“==”与“equals()”都不相等，返回为false.]]></description><category></category></item><item><title><![CDATA[简述快速失败(fail-fast)和安全失败(fail-safe)的区别 ？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133834113</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133834113</guid><author>muzitian</author><pubDate>Sun, 15 Oct 2023 00:18:37 +0800</pubDate><description><![CDATA[缺点：基于拷贝内容的优点是避免了Concurrent Modification Exception，但同样地，迭代器并不能访问到修改后的内容，即：迭代器遍历的是开始遍历那一刻拿到的集合拷贝，在遍历期间原集合发生的修改迭代器是不知道的。缺点：基于拷贝内容的优点是避免了Concurrent Modification Exception，但同样地，迭代器并不能访问到修改后的内容，即：迭代器遍历的是开始遍历那一刻拿到的集合拷贝，在遍历期间原集合发生的修改迭代器是不知道的。因此，对容器内容的修改不影响遍历。]]></description><category></category></item><item><title><![CDATA[Iterator和ListIterator的区别是什么？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133834056</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133834056</guid><author>muzitian</author><pubDate>Sat, 14 Oct 2023 23:41:33 +0800</pubDate><description><![CDATA[此外，ListIterator 还有一些额外的方法，如 add()、set() 和 remove() 等，可以在迭代过程中修改 List 集合中的元素。Iterator 和 ListIterator 都是 Java 集合框架中的迭代器，其中 Iterator 是普遍适用于所有实现了 Iterable 接口的集合类的通用迭代器，而 ListIterator 则是专门用于遍历 List 集合的迭代器，它比 Iterator 更加强大，而且只适用于 List 集合。但是，它们之间有一些区别，这里简单介绍一下。]]></description><category></category></item><item><title><![CDATA[简述什么是迭代器(Iterator)？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133833359</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133833359</guid><author>muzitian</author><pubDate>Sat, 14 Oct 2023 22:57:56 +0800</pubDate><description><![CDATA[迭代器（Iterator）是一种设计模式，Java 中的迭代器是集合框架中的一个接口，它可以让程序员遍历集合中的元素而无需暴露集合的内部结构。使用迭代器可以遍历任何类型的集合，例如 List、Set 和 Map 等。
通过调用集合类的 iterator() 方法可以获取一个迭代器，并使用 hasNext() 方法判断是否还有下一个元素，如果有，则使用 next() 方法获取下一个元素。使用迭代器的好处在于遍历集合时不需要了解集合内部的结构，从而让代码更具可维护性和可重用性。
迭代器还具有一些额外的功能，比如]]></description><category></category></item><item><title><![CDATA[简述什么是值传递和引用传递？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133832611</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133832611</guid><author>muzitian</author><pubDate>Sat, 14 Oct 2023 22:28:35 +0800</pubDate><description><![CDATA[值传递值传递（pass by value）是指在调用函数时将实际参数复制一份传递到函数中，这样在函数中如果对参数进行修改，将不会影响到实际参数。引用传递（pass by reference）是指在调用函数时将实际参数的地址直接传递到函数中，那么在函数中对参数所进行的修改，将影响到实际参数。我们知道，编程语言中需要进行方法间的参数传递，这个传递的策略叫做求值策略。在程序设计中，求值策略有很多种，比较常见的就是值传递和引用传递。还有一种值传递的特例——共享对象传递。]]></description><category></category></item><item><title><![CDATA[请描述JDK和JRE的区别 ？]]></title><link>https://blog.youkuaiyun.com/muzitian/article/details/133822326</link><guid>https://blog.youkuaiyun.com/muzitian/article/details/133822326</guid><author>muzitian</author><pubDate>Sat, 14 Oct 2023 10:57:55 +0800</pubDate><description><![CDATA[JDK：Java Development Kit 是Java的标准开发工具包（普通用户只需要安装 JRE来运行 Java 程序。而程序开发者必须安装JDK来编译、调试程序）。它提供了编译、运行Java程序所需的各种工具和资源，包括Java编译器、Java运行环境JRE，以及常用的Java基础类库等，是整个JAVA的核心。JDK一般有三种版本：SE(J2SE),standard edition,标准版，是我们通常用的一个版本。]]></description><category></category></item></channel></rss>