<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[分享所学，所见，所闻，期待遇见志同道合的人]]></title><description><![CDATA[欲戴皇冠，必承其重]]></description><link>https://blog.youkuaiyun.com/daima2</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; daima2]]></copyright><item><title><![CDATA[GUI自动化基础（一）]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/159477305</link><guid>https://blog.youkuaiyun.com/daima2/article/details/159477305</guid><author>daima2</author><pubDate>Thu, 26 Mar 2026 01:12:40 +0800</pubDate><description><![CDATA[本文介绍了Python GUI自动化工具pywinauto的基础使用方法。pywinauto是一款针对Windows桌面应用的自动化库，支持win32和UIA两种技术模式，适用于自动化测试和批量任务处理。文章详细讲解了如何安装pywinauto、启动和连接应用程序、定位窗口的五种方法（title、class_name等），以及窗口的基本操作（最大化、最小化、关闭等）。还推荐了UI检查工具UISpy.exe，帮助识别控件属性。需要注意的是，pywinauto仅支持Windows系统，不适用于Web应用和某些跨]]></description><category></category></item><item><title><![CDATA[redis的事务，以及watch的原理]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/153483092</link><guid>https://blog.youkuaiyun.com/daima2/article/details/153483092</guid><author>daima2</author><pubDate>Sat, 18 Oct 2025 12:43:53 +0800</pubDate><description><![CDATA[为什么说是弱化的呢？当我们要和朋友去吃烧烤的时候，由于我们先到了，我们就跟老板娘说我们先点一些菜，但是不着急烤，等朋友都来了，他们再点一个菜，然后再一起烤，这里我们先点的菜就像当于事务的前几个指令，redis服务器还不会真正执行这些指令，也就是老板还不去烤这些菜，直到我们的朋友到到齐了，他们又接着点了一些菜，点菜结束之后，我们就可以告诉老板娘，我们点菜完了，开始烤吧，这里就相当于输入执行exec，告诉服务器我们这个事务的指令都输入完了，所有的指令都打包成一个事务了，你现在开始执行吧。那锁冲突指的是什么呢？]]></description><category></category></item><item><title><![CDATA[谈谈redis的持久化]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/152939221</link><guid>https://blog.youkuaiyun.com/daima2/article/details/152939221</guid><author>daima2</author><pubDate>Thu, 16 Oct 2025 22:26:24 +0800</pubDate><description><![CDATA[！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！！说到redis的持久化，大家可能会想到mysql四个特性中的持久性，mysql的四个特性：原子性，一致性，持久性和隔离性，其实持久性就是持久化，说的就是要把数据存到硬盘中以此来实现数据的持久化存储；]]></description><category></category></item><item><title><![CDATA[JavaSpring项目之连接，并使用redis]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/152833330</link><guid>https://blog.youkuaiyun.com/daima2/article/details/152833330</guid><author>daima2</author><pubDate>Thu, 09 Oct 2025 22:50:58 +0800</pubDate><description><![CDATA[上一篇我们讲了如何安装和下载Jedis,以及如何在Java的maven项目中使用Jedis去操作我们的redis，用法其实是很简单的，语法和redis的几乎已一模一样，可以说Jedis就是redis的再次副本也不为过；但是今天要分享的就有所不也一样了，但是只要掌握了几个重要的点，也是很简单的；]]></description><category></category></item><item><title><![CDATA[使用Java连接redis以及开放redis端口的问题]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/152557025</link><guid>https://blog.youkuaiyun.com/daima2/article/details/152557025</guid><author>daima2</author><pubDate>Sun, 05 Oct 2025 21:26:21 +0800</pubDate><description><![CDATA[我们redis是安装在云服务器上的，要在本地访问到，就得开启云服务器的6379端口，这样我们就可以通过云服务器的外网IP访问到redis服务器，但是开启这个端口，就相当于把redis暴露在网络中，任何一个人都可以通过云服务器的ip去访问到你的redis服务器，如何redis存的数据相当重要，那么你的数据就有可能被人剽窃，如果是被对手公司剽窃了，那你就不是仅仅丢掉年终奖这么简单了，所以这种直接开放端口肯定是行不通的。Jedis是一个客户端，也是一个依赖，我们要引入一个依赖，可以再maven中央仓库进行下载。]]></description><category></category></item><item><title><![CDATA[redis-zset数据类型的常见指令(sorted set)]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/152179974</link><guid>https://blog.youkuaiyun.com/daima2/article/details/152179974</guid><author>daima2</author><pubDate>Sat, 04 Oct 2025 18:26:45 +0800</pubDate><description><![CDATA[而我今天要说的是zset集合，set是无序的，zset是有序的，那zset是根据什么来排序的，在设计的时候就给zset的每一个元素member绑定了一个score分数，每一个member都有一个score，每一个score也都有一个member，可以通过member找到对应的score，也可以通过score找到对应的member，听起来像是key-value，但不是key-value，如果是key-value，通过key可以找到value，但是通过value，却不能找到key；为什么说是下标的呢？]]></description><category></category></item><item><title><![CDATA[redis的set集合的编码方式以及应用场景]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/152010543</link><guid>https://blog.youkuaiyun.com/daima2/article/details/152010543</guid><author>daima2</author><pubDate>Tue, 23 Sep 2025 23:33:11 +0800</pubDate><description><![CDATA[具体我们可以来看几张图，先解释两个概念，PV指的是page view，就是一个页面被访问的次数，一个用户可以访问很多次，有时候我们可能只需要访问量，但是有时候我们就需要统计有多少个用户访问了，这时候就可以使用UV了，UV指的是user view，就是有多少个不同的用户访问，利用的正好就是set的去重效果，如果当前第一次访问，UV存的数字就+1，PV+1，如果当前用户不是第一次访问，那就只是PV+1，这样就可以很好的统计访问量，还可以对各个时间段的访问量做统计分析结果。1.用set来存储用户的“标签”]]></description><category></category></item><item><title><![CDATA[redis的set集合的常规使用]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/152006329</link><guid>https://blog.youkuaiyun.com/daima2/article/details/152006329</guid><author>daima2</author><pubDate>Tue, 23 Sep 2025 21:08:24 +0800</pubDate><description><![CDATA[redis还提供的一个指令可以把交集存到一个key里面，比如还是keyA存的 1 2 3  4，keyB存的是3 4 5 6，sinterstore destination keyA keyB，执行的结果就是destination中的元素就是 3 4，返回值是交集的个数，keyA 和keyB的顺序是可以交换的，而且并不局限于两个key求交集，可以是多个，时间复杂是O(N*M)，N和M分别指的是所有key中元素最多和最小的两个长度的乘积；返回值就是成功插入的元素的个数，为什么是成功的个数呢？]]></description><category></category></item><item><title><![CDATA[redis-list的基本介绍]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/151805328</link><guid>https://blog.youkuaiyun.com/daima2/article/details/151805328</guid><author>daima2</author><pubDate>Thu, 18 Sep 2025 23:49:19 +0800</pubDate><description><![CDATA[但是值得注意的这个start和end可以是负数，也可以是正数，而且redis会尽可能的返回正确的一个区间的所有元素，比如是【0 -1】就是返回所有的的元素，如果是[0,100]的话要看你的list的长度是多少，如果长度>101 ,那就是返回前101个元素，如果长度小于101，比如只有10个，那么redis不会报错，而是返回全部的这个10个元素，因为redis认为你并没有101个元素，只有10个元素，那么我就给你返回，这就是说为什么redis会尽快的返回一个正确的；返回值为list的新长度；]]></description><category></category></item><item><title><![CDATA[redis-hash的基本介绍]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/151615606</link><guid>https://blog.youkuaiyun.com/daima2/article/details/151615606</guid><author>daima2</author><pubDate>Sat, 13 Sep 2025 00:37:37 +0800</pubDate><description><![CDATA[一样是有三个关键词：key，field，value，key的作用就相当于hash表的名字，是唯一的，redis的key名字都是唯一的，这里也不例外，目的就是为了区分不同的键值对；这几个指令也要慎重操作，主要就是怕hash中包含的键值对非常多，一下子就返回回来那么多，可能就会造成redis卡顿，也是很严重的一件事，平常自己练习没事，因为键值对也不会有很多，造成卡顿影响也不多，最多只是影响你一个人，但是一旦在公司的生产环境上输入这个指令，就看会造成卡顿，可能会照成很严重的影响，也是一天一个失去年终的小技巧。]]></description><category></category></item><item><title><![CDATA[Redis-String的基本介绍]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/151446191</link><guid>https://blog.youkuaiyun.com/daima2/article/details/151446191</guid><author>daima2</author><pubDate>Thu, 11 Sep 2025 01:15:17 +0800</pubDate><description><![CDATA[我们都知道redis存储的是键值对，键一般都是字符串，但是值就有很多类型了，比如：string，list，hash，set，zset等等，今天我要分享的是string相关的一些语法以及基本使用，最后会介绍string的一些主要的应用场景，以后也会慢慢分享其他的数据类型的用法，本人才疏学浅，想要真正的了解redis相关的知识可以前往redis官方。]]></description><category></category></item><item><title><![CDATA[定时器的实现原理]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/147231278</link><guid>https://blog.youkuaiyun.com/daima2/article/details/147231278</guid><author>daima2</author><pubDate>Tue, 09 Sep 2025 20:51:38 +0800</pubDate><description><![CDATA[我们都知道优先级队列可以根据比较器的不同来实现不同的优先级队列，可以根据时间的先后，值的大小等等顺序来实现不同顺序的优先级，基本可以分为两类，大根堆和小根堆，大根堆就是堆顶的值是最大的，小根堆就是堆顶的指是最小的，不过堆的排序是可以改变，重新排序的方法就可以根据你想要的将队列的元素进行排序，你可以根据字典序，可以根据大小，根据你自己想要的重写方法即可；所箭头所代表的就是当前检查的是那个时间片的链表上的任务，当箭头走到这个位置之后就会去检查上面的任务是否到了过期时间，如果到了就会去执行该任务；]]></description><category></category></item><item><title><![CDATA[Redis单线程模型为什么快？]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/151368629</link><guid>https://blog.youkuaiyun.com/daima2/article/details/151368629</guid><author>daima2</author><pubDate>Tue, 09 Sep 2025 18:55:02 +0800</pubDate><description><![CDATA[其实redis服务器是处理得过来的，虽然每一个客户端都分配一个socket，但是不是每一个客户端都每时每刻跟服务器保持通讯的，有可能连接一分钟，实际通讯只有100ms，那么其他的时刻其他客户端就可以和服务器进行通讯，通过这样的机制就避免了一个socket分配一个线程的开销，一个线程的开销不大，但是多个socket，多个线程开销就很大了；线程竞争的开销是很大的，涉及到锁的创建，锁的竞争，锁的释放等等，单线程模式避免了这样的竞争开销了，所以会更快；1、redis操作的是内存的，而mysql操作的是硬盘。]]></description><category></category></item><item><title><![CDATA[Redis的Key的过期策略]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/147198497</link><guid>https://blog.youkuaiyun.com/daima2/article/details/147198497</guid><author>daima2</author><pubDate>Mon, 14 Apr 2025 19:37:14 +0800</pubDate><description><![CDATA[我们都知道Redis是单线程的，程序内部会一直循环检查当前的任务的是什么，然后去执行，执行完一个任务，再去执行下一个任务，如果其中一个任务的时间消耗太多，就会导致后面的任务全都被影响到了，就像堵车一样，为什么会堵车，就是因为一辆车慢了，导致后面的车也慢了，一辆影响一辆，就导致了堵车，所以定期删除定的时间要明确，检查要快。惰性删除就是说Redis不去主动检查，不去删除，只有等到别人要访问这个数据的时候，会先去检查这个数据是不是过期了，如果是过期了，就删除掉这个数据，然后再响应。]]></description><category></category></item><item><title><![CDATA[Redis几个基本的全局指令]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/147194519</link><guid>https://blog.youkuaiyun.com/daima2/article/details/147194519</guid><author>daima2</author><pubDate>Sun, 13 Apr 2025 19:08:17 +0800</pubDate><description><![CDATA[我们都知道Redis存的内容都是键值对，key是String，value有很多类型，像string（字符串），hash（哈希），list（列表），set（集合）及zset(sorted set：有序集合).....，这些结构是比较常见的，还有其他的类型，可以前往官方网站查看。]]></description><category></category></item><item><title><![CDATA[福运抽抽乐-抽奖项目的测试报告]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/146361484</link><guid>https://blog.youkuaiyun.com/daima2/article/details/146361484</guid><author>daima2</author><pubDate>Wed, 19 Mar 2025 13:49:51 +0800</pubDate><description><![CDATA[测试结果显示所有请求都成功通过，没有失败或错误。平均响应时间为492.48毫秒，用户体验较好（APDEX值较高）。吞吐量和事务数较高，表明系统性能良好。网络数据传输量较大，接收和发送的数据量都较高。总体来看，系统在本次测试中表现良好，没有明显性能瓶颈或错误。]]></description><category></category></item><item><title><![CDATA[云服务器“抢”本地消息队列：一场开发中的乌龙事件]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/146335728</link><guid>https://blog.youkuaiyun.com/daima2/article/details/146335728</guid><author>daima2</author><pubDate>Wed, 19 Mar 2025 00:43:26 +0800</pubDate><description><![CDATA[这次问题虽然最终得到了解决，但也给我带来了深刻的教训。在本地开发时，我们往往只关注本地环境的配置和代码逻辑，很容易忽略云服务器上可能存在的冲突。为了避免类似问题再次发生，我总结了以下几点经验：1. 明确环境差异：在本地开发时，一定要清楚本地环境和云服务器环境之间的差异，尤其是在配置方面。如果两者使用了相同的资源（如消息队列、数据库等），很容易出现冲突。2. 检查运行实例：在本地开发时，最好确认云服务器上的项目实例是否在运行。如果不需要，及时停止它们，避免不必要的干扰。]]></description><category></category></item><item><title><![CDATA[墨香阁-测试报告]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/146284764</link><guid>https://blog.youkuaiyun.com/daima2/article/details/146284764</guid><author>daima2</author><pubDate>Sat, 15 Mar 2025 21:27:59 +0800</pubDate><description><![CDATA[1、墨香阁-操作简单的基于Spring前后端分离的项目，同时使用MySQL数据库来进行数据存储，并对项目进行测试，并完成部署上线，前端由四个页面组成：登录页面，注册页面，文章列表页，文章详情页，文章编辑（添加）页，个人中心，发送私信，文章回复模块等等，通过以上实现一个操作简单，安全可靠的，便于交流，分享的论坛。]]></description><category></category></item><item><title><![CDATA[项目-个人博客测试报告]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/146213001</link><guid>https://blog.youkuaiyun.com/daima2/article/details/146213001</guid><author>daima2</author><pubDate>Fri, 14 Mar 2025 22:34:22 +0800</pubDate><description><![CDATA[1、个人博客系统是一个操作简单的基于Spring前后端分离的项目，同时使用MySQL数据库来进行数据存储，并对项目进行测试，并完成部署上线，前端由四个页面组成：登录页面，博客列表页，博客详情页以及博客编辑（添加）页，通过以上四个页面实现一个简单的个人博客系统，在这个页面你可以记录自己学习的知识，所见所闻等等分享。2、列表页面：成功登录之后，会跳转到列表页，列表每页展示4篇博客，可以对博客列表进行翻页，以查看不同的博客，还可以对博客进行查看全文，对自己的博客可以进行在此编辑或者删除，]]></description><category></category></item><item><title><![CDATA[MySQL_事务的四大特性]]></title><link>https://blog.youkuaiyun.com/daima2/article/details/145753449</link><guid>https://blog.youkuaiyun.com/daima2/article/details/145753449</guid><author>daima2</author><pubDate>Thu, 20 Feb 2025 16:02:21 +0800</pubDate><description><![CDATA[有了上面的两条规则，我们就不能在写的时候进行读，在读的时候进行写，但是如果事务A修改数据之后提交，事务B在读取数据，事务C不对B读取的数据进行修改，而是对对应的表进行增加/删除数据，这就会导致B读的数据集不一样，要先说明的是这里读的数据集原有的是一致的，就是条数多了或者少了，就是幻读问题，可以认为是不可重复读问题的特殊情况。对于幻读问题，数据库的解决方案，就是串行化支持执行事务，也就是一个事务接着一个事务执行，这时候数据库的准确率是最高的，效率是最低的，隔离性是最高的。]]></description><category></category></item></channel></rss>