2 落英神剑碧海潮生

尚未进行身份认证

我要认证

桃花影落飞神剑,碧海潮生按玉箫

等级
TA的排名 14w+

【剑指Offer】树

定义树节点static class TreeNode{ int value; TreeNode left; TreeNode right; public TreeNode(int value) { this.value = value; }}重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。public static TreeNode buildTree(int[] p

2020-09-10 22:57:10

链表相关题目

给定两个升序链表的头指针head1和head2,打印两个链表的公共部分思路:利用指针head1和head2从头开始比较挨个比较两个链表的值如果head1处的数较小,则向后移动head1 如果head2处的数较小,则向后移动head2 如果两个值相等则打印 只要head1或者head2其中一个为null,则停止。public static void printPublic(Node head1, Node head2) { while(head1 != null &&amp.

2020-09-20 22:56:20

矩阵相关题目

顺时针打印矩阵/** * @param matrix 矩阵本身 * @param LR 左上角的行标 * @param LC 左上角的列标 * @param RR 右上角的行标 * @param RC 右上角的列标 */public static void printEdge(int[][]matrix, int LR, int LC, int RR, int RC) { /** * 如果不是方阵,那么可能会出现这种棒状结构 * LR =

2020-09-12 15:10:52

【JVM】垃圾回收机制

什么是垃圾?垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。为什么需要GC?对于高级语言来说,一个基本认知是如果不进行垃圾回收,内存迟早都会被消耗完,因为不断地分配内存空间而不进行回收,就好像不停地生产生活垃圾而从来不打扫一样。除了释放没用的对象,垃圾回收也可以清除内存里的记录碎片。碎片整理将所占用的堆内存移到堆的一端,以便.

2020-09-05 17:06:02

【JVM】执行引擎

在介绍执行引擎之前,我们先来了解几个概念:机器码:各种用二进制编码方式表示的指令(0101……),叫做机器指令码。开始,人们就用它采编写程序,这就是机器语言。机器语言虽然能够被计算机理解和接受,但和人们的语言差别太大,不易被人们理解和记忆,并且用它编程容易出差错。用它编写的程序一经输入计算机,CPU直接读取运行,因此和其他语言编的程序相比,执行速度最快。机器指令与CPU紧密相关,所以不同种类的CPU所对应的机器指令也就不同。指令:由于机器码是有0和1组成的二进制序列,可读性实在太差,于是人们发明了.

2020-09-03 18:25:11

【JVM】对象的实例化

对象实例化的几种方式:new 调用Class对象的newInstance()方法(这里调用的无参构造器,权限必须是public) Constructor对象的newInstance(xxx)方法(可以调用无参、带参的构造器,权限没有要求) 使用clone()浅克隆(不调用任何构造器,当前类需要实现Cloneable接口,实现clone()方法) 使用反序列化(从文件中、从网络中获取一个对象的二进制流) json方式public static void main(String[] args)

2020-09-02 19:43:12

【JVM】运行时数据区

Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。其具体的结构如下图:上图中方法区和堆是被多线成共享的,一个Java进程一份,程序计数器、本地方法栈、虚拟机栈都是随线程的开始和结束来创建和销毁的。所以每个线程独有一套自己的程序计数器、本地方法栈、虚拟机栈。而方法区和堆空间时多线程共享的。JVM中的线程:线程是一个程序里的运行单元。JVM允

2020-09-02 19:40:51

Mysql中的锁&数据库事务

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那么如何解决是你买到还是另一个人买到的问题?这里肯定要用到事务,我们先从库存表中取出物品数量,然.

2020-08-29 20:44:08

Mysql索引优化

单表优化案例多表优化案例遵循最左前缀匹配原则上述索引索引失效的原因:复合索引是将各个索引字段做字符串连接后作为key,使用时将整体做前缀匹配。就是最左前缀匹配(最左前缀法则)。如果索引了多列,要遵守最左前缀法则。比如(a,b,c)的时候,B+树是按照从左到右的顺序来建立搜索树的,比如(where a=? and b=? and c=?)当有数据来检索时会先比较a列来确定下一步的搜索方向,如果a列相同再一次比较b列和c列。最后得到检索的数据。上面(where b=? )和(where

2020-08-27 15:00:38

MySql索引底层结构&SQL性能分析

SQL优化,为什么需要sql优化,因为很多时候我们的sql性能比较低,执行效率慢。导致这种情况产生的原因主要是以下几点:查询语句写的不好 索引失效 关联查询太多join(设计缺陷或不得已的需求) 服务器调优及各个参数设置(缓冲、线程数等)优化SQL主要就是优化索引。什么是索引?MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。可以简单理解为排好序的快速查找数据结构。在数据之外,数据库系统还维护着满..

2020-08-25 19:26:14

MySql中sql语句的执行顺序

下图显示了sql语句的书写顺序和真正执行的顺序的关系:实际执行顺序如下:from子句:左右两个表做笛卡儿积。笛卡尔积(多表查询):笛卡尔积是两个集合的运算。如下图两张表A和B。A表有字段a,b和c;B表有字段a和d;A表有3条记录,B表有2条记录。A表和B表的结果是一个二维表A*B;A*B表的字段是两个表字段的并集,即,有5个字段。分别为A.a, b, c, B.a和d。A*B表的记录是A表的每一条记录与B表的每一条记录依次生成一条新纪录,共6条。一个具体的实例:.

2020-08-24 16:15:52

Mysql逻辑架构

逻辑架构图如上图将Mysql架构分成4层:一、连接层连接层属于最上层,是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。Connectors:表明可以使用不同语言进行SQL交互。Connection Pool:.

2020-08-24 12:24:24

HTTP认证方式

我们都知道有些web资源只有具有特定权限的人才能获取,所以web服务器必须弄清楚到底是谁在访问它。但是HTTP协议又具有无状态的特性,就拿登录举例子来说,比如这次登陆了,下次发请求的时候它不知道你是否是登陆的状态。也就是说web服务器它不知道不是否就是有这个“特定权限”的人。所以为了达到这个目标,必不可少的就是认证。基于表单的认证(Session+Cookie)这种认证方式需要Session和Cookie配合。服务器端保存Session对象(一个Session对象与一个Session ID关联,两者

2020-08-23 14:51:37

MySql初级入门

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。如何使用终端操作数据库?如何登录数据库服务器打开命令行窗口输入:mysql -hlocalhost -uroot -proot其中h就是host u和p就是你配置的user和password。一般会省略参数-h ,mysql会自动默认为本地连接。-u后面可以有空格也可以省略空格。对于-p如果你明确指出了密码值(我这里是root),,那么-p和密码值之间是不能.

2020-08-23 10:57:20

【HTTP&NIO】一个非阻塞的HTTP服务器

B/S网络架构:B:Browser(浏览器),web客户端。S:Server(服务器),web服务器。与传统的C/S架构相比,两者的应用层协议有所区别。B/S模式使用的是统一的HTTP协议(应用层协议)来交互数据,而传统的C/S是需要自定义应用层协议的。HTTP采用无状态的短连接的通信方式,通常情况下,一次请求就完成了一次数据的交互,通常也对应着一个业务逻辑。完成之后这次连接就断开了。采用这种方式是为了能够服务更多的用户,因为当前互联网应用每天都会处理上亿的用户请求,不可能每个用户访问一次后就一直保

2020-08-20 18:26:45

TCP协议

网络分层网络分层就是将网络节点所要完成的数据的发送或转发、打包或拆包,控制信息的加载或拆出等工作,分别由不同的硬件和软件模块去完成。这样可以将往来通信和网络互连这一复杂的问题变得较为简单。链路层:处理与电缆(或其他任何传输媒介)的物理接口细节。 网络层:处理分组在网络中的活动,例如分组选路 运输层:为两台主机上的应用程序提供端到端的通讯 应用层:处理特定的应用程序细节网络ip提供的是一种不可靠的服务,他只是尽可能快的把分组从源结点送到目的结点,但不提供可靠性保障。 TCP在不可靠的I

2020-08-17 16:29:59

【树】AVL树

普通二叉查找树存在的缺陷如上图,如果树的结构是这样一种形式,那么他就会失去二分查找这种高效率的特性。所以基于此才有了AVL树。AVL树(平衡二叉查找树)该树的一个特点就是首先他是一个二叉查找树,在此之上,该树中任何一个节点的左右子树的高度差都不超过1。也就是它时刻保持着左右子树的高度平衡。如何保持高度平衡(旋转)最熟悉的左旋右旋,左旋可以降低右子树的高度。与之相反右旋可以降低左子树的高度。文字表达太过生硬。左旋右旋如下图。下面是以节点E为基准的左旋示意图:如上图这颗树的.

2020-08-15 19:15:45

【树】二叉查找树

二叉查找树简介二叉查找树: BST(Binary Search Tree)又称为二叉排序树或者二叉搜索树。二叉查找树的特性:任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点。二叉查找树增删节点快,查询效率高。一般来讲,数组增删元素比较慢。链表结构增删快但查询效率慢。而二叉查找树囊括了这二者的优点。添加节点往二叉查找树中添加节点时,从树根开始索引,如果新节点的值大于根节点的值则直接在右子树中找.

2020-08-13 19:10:51

【排序】堆排序

堆排序基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。 堆是具有以下性质的完全二又树: 每个结点的值都大于或等于其左右孩子结点的值,称为大根堆。注意:没有要求结点的左孩子的值和右孩子的值的大小关系 每个结点的值都小于或等于其左右孩子结点的值,称为小根堆堆排序的基本思想:将无序序列构建成一个堆,根据升序或降序需求选择大顶堆或小顶堆; 将堆顶元索与末尾元素交换,将最大元素“沉”到数组末端; 重新

2020-08-13 00:57:44

【树】树与二叉树详解

树树是一种数据结构。它的特点如下:每个节点有零个或多个子节点。没有父节点的节点称为根节点 每一个非根节点有且只有一个父节点除了根节点外,每个子节点可以分为多个不相交的子树如下图就是一颗树相关术语:节点的度: 一个节点(上图中一个圆圈就是一个节点)含有的子节点的个数称为该节点的度。( 上图A节点的度为2 B节点的度为3 J节点的度为0 ) 树的度: 一棵树中,最大的节点的度称为树的度(.上图B节点的度为3,最大) 叶节点或终端节点: 没有子节点的节点称为叶子节点。也即度为0的节..

2020-08-11 19:42:30

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享学徒
    分享学徒
    成功上传1个资源即可获取