文章目录
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/98c9334babbd35ac7176d1fb6b7adc30.png)
一、数据结构
1、非阻塞队列、阻塞队列
https://blog.csdn.net/u010247166/article/details/99200557
学习笔记:
1、LinkedBlockingQueue基于链表的阻塞队列,同ArrayBlockingQueue类似,其内部也是维护着一个数据缓冲队列(该队列有一个链表构成),LinkedBlockingQueue之所以能够高效的处理并发数据,是因为其内部实现采用分离锁(读写分离两个锁),从而实现生产者和消费者操作的完全并行运行。它是一个无界队列.
2、ConcurrentLinkedQueue基于连接节点的无界线程安全队列
https://my.oschina.net/u/1054538/blog/1620014?utm_medium=referral
学习笔记:
2、集合(set)
3、链表、数组(List)
3.1、ArrayList、LinkedList、Vector
4、字典、关联数组(Map)
5、栈(Stack)
6、树
6.1、二叉树、完全二叉树、平衡二叉树、二叉查找树、红黑树、B/B+/B*树、LSM树
7、BitSet
二、常用算法
1、排序、查找算法
选择排序、冒泡排序、插入排序、快速排序、归并排序、希尔排序、堆排序、计数排序、桶排序、基数排序。
二分查找。
java中的排序工具:Arrays.sort,Collections.sort
2、布隆过滤器
https://zhuanlan.zhihu.com/p/94433082
布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。
3、字符串匹配(KMP算法)
https://blog.csdn.net/dark_cy/article/details/88698736
4、贪心算法
https://blog.csdn.net/effective_coder/article/details/8736718
https://www.cnblogs.com/xsyfl/p/6938642.html
5、回溯算法、剪枝算法、动态规划
剪枝
https://www.cnblogs.com/starfire86/p/5749334.html
6、朴素贝叶斯
https://zhuanlan.zhihu.com/p/26262151
贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。
既然是贝叶斯分类算法,那么分类的数学描述又是什么呢?
其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合(特征集合),其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。
分类算法的内容是要求给定特征,让我们得出类别,这也是所有分类问题的关键。
朴素贝叶斯分类的优缺点
-
优点:
(1) 算法逻辑简单,易于实现
(2)分类过程中时空开销小 -
缺点:
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
7、推荐算法
推荐算法大致可以分为三类:基于内容的推荐算法、协同过滤推荐算法和基于知识的推荐算法。
推荐算法入门
https://blog.csdn.net/qq_32742009/article/details/82822830
常用的基于模型的推荐算法包括Aspect Model,pLSA,LDA,聚类,SVD,Matrix Factorization,LR,GBDT等