基础理论
刷题方法
资源推荐
算法数据结构
时间/空间复杂度
数组 array
链表 linked list
队列
栈
堆
哈希表
排序
LRU Cache
递归
树
trie 树
并查集
深度优先搜索 & 广度优先搜索
启发式搜索
分治 回溯
贪心算法 Greedy
bloomfilter
二分查找
图
动态规划
高级搜索
位运算
字符串
加密算法
分类标签归档:读书笔记
本章是第二部分的第1章,笔者将从概念上介绍Java虚拟机内存的各个区域,讲解这些区域的作 用、服务对象以及其中可能产生的问题,这也是翻越虚拟机内存管理这堵围墙的第一步。
如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地 址;如果正在执行的是本地(Native)方法,这个计数器值则应为空(Undefined)。 此内存区域是唯 一一个在《Java虚拟机规范》中没有规定任何OutOfMemoryError情况的区域。
每个方法被执行的时候,Java虚拟机都 会同步创建一个栈帧1用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕
https://github.com/geektime-geekbang/geekbang-lessons
Java 语言特性:反射、动态代理、枚举、范型、注解、ARM(Automatic Resourse Management)、lambda
设计思想和设计模式:OOP、IOC、DDD、TDD、GoF23
Java API 的封装与简化: JDBC、事务 Transaction、servlet、JPA、JMX、Bean Validation
JSR 规范的适配与实现
三方框架的整合:Mybitis 整合 hibernetes、Redis
其它:AOP、Spring EL 事务、W
DDD包括战略设计和战术设计两部分。
战略设计主要从业务视角出发,建立业务领域模型,划分领域边界,建立通用语言的限界上下文,限界上下文可以作为微服务设计的参考边界。
战术设计则从技术视角出发,侧重于领域模型的技术实现,完成软件开发和落地,包括:聚合根、实体、值对象、领域服务、应用服务和资源库等代码逻辑的设计和实现。
DDD主要关注:从业务领域视角划分领域边界,构建通用语言进行高效沟通,通过业务抽象,建立领域模型,维持业务和代码的逻辑一致性。
微服务主要关注:运行时的进程间通信、容错和故障隔离,实现去中心化数据管理和去中心化服务治理,关注微服务的独立开发、测试、构建和部署。
微服务内大部分事件的
记忆细节,反复练习
打破惯性,机器思维
分治、回溯、递归、动态规划
升维
空间换时间
过遍数(五)
刷题第一遍 5~15分钟思考
直接看解法,多解法的比较解法优劣
刷题第四遍/第五遍 的时候一定要上英文站 discuss board 中 查看 Most Votes 中最高票的前三个回答
练习缺陷,弱点的地方
不舒服,不爽,枯燥
生活中的例子: 乒乓球,台球,玩游戏等
Feed back 获得反馈
主动型反馈 (自己去找)
https://github.com/wangxiuwen/data_structures_and_algorithms.git
花花酱 YouTube
花花酱LeetCode B
花花酱代码
花花酱题目分类
两个字符串变换问题,一般要转成一个二维数组,两个字符串分别为字符串的行和列
python:
x = 'abbc'
for ch in x:
print(ch)
Java:
String x = "abbc";
String y = "abbc";
for (int i = 0; i < x.length(); ++i) {
char ch = x.charAt(i);
}
for (char ch : x.toCharArray()) {
Sys
异或: 相同为 0,不同为 1。也可用“不进位加法”来理解。 异或操作的一些特点:
剪枝 双向 BFS 启发式搜索(A*)
搜索方向:
DFS: depth first search 深度优先搜索
BFS: breadth first search 广度优先搜索
双向搜索、启发式搜索