<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tree123tree123的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tree123tree123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tree123tree123]]></copyright><item><title><![CDATA[实战绝佳的LeetCode刷题方法]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/139337180</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/139337180</guid><author>tree123tree123</author><pubDate>Sat, 04 Jan 2025 10:43:22 +0800</pubDate><description><![CDATA[学生时代找工作前就刷过算法题，不过现在回看当初，单纯根据LeetCode上的分类：数组、字符串、动态规划这样的分类去刷，确实略显盲目。如何才能更高效、更聚焦地刷出最大价值呢？这次换工作，我前后刷了不到200题，面试多家公司，依旧遇到近半未做过的题，但基本都AC，特将心得记录在此，与君共勉。。根据你想去的公司，去刷他们最高频的题目吧。亲测50%有效。刷题核心主要3点：数据结构算法模板代码，对应到10余种常见题目类型，每种类型刷10题左右，深度理解一些经典题解，基本这一类的题面试中都不会再感棘手。]]></description><category></category></item><item><title><![CDATA[端到端性能&体验&稳定性优化常见方案]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/138463514</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/138463514</guid><author>tree123tree123</author><pubDate>Wed, 01 Jan 2025 16:11:45 +0800</pubDate><description><![CDATA[页面、组件计算过程中依赖非常多的填充资源，例如组织信息、各种应用信息、用户信息、可见性信息等等，但由于不同类型工作台、不同schema的工作台上的组件内容不一样，所依赖的填充资源也不一样，这些不一样的地方往往要到某个组件的计算逻辑中才知道是否需要。一处加载，处处可用。对于主页或门户类的加载，常常用到的一个设计模式则是责任链模式。基于过去几年负责过的亿级用户千万级日活的用户系统、亿级用户业务推送系统，加上跟客户端、前端、服务端、中间件团队的一些技术合作，这里总结一下常见的端到端性能&体验&稳定性的优化方案。]]></description><category></category></item><item><title><![CDATA[稳定性保障坐标系]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/143657168</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/143657168</guid><author>tree123tree123</author><pubDate>Sun, 10 Nov 2024 10:50:04 +0800</pubDate><description><![CDATA[笔者将稳定性保障精简成2个方向：纵向（空间维度）和横向（时间维度），基于这2个维度由线到面，可梳理出各个稳定性保障的各个点。]]></description><category></category></item><item><title><![CDATA[简易耗时任务框架]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/137343225</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/137343225</guid><author>tree123tree123</author><pubDate>Wed, 03 Apr 2024 14:01:15 +0800</pubDate><description><![CDATA[自GPT大火之后，各种大模型相关的技术层出不穷，最火的莫过于文生图模型 Stable Diffusion、文生视频模型 Sora 等等。而基于此的AI应用更是层出不穷，例如之前让人眼前一亮的妙鸭相机，一股要颠覆传统美颜和PS的势头。对于这类基于大模型的图片、视频类的产品应用，有一个共同的工程特点：功能耗时长。因为大模型处理图片和视频通常都很难做到秒级返回，等个10s甚至分钟、小时以上目前都是符合用户预期的。]]></description><category></category></item><item><title><![CDATA[多因子排序]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/89564640</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/89564640</guid><author>tree123tree123</author><pubDate>Fri, 26 Apr 2019 17:32:58 +0800</pubDate><description><![CDATA[当需要对多因子进行排序时，可以构造下面这样的包装类，对List&lt;YourObject&gt;进行排序，假设排序因子都是Double类型的。如有其他需要，也可使用泛型。


/**
 * 用于多因子优先级排序
 * 要求List&lt;YourObjectWrapper&gt;的所有元素都是按照同样因子优先级顺序构造的scores
 */
class YourObjectWrapper im...]]></description><category></category></item><item><title><![CDATA[静态代理、动态代理、CGLIB]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/81662815</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/81662815</guid><author>tree123tree123</author><pubDate>Tue, 14 Aug 2018 10:49:15 +0800</pubDate><description><![CDATA[代理

目的：扩展被代理对象的功能。

参考：

https://blog.youkuaiyun.com/briblue/article/details/73928350

https://www.jianshu.com/p/6f6bb2f0ece9

例如动态代理中的拦截器，拦截某个方法后，在该方法前后增加额外方法，扩展了其功能。

静态代理



动态代理



CGLIB



参考：

https:/...]]></description><category></category></item><item><title><![CDATA[学习思维]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/81638330</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/81638330</guid><author>tree123tree123</author><pubDate>Mon, 13 Aug 2018 22:31:14 +0800</pubDate><description><![CDATA[非常感谢实习期间的一位师兄给予的耐心教导，从他那里继承来了学习思维的连环三问：

1. 为什么要用这个东西（一种设计模式/一个类/一种框架/一种算法/一种数据结构/一种规范）？

2. 去掉这个东西会有什么影响？

3. 如果不用这个，我们可以拿什么来代替？

举个例子：

打印日志经常会同时返回errCode和errMessage，

为什么两个都要呢？

去掉其中某一个会有影响吗？

要是不用...]]></description><category></category></item><item><title><![CDATA[自定义注解+实现类+AOP]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/81629498</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/81629498</guid><author>tree123tree123</author><pubDate>Mon, 13 Aug 2018 14:47:43 +0800</pubDate><description><![CDATA[以自定义注解实现缓存为例：

在方法上添加注解，即可将方法名和入参（为key）、返回值（为value），存入缓存cache。

1. 自定义注解

定义注解中需要获取的自定义参数，以提供给实现类调用。



2. 缓存实现类

实现缓存相关的增删改查等。



3. AOP代理

实现AOP动态代理、拦截器，用Manager集中管理，并注册bean。





...]]></description><category></category></item><item><title><![CDATA[监听器模式]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/81533172</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/81533172</guid><author>tree123tree123</author><pubDate>Thu, 09 Aug 2018 11:12:56 +0800</pubDate><description><![CDATA[定义

事件源生成事件并将其发送至一个或多个监听器；
	监听器简单地等待，直到它收到一个事件。一旦事件被接受，监听器将处理这些事件，然后返回。
实现

事件对象接口（监听器注册方法，事件相关方法）
	事件源类implements事件对象接口（事件源状态，事件触发方法（1.改变事件源状态；2.调用监听器的事件触发处理方法），监听器注册方法）
	事件监听器接口（事件触发处理方法（参数：事件对象））
参...]]></description><category></category></item><item><title><![CDATA[回调]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/81532578</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/81532578</guid><author>tree123tree123</author><pubDate>Thu, 09 Aug 2018 10:49:58 +0800</pubDate><description><![CDATA[定义

A类调用B类去解决问题，B类解决问题得到结果以后，调用A类中的方法（回调函数）进行结果的展示/后续处理；

为了B类可以调用A类中的方法（回调函数），并且知道就是要调用该方法，就需要一个interface，A类继承这个interface，实现interface的方法（即回调函数），并在调用B类方法时传入这个interface，这样B类的方法就知道并可以要通过这个interface来调用A类...]]></description><category></category></item><item><title><![CDATA[Git相关]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/81531736</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/81531736</guid><author>tree123tree123</author><pubDate>Thu, 09 Aug 2018 10:36:22 +0800</pubDate><description><![CDATA[IDEA内部Terminal使用Git配置



分支操作

参考：https://blog.youkuaiyun.com/arkblue/article/details/9568249

版本重置

revert：回到上次git commit或git pull时的状态，丢弃这段时间的开发；
	git reset commitID 转到指定commit版本，再 git push –f，会删除指定commit版...]]></description><category></category></item><item><title><![CDATA[缓存]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/81488391</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/81488391</guid><author>tree123tree123</author><pubDate>Tue, 07 Aug 2018 20:59:16 +0800</pubDate><description><![CDATA[1. 主动写缓存与被动写缓存



相对来说，被动写缓存对缓存一致性的保障更好。

一般缓存一致性保障方法：

补偿机制
	定期全量或增量build
	失效机制
2. 自定义注解实现缓存

由三部分组成，可参考 https://www.jianshu.com/p/9c2771b75488

1. 自定义注解

public @interface SetCache {}

public @inter...]]></description><category></category></item><item><title><![CDATA[Java 数据结构stack、queue的常用类]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/79148853</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/79148853</guid><author>tree123tree123</author><pubDate>Wed, 24 Jan 2018 11:34:19 +0800</pubDate><description><![CDATA[Deque
ArrayDeque]]></description><category></category></item><item><title><![CDATA[双指针 子字符串问题]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/78912885</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/78912885</guid><author>tree123tree123</author><pubDate>Wed, 27 Dec 2017 15:34:27 +0800</pubDate><description><![CDATA[双指针使用模板]]></description><category></category></item><item><title><![CDATA[DP 人生第一道Hard，不出意外没做出来（详细注释，安慰一下自己）]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/78903370</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/78903370</guid><author>tree123tree123</author><pubDate>Tue, 26 Dec 2017 16:08:37 +0800</pubDate><description><![CDATA[LeetCode 691. Stickers to Spell Word
DP四大要素，需要仔细分析]]></description><category></category></item><item><title><![CDATA[回文]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/78874206</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/78874206</guid><author>tree123tree123</author><pubDate>Fri, 22 Dec 2017 15:59:13 +0800</pubDate><description><![CDATA[回文判断]]></description><category></category></item><item><title><![CDATA[有向图是否有环  BFS 和 DFS]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/77712871</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/77712871</guid><author>tree123tree123</author><pubDate>Wed, 30 Aug 2017 11:51:33 +0800</pubDate><description><![CDATA[LeetCode 207. Course Schedule]]></description><category></category></item><item><title><![CDATA[DP O(n)遍历 + Binary Search = O(nlogn)]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/77650352</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/77650352</guid><author>tree123tree123</author><pubDate>Mon, 28 Aug 2017 16:27:32 +0800</pubDate><description><![CDATA[LeetCode 300. Longest Increasing Subsequence]]></description><category></category></item><item><title><![CDATA[广度优先遍历 之 LeetCode 542. 01 Matrix]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/76208332</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/76208332</guid><author>tree123tree123</author><pubDate>Thu, 27 Jul 2017 16:35:31 +0800</pubDate><description><![CDATA[广度优先遍历是层序遍历的推广。层序遍历需要使用普通队列，因此，对于广度优先遍历，使用普通队列也是一个不错的选择。]]></description><category></category></item><item><title><![CDATA[深度优先遍历]]></title><link>https://blog.youkuaiyun.com/tree123tree123/article/details/76177602</link><guid>https://blog.youkuaiyun.com/tree123tree123/article/details/76177602</guid><author>tree123tree123</author><pubDate>Thu, 27 Jul 2017 11:25:47 +0800</pubDate><description><![CDATA[深度优先遍历是对先序遍历的推广。从某个元素v开始处理，然后递归遍历所有与v相邻的元素。]]></description><category></category></item></channel></rss>