<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Number_In的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Number_In</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Number_In]]></copyright><item><title><![CDATA[【Protocol Buffers】概述]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/148050255</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/148050255</guid><author>Number_In</author><pubDate>Sun, 18 May 2025 21:26:31 +0800</pubDate><description><![CDATA[软件产品向后兼容是标准做法，但向前兼容则不太常见。只要在更新.proto定义时遵循一些简单实践旧代码将能够无问题地读取新消息，忽略任何新增字段。对于旧代码，已删除的字段将具有默认值，已删除的重复字段将为空。新代码也将透明地读取旧消息。新字段不会出现在旧消息中；在这些情况下，Protocol Buffers会提供一个合理的默认值。在定义.proto文件时，您可以指定基数（单一或重复）。在proto2和proto3中，您还可以指定字段是否为可选。在proto3中，将字段设置为可选会。]]></description><category></category></item><item><title><![CDATA[Protocol Buffers介绍]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/148049874</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/148049874</guid><author>Number_In</author><pubDate>Sun, 18 May 2025 20:59:48 +0800</pubDate><description><![CDATA[Protocol buffers 是谷歌推出的语言无关，平台无关，可扩展的结构化数据序列化机制-可以理解为xml的替代平但是体积更小、速度更快、更简单。您只需定义一次希望数据如何被结构化，然后就可以使用生成的特殊源代码，轻松地将结构化数据写入和读取到各种数据流中，并使用多种编程语言进行操作。]]></description><category></category></item><item><title><![CDATA[【源码 JDK 1.8】ArrayList的源码解读]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/139075372</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/139075372</guid><author>Number_In</author><pubDate>Mon, 20 May 2024 21:27:29 +0800</pubDate><description><![CDATA[【代码】【源码 JDK 1.8】ArrayList的源码解读。]]></description><category></category></item><item><title><![CDATA[【AQL】WINDOW 操作]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/137289791</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/137289791</guid><author>Number_In</author><pubDate>Tue, 02 Apr 2024 20:51:39 +0800</pubDate><description><![CDATA[由于val为0，第一行的值范围为[-10，5]，因此第一行和第二行的值加起来为5，平均值为2.5。最后一行的值范围是[20，35]，因为val是30，这意味着最后四行的总和为100，平均值为25（该范围包括在内，即val落在值为20的范围内）。如果使用这样的持续时间，则当前文档的属性值必须是一个数字，并被视为以毫秒为单位的数字时间戳。对于第一行，这仅仅是10，对于第二行，它是10+0，对于第三行，10+0+9，依此类推。偏移量计算是通过添加或减去在以下和前面的属性中指定的数字偏移量来执行的。]]></description><category></category></item><item><title><![CDATA[【AQL】COLLECT 操作]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/137210140</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/137210140</guid><author>Number_In</author><pubDate>Sun, 31 Mar 2024 21:38:50 +0800</pubDate><description><![CDATA[请注意，这会考虑在COLLECT语句之前定义的所有变量，但不包括顶层（FOR循环外部）定义的变量，除非COLLECT语句本身就在顶层，那样的话所有变量都会被考虑进去。在ArangoDB中，并未明确提到SORT null这样的语法，但在某些数据库中类似的概念可用于指导优化器做出更高效的执行计划。要确切知道查询中实际使用的COLLECT变体，可以通过查看查询的执行计划来确定，特别是检查CollectNode节点的注释部分，该注释通常会显示所采用的具体收集策略及其相关属性。这些变量通常包含了分组或聚合的结果。]]></description><category></category></item><item><title><![CDATA[【AQL】LET操作]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/136855098</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/136855098</guid><author>Number_In</author><pubDate>Tue, 19 Mar 2024 20:53:40 +0800</pubDate><description><![CDATA[在上面的例子中，使用LET语句计算推荐数量的因子，从而避免在RETURN语句中计算两次值。LET语句通常用于声明复杂的计算和避免重复计算相同的值在多个查询的部分。LET的另一个用例是在子查询中声明一个复杂的计算，使整个查询更具可读性。变量被引入到LET语句所在的范围内。当变量被赋值后，你不能改变它的值。你可以使用LET操作将任意值赋给一个变量。表达式可以是简单表达式或子查询。]]></description><category></category></item><item><title><![CDATA[【AQL】LIMIT操作]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/136751069</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/136751069</guid><author>Number_In</author><pubDate>Fri, 15 Mar 2024 21:57:27 +0800</pubDate><description><![CDATA[但是，还要考虑如果你多次运行查询，并且使用不同的 LIMIT 偏移量进行分页，如果排序顺序未定义，则可能会错过结果或得到重复的结果。在以下示例中，LIMIT操作并不影响写入操作（INSERT，UPDATE，REPLACE，REMOVE，UPSERT）本身，而仅仅限制了这些操作返回结果的数量。如果没有这样的属性，你仍然可以通过使用_id系统属性来实现稳定的排序，因为它在每个文档中都是唯一的。特别是在FILTER操作之前使用LIMIT，可能会对查询结果产生显著的影响，因为查询中的操作是按照书写的顺序执行的。]]></description><category></category></item><item><title><![CDATA[【AQL】SORT操作]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/136634931</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/136634931</guid><author>Number_In</author><pubDate>Mon, 11 Mar 2024 20:54:21 +0800</pubDate><description><![CDATA[如果优化规则处于活动状态，则第二个SORT将生效，因为它涵盖了相同的friend.age属性，并且在出现平局的情况下还会按另一个属性进行排序，使其更加准确。但是，如果第二个SORT表达式中的属性顺序相反，如SORT friend.id, friend.age，则最后一个SORT将生效。在优化过程中，AQL 优化器会优化常量 SORT 表达式，但如果优化器不需要考虑任何特定的排序顺序，则明确指定它们可能会实现进一步的优化。当遍历一个集合时，除非使用SORT操作显式定义排序顺序，否则文档的顺序是不确定的。]]></description><category></category></item><item><title><![CDATA[【AQL】FILTER操作]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/136277527</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/136277527</guid><author>Number_In</author><pubDate>Sat, 24 Feb 2024 23:45:59 +0800</pubDate><description><![CDATA[到达第二个FILTER块的文档不超过5个，并且并非所有文档都符合性别标准，即使集合中有5个以上的活跃女性用户。如果使用多个FILTER语句，它们的结果将通过逻辑AND组合，这意味着所有过滤条件都必须为true，才能包含元素。如果条件结果为false，当前元素将被跳过，因此不会进一步处理，也不会成为结果的一部分。在上例中，users中的所有元素active属性值为true并且age属性值小于39才会被包含在结果中，其他元素将被跳过。请注意，FILTER语句的位置可能会影响查询的结果。]]></description><category></category></item><item><title><![CDATA[【AQL】RETURN操作]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/136271293</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/136271293</guid><author>Number_In</author><pubDate>Sat, 24 Feb 2024 14:11:04 +0800</pubDate><description><![CDATA[如果DISTINCT应用于一个本身是数组或子查询的表达式上，那么DISTINCT操作不会使得每个数组或子查询结果中的值变得唯一，而是确保整个结果集中包含的是不同的数组或子查询结果。在上述情况下，DISTINCT将使子查询结果唯一，因此每个子查询将返回一个唯一的值数组（[1，2，3，4]）。在一个数据访问查询中，RETURN操作时必须的，否则这次查询的结果是未定义的。在这种情况下，如果希望得到一个单一对象，该对象以用户ID为键、年龄为值的映射关系，那么需要将每个用户的查询结果合并成一个对象。]]></description><category></category></item><item><title><![CDATA[【AQL】FOR 操作]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/136048753</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/136048753</guid><author>Number_In</author><pubDate>Mon, 05 Feb 2024 22:08:08 +0800</pubDate><description><![CDATA[解释：在索引查找过程中，虽然可以快速定位到相关文档，但如果需要返回的结果占整个集合的很大比例或者几乎全部时，数据库系统可能需要额外加载主键值以获取完整文档信息，并且多次磁盘I/O操作会增加开销。如果启用了强制索引提示（forceIndexHint），并且所有指定的索引都不适用，则查询会失败，因为在这种情况下，系统被要求必须使用指定的索引进行查询优化，而无法找到合适的索引会导致操作无法执行。在每次内部循环迭代时，都会使用当前用户的值（存储在u中）和当前地点的值（存储在l中），进行进一步的处理或计算。]]></description><category></category></item><item><title><![CDATA[【AQL】AQL高级操作]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/136032316</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/136032316</guid><author>Number_In</author><pubDate>Sun, 04 Feb 2024 20:53:14 +0800</pubDate><description><![CDATA[高级操作是查询语言的核心语言结构，用于执行查找和返回数据以及创建和修改文档等操作。]]></description><category></category></item><item><title><![CDATA[【AQL】AQL语法]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/135980942</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/135980942</guid><author>Number_In</author><pubDate>Thu, 01 Feb 2024 19:33:00 +0800</pubDate><description><![CDATA[该文档主要是翻译自。]]></description><category></category></item><item><title><![CDATA[【AQL】如何执行AQL查询]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/135875661</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/135875661</guid><author>Number_In</author><pubDate>Fri, 26 Jan 2024 22:00:03 +0800</pubDate><description><![CDATA[该文档主要是翻译自。]]></description><category></category></item><item><title><![CDATA[【AQL】AQL介绍]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/135875620</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/135875620</guid><author>Number_In</author><pubDate>Fri, 26 Jan 2024 21:58:54 +0800</pubDate><description><![CDATA[该文档主要是翻译自。]]></description><category></category></item><item><title><![CDATA[【源码 JDK 1.8】List的源码解读]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/135733089</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/135733089</guid><author>Number_In</author><pubDate>Sun, 21 Jan 2024 18:32:24 +0800</pubDate><description><![CDATA[List的依赖关系简单版，没有表明实现，因为目前只关注List的方法和源码，List的不同实现有 再做不同的解析fill:#333;color:#333;color:#333;fill:none;]]></description><category></category></item><item><title><![CDATA[【源码 JDK 1.8】String的源码解读]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/135540295</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/135540295</guid><author>Number_In</author><pubDate>Thu, 11 Jan 2024 22:18:48 +0800</pubDate><description><![CDATA[【代码】【源码 JDK 1.8】String的源码解读。]]></description><category></category></item><item><title><![CDATA[【源码 JDK 1.8】Optional的源码解读]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/134839623</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/134839623</guid><author>Number_In</author><pubDate>Tue, 26 Dec 2023 22:16:00 +0800</pubDate><description><![CDATA[【代码】【源码 JDK 1.8】Optional的源码解读。]]></description><category></category></item><item><title><![CDATA[【Java】Optional的使用]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/134518347</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/134518347</guid><author>Number_In</author><pubDate>Sun, 26 Nov 2023 20:51:31 +0800</pubDate><description><![CDATA[为了解决空指针的一些问题，特别是方法的返回中，可能存在返回有null值的时候可以使用
来处理变量；基于JDK8
1.2 将value对象包装成Optional，此时value不能为null否则会报错

1.3 对于可能为null的对象，包装是要使用’ofNullable’方法

2.获取Optional对象的值
2.1判断Optional是否为空，这是一个不常用的做法。

2.2获取Optional中的值，这是一个不常用的做法。
一般在执行get方法之前需要手动执行isPresent()方法，idea会警告]]></description><category></category></item><item><title><![CDATA[【算法】快速排序]]></title><link>https://blog.youkuaiyun.com/Number_In/article/details/134406480</link><guid>https://blog.youkuaiyun.com/Number_In/article/details/134406480</guid><author>Number_In</author><pubDate>Tue, 14 Nov 2023 19:55:02 +0800</pubDate><description><![CDATA[因为分区点的选取会导致快排的不稳定，原始版本中每次从分组的右边界选择分区点，如果数组已经有序，分区点会导致分区不均衡，从而不能发挥快排的优势。在随机选取的情况下，分区点的位置是随机的，使得快速排序的每次划分都有一定的随机性，在最坏情况下的时间复杂度和空间复杂度都得到了保证。它的基本思想是通过一趟排序将待排记录分隔成独立的两部分，其中一部分记录的关键字均比另一部分关键字小，然后再对这两部分记录分别进行快速排序，以达到整个序列有序的目的。每次排序筛选掉等于分区节点的部分，减少后续递归的数量。]]></description><category></category></item></channel></rss>