<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>排障手册</title><link>https://tyye.cn/</link><description>电脑死机 · 系统优化 · 网络故障 · 软件问题 · 硬件检测</description><item><title>行代码-监禁您的编程后劲-把握这些正则表白式-少写1000 (监狱代码几位数)</title><link>https://tyye.cn/post_1714412075nv9.html</link><description>&lt;h3&gt;
 校验明码强度
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;^(?=.*[a-z])(?=.*[A-Z])(?=.*d)[a-zA-Zd]{8,16}$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 这个正则表白式的含意是：
&lt;/p&gt;
&lt;p&gt;
 经常使用这个正则表白式可以校验明码能否合乎必定的强度要求。
&lt;/p&gt;
&lt;h3&gt;
 校验中文
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;^[u4e00-u9fa5]+$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 这个正则表白式可以婚配一个或多个中文字符。
&lt;/p&gt;
&lt;h3&gt;
 由数字、英文字母、下划线组成的字符串
&lt;/h3&gt;
&lt;p&gt;
 示意婚配恣意数字、英文字母、下划线。示意婚配前面的字符一次性或屡次。示意婚配字符串的扫尾，示意婚配字符串的开头。因此，这个正则表白式可以用来校验由数字、英文字母、下划线组成的字符串。
&lt;/p&gt;
&lt;h3&gt;
 校验邮箱地址
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;^[w.-]+@[a-zA-Zd.-]+.[a-zA-Z]{2,}$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 这个正则表白式的含意是：
&lt;/p&gt;
&lt;p&gt;
 这个正则表白式可以校验大局部经常出现的邮箱地址格局，但并不能保障必定能婚配一切非法的邮箱地址。
&lt;/p&gt;
&lt;img alt=&quot;少写1000&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430013435171441207512882.jpeg&quot;/&gt;
&lt;h3&gt;
 校验身份证号
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;/^(d{6})(19|20)?(d{2})(0[1-9]|1[0-2])(0[1-9]|[12]d|3[01])(d{3})(d|X)?$/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 ^示意婚配字符串的开局，$示意婚配字符串的完结。括号用于分组，d示意婚配数字，?示意前面的字符可选，|示意或的相关，[...]示意婚配括号内的恣意一个字符，{n}示意婚配前面的字符n次，{m,n}示意婚配前面的字符至少m次，至少n次。
&lt;/p&gt;
&lt;p&gt;
 这个正则表白式可以婚配18位和15位身份证号，其中18位身份证号的前17位为数字，最后一位可以是数字或许X，15位身份证号的前15位为数字。
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;^(?:(?:31(/|-|.)(?:0?[13578]|1[02]))1|(?:(?:29|30)(/|-|.)(?:0?[13-9]|1[0-2])2))(?:(?:1[6-9]|[2-9]d)?d{2})$|^(?:29(/|-|.)(?:0?2)3(?:(?:(?:1[6-9]|[2-9]d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1d|2[0-8])(/|-|.)(?:(?:0?[1-9])|(?:1[0-2]))4(?:(?:1[6-9]|[2-9]d)?d{2})$&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;^d{4}-d{2}-d{2}$&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;
 校验金额
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;^d{1,3}(,d{3})*(.d{2})?$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 这个正则表白式可以婚配以下金额格局：
&lt;/p&gt;
&lt;p&gt;
 其中：
&lt;/p&gt;
&lt;p&gt;
 这个正则表白式可以满足大局部金额的校验需求。
&lt;/p&gt;
&lt;h3&gt;
 校验手机号
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;^1[3-9]d{9}$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 这个正则表白式可以婚配以1扫尾的11位数字，其中第二位数字为3-9之间的恣意数字。
&lt;/p&gt;
&lt;h3&gt;
 审核IE版本
&lt;/h3&gt;
&lt;p&gt;
 这个正则表白式可以婚配以&quot;MSIE&quot;扫尾，前面跟着一个或多个数字的字符串，这个数字就是IE的版本号。
&lt;/p&gt;
&lt;h3&gt;
 校验IP地址
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 这个正则表白式可以婚配非法的IP地址，其中每个段的取值范畴是0到255。
&lt;/p&gt;
&lt;h3&gt;
 校验URL
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;^(https?|ftp)://[^s/$.?#].[^s]*$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 这个正则表白式可以婚配以http、https或ftp扫尾的URL，例如：。
&lt;/p&gt;
&lt;h3&gt;
 校验文件门路及裁减名
&lt;/h3&gt;
&lt;p&gt;
 文件门路的正则表白式：
&lt;/p&gt;
&lt;p&gt;
 解释：
&lt;/p&gt;
&lt;p&gt;
 裁减名的正则表白式：
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.[a-zA-Z0-9]+$&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 解释：
&lt;/p&gt;
&lt;p&gt;
 将两个正则表白式联合起来，可以校验文件门路及裁减名：
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;^(/[^/ ]+)+.[a-zA-Z0-9]+$&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;
 提取Hex色彩值
&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
 这个正则表白式可以婚配带有前缀的6位或3位16进制色彩代码。
&lt;/p&gt;
&lt;h3&gt;
 婚配标签
&lt;/h3&gt;
&lt;p&gt;
 这个正则表白式可以婚配相似、、等HTML标签。
&lt;/p&gt;
&lt;p&gt;
 在线工具：
&lt;/p&gt;
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 怎么写正则表达式效率才能最高？
&lt;/h2&gt;
&lt;p&gt;
 1.不用正则。
  
  例如想要验证非负数之类的。
  
  直接parse一下然后判断不就行了。
  
  干嘛非写正则啊。
  
  2.少用lazy。
  
  懒惰式的.+?这种的计算代价比贪婪式的.+高。
  
  如果知道具体的限制大小,用{x,y}效率会更高。
  
  3.如果知道具体范围。
  
  尽量自己书写范围,避免用.。
  
  以上只是个人经验。
  
  另外刚刚所谓的效率高说的是执行效率方面。
  
  从开发效率高的角度上来说，个人认为可读性好的易于分割调试的效率高。
  
  毕竟，正则的可读性和调试性是备受诟病的。
&lt;/p&gt;
&lt;h2&gt;
 男生怎么向女生告白？
&lt;/h2&gt;
&lt;p&gt;
 1，我个人认为，当面表白最有杀伤力~~因为也许心底善良的她不忍心拒绝你哦~~~
 &lt;br _extended=&quot;true&quot;/&gt;
 &lt;br _extended=&quot;true&quot;/&gt;
 2，如果要表白，就不要做“如果被拒绝了该怎么办”的打算，喜欢她就一定要追到手，这次失败了还有下次呢！但是她肯定不会直接同意你哦~~她很可能说“让我考虑考虑”，或者“给我点时间”，这时候不必担心她是不是在婉转拒绝你，爱一个人就要大胆一点，怕拒绝怎么行？你要相信自己可以做到，有自信的男生才受欢迎，不过不要自恋。
  
  。
  
  。
  
  等你当面给她表白后，晚上睡觉前给她发条短信说晚安，然后告诉她你以后每天晚上都会说晚安给她，她要是问为什么，你回答因为“晚安”和“我爱你” 的发音很像，然后再问她考虑的怎么样了，告诉她不用着急回答，可以先处处，感觉感觉。
 &lt;br _extended=&quot;true&quot;/&gt;
 &lt;br _extended=&quot;true&quot;/&gt;
 3，必须要双方都有所了解的时候表白，大多女生不会接受一个自己不太了解的男生，你可以先试着和她做朋友，其实就是暗恋她~平时暗示暗示她，对她也关心多一点，不用搞什么浪漫，那是好了后要做的，就在日常上面，越是细节越是容易打动女孩~~~礼拜天可以约她出来吃点小吃哇~逛逛啊~所以你必须要知道一些她不知道的有趣的地方~然后短信呢，别发老多转发的，也别一天发好多短信给她，比如哪天你发现夕阳很漂亮，发短信让她看，哪天要下雨了，发短信让她注意加衣等等~~反正一天不宜发太多，除非她和你聊天~~也别天天发（刚刚认识的时候），循序渐进~~
 &lt;br _extended=&quot;true&quot;/&gt;
 &lt;br _extended=&quot;true&quot;/&gt;
 给她一点特别对待，比如每个星期天你们都到一个固定的地方玩，最好是河边哦~~如果有河的话，就是说风景比较好的~但是不能太单调，去玩的时候你要准备好惊喜~~比如~给她带个小玩具等等~~
 &lt;br _extended=&quot;true&quot;/&gt;
 &lt;br _extended=&quot;true&quot;/&gt;
 还有个方法~~邀请她和你一起玩拼图啊~~嘿嘿~~弄个1000片的玩~~
 &lt;br _extended=&quot;true&quot;/&gt;
 &lt;br _extended=&quot;true&quot;/&gt;
 方法好多了~~总之就是 细心照顾，悉心体贴，给她开心三心级~~
 &lt;br _extended=&quot;true&quot;/&gt;
 &lt;br _extended=&quot;true&quot;/&gt;
 加油~~~等你的好消息~~
&lt;/p&gt;
</description><pubDate>Wed, 15 May 2024 12:50:08 +0800</pubDate></item><item><title>四种主要类型的对比分析-消息队列选型指南 (四种主要类型信用证)</title><link>https://tyye.cn/post_1714411982t3d.html</link><description>&lt;h2&gt;
 消息队列基础
&lt;/h2&gt;
&lt;h3&gt;
 1.1 什么是消息队列？
&lt;/h3&gt;
&lt;p&gt;
 消息队列是在消息传输过程中存储消息的容器，用于接收消息并以文件的方式存储，一个消息队列可以被一个或多个消费者消费，包含以下 3 个元素：
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
  生产者：生成并发送消息
 &lt;/li&gt;
 &lt;li&gt;
  消息队列：存储消息
 &lt;/li&gt;
 &lt;li&gt;
  消费者：消费消息
 &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
 1.2 消息队列模式
&lt;/h3&gt;
&lt;h3&gt;
 1.3 消息队列应用场景
&lt;/h3&gt;
&lt;p&gt;
 消息队列广泛应用于以下场景：
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
  解耦系统组件
 &lt;/li&gt;
 &lt;li&gt;
  异步处理任务
 &lt;/li&gt;
 &lt;li&gt;
  缓存消息
 &lt;/li&gt;
 &lt;li&gt;
  消息发布订阅
 &lt;/li&gt;
 &lt;li&gt;
  流数据处理
 &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
 常用消息队列
&lt;/h2&gt;
&lt;p&gt;
 由于 ActiveMQ 5.x 的官方社区维护越来越少，较少在大规模吞吐场景中使用，因此我们主要讲解 Kafka、RabbitMQ 和 RocketMQ。
&lt;/p&gt;
&lt;h3&gt;
 2.1 Kafka
&lt;/h3&gt;
&lt;h4&gt;
 重要概念
&lt;/h4&gt;
&lt;h4&gt;
 Kafka 工作原理
&lt;/h4&gt;
&lt;h3&gt;
 2.2 RocketMQ
&lt;/h3&gt;
&lt;h4&gt;
 重要概念
&lt;/h4&gt;
&lt;h4&gt;
 RocketMQ 架构
&lt;/h4&gt;
&lt;h3&gt;
 2.3 RabbitMQ
&lt;/h3&gt;
&lt;h4&gt;
 重要概念
&lt;/h4&gt;
&lt;h4&gt;
 RabbitMQ 工作原理
&lt;/h4&gt;
&lt;h2&gt;
 异同对比
&lt;/h2&gt;
&lt;table border=&quot;1&quot;&gt;
 &lt;thead&gt;
  &lt;tr&gt;
   &lt;th&gt;
    特征
   &lt;/th&gt;
   &lt;th&gt;
    Kafka
   &lt;/th&gt;
   &lt;th&gt;
    RocketMQ
   &lt;/th&gt;
   &lt;th&gt;
    RabbitMQ
   &lt;/th&gt;
  &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;td&gt;
    模式
   &lt;/td&gt;
   &lt;td&gt;
    发布订阅
   &lt;/td&gt;
   &lt;td&gt;
    发布订阅
   &lt;/td&gt;
   &lt;td&gt;
    消息代理
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    可靠性
   &lt;/td&gt;
   &lt;td&gt;
    高可靠（副本机制）
   &lt;/td&gt;
   &lt;td&gt;
    高可靠（CommitLog 和消息索引）
   &lt;/td&gt;
   &lt;td&gt;
    比较可靠（事务机制）
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    吞吐量
   &lt;/td&gt;
   &lt;td&gt;
    高吞吐量（单机百万级消息/秒）
   &lt;/td&gt;
   &lt;td&gt;
    高吞吐量（单机百万级消息/秒）
   &lt;/td&gt;
   &lt;td&gt;
    中等吞吐量
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    延迟
   &lt;/td&gt;
   &lt;td&gt;
    低延迟（毫秒级）
   &lt;/td&gt;
   &lt;td&gt;
    低延迟（毫秒级）
   &lt;/td&gt;
   &lt;td&gt;
    中等延迟
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    可扩展性
   &lt;/td&gt;
   &lt;td&gt;
    高可扩展性（水平扩展）
   &lt;/td&gt;
   &lt;td&gt;
    高可扩展性（水平扩展）
   &lt;/td&gt;
   &lt;td&gt;
    中等可扩展性
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    高可用性
   &lt;/td&gt;
   &lt;td&gt;
    高可用性（故障转移）
   &lt;/td&gt;
   &lt;td&gt;
    高可用性（故障转移）
   &lt;/td&gt;
   &lt;td&gt;
    比较高可用性（集群模式）
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    生态系统
   &lt;/td&gt;
   &lt;td&gt;
    完善的生态系统（Kafak Connect、Kafka Streams）
   &lt;/td&gt;
   &lt;td&gt;
    完善的生态系统（RocketMQ Console、RocketMQ Dashboard）
   &lt;/td&gt;
   &lt;td&gt;
    完善的生态系统（RabbitMQ Management Plugin、Spring AMQP）
   &lt;/td&gt;
  &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;
 技术选型
&lt;/h2&gt;
&lt;table border=&quot;1&quot;&gt;
 &lt;thead&gt;
  &lt;tr&gt;
   &lt;th&gt;
    场景
   &lt;/th&gt;
   &lt;th&gt;
    推荐消息队列
   &lt;/th&gt;
  &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;td&gt;
    大数据流处理
   &lt;/td&gt;
   &lt;td&gt;
    Kafka
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    金融交易消息
   &lt;/td&gt;
   &lt;td&gt;
    RocketMQ
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;img alt=&quot;四种主要类型信用证&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430013302171441198295533.jpeg&quot;/&gt;
   &lt;td&gt;
    系统集成
   &lt;/td&gt;
   &lt;td&gt;
    RabbitMQ
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    低延迟场景
   &lt;/td&gt;
   &lt;td&gt;
    Kafka、RocketMQ
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    高并发场景
   &lt;/td&gt;
   &lt;td&gt;
    Kafka、RocketMQ
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    高可靠性场景
   &lt;/td&gt;
   &lt;td&gt;
    Kafka、RocketMQ
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
    分布式场景
   &lt;/td&gt;
   &lt;td&gt;
    Kafka、RocketMQ
   &lt;/td&gt;
  &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;
 总结
&lt;/h2&gt;
&lt;p&gt;
 Kafka、RocketMQ 和 RabbitMQ 都是优秀的开源消息队列，各有其优缺点。在实际应用中，需要根据具体场景和需求选择合适的队列。
&lt;/p&gt;
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 Android 中的“子线程”解析
&lt;/h2&gt;
&lt;p&gt;
 Android 中线程可分为 主线程 和 子线程 两类，其中主线程也就是 UI线程 ，它的主要这作用就是运行四大组件、处理界面交互。
  
  子线程则主要是处理耗时任务，也是我们要重点分析的。
  
  首先 Java 中的各种线程在 Android 里是通用的，Android 特有的线程形态也是基于 Java 的实现的，所以有必要先简单的了解下 Java 中的线程，本文主要包括以下内容： 在 Java 中要创建子线程可以直接继承 Thread 类，重写 run() 方法： 或者实现 Runnable 接口，然后用Thread执行Runnable，这种方式比较常用： 简单的总结下：Callable 和 Runnable 类似，都可以用来处理具体的耗时任务逻辑的，但是但具体的差别在哪里呢？看一个小例子： 定义 MyCallable 实现了Callable 接口，和之前 Runnable 的 run() 方法对比下， call() 方法是有返回值的哦，泛型就是返回值的类型： 一般会通过线程池来执行 Callable （线程池相关内容后边会讲到），执行结果就是一个 Future 对象： 可以看到，通过线程池执行 MyCallable 对象返回了一个Future对象，取出执行结果。
  
  Future 是一个接口，从其内部的方法可以看出它提供了取消任务（有坑！！！）、判断任务是否完成、获取任务结果的功能：Future 接口有一个 FutureTask 实现类，同时 FutureTask 也实现了 Runnable 接口，并提供了两个构造函数： 用 FutureTask 一个参数的构造函数来改造下上边的例子：FutureTask 内部有一个 done() 方法，代表 Callable 中的任务已经结束，可以用来获取执行结果： 所以 Future+Callable 的组合可以更方便的获取子线程任务的执行结果，更好的控制任务的执行，主要的用法先说这么多了，其实 AsyncTask 内部也是类似的实现！ 注意， Future 并不能取消掉运行中的任务，这点在后边的 AsyncTask 解析中有提到。
  
  Java 中线程池的具体的实现类是 ThreadPoolExecutor ，继承了 Executor 接口，这些线程池在 Android 中也是通用的。
  
  使用线程池的好处： 常用的构造函数如下： 一个常规线程池可以按照如下方式来实现： 执行任务： 基于 ThreadPoolExecutor ，系统扩展了几类具有新特性的线程池： 线程池可以通过 execute() 、 submit() 方法开始执行任务，主要差别从方法的声明就可以看出，由于 submit() 有返回值，可以方便得到任务的执行结果： 要关闭线程池可以使用如下方法： IntentService 是 Android 中一种特殊的 Service，可用于执行后台耗时任务，任务结束时会自动停止，由于属于系统的四大组件之一，相比一般线程具有较高的优先级，不容易被杀死。
  
  用法和普通 Service 基本一致，只需要在 onHandleIntent() 中处理耗时任务即可： 至于 HandlerThread，它是 IntentService 内部实现的重要部分，细节内容会在 IntentService 源码中说到。
  
  IntentService 首次创建被启动的时候其生命周期方法 onCreate() 会先被调用，所以我们从这个方法开始分析： 这里出现了 HandlerThread 和 ServiceHandler 两个类，先搞明白它们的作用，以便后续的分析。
  
  首先看 HandlerThread 的核心实现： 首先它继承了 Thread 类，可以当做子线程来使用，并在run() 方法中创建了一个消息循环系统、开启消息循环。
  
  ServiceHandler 是 IntentService 的内部类，继承了 Handler，具体内容后续分析： 现在回过头来看onCreate() 方法主要是一些初始化的操作， 首先创建了一个thread对象，并启动线程，然后用其内部的 Looper 对象 创建一个mServiceHandler对象，将子线程的 Looper 和 ServiceHandler 建立了绑定关系，这样就可以使用 mServiceHandler 将消息发送到子线程去处理了。
  
  生命周期方法onStartCommand() 方法会在 IntentService 每次被启动时调用，一般会这里处理启动 IntentService 传递 Intent 解析携带的数据： 又调用了 start() 方法： 就是用 mServiceHandler 发送了一条包含 startId 和 intent 的消息，消息的发送还是在主线程进行的，接下来消息的接收、处理就是在子线程进行的： 当接收到消息时，通过 onHandleIntent() 方法在子线程处理 intent 对象， onHandleIntent() 方法执行结束后，通过 stopSelf(1) 等待所有消息处理完毕后终止服务。
  
  为什么消息的处理是在子线程呢？这里涉及到 Handler 的内部消息机制，简单的说，因为 ServiceHandler 使用的 Looper 对象就是在 HandlerThread 这个子线程类里创建的，并通过 () 开启消息循环，不断从消息队列（单链表）中取出消息，并执行，截取 loop() 的部分源码：dispatchMessage() 方法间接会调用 handleMessage() 方法，所以最终 onHandleIntent() 就在子线程中划线执行了，即 HandlerThread 的 run() 方法。
  
  这就是 IntentService 实现的核心，通过 HandlerThread+Hanlder 把启动 IntentService 的 Intent 从主线程切换到子线程，实现让 Service 可以处理耗时任务的功能！ AsyncTask 是 Android 中轻量级的异步任务抽象类，它的内部主要由线程池以及 Handler 实现，在线程池中执行耗时任务并把结果通过 Handler 机制中转到主线程以实现UI操作。
  
  典型的用法如下： 从 Android3.0 开始，AsyncTask 默认是串行执行的： 如果需要并行执行可以这么做： AsyncTask 的源码不多，还是比较容易理解的。
  
  根据上边的用法，可以从 execute() 方法开始我们的分析： 看到 @MainThread 注解了吗？所以 execute() 方法需要在主线程执行哦！ 进而又调用了 executeOnExecutor() ： 可以看到，当任务正在执行或者已经完成，如果又被执行会抛出异常！回调方法 onPreExecute() 最先被执行了。
  
  传入的 sDefaultExecutor 参数，是一个自定义的串行线程池对象，所有任务在该线程池中排队执行： 可以看到 SerialExecutor 线程池仅用于任务的排队， THREAD_POOL_EXECUTOR 线程池才是用于执行真正的任务，就是我们线程池部分讲到的 ThreadPoolExecutor ： 再回到 executeOnExecutor() 方法中，那么 (mFuture) 就是触发线程池开始执行任务的操作了。
  
  那 executeOnExecutor() 方法中的 mWorker 是什么？ mFuture 是什么？答案在 AsyncTask 的构造函数中： 原来 mWorker 是一个 Callable 对象， mFuture 是一个 FutureTask 对象，继承了 Runnable 接口。
  
  所以 mWorker 的 call() 方法会在 mFuture 的 run() 方法中执行，所以 mWorker 的 call() 方法在线程池得到执行！ 同时 doInBackground() 方法就在 call() 中方法，所以我们自定义的耗时任务逻辑得到执行，不就是我们第二部分讲的那一套吗！doInBackground() 的返回值会传递给 postResult() 方法： 就是通过 Handler 将最终的耗时任务结果从子线程发送到主线程，具体的过程是这样的， getHandler() 得到的就是 AsyncTask 构造函数中初始化的 mHandler ， mHander 又是通过 getMainHandler() 赋值的： 可以在看到 sHandler 是一个 InternalHandler 类对象： 所以 getHandler() 就是在得到在主线程创建的 InternalHandler 对象，所以 就可以完成耗时任务结果从子线程到主线程的切换，进而可以进行相关UI操作了。
  
  当消息是 MESSAGE_POST_RESULT 时，代表任务执行完成， finish() 方法被调用： 如果任务没有被取消的话执行 onPostExecute() ，否则执行 onCancelled() 。
  
  如果消息是 MESSAGE_POST_PROGRESS ， onProgressUpdate() 方法被执行，根据之前的用法可以 onProgressUpdate() 的执行需要我们手动调用 publishProgress() 方法，就是通过 Handler 来发送进度数据： 进行中的任务如何取消呢？AsyncTask 提供了一个 cancel(boolean mayInterruptIfRunning) ，参数代表是否中断正在执行的线程任务，但是呢并不靠谱， cancel() 的方法注释中有这么一段： 大致意思就是调用 cancel() 方法后， onCancelled(Object) 回调方法会在 doInBackground() 之后被执行而 onPostExecute() 将不会被执行，同时你应该 doInBackground() 回调方法中通过 isCancelled() 来检查任务是否已取消，进而去终止任务的执行！ 所以只能自己动手了： AsyncTask 整体的实现流程就这些了，源码是最好的老师，自己跟着源码走一遍有些问题可能就豁然开朗了！
&lt;/p&gt;
&lt;h2&gt;
 大数据如何入门
&lt;/h2&gt;
&lt;p&gt;
 首先我们要了解Java语言和Linux操作系统，这两个是学习大数据的基础，学习的顺序不分前后。
&lt;/p&gt;
&lt;p&gt;
 大数据
&lt;/p&gt;
&lt;p&gt;
 Java ：只要了解一些基础即可，做大数据不需要很深的Java 技术，学java SE 就相当于有学习大数据基础。
&lt;/p&gt;
&lt;p&gt;
 Linux：因为大数据相关软件都是在Linux上运行的，所以Linux要学习的扎实一些，学好Linux对你快速掌握大数据相关技术会有很大的帮助，能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置，能少踩很多坑，学会shell就能看懂脚本这样能更容易理解和配置大数据集群。还能让你对以后新出的大数据技术学习起来更快。
&lt;/p&gt;
&lt;p&gt;
 Hadoop：这是现在流行的大数据处理平台几乎已经成为大数据的代名词，所以这个是必学的。Hadoop里面包括几个组件HDFS、MapReduce和YARN，HDFS是存储数据的地方就像我们电脑的硬盘一样文件都存储在这个上面，MapReduce是对数据进行处理计算的，它有个特点就是不管多大的数据只要给它时间它就能把数据跑完，但是时间可能不是很快所以它叫数据的批处理。
&lt;/p&gt;
&lt;p&gt;
 Zookeeper：这是个万金油，安装Hadoop的HA的时候就会用到它，以后的Hbase也会用到它。它一般用来存放一些相互协作的信息，这些信息比较小一般不会超过1M，都是使用它的软件对它有依赖，对于我们个人来讲只需要把它安装正确，让它正常的run起来就可以了。
&lt;/p&gt;
&lt;p&gt;
 Mysql：我们学习完大数据的处理了，接下来学习学习小数据的处理工具mysql数据库，因为一会装hive的时候要用到，mysql需要掌握到什么层度那?你能在Linux上把它安装好，运行起来，会配置简单的权限，修改root的密码，创建数据库。这里主要的是学习SQL的语法，因为hive的语法和这个非常相似。
&lt;/p&gt;
&lt;p&gt;
 Sqoop：这个是用于把Mysql里的数据导入到Hadoop里的。当然你也可以不用这个，直接把Mysql数据表导出成文件再放到HDFS上也是一样的，当然生产环境中使用要注意Mysql的压力。
&lt;/p&gt;
&lt;p&gt;
 Hive：这个东西对于会SQL语法的来说就是神器，它能让你处理大数据变的很简单，不会再费劲的编写MapReduce程序。有的人说Pig那?它和Pig差不多掌握一个就可以了。
&lt;/p&gt;
&lt;p&gt;
 Oozie：既然学会Hive了，我相信你一定需要这个东西，它可以帮你管理你的Hive或者MapReduce、Spark脚本，还能检查你的程序是否执行正确，出错了给你发报警并能帮你重试程序，最重要的是还能帮你配置任务的依赖关系。我相信你一定会喜欢上它的，不然你看着那一大堆脚本，和密密麻麻的crond是不是有种想屎的感觉。
&lt;/p&gt;
&lt;p&gt;
 Hbase：这是Hadoop生态体系中的NOSQL数据库，他的数据是按照key和value的形式存储的并且key是唯一的，所以它能用来做数据的排重，它与MYSQL相比能存储的数据量大很多。所以他常被用于大数据处理完成之后的存储目的地。
&lt;/p&gt;
&lt;p&gt;
 Kafka：这是个比较好用的队列工具，队列是干吗的?排队买票你知道不?数据多了同样也需要排队处理，这样与你协作的其它同学不会叫起来，你干吗给我这么多的数据(比如好几百G的文件)我怎么处理得过来，你别怪他因为他不是搞大数据的，你可以跟他讲我把数据放在队列里你使用的时候一个个拿，这样他就不在抱怨了马上灰流流的去优化他的程序去了，因为处理不过来就是他的事情。而不是你给的问题。当然我们也可以利用这个工具来做线上实时数据的入库或入HDFS，这时你可以与一个叫Flume的工具配合使用，它是专门用来提供对数据进行简单处理，并写到各种数据接受方(比如Kafka)的。
&lt;/p&gt;
&lt;p&gt;
 Spark：它是用来弥补基于MapReduce处理数据速度上的缺点，它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。特别适合做迭代运算，所以算法流们特别稀饭它。它是用scala编写的。Java语言或者Scala都可以操作它，因为它们都是用JVM的。
&lt;/p&gt;
</description><pubDate>Wed, 15 May 2024 12:40:08 +0800</pubDate></item><item><title>拯救爆表的MySQL-小红书万亿级存储系统自研与迁移之路 (拯救爆戾男主)</title><link>https://tyye.cn/post_1714411922tf3.html</link><description>&lt;p&gt;
 作者: 空洞 (存储组)，刘备 (存储组负责人)
&lt;/p&gt;
&lt;h2&gt;
 背景
&lt;/h2&gt;
小红书是一个以年轻人为主的生活记录和分享平台，用户可以分享生活方式和生活片段。小红书的社交领域中，用户、笔记、商品等实体之间存在各种关系，例如关注、点赞、收藏等。随着用户数量和活跃用户数量的爆发式增长，小红书的社交图谱数据规模已经达到万亿条边的规模，并且增长速度非常快。
&lt;h2&gt;
 REDtao 的图模型和 API
&lt;/h2&gt;
REDtao 采用了 Facebook Tao 图存储系统的模型，将关系表示为一个 &amp;lt;key, value&amp;gt; 对，其中 key 是 (FromId, AssocType, ToId) 的三元组，value 是属性的 JSON 格式。

  REDtao 为业务方提供了 25 个图语义的 API，满足了业务方的增删改查需求，并收敛了业务方的使用方式。相比于 Facebook 的 Tao，REDtao 还补充了社交图谱所需要的图语义，为反作弊场景提供了额外的过滤参数。
&lt;h2&gt;
 REDtao 的架构
&lt;/h2&gt;
REDtao 采用了缓存和底层数据库相结合的架构，将缓存和底层数据库封装起来，并对外提供统一的图查询 API。

  缓存层使用 Redis，支持对不同的字段配置局部二级索引，提高了查询效率。

  底层数据库层使用 MySQL，存储持久化数据，保证数据的可靠性。
&lt;h2&gt;
 REDtao 的优势
&lt;/h2&gt;
REDtao 自研带来的优势包括：

   降低了数据库压力，提高了系统稳定性。
   减少了数据库成本，降低了运维压力。
   提供了统一的图查询 API，简化了业务开发。
   支持局部二级索引，提高了查询效率。
&lt;h2&gt;
 案例分析
&lt;/h2&gt;
下面是一个获取关注了 A 的所有正常用户（并且剔除作弊用户）的 API 调用示例：

  ```
  getAssocs(被关注类型, 用户A的ID, 分页偏移量, 最大返回值, 只返回正常用户，是否按照时间从新到旧)
  ```
&lt;img alt=&quot;小红书万亿级存储系统自研与迁移之路&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430013203171441192331975.jpeg&quot;/&gt;
&lt;h2&gt;
 总结
&lt;/h2&gt;
REDtao 是小红书自研的超大规模社交网络图存储系统，它结合了缓存和底层数据库的优势，为小红书的社交领域提供了高效、稳定、低成本的存储解决方案。REDtao 的成功实施大大提高了小红书的系统稳定性，减少了数据库压力和成本，也为业务开发提供了更加便捷的工具。
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 nosql和mysql的区别
&lt;/h2&gt;
&lt;p&gt;
 NoSQL与关系型数据库设计理念比较关系型数据库中的表都是存储一些格式化的数据结构，每个元组字段的组成都一样，即使不是每个元组都需要所有的字段，但数据库会为每个元组分配所有的字段，这样的结构可以便于表与表之间进行连接等操作，但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。
  
  而非关系型数据库以键值对存储，它的结构不固定，每一个元组可以有不一样的字段，每个元组可以根据需要增加一些自己的键值对，这样就不会局限于固定的结构，可以减少一些时间和空间的开销。
  
  特点：它们可以处理超大量的数据。
  
  它们运行在便宜的PC服务器集群上。
  
  它们击碎了性能瓶颈。
  
  没有过多的操作。
  
  Bootstrap支持缺点：但是一些人承认，没有正式的官方支持，万一出了差错会是可怕的，至少很多管理人员是这样看。
  
  此外，nosql并未形成一定标准，各种产品层出不穷，内部混乱，各种项目还需时间来检验
&lt;/p&gt;
&lt;h2&gt;
 什么是Mysql数据库，与其它数据库的区别和特点是什么？
&lt;/h2&gt;
&lt;p&gt;
 MySQL（发音为my ess cue el，不是my sequel）是一种开放源代码的关系型数据库管理系统（RDBMS），MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言（SQL）进行数据库管理。
  
  由于MySQL是开放源代码的，因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
  
  MySQL因为其速度、可靠性和适应性而备受关注。
  
  大多数人都认为在不需要事务化处理的情况下，MySQL是管理内容最好的选择。
  
  MySQL关系型数据库于1998年1月发行第一个版本。
  
  它使用系统核心提供的多线程机制提供完全的多线程运行模式，提供了面向C、C++、 Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口（APIs），支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。
  
  MySQL开发组计划于2001年中期公布MySQL4.0版本。
  
  在这个版本中将有以下新的特性被提供：新的表定义文件格式、高性能的数据复制功能、更加强大的全文搜索功能。
  
  在此之后，MySQL开发着希望提供安全的数据复制机制、在BeOS操作系统上的MySQL实现以及对延时关键字的定期刷新选项。
  
  随着时间的推进，MySQL将对ANSI 92/ANSI 99标准完全兼容。
  
  MsSql----&amp;gt;MicroSoft Sql Server,需要money，而且很多呢。
  
  (大型项目用，大型网站用) MySql----&amp;gt;免费的。
  
  速度快。
  
  可以用于小型项目。
  
  mysql数据库和oracle的区别和选择：LAMP大会的时候我跟Yahoo的一个技术高管聊的时候，我问他Yahoo在选择MySQL还是 Oracle的时候是怎么考虑，他的答案令我非常惊讶。
  
  他说大部分的时候我们是会用MySQL的，因为它的性能已经达到我们的要求。
  
  但是什么时候我们会选用Oracle呢，就是当我们需要存储收费用户的数据的时候。
  
  我就问为什么，难道Oracle比MySQL稳定吗?他说，这个倒没有特别考虑。
  
  关键是如果使用Oracle的话，当出现问题的时候我们可以找到负责人，Oracle会负责事故的处理，但是如果用MySQL的话，我们找谁去?
&lt;/p&gt;
</description><pubDate>Wed, 15 May 2024 12:30:07 +0800</pubDate></item><item><title>浏览器删除-Web-使用-Microsoft-账户 (浏览器删除的视频怎么找回)</title><link>https://tyye.cn/post_171441186881y.html</link><description>&lt;p&gt;
 如果你决定永久关闭你的 Microsoft 帐户，本指南将为你提供分步说明。请注意，此过程是不可逆的，一旦删除你的帐户，所有关联的数据和服务将被永久删除。
&lt;/p&gt;
&lt;h2&gt;
 开始之前
&lt;/h2&gt;
&lt;img alt=&quot;使用&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430013108171441186881830.jpeg&quot;/&gt;
&lt;ol&gt;
 &lt;li&gt;
  取消所有活动订阅：在删除帐户之前，请务必取消任何活动的 Microsoft 订阅，例如 Microsoft 365、Xbox Live 和 Xbox Game Pass。有关如何取消订阅的说明，请访问官方支持页面。
 &lt;/li&gt;
 &lt;li&gt;
  取消组织关联（如果适用）：如果你的帐户与工作或学校等组织相关联，则必须先离开组织才能继续删除帐户。有关如何管理组织的详细信息，请参阅 Microsoft 的说明。
 &lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
 删除 Microsoft 帐户
&lt;/h2&gt;
&lt;ol&gt;
 &lt;li&gt;
  转到
  
   关闭 Microsoft 帐户
  
  页面，并使用你的帐户登录。
 &lt;/li&gt;
 &lt;li&gt;
  如有提示，请通过电子邮件或电话验证你的身份。输入 Microsoft 发送给你的确认代码以访问你的帐户。
 &lt;/li&gt;
 &lt;li&gt;
  仔细阅读确认页面，确保你已准备好关闭帐户。在底部，选择下拉框，选择 30 或 60 天作为你希望 Microsoft 保留你的数据的天数（以防你改变主意）。选择 &quot;下一步&quot;。
 &lt;/li&gt;
 &lt;li&gt;
  勾选所有复选框并仔细阅读详细信息，以便了解关闭帐户的含义。在底部，单击 &quot;选择原因&quot; 框。
 &lt;/li&gt;
 &lt;li&gt;
  选择关闭帐户的原因，或者选择 &quot;我的原因未列出&quot;，然后选择 &quot;标记要关闭的帐户&quot;。
 &lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
 删除 Microsoft 帐户后会发生什么
&lt;/h2&gt;
&lt;ul&gt;
 &lt;li&gt;
  你将无法访问与你的 Microsoft 帐户相关联的电子邮件地址（如 @outlook.com、@live.com 或 @hotmail.com）。
 &lt;/li&gt;
 &lt;li&gt;
  你将无法访问与你的帐户关联的任何 Microsoft 服务，例如 Office 365、OneDrive 和 Xbox Live。
 &lt;/li&gt;
 &lt;li&gt;
  其他组织或服务使用你的 Microsoft 帐户登录可能会受到影响。
 &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
 重新激活 Microsoft 帐户
&lt;/h2&gt;
如果你在关闭帐户后 30 或 60 天内（取决于你选择的帐户）重新登录，你可以重新激活你的 Microsoft 帐户。请确保你没有意外登录，否则你将不得不再次经历关闭帐户过程。
&lt;p&gt;
 免责声明：此信息来自 Microsoft 官方网站，如有任何差异，请以 Microsoft 为准。
&lt;/p&gt;
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 win10系统怎么删除microsoft账户
&lt;/h2&gt;
&lt;p&gt;
 在win10系统中，除了使用本地用户登录外，还多了一个microsoft账户作为账号进行登录，也就是微软账户，那么如果不喜欢微软账户登录的话，要怎么删除microsoft账户呢？具体步骤如下。
  
  1、点击开始菜单，打开设置-账户-你的电子邮件和账户；2、点击‘管理我的microsoft账户’，在跳转的网页登录microsoft账户，可以看到账户详细信息。
  
  在设备栏里面，点击“查看全部”可以看到登录了该账户的设备。
  
  在列表里面找到所需要删除的设备，点击删除电脑，小编目前已经删除了，所以会有所不同；3、接着由于是敏感操作，可能需要输入密码确认。
  
  输入密码登录后，跳转页面在“我已准备好删除此设备”前面的方框点击打勾，然后点击删除；4、此时跳转页面显示删除完成，这样存储在服务器里面的该电脑的系统设置等信息就完全清除了；5、接着我们打开设置-账户-你的电子邮件和账户，如果当前是使用microsoft账户作为用户登录的，需要先点击“改用本地账户登录”更改为本地账户登录，按照提示一步步操作，完成后注销，使用刚设置的本地账户登录。
  
  重新登录后打开账户设置，会看到选项变成了“改用microsoft账户登录”，下拉滚动条，在“其它应用使用的账户”一栏里面，选中需要删除的microsoft账户，点击删除-是。
  
  到这里就可以成功的删除掉登录在win10系统里面的microsoft账户信息以及漫游的系统设置等信息了。
  
  上述就是win10系统怎么删除microsoft账户的详细操作步骤，大家可以按照上面的方法来删除即可。
&lt;/p&gt;
&lt;h2&gt;
 win10如何删除登录的microsoft账户
&lt;/h2&gt;
&lt;p&gt;
 在win10的操作系统下登陆microsoft账户会给我们带来多余的流量和开机的时候都需要输入密码，在每次启动win10的时候会自动的登陆microsoft账户。那么如何删除登陆的microsoft账户。
&lt;/p&gt;
&lt;p&gt;
 点击开始菜单，点击设置，之后就会弹出设置的弹窗。
&lt;/p&gt;
&lt;p&gt;
 再点击界面中的账户
&lt;/p&gt;
&lt;p&gt;
 之后就会进入到你的账户的设置当中。
&lt;/p&gt;
&lt;p&gt;
 再点击界面左侧的电子邮件和账户。
&lt;/p&gt;
&lt;p&gt;
 点击界面右侧的“管理我的microsoft账户”
&lt;/p&gt;
&lt;p&gt;
 在跳转到的网页登录microsoft账户，可以看到我们账户的详细信息。
&lt;/p&gt;
&lt;p&gt;
 点击设备栏，里面的“查看全部”可以看到账户登陆的设备信息。
&lt;/p&gt;
&lt;p&gt;
 列表里有已经登陆的设备，选择一下需要删除的设备，点击删除就可以了。
&lt;/p&gt;
&lt;p&gt;
 在进行删除操作的时候可能需要输入电脑的密码，输入完密码密码以后在“我已准备好删除此设备”的前面打上勾就好了。
&lt;/p&gt;
&lt;p&gt;
 之后，就会跳转页面，上面显示已经成功的删除完成了。
&lt;/p&gt;
&lt;p&gt;
 现在回到我们的电脑本机上，打开设置-账户-你的电子邮件和账户。
&lt;/p&gt;
&lt;p&gt;
 看看我们登陆电脑的是microsoft账户还是本地账户登陆的，如果是microsoft账户登陆的，就改用本地账户登陆就好了。
&lt;/p&gt;
&lt;p&gt;
 在下面有一个“其它应用使用的账户”。点击它。
&lt;/p&gt;
&lt;p&gt;
 选中需要删除的microsoft账户，选中以后，点击删除，再点击确定。就成功地删除了。
&lt;/p&gt;
</description><pubDate>Wed, 15 May 2024 12:20:07 +0800</pubDate></item><item><title>MESI-深入理解-CPU-协议-缓存一致性</title><link>https://tyye.cn/post_1714411817ce2.html</link><description>&lt;p&gt;
 在本文中，我们将深入探讨有关 CPU 缓存一致性协议 MESI 的知识。随着计算机技术的发展，了解这些概念对于优化系统性能至关重要。
&lt;/p&gt;
&lt;h2&gt;
 CPU 高速缓存
&lt;/h2&gt;
&lt;p&gt;
 为了弥合理论上无限的 CPU 速度和实际有限的内存和硬盘速度之间的差距，CPU 制造商在 CPU 中集成了少量的高速缓存。
&lt;/p&gt;
&lt;p&gt;
 局部性原理指出，CPU 访问存储设备时倾向于集中在连续区域内。这导致了以下两种局部性：
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
  时间局部性：如果一个信息项正在被访问，那么在近期它很可能还会被再次访问。
 &lt;/li&gt;
 &lt;li&gt;
  空间局部性：如果一个存储器位置被引用，那么将来他附近的位置也会被引用。
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
 高速缓存利用局部性原理，将最近使用的数据和指令存储在 CPU 附近，从而减少了从较慢的内存和硬盘中检索信息的需要。
&lt;/p&gt;
&lt;h2&gt;
 多级缓存结构
&lt;/h2&gt;
&lt;p&gt;
 随着 CPU 运算速度超越了 1 级缓存的数据 I/O 能力，CPU 制造商引入了多级的缓存结构。这允许在多个级别上存储数据，从最快的 L1 缓存到最慢的 L3 缓存。
&lt;/p&gt;
&lt;h2&gt;
 多核 CPU 多级缓存一致性协议 MESI
&lt;/h2&gt;
&lt;p&gt;
 在多核 CPU 中，有多个一级缓存。为了确保这些缓存中的数据保持一致，需要一种一致性协议。MESI 协议就是这样的协议。
&lt;/p&gt;
&lt;h3&gt;
 MESI 协议缓存状态
&lt;/h3&gt;
&lt;p&gt;
 MESI 指 4 种状态的首字母，每个 Cacheline（缓存存储数据的单元）都有这 4 种状态，可用 2 个比特表示：
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
  M（修改）：该 Cacheline 有效，数据被修改，与内存中的数据不一致，数据只存在于本 Cache 中。
 &lt;/li&gt;
 &lt;li&gt;
  E（独占、互斥）：该 Cacheline 有效，数据与内存中的数据一致，数据只存在于本 Cache 中。
 &lt;/li&gt;
 &lt;li&gt;
  S（共享）：该 Cacheline 有效，数据与内存中的数据一致，数据存在于多个 Cache 中。
 &lt;/li&gt;
 &lt;li&gt;
  I（无效）：该 Cacheline 无效。
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
 注意：对于 M 和 E 状态而言总是精确的，但 S 状态可能是非一致的。这是因为其他缓存不会广播他们作废该缓存行的通知，并且缓存没有保存该缓存行副本的数量。
&lt;/p&gt;
&lt;h3&gt;
 MESI 状态转换
&lt;/h3&gt;
&lt;p&gt;
 MESI 协议的状态转换如下表所示：
&lt;/p&gt;
| 触发事件 | 本地读取 | 本地写入 | 远端读取 | 远端写入 |
|---|---|---|---|---|
| 本地 Cache 为 M 状态 | 读数据 | 触发写回 | 不响应 | 触发写回 |
| 本地 Cache 为 E 状态 | 读数据 | 更新数据 | 触发总线事务 | 无效 |
| 本地 Cache 为 S 状态 | 读数据 | 触发写回 | 触发总线事务 | 无效 |
| 本地 Cache 为 I 状态 | 从主内存加载数据 | 触发总线事务 | 无响应 | 访问无效 |
| 其他 Cache 读取 | 无操作 | 无操作 | 从本地 Cache 读数据 | 无响应（如果本地 Cache 为 I 状态，则无效） |
| 其他 Cache 写入 | 无操作 | 从本地 Cache 读数据 | 无响应 | 无效 |
&lt;p&gt;
 前置说明：
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
  触发事件：触发读写事件的事件。
 &lt;/li&gt;
 &lt;li&gt;
  本地 Cache：当前 CPU 的 Cache。
 &lt;/li&gt;
 &lt;li&gt;
  触发 Cache：触发读写事件的 Cache。
 &lt;/li&gt;
 &lt;li&gt;
  其他 Cache：除了以上两种之外的其他 Cache。
 &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
 结论
&lt;/h2&gt;
&lt;p&gt;
 MESI 协议是用于在多核 CPU 中维护缓存一致性的重要一致性协议。它通过跟踪每个 Cacheline 的状态并在触发事件发生时更新状态来确保所有缓存中的数据保持一致。
&lt;/p&gt;
&lt;p&gt;
 理解 MESI 协议对于优化多核 CPU 的性能至关重要，因为它可以防止数据损坏和系统不稳定。
&lt;/p&gt;
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 计算机组成原理之缓存行 cacheLine
&lt;/h2&gt;
&lt;p&gt;
 缓存行：64字节；缓存行越大，局部空间效率高，读取时间慢；反之局部空间效率低读取速度快，所以折中选择了64个字节；
&lt;/p&gt;
&lt;p&gt;
 如何保证CPU中不同L1缓存、L2缓存的 缓存一致性？ MESI缓存一致性协议， 因特尔CPU的协议  其他的缓存一致性协议有：
 &lt;em&gt;
  MSI/MOSI/Synapse/Firefly/Dragon
 &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
 L1：CPU一级缓存； L2：CPU二级缓存； L3：CPU三级缓存； 其中 L3 是计算 CPU共享的，L1、L2是CPU中 核 独享的；
&lt;/p&gt;
&lt;img alt=&quot;缓存一致性&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430013017171441181738392.jpeg&quot;/&gt;
&lt;p&gt;
 缓存一致性的实现：如上图 如果左侧核的X值在L1中被修改了----modified，此时会有通知到右侧的核 的X为---invalid； 之后，右侧再读取X值时发现无效会往上层查询有效数据；
&lt;/p&gt;
&lt;p&gt;
 为了减少 CPU中缓存数据被不同的 核 读取，程序设计中有一个 RingBuffer 环形缓存，在实际存储变量 INITAL_CURSOR_VALUE 前后都增加了7个变量，long类型的长度时8字节；CPU在读取数据时会修改的变量只有 INITAL_CURSOR_VALUE ，数据只会被其中一个核读取，就不会出现使用 MESI缓存一致性协议 去解决缓存一致性导致的耗时问题；
&lt;/p&gt;
&lt;p&gt;
 除了上述方式，JDK1.8中 使用了注解的方式强制让一个变量占据一个缓存行；
&lt;/p&gt;
&lt;h2&gt;
 缓存一致性协议
&lt;/h2&gt;
&lt;p&gt;
 锁缓存行有一套协议叫做 缓存一致性协议 。缓存一致性协议有MSI、MESI、MOSI、Synapse、Firefly以及DragonProtocol等等。
&lt;/p&gt;
&lt;p&gt;
 MESI分别代表缓存行数据的4中状态，通过对这四种状态的切换，来达到对缓存数据进行管理的目的
&lt;/p&gt;
&lt;p&gt;
 假设有三个CPU-A、B、C，对应三个缓存分别是cache-a、b、c。在主内存中定义了x的引用值0
&lt;/p&gt;
&lt;p&gt;
 单核读取
&lt;/p&gt;
&lt;p&gt;
 MESI优化和引入的问题：各CPU缓存行的状态是通过消息传递来进行的。如果CPU0要对一个在缓存中共享的变量进行写入，首先需要发送一个失效的消息给到其他缓存了该数据的CPU，并且要等到他们的确认回执。CPU0在这段时间内都会一直处于阻塞状态，会导致各种各样的性能问题和稳定性问题。
&lt;/p&gt;
&lt;p&gt;
 为了避免阻塞带来的资源浪费，在CPU中引入了Store Buffer。
&lt;/p&gt;
&lt;p&gt;
 CPU在写入共享数据时，直接把数据写入到Store Buffer中，同时发送Invalidate消息，然后继续去处理其他指令。当收到其他所有CPU发送了Invalidate Acknowledge消息时，再将Store Buffer中的数据存储到Cache Line中，最后再从Cache Line同步到主内存。
&lt;/p&gt;
</description><pubDate>Wed, 15 May 2024 12:10:07 +0800</pubDate></item><item><title>b-b-软件开发自我毁灭的七宗罪 (adaptbb软件)</title><link>https://tyye.cn/post_1714411761tj6.html</link><description>&lt;p&gt;
 软件开发是一门具有挑战性的学科，它建立在数百万的参数、变量、库以及更多必须绝对正确的因素之上。即便是一个字符不合适，整个堆栈也会随之瓦解。多年来，软件开发团队已经想出了一些完成工作的规则。从复杂的方法论到新兴的学科和哲学，软件开发的规则手册使每个人都能够协作，并以有效的方式到达终点。
&lt;/p&gt;
&lt;p&gt;
 即便如此，仍然存在失败模式：有时是这些方法被误用了，或是好的想法过于偏向理论化；有时开发者只是忘记了他们应该做什么，或是故意为之。软件开发中的这些错误几乎可以破坏任何项目。因此，如果想要确保您的团队能够构建伟大的项目，那么是时候停下来考虑一下以下错误行为了。
&lt;/p&gt;
&lt;h2&gt;
 1. 选择错误的方法
&lt;/h2&gt;
&lt;p&gt;
 所有的软件开发方法都有狂热的拥趸，他们热衷于那些定义自己最喜欢的团队组织方式的规则。但问题往往是如何为您的团队选择合适的工具。一个很大的错误是从高层强加这些规则。如果程序员是另一种方法的忠实信徒，那么当他们被迫使用另一种方法时，他们通常会抱怨和发牢骚。
&lt;/p&gt;
&lt;p&gt;
 另一个错误是让程序员自由地选择他们最喜欢的方法，然而这可能并不是对整个团队最好的方法。选择正确的方法并不能解决所有的问题，但是它可以减少组织工作流程时产生的摩擦。团队将了解他们的角色，以及他们将如何在其中编写代码。
&lt;/p&gt;
&lt;h2&gt;
 2. 忽略可扩展性
&lt;/h2&gt;
&lt;p&gt;
 一些软件开发问题可以稍后修复，但这绝不包括构建一个能够有效扩展以处理数百万或数十亿个事件的应用程序。当应用程序最终全面运行时，创建没有瓶颈的有效代码需要足够的深谋远虑和高层领导的支持。这不是以后用一些有针对性的编码和虚拟管道就能解决的问题。算法和数据结构需要从一开始就进行规划。
&lt;/p&gt;
&lt;p&gt;
 这意味着架构师和管理层需要仔细考虑将为每个用户存储和处理的数据。当100万或10亿用户出现时，信息洪流会淹没哪一层？我们该如何提前为这些时刻做好计划呢？
&lt;/p&gt;
&lt;p&gt;
 有时候，这种架构上的深谋远虑意味着扼杀一些伟大的想法。有时，管理层需要权衡大规模交付功能的收益和成本。有些数据分析在大范围内并不适用。一些公式随着用户的增加呈指数级增长。计算使硬件不堪重负，并阻塞了通信。
&lt;/p&gt;
&lt;p&gt;
 开发者并不总是想要考虑大局。他们很容易就会一头扎进去开始创作。但是聪明的开发团队和管理者会花时间预测这些问题，因为如果他们不这样做，就会面临失败的结局。
&lt;/p&gt;
&lt;h2&gt;
 3. 沉迷最新趋势
&lt;/h2&gt;
&lt;p&gt;
 众所周知，软件开发人员很容易被新奇的想法所吸引。也许它是一种提供更复杂查询的新型数据库；也许它是一种新的编程语言，可以修复旧语言造成的所有错误。有时候这些想法是有价值的。很多时候，由于每个人都试图学习新技术，最终会减慢开发速度。有时候，新想法中会存在隐藏的缺陷，只有在项目必须交付之前，每个人都投入到工作中之后，这些缺陷才会显现出来。
&lt;/p&gt;
&lt;p&gt;
 谨慎往往是采用新技术的最佳准则。这也是一些规模最大、历史最悠久的公司仍在继续运行由COBOL编写的软件的原因所在。趋势变化无常，但运行代码中的工作逻辑不会过时。
&lt;/p&gt;
&lt;h2&gt;
 4. 保留过多的数据
&lt;/h2&gt;
&lt;p&gt;
 程序员是天生的囤积狂，他们喜欢储存信息以备不时之需，而此举可能会导致安全漏洞或侵犯用户隐私。对于出生日期或其他详细个人信息，问题可能更大。一些领域（如财务记录或健康记录）受到严格监管，更容易违反规定。
&lt;/p&gt;
&lt;p&gt;
 好的软件架构需要提前计划，以尽量减少存储的数据量。它可以保护每个人，并节省存储费用，甚至可以通过减少移动数据量来加快系统速度。
&lt;/p&gt;
&lt;h2&gt;
 5. 外包错误的工作
&lt;/h2&gt;
&lt;p&gt;
 关于究竟是自行构建还是购买软件的争论由来已久，目前尚无明确定论。软件开发人员的选择往往很糟糕。也许有一个价格合理的完美解决方案，但他们却不舍得把自己的定制堆栈与内部团队闲置一边。相反的情况也会发生。一些管理者购买了外部供应商的产品线，结果却眼睁睁地看着供应商在锁定完成后大幅提高价格。
&lt;/p&gt;
&lt;p&gt;
 不幸的是，对于软件开发团队及其管理者来说，决定使用哪种外部工具是一个持续的挑战。利用合适的外部资源是天才之举，而做糟糕的决定却可能导致灾难性的结果。
&lt;/p&gt;
&lt;h2&gt;
 结论
&lt;/h2&gt;
&lt;p&gt;
 软件开发是一个复杂的过程，很容易出现错误。通过了解这些常见的错误以及避免它们的最佳实践，您可以增加项目成功的可能性。记住，没有一种方法适合所有情况，并且最好的方法将根据您的特定团队和项目的需要而有所不同。
&lt;/p&gt;
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 《DNF》七宗罪套装怎么获得？
&lt;/h2&gt;
&lt;p&gt;
 堕落的七宗罪套装，即我们平时俗称的90级板甲B套，是当前版本板甲类毕业套装，该套装由90级史诗板甲套装星辰命运套装升级而来，所以需要提前拥有星辰命运套装。
&lt;/p&gt;
&lt;p&gt;
 1、在克洛诺斯岛暴戾搜捕团区域，NPC波澜万丈的艾丽卡处可以购买星辰套装升级为七宗罪套装所需要的对应部位设计图。
&lt;/p&gt;
&lt;p&gt;
 2、升级所需要的精炼的时空石，可以在中央公园NPC红尾乔纳森处进行兑换，也可通过平时的阶段性活动进行获取。
&lt;/p&gt;
&lt;p&gt;
 3、魔岩石是在艾丽卡处进行兑换，兑换所需要的暗之根源则是在卢克团本中产出。
&lt;/p&gt;
&lt;p&gt;
 4、金色小晶块则是通过装备分解或者直接在拍卖行进行购买。
&lt;/p&gt;
&lt;p&gt;
 5、集齐所需的全部材料后，使用设计图，即可将对应部位的星辰套装升级为七宗罪套装。
&lt;/p&gt;
&lt;p&gt;
 扩展资料
&lt;/p&gt;
&lt;p&gt;
 《地下城与勇士》是一款韩国网络游戏公司NEOPLE开发的免费角色扮演2D游戏，由三星电子发行，并于2005年8月在韩国正式发布。中国则由腾讯游戏代理发行。
&lt;/p&gt;
&lt;p&gt;
 该游戏是一款2D卷轴式横版格斗过关网络游戏，大量继承了众多家用机、街机2D格斗游戏的特色。以任务引导角色成长为中心，结合副本、PVP、PVE为辅，与其他网络游戏同样具有装备与等级的改变，并拥有共500多种装备道具。
&lt;/p&gt;
&lt;p&gt;
 每个人物有8个道具装备位置，在游戏中可以允许最多4个玩家进行组队挑战关卡，同样也可以进行4对4的PK。
&lt;/p&gt;
&lt;p&gt;
 游戏系统
&lt;/p&gt;
&lt;p&gt;
 1.黑钻系统
&lt;/p&gt;
&lt;p&gt;
 DNF黑钻贵族是专门为DNF尊贵VIP用户开通的增值包月服务项目。黑钻包月费用：20Q币/月。
&lt;/p&gt;
&lt;p&gt;
 2.战斗系统
&lt;/p&gt;
&lt;p&gt;
 《DNF》作为动作类游戏的代表，战斗系统正是其最大的特色。与以往的MMORPG不同，《DNF》延续了街机横版格斗的模式，并将爽快感，打击感发挥到及至。再结合RPG中的大量元素，使得《DNF》中的战斗拥有极高的可玩性，耐玩性。
&lt;/p&gt;
&lt;p&gt;
 3.天平系统
&lt;/p&gt;
&lt;p&gt;
 进入决斗场后，若没有对方玩家，可以选择[邀请]按键来邀请玩家进入房间.也可以在进入房间后选择观看模式。不希望在决斗场中被邀请的玩家，可以在系统设置中将接受对战邀请的选项关闭。观战模式可以选择观战按钮来从特殊的玩家视角观看整个战斗。
&lt;/p&gt;
&lt;p&gt;
 4.交易系统
&lt;/p&gt;
&lt;p&gt;
 游戏中玩家间的物品流动都是通过交易系统来实现的，玩家可以直接进行物品的交换，也可以进行摆摊。在交易中，需要买卖双方确认后才能成交，只要是非绑定的物品或金钱都能够交易（任务物品除外）；而在摆摊中不能进行物品与物品之间的交换，只能使用游戏币交换物品，所以摆摊就类似于“一口价”的玩家商店，买家看中物品后直接就能购买。
&lt;/p&gt;
&lt;p&gt;
 5.任务系统
&lt;/p&gt;
&lt;p&gt;
 任务系统是每一个游戏的重要组成部分。玩家在游戏过程中可通过特定的NPC领取某一个任务。再按照任务条件所要求的收集物品或击杀怪物等方式达到任务要求。再找相应的NPC完成任务来获得任务的奖励。
&lt;/p&gt;
&lt;p&gt;
 在《DNF》中，任务繁多：有的需要材料，有的需要送信或寻找NPC，有的需要打怪，有的需要技术性评价，还有的是收集物品，可重复完成的。任务主要分为主线、普通、重复、成就、每日、修炼、紧急、转职、觉醒。
&lt;/p&gt;
&lt;p&gt;
 主线任务：相当于一个故事或一个剧情。由一位NPC开始引导，将任务分为几个步骤。任务将由引发情节的NPC开始，直到任务结束。当任务完成到最后一步后，将会形成一定的条件任务供角色后续进行，前置任务未完成就触发不了后续任务。每个任务只可完成一次。
&lt;/p&gt;
&lt;p&gt;
 普通任务：为支线任务。普通任务为可选择性完成。任何角色只要达到等级就可享受到的任务。一般无条件限制角色。任务通过角色等级开始，直到任务结束，多数普通任务为单独的任务。完成后不会触发后续的任务。每个普通任务可完成一次。
&lt;/p&gt;
&lt;p&gt;
 成就任务：是指经过材料收集或打败某些特殊怪物可得到 某些装备或称号的任务。
&lt;/p&gt;
&lt;p&gt;
 每日任务：如名所示，每天只能接受一次，通过完成这种任务，可以得到某些可交易的材料或可用于换神器装备的不可交易的任务材料。
&lt;/p&gt;
&lt;p&gt;
 转职任务：为当角色到达一定的级别就可接取的任务。任务只允许相应角色进行，由角色的职业技能导师开始引发，经过众多个NPC直到最后。角色完成任务后即可转为任务内容对应的职业。任务的内容一般是打怪。要求技术评价。
&lt;/p&gt;
&lt;p&gt;
 收集任何物品。转职任务为每个职业转换为更高级别的职业时所要完成的任务。转职完成后角色转换为新职业。可学习新职业技能。
&lt;/p&gt;
&lt;p&gt;
 觉醒任务：当角色可以进行觉醒或是二次觉醒时可以接受的任务，在导师处完成其指定的任务后可以进行觉醒。
&lt;/p&gt;
&lt;h2&gt;
 七宗罪！求名著 不是要小说 企鹅邮箱 九四三四零七八四一
&lt;/h2&gt;
&lt;p&gt;
 以七宗罪命名的书就一本，是香港作家黄碧云写的，不知道是不是你要的。
&lt;/p&gt;
&lt;p&gt;
 以下摘录部分片段：
&lt;/p&gt;
&lt;p&gt;
 1.黄碧云___《七宗罪》
&lt;/p&gt;
&lt;p&gt;
 七宗罪之中，以饕餮最轻易，以骄傲为最大。
&lt;/p&gt;
&lt;p&gt;
 好欲、懒惰，是肉身之罪，而妒忌、忿怒、贪婪，是心罪。
&lt;/p&gt;
&lt;p&gt;
 我的生命里我第一次感到歉疚：为我所为，为我所没所为。
&lt;/p&gt;
&lt;p&gt;
 为我的贪欲：我以为是热情；为我的冷漠与疏离：我以为那是存在的疑惑；为我的叛
&lt;/p&gt;
&lt;p&gt;
 逆与敌对：我以为我之为我，为自我毁灭所完成。我以为我思我在，我就是世界的定名。我
&lt;/p&gt;
&lt;p&gt;
 是智慧，是意志，是生命。
&lt;/p&gt;
&lt;p&gt;
 直至虚无和孤独将我灭绝。死神又时常在我身後拉小提琴。
&lt;/p&gt;
&lt;p&gt;
 我从来不知道节制与约束。地狱之门为饕餮而开。
&lt;/p&gt;
&lt;p&gt;
 序
&lt;/p&gt;
&lt;p&gt;
 七罪世界的图录－－南方朔
&lt;/p&gt;
&lt;p&gt;
 近代文学史上，先前有两次讨论“七宗死罪”（seven deadly sins）。
&lt;/p&gt;
&lt;p&gt;
 第一次是三十四年前。当时在《伦敦周日泰晤士报》任职的伊安·佛莱明（Ian Fleming；OO七情报员系列小说作者），邀请了七位诗人作家各撰一罪，撰文者包括奥登（W。H。Auden）等。稍后，这七篇文章辑为《七宗死罪》（The Seven Deadly Sins）出版。
&lt;/p&gt;
&lt;p&gt;
 第二次则在一九九三年。《纽约时报书评杂志》见贤思齐之下，也邀请七位作家各撰一罪，被邀请者计有品琼（Thomas Pychon）、厄普戴克（John Updike）、崔佛（William Trevor）等。除了传统的七宗罪外，女作家奥茨（Joyce Carol Cates）自告奋勇的加上另一个她认为的第八宗罪“绝望”（Despair）。八篇文章稍后则以＜死罪＞（Deadly Sins）为名辑成书。相隔了三十年，这两册论死罪的著作，观点全然相左，代表了不同时代对死罪观念的差异和对话。这两书早已传为近代文学美谈。而今天，我们则有了黄碧云论七宗罪的小说创作。这本小说无论就文学叙事技巧，驱遣文字的能力，甚至思想的高度，都让人不得不惊奇。黄碧云写了一本极为优秀的小说。
&lt;/p&gt;
&lt;p&gt;
 “七宗死罪”在西方基督教世界里，乃是圣奥古斯丁“原罪说”所衍生出来的观念。他将人的不完美性，以及意志驱动下为恶的可能性定为成“原罪”。稍后，作为“奥古斯丁派”信仰者的教宗圣大贵格利（Gregory the Great），将其发扬。他在＜圣大贵格利选集＞里将罪的概念更加详细论。根据他的分类，中古拉丁教会的修道院遂定出“七宗死罪”之名。中古前期教会的许多“悔罪补赎”（Penance）条例，如＜昆米安补赎条例＞，＜提阿多若补赎条例＞等，对罪的具体内容都有纲目式的规定。七宗死罪是：懒惰（Sloth）、忿怒（Anger）、好欲（Lust）、饕餮（Gluttony）、骄傲（Pride）、贪婪（Avarice）、妒忌（Envy）。
&lt;/p&gt;
&lt;p&gt;
 七宗罪是人的七种失败和偏离，它是心灵的荒废和肉身的下坠。七宗罪或许有七种模样，但却被共有的一根绳索通串，它就是人对自己的放弃，放弃意味着或者向既定的命运屈膝，或者将人的偶然性膨胀到自我专擅的地步。因此，一切的罪，最后必然归向虚无。如同＜诗篇＞里所说的：“人好像一口气。他的年日，如同影儿快快过去。”罪是人自己外在化之后失去了良心的戒命。因此，我们遂说罪之最大是骄傲，罪之结局是虚无，而罪的根源是意志。
&lt;/p&gt;
&lt;p&gt;
 黄碧云于是开始了她对罪的探索。她首先探索“饕餮”，“饕餮”是一种人在失望挫败后的逃避与转移；“饕餮”也是一种起源于贪婪的对他人的吞噬。它是一种小小的绝望，小小的投降与小小的自我放弃。一个问题家庭，父亲在挫败中以食物来“饕餮”，母亲则“饕餮”而畸形的占据着儿子，而做儿子的则“饕餮”般的享用着这种畸形的关爱。整个家庭是个封闭的“饕餮”循环圈，他们彼此吞噬，相互的折磨和折磨自己。“饕餮”之为罪，乃是它占据、它吞噬、它折磨。
&lt;/p&gt;
&lt;p&gt;
 而“懒惰”之为罪，乃在于它是一种悲哀，一种精神决意的失去和拒绝。“懒惰”者为了避免一切而寂静不动，“懒惰”是荒凉的冷漠。黄碧云的小说里有着一组人的不幸，以及他或她们的冷漠悲寂，诉说着“懒惰”。他们已不知道何为爱，但只知道爱的不能。“懒惰”是一种既软弱但又硬心的虚无。它仿佛疫病菌孢一般，悄声无息的蔓延，使人间的一切都成为荒颓。
&lt;/p&gt;
&lt;p&gt;
 而黄碧云说起“忿怒”，倒不像“忿怒”，反而更像是它反侧面的“绝望”。“忿怒”是弱者自认遭到凌辱的狂乱与创伤，但它也可以是悲伤、放弃、以及对自己的不再抱有希望。小说里叙述一群在社会下层苟活不幸的人，他们蒙受着人们的忿怒与不公不义，有人因此而自焚，最后写到那个自我放弃而更加下坠的人物“九月”时，他全身整脸刺青。人人避若蛇蝎，被问到刺青痛不痛时，他答说：“不痛，已经是很多年前的事情。”他们是这样的一种人，“如果还有世界，里面已经没有你”。他们的放弃遂变成了最深刻的“忿怒”。最恐怖的忿怒是一切的悲伤都归向于自己。
&lt;/p&gt;
&lt;p&gt;
 而小说里在谈到“妒忌”时，它不像沙剧＜奥赛罗＞那样的叙述“妒忌”，而是从另外一个可能更形而上的角度切入。故事叙述三名少女青春期的狂乱与暴烈。她们颓废而虚无。将少女的年轻暴烈导向到“妒忌”这个罪，两者之间其实的确有着某种暧昧的联系性。“妒忌”起源于觉得不公平，而这种：“不公平”之感并不必然一定要相对于某个对象，被过苛的要求即会使青少年改而羡慕其他同辈。小说里的少女，与哥哥关系不正常的“可欢”，她的“妒忌”哥哥女友是常识性的“妒忌”，而其他则是抽象的“妒忌”。“妒忌”在痛恨别人时亦将一并的痛恨归向并放纵自己。
&lt;/p&gt;
&lt;p&gt;
 而“贪婪”在小说里籍着股市炒手而展开。“贪婪”之为罪，乃是它是一种纯粹的占有、操纵、控制的欲望，当人变成“贪婪”，他就会被驱使着走向怀疑、疯狂、伤害、甚或虐待。小说里籍着复杂的叙述，将“贪婪”与疯狂之间做出了精细的连缀。
&lt;/p&gt;
&lt;p&gt;
 而“好欲”之罪，在古代宗教典籍里经常将它与“爱”对立，因而它被视为一种动物性的肉欲和性冲动，并和“奸情”之罪并列。因而《天主教百科全书》在注解这个罪时曰：“肉欲之行为，乃是性快乐失控的使用和追求，它不仅打败了性活动的生物学，以及社会和道德之目的，并造成人格解体的力量。”因此，它同时也代表了“一种心灵的盲瞎、不思、不一致、自恋、对物质世界的过分耽溺”。黄碧云在小说里，将“好欲”之罪从性上抽离，而导向于香港九七过渡过程中政治的狂乱。这是个大投机时代的缩影，表面有“砂仑玫瑰”的华丽盛放，而谁又知道进入苞片子房里的不是狂乱和颠倒？
&lt;/p&gt;
&lt;img alt=&quot;软件开发自我毁灭的七宗罪&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430012921171441176183658.jpeg&quot;/&gt;
&lt;p&gt;
 而一切的罪，最大的仍是“骄傲”，它是人的自我专擅，是自我极大化之后将一切都挪为己用的贪得与自鸣正义。在古代基督教体系里，“骄傲”被探讨的最多，“骄傲”的罪最大，乃是它造成人的“堕落”。圣保罗说：“自认为聪明，反成了愚拙。”圣奥古斯丁也说：“邪恶的意志是如何开始的，只是由于骄傲。骄傲岂不是一切罪的开端吗？……骄傲是因为人太爱他自己了。”在小说里，黄碧云籍着一名来自沈阳的数学天才的骄傲与堕落，将“骄傲”的贪得、狂乱、做了深刻的展露。
&lt;/p&gt;
&lt;p&gt;
 这就是黄碧云的七宗罪，一个由罪连结而成的荒诞、残忍、粗暴、甚至虚无的世界。由罪而救赎。她在小说开始就已指出了谦卑，节制。圣奥古斯丁在《忏悔录》里对罪早已做过最古典但也是最现代的究论。罪在意志的裂隙中，自由会走到它的反面，一如爱也会有自噬的一天。罪是我们存在的情境，它就在人们自以为是的悄然中，也跟着无声息的掩至。、而黄碧云的小说，却大张旗鼓的掀开了这样的沉寂。她以一种怜悯式的突兀笔法，揭露出罪的世界之众生图录。台湾并不太熟悉黄碧云，乃是香港数一数二的作家之一，她的小说集如《扬眉女子》、《其后》、《温柔与暴烈》等早已有公论之评价。她无论在作品的叙述风格和思想上都与众不同，在颓废中暗寓救赎，在暴烈里则多温柔。在这本新小说里，她以一种独特的“剪拼”（Cut－ups）的技巧铺述故事，情节随意识奔走，每一个场景，一切的角色都以第一人称的方式出现，如同影像语言里那种多声齐鸣的景象。小说籍着这样的“剪拼”和“多声呈现”，无论张力或紧凑上都更为增加。对这个狂乱虚无的世界，罪的阴影遂更难隐遁匿藏。
&lt;/p&gt;
&lt;p&gt;
 罪的世界是心灵的漫游和洗净，让我们走进这个七宗罪的世界中！
&lt;/p&gt;
&lt;p&gt;
 是的话请给我留言我发过去，或者直接上传到网盘你下载就好。
&lt;/p&gt;
&lt;span&gt;
 很抱歉，回答者上传的附件已失效
&lt;/span&gt;
</description><pubDate>Wed, 15 May 2024 12:00:07 +0800</pubDate></item><item><title>XR发展的困境-大模型仍难撼动</title><link>https://tyye.cn/post_1714411703wba.html</link><description>&lt;h2&gt;
 引子
&lt;/h2&gt;
2023年，科技巨头纷纷押注大模型，搅动互联网行业。繁荣背后伴随质疑，推动行业回归理性。元宇宙风潮曾经历类似场景，2021 年 Roblox 成为元宇宙第一股，Facebook 更名为 Meta。2023 年，ChatGPT 成为新热点，元宇宙似乎成为被遗忘的风口，XR 行业也随之寒风瑟瑟。
&lt;h2&gt;
 XR 行业遭遇寒冬
&lt;/h2&gt;
投融资遇冷

  2023 年上半年，全球 XR 行业投融资大幅下滑。2021 年，XR 行业投融资金额同比增长 128% 至 554 亿元，2022 年却下滑 11.4%。2023 年一季度降幅继续扩大，同比下降 73.2%。年中略有回升，但 8、9 月再次下降。

   大厂收缩、裁员

  大厂 XR 业务线陷入寒冬。阿里达摩院 XR 实验室高层人事动荡，多位高管离职。腾讯 VR 部门裁撤 300 多人，转变发展路径。号称研发国内首款元宇宙产品希壤的负责人马杰离职。Meta 裁员 2 万多人，微软解散工业元宇宙团队。

   设备销量下滑

  2022 年全球 XR 设备销量同比下跌 21% 至 853 万台。2023 年一季度出货量进一步下跌，同比下降 33%。
&lt;h2&gt;
 寒冬的原因
&lt;/h2&gt;
元宇宙回归理性

  元宇宙被视为前沿研究方向，但爆火后迅速冷却。XR 行业作为元宇宙入口，不可避免受其影响。

   技术瓶颈

  当前 XR 设备存在佩戴舒适度、眩晕、延迟等问题。技术发展瓶颈阻碍行业发展。

   缺乏现象级应用

  XR 行业缺乏杀手级应用，无法吸引广泛用户。

   内容生态不完善

  XR 内容生态尚未成熟，优质内容稀缺。
&lt;h2&gt;
 寒冬的影响
&lt;/h2&gt;
行业萎缩

  投融资减少、大厂收缩，导致行业萎缩。

   技术发展受阻

  技术发展受限，创新步伐放缓。

   用户体验受损

  设备问题、内容缺乏，影响用户体验。
&lt;h2&gt;
 寒冬何时过去？
&lt;/h2&gt;
XR 行业寒冬何时过去尚未可知，但以下因素可能影响其回暖：

   技术进步

  技术突破解决设备佩戴感、眩晕等问题。

   现象级应用诞生

  革命性的应用带动行业爆发。

   内容生态完善

  优质内容涌现，丰富用户体验。
&lt;h2&gt;
 结语
&lt;/h2&gt;
XR 行业寒冬是转型阵痛的体现。善于投资未来的企业应深入洞悉行业问题，把握发展机遇。在技术进步、应用创新、内容完善的推动下，XR 行业有望走出寒冬，迎来新的篇章。
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 大模型是什么意思
&lt;/h2&gt;
&lt;p&gt;
 大模型指的是包含超大规模参数（通常在十亿个以上）的神经网络模型，这些模型在自然语言处理领域得到广泛应用。
&lt;/p&gt;
&lt;p&gt;
 一、大模型特点
&lt;/p&gt;
&lt;p&gt;
 1、大规模数据集
&lt;/p&gt;
&lt;p&gt;
 大模型需要处理大规模的数据集以学习广泛的知识和模式。这有助于模型捕捉更复杂的模式。
&lt;/p&gt;
&lt;p&gt;
 2、多任务学习
&lt;/p&gt;
&lt;p&gt;
 大模型通常可以同时处理多个任务，这使得模型能够学到更广泛的知识和技能。例如，语言模型可以学习词义、语法、语义等多个方面的知识。
&lt;/p&gt;
&lt;p&gt;
 3、模型架构和技术
&lt;/p&gt;
&lt;p&gt;
 大模型可以采用不同的模型架构和技术来优化模型的精度和效率。例如，Transformer模型可以用于处理自然语言处理任务，而卷积神经网络可以用于处理图像识别任务。
&lt;/p&gt;
&lt;p&gt;
 4、参数规模大
&lt;/p&gt;
&lt;p&gt;
 大模型的参数规模非常大，这意味着需要更多的计算资源和存储空间。
&lt;/p&gt;
&lt;p&gt;
 二、大模型优点
&lt;/p&gt;
&lt;p&gt;
 1、强大的语言理解能力
&lt;/p&gt;
&lt;img alt=&quot;大模型&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430012823171441170384146.jpeg&quot;/&gt;
&lt;p&gt;
 大模型由于其巨大的规模和复杂的结构，能够更好地理解和处理自然语言，包括语法、语义和语境。
&lt;/p&gt;
&lt;p&gt;
 2、高精度的预测和决策
&lt;/p&gt;
&lt;p&gt;
 大模型在处理图像、语音和文本等复杂任务时，能够提供更高精度的预测和决策，这在许多领域如自动驾驶、医疗诊断中至关重要。
&lt;/p&gt;
&lt;p&gt;
 3、强大的特征学习和泛化能力
&lt;/p&gt;
&lt;p&gt;
 大模型通过训练能够学习到数据的深层特征，从而具有更强的泛化能力，能够适应不同任务和场景。
&lt;/p&gt;
&lt;p&gt;
 大模型实际应用
&lt;/p&gt;
&lt;p&gt;
 1、自然语言处理
&lt;/p&gt;
&lt;p&gt;
 大模型在自然语言处理领域的应用包括机器翻译、语言理解、聊天机器人等。这些大模型可以生成高质量、流畅的文本，理解人类语言，并能够进行智能对话。
&lt;/p&gt;
&lt;p&gt;
 2、计算机视觉
&lt;/p&gt;
&lt;p&gt;
 大模型在计算机视觉领域的应用包括图像分类、目标检测、图像生成等。例如，GAN网络模型可以生成高度逼真的图像。
&lt;/p&gt;
&lt;p&gt;
 3、语音识别和语音合成
&lt;/p&gt;
&lt;p&gt;
 大模型可以提高语音识别和语音合成的准确度和自然度。
&lt;/p&gt;
&lt;p&gt;
 4、推荐系统
&lt;/p&gt;
&lt;p&gt;
 大模型在推荐系统领域能够更好地理解用户兴趣，从而更准确地为用户推荐适合的内容和产品。
&lt;/p&gt;
&lt;p&gt;
 5、自动驾驶和机器人技术
&lt;/p&gt;
&lt;p&gt;
 大模型可以帮助汽车和机器人更好地理解环境和做出智能决策。
&lt;/p&gt;
&lt;p&gt;
 6、医疗保健
&lt;/p&gt;
&lt;p&gt;
 大模型可以帮助医生在诊断、治疗和研究方面取得更好的效果。
&lt;/p&gt;
&lt;p&gt;
 7、金融服务
&lt;/p&gt;
&lt;p&gt;
 大模型可以帮助银行和金融机构更好地进行风险评估和欺诈检测。
&lt;/p&gt;
&lt;p&gt;
 8、内容生成和设计
&lt;/p&gt;
&lt;p&gt;
 大模型可以用来生成与指令相关的文本、图像、代码等内容，也可以对文字、图片进行设计。
&lt;/p&gt;
&lt;p&gt;
 9、数据分析
&lt;/p&gt;
&lt;p&gt;
 大模型在智能对话方面作用突出，还能够协助进行数据分析。
&lt;/p&gt;
&lt;h2&gt;
 大模型是什么意思
&lt;/h2&gt;
&lt;p&gt;
 大模型（Large Model）是指具有数百万或数十亿个参数的深度神经网络模型，这种模型经过专门的训练过程，能够对大规模数据进行复杂的处理和任务处理。
&lt;/p&gt;
&lt;p&gt;
 大模型需要占用大量的计算资源、存储空间、时间和电力等资源来保证它的训练和部署。相比之下，小模型（Small Model）是指具有较少参数的深度神经网络模型。小模型常常运行速度更快，也更加轻便，适用于一些计算资源和存储空间较少的设备或场景，例如移动设备或嵌入式设备。
&lt;/p&gt;
&lt;p&gt;
 在实际应用中，选择大模型或小模型取决于需要解决的问题和可用资源。大模型通常在自然语言处理、计算机视觉、推荐系统等方面表现良好，它们通常需要高性能计算资源的支持，例如标准的GPU或云端集群。
&lt;/p&gt;
&lt;p&gt;
 小模型适合解决一些简单的、小规模的问题，例如信用卡欺诈检测等，它们具有更快的推理速度，可以在低功耗设备上运行，例如智能手机或物联网设备。
&lt;/p&gt;
&lt;p&gt;
 大模型能解决的问题
&lt;/p&gt;
&lt;p&gt;
 大规模预训练可以有效地从大量标记和未标记的数据中捕获知识，通过将知识存储到大量的参数中并对特定任务进行微调，极大地扩展了模型的泛化能力。在应对不同场景时，不再从0开始，只需要少量的样本进行微调。
&lt;/p&gt;
&lt;p&gt;
 再比如BERT已经训练好了，我们要做下游任务，做一个句子的情感分析。那么就会在BERT的输入token中加入一个 class token，这个和vit的做法一样，encoder以后用class token的向量做一下linear transoformation 和softmax和gt做损失训练，所以这一步可以直接初始化BERT模型的预训练参数做finetune，效果要更好。收敛的又快，loss又低。
&lt;/p&gt;
</description><pubDate>Wed, 15 May 2024 11:50:06 +0800</pubDate></item><item><title>开源-的片面指南-Agents-AI-AutoGPT-一文读懂 (开源cwa1)</title><link>https://tyye.cn/post_17144116503zl.html</link><description>&lt;p&gt;
 Hellofolks，我是Luga，当天咱们继续来聊一下人工智能()生态畛域关系的技术-AutoGPTAIAgents，本文将聚焦在针对不同类型的AutoGPT技术启动解析，使得大家能够了解不同AutoGPT成功机制以及所运行的市场畛域。
&lt;/p&gt;
&lt;h3&gt;
 一、AutoGPT是什么，以及如何定义?
&lt;/h3&gt;
&lt;p&gt;
 AutoGPT是一种翻新的开源自客人工智能(AI)工具，充沛应用了最新的文本生成模型——GPT-3.5和，并与软件和在线服务启动无缝交互。这种生成式预训练Transformer(GPT)模型代表了最先进的言语处置技术，经过深度学习算法依据给定的输入生成与人类相似的文本。
&lt;/p&gt;
&lt;p&gt;
 通常而言，AutoGPT不只能够发生与人类相似的文本，还具有多义务自主口头的才干，为用户提供更宽泛的运行场景和性能。无论是启动智能化写作、智能客服、常识问答还是其余畛域的人机交互，AutoGPT都能施展杰出的作用。经过始终优化和迭代，AutoGPT将引领开源AIAgents的新潮流，为人工智能畛域带来更多翻新和打破。
&lt;/p&gt;
&lt;p&gt;
 AutoGPT可以在没有特定指令的状况下经过创立相似人类的文本答案来口头各种上班。该系统经常使用无监视学习来把握言语的潜在形式，以生成连接的文本。例如，Chef-GPT(一种AutoGPT程序)可以搜查互联网并生成适宜优惠或假期的唯一无二的食谱。此外，AutoGPT是一个顺应性强的程序，具有宽泛的用例，包括内容创立和复杂的编码名目。
&lt;/p&gt;
&lt;p&gt;
 同时，AutoGPT能够自行生成口头义务揭示的才干，以及在线和本地衔接运行程序、软件和服务的才干，这使其与其他人工智能处置打算区离开来。这象征着，基于给定的指标，AutoGPT可以设计出正当的广告方法并创立一个基本的网站。
&lt;/p&gt;
&lt;p&gt;
 此外，处于人工智能的最前沿，应用大型言语模型来打破或者性的界限，AutoGPT搜集和验证外部数据的才干雷同杰出。以及得益于人工智能技术的始终开展，AutoGPT是人工智能如何简化复杂操作并提高各个畛域消费劲的典型示例。
&lt;/p&gt;
&lt;h3&gt;
 二、AutoGPT具有哪些外围特性?
&lt;/h3&gt;
&lt;p&gt;
 通常来讲，作为一特性能弱小的面向义务的对话和智能化工具。AutoGPT具有以下实质性性能，使其在义务智能化方面十分有效，详细如下所示：
&lt;/p&gt;
&lt;h4&gt;
 1、互联网搜查
&lt;/h4&gt;
&lt;p&gt;
 AutoGPT的互联网搜查性能使其能够衔接到宽广的互联网资源，以失掉各种最新的数据、资讯、理想和其余关系消息，从而为义务的成功提供片面的支持和丰盛的内容。
&lt;/p&gt;
&lt;p&gt;
 经过与互联网的实时衔接，AutoGPT可以轻松地搜查并失掉最新的数据和消息。不只如此，AutoGPT还能够依据用户的需求和高低文提供关系的消息，能够依据用户提供的关键词、疑问或主题启动准确的搜查，并生成与之关系的内容。此外，AutoGPT还能够对失掉到的消息启动挑选、整顿和演绎，并以易于了解和经常使用的方式出现给用户。经过智能化的消息处置和总结，AutoGPT可以大大减轻用户的上班累赘，提供高效的消息支持和决策依据。。
&lt;/p&gt;
&lt;h4&gt;
 2、常年和短期记忆治理
&lt;/h4&gt;
&lt;p&gt;
 经过将常年记忆和短期记忆相结合，AutoGPT能够更好地治理和应用之前的对话和消息。同时，在对话中极速检索关系的内容，回忆历史对话，从而更好地理解用户的需求，并提供愈加共性化和有针对性的回答。这种记忆治感性能使得AutoGPT能够模拟人类的记忆环节，并提供愈加智能和连接的对话体验。
&lt;/p&gt;
&lt;h4&gt;
 3、GPT-4文本生成
&lt;/h4&gt;
&lt;p&gt;
 基于在言语了解方面具有更深化的常识和更宽泛的语义了解才干以及更弱小的发明性和高低文感知才干，AutoGPT能够应用GPT-4的弱小特性启动实例的文本生成，以及更高的言语了解和生成才干。GPT-4的改良使得AutoGPT在生成复杂文本方面愈加杰出，能够生成准确、流利、富裕发明性的文本内容，满足各种义务的需求。
&lt;/p&gt;
&lt;h4&gt;
 4、存储和总结文件
&lt;/h4&gt;
&lt;p&gt;
 作为一特性能弱小的工具，AutoGPT不只可以生成文本，还可以存储和治理经常使用GPT-3.5生成的文件。这一性能使得AutoGPT能够轻松地访问、检索和总结之前生成的文本内容，为义务的成功提供片面的支持和便利。
&lt;/p&gt;
&lt;p&gt;
 经过存储和总结文件，AutoGPT能够提供方便的文本治感性能，使得用户可以轻松保留、访问和检索之前生成的文本内容，为义务的成功提供了有力的支持。同时，AutoGPT的文件总结性能还能够协助用户极速失掉文件的外围消息，提高上班效率和准确性。
&lt;/p&gt;
&lt;h4&gt;
 5、插件裁减性能
&lt;/h4&gt;
&lt;p&gt;
 插件裁减性能使得AutoGPT可以依据不同的运行场景和用户需求启动定制化的性能增强以及使得AutoGPT可以与其余工具和服务启动无缝集成。
&lt;/p&gt;
&lt;p&gt;
 经过插件裁减性能，AutoGPT提供了高度可定制的处置打算。用户可以依据自己的需求和运行场景，选用适宜的插件，将其集成到AutoGPT中，从而成功愈加共性化和专业化的性能。这种灵敏性使得AutoGPT在各种义务和畛域中都能施展杰出的体现，并满足不同用户的特定需求。
&lt;/p&gt;
&lt;h3&gt;
 三、AutoGPT是如何上班的?
&lt;/h3&gt;
&lt;p&gt;
 AutoGPT是一种应用OpenAI的GPT-4和API模型的无监视学习人工智能工具，适用于内容生成和编码名目等义务。同时，基于Token经常使用状况，使得用户能够依据实践需求经常使用该工具。
&lt;/p&gt;
&lt;p&gt;
 AutoGPT是一种能够基于无监视的机器学习技术，在没有明白指令的状况下能够学习和改良。为了训练模型，须要将少量的文本数据输入系统，而后系统应用这些数据来学习如何生成人造的文本。模型接纳种子文本作为输入，例如疑问或陈说，而后依据从训练数据中学到的形式和结构生成照应。
&lt;/p&gt;
&lt;p&gt;
 AutoGPT结合了GPT-4和ChatGPT的弱小性能，GPT-4是一种初级生成式言语模型，具有更弱小的文本生成才干，而ChatGPT则专一于提供对话式交互，从而使得AutoGPT在内容生成和对话运行方面都有很高的适用性。
&lt;/p&gt;
&lt;p&gt;
 经过经常使用AutoGPT，用户可以应用其弱小的生成才干来智能生成文章、资讯、产品形容等外容，减轻了人工创作的累赘并提高了消费效率。同时，可以作为一个智能对话系统，与用户启动人造、流利的对话，提供共性化的倡导和处置打算。
&lt;/p&gt;
&lt;p&gt;
 接上去，咱们来看一下AutoGPT的上班原理示用意，详细可参考如下所示：
&lt;/p&gt;
&lt;p&gt;
 要经常使用AutoGPT，咱们可以在OpenAI上创立付费账户并失掉OpenAIAPI。经过经常使用OpenAIAPI，咱们可以将AutoGPT衔接到所创立的OpenAI访问账户，并按经常使用状况付费。该API准许Auto-GPT与OpenAI的GPT-4和ChatGPT启动通讯。OpenAIAPI提供了一系列具有不同复杂水平和性能的模型，以满足各种义务的需求。这些模型可用于内容生成、语义搜查(搜查词汇和短语的含意)以及分类等各种运行。
&lt;/p&gt;
&lt;img alt=&quot;开源&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430012730171441165076701.jpeg&quot;/&gt;
&lt;p&gt;
 经过创立OpenAI帐户并经常使用OpenAIAPI，咱们可以应用AutoGPT的弱小性能来成功各种义务，经常使用内容生成模型来智能生成文章、资讯报道、产品形容等文本内容。同时，咱们还可以经常使用语义搜查模型来启动语义剖析，了解单词和短语的含意和关系性。此外，分类模型也可用于将文本启动分类，协助您更好地组织和剖析数据。
&lt;/p&gt;
&lt;p&gt;
 OpenAIAPI提供了多种模型选用，以满足不同义务的需求。咱们可以依据详细状况选用适宜您运行的模型，从而应用AutoGPT的弱小性能来优化上班效率和品质。
&lt;/p&gt;
&lt;h3&gt;
 四、为什么须要AutoGPT?
&lt;/h3&gt;
&lt;p&gt;
 AutoGPT的才干生成相似人类文本的才干关于各个畛域具有宽泛的影响，包括改良客户服务、内容智能化以及促成人与机器之间更无机的交互。
&lt;/p&gt;
&lt;h4&gt;
 1、在客户服务方面
&lt;/h4&gt;
&lt;p&gt;
 AutoGPT的生成才干可以用于智能回答经常出现疑问、提供共性化的倡导和处置打算，从而改善客户体验并提高服务品质。同时，以以人类般的方式与客户启动交流，了解其需求并提供关系消息，成功更高效、准确和共性化的客户支持。
&lt;/p&gt;
&lt;h4&gt;
 2、在内容智能化方面
&lt;/h4&gt;
&lt;p&gt;
 AutoGPT可以用于智能生成文章、资讯报道、产品形容和社交媒体内容等各种文本方式。AutoGPT可以生成高品质、多样性的文本，减轻人工创作的累赘，并提高内容消费的效率和规模。
&lt;/p&gt;
&lt;h4&gt;
 3、人机交互方面
&lt;/h4&gt;
&lt;p&gt;
 此外，AutoGPT还推进了人与机器之间更无机的交互方式的开展。作为一个中介，AutoGPT能够协助机器更好地理解和生成人类言语，从而成功更人造、流利的对话和交流。这种无机的交互方式使得人工智能技术愈加贴近人类需求，为企业和机构提供更具前景的运行场景。
&lt;/p&gt;
&lt;p&gt;
 因此，从某种意义而言，AutoGPT的发生代表着生成式人工智能的关键停顿，具有机器依据给定输入生成原始和发明性输入的才干。结合人造言语处置、机器学习和深度学习等畛域的尖端技术，Auto-GPT展现了更为先进和复杂的人工智能方式。
&lt;/p&gt;
&lt;p&gt;
 AutoGPT也是整团体工智能技术开展的关键里程碑，标记着机器正变得越来越能够口头以往被以为只要人类才干成功的义务，例如创作原创内容、处置疑问和做出决策。随着技术的始终提高，机器的复杂性将进一步优化，其对社会和经济的影响也将日益清楚。
&lt;/p&gt;
&lt;h3&gt;
 五、AutoGPT的运行场景有哪些?
&lt;/h3&gt;
&lt;p&gt;
 AutoGPT可用于许多不同的用途。最突出的运行包括如下，详细：
&lt;/p&gt;
&lt;h4&gt;
 1、内容创作
&lt;/h4&gt;
&lt;p&gt;
 AutoGPT在内容创作畛域对作家来说是一项弱小而有用的工具，能够生成高品质、与特定主题关系的文本，为作家提供灵感、新观念和论证。
&lt;/p&gt;
&lt;p&gt;
 此外，AutoGPT还能够提供校正和编辑的协助，协助作家改良和优化他们的写作水平。作家可以应用AutoGPT来提高创作效率、拓展创作畛域，并为读者提供更杰出的作品。
&lt;/p&gt;
&lt;h4&gt;
 2、客户支持
&lt;/h4&gt;
&lt;p&gt;
 在客户支持畛域，AutoGPT是一种十分有价值的工具，能够针对经常出现疑问生成正当的答案或经常发生的疑问给予处置打算，提供智能化的客户支持。
&lt;/p&gt;
&lt;p&gt;
 这种智能化能够节俭期间和资源，并提供极速、准确的协助。同时，模型还可以经过交互式对话提供更深化和共性化的支持，提高客户满意度。但是，在特定状况下，人工干预依然或者是必要的，以应回答杂疑问和情感交流。
&lt;/p&gt;
&lt;h4&gt;
 3、言语翻译
&lt;/h4&gt;
&lt;p&gt;
 在环球化的当天，超越言语阻碍启动有效沟通至关关键。AutoGPT应用其训练环节中学到的宽泛言语常识和形式，能够了解不同言语之间的语义和结构差异，并生成相应的翻译文本，促成跨文明交流和内容本地化。经过应用AutoGPT启动言语翻译，用户可以更轻松地启动跨言语沟通，并成功环球化的指标。
&lt;/p&gt;
&lt;h4&gt;
 4、代码生成
&lt;/h4&gt;
&lt;p&gt;
 AutoGPT在协助程序开发者方面有多种方式。不只可以生成代码片段、处置经常出现编程疑问，并还能为程序开发者提供创意和灵感。这些性能能够提高程序员的效率、缩小重复性上班，并促成翻新和优化。但是，程序员在经常使用AutoGPT生成的代码时应启动适当的审查和测试，以确保最终代码的品质和牢靠性。
&lt;/p&gt;
&lt;p&gt;
 以上为开源AIAgentsAutoGPT技术的修正解析，更多关于AIAgents的内容可参考后续文章所述，谢谢!
&lt;/p&gt;
&lt;p&gt;
 Reference：
&lt;/p&gt;
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 agentgpt和autogpt有什么区别
&lt;/h2&gt;
&lt;p&gt;
 底层语言模型不一致。
  
  autogpt是一个实验性的开源应用程序，它由GPT-4驱动，但有别于agentgpt的是底层语言模型不一致。
&lt;/p&gt;
&lt;h2&gt;
 大模型 | AI 智能体
&lt;/h2&gt;
&lt;p&gt;
 大模型驱动的AI智能体革命
&lt;/p&gt;
&lt;p&gt;
 近期，AI智能体（AI Agents）的讨论热度急剧升温，这背后是大语言模型（如GPT-4）的崛起，它们被视作构建智能体的基石。大模型的潜力因AI Agents的出现而得以扩展，从电商文案创作到程序设计，再到解决通用问题，它们展现出无尽的可能性。在Product Hunt平台上，超过百个AI Agents项目展示了人工智能在各个领域的创新应用和深度发展。
&lt;/p&gt;
&lt;p&gt;
 定义与理解
&lt;/p&gt;
&lt;p&gt;
 AI智能体是具备感知环境、决策与执行能力的智能实体，它们展现出自主性和自适应性，凭借AI赋予的技能，能够独立完成任务，并在执行过程中自我优化。它们与传统AI的区别在于，AI Agent能够独立思考，运用工具去达成目标，而非仅依赖预设指令。
&lt;/p&gt;
&lt;p&gt;
 智能体的进化历程
&lt;/p&gt;
&lt;p&gt;
 早在1983年，马文·明斯基在《心智社会》中首次提出智能体概念，他强调了智能体间的互动和协作对于智能提升的重要性。早期的智能体，如CAMEL，受到了明斯基理论的启发，从符号处理的初级阶段发展到多智能体系统的深入研究，如互联网智能体的自我学习能力。
&lt;/p&gt;
&lt;p&gt;
 随着时间推移，定义不断细化，智能体需能与环境互动，通过反馈调整策略。AlphaGo等强化学习模型的突破，标志着智能体技术的飞跃，如今的大语言模型智能体则通过自然语言交互，具备规划、记忆等高级功能，如AutoGPT和BabyAGI的单体行动，以及CAMEL等多智能体的合作模式。
&lt;/p&gt;
&lt;p&gt;
 大模型与AI Agent的融合
&lt;/p&gt;
&lt;p&gt;
 大模型，如LLM，因其强大的文本处理能力而成为AI Agent的基石。AI Agent超越了被动的工具角色，拥有主动决策和执行任务的能力，它不仅回应用户的指令，还能根据目标自我规划并生成提示。这种差异体现在交互方式上：大模型依赖明确的提示，而AI Agent则能自我驱动。
&lt;/p&gt;
&lt;p&gt;
 AI Agent的核心特性
&lt;/p&gt;
&lt;p&gt;
 分类与应用
&lt;/p&gt;
&lt;p&gt;
 AI Agent分为自主智能体和生成智能体两大类。前者如Auto-GPT，提供高效的服务；后者如模拟环境中的交互实体，具备自我驱动和学习能力。例如，复旦大学FudanNLP团队的综述论文揭示了基于大模型的智能体研究的最新动态。
&lt;/p&gt;
</description><pubDate>Wed, 15 May 2024 11:40:06 +0800</pubDate></item><item><title>使用Python库优化机器学习工作流程 (使用PYTHON编写程序)</title><link>https://tyye.cn/post_1714411579dzg.html</link><description>&lt;p&gt;
 在现今这个数据驱动的时代，机器学习已经成为了一种不可或缺的技术。对于日常工作者来说，他们可能会被复杂的机器学习算法和代码所困扰。别担心，今天我们将介绍一些Python库，它们将极大地简化您的工作流程，提升效率。
&lt;/p&gt;
&lt;h2&gt;
 1. Scikit-learn
&lt;/h2&gt;
&lt;p&gt;
 Scikit-learn，也被称为sklearn，是Python中最流行的机器学习库之一。它提供了大量的算法和工具，包括分类、回归、聚类、降维等，并提供了易于使用的API。使用scikit-learn，您可以快速地训练模型，进行预测，以及评估模型的性能。
&lt;/p&gt;
&lt;h2&gt;
 2. Pandas
&lt;/h2&gt;
&lt;p&gt;
 Pandas是一个强大的数据分析库，它可以让您更轻松地处理和分析数据。通过Pandas，您可以加载和保存数据、转换数据格式、合并数据集、计算统计信息等。Pandas的DataFrame对象提供了一种强大的方式来处理表格数据，而Series对象则提供了一种灵活的方式来处理单个数据序列。
&lt;/p&gt;
&lt;h2&gt;
 3. NumPy
&lt;/h2&gt;
&lt;p&gt;
 NumPy是一个Python库，用于处理大型多维数组和矩阵，支持高级数学函数和逻辑函数。它是Pandas的核心依赖项之一，也是许多其他Python库的基础。使用NumPy可以更高效地处理数据，加快计算速度。
&lt;/p&gt;
&lt;h2&gt;
 4. Matplotlib
&lt;/h2&gt;
&lt;p&gt;
 Matplotlib是一个用于创建高质量图表的Python库。它提供了丰富的接口，可以创建各种类型的图表，包括折线图、散点图、柱状图、饼图等。通过Matplotlib，您可以轻松地将您的数据可视化，更好地理解数据。
&lt;/p&gt;
&lt;h2&gt;
 5. Seaborn
&lt;/h2&gt;
&lt;img alt=&quot;使用Python库优化机器学习工作流程&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430012619171441157952290.jpeg&quot;/&gt;
&lt;p&gt;
 Seaborn是一个基于Matplotlib的高级数据可视化库。它提供了一个更高级别的接口，可以帮助您创建各种复杂的图表类型，包括热力图、Prplot等。Seaborn的图表通常比Matplotlib的图表更具可读性和吸引力。
&lt;/p&gt;
&lt;h2&gt;
 6. TensorFlow
&lt;/h2&gt;
&lt;p&gt;
 TensorFlow是一个用于机器学习和深度学习的开源框架。它提供了一个灵活的API，可以用于构建和训练各种类型的神经网络模型，包括卷积神经网络（CNN）、循环神经网络（RNN）、转换器等。通过TensorFlow，您可以快速地构建和训练深度学习模型。
&lt;/p&gt;
&lt;h2&gt;
 7. PyTorch
&lt;/h2&gt;
&lt;p&gt;
 PyTorch是另一个用于机器学习和深度学习的开源框架。与TensorFlow相比，它更加灵活和易于使用。PyTorch支持动态计算图，使得构建神经网络模型变得更加简单和直观。它也支持GPU加速，可以大大提高训练速度。
&lt;/p&gt;
&lt;h2&gt;
 结论
&lt;/h2&gt;
&lt;p&gt;
 这些Python库都是机器学习领域中非常流行的工具，它们可以帮助您更高效地处理和分析数据、构建和训练模型、可视化数据等。通过使用这些库，您可以极大地改变您的机器学习工作流程，提高效率和生产力。
&lt;/p&gt;
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 优化Python编程的4个妙招
&lt;/h2&gt;
&lt;p&gt;
 1. () – 特征工程瑰宝
&lt;/p&gt;
&lt;p&gt;
 Pandas 库已经非常优化了，但是大部分人都没有发挥它的最大作用。想想它一般会用于数据科学项目中的哪些地方。一般首先能想到的就是特征工程，即用已有特征创造新特征。其中最高效的方法之一就是()，即Pandas中的apply函数。
&lt;/p&gt;
&lt;p&gt;
 在()中，可以传递用户定义功能并将其应用到Pandas Series的所有数据点中。这个函数是Pandas库最好的扩展功能之一，它能根据所需条件分隔数据。之后便能将其有效应用到数据处理任务中。
&lt;/p&gt;
&lt;p&gt;
 2.  – Python数据操作绝妙技巧
&lt;/p&gt;
&lt;p&gt;
 所有和数据处理打交道的数据科学家(差不多所有人了!)都应该学会这个方法。
&lt;/p&gt;
&lt;p&gt;
 很多时候，数据科学家需要根据一些条件更新数据集中某列的某些值。就是此类问题最优的解决方法。
&lt;/p&gt;
&lt;p&gt;
 3. Python函数向量化
&lt;/p&gt;
&lt;p&gt;
 另一种解决缓慢循环的方法就是将函数向量化。这意味着新建函数会应用于输入列表，并返回结果数组。在Python中使用向量化能至少迭代两次，从而加速计算。
&lt;/p&gt;
&lt;p&gt;
 事实上，这样不仅能加速代码运算，还能让代码更加简洁清晰。
&lt;/p&gt;
&lt;p&gt;
 4. Python多重处理
&lt;/p&gt;
&lt;p&gt;
 多重处理能使系统同时支持一个以上的处理器。
&lt;/p&gt;
&lt;p&gt;
 此处将数据处理分成多个任务，让它们各自独立运行。处理庞大的数据集时，即使是apply函数也显得有些迟缓。
&lt;/p&gt;
&lt;p&gt;
 关于优化Python编程的4个妙招，青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣，希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容，可以点击本站的其他文章进行学习。
&lt;/p&gt;
&lt;h2&gt;
 13个最常用的Python深度学习库介绍
&lt;/h2&gt;
&lt;p&gt;
 13个最常用的Python深度学习库介绍如果你对深度学习和卷积神经网络感兴趣，但是并不知道从哪里开始，也不知道使用哪种库，那么这里就为你提供了许多帮助。
  
  在这篇文章里，我详细解读了9个我最喜欢的Python深度学习库。
  
  这个名单并不详尽，它只是我在计算机视觉的职业生涯中使用并在某个时间段发现特别有用的一个库的列表。
  
  这其中的一些库我比别人用的多很多，尤其是Keras、mxnet和sklearn-theano。
  
  其他的一些我是间接的使用，比如Theano和TensorFlow（库包括Keras、deepy和Blocks等）。
  
  另外的我只是在一些特别的任务中用过（比如nolearn和他们的Deep Belief Network implementation）。
  
  这篇文章的目的是向你介绍这些库。
  
  我建议你认真了解这里的每一个库，然后在某个具体工作情境中你就可以确定一个最适用的库。
  
  我想再次重申，这份名单并不详尽。
  
  此外，由于我是计算机视觉研究人员并长期活跃在这个领域，对卷积神经网络（细胞神经网络）方面的库会关注更多。
  
  我把这个深度学习库的列表分为三个部分。
  
  第一部分是比较流行的库，你可能已经很熟悉了。
  
  对于这些库，我提供了一个通俗的、高层次的概述。
  
  然后，针对每个库我详细解说了我的喜欢之处和不喜欢之处，并列举了一些适当的应用案例。
  
  第二部分进入到我个人最喜欢的深度学习库，也是我日常工作中使用最多的，包括：Keras、mxnet和sklearn-theano等。
  
  最后，我对第一部分中不经常使用的库做了一个“福利”板块，你或许还会从中发现有用的或者是在第二板块中我还没有尝试过但看起来很有趣的库。
  
  接下来就让我们继续探索。
  
  针对初学者：Caffe提到“深度学习库”就不可能不说到Caffe。
  
  事实上，自从你打开这个页面学习深度学习库，我就敢打保票你肯定听说Caffe。
  
  那么，究竟Caffe是什么呢？Caffe是由Berkeley Vision and Learning Center（BVLC）建立的深度学习框架。
  
  它是模块化的，速度极快。
  
  而且被应用于学术界和产业界的start-of-the-art应用程序中。
  
  事实上，如果你去翻阅最新的深度学习出版物（也提供源代码），你就很可能会在它们相关的GitHub库中找到Caffe模型。
  
  虽然Caffe本身并不是一个Python库，但它提供绑定到Python上的编程语言。
  
  我们通常在新领域开拓网络的时候使用这些绑定。
  
  我把Caffe放在这个列表的原因是它几乎被应用在各个方面。
  
  你可以在一个空白文档里定义你的模型架构和解决方案，建立一个JSON文件类型的配置文件。
  
  Caffe二进制文件提取这些文件并培训你的网络。
  
  Caffe完成培训之后，你可以把你的网络和经过分类的新图像通过Caffe二进制文件，更好的就直接通过Python或MATLAB的API。
  
  虽然我很喜欢Caffe的性能（它每天可以在K40 GPU上处理60万张图片），但相比之下我更喜欢Keras和mxnet。
  
  主要的原因是，在文件内部构建架构可能会变得相当乏味和无聊。
  
  更重要的是， Caffe不能用编程方式调整超参数！由于这两个原因，在基于Python的API中我倾向于对允许我实现终端到终端联播网的库倾斜（包括交叉验证和调整超参数）。
  
  Theano在最开始我想说Theano是美丽的。
  
  如果没有Theano，我们根本不会达到现有的深度学习库的数量（特别是在Python）。
  
  同样的，如果没有numpy，我们就不会有SciPy、scikit-learn和 scikit-image,，同样可以说是关于Theano和深度学习更高级别的抽象。
  
  非常核心的是，Theano是一个Python库，用来定义、优化和评估涉及多维数组的数学表达式。
  
  Theano通过与numpy的紧密集成，透明地使用GPU来完成这些工作。
  
  虽然可以利用Theano建立深度学习网络，但我倾向于认为Theano是神经网络的基石，同样的numpy是作为科学计算的基石。
  
  事实上，大多数我在文章中提到的库都是围绕着Theano，使自己变得更加便利。
  
  不要误会我的意思，我爱Theano，我只是不喜欢用Theano编写代码。
  
  在Theano建设卷积神经网络就像只用本机Python中的numpy写一个定制的支持向量机（SVM），当然这个对比并不是很完美。
  
  你可以做到吗？当然可以。
  
  它值得花费您的时间和精力吗？嗯，也许吧。
  
  这取决于你是否想摆脱低级别或你的应用是否需要。
  
  就个人而言，我宁愿使用像Keras这样的库，它把Theano包装成更有人性化的API，同样的方式，scikit-learn使机器学习算法工作变得更加容易。
  
  TensorFlow与Theano类似，TensorFlow是使用数据流图进行数值计算的开源库（这是所有神经网络固有的特征）。
  
  最初由谷歌的机器智能研究机构内的Google Brain Team研究人员开发，此后库一直开源，并提供给公众。
  
  相比于Theano ，TensorFlow的主要优点是分布式计算，特别是在多GPU的环境中（虽然这是Theano正在攻克的项目）。
  
  除了用TensorFlow而不是Theano替换Keras后端，对于TensorFlow库我并没有太多的经验。
  
  然而在接下来的几个月里，我希望这有所改变。
  
  LasagneLasagne是Theano中用于构建和训练网络的轻量级库。
  
  这里的关键词是轻量级的，也就意味着它不是一个像Keras一样围绕着Theano的重包装的库。
  
  虽然这会导致你的代码更加繁琐，但它会把你从各种限制中解脱出来，同时还可以让您根据Theano进行模块化的构建。
  
  简而言之：Lasagne的功能是Theano的低级编程和Keras的高级抽象之间的一个折中。
  
  我最喜欢的：Keras如果我必须选出一个最喜欢的深度学习Python库，我将很难在Keras和mxnet中做出抉择——但最后，我想我会选Keras。
  
  说真的，Keras的好处我说都说不完。
  
  Keras是一个最低限度的、模块化的神经网络库，可以使用Theano或TensorFlow作为后端。
  
  Keras最主要的用户体验是，从构思到产生结果将会是一个非常迅速的过程。
  
  在Keras中架构网络设计是十分轻松自然的。
  
  它包括一些state-of-the-art中针对优化（Adam，RMSProp）、标准化（BatchNorm）和激活层（PReLU，ELU，LeakyReLU）最新的算法。
  
  Keras也非常注重卷积神经网络，这也是我十分需要的。
  
  无论它是有意还是无意的，我觉得从计算机视觉的角度来看这是非常有价值的。
  
  更重要的是，你既可以轻松地构建基于序列的网络（其中输入线性流经网络）又可以创建基于图形的网络（输入可以“跳过”某些层直接和后面对接）。
  
  这使得创建像GoogLeNet和SqueezeNet这样复杂的网络结构变得容易得多。
  
  我认为Keras唯一的问题是它不支持多GPU环境中并行地训练网络。
  
  这可能会也可能不会成为你的大忌。
  
  如果我想尽快地训练网络，那么我可能会使用mxnet。
  
  但是如果我需要调整超参数，我就会用Keras设置四个独立的实验（分别在我的Titan X GPUs上运行）并评估结果。
  
  mxnet我第二喜欢的深度学习Python库无疑就是mxnet（重点也是训练图像分类网络）。
  
  虽然在mxnet中站立一个网络可能需要较多的代码，但它会提供给你惊人数量的语言绑定（C ++、Python、R、JavaScript等）。
  
  Mxnet库真正出色的是分布式计算，它支持在多个CPU / GPU机训练你的网络，甚至可以在AWS、Azure以及YARN集群。
  
  它确实需要更多的代码来设立一个实验并在mxnet上运行（与Keras相比），但如果你需要跨多个GPU或系统分配训练，我推荐mxnet。
  
  sklearn-theano有时候你并不需要终端到终端的培养一个卷积神经网络。
  
  相反，你需要把CNN看作一个特征提取器。
  
  当你没有足够的数据来从头培养一个完整的CNN时它就会变得特别有用。
  
  仅仅需要把你的输入图像放入流行的预先训练架构，如OverFeat、AlexNet、VGGNet或GoogLeNet，然后从FC层提取特征（或任何您要使用的层）。
  
  总之，这就是sklearn-theano的功能所在。
  
  你不能用它从头到尾的训练一个模型，但它的神奇之处就是可以把网络作为特征提取器。
  
  当需要评估一个特定的问题是否适合使用深度学习来解决时，我倾向于使用这个库作为我的第一手判断。
  
  nolearn我在PyImageSearch博客上用过几次nolearn，主要是在我的MacBook Pro上进行一些初步的GPU实验和在Amazon EC2 GPU实例中进行深度学习。
  
  Keras把 Theano和TensorFlow包装成了更具人性化的API，而nolearn也为Lasagne做了相同的事。
  
  此外，nolearn中所有的代码都是与scikit-learn兼容的，这对我来说绝对是个超级的福利。
  
  我个人不使用nolearn做卷积神经网络（CNNs），但你当然也可以用（我更喜欢用Keras和mxnet来做CNNs）。
  
  我主要用nolearn来制作Deep Belief Networks (DBNs)。
  
  DIGITSDIGITS并不是一个真正的深度学习库（虽然它是用Python写的）。
  
  DIGITS（深度学习GPU培训系统）实际上是用于培训Caffe深度学习模式的web应用程序（虽然我认为你可以破解源代码然后使用Caffe以外其他的后端进行工作，但这听起来就像一场噩梦）。
  
  如果你曾经用过Caffe，那么你就会知道通过它的终端来定义文件、生成图像数据、运行网络并监管你的网络训练是相当繁琐的。
  
  DIGITS旨在通过让你在浏览器中执行这些任务来解决这个问题。
  
  此外，DIGITS的用户界面非常出色，它可以为你提供有价值的统计数据和图表作为你的模型训练。
  
  另外，你可以通过各种输入轻松地可视化网络中的激活层。
  
  最后，如果您想测试一个特定的图像，您可以把图片上传到你的DIGITS服务器或进入图片的URL，然后你的Caffe模型将会自动分类图像并把结果显示在浏览器中。
  
  干净利落！Blocks说实话，虽然我一直想尝试，但截至目前我的确从来没用过Blocks（这也是我把它包括在这个列表里的原因）。
  
  就像许多个在这个列表中的其他库一样，Blocks建立在Theano之上，呈现出一个用户友好型的API。
  
  deepy如果让你猜deepy是围绕哪个库建立的，你会猜什么？没错，就是Theano。
  
  我记得在前一段时间用过deepy（做了初始提交），但在接下里的大概6-8个月我都没有碰它了。
  
  我打算在接下来的博客文章里再尝试一下。
  
  pylearn2虽然我从没有主动地使用pylearn2，但由于历史原因，我觉得很有必要把它包括在这个列表里。
  
  Pylearn2不仅仅是一般的机器学习库（地位类似于scikit-learn），也包含了深度学习算法的实现。
  
  对于pylearn2我最大的担忧就是（在撰写本文时），它没有一个活跃的开发者。
  
  正因为如此，相比于像Keras和mxnet这样的有积极维护的库，推荐pylearn2我还有些犹豫。
  
  Deeplearning4j这本应是一个基于Python的列表，但我想我会把Deeplearning4j包括在这里，主要是出于对他们所做事迹的无比崇敬——Deeplearning4j为JVM建立了一个开源的、分布式的深度学习库。
  
  如果您在企业工作，你可能会有一个塞满了用过的Hadoop和MapReduce服务器的储存器。
  
  也许这些你还在用，也许早就不用了。
  
  你怎样才能把这些相同的服务器应用到深度学习里？事实证明是可以的——你只需要Deeplearning4j。
  
  总计以上就是本文关于13个最常用的Python深度学习库介绍的全部内容
&lt;/p&gt;
</description><pubDate>Wed, 15 May 2024 11:30:06 +0800</pubDate></item><item><title>NumPy数据分析库-解锁数值计算的无限潜能！ (numpy数组切片操作)</title><link>https://tyye.cn/post_1714411518u9b.html</link><description>&lt;h2&gt;
 Introduction
&lt;/h2&gt;
&lt;p&gt;
 NumPy (Numerical Python) is an indispensable library in Python data analysis. It provides Python with powerful numerical computing capabilities, making it efficient and convenient to handle arrays, matrices, and mathematical operations.
&lt;/p&gt;
&lt;h2&gt;
 Basic Operations
&lt;/h2&gt;
&lt;h3&gt;
 1. Installation and Import
&lt;/h3&gt;
&lt;pre&gt;pip install numpy
import numpy as np
  &lt;/pre&gt;
&lt;h3&gt;
 2. Creating NumPy Arrays
&lt;/h3&gt;
&lt;p&gt;
 NumPy arrays are the core data structure in NumPy and can store numerical data in one or multiple dimensions.
&lt;/p&gt;
&lt;pre&gt; Create a 1D array
arr = np.array([1, 2, 3, 4, 5])

 Create a 2D array
matrix = np.array([[1, 2, 3], [4,5, 6], [7, 8, 9]])

 Create an array with a specific range
arr = np.arange(10)   [0, 1, 2, ..., 9]
arr = np.linspace(0, 1, 5)   [0.0, 0.25, 0.5, 0.75, 1.0]
arr = np.random.randint(0, 10, 5)   Random integers between 0 and 10
  &lt;/pre&gt;
&lt;h3&gt;
 3. Mathematical Operations
&lt;/h3&gt;
&lt;p&gt;
 NumPy offers various mathematical operations to perform on arrays.
&lt;/p&gt;
&lt;pre&gt;result = arr1 + arr2   Addition
result = arr1 - arr2   Subtraction
result = arr1  arr2   Multiplication
result = arr1 / arr2   Division
result = np.sqrt(arr)   Square root
  &lt;/pre&gt;
&lt;h3&gt;
 4. Data Slicing and Indexing
&lt;/h3&gt;
&lt;p&gt;
 NumPy arrays support slicing and indexing operations similar to Python lists.
&lt;/p&gt;
&lt;pre&gt; Slice an array
subset = arr[:3]   First three elements

 Get a specific element from a 2D array
element = matrix[1, 2]   Element in row 2, column 3
  &lt;/pre&gt;
&lt;h3&gt;
 5. Array Shape Manipulation
&lt;/h3&gt;
&lt;p&gt;
 NumPy allows you to modify the shape of arrays, including changing dimensions, transposing, and reshaping.
&lt;/p&gt;
&lt;pre&gt; Change array dimension
new_matrix = arr.reshape(2, 3)   Convert 1D to 2D

 Transpose an array
transposed_matrix = matrix.T   Swap rows and columns

 Reshape an array
reshaped_arr = matrix.ravel()   Convert 2D to 1D
  &lt;/pre&gt;
&lt;h3&gt;
 6. Broadcasting
&lt;/h3&gt;
&lt;img alt=&quot;NumPy数据分析库&quot; src=&quot;https://tyye.cn/zb_users/upload/2024/04/20240430012518171441151832470.jpeg&quot;/&gt;
&lt;p&gt;
 NumPy&#039;s broadcasting feature enables operations between arrays of different shapes without explicit dimension expansion.
&lt;/p&gt;
&lt;pre&gt; Broadcasting example: Add a 1D array to a 2D array
result = arr + matrix
  &lt;/pre&gt;
&lt;h2&gt;
 Advanced Features
&lt;/h2&gt;
&lt;h3&gt;
 1. Random Number Generation
&lt;/h3&gt;
&lt;p&gt;
 NumPy provides built-in random number generation functions that can generate random numbers from various distributions.
&lt;/p&gt;
&lt;pre&gt; Generate random integers between 0 and 10
random_integers = np.random.randint(0, 10, 5)

 Generate random numbers from a normal distribution
normal_distribution = np.random.normal(0, 1, 100)
  &lt;/pre&gt;
&lt;h3&gt;
 2. File Operations
&lt;/h3&gt;
&lt;p&gt;
 NumPy includes functions for loading and saving arrays to and from files.
&lt;/p&gt;
&lt;pre&gt; Load an array from a file
array = np.load(&#039;data.npy&#039;)

 Save an array to a file
np.save(&#039;data.npy&#039;, array)
  &lt;/pre&gt;
&lt;h3&gt;
 3. Performance Optimization
&lt;/h3&gt;
&lt;p&gt;
 NumPy offers several techniques to optimize performance, including vectorization and Cython usage.
&lt;/p&gt;
&lt;pre&gt; Vectorized operation for speed improvement
result = np.log(arr)
  &lt;/pre&gt;
&lt;h2&gt;
 Conclusion
&lt;/h2&gt;
&lt;p&gt;
 NumPy is a powerful tool for data analysis inPython. It provides efficient ways to create, manipulate, and perform mathematical operations on arrays, making it essential for tasks involving numerical data analysis and scientific computing.
&lt;/p&gt;
&lt;hr class=&quot;zdmcj_hr&quot;/&gt;
&lt;h2&gt;
 Python数据分析库有哪些
&lt;/h2&gt;
&lt;p&gt;
 Python数据分析必备的第三方库：
&lt;/p&gt;
&lt;p&gt;
 Pandas是Python强大、灵活的数据分析和探索工具，包含Serise、DataFrame等高级数据结构和工具，安装Pandas可使Python中处理数据非常快速和简单。
&lt;/p&gt;
&lt;p&gt;
 Pandas是Python的一个数据分析包，Pandas最初使用用作金融数据分析工具而开发出来，因此Pandas为时间序列分析提供了很好的支持。
&lt;/p&gt;
&lt;p&gt;
 Pandas是为了解决数据分析任务而创建的，Pandas纳入了大量的库和一些标准的数据模型，提供了高效的操作大型数据集所需要的工具。Pandas提供了大量是我们快速便捷的处理数据的函数和方法。Pandas包含了高级数据结构，以及让数据分析变得快速、简单的工具。
&lt;/p&gt;
&lt;p&gt;
 Numpy可以提供数组支持以及相应的高效处理函数，是Python数据分析的基础，也是Scipy、Pandas等数据处理和科学计算库最基本的函数功能库，且其数据类型对Python数据分析十分有用。
&lt;/p&gt;
&lt;p&gt;
 Numpy提供了两种基本的对象：ndarray和ufunc。ndarray是存储单一数据类型的多维数组，而ufunc是能够对数组进行处理的函数。
&lt;/p&gt;
&lt;p&gt;
 3、Matplotlib
&lt;/p&gt;
&lt;p&gt;
 Matplotlib是强大的数据可视化工具和作图库，是主要用于绘制数据图表的Python库，提供了绘制各类可视化图形的命令字库、简单的接口，可以方便用户轻松掌握图形的格式，绘制各类可视化图形。
&lt;/p&gt;
&lt;p&gt;
 Matplotlib是Python的一个可视化模块，他能方便的只做线条图、饼图、柱状图以及其他专业图形。
&lt;/p&gt;
&lt;p&gt;
 Matplotlib是基于Numpy的一套Python包，这个包提供了丰富的数据绘图工具，主要用于绘制一些统计图形。
&lt;/p&gt;
&lt;p&gt;
 SciPy是一组专门解决科学计算中各种标准问题域的包的集合，包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算等，这些对数据分析和挖掘十分有用。
&lt;/p&gt;
&lt;p&gt;
 SciPy是一款方便、易于使用、专门为科学和工程设计的Python包，它包括统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解器等。Scipy依赖于Numpy，并提供许多对用户友好的和有效的数值例程，如数值积分和优化。
&lt;/p&gt;
&lt;p&gt;
 Keras是深度学习库，人工神经网络和深度学习模型，基于Theano之上，依赖于Numpy和Scipy，利用它可以搭建普通的神经网络和各种深度学习模型，如语言处理、图像识别、自编码器、循环神经网络、递归审计网络、卷积神经网络等。
&lt;/p&gt;
&lt;p&gt;
 Scrapy是专门为爬虫而生的工具，具有URL读取、HTML解析、存储数据等功能，可以使用Twisted异步网络库来处理网络通讯，架构清晰，且包含了各种中间件接口，可以灵活的完成各种需求。
&lt;/p&gt;
&lt;p&gt;
 Gensim是用来做文本主题模型的库，常用于处理语言方面的任务，支持TF-IDF、LSA、LDA和Word2Vec在内的多种主题模型算法，支持流式训练，并提供了诸如相似度计算、信息检索等一些常用任务的API接口。
&lt;/p&gt;
&lt;h2&gt;
 python 数据挖掘需要用哪些库和工具
&lt;/h2&gt;
&lt;p&gt;
 1、NumpyNumpy是Python科学计算的基础包，它提供了很多功能：快速高效的多维数组对象ndarray、用于对数组执行元素级计算以及直接对数组执行数学运算的函数、用于读写硬盘上基于数组的数据集的工具、线性代数运算、傅里叶变换以及随机数生成等。
  
  NumPy在数据分析方面还有另外一个主要作用，即作为在算法和库之间传递数据的容器。
  
  2、PandasPandas提供了快速便捷处理结构化数据的大量数据结构和函数。
  
  自从2010年出现以来，它助使Python成为强大而高效的数据分析环境。
  
  其中用得最多的Pandas对象是DataFrame，它是一个面向列的二维表结构，另一个是Series，一个一维的标签化数组对象。
  
  Pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据库灵活的数据处理功能。
  
  还提供了复杂精细的索引功能，能更加便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。
  
  3、matplotlibmatplotlib是最流行的用于绘制图表和其他二维数据可视化的Python库。
  
  它最初由John (JDH)创建，目前由一个庞大的开发团队维护。
  
  它非常适合创建出版物上用的图表。
  
  虽然还有其他的Python可视化库，但matplotlib应用最为广泛。
  
  4、SciPySciPy是一组专门解决科学计算中各种标准问题域的包的集合，它与Numpy结合使用，便形成了一个相当完备和成熟的计算平台，可以处理多种传统的科学计算问题。
  
  5、scikit-learn2010年诞生以来，scikit-learn成为了Python通用机器学习工具包。
  
  它的子模块包括：分类、回归、聚类、降维、选型、预处理等。
  
  与pandas、statsmodels和IPython一起，scikit-learn对于Python成为高效数据科学编程语言起到了关键作用。
  
  6、statsmodelsstatsmodels是一个统计分析包，起源于斯坦福大学统计学教授，他设计了多种流行于R语言的回归分析模型。
  
  Skipper Seabold和Josef Perktold在2010年正式创建了statsmodels项目，随后汇聚了大量的使用者和贡献者。
  
  与scikit-learn比较，statsmodels包含经典统计学和经济计量学的算法。
&lt;/p&gt;
</description><pubDate>Wed, 15 May 2024 11:20:05 +0800</pubDate></item></channel></rss>