摘要: 数组 也叫线性表 数组是相同类型元素的集合。 在内存中连续存储。 元素之间相邻存储。 数组的缺陷 1、数组的大小固定,存储空间预先分配,分配多了容易造成空间浪费, 少了容易造成溢出。 2、删除和插入操作,操作复杂。 数组的动态扩展 参考:数组的malloc内存动态分配 数组的操作 1、创建数组 创建 阅读全文
posted @ 2016-12-12 19:38 John95 阅读(118) 评论(0) 推荐(0)
摘要: java集合框架分类 List列表 通常表示一个列表(数组、队列、链表、栈等),其元素可以重复,常用实现类为ArrayList 、LinkedList、 Vector。另外,LinkedList还是实现了Queue接口,因此也可以作为队列使用 Set集合 通常表示一个集合,其元素不可重复(通过has 阅读全文
posted @ 2016-12-12 19:37 John95 阅读(90) 评论(0) 推荐(0)
摘要: 共享对象 可见性 确保跨线程写入的内存可见性,必须使用同步机制。 案例: 主程序运行可能会出现0的情况,程序运行存在“重排序”的问题。 过期数据 导致意外的异常、脏数据、错误的计算和无限的循环。 非原子性的64位操作 double long数值变量最好声明为volatile类型或用锁保护起来,JVM 阅读全文
posted @ 2016-12-11 21:30 John95 阅读(686) 评论(0) 推荐(0)
摘要: 锁机制 java提供的内部锁机制 1、synchronized对象的引用 2、synchronized块:跨越整个方法的代码块 3、内部锁:都为互斥锁,意味着至多只有一个线程可以拥有锁 4、同步机制带来了性能问题 servlet应用案例 5、可重入 线程试图请求自己的锁会成功。 意味着所有的请求基于 阅读全文
posted @ 2016-12-11 21:29 John95 阅读(112) 评论(0) 推荐(0)
摘要: 线程安全性 线程安全:核心在于对状态访问操作的管理,特别是对共享的、可变的状态的访问。 共享:意味着变量可以被多个线程同时访问。 可变:意味着变量的值可以在生命周期内发生变化。 竞争条件 1、检查再运行:通过潜在的过期观察值来做决策或执行计算。 星巴克案例 2、检查再运行的常见错误用法:延迟初始化对 阅读全文
posted @ 2016-12-11 21:28 John95 阅读(152) 评论(0) 推荐(0)
摘要: 线程的优势 1、线程是基本的调度单元 2、单处理器系统,多线程可以提高吞吐率 3、多处理器系统,多线程可以提高CPU利用率 4、建模的简单,使用线程可以将复杂的工作流分解为一组简单的同步的工作流,每个工作流在每个单独的线程中运行,并在特定的同步的位置进行交互。 5、异步事件的简化处理 单线程阻塞IO 阅读全文
posted @ 2016-12-11 21:25 John95 阅读(121) 评论(0) 推荐(0)
摘要: 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。 为表设 阅读全文
posted @ 2016-12-09 22:48 John95 阅读(148) 评论(0) 推荐(0)
摘要: K 邻近算法 采用测量不同特征值之间的距离来进行分类 Ad:精度高,对异常值不敏感,无数据输入假定 Na:计算复杂度高,空间复杂度高 KNN原理 存在样本集,每个数据都存在标签,输入无标签的新数据后,算法提取出特征最相似的标签。 一般选取前K个数据,通常K不大于20,最后选择K个最相似的数据中出现次 阅读全文
posted @ 2016-12-09 22:36 John95 阅读(140) 评论(0) 推荐(0)
摘要: 冒泡排序算法 分析 从头开始,持续比较相邻的元素,大的元素放在后面。 代码实现 阅读全文
posted @ 2016-12-09 22:04 John95 阅读(113) 评论(0) 推荐(0)
摘要: 插入排序算法 分析 输入:n个数 输出一个序列,使得a1'=倒置数量,0 and A[i] key do A[i+1] 0 and a[index 1] item_i: a[index]=a[index 1] index =1 a[index]=item_i return a a=[3,2,1] p 阅读全文
posted @ 2016-12-09 21:49 John95 阅读(132) 评论(0) 推荐(0)