摘要:
自我修养: 频繁的高强度的外部刺激(项目)和自主意识(自身训练)的反复提醒是加速知识内化的两个途径,应该通过实践获得知识。 关心自己的技艺 思考关于自己的工作 注重实效的程序员有的特征:承认自己的错误,并为其负责,不去找接口,找到错误原因,想出什么能挽回局面。承认自己的错误,并为其负责,不去找接口, 阅读全文
摘要:
秋招基本是要结束了,有幸收获了一些一线大厂的白菜,和一些二三线的sp。 因为是双非,这一路其实还是挺崎岖的。所以希望回馈给帮助了我很大的社区,如果可以能帮助大家少走些弯路,我将感到非常荣幸。 因为我主阶职业是后端,副职业是前端和算法。所以~下边可能后端的内容会更多些。 I am the bone o 阅读全文
摘要:
1. 为什么要有命令模式 这样的代码是非常繁杂且高耦合的,所以需要一种模式优化掉它。 所以,命令模式,要做的就是,将行为封装成对象,以解决这个问题。 2. 命令模式的定义 命令模式: 将请求(行为)封装成对象,以便使用不同的请求、队列或者日志参数化其他对象,可支持可撤销操作。 3. 命令模式的实现 阅读全文
摘要:
1. 解压变量 1. 最简单的变量解压 2. 需要一个变量接收多个值 3. 存在嵌套的情况 2. 优先队列与Top-K 1. FIFO队列 使用deque实现长度为n的FIFO队列。 deque(maxlen=N) 会创建一个大小为N的FIFO队列。 deque有如下函数: append、appen 阅读全文
摘要:
分布式的特点 1. 分布式 2. 对等性 3. 并发性 4. 缺乏全局时钟 5. 故障总是会发生 分布式环境的问题 1. 网络不可靠 2. 网络分区 3. 节点故障 CAP理论 一致性 可用性 分区容错性 BASE理论 两阶段提交 阶段1 提交事务请求 1. 事务询问 2. 写事务日志 3. 各参与 阅读全文
摘要:
链表 Leetcode146 题目:设计一个LRU类。 题解:Java采用LinkedHashMap,重载removeEldestEntry即可;或采用HashMap + 双链表方式,通过HashMap查询对应节点,双链表查询对应位置,进行操作。 深度优先搜索 人生经验 1. 需要输出所有解、并由于 阅读全文
摘要:
上节提到了,分布式锁通常应满足如下要求,互斥性、高可用、高效率、可重入、锁失效这五个基本原则。由于Redis自身“快”的特点,所以高效率可以看作满足。 下文在单机情况下与多机情况下,对利用Redis实现分布式锁做出了阐述。 单机Redis分布式锁 由于Redis本身的单线程特性,所以可以采用设置一个 阅读全文
摘要:
为什么需要分布式锁 Martin Kleppmann是英国剑桥大学的分布式系统的研究员,Martin认为一般我们使用分布式锁有两个场景: 效率:使用分布式锁可以避免不同节点重复相同的工作,这些工作会浪费资源。比如用户付了钱之后有可能不同节点会发出多封短信。 正确性:加分布式锁同样可以避免破坏正确性的 阅读全文
摘要:
锁 Java的锁有哪些 Java中的锁包含synchronized、ReentrantLock、ReadWriteLock几种。 按性质分:其中还分为公平/非公平、共享/独占锁、乐观/悲观锁、可重入锁、分段锁、自旋锁。其中synchronized,还分为偏向锁/轻量级锁/重量级锁。 J.U.C. 并 阅读全文
摘要:
1. 什么是事务 事务就是以一种可控的方式,对资源进行的一组操作,保证了资源在事务前后,始终应处于被期待的正确的状态。比如不会受到宕机等原因的影响。事务本身,具有如下4种属性-ACID。(所以说事务是酸的ww) 原子性(A)原子性的描述很简单,就是要么都做,要么都别做。比如转账业务,A向B转100元 阅读全文