Skip to content

Commit

Permalink
update toc
Browse files Browse the repository at this point in the history
  • Loading branch information
hongshanru committed Apr 13, 2023
1 parent 7fda5ba commit 8d8e174
Show file tree
Hide file tree
Showing 5 changed files with 283 additions and 106 deletions.
9 changes: 8 additions & 1 deletion src/main/java/com/toc/ALGORITHM.md
Original file line number Diff line number Diff line change
Expand Up @@ -2174,10 +2174,12 @@ public class FullPackage {

除了上述背包问题的常见解法,还需**区分先遍历物品再遍历背包,与先遍历背包再遍历物品的区别**

在完全背包的前提下,即物品可放多次,区分遍历顺序,结果会有如下不同:
- 如果**求组合数就是外层for循环遍历物品**,内层for遍历背包。组合不强调顺序,如(1,5)和(5,1)是同⼀个组合。
- 如果**求排列数就是外层for遍历背包**,内层for循环遍历物品。排列强调顺序,如(1,5)和(5,1)是两个不同的排列。

> 如果把遍历nums(物品)放在外循环,遍历target的作为内循环的话,举⼀个例⼦:计算`dp[4]`的时 候,结果集只有 {1,3} 这样的集合,不会有{3,1}这样的集合,因为nums遍历放在外层,3只能出现在1后⾯!
> 如果把遍历nums(物品)放在外循环,遍历target的作为内循环的话,举⼀个例⼦:计算`dp[4]`的时候,结果集只有 {1,3} 这样的集合,不会有{3,1}这样的集合,因为nums遍历放在外层,物品遍历已经确定3只能出现在1后⾯!
> 而遍历target的作为外循环的,遍历nums(物品)放在内循环的话,举⼀个例⼦:计算`dp[4]`的时候,结果集会有 {1,3},{3,1} 这样的集合,分别从`dp[1]、dp[3]`转移过来!
```
Expand All @@ -2196,6 +2198,9 @@ for(int i =1; i< 背包.length;i++) {
}
}
```

#### <a name="78">典型背包问题</a><a style="float:right;text-decoration:none;" href="#index">[Top]</a>
Expand Down Expand Up @@ -2402,6 +2407,8 @@ private static boolean isPowerOfTwo(int n) {
> 相关关键词:**连续子数组**
- [寻找数组的中心下标](https://leetcode-cn.com/problems/find-pivot-index/)
- [面试题 17.05. 字母与数字](https://leetcode.cn/problems/find-longest-subarray-lcci/)
- [统计美丽子数组数目](https://leetcode.cn/problems/count-the-number-of-beautiful-subarrays/)

### <a name="87">素数</a><a style="float:right;text-decoration:none;" href="#index">[Top]</a>

Expand Down
8 changes: 7 additions & 1 deletion src/main/java/com/toc/DDD.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@

领域驱动指的是以领域作为解决问题切入点,面对业务需求,先提炼出领域概念,并构建领域模型来表达业务问题,而构建过程中我们应该尽可能避免牵扯技术方案或技术细节。而编码实现更像是对领域模型的代码翻译,代码(变量名、方法名、类名等)中要求能够表达领域概念,让人见码明义。

DDD本质上我认为就是一种减低软件复杂度的手段, 其推荐的方法论可以适用于上面包括了业务规模,可扩展性两个维度的复杂度应对。其实业务规模的复杂度的处理包括了对可扩展性的支持。

### <a name="2">两个转变</a><a style="float:right;text-decoration:none;" href="#index">[Top]</a>
结合实践经验,“领域驱动”是一种**思维模式转变**\
实践 DDD 以前,**最常使用的是数据驱动设计**。它的核心思路针对业务需求进行数据建模:**根据业务需求提炼出类**,然后通过 ORM 把类映射为表结构,并根据读写性能要求使用范式优化表与表之间的关联关系。数据驱动是从技术的维度解决业务问题,得出的**数据模型是对业务需求的直接翻译**,并没有蕴含稳定的领域知识/规则。一旦需求发生变化,数据模型就得发生变化,对应的库表的设计也需要进行调整。**这种设计思维导致变化从需求穿透到了数据层**,中间并没有稳定的,不易变的层级进行阻隔,最终导致系统响应变化的能力很差。
Expand Down Expand Up @@ -366,6 +368,9 @@ DDDRUP 可以串联 DDD 的所有概念和模式,实施DDD的设计过程

## <a name="36">代码实现</a><a style="float:right;text-decoration:none;" href="#index">[Top]</a>

![image](https://raw.githubusercontent.com/rbmonster/file-storage/main/learning-note/design/ddd/code-example.png)


**用户接口层**\
用户接口层的核心职能:协议转换和适配、鉴权、参数校验和异常处理。
```
Expand Down Expand Up @@ -453,4 +458,5 @@ interfaces
- [领域驱动设计(DDD)](https://www.wolai.com/sSuS9PurVF2jVuj2RU9G3D)
- [万字长文助你上手软件领域驱动设计 DDD](https://mp.weixin.qq.com/s/BIYp9DNd_9sw5O2daiHmlA)
- [领域驱动编程,代码怎么写?](https://mp.weixin.qq.com/s/W9xT9hNQjjIfjGxbePqDJw)
- [Alibaba-cola](https://github.com/alibaba/COLA)
- [Alibaba-cola](https://github.com/alibaba/COLA)
- [万字详解|从软件复杂度的角度去理解DDD](https://mp.weixin.qq.com/s/4NWIxMVe2TDda45tUxUhYg)
11 changes: 9 additions & 2 deletions src/main/java/com/toc/ES.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@
&emsp;&emsp;<a href="#80">7.1. ES 的分布式架构原理</a>
&emsp;&emsp;<a href="#81">7.2. ES 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?</a>
&emsp;&emsp;<a href="#82">7.3. ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?</a>
&emsp;<a href="#83">8. 参考资料</a>
&emsp;&emsp;<a href="#83">7.4. ES Text与keyword 有什么区别?</a>
&emsp;<a href="#84">8. 参考资料</a>
# <a name="0">elasticsearch </a><a style="float:right;text-decoration:none;" href="#index">[Top]</a>
elasticsearch,基于lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口(还有其他语言的api接口)。
Elasticsearch 是分布式的**文档**存储。它能存储和检索复杂的数据结构——以**实时**的方式。 换句话说,一旦一个文档被存储在 Elasticsearch 中,它就是可以被集群中的任意节点检索到。
Expand Down Expand Up @@ -1829,5 +1830,11 @@ es 的搜索引擎严重依赖于底层的 filesystem cache ,你如果给 file

[advanced-java ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?](https://github.com/doocs/advanced-java/blob/main/docs/high-concurrency/es-optimizing-query-performance.md)

## <a name="83">参考资料</a><a style="float:right;text-decoration:none;" href="#index">[Top]</a>
### <a name="83">ES Text与keyword 有什么区别?</a><a style="float:right;text-decoration:none;" href="#index">[Top]</a>

对于Text类型,将文本存储到倒排索引之前,会使用分析器对其进行分析,而Keyword类型则不会分析。文档是否被分析过会影响其查询的结果。

[Elasticsearch中Text和Keyword类型的区别](https://www.jianshu.com/p/f5d548559791)

## <a name="84">参考资料</a><a style="float:right;text-decoration:none;" href="#index">[Top]</a>
- [ES脑裂问题分析及优化](https://blog.csdn.net/kakaluoteyy/article/details/81068387)
Loading

0 comments on commit 8d8e174

Please sign in to comment.