计算机内功修炼
文章平均质量分 87
计算机内功修炼
波波老师
初心易得,始终难守!愿成长的路上不忘初心!
展开
-
大学课程数据结构与算法复习
参考链接数据结构之数组和链表的区别算法的时间与空间复杂度1、前言数据结构与算法是计算机专业必修的一门课在工作中,免不了要面对一些复杂的业务逻辑,可能有多种方法实现,每种方式的运行效率也可能都不一样,好的数据结构与算法能提升效率,具体体现在时间和空间上比如,现在有一万个人,要找出姓名叫张三的人,最简单的方式是从头到尾遍历,如果张三是最后一位,则要遍历10000次如果按字母首字母去查找的话,则首先在10000个人当中找到首字母为Z的人,假如是100个人,那最快的情况也只用遍历1.原创 2020-09-03 21:06:12 · 1348 阅读 · 2 评论 -
手把手教你用Java代码画二叉树
最近在研究二叉树,所以需要经常画二叉树来弥补我的匮乏的想象力,但是画一颗二叉树也不是那么容易的事,不仅画的慢,还画的丑,昨天晚上睡觉的时候还在思考,能不能用代码来画二叉树呢?我确信这种方案是可行的,本文就来分享我的成果,其实用代码画二叉树挺有趣的。另外,由于代码不是一成不变的,我会时不时改一些bug、或者做一些优化,因此我将代码上传到gitee仓库上面了,读者可以自行下载。附地址:https://gitee.com/bobo_tea/datastructure/tree/master/src/main/原创 2020-12-11 14:17:46 · 2445 阅读 · 8 评论 -
浅谈平衡二叉树的原理与实现
下次再让你讲平衡二叉树,可别说不会了完整项目我已经上传到我的码云git仓库上了,如果就需要的话请访问我的码云git仓库获取,附上地址:https://gitee.com/bobo_tea/datastructure/tree/master/src/main/datastructure/com/bobo/group/tree/avl。或者点击公众号底部菜单->资源汇总->仓库汇总。或者联系我。1、平衡二叉树基本概念平衡二叉树,也是一种二叉查找树,但它是平衡的,即左子树与右子树...原创 2021-01-21 09:21:56 · 468 阅读 · 2 评论 -
浅谈二叉查找树结点插入和删除操作
教你玩转二叉查找树的结点插入操作压轴出场-二叉查找树的结点删除操作完整项目我已经上传到我的码云git仓库上了,如果就需要的话请访问我的码云git仓库获取,附上地址:https://gitee.com/bobo_tea/datastructure。或者点击公众号底部菜单->资源汇总->仓库汇总。或者联系我。1、二叉查找树的结点插入现有只有一个结点的二叉查找树,该结点的值为50,现在我要往这颗二叉查找树依次插入9个结点:42,57,13,72,47,65,88,93,26。..原创 2021-01-21 09:00:42 · 916 阅读 · 0 评论 -
B树结点的插入删除操作
B树的两种特殊形式:2-3树:3阶B树,只能有2结点和3结点(结点的孩子数为2称之为2结点,以此类推);2-3-4树:4阶B树,只能有2结点、3结点和4结点。既然它们是B树,那么它们一定满足B树的所有性质。原创 2021-01-28 13:09:47 · 1677 阅读 · 4 评论 -
一文带你读懂二叉树
一文带你读懂二叉树1、二叉树的基本概念二叉树定义:结点的度最多为2二叉树的五种形态: 空二叉树 只有一个根结点 根结点只有左子树 根结点只有右子树 根结点既有左子树又有右子树 特殊的二叉树: 斜树:分为左斜树和右斜树,其实这算是一种线性结构了 满二叉树:如图1所示。 完全二叉树:如图2所示。满二叉树一定是完全二叉树,但完全二叉树不一定是满的。而图3中的三颗树,都不是完全二叉树。 图1.原创 2020-12-23 13:29:35 · 1059 阅读 · 0 评论 -
Java实现快速排序 附详细代码
1、排序算法简介下面看一下七种内排序(待排序数据放在内存)算法的分类。插入排序类 直接插入排序 希尔排序 选择排序类 简单选择排序 堆排序 交换排序类 冒泡排序 快速排序 归并排序类 归并排序 根据算法的简单性进行分类: 简单算法:冒泡、简单选择、直接插入 改进算法:希尔、堆、归并、快速 排序算法的性能主要受三个方面影响: 时间性能 辅助空间 算法的复杂性 ...原创 2021-03-25 20:03:35 · 360 阅读 · 0 评论 -
数据结构中的树 基础知识讲解
树的基本概念这篇文章讲的是树的基本概念,二叉树在下一篇文章中讲。树这种数据结构在生活中很常见,比如公司的组织结构图、文件系统等。当有大量数据时,链表的线性访问速度是最慢的,因此树这种结构有着极其重要的地位。1、树的定义线性结构属于一对一的结构,而树属于一对多的结构。树是n(n>=0)个结点的有限集,n=0称为空树;并且在任意一颗非空树中: 有且仅有一个根结点 当n>1时,又能分为m个(m>0)个子树 下图就不满足树的定义,因为子树间.原创 2020-12-23 13:10:52 · 868 阅读 · 1 评论 -
浅谈数据结构与算法的基础知识
为什么要学数据结构与算法,我总结了如下几点:锻炼思维和问题处理能力,提高代码效率,大厂面试必备,情怀(大学没认真学)原创 2020-12-22 13:14:12 · 353 阅读 · 0 评论 -
浅谈几种不同的查找算法思想
顺序表和有序表的查找算法线性索引查找1、查找是什么?术语 解释 查找表 同一类型数据元素构成的集合 关键字 数据元素中某个数据项的值 查找 根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素 静态查找表 查找时不做插入或删除操作。适用于用线性表存储,可以采用顺序查找或折半查找 动态查找表 查找时会有插入或删除操作,适用于二叉树。 先介绍两种查找算法: 顺序表查找:这个就是按顺序从前往后查找,没啥好说的。 ..原创 2021-01-08 12:55:17 · 580 阅读 · 0 评论 -
什么是B-树、B树、B+树、B*树?
文件系统的灵魂数据结构 B树什么是B-树、B树、B+树、B*树?正如标题所言,本文介绍经常使我们混淆的B-树、B树、B+树和B*树。首先,B-tree树即B树。B即Balanced平衡,因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,这是个非常不好的直译,很容易让人产生误解,人们可能会以为B-树和B树是两种树。1、B树1.1、B树产生的背景不管是二叉树、二叉查找树还是平衡二叉树,它们都有诸多限制,比如: 每个结点只能存储一个元素。 ..原创 2021-01-28 12:58:04 · 1847 阅读 · 1 评论 -
什么是二叉查找树,有什么优势?
什么是二叉查找树,有什么优势?1、二叉查找树的定义对于顺序存储,不需要维护有序性,但查询效率低;而有序存储,查询效率高,但由于插入删除需要维护有序性,因此效率低。本文要介绍的二叉查找树(也叫二叉搜索树、二叉排序树、ADT树)结合了二者的优势,不仅查询效率高,插入和删除效率也高。二叉查找树(空树也是二叉查找树)的定义: 若左子树不为空,则左子树所有结点的值小于根结点 若左子树不为空,则左子树所有结点的值小于根结点 左右子树也是二叉查找树 .原创 2021-01-16 14:31:09 · 1342 阅读 · 0 评论 -
Base64编解码原理并用Java手工实现Base64编解码
Base64编解码原理目前Base64已经成为网络上常见的传输8比特字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后进行签名或加密,之后再次Base64编码传输。那么,Base64到底起到什么作用呢?在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数据的一种方法原创 2022-05-14 18:32:39 · 1235 阅读 · 0 评论 -
计算机中为什么要用补码表示负数,为什么补码一定是反码+1呢?
本文要讨论的话题是:补码。在介绍补码前,先介绍一下,什么是原码,什么是反码。在计算机里,是用二进制来保存整数的,假设我们用1个字节(1字节=8bit)来表示整数(实际在多数编程语言里都是4个字节),规定最高位为符号位,其余位为数值位。正整数10的二进制为00001010,这个就是原码。数值位取反后得到的二进制,就是反码,取反就是将0变成1,1变成0。有基础的同学肯定知道,计算机是用补码表示负数的,补码=反码+1,举个例子,-10的原码为10001010,-10的反码为11110101,-10的补码原创 2022-05-01 11:57:47 · 5585 阅读 · 9 评论 -
小数在计算机中如何存储?
IEEE标准754将浮点数的存储分三个部分:符号位;指数位;有效数字(系数位);单精度浮点数32位=1位符号位+8位指数位+23位有效数字;双精度浮点数64位=1位符号位+11位指数位+52位有效数字原创 2021-01-04 14:46:13 · 3434 阅读 · 4 评论 -
什么是机器语言、汇编语言、高级语言?
什么是机器语言?可能大家都知道,计算机不像人类一样能够识别自然语言,不信你试试吧,你对着电脑say一句:“请您打开微信”,人家估计心里在想:“这人怕不是个傻子吧!”。既然电脑听不懂自然语言,那它能听懂啥语言呢?没错,就是机器语言。机器语言顾名思义,是机器能看懂的语言,人肯定看不懂。由于机器语言是用二进制表示的,而二进制只有0和1,有着简单高效的特点,对于计算机这样的二愣子再适合不过了。但是问题又来了,假如打开微信用“10100101”这串二进制表示(实际可能会更长),那每次打开微信都要输这么一串原创 2020-12-03 12:56:36 · 7045 阅读 · 0 评论 -
深入理解计算机编码与字符集的区别
1、编码表与字符集的区别比如,unicode是编码表(万国码),但计算机如何存储编码(几个字节存储),这时候要用到字符集(UTF-8)举例:用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件2、ASCII扩展码字符和GBK混合写入文件使用JavaIO流同时将欧元符€和汉字写入文件。FileOutputStream out = new FileOutputStream("E:/tm.原创 2019-11-01 11:34:30 · 439 阅读 · 0 评论 -
详解TCP可靠传输、滑动窗口、流量控制、拥塞控制、三次握手四次挥手工作过程
端口号:16位,最多有65535个端口号服务端端口号:熟知端口号:0~1023登记端口号:1024~49151客户端端口号(短暂端口号):49151~65535TCP:面向连接UDP:面向报文TCP主要特点:面向连接每一条TCP连接只能有两个端点,即每条TCP连接是点对点(一对一)的提供可靠交付的服务,无差错、不丢失、不重复,且按序到达全双工通信:TCP的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序在把数据传送给......原创 2021-04-28 11:34:38 · 883 阅读 · 0 评论 -
浅谈计算机网络中的socket
在OSI七层网络模型中,Socke接口处于OSI 七层模型的表示层,利用socket接口编程的代码处于应用层.Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议.redis 客户端和服务端之间通信的协议是RESP(REdis Serialization Protocol)。传输层使用TCP原创 2020-06-05 17:40:01 · 543 阅读 · 1 评论 -
详解HTTP协议原理
1、主要内容:HTTP协议简介https://www.fangzhipeng.com/javainterview/2019/07/02/tcp-http1.html2、主要内容:HTTP协议报文头部解析https://www.fangzhipeng.com/javainterview/2019/07/03/tcp-http2.html3、get请求和post请求的报文区别get...原创 2020-02-23 15:12:47 · 382 阅读 · 0 评论