<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jysf98746的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jysf98746</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jysf98746]]></copyright><item><title><![CDATA[PHP 使用 Redis]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134335792</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134335792</guid><author>jysf98746</author><pubDate>Fri, 10 Nov 2023 16:19:08 +0800</pubDate><description><![CDATA[phpredis 扩展下载地址为: https://github.com/phpredis/phpredis/releases。phpredis 扩展官方地址为 https://github.com/phpredis/phpredis。安装完成后重启 php-fpm 或 apache，查看 phpinfo 信息，就能看到 redis 扩展。PHP 语言访问 Redis 需要先安装 Redis 服务和 PHP Redis 扩展。运行以上 PHP 脚本，输出结果如下。或者输入以下命令来检查。]]></description><category></category></item><item><title><![CDATA[Java 使用 Redis]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134335626</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134335626</guid><author>jysf98746</author><pubDate>Fri, 10 Nov 2023 16:13:34 +0800</pubDate><description><![CDATA[JAVA 语言访问 Redis 需要先安装 Redis 服务和 jedis 包。如果你还未安装 JAVA，可以移步我们的 JAVA 开发环境配置。然后通过以下地址下载 jedis 包： jedis 2.9.0。Java 存储/获取 Redis 字符串( String )JAVA 访问 Redis 列表( List )编译运行以上 JAVA 范例，输出结果如下。编译运行以上 JAVA 范例，输出结果如下。编译运行以上 JAVA 范例，输出结果如下。编译运行以上 JAVA 范例，输出结果如下。]]></description><category></category></item><item><title><![CDATA[Redis 命令 （五）服务器]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134335433</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134335433</guid><author>jysf98746</author><pubDate>Fri, 10 Nov 2023 16:09:20 +0800</pubDate><description><![CDATA[下面的范例演示客户端如何通过密码验证连接到 Redis 服务，并检测服务是否在运行。Redis 服务器命令主要是用于管理 redis 服务。以下范例演示了如何获取 redis 服务器的统计信息。下表列出了用于 Redis 连接相关的命令。下表列出了管理 redis 服务相关的命令。]]></description><category></category></item><item><title><![CDATA[Redis 命令 （四）]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134334881</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134334881</guid><author>jysf98746</author><pubDate>Fri, 10 Nov 2023 16:00:36 +0800</pubDate><description><![CDATA[下图展示了频道 channel1，以及订阅这个频道的三个客户端 : client2 、 client5 和 client1 之间的关系。它先以 MULTI 开始一个事务， 然后将多个命令入队到事务中， 最后由 EXEC 命令触发事务， 一并执行事务中的所有命令。当有新消息通过 PUBLISH 命令发送给频道 channel1 时， 这个消息就会被发送给订阅它的三个客户端。下表列出了 redis 发布订阅相关的命令。下表列出了 Redis 事务的相关命令。下面的范例演示了发布订阅是如何工作的。]]></description><category></category></item><item><title><![CDATA[Redis 命令 （三）]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134212293</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134212293</guid><author>jysf98746</author><pubDate>Fri, 03 Nov 2023 23:11:49 +0800</pubDate><description><![CDATA[假如我们有一个数据集 {1, 3, 5, 7, 5, 7, 8}那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数 (不重复元素个数) 为5基数估计 就是在误差可接受的范围内，快速计算基数。]]></description><category></category></item><item><title><![CDATA[Redis 命令 （二）]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134097099</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134097099</guid><author>jysf98746</author><pubDate>Sat, 28 Oct 2023 22:08:38 +0800</pubDate><description><![CDATA[上面的范例，我们使用 LPUSH 命令将三个值插入了名为 language 的列表当中。Redis 字符串数据类型的相关命令用于管理 Redis 字符串值。更多命令请参考：https://redis.io/commands。更多命令请参考：https://redis.io/commands。Redis List(列表) 是简单的字符串列表，按照插入顺序排序。可以添加一个元素到 Redis 列表的头部（左边）或者尾部（右边）Redis 哈希(Hash) 命令。Redis hash 命令。]]></description><category></category></item><item><title><![CDATA[Redis 命令（一）]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134096984</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134096984</guid><author>jysf98746</author><pubDate>Sat, 28 Oct 2023 22:00:45 +0800</pubDate><description><![CDATA[下面的范例演示了如何连接到主机为 192.168.1.100，端口为 6379 ，密码为 123456 的 Redis 服务上。如果键被删除成功，命令执行后输出 (integer) 1 ，否则将输出 (integer) 0。我们使用 Redis 服务自带的 redis-cli 客户端来发送命令。下面的范例演示了如何启动 redis 客户端，并发送 ping 命令。最新版的 redis-cli 会有命令提示功能，方便学些。Redis 键相关的命令用于管理 redis 的键。]]></description><category></category></item><item><title><![CDATA[三、Redis 数据类型]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134071637</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134071637</guid><author>jysf98746</author><pubDate>Fri, 27 Oct 2023 11:04:52 +0800</pubDate><description><![CDATA[Redis 比 Memcached 更优秀的地方之一就是支持更丰富的数据类型。]]></description><category></category></item><item><title><![CDATA[一分钟理解负载LoadAverage]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134047823</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134047823</guid><author>jysf98746</author><pubDate>Thu, 26 Oct 2023 08:58:35 +0800</pubDate><description><![CDATA[系统负载（System Load）是系统CPU繁忙程度的度量，即有多少进程在等待被CPU调度（进程等待队列的长度）。平均负载（Load Average）是一段时间内系统的平均负载，这个一段时间一般取1分钟、5分钟、15分钟。[Load1，单核][Load2，双核]希望上面的图对大家理解Load Average有帮助，赶快uptime一下，看一下自己系统的负载吧。]]></description><category></category></item><item><title><![CDATA[1分钟了解Leader-Follower线程模型]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134047745</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134047745</guid><author>jysf98746</author><pubDate>Thu, 26 Oct 2023 08:54:50 +0800</pubDate><description><![CDATA[（2）假设共N个线程，其中只有1个leading线程（等待任务），x个processing线程（处理），余下有N-1-x个following线程（空闲）此观点不对，一个消息队列，其仍是临界资源，仍需要一把锁来保证互斥，只是锁竞争从leading移到了消息队列上，此时消息队列仅仅只能起到消息缓冲的作用。（4）事件/任务来到时，leading线程会对其进行处理，从而转化为processing状态，处理完成之后，又转变为following。（6）following不干事，就是抢锁，力图成为leading。]]></description><category></category></item><item><title><![CDATA[二十二、锁支持工具 LockSupport]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134047700</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134047700</guid><author>jysf98746</author><pubDate>Thu, 26 Oct 2023 08:47:47 +0800</pubDate><description><![CDATA[本节带领大家认识第三个常用的 Java 并发锁工具之。本节先介绍工具类的用途，然后介绍关键的编程方法，最后通过一个编程例子为大家展示工具类的用法。下面我们正式开始介绍吧。]]></description><category></category></item><item><title><![CDATA[二十一、读写锁 StampedLock]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134047651</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134047651</guid><author>jysf98746</author><pubDate>Thu, 26 Oct 2023 08:45:33 +0800</pubDate><description><![CDATA[本节带领大家认识第二个常用的 Java 并发锁工具之。本节先简单介绍的基本概念，然后介绍关键的编程方法，最后通过一个编程例子为大家展示工具类的用法。]]></description><category></category></item><item><title><![CDATA[二十、可重入读写锁 ReentrantReadWrite]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134047571</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134047571</guid><author>jysf98746</author><pubDate>Thu, 26 Oct 2023 08:40:52 +0800</pubDate><description><![CDATA[从本节开始，我们学习新一章内容 —— 并发锁。在 “Java 并发原理教程” 中，介绍了锁相关概念和原理知识，本章各小节内容不再过多解释概念，重点为大家介绍具体锁工具的 API 和使用方法。本节带领大家认识第一个常用的 Java 并发锁工具之。本节先简单介绍的基本概念，然后介绍关键的编程方法，最后通过一个编程例子为大家展示工具类的用法。下面我们正式开始介绍吧。]]></description><category></category></item><item><title><![CDATA[这才是真正的分布式锁]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134044643</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134044643</guid><author>jysf98746</author><pubDate>Wed, 25 Oct 2023 22:06:14 +0800</pubDate><description><![CDATA[Chubby系统提供粗粒度的分布式锁服务，Chubby的使用者不需要关注复杂的同步协议，而是通过已经封装好的客户端直接调用Chubby的锁服务，就可以保证数据操作的一致性。Chubby具有广泛的应用场景，例如：（1）GFS选主服务器；（2）BigTable中的表锁；]]></description><category></category></item><item><title><![CDATA[一分钟实现分布式锁]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134044550</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134044550</guid><author>jysf98746</author><pubDate>Wed, 25 Oct 2023 21:55:56 +0800</pubDate><description><![CDATA[分布式环境下，多台机器上多个进程对一个数据进行操作，如果不做互斥，就有可能出现“余额扣成负数”，或者“商品超卖”的情况，如何实现简易分布式锁，对分布式环境下的临界资源做互斥，是今天将要讨论的话题。原理：多个访问方对同一个资源进行操作，需要进行互斥，通常是利用一个这些访问方同时能够访问到的lock来实施互斥的。（2）只有一个进程会抢到这个锁，即只有一个进程对缓存set key=123能够成功，不成功的进程下次再来抢。（1）多台机器上多个进程对这个锁进行争抢，例如在缓存上同时进行set key=123操作。]]></description><category></category></item><item><title><![CDATA[从IDC到云端架构迁移之路]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/134044222</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/134044222</guid><author>jysf98746</author><pubDate>Wed, 25 Oct 2023 21:50:52 +0800</pubDate><description><![CDATA[通常有两种方案，一种是自顶向下的迁移，一种是自底向上的迁移，这两种方案在58到家和58同城分别实行过，都是可行的，方案有类似的地方，也有很多细节不一样，因为时间关系展开说一种，在58到家实施过的“自顶向下”的机房迁移方案，整个过程是平滑的，逐步迁移的，可回滚的，对业务无影响的。充分的测试完一个业务的站点层和服务层之后，为了求稳，先切1%的流量到新机房，观察新机房的站点与服务有没有异常，没有问题的话，再5%，10%，20%，50%，100%的逐步放量，直至第一波蚂蚁搬完家。多机房架构是什么样的架构呢？]]></description><category></category></item><item><title><![CDATA[二、Redis 配置]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/133984484</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/133984484</guid><author>jysf98746</author><pubDate>Mon, 23 Oct 2023 11:03:03 +0800</pubDate><description><![CDATA[Redis swap 文件分成了很多的 page，一个对象可以保存在多个 page 上面，但一个 page 上不能被多个对象共享，VM 机制将数据分页存放，由 Redis 将访问量较少的页即冷数据 swap 到磁盘上，访问多的页面由磁盘自动换出到内存中。Redis 在启动时会把数据加载到内存中，达到最大内存后，Redis 会先尝试清除已到期或即将到期的 Key。Redis 在默认情况下是异步的把数据写入磁盘，如果不开启，可能会在断电时导致一段时间内的数据丢失。]]></description><category></category></item><item><title><![CDATA[一、Redis 基础教程]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/133984154</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/133984154</guid><author>jysf98746</author><pubDate>Mon, 23 Oct 2023 10:46:09 +0800</pubDate><description><![CDATA[Redis 支持数据的持久化，可以将内存中的数据保存在磁盘中，重启的时候可以再次加载进行使用Redis 不仅支持 key-value 类型的数据，还提供list，set，zset，hash等数据结构的存储Redis 支持数据的备份，即 master-slave 模式的数据备份。]]></description><category></category></item><item><title><![CDATA[十九、ForkJoin 应用示例]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/133984002</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/133984002</guid><author>jysf98746</author><pubDate>Mon, 23 Oct 2023 10:33:21 +0800</pubDate><description><![CDATA[首先做了 (0,3)~(3,6)，之后对 (0,3) 做了 (0,1), (1,3) 的拆分，对 (3,6) 做了 (3,4), (4,6)其底层使用多线程的方式处理任务，涉及到线程上下文的切换，当数据量不大的时候使用串行会比使用多线程快。上面代码注释已经很清楚了，我们观察下面的代码，看看任务是怎么切分的，以及子任务的结果是怎么做汇总的。当待处理的数据集的每一部分的数据处理逻辑基本一致，且可以很好拆分成小的数据集进行处理时，使用。本节先描述待实现的案例内容，接着做编码实现，然后总结使用过程中的注意事项。]]></description><category></category></item><item><title><![CDATA[十八、ForkJoin 并发框架介绍]]></title><link>https://blog.youkuaiyun.com/jysf98746/article/details/133983491</link><guid>https://blog.youkuaiyun.com/jysf98746/article/details/133983491</guid><author>jysf98746</author><pubDate>Mon, 23 Oct 2023 10:30:59 +0800</pubDate><description><![CDATA[框架的基本思想是将一个大任务拆分成多个处理逻辑相同的子任务，最后将这些子任务的结果再汇总起来，从而得到大任务的结果。即在任务处理时，先进行任务切分，然后进行切分后的各子任务的计算，最后做结果合并。一般我们只需要根据实际情况，选择继承上面的两个子类之一，然后实现自己的逻辑就可以了。并发框架实现一个综合例子，让大家从整体概念、接口实现、应用有一个较全面的了解。并发框架的整个体系结构，接着介绍各部分中的核心接口和实现类，下一节中使用。整体结构已经了解了，接着我们继续了解各部分的核心接口和实现类。]]></description><category></category></item></channel></rss>