自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(393)
  • 收藏
  • 关注

原创 数据结构知识点大汇总(二)

二、线性表线性表的类型定义线性表是n(n>0)个相同类型数据元素构成的有限序列,其中n为线性表的长度。线性表的基本操作:线性表的顺序表示和实现线性表的顺序存储结构:用一组地址连续的存储单元依次存储线性表的元素。线性表的顺序存储,也成为向量存储,又可以说是一维数组存储。线性表中结点存放的物理顺序与逻辑顺序完全一致,它叫向量存储。线性表顺序存储结构在插入或删除数据元素时比较繁琐,但是它比较适合存取数据元素。 线性表的插入操作:在第i个元素之前插入一个元素时,需将第

2021-12-24 17:13:04 467

原创 数据结构知识点大汇总(三)

三、栈和队列栈的概念栈是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时成为空栈。栈的进出顺序判断:栈的基本操作:顺序栈顺序栈利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈的操作的特殊性,还必须附设一个位置指针top来动态地指示栈顶元素的顺序栈中的位置。通常以top=0表示空栈。顺序栈的基本运算:链栈采用链表作为存储结构实现的栈。为便于操作,采用带头结点的单链表实现栈。因为栈的

2021-12-24 17:12:46 920 1

原创 数据结构知识点大汇总(四)

四、数组和广义表数组的定义数组是我们熟悉的数据类型,数组中各元素具有统一的类型,并且数组元素的下标一般具有固定的上界和下界,因此,数组的处理比其它复杂的结构更为简单。 任何数组A都可以看作一个线性表。数组维数确定后,数据元素个数和元素之间的关系不再发生改变,适合顺序存储。 数组的基本操作数组的顺序表示和实现行优先顺序列优先顺序矩阵的压缩存储有些特殊矩阵,非零元素呈某种规律分布或者矩阵中出现大量的零元素的情况下,会占用许多单元去存储重复的非零元素或零元素,这对高阶矩阵会造

2021-12-24 17:12:19 580

原创 数据结构知识点大汇总(五)

五、树树的定义树的逻辑表示:树形表示法、文氏图表示法、凹入表示法、括号表示法。结点:表示树中的元素,包括数据项及若干指向其子树的分支。 结点的度:结点拥有的子树树;树的度:一棵树中最大的结点度数叶子结点:度为0的结点;分支结点:度不为0的结点;孩子:结点子树的根称为该结点的孩子;双亲:孩子结点的上层结点叫该结点的双亲;兄弟:同一双亲的孩子。 深度:树中结点的最大层次数。有序树:树中各结点的子树从左至右是有次序的,不能互换。否则称为无序树。树的性质树中的结点

2021-12-24 17:11:59 406

原创 数据结构知识点大汇总(六)

六、图图的概念图是一种较线性表和树更为复杂的数据结构,在图形结构中,结点之间关系可以是任意的,图中任意两个数据元素之间都可能相关。有向图和无向图若无向图中的每两个顶点之间都存在着一条边,则称该无向图称作完全无向图;显然完全无向图中包含着e=n(n-1)/2条边。若有无向图中的每两个顶点之间都存在方向相反的两条边,则称该有向图称作完全有向图;显然完全有向图中包含有e=n(n-1)条边。与图的边或弧相关的数叫做权,带权的图称为网。对于有向图而言,度又分为出度和入度。.

2021-12-24 17:11:40 2727

原创 数据结构知识点大汇总(七)

七、查找概述查找表:由同一类型的数据元素(或记录)构成的集合。静态查找表静态查找是指在静态查找表上进行的查找操作,在查找表中满足条件的数据元素的存储位置或各种属性。静态查找表的查找算法主要有:顺序查找:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k进行比较,若当前扫描到的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的记录,则查找失败。折半查找:对给定值k,逐步确定待查记录所在区间,每次将搜索空间减少一半,直到查找成功或失败为止。

2021-12-24 17:11:02 136

原创 数据结构知识点大汇总(八)

八、排序排序概述排序的分类:内部排序和外部排序(若待排序记录都在内存中,称为内部排序;若待排序记录一部分在内存,一部分在外存,则称为外部排序)。稳定排序和不稳定排序。内部排序的算法:插入排序(希尔排序)、交换排序(快速排序)、选择排序(堆排序)、归并排序、基数排序。插入排序思想:每次将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。 具体实现算法:直接插入排序、折半插入排序、希尔排序 直接插入排序:void Insert

2021-12-24 17:09:39 105

原创 数据结构知识点大汇总(一)

一、数据结构绪论数据结构的基本概念数据结构是一门研究非数值计算的程序设计问题中,计算机的操作对象以及它们之间的关系和操作的学科。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据结构包含三个方面的含义:逻辑结构:物理结构:数据的逻辑结构在计算机中的表示,称此为物理结构,或称存储结构。数据类型:一个值的集合以及定义在这个值集上的一组操作的总称。抽象数据类型:通常由用户定义,用以表示应用问题的数据模型以及定义在该模型上的一组操作。算法是

2021-12-23 15:53:20 221

原创 数据结构:二叉树

计算机编程中最重要,最核心的一种数据结构:树。树在日常生活中是广泛存在的,例如家族的族谱,各种公司部门结构图等。在计算机里,树更是无处不在,你平时接触到的堆,红黑树,二叉查找树,并查集,线段树,后缀树,树状数组都是树。数据库中索引是B+树,编译器中的语法树也是一种树,操作系统中的文件系统大多设计成树的结构……还有太多太多了。所以说,树这种数据结构是程序的灵魂,是程序的根基,是电,是光,是……总之,能不能把树这种数据结构玩得溜,可以说是做程序员的第一道坎。树这种数据结构,最经典,最基础的实例就是二叉树

2021-12-23 15:50:45 971

原创 Java中的访问修饰符详解

Java一共提供了3个访问修饰控制符:private、protected、public,代表了三种访问控制级别,另外还有一个不加任何访问控制符的访问控制级别,一共提供了4中访问控制级别。访问控制级别图我们在Java编程中「直接访问」一个成员变量或者成员方法,有两个形式1、对象.成员变量2、成员变量/*第二种多见于类内访问本类的成员变量*/我们将访问成员变量或者方法的范围限制在三个方面,分别讨论本类中 子类中 不同包的类中一、private(当前类访问权限)如果类里

2021-12-23 15:48:29 667

原创 Java中的基本数据类型和包装类型

Java 中的基本数据按类型可以分为四大类:布尔型、整数型、浮点型、字符型;这四大类包含 8 种基本数据类型。布尔型:boolean 整数型:byte、short、int、long 浮点型:float、double 字符型:char这8 种基本类型取值如下:数据类型代表含义默认值取值包装类boolean布尔型false0(false) 到 1(true)Booleanbyte字节型(byte)0﹣128 到 127Bytechar字符型'\u0000'(空)'\u0000' 到 '\uFF

2021-12-23 15:46:12 707

原创 递归算法的总结与应用

一、步骤把问题转化为规模缩小了的同类问题的子问题 有明确的不需要继续进行递归的条件(base case) 有当得到了子问题的结果之后的决策过程 不记录每一个子问题的解二、实例2.1 汉诺塔问题打印n层汉诺塔从左边移动到最右边的全部过程2.1.1 思路不考虑左中右的情况。只考虑需要从源位置from移动到目标位置to,中间暂存的位置是help。那么问题就可以抽象为:1~i-1:from - > help i :from - > to 1~i-1:help - &g

2021-12-23 15:42:13 860

原创 递归算法及其应用

使用递归算法。//递归 public static int recursionBinarySearch(int[] arr,int key,int low,int high){ if(key < arr[low] || key > arr[high] || low > high){ return -1; } int middle = (low

2021-12-23 15:38:11 382

原创 成员变量和局部变量的区别

/* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 D:初始化值不同 成员变量:有默认初始化值 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。 注意事项: .

2021-12-23 15:36:12 146

原创 while循环语句

1.while循环基本使用循环的作用就是让指定的代码重复的执行. while循环最常用的应用场景就是让执行的代码按照指定的次数重复执行需求--打印5遍Hello World思考--如果要求打印100遍怎么办?1.1 while语句基本语法初始条件设置——通常是重复执行的 计数器while条件(判断 计数器 是否达到 目标次数):条件满足时,做的事情A条件满足时,做的事情B条件满足时,做的事情C................处理条件(计数器+ 1)注意:

2021-12-23 15:33:45 11111

原创 Arrays工具类

Arrays工具类速查速记: * Arrays:针对数组进行操作的工具类。比如说排序和查找。没有构造,方法全部是静态。 * 1:public static String toString(int[] a) 把数组转成字符串(不只是int[]类型,只要是数组类型就可以用) * 2:public static void sort(int[] a) 对数组进行排序 * 3:public static int binarySearch(int[] a,int key) 二分查找补充: * 4:pu

2021-12-22 15:02:11 1336

原创 Arrays工具类和二维数组

一、数组的更多内容1.1 Arrays工具类JDK提供的java.util.Arrays工具类,包含了常用的数组操作,方便我们日常开发。Arrays类包含了:排序、查找、填充、打印内容等常见的操作。注意1:Arrays.binarySearch(arr,elem );是二分查找,要求数组必须有序。注意2:在JDK8增加parallelSort()方法,为并发排序方法,适合数据量大的情况。注意3:JDK8后增加了函数式接口、lamda表达式,流式编程有关方法,暂时无法讲解。..

2021-12-22 15:00:54 428

原创 二分法查找原理

1、什么是二分法查找?简单粗暴一点理解二分法(1)将数据有序排列:先将一个数据集进行有序排列(可根据某种数值的大小降序或升序<当然排序的规则可根据业务规则自定义>,前提是需要查找的数据具备该规则同样的属性);(2)数据分半:就是将排序好的数据集切分成大致相等的两份数据;(3)查找数据:把排序好的数据拆分为个数大致相等的两半,因为有排序,查找的时候先和其中一半数据种的最大或者最小的数进行比较来断定要查找的数据是否会包含被分割后的一半数据种,然后在满足判定条件的数据集中一次获取数据进

2021-12-22 14:52:04 1081

原创 插入排序(详)

1.1、排序分类1.2、排序的定义:对一序列对象根据某个关键字进行排序。1.3、术语说明稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面。内排序:所有排序操作都在内存中完成。外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行。时间复杂度:一个算法执行所耗费的时间。空间复杂度:运行完一个程序所需内存的大小。1.4、算法总结1.5、图片名词解释:

2021-12-22 14:49:09 249

原创 常用的排序算法总结(一)

准备工作所谓 “磨刀不误砍柴工”,在进行排序算法练习的时候,我们需要做一些准备的工作:生成算法需要的数列:随机数列 对于一些极端情况,考虑算法的效率,需要生成基本有序的数列 测试算法性能的函数 判断数列是否有序 数列中元素相互交换 数列的拷贝生成随机数列#coding=utf-8from random import randintdef generateRandomArray(n, min, max): arr = [] arr = [randint(min,

2021-12-22 14:34:20 459

原创 常用的排序算法总结(二)

选择排序算法思想选择排序提高了冒泡排序的性能,它每遍历一次列表只交换一次数据,即进行一次遍历时找 到最大的项,完成遍历后,再把它换到正确的位置。和冒泡排序一样,第一次遍历后,最大的数 据项就已归位,第二次遍历使次大项归位。这个过程持续进行,一共需要 n-1 次遍历来排好 n 个数 据,因为最后一个数据必须在第 n-1 次遍历之后才能归位。代码实现# 选择排序def selectionSort(alist): n = len(alist) for i in range(.

2021-12-22 14:33:58 883

原创 常用的排序算法总结(三)

希尔排序算法思想希尔排序有时又叫做 “缩小间隔排序”,它以插入排序为基础,将原来要排序的列表划分为一些子列表,再对每一个子列表执行插入排序,从而实现对插入排序性能的改进。划分子列的特定方法是希尔排序的关键。我们并不是将原始列表分成含有连续元素的子列,而是确定一个划分列表的增量 “i”,这个i更准确地说,是划分的间隔。然后把每间隔为i的所有元素选出来组成子列表,然后对每个子序列进行插入排序,最后当 i=1 时,对整体进行一次直接插入排序。代码实现# 希尔排序def shellSort(al

2021-12-22 14:32:49 271

原创 排序算法之冒泡排序

一、排序算法系列目录说明冒泡排序(Bubble Sort) 插入排序(Insertion Sort) 希尔排序(Shell Sort) 选择排序(Selection Sort) 快速排序(Quick Sort) 归并排序(Merge Sort) 堆排序(Heap Sort) 计数排序(Counting Sort) 桶排序(Bucket Sort) 基数排序(Radix Sort)二、排序算法简介说明1. 定义将一组杂乱无章的数据按一定的规律顺次排列起来。例如:输入:a1,

2021-12-22 14:19:21 115

原创 三层构架和 MVC 不同?

简单说,M-V-X 是展现层的模式,它们消费了业务层的产品 Model, 并且使用 X 来控制用户输入与业务层产品的数据,做出各种新作为参数提交给业务层 对业务进行影响X里面的逻辑 都是界面交互逻辑X里面的的调用 都是用户操作调用X里面的模型,都是视图模型(VM)X可以是 C 可以是VM 可以是P在http://Asp.Net MVC工程里面用web api 是借用框架包裹了 Business层的外观,简单数据view输出。如果在里面直接调用了DAL完成业务 .

2021-12-21 16:01:43 64

原创 Java web 中的 三层架构

一、什么是三层架构三层架构就是把整个软件系统分为三个层次表现层(Presentation layer) 业务逻辑层(Business Logic Layer) 数据访问层(Data access layer)如图所示:分层的优点:方便团队分工,一个程序员单独完成一个软件产品不是不可以,但遇到大型软件需要团队配合的时候问题就来了,由于每个程序员风格不一样,而开发软件大量的代码风格不统一就会造成后期调试和维护出现问题,然而软件分层后,每个层合理分工这样的问题便迎刃而解。 规范代码,在

2021-12-21 15:59:05 2885

原创 dbutils批量查询

作者:知乎用户rc3LCw链接:https://www.zhihu.com/question/60764040/answer/179986591来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1:一次性把数据库表中的数据取出来,当然,有可能,出错。这个错误,或者说叫异常,就是内存溢出。JVM是个虚拟机,它的内存 被划分为5个区域:程序计数器(Program Count Register)、本地方法栈(Native Stack)、方法区(Methon Area)、栈.

2021-12-21 15:55:53 236

原创 Django ORM 常用的查询方法

1.exact(SQl精确查找 =/is)class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField(null=False)查询id=1的文章 article = Article.objects.filter(id_exact=1) //select * from article where id=1根据title查找:article = Arti

2021-12-21 15:54:03 1116

原创 RabbitMQ系列笔记work模式

Work模式生产者具体讲修改代码之前,我们先想象一个场景,在真正的程序中,我们的生产者可能会产生很多消息,并且每个消息的复杂度会不同,这将会导致我们的消费者在进行应答消息的时候,在队列的消息会需要等待很长的时间才能进行处理,所以对于排在后面简单的消息就不会及时的处理,因此,我们应该有一种机制让我们的消息更快的进行处理。所以我们可以让一个队列对应多个消费者,这样就可以让我们的消息进行轮询调度。现在我们修改代码,我们需要将消息的复杂度按照发送字符串长度的大小,一个字符会停顿1秒。对于复杂度高的,停顿的时

2021-12-21 15:52:39 239

原创 Rabbitmq的三种方式

Direct交换器是一种点对点,实现发布/订阅标准的交换器。Producer发送消息到RabbitMQ中,MQ中的Direct交换器接受到消息后,会根据Routing Key来决定这个消息要发送到哪一个队列中。Consumer则负责注册一个队列监听器,来监听队列的状态,当队列状态发生变化时,消费消息。注册队列监听需要提供交换器信息,队列信息和路由键信息。这种交换器通常用于点对点消息传输的业务模型中。如电子邮箱。producer全局配置文件spring.application.name=dir

2021-12-21 15:50:05 421

原创 RabbitMQ架构模型(二)

三、交换器、路由键、绑定Exchange:交换器。​ 我们暂时可以理解成生产者将消息投递到队列中,实际上这个在 RabbitMQ 中不会发生。真实情况是,生产者将消息发送到 Exchange(交换器,通常也可以用大写的“X”来表示),由交换器将消息路由到一个或者多个队列中。如果路由不到,或许会返回给生产者,或许直接丢弃。RabbitMQ 中的交换器有四种类型,不同的类型有着不同的路由策略。RabbitMQ 常用的交换器类型有fanout、direct、topic、headers这四种。..

2021-12-21 15:48:35 303

原创 RabbitMQ架构模型(一)

​ RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收、存储和转发消息。可以把消息传递的过程想象成:当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上,RabbitMQ 就好比由邮局、邮箱和邮递员组成的一个系统。从计算机术语层面来说,RabbitMQ 模型更像是一种交换机模型。一、生产者和消费者​ Producer:生产者,就是投递消息的一方。​ 生产者创建消息,然后发布到 RabbitMQ 中。消息一般可以包含 2 个部分:消息体和标签(Label).

2021-12-21 15:45:42 1785

原创 Dubbo源码分析

什么是Dubbo?Dubbo一开始是由阿里巴巴开发,后面贡献给了Apache,所以后面我们称之为Apache Dubbo或者直接叫Dubbo。Dubbo 是一款高性能、轻量级的开源服务框架 。先纠正读法:错误读法:diubo、dubo正确读法:|ˈdʌbəʊ|Dubbo的六大核心能力面向接口代理的高性能RPC调用 智能容错和负载均衡 服务自动注册和发现 高度可扩展能力 运行期流量调度 可视化的服务治理与运维。开发中,我们都喜欢把Dubbo简称为RPC开源框架。什么是R

2021-12-20 17:03:01 2798

原创 rpc框架实现原理

RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还是远程的接口/服务,本质上编写的调用代码基本相同。RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的

2021-12-20 16:54:51 777

原创 dubbo注册中心的细节

在配置dubbo注册中心时,一般会这样写dubbo.registry.protocol=zookeeperdubbo.registry.address=127.0.0.1:2181也会简单地写成dubbo.registry.address=zookeeper://127.0.0.1:2181当zookeeper地址不止一个,需要配置backup地址时,会这样写dubbo.registry.protocol=zookeeperdubbo.registry.address=12

2021-12-20 16:53:12 1957

原创 jmx监控之Dubbo

1、average elapsedjmx["com.yazuo.dubbo.monitor:type=DubboStatistics",AvgElapsed]平均响应时间报警:连续三次最小值大于20002、Failure ratiojmx["com.yazuo.dubbo.monitor:type=DubboStatistics",FailureRat]失败比例报警:连续2次平均值大于等于203、failure per minutejmx["com.yazuo

2021-12-20 16:49:20 468

原创 配置监控中心-及管理平台

1,安装监控中心上传,解压配置 vim conf/dubbo.properties,设置zookeeper注册中心的地址启动服务./bin/server.sh start./bin/server.sh stop./bin/server.sh restart查看日志tail -f logs/stdout.log访问服务,查看具体信息2,安装服务管理平台(后者具备了监控中心的能力,所以安装一个即可)安装tomcat修改tomcat启动端口启动tomcat服务删除Root目录的内

2021-12-20 16:46:20 823

原创 封装JDBC工具类

JDBC简介 - JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序 - Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。 - JDBC

2021-12-20 16:41:58 1021 1

原创 JsonPath工具类封装

代码如下:package com.fun.utilsimport com.alibaba.fastjson.JSONObjectimport com.fun.base.exception.ParamExceptionimport com.fun.frame.SourceCodeimport com.jayway.jsonpath.JsonPathimport com.jayway.jsonpath.JsonPathExceptionimport org.slf4j.Loggerimpo

2021-12-20 16:41:34 409

原创 Flutter时间工具类封装

import 'package:intl/intl.dart'; ///关于时间工具class DateUtils { static const String PARAM_FORMAT = "yyyy/MM/dd"; static const String PARAM_TIME_FORMAT = 'yyyy/MM/dd'; static const String PARAM_TIME_FORMAT_H = 'yyyy/MM/dd HH'; static const String PA.

2021-12-20 16:40:59 739

原创 基于Java封装Groovy工具类

1、首先在POM文件引入对应核心groovy jar <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>org.

2021-12-17 16:22:19 389

空空如也

空空如也

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

TA关注的人

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