<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LLN98765的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LLN98765</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LLN98765]]></copyright><item><title><![CDATA[京东高频编程考题：轮转数组 （中等）]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/142681571</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/142681571</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:25:22 +0800</pubDate><description><![CDATA[使用环状替换算法，通过逐个移动元素到其最终位置来实现轮转。这种方法也是 O(n) 时间复杂度，并且 O(1) 空间复杂度。向右轮转 1 步: [99,-1,-100,3] 向右轮转 2 步: [3,99,-1,-100]这种方法不使用额外的空间（O(1) 空间复杂度），且时间复杂度为 O(n)。：通过创建新数组并将元素放置到新位置，然后将结果复制回原数组。这种方法简单但需要额外的空间。：通过反转整个数组，然后分别反转前。，将数组中的元素向右轮转。要将数组中的元素向右轮转。]]></description><category></category></item><item><title><![CDATA[京东高频编程考题：最小覆盖子串 （困难）]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/142681591</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/142681591</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:25:16 +0800</pubDate><description><![CDATA[中每个字符的计数，并且滑动窗口可能需要 O(∣S∣) 的空间来存储窗口中的字符计数。指针以缩小窗口，尽量找到最小的符合条件的子串；在缩小窗口的过程中，不断更新最小子串的长度和起始位置。t 中两个字符 'a' 均应包含在 s 的子串中， 因此没有符合条件的子字符串，返回空字符串。问题的核心是要用滑动窗口的技巧来找到最小的满足条件的子串。：当遍历完成后，返回找到的最小子串，如果没有符合条件的子串，则返回空字符串。中的增减操作是 O(1) 的，因此总时间复杂度为 O(m + n)。]]></description><category></category></item><item><title><![CDATA[Spark Streaming + Elasticsearch构建App异常监控平台3]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144870931</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144870931</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:25:09 +0800</pubDate><description><![CDATA[如果在使用App时遇到闪退，你可能会选择卸载App、到应用商店怒斥开发者等方式来表达不满。但开发者也同样感到头疼，因为崩溃可能意味着用户流失、营收下滑。为了降低崩溃率，进而提升App质量，App开发团队需要实时地监控App异常。一旦发现严重问题，及时进行热修复，从而把损失降到最低。App异常监控平台，就是将这个方法服务化。]]></description><category></category></item><item><title><![CDATA[京东高频编程考题：滑动窗口最大值 （困难）]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/142681597</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/142681597</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:25:01 +0800</pubDate><description><![CDATA[要解决这个问题，我们可以使用**双端队列（Deque）**来高效地找到滑动窗口内的最大值。双端队列允许我们在 O(1) 的时间复杂度下在队列的两端进行插入和删除操作。具体可参考：https://zyfcodes.blog.youkuaiyun.com/article/details/141401712。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。每个元素最多被插入和删除一次，因此总的时间复杂度是 O(n)。个元素的索引，因此空间复杂度是 O(k)。滑动窗口每次只向右移动一位。]]></description><category></category></item><item><title><![CDATA[信息流广告预估技术在美团外卖的实践3]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144387365</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144387365</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:24:53 +0800</pubDate><description><![CDATA[总的来说，预估的本质上还是要发掘用户的真实需求，我们一方面参考业界，另一方面深入业务，去挖掘更多的用户行为模式，也在探索有没有更自动化的方式将各种用户问题解决掉。还原建模是算法和工程的联合聚力带来的提升，归根结底算法工程的相互结合才能带来更大的改变。大模型与推荐的结合越来越得到大家的关注，但是客观地讲，这依然是属于一个偏长期的工作，这个时候还是要找到一条可行的路径，不断去优化和提升，如果完全指望用一个“大招”去解决掉所有的问题，会非常困难。]]></description><category></category></item><item><title><![CDATA[京东高频编程考题：和为 K 的子数组 （中等）]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/142681604</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/142681604</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:24:46 +0800</pubDate><description><![CDATA[具体可参考：https://zyfcodes.blog.youkuaiyun.com/article/details/141401712。我们只遍历一次数组，每次操作的时间复杂度是 O(1)，因此总的时间复杂度是 O(n)。前缀和的基本思想是通过累积数组元素的和，可以快速计算出任意子数组的和。要解决这个问题，我们可以使用前缀和（Prefix Sum）以及哈希表来优化查找和为。个不同的前缀和，因此空间复杂度是 O(n)。在最坏的情况下，哈希表。子数组是数组中元素的连续非空序列。]]></description><category></category></item><item><title><![CDATA[Spring Data REST 远程代码执行漏洞（CVE-2017-8046）分析与复现8]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144864950</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144864950</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:24:37 +0800</pubDate><description><![CDATA[2009年9月Spring 3.0 RC1发布后，Spring就引入了SpEL（Spring Expression Language）。对于开发者而言，引入新的工具显然是令人兴奋的，但是对于运维人员，也许是噩耗的开始。类比Struts 2框架，会发现绝大部分的安全漏洞都和ognl脱不了干系。尤其是远程命令执行漏洞，占据了多少甲方乙方工程师的夜晚/周末，这导致Struts 2越来越不受待见。因此，我们有理由相信Spring引入SpEL必然增加安全风险。事实上，过去多个Spring CVE都与其相关，如等。]]></description><category></category></item><item><title><![CDATA[京东高频编程考题：合并两个有序链表（简单）]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/142695339</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/142695339</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:24:30 +0800</pubDate><description><![CDATA[具体可参考：https://zyfcodes.blog.youkuaiyun.com/article/details/141401712。指向合并后的链表的头节点。新链表是通过拼接给定的两个链表的所有节点组成的。法来逐个比较两个链表的节点，然后将较小的节点添加到结果链表中。:当一个链表遍历完后，将另一个链表的剩余部分直接连接到。要将两个升序链表合并为一个新的升序链表，我们可以使用。的当前节点值，将较小的那个节点添加到。将两个升序链表合并为一个新的。，这是合并后链表的头节点。，并移动相应链表的指针；]]></description><category></category></item><item><title><![CDATA[LruCache在美团DSP系统中的应用演进15]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144857450</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144857450</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:24:17 +0800</pubDate><description><![CDATA[LruCache采用的缓存算法为LRU(Least Recently Used)，即最近最少使用算法。这一算法的核心思想是当缓存数据达到预设上限后，会优先淘汰近期最少使用的缓存对象。LruCache内部维护一个双向链表和一个映射表。链表按照使用顺序存储缓存数据，越早使用的数据越靠近链表尾部，越晚使用的数据越靠近链表头部；映射表通过Key-Value结构，提供高效的查找操作，通过键值可以判断某一数据是否缓存，如果缓存直接获取缓存数据所属的链表节点，进一步获取缓存数据。]]></description><category></category></item><item><title><![CDATA[Android静态代码扫描效率优化与实践8]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144651201</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144651201</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:24:00 +0800</pubDate><description><![CDATA[FindBugs是一个静态分析工具，它检查类或者JAR 文件，通过Apache的BCEL库来分析Class，将字节码与一组缺陷模式进行对比以发现问题。FindBugs自身定义了一套缺陷模式，目前的版本3.0.1内置了总计300多种缺陷，详细可参考官方文档。FindBugs作为一个扫描的工具集，可以非常灵活的集成在各种编译工具中。接下来，我们主要分析在Gradle中FindBugs的相关内容。]]></description><category></category></item><item><title><![CDATA[性能优化的过程方法思考1]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/142705611</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/142705611</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:23:48 +0800</pubDate><description><![CDATA[即使熟悉了开发中的各项技术和优化技巧，但在真正的性能优化场景下，自己依旧很难开展优化任务。其实这是因为你脑海里的知识杂乱无章，仅能靠回忆仅能完成片面的优化。这时我通常都会在手边准备一份详细的提纲，这样在性能优化的时候，能够为我指明方向，并以完整的思维方式进行思考。]]></description><category></category></item><item><title><![CDATA[FairSync extends Sync 线程抢锁分析12]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/142890247</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/142890247</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:23:40 +0800</pubDate><description><![CDATA[【代码】FairSync extends Sync 线程抢锁分析12。]]></description><category></category></item><item><title><![CDATA[人工智能短视频内容理解与生成技术在美团的创新实践12]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144753668</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144753668</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:23:31 +0800</pubDate><description><![CDATA[以上分享了美团在视频标签、视频封面与剪辑、视频细粒度像素级编辑技术领域，通过与业务场景的结合期望为商家和用户提供更加智能的信息展示和获取方式。未来，短视频技术应用方面，在美团丰富的业务场景包括本地生活服务、零售电商，都会发挥更大的潜在价值。视频理解技术方面，多模态自监督训练，对于缓解标注数据依赖，提升模型在复杂业务场景的泛化性能方面非常有价值，我们也在做一些尝试和探索。Hadoop YARN：调度性能优化实践 - 美团技术团队。]]></description><category></category></item><item><title><![CDATA[ookeeper 都有哪些使用场景？思考8]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/142902525</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/142902525</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:23:23 +0800</pubDate><description><![CDATA[那么此时就可以使用 zookeeper 分布式锁，一个机器接收到了请求之后先获取 zookeeper 上的一把分布式锁，就是可以去创建一个 znode，接着执行操作；这个其实是 zookeeper 很经典的一个用法，简单来说，就好比，你 A 系统发送个请求到 mq，然后 B 系统消息消费之后处理了。，一旦 B 系统处理完了就修改 zookeeper 那个节点的值，A 系统立马就可以收到通知，完美解决。那个 znode，结果发现自己创建不了，因为被别人创建了，那只能等着，等第一个机器执行完了自己再执行。]]></description><category></category></item><item><title><![CDATA[Spring Boot引起的“堆外内存泄漏”排查及经验总结]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144809209</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144809209</guid><author>LLN98765</author><pubDate>Sat, 15 Feb 2025 10:21:12 +0800</pubDate><description><![CDATA[因为strace命令中已经显示申请内存的线程ID。直接使用命令jstack pid去查看线程栈，找到对应的线程栈（注意10进制和16进制转换）如下：strace申请空间的线程栈这里基本上就可以看出问题来了：MCC（美团统一配置中心）使用了Reflections进行扫包，底层使用了Spring Boot去加载JAR。因为解压JAR使用Inflater类，需要用到堆外内存，然后使用Btrace去追踪这个类，栈如下：btrace追踪栈然后查看使用MCC的地方，发现没有配置扫包路径，默认是扫描所有的包。]]></description><category></category></item><item><title><![CDATA[Spring MVC注解故障追踪记1]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144897775</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144897775</guid><author>LLN98765</author><pubDate>Fri, 03 Jan 2025 00:23:38 +0800</pubDate><description><![CDATA[使用注解并不一定会引起错误，但是注解要使用规范，不能乱用。如果通过注解注入，属性值最好也要通过注解方式注入；注解扫描功能虽然很强大、很方便，但是要注意区分扫描范围及过滤特定注解；单元测试能通过的原因：我们一般只指定加载一个配置文件作为测试环境，类实例只会出现一个，故能测试通过；最好最重要的一点就是在使用任何框架时，最好按”Best Practice”规范，避免出现一些莫名其妙的问题。]]></description><category></category></item><item><title><![CDATA[Spring MVC注解故障追踪记2]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144897802</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144897802</guid><author>LLN98765</author><pubDate>Fri, 03 Jan 2025 00:23:36 +0800</pubDate><description><![CDATA[使用注解并不一定会引起错误，但是注解要使用规范，不能乱用。如果通过注解注入，属性值最好也要通过注解方式注入；注解扫描功能虽然很强大、很方便，但是要注意区分扫描范围及过滤特定注解；单元测试能通过的原因：我们一般只指定加载一个配置文件作为测试环境，类实例只会出现一个，故能测试通过；最好最重要的一点就是在使用任何框架时，最好按”Best Practice”规范，避免出现一些莫名其妙的问题。]]></description><category></category></item><item><title><![CDATA[Spring MVC注解故障追踪记3]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144897803</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144897803</guid><author>LLN98765</author><pubDate>Fri, 03 Jan 2025 00:23:33 +0800</pubDate><description><![CDATA[使用注解并不一定会引起错误，但是注解要使用规范，不能乱用。如果通过注解注入，属性值最好也要通过注解方式注入；注解扫描功能虽然很强大、很方便，但是要注意区分扫描范围及过滤特定注解；单元测试能通过的原因：我们一般只指定加载一个配置文件作为测试环境，类实例只会出现一个，故能测试通过；最好最重要的一点就是在使用任何框架时，最好按”Best Practice”规范，避免出现一些莫名其妙的问题。]]></description><category></category></item><item><title><![CDATA[Spring MVC注解故障追踪记4]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144897847</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144897847</guid><author>LLN98765</author><pubDate>Fri, 03 Jan 2025 00:23:30 +0800</pubDate><description><![CDATA[使用注解并不一定会引起错误，但是注解要使用规范，不能乱用。如果通过注解注入，属性值最好也要通过注解方式注入；注解扫描功能虽然很强大、很方便，但是要注意区分扫描范围及过滤特定注解；单元测试能通过的原因：我们一般只指定加载一个配置文件作为测试环境，类实例只会出现一个，故能测试通过；最好最重要的一点就是在使用任何框架时，最好按”Best Practice”规范，避免出现一些莫名其妙的问题。]]></description><category></category></item><item><title><![CDATA[Spring MVC注解故障追踪记5]]></title><link>https://blog.youkuaiyun.com/LLN98765/article/details/144897833</link><guid>https://blog.youkuaiyun.com/LLN98765/article/details/144897833</guid><author>LLN98765</author><pubDate>Fri, 03 Jan 2025 00:23:27 +0800</pubDate><description><![CDATA[使用注解并不一定会引起错误，但是注解要使用规范，不能乱用。如果通过注解注入，属性值最好也要通过注解方式注入；注解扫描功能虽然很强大、很方便，但是要注意区分扫描范围及过滤特定注解；单元测试能通过的原因：我们一般只指定加载一个配置文件作为测试环境，类实例只会出现一个，故能测试通过；最好最重要的一点就是在使用任何框架时，最好按”Best Practice”规范，避免出现一些莫名其妙的问题。]]></description><category></category></item></channel></rss>