02 2020 档案
摘要:题解: 直接排序,找前面最小的k个 建立大顶堆,大顶堆,最大的数在最上面嘛。。。 结果:直接排序比PriorityQueue实现的大顶堆速度更快。。。 图中8ms的就是直接排序的。 完整代码: 1 /** 2 * @author: wooch 3 * @create: 2020/02/26 4 */
阅读全文
摘要:1. 进程与线程 1.1 进程 进程控制块(Process Control Block,PCB):使参与并发执行的每个程序(含数据)都能够独立运行,在操作系统中必须为之配置一个专门的数据结构,这个数据结构就叫PCB。 由程序段、相关的数据段和PCB构成了进程实体,简称进程。 定义:进程是具有独立功能
阅读全文
摘要:1. MySQL体系结构 从概念上讲,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、查询、维护、运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能
阅读全文
摘要:B+树作为索引最为常见,亦是数据库中最为频繁的一种索引。 B+树通过二叉查找树,再由平衡二叉树,最后加B树演化而来。 1. 二分查找法 二分查找法(binary search)也叫折半查找法,从有序数组中查询某一条记录。 基本思想:将记录按有序(递增或递减)排列,先查找数组中的中间位置的对象,如果t
阅读全文
摘要:给两个数组,分别是前序和中序的遍历结果。(数组中没有重复的数字) 首先知道二叉树的便利分别是: 先序遍历:根左右; 中序遍历:左根右; 后续遍历:左右根; 即根在哪一个位置,就是哪一种遍历方式,其中左右的顺序是不变的。 一个经验之谈:涉及到二叉树问题的时候,大部分二叉树问题都可以通过递归方式解决。
阅读全文
摘要:1. 概况 Redis是REmote DIctionary Server(远程字典服务器)的缩写,以 字典 结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。2009年Redis作者Salvatore Sanfilippo将其开源。 支持的键值数据类型有: 字符串类型(String) 散列
阅读全文
摘要:链表不能像数组一样直接进行随机读取,只能从头结点开始打印链表。 题解:要求从尾到头打印链表,那么首先就是要找到链表的整体长度,通过长度创建数组,然后将链表的第一个节点的值放入数组的最后一个位置,最后的数组正序的值就是链表倒叙的值。 分析:整个题目中会对链表进行两次遍历,需要的额外空间就是链表的长度,
阅读全文
摘要:在Java中String类是被final关键字修饰的类,因此String字符串是不可以被修改的,要修改字符串,可以通过StringBuilder和StringBuffer构造一个新的字符串。 StringBuilder和StringBuffer这两个类也是被也是被final关键字修饰的,并且都是继承
阅读全文
摘要:1. JMM JMM是JVM规范中定义的一种模型,来屏蔽掉各种硬件与操作系统的内存访问差异,实现Java程序可以在各种平台下都能达到一致的内存访问效果。 1. 1 volatile volatile关键字是JVM中最轻量级的同步机制。 volatile作用:被volatile关键字修饰的变量具有两个
阅读全文
摘要:1. 概述 Java可以动态扩展的语言特性就是依赖运行期间动态加载和动态链接来实现的。 1. 在实际情况中,每个Class文件都有可能代表着Java语言中的一个类或接口,后文中直接对“类”的描述包括了类和接口的可能性,而对于类和接口要分开描述的场景会特别指明; 2. 所提到的“Class文件”并非特
阅读全文
摘要:Java虚拟机内存管理机制 1 Java内存区域与内存溢出异常 1.1 运行时数据区域 方法区(Method Area) 线程共享的一个区域,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 在HotSpot中也叫永久代(Permanent Generation),但实际上
阅读全文
摘要:二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题解:做矩阵左下角或是右上角开始查询,当target存在的时候,当nums[i][j]<targe
阅读全文
摘要:找出数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 题解:题目中的数字范围为0~1,因此有一个最简单的思路:以数组nums中的长度创建数组,n
阅读全文
摘要:工厂模式(Factory Pattern) 在该模式中,创建对象时不会暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。目的:定义一个创建对象的接口,令其子类自己决定实例化哪一个类,使其创建过程延迟到子类进行。主要解决:接口选择的问题。何时使用:明确计划不同条件下创建不同的实例。如何解决
阅读全文
摘要:抽象类与接口的区别 抽象类 抽象方法:只有声明,没有具体的实现。即abstruct关键字修饰。 1 abstruct void function(); 抽象类与普通类的区别1.抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),默认情
阅读全文
摘要:模板模式(Template Pattern) 一个抽象类(模板)定义了类中方法的执行方式,子类对模板中的方法进行具体实现,调用的时候以抽象类中的方式进行调用。目的:定义一个类中方法的骨架,将特定实现延续到子类中。主要解决:一些方法通用,却在每一个子类中都重写了这个方法。何时使用:一些通用的方法。如何
阅读全文
摘要:单例模式(Singleton Pattern) 目的:保证一个类仅有一个实例,并提供一个访问它打的全局访问点。主要解决:一个全局使用的类被频繁的创建于销毁。何时使用:当你想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。关键代码:构造函数是私有的
阅读全文
摘要:最长公共子串 思路: 使用dp数组,当i=0||j=0时 c[i,j]=0,当xi=yj时,c[i,j]=c[i-1,j-1]+1,当xi!=yj时,c[i,j]=0。 1 /** 2 * @author: wooch 3 * @create: 2020/02/12 4 * 最长公共子串 5 * 核
阅读全文
摘要:最长公共子序列 思路: 首先子序列是非连续性的,因此两个字符串的最长公共子序列必然是以两个字符串最先相同的字符开始计算,然后以后面的剩余子串为子问题,因此以此为基础进行递归。 1 /** 2 * @author: wooch 3 * @create: 2020/02/12 4 * 5 * 最长公共子
阅读全文
摘要:最长无重复子串 思路: 同一个思路,两种方式实现 1. 使用HashMap 将字符串中的字符放入HashMap中,用字符作为HashMap的key,因此可以用该方式起到去重的方式。 2. 使用数组 相比哈希表,可以更节省资源。 1 import java.util.Arrays; 2 import
阅读全文

浙公网安备 33010602011771号