分类标签归档:读书笔记

【置顶】基础理论目录


基础理论

刷题方法
资源推荐
算法数据结构
时间/空间复杂度
数组 array
链表 linked list
队列


哈希表
排序
LRU Cache
递归

trie 树
并查集
深度优先搜索 & 广度优先搜索
启发式搜索
分治 回溯
贪心算法 Greedy
bloomfilter
二分查找

动态规划
高级搜索
位运算
字符串
加密算法

Read more

深入理解 Java 虚拟机 读书笔记


本章是第二部分的第1章,笔者将从概念上介绍Java虚拟机内存的各个区域,讲解这些区域的作 用、服务对象以及其中可能产生的问题,这也是翻越虚拟机内存管理这堵围墙的第一步。

如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地 址;如果正在执行的是本地(Native)方法,这个计数器值则应为空(Undefined)。 此内存区域是唯 一一个在《Java虚拟机规范》中没有规定任何OutOfMemoryError情况的区域。

每个方法被执行的时候,Java虚拟机都 会同步创建一个栈帧1用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕

Read more

小马哥 spring 笔记


课件

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

Read more

DDD 笔记


DDD包括战略设计和战术设计两部分。

战略设计主要从业务视角出发,建立业务领域模型,划分领域边界,建立通用语言的限界上下文,限界上下文可以作为微服务设计的参考边界。

战术设计则从技术视角出发,侧重于领域模型的技术实现,完成软件开发和落地,包括:聚合根、实体、值对象、领域服务、应用服务和资源库等代码逻辑的设计和实现。

DDD主要关注:从业务领域视角划分领域边界,构建通用语言进行高效沟通,通过业务抽象,建立领域模型,维持业务和代码的逻辑一致性。

微服务主要关注:运行时的进程间通信、容错和故障隔离,实现去中心化数据管理和去中心化服务治理,关注微服务的独立开发、测试、构建和部署。

微服务内大部分事件的

Read more

刷题方法


一般方法

记忆细节,反复练习
打破惯性,机器思维

练习重点

分治、回溯、递归、动态规划

核心思维

升维
空间换时间

刷题技巧

outliers

  • Chunk it up 切碎知识点
  • Deiliberate practicing 刻意练习
过遍数(五) 
刷题第一遍 5~15分钟思考
直接看解法,多解法的比较解法优劣
刷题第四遍/第五遍 的时候一定要上英文站 discuss board 中 查看 Most Votes 中最高票的前三个回答
练习缺陷,弱点的地方  
不舒服,不爽,枯燥  
生活中的例子: 乒乓球,台球,玩游戏等
  • Feed back 获得反馈

    主动型反馈 (自己去找)

Read more

资源推荐


附件

https://github.com/wangxiuwen/data_structures_and_algorithms.git

labuladong

labuladong
labuladong 的整理

花花酱

花花酱 YouTube
花花酱LeetCode B
花花酱代码
花花酱题目分类

Back To Back SWE

Back To Back SWE

绵羊教授

绵羊教授

小Q刷题

nat8023

公瑾

个人主页 源码

王争

王争的 数据结构和算法必知必会的50个代码实现

参考资料

数据结构和算法动态可视化

算法数据结构脑图

数据结构脑图
算法脑图

练习网站

learnGitBran

Read more

字符串


字符串

两个字符串变换问题,一般要转成一个二维数组,两个字符串分别为字符串的行和列

定义及常见操作

string immutable

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

Read more

位运算


原码反码补码

  • 补码(twos complement) 在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
  • 正数的原码补码反码相同
  • 负数的反码是对其原码逐位取反(符号位除外)
  • 负数的补码是对其原码逐位取反(符号位除外),然后整个数加1

XOR - 异或

异或: 相同为 0,不同为 1。也可用“不进位加法”来理解。 异或操作的一些特点:

  • x ^ 0 =x
  • x ^ 1s = ~x // 注意 1s = ~0
  • x ^ (~x) = 1s (1s

Read more

搜索


搜索

剪枝 双向 BFS 启发式搜索(A*)

初级搜索

  1. 朴素搜索
  2. 优化方式: 不重复(fibnacci)、剪枝(生成括号问题)
  3. 搜索方向:

    DFS: depth first search 深度优先搜索
    BFS: breadth first search 广度优先搜索

    双向搜索、启发式搜索

Read more