自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

平凡小智

该博客是用来记录笔记的,供自己方便查阅!如有错误,还请指正和多多见谅!

  • 博客(75)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java - ScheduledExecutorService接口介绍(1)(可实现Timer定时器)

java中的ExecutorService 和 ScheduledExecutorService 接口介绍

2022-09-14 16:43:40 1086

原创 Android之window中的WSL读取devices

在WSL中下载adb,可以通过windows下载linux版本,然后在WSL中进行安装。查看版本号,如果可以查看到版本,则可以直接跳转到第4步;复制到WSL的目录中,我将其复制到了。对adb解压,然后进行adb的指向。发现不了设备,可以使用。......

2022-08-15 21:26:19 1194

原创 C++ 之 constexpr和常量表达式

常量表达式(constexpression)是指不会改变并且在编译过程就能得到计算结果的表达式。显然,字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。后面将会提到,C++语言中有几种情况下是要用到常量表达式的。尽管staff_size的初始值是一个字面值常量,但由于它的数据类型只是一个普通int而非constint,所以它不属于常量表达式。另一方面,尽管sz本身是一个常量,但它的具体值知道运行时才能获取到,所以也不是常量表达式。......

2022-07-26 22:23:34 658

原创 Android中fastboot devices无法发现设备解决方案和adb remount问题解决

将fastboot.exe替换到PC中对应的位置,或重新设置环境变量,再次输入命令fastbootdevices,查看是否有设备信息。命令查看不到设备,经过分析和搜索后得知原因可能是因为PC的fastboot.exe的驱动版本太旧了,需要对其进行更新。下载对应的版本后,解压下载的压缩包,即可看到fastboot.exe。此时只需要对设备进行fastboot进行解锁就好,如3中所示。今天在对安卓设备进行fastboot解锁的时候,发现当调用。后,无法使用fastboot进行解锁,后来通过。...

2022-07-26 15:39:49 26208

原创 C++ - explicit关键字

C++中关于explicit关键字的详解

2022-07-25 22:13:14 2648

原创 Android提示:Non-static method ‘getSystemService(java.lang.String)‘ cannot be referenced from a static

今天在进行android编程的时候,提示Non-staticmethod‘getSystemService(java.lang.String)’cannotbereferencedfromastaticcontext。类的非静态方法,因此为了访问它,需要从类上下文中获取一个对象。通常,您可以从Activty内部调用它,而Activty也是上下文的对象。我们可以查看Context中的getSystemService()的函数如下所示,可以发现该函数是一个abstract函数。...

2022-07-25 17:14:21 2480

原创 Java - 多线程的同步

1. 线程同步方法问题的提出多个线程执行的不确定性引起执行结果的不稳定多个线程对账本的共享,会造成操作的不完整性,会破坏数据关于同步方法的踪迹:同步方法仍然涉及到同步监视器,只是不需要我们显式的声明非静态的同步方法,同步监视器是:this静态的同步方法,同步监视器是:当前类本身package ThreadSynchronizationTest;import static java.lang.Thread.sleep;/** * @author : zh

2022-04-30 07:00:00 2352

原创 Java - 多线程概述(创建和使用)

该文中对Java中的多线程进行概述,并对线程的创建和使用方式进行描述和代码分析1. 程序、进程、线程的概念程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的进程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ,运行中的MP3程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时为每个进程分配不同的内存区域。线程(thread),.

2022-04-29 10:38:59 646

原创 Java - Stream API 和 Optional 类的介绍

Java 8中的新特性Stream API 优点:1. 便于并行2. 并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。 相比于串行的流,并行的流可以很大程度上提高程序的执行效率。3. Java 8中将并行进行了优化,我们可以很容易的对数据进行并行操作。Stream API可以声明性地 通过parallel()与sequential()在并行流与顺序流之间进行切换。1.强大的Stream APIJava8 中有两个最为重要的改变。第一个是Lambda表达式;另外一个.

2022-04-12 16:06:09 1187

原创 Java - Lambda表达式、函数接口和方法引用

Java 8中引入了Lambda表达式和方法引用,这些内容使java编程更加快捷、方便,为了更好的学习这些内容,鄙人在这里进行了总结,这些内容都是自己在学习过程中的积累,还请多多指正。主要内容Lambda表达式函数式(Functional)接口方法引用与构造器引用1. Lambda表达式Lambda 是一个匿名函数,我们可以把Lambda表达式理解为时一段可以传递的代码(将代码像数据一样传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得.

2022-04-11 15:14:50 715

原创 Java - 反射机制

Java反射机制Java反射机制概述理解Class类并获取Class实例类的加载与ClassLoader的理解创建运行时类的对象获取运行时类的完整结构调用运行时类的指定结构反射的应用:动态代理1. Java反射机制概述Reflection(反射) 是被视为动态语言的关键,反射机制允许程序在执行期借助于 Reflection API 取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Cl

2022-03-26 21:34:46 728

原创 java - 网络编程之TCP、UDP和URL

Java - 网络编程概述1. 概述java是Internet上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在Java的本级安装系统里,由JVM进行控制。并且Java实现了一个跨平台的网卡库,程序员面对的是一个统一的网络编程环境。2. 网络通信要素要素1:IP地址和端口号import org.junit.Test;import java.net.InetAddress;impo

2022-03-20 22:11:46 976

原创 java - Iterator迭代器和foreach遍历

Iterator迭代器接口Iterator对象称为迭代器(设计模式的一种),主要用于遍历Collection集合中的元素。GOF给迭代器模式的定义为:提供一种方法访问一个容器(container)对象中的各个元素,而又不需暴露该对象的内部描述。迭代器模式,就是为容器而生。Collection接口继承了java.lang.Iterator接口,该接口有一个iterator()方法,那么所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterato

2022-02-25 20:38:42 464

原创 Java - String的lastIndexOf(String str, int fromIndex)方法问题

最近在使用String中的lastIndexOf(String str, int fromIndex)方法的时候,发现有时候的返回值与我们想要的结果不一样,在这里进行记录。问题:返回String str = "helloworld"中“llo”字符存在的索引位置,使用lastIndexOf()或者Indexof()方法。public void test1() { String str = "helloworld"; // 1. int indexOf(String str): 返回指定子字符串

2022-02-12 11:38:16 853

原创 git1 - git中提示error: pathspec ‘xxx‘x did not match any file(s) known to git

1. 问题概述最近在git中使用commit,将文件暂存到本地库时,有时候会报下面的错误$ git commit -v '第一次提交'error: pathspec '第一次提交' did not match any file(s) known to git而通过 ‘git status’ 进程状态的查看是没有问题的,可以发现 git add xx 是成功的。$ git statusOn branch masterNo commits yetChanges to be committe

2021-12-29 19:39:44 8866 3

原创 Java基础之nextInt()与nextLine()区别(包括nextInt之后无法nextLine无法读取下一行的数据)

在Java中其实存在一些小Bug,或者说是一些语法导致的隐蔽问题。其中之一就是,如果我们在使用nextLine()读取输入数据时,如果前面有 nextInt()、nextFloat() 等只需要读取一个元素的输入时,nextLine() 会自动读取我们输入后的’\n’(回车符号)。为了说明其中的区别,我们先对 nextInt() 和 nextLine() 进行分析:1. Scanner中的nextInt和nextLine的区别nextInt(); // 读取结果为一个int类型数据,返回int值n

2021-12-09 15:47:52 8179

原创 matlab/Octave中在plot中绘制不同颜色的曲线

1. 问题介绍在使用matlab或者Octave进行曲线绘制时,有时候我们需要在for循环中依次绘制曲线的图形,为了将不同的曲线进行区分,需要将其用不同的颜色表示。这里使用了colormap来对不同的曲线设置不同的颜色。2. colormapcolormap % 查看并设置当前颜色图全页折叠语法:colormap map % 将当前图窗的颜色图设置为预定义的颜色图之一。colormap(map) % 将当前图窗的颜色设置为map指定的颜色图colormap(target,map) % 为t

2021-12-08 10:58:03 8875

原创 Java基础之输入语句

在Java中进行输入时,最常用的两种输入方式为:1. 使用ScannerScanner 使用步骤:导入包import java.util.Scanner; // 导包的动作必须出现在类定义的上方创建对象// new Scanner(System.in) 为固定格式,不可以改变Scanner sc = new Scanner(System.in); 接收数据int i = sc.nextInt(); // 这里使用的为int型,如果改变,则需要改变sc.nextInt();

2021-12-03 21:38:50 5107

原创 matlab 和 Octave 中 gif 图的绘制 - (包含正弦函数的绘制测试)

在使用 matlab 或者 octave 时,有时会需要绘制动图(.gif)并保存,这里对动图(其他图片格式,同理)进行阐述。有的时候,gif 有助于对问题的理解,下面就介绍一下如何利用Matlab来绘制gif图。主要是源代码及结果展示,代码里面有注释,根据自己的需求,进行修改即可。注:以下程序均需另存为 m 文件运行,运行后在Matlab的当前路径下,可以看到相应的 gif 文件。有的 gif 图片是由多个 gif 图片拼接而成的,拼接时所用的软件是 ulead gif animator, 可自行

2021-12-02 10:39:52 1238

原创 Linux---进程形成和终止

一、程序是如何称为线程的程序(Program)是为了完成特定任务而准备好的指令序列。要编写C源程序,程序员必须创建包含 C 语句的磁盘文件,这些 C 语句会被组织成函数。一个 C 源文件也科那个包含变量和函数声明、类型和宏定义(例如,typedef),以及预处理命令(例如,#ifdef、#include、#define)。源程序只包含一个 main 函数。​ C 编译器会将每个源文件转换成目标文件。然后编译器会将这些目标文件与必要的库相链接,来形成一个可执行模块(Executable Module)。程

2021-09-19 14:03:23 224

原创 Linux---fork函数和exec函数

这里主要介绍Unix/Linux中进程创建,fork()函数和exec()函数。

2021-09-17 17:57:03 3889

原创 C/C++中在子函数中使用malloc分配内存和free释放内存的方法

1. 子函数malloc分配内存为了增强程序可读性,有时会在子函数中malloc分配内存。测试了如下三种方法,容易想到的是第一种。事实证明这种也是错误的!#include <stdio.h>#include <string.h>#include <stdlib.h> typedef struct _dataStc{ int buf[100]; int size;}dataStc; void func1(dataStc* p){ p = (dat

2021-07-20 21:55:22 4761 1

原创 Linux之sigaction函数

一 函数介绍Linux/Unix中的sigaction函数运行调用程序检查或指定与特定信号相关的动作。参数sig用于指定动作的信号编号;参数act是一个指向struct sigaction结构的指针,用于指定要采取的动作,如果act为NULL,对sigaction的调用就不会改变与信号;参数oact是一个指向struct sigaction结构的指针,用于接收与信号相关的前一个动作相关的动作。 如果oact为NULL,对sigaction的调用就不会返回与信号相关的前一个动作。#include

2021-05-30 22:59:30 856

原创 Linux中进程环中write函数调用会直接退出(未解决)

该程序可以用来构造由n个进程组成的环,n的值从命令行中获取此时共需要n个管道。需要注意的是,程序只需要一个长度为2(而不是2n)的数组来保存文件的描述符由两个进程组成的环被创建好之后,父进程就会退出,而子进程再次进行分支并在父进程中向管道中输入“1 1”,在子进程中获取并重新输入,以实现斐波那契数列。问题描述在进行执行时,发现输出只有一行,当执行到write函数时,程序会自动退出,没有返回异常,结果如图所示:mrzhi@mrzhi-VirtualBox:~/Desktop/Linux-网络编

2021-05-24 17:39:40 595 2

原创 二叉树的迭代遍历-2

二叉树的递归遍历二叉树的递归遍历方法较为简单,我在之前的博客中已经介绍过:<二叉树的递归遍历>递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候,从栈顶弹出上一次递归的各项参数,因此递归可以返回上一层。二叉树的迭代遍历:二叉树也可以使用栈来实现迭代遍历,具体代码如下所示前序遍历是中左右,每次先处理的是中间节点,因此需要先将根节点放入栈中,然后将右子节点入栈,最后使左子节点入栈。因此前序遍历的代码最为简单但是如果使用上面的前序遍历

2021-05-21 09:23:07 132

原创 Linux中的stat函数只能访问当前用户所在目录(提示stat-No such file or directory错误)

问题介绍最近使用Linux C进行编程的时候,当递归读取目录的时候会发现stat函数一直再报错(No such file or directory),经过一晚上的修改bug,发现我的代码中的stat函数只能访问用户当前所在的路径下的文件(即’pwd‘命令所提示的目录)。例如:此时我所在的路径为:/home/mrzhi/Desktop/Linux-网络编程/Unix_systems_programming/Chapter5_File_system结果:可以发现该代码可以正确访问所在路径下的文件,但是

2021-05-20 09:20:43 6537

原创 Linux中进程、线程和程序的区别

这里对Linux和Unix中的程序、线程和进程进行说明,以弥补自己的不足:进程的一种流行定义是:一个以及开始执行但还没有终止的程序实例。**程序(Program)**:程序是为了完成特定任务而准备好的指令序列。要编写C源程序,程序员必须创建包含C语句的磁盘文件,这些C语句会被组织成函数。一个C源文件也可能包含变量和函数声明、类型和宏定义,以及预处理命令(例如#ifdef, #define, #include)。源程序只包含一个main函数。C编译器会将每个源文件转换成目标文件。然后编译器会将

2021-05-09 10:22:46 204

原创 动态规划1-动态规划分析

一:动态规划算法介绍:1.动态规划(dynamic programming)与分治方法相似,都是通过组合子问题的解来求解源问题。而分治方法将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,**动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题子问题的求解是递归进行的,将其划分为更小的子子问题)**。在这种情况下,分治算法会做许多不必要的工作,它会反复地求解那些公共子子问题。而动态规划算法对每个子子问题只求解一次,将其解保存在一个表格中,

2021-04-24 11:34:55 352

原创 计算机网络---网络模型

OSI七层模型包括(自顶向下):应用层 表示层 会话层 传输层 网络层 数据链路层 物理层note: 可以简记为 “ 物、数、网、传、会、表、应”

2021-04-22 17:21:15 142

原创 C++---深拷贝和浅拷贝

C++中的深拷贝和浅拷贝这里使用c++中类的拷贝和幅值进行介绍:深拷贝和浅拷贝的区别:** 1. 浅拷贝就是系统默认提供的拷贝** 2. 深拷贝就是重新在 堆区 开辟内存空间** 3. 浅拷贝带来的问题就是: 内存重复释放** 4. 浅拷贝的问题,要利用深拷贝来解决代码示例:#include <iostream>#include <string> using namespace std;class Person{public: Person(){

2021-04-02 13:54:10 156

原创 C++ --- 普通函数与函数模板的区别

普通函数与函数模板的区别普通函数调用时可以发生自动类型转换(隐式类型转换)函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换如果利用显示指定类型的方式,可以发生隐士类型转换代码示例:#include <iostream>#include <vector>using namespace std;// 1.普通函数会自动进行隐式转换 int test01(int a, char c){ return a+c;}// 2.函数模板(不可以进行类型转

2021-04-01 21:00:49 102

原创 排序算法4---插入排序

一、插入排序算法介绍这一节中,我们主要介绍插入排序。在插入排序中,对于少量元素的排序,他是一个有效的算法。插入排序的工作方式就像许多人排序一手扑克牌,我们每次拿到一张牌后将其插入到正确的位置。在该算法中,我们要在原数组中重排这些数,在任何的时候,最多只有其中的常数个数字存储在数组外面。其伪代码如下所示:insertSort(A)(伪代码,A表示数组,A.length表示数组长度)for j = 2 to A.length key = A[j] // Inse...

2021-04-01 20:44:16 432

原创 virtualbox 菜单栏不见了---如何调出来

前几天在想安装Tools增强功能时,发现找不到菜单栏,而自己在VM中已经设置了菜单栏选项,后来发现是自己切换到了无缝模式,这里对菜单栏的设置进行说明。如图所示,此时的Ubantu中不显示菜单栏,可能是因为切换到了无缝或者全屏模式,可以通过快捷键进行设置。全屏模式 Host+F无缝模式 Host+L自动缩放模式 Host+C其中,Host(默认的)为是右边那个Ctrl键对应的模式,可以通过上面对应的快捷键去切换过去,同时,再次按对应的快捷键,就从该模式正常退出到窗口模式。所以,你这里

2021-03-26 09:57:54 20011 1

原创 二叉树前序、中序、后序遍历-1

目录前序遍历:中序遍历:后序遍历:使用递归方法进行遍历的代码:一、前序遍历:前序遍历(VLR),是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右。前序遍历首先访问根节点然后遍历左子树,最后遍历右子树。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根节点,然后遍历左子树,最后遍历右子树。若二叉树为空则结束返回,否则:(1)访问根结点。(2)前序遍历左子树。(3)前序遍历右子树 。需要注意的是...

2021-03-19 22:30:22 952

原创 并查集

在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(Union-find Algorithm)定义了两个用于此数据结构的操作:Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。Union:将两个子集合并成同一个集合。由于支持这两种操作,一个不相交集也常被称为联合-查找数据结构(Union-find Data Structure)或合并-查找集合(Merge-find Set)。为了更加精确的.

2021-03-13 13:39:19 785

原创 三十六进制加法(0-9,a-z)

三十六进制加法:由数字 + 小写字母组成,此时每个数字用字符串表示。0-9 表示 0-9, a-z 表示 10-35如”1a“ + "2b" = "3c", "3"+"a"=”d"这里可以使用字符串直接进行求和注:不可以转换为整数,如果转换为整数,可能会导致内存溢出,且会占用大量内存。class Solution{public: /*判断每个字符属于0-9还是a-z*/ char getChar(int n){ if(n <= 9) return n+...

2021-03-13 09:25:19 3418

原创 LeetCode中问题:reference binding to null pointer of type ‘const value_type‘

一、问题描述在刷LeetCode 中剑指Offer04的二维数组中的查找时,执行代码结果正确,但提交结果出现:Line 1003: Char 34: runtime error: reference binding to null pointer of type 'struct value_type' (stl_vector.h)的报错。二、问题排查通过查看最后执行的输入为[]或为[[]]时,查看代码发现当输入为空的时候没有进行相应的操作。...

2021-02-19 14:28:01 736

原创 误码率、误比特率和中断概率

目录一、误码率计算例子影响因素二、误比特率三、中断概率一、误码率误码率(SER:symbol error rate)是衡量数据在规定时间内数据传输精确性的指标,误码率=传输中的误码/所传输的总码数*100%。如果有误码就有误码率。 另外,也有将误码率定义为用来衡量误码出现的频率。进行特定条件下的误码率研究,对增强无线通信系统性能,改善数据传输质量意义重大。二进制数字频带传输系统,误码率与信号形式(调制方式),噪声的统计特性、解调及译码判决方式有关。而多进制数字调制系统的.

2021-01-22 10:54:31 19467

原创 信道容量和吞吐量、链路和信道的区别

一、信道容量和吞吐量信道容量是指互信息量的最大值。具体地说,在一定带宽和信噪比(信干比)下,借助某种编码方式实现无差错传输时可以达到的最大速率,是一个上界,在实际应用中,传输速率小于等于信道容量。考察的对象主要是实际物理信道传输信息的能力,不针对特定的传输技术及编码方案。 吞吐量是指某个系统在单位时间内正确传输的信息比特数,并非一个上界。如果引入了某种编码方案,那么在计算吞吐量的时候,一定要把冗余比特(如校验位)除去。另外,吞吐量更侧重于系统层面,例如某个小区的吞吐量。吞吐量考量的主要对象是传输技术(

2021-01-18 10:27:55 4218

原创 Linux C之可重入函数

在这里对Linux C编程中的可重入函数进行部分说明。该笔记是为了以后自己使用的时候查看的,可能会有一些错误。如果错误之处,还请多多谅解!可重入函数就是可以在运行期间再次被调用的函数,由于Linux是一个多任务操作系统,在任务执行期间捕捉到信号并对其进行处理时,进程正在执行的指令序列就被信号处理程序临时中断。如果从信号处理程序返回,则继续执行进程断点处的正常指令序列,重新恢复到断点重新执行的过程中,函数所依赖的环境没有发生改变,也就是说这个函数是可重入的,反之就是不可重入的。在进程中断期间,系统.

2020-10-28 18:56:26 472

Performance Analysis of the IEEE 802.11 Distributed Coordination Function.pdf

Bianchi关于802.11中分布式协作的CSMA/CA算法退避过程的推导(2000年的文章!!!)。该文章中详细介绍了在无线信道中站点竞争和退避的过程,给出了理论的传输概率和碰撞概率的推导。

2020-09-14

空空如也

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

TA关注的人

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