自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python中的zip()内置函数

zip(*iterables)概述:创建一个迭代器,用来聚合每个可迭代对象中的元素。zip()函数会返回一个元组的迭代器,其中第i个元组包含每个参数序列或可迭代对象中的第i个元素。当最短的可迭代参数遍历到末尾的时候,返回的元组迭代器的结束位置也就确定了。如果传入的可迭代参数只有一个,那么返回的元组迭代器每次迭代产生的对象是一个长度为1的元组,可能有些绕,可以看看下面的例子:# coding=utf-8l = [1, 2, 3]z = zip(l)print('zip()函数返回的对象

2021-05-24 19:46:41 326

原创 python中enumerate()函数

enumerate(iterable, start=0)概述:会返回一个enumerate对象,其中的iterable参数必须是一个序列、迭代器或者是其他支持迭代的对象。enumerate对象是一个可迭代的对象,可以调用其对象方法__next__()来获得一个元组(第一个元素是一个计数变量,用来记录当前元素的编号,这个计数变量和第二个参数start有关,每调用一次__next__()方法,start变量都会+1),参考代码如下。>>> seasons = ['Spring', 'Sum

2021-05-22 21:00:25 361

原创 python中的range类

class range(stop)或者class range(start, stop[, step])概述:如果传入的参数只有一个,那么会调用class range(stop),如果传入的参数超过一个,那么会调用class range(start, stop[, step])。range生成器的参数必须是integers(内置的int类型或者是那些实现了__index__方法的对象),如果step参数被省略,那么它的默认值就是1,如果start参数被省略,它的默认值会是0,如果step是0的话,会抛出

2021-05-22 12:33:13 1173

原创 python中的dict类中的get方法

get(key[, default])功能概述:返回某个键对应在字典中的值,如果该键不存在,那么就返回第二个参数指定的默认值。参数:第一个参数:一个字符串,表示键名。第二个参数:当键不存在的时候的默认值。测试代码:d = {'red': 1, 'blue': 2, 'green': 3}print('键存在的时候:' + str(d.get('red', 0)))print('键不存在的时候:' + str(d.get('yellow', 0)))'''output键存在的时候:

2021-05-16 10:51:38 390

原创 python中的内置format函数

format(value[, format_spec])功能概述:可以将传入的参数value,根据一个格式字符串format_spec进行格式化。格式字符串format_spec该如何被解析,取决于参数value的类型。参数:第一个参数value:在不指定第二个参数format_spec的时候,value可以是任何类型的变量,甚至是自定义的变量。测试代码如下:# coding=utf-8class Test(): passa = Test()formatted =

2021-05-14 23:08:59 524

原创 python中os.walk()方法

2021-05-13 22:43:36 578

原创 python中的内置函数open

python中的内置函数open的一般形式为【open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)】;首先一步步来看一下每一个参数所代表的含义:第一个参数file,这是一个必选参数,接受的值是一个待操作文件的路径,可以是绝对路径,也可以是相对路径,样例代码如下所示:# 相对路径open('test_open.txt', 'w', buffering=

2021-05-05 20:12:29 1081

原创 Python中的内置函数:isinstance(object, classinfo)

Python中的内置函数【isinstance(object, classinfo)】需要传入两个参数,第一个参数object是一个类的对象,第二个参数classinfo是一个类的类名;其功能是判断object这个对象是不是classinfo这个类的实例或者classinfo这个类子类的实例,如果是的话,将返回True,不是的话将返回False,测试代码如下所示。# coding=utf-8# 定义一个父类class Father(): def __init__(self):

2021-05-04 23:47:21 600

原创 在shell脚本中直接对postgresql进行操作

如果要在shell脚本中对postgresql直接进行操作可以执行类似于这样的命令【env PGPASSWORD=用户密码 psql -h数据库host -p数据库端口 -U用户名 -d数据库名称 --command “待执行的命令”】。比如如下shell脚本。#!/bin/bashfunction backup_file() { if [ -e "${1}" ]; then old_filename=$1 new_filename="${old_filenam

2021-04-26 17:18:23 6470

原创 Linux查看系统中的cpu个数、核心书、线程数

查看物理cpu的个数,可以执行如下命令。cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l查看cpu核心数目,可以执行如下命令。grep 'core id' /proc/cpuinfo | sort -u | wc -l查看线程数,可以执行如下命令。grep 'processor' /proc/cpuinfo | sort -u | wc -l...

2021-04-26 17:11:42 209

原创 关于并行执行shell脚本的相关说明

在shell中可以通过使用【{需要并行执行的部分}$】这样的模式实现对某一段脚本进行并行处理。下面先来看一下一个单线程的程序。#!/bin/bashcat test.txt | while linedo echo "${line}" sleep 5done上面这个程序会从test.txt文件中读取内容,通过管道的方式逐一将每行的内容传给line,每一次循环都会先打印每一行的内容,然后休眠5秒。执行的输出如下所示。如果使用文首的结构,循环内部被包起来的代码会被移到后台运行,

2021-04-26 16:48:10 614

原创 报错:PicklingError: Can‘t pickle <type ‘function‘>: attribute lookup __builtin__.function failed

python2.7在使用的多进程执行一个函数时出现错误【PicklingError: Can’t pickle <type ‘function’>: attribute lookup builtin.function failed】,怎么检查都不知道哪儿错了,最后发现这个函数不能使用装饰器,把装饰器删除之后,错误就消除了,如下图。将上图中的装饰器删除即可。注意这个报错是在debug的情况下才发现的,如果直接运行程序,那么程序会一直卡在多线程执行某个函数得语句,不往下执行,也不报错。...

2021-04-22 18:07:26 1442

原创 python从一个含有中文的文件中读取内容报错【UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe5 in position 537】

对于这个问题的解决办法就是在读取该中文文件的.py文件中加入如下三行代码,大概可以解决问题。import sysreload(sys)sys.setdefaultencoding("utf-8")

2021-04-20 15:34:25 193

原创 安装支持python和python3的vim8.2过程记录

第一步,下载一些前置软件。如果要让vim支持python需要下载前置软件【python-dev】,如果要让vim支持python3需要下载其前置软件【python3-dev】。命令如下所示。sudo apt-get install python-dev python3-dev第二步,从github上下载最新的vim并安装。命令如下所示。cd /usr/local/sharesudo git clone https://github.com/vim/vim.gitcd vim/srcsud

2021-03-28 16:35:18 1109

原创 安装Universal ctags的过程记录

第一步,从github上下载Universal ctags。下载命令如下所示。cd /usr/local/sharesudo git clone https://github.com/universal-ctags/ctags.gitcd ctags./autogen.sh这是当执行了命令【./autogen.sh】的时候,程序出现了报错,如下图所示。这上面提示没有找到autotools,对于这个问题的解决方案,可以参考gihub上面的说明【https://github.com/unive

2021-03-28 16:26:55 3416 2

原创 安装vim插件YouCompleteMe过程记录

第一步,通过配置文件【.vimrc】中使用的包管理器进行插件YouCompleteMe的安装。" use vim-plug to manage vim pluginscall plug#begin()Plug 'ycm-core/YouCompleteMe'call plug#end()上面使用的包管理器是vim-plug,将上面的代码写入到【~/.vimrc】之后,依次执行命令【:w】、【:source $MYVIMRC】和【PlugInstall】,即可完成插件YouCompleteMe的安

2021-03-28 00:10:11 1099

原创 《深入浅出PostgreSQL》屠要峰著 - 学习PostgreSQL过程中遇到的问题及解决方案(CentOS环境下)

1、规划数据库路径,即自定义数据库路径的时候报错【initdb: 目录"/home/postgres/pgdata"已存在,但不是空的如果您想创建一个新的数据库系统, 请删除或清空目录 “/home/postgres/pgdata” 或者运行带参数的 initdb而不是 “/home/postgres/pgdata”.】、【Initializing database … /sbin/restorecon set context /home/postgres/pgdata->unconfined_u:o

2020-12-15 20:22:37 1075 1

原创 6、基带信号的发送和接收

6.1、脉冲成形什么是基带信号?信源(信息源,也bai称发送端)发出的没有经过调制(即进行频谱搬移和变换)的原始电信号,其特点是频率较低,信号频谱从零频附近开始,具有低通形式。根据原始电信号的特征,基带信号可分为数字基带信号和模拟基带信号(相应地,信源也分为数字信源和模拟信源。)其由信源决定。基带信号的发送和接收在通信系统模型中的位置示意图基带信号的发送和接收在通信系统模型中的位置如下图所示。6.1.1、矩形脉冲关于矩形脉冲的说明最容易想到的脉冲波形就是矩形脉冲。以数字信号000101

2020-12-13 19:40:53 6275 3

原创 4、信源编码

4.1、模/数转换信源编码在通信系统模型中的位置信源编码在通信系统模型中的位置如下图所示。对于模拟信源来讲,信源编码的过程包括模/数转换和压缩编码。模数转换的过程是什么?通过采样、量化和编码,将模拟信号转换成数字信号的过程,就是 模/数转换,如下图所示。4.1.1、采样关于采样原理的说明采样就是从时域看,利用冲激信号按照一定的时间间隔对模拟信号进行抽样;从频域看,以采样频率为间隔对模拟信号频谱进行周期性拓展,如下图所示。上图中x(t)表示模拟信号,p(t)表示用来采样的冲激信号

2020-12-06 16:30:06 2492

原创 关于安装MySQL报【Windows无法启动MySQL服务(位于 本地计算机 上)错误2 系统找不到指定的文件】的解决方案

从官网下载的MySQL安装完之后,通过命令【mysqld -install】下载MySQL服务之后,运行命令【net start mysql】无法启动MySQL并报【Windows无法启动MySQL服务(位于 本地计算机 上)错误2 系统找不到指定的文件】的错,大概如下图所示。正如系统提示说的那样,系统找不到指定的文件。可以先通过命令【mysqld -install】在以管理员身份打开的DOS中查看mysqld安装的路径。内容大概如下所示。C:\windows\system32>mysqld -

2020-11-30 21:33:16 2244

原创 聚集索引和非聚集索引的相关说明

1、聚集索引定义:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。通俗的来说是指数据表中每一条数据的相对顺序和他们在硬盘中存储的相对顺序是相同的。如下图所示。上图中的地址一栏表示数据存储的硬盘单元。id是数据表的主键,可以将其设置为聚集索引。数据库中的innoDB存储引擎采用的存储结构是B+树。这里可以补充一点,之所以存储结构采用B+树是因为数据库中的数据是存储在硬盘中的,要想访问数据库中的数据需要将硬盘中的数据调到内存中,如果存储结构采用平衡二叉树或者二叉

2020-11-29 23:21:56 331

原创 3、信道

3.1、噪声和干扰信道在通信系统模型中的位置信道中的噪声和干扰有哪些?噪声和干扰对信道的影响有哪些?信道中除了传输的信号以外,还存在各种噪声和干扰,包括接收机 中产生的热噪声、进入天线的自然噪声和人为噪声等。这些噪声和干扰 可能会使信号失真并导致误码。3.2、信道带宽决定信号可以通过信道的因素不是所有频率的信号都可以通过信道传输,信道的频率响应决定了 哪些频率的信号可以通过信道,如下图所示。从上图中可以看出,可以通过信道传输的信号频率范围大小就是信道的带宽。实际信道的带宽总是有限的,

2020-11-26 18:50:19 2971

原创 关于TCP三次握手的简述,以及TCP与UDP的区别

1、TCP的简述1.1、TCP三次握手建立连接首先先来看看TCP的报文头,如下图所示。其中要了解一下上图中的序号【seq】和确认号【ack】。由于TCP是可靠连接,所以TCP会为字节流中的每一个字节都添加一个编号,如果序号为0,则表示第一个要发送的字节编号为0,如果数据长度为10,那么报文的字节编号为0~9。确认号表示接收端正确的接收了序号为N的字节,要求发送端下一个应该发送字节序号为N+1的字节,举个例子来说,当前ack为10的话,说明前十个字节,即0~9编号的字节都已经被接收了,下一个需要被接收

2020-11-21 23:18:22 735

原创 关于快排的三种实现的说明

1、取最后一个元素作为中轴的快排#include <bits/stdc++.h>using namespace std;int partSort(int *arr, int left, int right) { /// 取数组中的最后一个元素作为中轴,&key相当于就是给arr[right]取一个别名。 /// key和arr[right]指向的是同一个内存地址。 int &key=arr[right]; while(left<ri

2020-11-21 18:21:04 217

原创 2、信号与频谱

。。。

2020-10-25 19:09:49 33031 10

原创 1、通信原理概述

1.1、什么是通信1.1.1、广义的通信广义的通信的定义:无论采用什么方法、使用什么传输媒介,只要将信息 从一地传送到另一地,均可称为通信。比如说,飞鸽传书,烽火通信等,如下图所示。1.1.2、狭义的通信狭义的通信的定义:狭义的通信只包括电信和广播电视。什么是电信?电信是指利用“电”来传递信息的方法,如电报和电话通信。电报通信中的发报机和电话通信中的电话机如图下图所示。什么是广播电视?广播就是听众使用收音机来收听广播电台的声音节目。收音机如下图所示。电视就是观众使用电视

2020-10-10 13:08:48 6465 2

原创 《深入浅出通信原理》知识总结

1、常见信号的傅里叶系数。周期方波信号的傅里叶系数求法如下。假设方波信号x(t)的周期为T,幅度为1,脉宽为 τ,占空比为1/2,由此可得T=2τ。图像如下图所示。c0的推导过程如下图所示。上图中在积分区间[-τ/2, τ/2]内,x(t)=1,将其带入即可求出c0。ck的推导过程如下。又由:ω0=2π/T,得:ω0T=2π,又因为:T=2τ,所以:ω02τ=2π,得到:ω0*τ=π,方波信号的ck为下图中的式子。也可以直接通过ck的通式求出c0。当k->0时,sin(kπ/2

2020-09-26 11:04:20 4669 1

原创 CentOS学习过程中遇到的比较重要的文件或目录

1、文件【/etc/mke2fs.conf】。创建ext4文件系统时,使用的默认值,包括区块大小的默认值等,都记录在这个文当中。比如在使用命令【mkfs.ext4】创建ext4文件系统时,就是使用的这个文件中的默认值。如下图所示。...

2020-09-12 20:54:54 181

原创 《深入浅出通信原理》阅读引导

。。。

2020-09-04 11:57:44 1368

原创 《深入浅出通信原理》遇到的问题与解决方案

。。。

2020-09-03 15:04:38 243

原创 《深入浅出通信原理》未解决的问题

。。。

2020-09-03 15:02:59 232

原创 《深入浅出通信原理》辅助笔记

。。。

2020-09-03 15:00:23 1636

原创 《鸟哥的Linux私房菜》第四版导学

鸟哥的Linux私房菜0、计算机概论0.1、电脑:辅助人脑的好工具(什么是电脑?什么是计算机a3)0.1.1、电脑硬件的五大单元(电脑硬件大致可分为三个部分b3)(什么是CPU a4)(CPU主要的组成部分b4)(算术逻辑单元的功能c4)(控制单元的功能d4)(CPU读取的数据来源e4)(电脑硬件的五个组成部分f4)(数据在内存流动的基本知识g4)0.1.2、一切设计的起点:CPU架构(常见的两种CPU架构a5)(世界上使用最广的CPU b5)(常见的RISC指令集CPU c5)(常见的CISC指

2020-08-23 11:04:05 11640

原创 《鸟哥的Linux私房菜》第四版辅助文档

0、计算机概论0.1、电脑:辅助人脑的好工具0.1.2、一切设计的起点:CPU的架构关于32位CPU和64位CPU的说明32位CPU的意思就是CPU每次解析数据是32bits,也就是4B,那么支持的地址就是4B长度的,也就是支持的最大内存是2^32(个地址)*1Byte=4GB。同理64位CPU每次解析数据是64位,也就是8B,那么支持的地址长度就是8B长度,如果按照字节进行编址的话,支持的最大内存就是2^64(个地址)*1Byte。Intel/AMD的x86架构中的重要指令(以下内容

2020-08-23 11:00:06 1047

原创 极客网《vim必知会》讲解的vim配置

" 1、设置编辑文件的内码,对于现在类Unix的vim8来说可以省略,但如果是Window系统,最好还是加上。set enc=utf-8" 2、设置vim不需要和vi兼容,Unix上的vim8可以去掉,Windows系统上也可以去掉。set nocompatible" 3、备份和撤销文件" 每次进行编辑的时候会备份上一次的文件,备份文件的文件名相比于原文件的文件名结尾会多一个~。" set backup" 一般大佬会如下进行配置" 将备份直接关闭set nobackupif has(‘p

2020-08-23 08:39:36 759

原创 关于vim中使用特定寄存器进行粘贴的说明

对于vim有些麻瓜的我之前看过一些文章,可以在vim的命令行模式下输入【:reg】来查看vim中有哪些寄存器。如下图所示。可是该如何使用上图中的这些寄存器呢,我之前以为是把光标移动到需要复制的地方,然后在命令行模式输入命令【:"+<CR>】就可以将该寄存器中的内容粘贴出来,可是发现一直不行,后来偶然的机会发现,直接在一般命令行模式输入命令【"+p<CR>】就可以在光标所在位置进行粘贴了。...

2020-08-23 08:36:39 219

原创 如何使用vim打开帮助文档

如果要使用vim打开帮助文档,安装的vim需要有manpager插件,这个插件一般是下载了vim就会存在。打开我的vim安装目录下的plugin目录(/usr/share/vim/vim81/plugin)。在命令行输入以下命令。ls -l | grep 'manpager'可以看到以下结果。上图中就说明含有manpager这个插件。之后需要配置一下MANPAGER这个环境变量。命令行输入以下命令。export MANPAGER="vim -M +MANPAGER -"上面的语句可以将m

2020-08-13 08:03:31 1270

原创 关于vim一般命令模式中组合键【c2i{】的说明

极客网vim必知会网址:https://time.geekbang.org/column/article/266754。在学习vim的过程中,遇到了一般命令行模式中使用的操作【c2i{】,一开始看不懂是什么意思,通过不断的试探总结了一些规律,不一定对,至少能够说的过去。测试代码如下。#include <bits/stdc++.h>

2020-08-12 10:20:22 721

空空如也

空空如也

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

TA关注的人

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