代码改变世界

阅读排行榜

《CLR.via.C#第三版》第二部分第10,11章节读书笔记(五)

2014-11-11 13:25 by 杭伟, 242 阅读, 收藏,
摘要: 第10章是对 属性 做阐述属性本质上是方法匿名类型的使用:var o1 = new { Name="Jeff",year=1964 };Console.WriteLine("Name={0},Year={1}",o1.Name,o1.Year);第11章 事件由于事件是委托的一种,这里暂时留空,待完... 阅读全文

Java实现双向循环链表

2022-11-21 09:02 by 杭伟, 198 阅读, 收藏,
摘要: 上一篇文章实现了单向循环链表,双向很简单,在单向循环链表的基础上加一个前驱指针, 节点类如下: /** * 双向链表节点 */ public class Node { private int data;//数据域 private Node pre;//指向上一个节点 private Node nex 阅读全文

MySQL-InnoDB磁盘结构

2022-12-20 12:10 by 杭伟, 194 阅读, 收藏,
摘要: 主要阐述InnoDB存储引擎(MySQL5以后的默认引擎)。 数据库中最基本的组成结构是数据表,视觉上的表和其对应的磁盘结构如下: 此图参考了厦门大学课堂:MySQL原理 。但是视频中一些更多细节没有涉及,比如Leaf node segment和Non-leaf node segment其实就是叶子 阅读全文

Java实现单向循环链表

2022-11-18 18:05 by 杭伟, 193 阅读, 收藏,
摘要: 准备节点类,节点类中只有一个int类型的数据域和一个指针: /** * 单链表节点 */ public class Node { private int data;//数据域 private Node next;//指向下一个节点 public int getData() { return data 阅读全文

ArrayList实现原理和自动扩容

2022-11-18 16:34 by 杭伟, 193 阅读, 收藏,
摘要: ArrayList在Java集合中的位置, ArrayList原理: transient Object[] elementData; ArrayList通过数组来实现。 默认构造方法会构造一个容量为10的空数组。 自动扩容: 在每次添加新元素(Add方法)时,都会通过grow方法判断当前list的s 阅读全文

MySQL-带你上官网看索引

2022-12-22 11:54 by 杭伟, 190 阅读, 收藏,
摘要: 在我之前的一篇文章中,有引用一个讨论用Hash还是Tree的问题,DB中关于查找类数据结构,除了树,还有Hash(HashMap,HashSet)。 存储数据结构之争 B+树主要是照顾磁盘IO这种特殊的性质应运而生的;然而在内存够多够大时,Hash某些时候比Tree结构有用得多。 但是Hash做索引 阅读全文

Java实现平衡二叉搜索树(AVL树)

2022-11-23 19:31 by 杭伟, 172 阅读, 收藏,
摘要: 上一篇实现了二叉搜索树,本章对二叉搜索树进行改造使之成为平衡二叉搜索树(Balanced Binary Search Tree)。 不平衡的二叉搜索树在极端情况下很容易退变成链表,与新增/删除/查找时间复杂度为O(logN)的目标又远了一步。 平衡二叉搜索树始终围绕O(logN)这个目标来构建数据结 阅读全文

线程池ThreadPoolExecutor

2022-12-11 23:45 by 杭伟, 145 阅读, 收藏,
摘要: 回顾Java创建线程的几种方式: 1,继承Thread(实际Thread也是实现Runnable接口); 2,实现Runnable接口; 3,实现Callable接口(返回值); 4,由线程池创建。 根据阿里巴巴Java开发手册,关于并发编程有两个强制要求: 1.线程资源必须通过线程池提供,不允许在 阅读全文

Java双向链表实现队列

2022-11-21 15:46 by 杭伟, 140 阅读, 收藏,
摘要: 将双向链表做简单的改造,即可实现一个FIFO(First Input First Out)队列, 该队列只在头节点出队,尾节点入队。 一般来说定义节点类只需一个后驱节点next即可。 这里保留pre节点,模拟一个已经入队的节点,如果需要取消,这样pre节点就是一个优势。 定义节点类: /** * 队 阅读全文

Java实现二叉搜索树

2022-11-22 17:06 by 杭伟, 134 阅读, 收藏,
摘要: 将链表进行改造,即可构造一棵二叉树。 本文用java实现一颗二叉搜索树,实现二叉树的新增,删除,查找等功能。并测试新增和查找的时间复杂度。 节点类与链表节点相似,将链表的前后节点定义逻辑改为左右(孩子)节点: /** * 二叉搜索树节点 */ public class Node { private 阅读全文