自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【算法笔记】十大排序算法(Java实现)

冒泡排序()时间复杂度O(N2)算法思想与分析针对一个数组序列,从前到后相邻的元素两两比较,如果前面的元素大于后面的元素则交换位置,比完最后两个元素后,数组中最大的元素就到了末尾;然后再将末尾的元素排除,前面的所有元素再进行一次上述的比较交换方式,第二大的元素就到了原数组倒数第二的位置;按照此方式继续进行下去,最后就形成了一个有序序列。数组大小为n第一趟从第一个元素开始,比较两相邻元素,前面大于后面则交换位置,一直到最后两个元素比较完,一共需要比较n-1次第二趟从第一个元素开始,一直比较到倒

2021-05-11 17:58:52 195 2

原创 【设计模式】观察者模式

观察者模式在平时生活中,很多人都会使用微信,在微信中不仅可以和朋友交流,还能关注一些公众号,也可叫做订阅号。如果我们订阅了某个公众号,一旦它有了新的消息,就会通知我们,把新的消息传递给订阅者,这其实就是一种观察者模式。在观察者模式中,我们称这里的公众号为“主题”,订阅公众号的人叫“观察者”。观察者模式的定义:定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有依赖者都会受到通知并自动更新。(是一种松耦合的方式)观察者模式的一个标准类图Subject:主题接口registerO

2021-04-07 13:44:50 114

原创 【android笔记】koin注入框架简单使用

Android依赖注入框架dagger2/Hilt是我们常用的依赖注入框架,由谷歌公司维护,性能强大,但是也有很多缺点,比如学习成本高,上手慢,代码量大,编译慢等等。Koin就能解决这些问题。Koin是一款轻量级的依赖注入框架,虽然它性能不及dagger2/Hilt,但是它易上手、易调试、代码少,并且对kotlin和jetpack都有很好的支持。下面就让我们来看看Koin的简单使用。Koin在Android中的简单使用(kotlin)(1)添加依赖dependencies { impl

2021-08-05 15:24:03 1395

原创 【java笔记】注解与反射

注解(Annotation)Annotation是JDK5.0引入的,注解是代码里的特殊标记,可以在编译、类加载、运行时被读取,并执行响应的处理。我们在不改变代码原有逻辑的情况下,可使用注解在源文件中嵌入一些补充信息。通过反射机制编程实现对这些元数据的访问可以对程序作出解释可以被其他程序读取内置注解java内置的注解有4种,直接使用@Override对覆盖超类中的方法进行标注@Deprecated对不鼓励使用或者已经过时的方法添加注解(已不推荐使用)@Suppr

2021-08-02 15:40:38 270

原创 【android笔记】DataBinding

DataBindingdatabinding是Google官方发布的一个框架,用于降低布局和逻辑的耦合性,使代码逻辑更加清晰,可以直接绑定数据到xml中,并实现自动刷新。databinding能够省去findViewById(),减少大量的模板代码,数据能够单向或双向绑定到layout文件中,有助于防止内存泄漏,而且能自动进行空检测以避免空指针异常。简单使用1. 启动dataBinding在Module的build.gradle中加上如下配置apply plugin: 'kotlin-kapt'

2021-07-24 22:36:55 824 4

原创 Failed to execute goal com.spotify:docker-maven-plugin:1.2.2:build (build-image) on project ........

问题使用Maven上传项目镜像到docker时报错Failed to execute goal com.spotify:docker-maven-plugin:1.2.2:build (build-image) on project ******: Exception caught解决一、Docker未开启2375端口(1)修改docker.service文件vi /usr/lib/systemd/system/docker.service将红色部分修改为ExecStart=/usr

2021-07-12 18:13:15 5042 2

原创 【算法笔记】平衡二叉树

平衡二叉树问题给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。问题分析代码

2021-05-11 16:50:41 114

原创 【算法笔记】完全二叉树的节点个数

完全二叉树的节点个数问题给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。递归法迭代法...

2021-05-11 16:35:16 759

原创 【算法笔记】二叉树的最大深度&&二叉树的最小深度

二叉树的最大深度问题给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。分析二叉树的最小深度问题给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。分析...

2021-05-10 16:25:15 347

原创 【算法笔记】对称二叉树

对称二叉树问题给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。问题分析这里的镜像对称也就根节点的左右两子树对称,可以通过分别遍历这两个子树然后比较对应值是否相等就行。通过哪种遍历方式呢?后序遍历,从图中可以看出镜面对称比较的是两子树的同外侧和同内侧,也就是从左子树最左的节点和右子树最右的节点开始,再比较左子树最右的节点和右子树最左的节点。所以左子树的遍历顺序是左右中,右子树的遍历顺序是右左中。这里采用后序遍历的递归法递归三要素:参数和返回值

2021-05-10 15:16:09 139

原创 【算法笔记】反转二叉树

反转二叉树问题翻转一棵二叉树。示例:输入:输出:问题分析

2021-05-10 09:05:16 3262

原创 【算法笔记】二叉树的层序遍历

二叉树的层序遍历

2021-05-09 17:23:43 74

原创 【算法笔记】二叉树的遍历

二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历

2021-05-09 16:24:15 110

原创 【算法笔记】逆波兰表达式求值

逆波兰表达式求值问题根据逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。示例 :输入:tokens = [“2”,“1”,"+",“3”,"*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9问题分析问题...

2021-05-06 22:34:09 281

原创 【算法笔记】有效的括号&&删除字符串中的所有相邻重复项

有效的括号删除字符串中的所有相邻重复项

2021-05-06 22:32:24 238

原创 【算法笔记】栈实现队列&&队列实现栈

栈实现队列队列实现栈

2021-05-06 21:55:34 63

原创 【算法笔记】滑动窗口最大值

滑动窗口最大值问题给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。问题分析可使用单调队列解决问题(java中使用LinkedList来实现单调队列),队列从头到尾是从大到小的,那么队头元素就是需要返回的最大值,只需每次让队头弹出就行。当滑动窗口移动时,我们需要弹出在窗口外的元素,因为是按大小顺序入的队,所以队首元素不一定是需要弹出的元素,如何解决呢?其实没有必要将

2021-05-06 18:18:02 267

原创 【算法笔记】三数之和

三数之和问题给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。问题分析如果只寻找满足条件的三元组其实是很容易的,我们可以分步操作,先计算两数之和,在判断是否有第三个数加上满足和为零,记录满足条件的三元组,但是这样会产生很多重复的三元组,所以需要对三元组进行去重,一般的方法处理会显得非常繁杂,不好操作。这里使用双指针是比较容易操作的基本操作流

2021-04-23 19:45:58 5799 1

原创 【算法笔记】赎金信

赎金信问题给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)你可以假设两个字符串均只含有小写字母。问题分析这道题的意思就是让我们判断字符串a是否能由字符串b中的字符构成。简单的处理方式就是通

2021-04-22 22:28:10 125

原创 【算法笔记】四数相加

四数相加问题给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。问题分析看过这道题目后,第一反应就是找到四个数组所有的组合方式,判断相加是否为零,是则保存结果,这种做法的时间复杂度非常大,显然是不可

2021-04-22 22:05:45 948

原创 【算法笔记】两数之和

两数之和问题给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。暴力解法可直接使用两个for循环遍历数组元素,找到两个和为目标值的元素 public int[] twoSum(int[] nums, int target) { for (int i=0;i<nums.length;i++){

2021-04-22 21:36:02 74

原创 【算法笔记】环形链表

环形链表问题

2021-04-21 18:01:48 137

原创 【算法笔记】设计链表

设计链表问题设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点

2021-04-21 17:16:44 192

原创 【算法笔记】反转链表

反转链表问题反转一个单链表。问题分析最最直接的做法就是创建一系列新节点,然后按顺序把原来链表的值赋值给它们,后面的结点依次指向前面的结点就完事了。但是这种做法浪费空间内存,如果我们直接在原链表上进行反转就可以大大节省空间内存。简单来说就是将原链表的next指针的指向反转方向,就可以实现链表的反转。实现next指针反转的操作定义两个指针per、post,两个指针在链表中相邻,per在前,post在后(注意:这里的前后是按原链表的指向,左边是前,右边是后)post.next=pre; 实现pos

2021-04-21 11:53:53 83

原创 【算法笔记】两个数组的交集|快乐数

j

2021-04-20 20:35:54 199

原创 【android笔记】Material Design

Material Design界面设计语言,包括视觉、运功、互动效果等特性Toolbar继承了ActionBar的所有功能,而且灵活性更高,可以配合其他控件完成一些Material Design的效果1.取消ActionBar通常我们的ActionBar是在res/values/themes文件下通过AppTheme来指定它的parent主题是什么,这里我们准备使用Toolbar来代替ActionBar,因此需要指定一个不带ActionBar的主题Light.NoActionBar表示不带

2021-04-19 19:04:47 248

原创 【无线网络实验】实验十八:EE 802.15.4和ZBR协议仿真

实验要求和目的理解IEEE 802.15.4和 ZBR协议的工作机制利用NS2分析IEEE 802.15.4和ZBR协议实验过程IEEE 802.15.4仿真实验(1)输入"cd WNTLab/experiments/exp18"进入实验脚本所在目录。(2)输入"ns WPAN_MAC.tcl"运行本实验。(3)将步长调整为2ms,观看仿真过程。仿真过程:0-7秒协调器节点开始广播控制消息。从7秒开始,节点0与节点1建立连接,并开始数据传输;7.2s时,节点0开始与节点3建立连接,

2021-04-17 14:03:35 390 1

原创 【无线网络实验】实验十二:AODV和DSR协议仿真实验

实验目的和要求理解AODV和 DSR协议的工作过程掌握NS2仿真分析AODV和 DSR协议

2021-04-17 14:03:23 433

原创 【无线网络实验】实验十三:DD和S-MAC协议仿真实验

实验目的和要求了解定向扩散路由和S-MAC协议原理掌握NS2分析定向扩散和S-MAC协议实验过程DD协议仿真(1)输入"cd WNTLab/experiments/exp13/DD"进入本实验脚本所在目录。(2)输入"ns DD tcl"运行本实验。(3)设置步长为2ms,观察动画仿真过程:仿真开始时,节点之间未交换路由信息,此时无数据传输。在0.12s时,节点2的Ping 发送者进行publish操作,并通过DD协议进行兴趣扩散。在1.15s时,节点9的 Ping 接收者进行sub

2021-04-17 14:03:14 703

原创 【无线网络实验】实验十四:水下无线传感网协议仿真实验

实验目的和要求了解无线WSN的基本概念掌握水下无线WSN协议的仿真实验过程(1)输入"cd WNTLab/experiments/exp14"进入本实验脚本所在目录。(2)输入"ns VBF.tcl",运行本实验。

2021-04-17 14:03:02 214

原创 【无线网络实验】实验七:隐藏节点和暴露节点仿真实验

实验要求掌握无线网络中隐藏和暴露节点问题利用NS2分析隐藏和暴露节点问题实验过程隐藏节点问题仿真打开Terminal 输入cd /home/wnt/WNTLab/experiments/exp7进入本实验脚本所在的文件夹输入ns Hidden_Terminal.tcl运行实验弹出NAM动画窗口,讲步长调整为2ms从 1.5s 开始,节点 0 开始向节点 1 发送数据在 2s 时,节点 2 也开始向节点 1 发送数据,同样,节点 2 也发送 RTS 报文仿真

2021-04-15 15:59:54 377

原创 【无线网络实验】实验八:无线城域网WiMax仿真实验

实验目的和要求理解ViMax的工作原理利用NS2仿真分析ViMax实验过程输入”cd /home/wnt/WNTLab/experiments/exp8”进入实验脚本所在的目录进入后,输入”bash ./run_exp.sh”命令,运行本实验实验正确运行完成后,我们可以得到实验结果的图...

2021-04-15 10:28:20 405

原创 【无线网络实验】实验四:无线局域网数据包捕获与分析

1. Windwos系统下使用Wireshark(1) 下载Wireshark(网站: https://www.wireshark.org/download.html),并安装安装很简单,直接一直下一步就行点击我连接的wlan进行抓包抓包结果Linux下使用Kismet安装完成后,在命令输入sudo kismet打开Kismet添加端口Kismet的主界面(由于一些操作没有进行成功,这里没有数据显示)...

2021-04-15 10:28:06 616 1

原创 【无线网络实验】实验二:无线网络环境RSSI测量实验

实验目的和要求了解RSSI的概念和基本原理掌握RSSI测量过程和方法不同无线环境下RSSI值测量实验过程本实验我采用的是教材(无线网络技术第三版)作者所编写的wifi.exe程序,通过Windows系统的WLAN AP1读取无线网卡的信息,以探测附近无线接入点的信号强度。1.将手机热点名称改为AP12.电脑连接到此手机的热点3.运行wifi.exe文件,测试不同环境下的RSSI值不同距离对RSSI值的影响实际情况下,随着距离的增加,wifi的RSSI值应该逐渐减小;距离越远,信

2021-04-15 10:27:45 1698

原创 【无线网络实验】实验十:卫星网络系统仿真实验

实验目的和要求理解Iridium和Teledexic卫星网络的基础原理利用NS2仿真实现Iridium和Teledesic卫星系统实验过程Iridium输入“cd /home/wnt/WNTLab/experiments/exp10”进入实验十脚本所在目录输入“ns sat-Iridium.tcl”命令运行本实验采用”awk -f Delay.awk sat-Iridium.tr > delay.txt”命令利用awk脚本对trace文件进行分析,这里是对北京到上海Iridium

2021-04-15 10:27:25 456

原创 【算法笔记】反转字符串

反转字符串问题给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-string-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...

2021-04-14 21:40:56 159 1

原创 【设计模式】装饰者模式

装饰者模式装饰者模式的基本概念在生活中到时都是体现。比如装修房子,房子就是被装饰者,各种装修材料就是装饰者;我们每天都会打扮自己,我们自己就是一个被装饰者,各种衣服、饰品、化妆品就是装饰者;还有就是大家喜欢喝的奶茶,每一种奶茶就是被装饰者,加的小料就是装饰者。装饰者模式的定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更具有弹性的替代方案。...

2021-04-13 17:22:00 82

原创 【算法笔记】螺旋矩阵

螺旋矩阵问题给你一个正整数n ,生成一个包含1到 n2 所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix。问题分析当n=3是,是一个3x3正方形矩阵整个生成过程就是从左到右,从上到下,从右到左,从下到上,采用循环分步操作就很容易实现。但是需要注意很多问题:(1)拐角问题从图中可以看出有很多重合的地方,就是每一个拐角,想要处理好问题必须先解决拐角,也就是每一步的边界问题。可采取每一到达拐角处就进入下一步,让下一步来处理这个拐角,比如从左到右是1到2,到3时就让

2021-04-13 10:21:02 1198 1

原创 【算法笔记】有效的字母异位词

有效的字母异位词问题给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。你可以假设字符串只包含小写字母。问题分析简单来说就是判断两个字符串中所有拥有的字母是否相同,所以首先排除长度不等的字符串,然后再做判断。最直接的方法就是采用两个for循环,一个外循环遍历s字符串,一个内循环遍历t字符串,通过将s字符串每个字符与t中每个字符对比,如果能找到对应相等的字母,就返回true,但是问题中没有说不能有重复的字母,如果采用这种方法我们还需要对重复的字母进行处理,而且时间复

2021-04-12 22:54:57 417

原创 【算法笔记】移除链表元素

移除链表元素问题给你一个链表的头节点head和一个整数val ,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点 。问题分析一个很简单的链表删除操作,通过头结点不断向后面的结点移动,比较每一个结点是否等于val,是就执行链表的删除操作。原链表直接解决问题我们需要注意的是头结点的删除方式和其他结点的不同删除头结点:head=head.next 直接让头结等于下一个节点删除非头结点(A.next):A.next=A.next.next 该节点的上一个节点的指

2021-04-11 17:26:15 299 2

空空如也

空空如也

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

TA关注的人

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