自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

sinat_31089473的博客

苍山如海,残阳如血

  • 博客(134)
  • 收藏
  • 关注

原创 Linux 命令整理

0112 top命令TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。top命令提供了实时的对系统处理器的状态监视,它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用、内存使用和执行时间对任务进行排序。前五行表示的统计信息第一行为任务队列信息,同命令uptime的执行结果是一样的当前时间 系统运行时间 当前登录用户数 系统负载(任务队列...

2022-01-12 21:05:11 433

原创 20211231记

悟已往之不谏,知来者之可追。实迷途其未远,觉今是而昨非。舟遥遥以轻飏,风飘飘而吹衣。归去来兮~

2021-12-31 23:32:21 176

原创 yoga 使用 & 鼠标设置

1. 可以通过 Fn+Q 组合键实现电脑工作模式切换2. Fn+Space :启用键盘背光灯3. 分辨率设置FHD 推荐最佳缩放124%QHD 推荐最佳缩放150%UHD 推荐最佳缩放200%方法: 鼠标桌面空白处右键 ——> 显示设置 ——> 高级缩放设置 ——>自定义缩放 ——> 输入124%应用 ——>重启电脑即可...

2021-09-16 19:29:23 2586

原创 使用Highcharts在线绘制直方图并可导出

var chart = Highcharts.chart('container',{ chart: { type: 'column', style:{ fontFamily:18 }, }, title: { text: '三种方法数据集加载时间对比' }, xAxis: { categories: [ 'O(1)','O(2)','O(3)','O(4)','O(5)' ], title: { text: '数据集' }, cross.

2021-05-13 08:33:24 1007

转载 2020-10-19 drop、truncate和delete的区别

drop、truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。    TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。 (2)表和索引所占空间。  &nbsp...

2020-10-19 21:34:55 279

原创 leetcode 142 环形链表

解题思路:这类链表题目一般都是使用双指针法解决的,例如寻找距离尾部第K个节点、寻找环入口、寻找公共尾部入口等。//环形链表相关import java.util.HashSet;class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; }}public class testg { //使用HashSet 解决

2020-09-22 09:49:02 90

原创 leetcode 200 岛屿数量

方法一:深度优先搜索我们可以将二维网格看成一个无向图,竖直或水平相邻的 11 之间有边相连。为了求出岛屿的数量,我们可以扫描整个二维网格。如果一个位置为 11,则以其为起始节点开始进行深度优先搜索。在深度优先搜索的过程中,每个搜索到的 11 都会被重新标记为 00。最终岛屿的数量就是我们进行深度优先搜索的次数。package com.zx.ds.sep20;//岛的数量public class testc { public static void dfs(char a[][]

2020-09-21 13:22:11 98

转载 2020-09-20 关于mysql中的count()函数

关于mysql中的count()函数 1.count()函数是用来统计表中记录的一个函数,返回匹配条件的行数。 2.count()语法:(1)count(*)---包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录。(2)count(1)---忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,在统计结果的时候,不会忽略列值为NULL的记录。(3)count(列名)---只包括列名指定列,返回指定列的记录数

2020-09-20 22:12:01 146

转载 2020-09-20 面向对象与面向过程的本质的区别

如果你很想搞明白面向对象是什么,面向过程是什么,或者说二者之间的区别是什么,那么就花费一点时间来研读一下这篇博客,你一定会有很大的收获的! 一、面向对象与面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:

2020-09-20 22:10:25 174

转载 2020-09-20 get和post特点

1.get和post是两种常用的http请求方法。 http:超文本传输协议(http)的设计目的是保证客户机与服务器之间的通信。 HTTP 的工作方式是客户机与服务器之间的请求-应答协议。 2.get:从指定的资源(数据库)请求数据。post:向指定的资源提交要被处理的数据。 3.get特点:请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的 GET 请求可被缓存GET 请求保留在浏览器历史记录中GET 请求可被收藏为书签GET 请求...

2020-09-20 22:07:41 820

原创 2020-09-19 部分问题总结

JAVA字符串格式化-String.format()的使用

2020-09-19 19:28:59 94

转载 2020-09-16 Redis缓存穿透、缓存雪崩问题分析

把redis作为缓存使用已经是司空见惯,当redis中的数据量起来了以后你就得考虑以下几个问题:(一)缓存和数据库间数据一致性问题分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的,那么请不要使用缓存。我们只能采取合适的策略来降低缓存和数据库间数据不一致的概率,而无法保证两者间的强一致性。合适的策略包括 合适的缓存更新策略,更新数据...

2020-09-16 21:56:28 94

转载 2020-09-16 Java内存泄漏的排查总结

一、内存溢出和内存泄露一种通俗的说法。1、内存溢出:你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,出现溢出。2、内存泄漏:你用new申请了一块内存,后来很长时间都不再使用了(按理应该释放),但是因为一直被某个或某些实例所持有导致 GC 不能回收,也就是该被释放的对象没有释放。下面具体介绍。1.1 内存溢出java.lang.OutOfMemoryError,是指程序在申请内存时,没有足够的内存空间...

2020-09-16 16:20:52 407

转载 2020-09-16 redis和Elasticsearch应用场景

redis和Elasticsearch比较 项目RedisElasticsearch介绍Redis是内存中的数据结构存储,用作数据库,缓存和消息代理Elasticsearch是一个基于Apache Lucene的现代搜索和分析引擎主数据库模型键值存储搜索引擎DB-Engines排名得分120.41总排名第9,key-value存储排名第7得分120.00总排名第10,搜索引擎排名第1网站redis.iowww.elastic.co/cn/elasticsearch...

2020-09-16 16:07:57 2244

转载 2020-09-16 Java 8系列之重新认识HashMap

摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类

2020-09-16 14:33:52 487

转载 2020-09-16 ArrayList、LinkedList、Vector的区别和实现原理

ArrayList、LinkedList、Vector是集合中经常拿来比较和面试的一个问题,我这里简要概括一下他们的区别和实现原理。存储结构ArrayList和Vector是按照顺序将元素存储(从下表为0开始),删除元素时,删除操作完成后,需要使部分元素移位,默认的初始容量都是10.ArrayList和Vector是基于数组实现的,Li...

2020-09-16 14:13:40 115

原创 网络&操作系统

计算机网络面试问题集锦操作系统进程的状态和转换计算机网络面试题(一)

2020-08-26 20:45:09 76

原创 计算机网络相关(体系结构&TCP运输连接管理)

1. 计算机网络体系结构具有五层协议的体系结构OSI的七层协议体系结构(图1-16(a)的概念清楚,理论也较完整,但它既复杂又不实用。TCP/IP 体系结构则不同,但它现在却得到了非常广泛的应用。TCP/IP 是一个四层的体系结构(图1-16(b),它包含应用层、运输层、网际层和网络接口层(用网际层这个名字是强调这一层是为了解决不同网络的互连问题)。不过从实质上讲,TCP/IP只有最上面的三层,因为最下面的网络接口层并没有什么具体内容。因此在学习计算机网络的原理时往往采取折中的办法,即综合OSI和TC

2020-08-23 17:34:37 659

原创 动态规划算法 背包问题(01)

动态规划算法1)动态规 划(Dynamic Progamming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法2)动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若千个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。3)与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)4)动态规划可以通过填表的方式来逐步推进,得到最优解.背包问题:有一

2020-08-21 21:24:36 198

原创 KMP算法

字符串匹配问题:有一个字符串 str1= "BBC ABCDAB ABCDABCDABDE",和一个子串 str2="ABCDABD" 现在要判断 str1 是否含有 str2, 如果存在,就返回第一次出现的位置, 如果没有,则返回-1暴力匹配算法如果用暴力匹配的思路,并假设现在str1匹配到 i 位置,子串str2匹配到 j 位置,则有:如果当前字符匹配成功(即str1[i] == str2[j]),则i++,j++,继续匹配下一个字符 如果失配(即str1[i]! = str2[j].

2020-08-21 21:09:06 104

原创 分治算法(汉诺塔)

分治算法介绍分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 分治算法可以求解的一些经典问题 二分搜索 大整数乘法 棋盘覆盖 合并排序 快速排序 线性时间选择 最接近点对问题 循环赛日程表 汉诺塔分治算法的基本步骤分治法在每一层...

2020-08-21 11:00:09 636

原创 图(深度优先遍历&广度优先遍历)

图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。图的表示方式图的表示方式有两种:二维数组表示(邻接矩阵);链表表示(邻接表)。邻接矩阵邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于n个顶点的图而言,矩阵是的row和col表示的是1....n个点。邻接表 邻接矩阵需要为每个顶点都分配n个边的空间,其实有很多边都是不存在,会造成空间的一定损失. 邻接表的实现只关心存在的边,不关心不存在的边。因此没有空间浪费,邻接表由数组+链表

2020-08-19 11:30:09 594

原创 平衡二叉树

给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在.上图BST 存在的问题分析:左子树全部为空,从形式上看,更像一个单链表. 插入速度没有影响 查询速度明显降低(因为需要依次比较), 不能发挥BST 的优势,因为每次还需要比较左子树,其查询速度比 单链表还慢 解决方案-平衡二叉树(AVL)平衡二叉树平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树, 可以保证查询效率较高。具.

2020-08-18 20:41:21 180

原创 二叉排序树

一个数列 (7, 3, 10, 12, 5, 1, 9),要求能够高效的完成对数据的查询和添加。使用数组数组未排序, 优点:直接在数组尾添加,速度快。 缺点:查找速度慢. 数组排序,优点:可以使用二分查找,查找速度快,缺点:为了保证数组有序,在添加新数据时,找到插入位置后,后面的数据需整体移动,速度慢。使用链式存储-链表 不管链表是否有序,查找速度都慢,添加数据速度比数组快,不需要数据整体移动。使用二叉排序树二叉排序树二叉排序树BST: (Binary Sort(Searc...

2020-08-18 14:03:49 92

原创 赫夫曼树

赫夫曼树给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。赫夫曼树相关概念路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1 结点的权及带权路径长度:若将树中结点赋给一个有着某种含义的数值,则这个数值

2020-08-18 10:02:28 90

原创 堆排序

堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系。 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆 一般升序采用大顶堆,降序采用小顶堆堆排序的基本思想将待排序序列构造成一个大顶堆 此时,整个序列的最大值就是堆顶的根节点。 将其与末.

2020-08-18 09:45:39 94

原创 线索二叉树(中序)

将数列{1 ,3 ,6, 8 ,10 ,14}构建成一颗二叉树1)n个结点的二叉链表中含有n+1 [公式2n-(n-1)=n+1] 个空指针域。利用二叉链表中的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索")2)这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded BinaryTree)。根据线索性质的不同,线索二叉树可分为前序线索二叉树、中序线索二叉树和后序线索二叉树三种3)一个结点的前一个结点,称为前驱结点4)一个

2020-08-16 22:41:22 4443

原创 二叉树的顺序存储

从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。package com.zx.ds.tree;//顺序存储二叉树class ArrBinaryTree{ private int arr[]; public ArrBinaryTree(int[] arr) { this.arr = arr; } //重载preOrder public void preOrder(){

2020-08-16 17:53:53 187

原创 二叉树

1.为什么需要树这种数据结构1)数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按--定顺序)会整体移动,效率较低2)链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可,删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历)3)树存储方式的分析能提高数据存储,读取的效率,比如利用二叉排序树(Bi.

2020-08-16 16:05:45 61

原创 哈希表(数组+链表)

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中-一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。有一个公司,当有新的员工来报道时,要求将该员工的信息加入id,性别,年龄,名字,住址.),当输入该员工的id时,要求查找到该员工的所有信息1)不使用数据库,速度越快越好=>哈希表(散列)2)添加时,保证按照id从低到高插入[课后思考:如果id不是从低到高插入

2020-08-10 21:34:35 1913

原创 查找算法

1. 查找算法介绍在java中,我们常用的查找有四种:1)顺序(线性)查找 2)二分查找/折半查找 3)插值查找 4)斐波那契查找2. 线性查找算法package com.zx.ds.search;public class SeqSearch { public static int search(int a[],int findVal){ for(int i=0;i<a.length;i++){ if(a[i]==findVa

2020-08-10 18:24:23 113

原创 基数排序

基数排序(桶排序)介绍:1)基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucketsort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用2)基数排序法 是属于稳定性的排序,基数排序法的是效率高的稳定性排序法3)基数排序(Radix Sort)是桶排序的扩展4)基数排序是1887年赫尔曼●何乐礼发明的。它是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较。基.

2020-08-10 15:08:01 269

原创 归并排序

归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案”修补"在一起,即分而治之)。归并排序基本思想合并相邻有序子序列:治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,

2020-08-10 14:02:07 76

原创 剑指 Offer JZ36 两个链表的第一个公共结点

题目描述输入两个链表,找出它们的第一个公共结点。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {

2020-08-07 15:29:15 85

原创 剑指 Offer JZ15 反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。迭代 使用头插法/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { ListNode

2020-08-07 14:22:43 240

原创 剑指 Offer JZ30 连续子数组的最大和

题目描述{6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int max=Integer.MIN_VALUE; for(int i=0;i<array.length;i++){ int temp=array[

2020-08-07 10:43:49 113

原创 剑指 Offer JZ63 数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。import java.util.PriorityQueue;import java.util.Comparator;public class Solution { //PriorityQueue默认

2020-08-07 09:51:07 102

原创 快速排序

快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外--部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列package com.zx.ds.ds0806;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;public

2020-08-06 14:36:40 83

原创 Java 日期与时间

package com.zx.ds.date;//日期与时间import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;import java.util.TimeZone;public class TestDate { public static void main.

2020-08-05 22:04:33 185

原创 希尔排序

希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。希尔排序法基本思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一-组,算法便终止import java.util.Arrays;public class ShellSort { public static v

2020-07-31 22:21:56 82

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除