自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Qsir的专栏

日常学习,工作中的点滴记录与积累

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

转载 Java与C#比较,哪个语言更是适合你?

Java与C#比较,哪个语言更是适合你?先来说一说Java和c#的一些语言细节上的区别。第1个方面是数据类型方面。c#支持nullable数据类型,而Java不支持。c#支持指针类型,而Java不支持。c#支持无符号整形型,而Java不支持。c#支持tuple类型,而Java不支持。c#支持值类型,而Java只支持原始数据类型的值类型。c#支持多维数组定义,Ja...

2020-03-23 16:26:40 3940 2

转载 语音信号短时域分析之预处理(三)

语音信号是一种非平稳的时变信号,它携带着各种信息。一般而言语音处理目的有两种,一种是对语音信号进行分析,提取特征参数,用于后续处理;一种是加工语音信号,如在语音增强中对含噪语音进行背景噪声抑制,以获得相对“干净”的语音。根据分析参数不同,可分为时域分析和变换域(频域、倒谱域)分析,其中时域分析是最简单、最直观的方法,它直接对语音信号的时域波形进行分析提取主要有语音短时能量和平均幅...

2019-12-27 10:22:27 1461 4

转载 语音信号之特性分析图(二)

语音信号的特性主要是指它的声学特性、语音信号的时域波形和频谱特性以及语音信号的统计特性等。这些特性对应着各种语音信号有特性分析图,如时域图、频谱图和声谱图,之前一直分不太清,最近查了一些资料学习了各个图及各中图含义,本次只介绍认识这几种图。一 时域图时域图中,语音信号直接用它的时间波形表示出来,通过观察世间波形可以看出语音信号一些重要特性,下图是用coolEdit打开...

2019-12-27 10:15:22 2697

转载 男高音,女高音,男中音,女中音,男低音,女低音

上图来自武音,想知道自己什么档次,去医院测量即可。上图为我制作的,图中的音域为有效音域,一般都是歌剧中用的。流行里大不相同。...

2019-12-27 09:51:06 2840

转载 语音信号语谱图

最近再看深度学习解决语音识别的问题,疑惑的是语音信号的语谱图是个什么东东,特地查了一下,仅供参考:1 定义:语音信号的傅里叶分析的显示图形称为语谱图(sonogram或者spectrogram)。语谱图是一种三维频谱,它是表示语音频谱随时间变化的图形,其纵轴为频率,横轴为时间。任一给定频率成分在给定时刻的强弱用相应点的灰度或色调的浓淡来表示。用语谱图分析语音又称为语谱分析。语谱图中显示了大...

2019-12-27 09:47:26 4708

转载 【合唱】男女差八度的科学解释

https://www.bilibili.com/video/av11535460/https://www.youtube.com/watch?v=o5GvYaGYcpQ(一摸一样的视频)视频解释的非常清楚了。文字版基本就是重复一下。音高差八度则频率差一倍。声音的构成是:基频+第一泛音+第二泛音+第三泛音+。。。假设男声基频为100,则为100,200,300,400,500。。。...

2019-12-26 15:43:54 3109

转载 波形、频谱和语谱

1.声音最直接的表示方式是波形,英文叫waveform,就是你贴的左边那张图。另外两种表示方式(频谱和语谱图)下文再说。波形的横轴是时间(所以波形也叫声音的时域表示),纵轴的含义并不重要,可以理解成位移(声带或者耳机膜的位置)或者压强。当横轴的分辨率不高的时候,语音的波形看起来就是像你贴的图中一样,呈现一个个的三角形。这些三角形的轮廓叫作波形的包络(envelope)。包络的大小代表了声音的响...

2019-12-26 14:21:45 2530

转载 音色与声谱图

作者:比的原理来源:比的学院1.泛音的种类和多少决定了音色为什么有人的声音听起来暗,有的人听起来亮?事实上,即使是唱同一个音高,大家的音色也天差地别,而这个差别就在泛音上了。一般来说泛音越充分的声音越饱满。低频泛音越充分的声音听起来越“厚实”,越“有力”;高频泛音越充分的声音穿透力越强,声音听起来越“亮”,越“尖”;高低频都有并且合理分布的声音,就是比较完美的...

2019-12-26 13:59:05 2488 4

转载 【转载】通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要包括:CLS、CTS(CLI)、FCL、Windows下CLR的相关核心组成、Windows下托管程序运行概念、什么是.NET Framework,.NET Core,.NET Standard及一些V...

2019-12-16 14:31:32 343

转载 编程之美系列之三——计算1的个数

问题描述: 给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数。 例如:N=2,1,2出现了1个“1”。 N=12,1,2,3,4,5,6,7,8,9,10,11,12。出现了5个“1”。问题求解:解法一:最直接的方法就是从1开始遍历到N,将其中每一个数中含有“1”的个数加起来,就得到了问题的解。...

2019-11-12 09:14:14 375

转载 编程之美系列之二——寻找出现频率超过一半的数

问题描述: 现在有一数组存放int型整数,数字有重复,且有一数字出现的频率超过了50%,请找出这个数字。 补充:主要考虑数据量很大的情况。问题求解:分析: 最直接的方法就是对数组中所有的数字排序,然后再扫描一遍,统计各个数字出现的次数,如果某个数字出现的次数超过一半,则输出这个数字。显然这个算法的时间复杂度是O(N * log2N + N...

2019-11-12 09:11:35 197

转载 编程之美系列之一——阶乘的运算

前言: 本人一直以来都对算法很有兴趣,前些日子拿到《编程之美》这本书,爱不释手,遂有意将书中的一些本人觉得较有意思的题目以及自己的心得拿出来与大家分享,共同讨论,共同进步。需提前要说明的是,本系列文章中许多的问题都直接或间接来自《编程之美》一书。至于解法,则有的来自书中的讲解,有的是本人自己的领悟。 闲话不再多说,我们立刻开始。问题描述:给定一...

2019-11-12 09:08:04 610

转载 给 python 初学者的四条忠告

1. 不要纠结于开发工具的选择,简单直接就是最好的学习一种编程语言,首先要找一款合用的集成开发工具,似乎是自然而然的想法。为什么不呢?IDE可以自动补齐,可以一键运行,还可以断点调试。使用IDE开发项目,就像驾驶一辆内饰豪华的汽车,尽情享受驾驶的乐趣就好了,谁还去关心引擎盖里面发动机是如何工作的呢?我的年轻同事们也都是IDE的拥趸,最初使用pycharm,后来是时下大热的vscode。可是,...

2019-11-12 09:03:07 233

原创 在python IDLE里执行py文件

Import在IDLE下也可以用import来运行文件。如运行test.py文件:improt test但是对于一个文件,improt只能在第一次导入时运行文件。在第一次导入之后,其他的导入都不会再工作,甚至在另一个窗口中改变并保存了模块的源代码文件也不行。实验了下,发现重启IDEL后依然不行。这是有意设计的结果。导入是一个开销很大的操作以至于每个程序不能够重复多于1次。Reload...

2019-11-11 17:20:34 7246

转载 Python IDLE入门

Python IDLE入门一、IDLE的安装当你安装python的时候,同时也安装了IDLE,python自带的一个编辑器,初学者可以利用它方便地创建、运行、测试Python程序。你说你安装Python之后,没有这个编辑器,那么肯定你是做了一些小操作,导致没有安装IDLE二、IDLE的启动安装好Python之后,我们可以按下面的操作启动IDLEwin10启动IDLEw...

2019-11-11 17:18:33 648

转载 Python idle下载、安装与使用教程

简介:IDLE是Python软件包自带的一个集成开发环境,可以方便地创建、运行、调试Python程序。本文包括IDEL安装、使用配置、和运行调试教程。由于Google、YouTube等大型公司的推广,python编程语言越来越受欢迎,很多编程爱好者,也将Python做为了首先的编程语言。今天我们就来讲一下,学习的第一步,安装Python idle编辑器,也它的调试和使用。第一步,我们...

2019-11-11 15:09:20 4102

转载 让代码更美:10大编程字体

日复一日的编写代码,有没有感到审美疲劳?也许些许的改变就能让我们感到生活更美好。换一种编程字体吧!体验一种新的代码感觉。 下面我眼中的十大编程字体:10. Courier 基本上所有的系统都自带了此种字体,有时候它又以Courier New的名字出现。不幸的是很多终端和编辑器都默认使用此种字体,虽然这不会影响使用,但这会影响心情,它太枯燥了。以前看到这样一句评论:久不见牡丹会以仙...

2019-11-11 15:04:05 9079 1

转载 Windows中常用的git GUI客户端的介绍

工欲善其事,必先利其器。作为一名开发人员,你不可能不知道git,无论你是开发自己的开源项目还是和团队一起进行大规模产品的开发,git都已经是源代码管理工具的首选。当然,那些hardcore developer会说,command line才是最好的工具,但并不是所有的时候command line都是高效的(不服?在command line里面做个compare试试你就知道了)。小编日常用的最多...

2019-10-25 14:14:59 279

转载 大数据实践的 6 个阶段

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/csdnnews/article/details/100144731作者 |彭锋责编 | 屠敏在最新的“2018年Gartner数据管理技术成熟度曲线”报告中,DataOps的概念被首次提出,Gartner标记其目前在“极...

2019-09-04 13:28:05 545

转载 验证(Verification)与确认(Validation)的差别

说法一:(2)“验证(Verification)”的涵义通过提供客观证据对规定要求已得到满足的认定。(2)“确认(Validation)”的涵义通过提供客观证据对特定的预期用途或应用要求已得到满足的认定。(3)“验证”和“确认”之差别“验证”和“确认”都是认定。可是,“验证”表明的是满足规定要求,而“确认”表明的是满足预期用途或应用要求,说简单点,“确认”就是检查终于产品是否达到顾客使...

2019-08-26 12:32:58 1766

转载 C++对象内存模型

0.前言文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局、虚表指针、虚基类指针等有深入了解的朋友可以慢慢看。本文的结论都在VS2013上得到验证。不同的编译器在内存布局的细节上可能有所不同。文章如果有解释不清、解释不通或疏漏的地方,恳请指出。回到顶部1.何为C++对象模型?引用《深度探索C++对象模型》这本书中的话:有两个概念可以解释C++对象模型:语言...

2019-07-15 13:33:12 318

转载 一个Java程序猿眼中的前后端分离以及Vue.js入门

原文:https://mp.weixin.qq.com/s/HWRYAR16vLE1XFep6_i1tA松哥的书里边,其实有涉及到 Vue,但是并没有详细说过,原因很简单,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了,个人感觉这个是最好的 Vue.js 学习资料 ,因此在我的书里边就没有多说。但是最近总结小伙伴遇到的问题,感觉很多人对前后端分离开发还是...

2019-07-11 14:31:30 303

转载 前后端分离时代,Java 程序员的变与不变!

事情的起因是这样的,有个星球的小伙伴向邀请松哥在知乎上回答一个问题,原题是:前后端分离的时代,Java后台程序员的技术建议?松哥认真看了下这个问题,感觉对于初次接触前后端分离的小伙伴来说,可能都会存在这样的疑问,于是决定通过这篇文章和大家聊一聊这个话题。我这里还是尽量从一个 Java 程序员的角度来说说这个问题,这样大家可能更好理解。从一个题外话开始很多小伙伴可能知道,松哥本科是经...

2019-07-11 14:28:35 168

转载 衡量数据的离散程度

我们通常使用均值、中位数、众数等统计量来反映数据的集中趋势,但这些统计量无法完全反应数据的特征,即使均值相等的数据集也存在无限种分布的可能,所以需要结合数据的离散程度。常用的可以反映数据离散程度的统计量如下:极差(Range)  极差也叫全距,指数据集中的最大值与最小值之差:  极差计算比较简单,能从一定程度上反映数据集的离散情况,但因为最大值和最小值都取的是极端,而没有考虑中间其...

2019-07-04 15:02:08 6284

转载 基于UDP的服务器端和客户端

前面的文章中我们给出了几个 TCP 的例子,对于 UDP 而言,只要能理解前面的内容,实现并非难事。UDP中的服务器端和客户端没有连接UDP 不像 TCP,无需在连接状态下交换数据,因此基于 UDP 的服务器端和客户端也无需经过连接过程。也就是说,不必调用 listen() 和 accept() 函数。UDP 中只有创建套接字的过程和数据交换的过程。UDP服务器端和客户端均只需1个套接...

2019-06-28 09:56:22 409

转载 再谈UDP和TCP

TCP 是面向连接的传输协议,建立连接时要经过三次握手,断开连接时要经过四次握手,中间传输数据时也要回复 ACK 包确认,多种机制保证了数据能够正确到达,不会丢失或出错。UDP 是非连接的传输协议,没有建立连接和断开连接的过程,它只是简单地把数据丢到网络中,也不需要 ACK 包确认。UDP 传输数据就好像我们邮寄包裹,邮寄前需要填好寄件人和收件人地址,之后送到快递公司即可,但包裹是否正确送达、...

2019-06-28 09:55:24 155

转载 gethostbyname()函数:通过域名获取IP地址

客户端中直接使用 IP 地址会有很大的弊端,一旦 IP 地址变化(IP 地址会经常变动),客户端软件就会出现错误。而使用域名会方便很多,注册后的域名只要每年续费就永远属于自己的,更换 IP 地址时修改域名解析即可,不会影响软件的正常使用。关于域名注册、域名解析、host 文件、DNS 服务器等本节并未详细讲解,请读者自行脑补。本节重点讲解如何使用域名。通过域名获取IP地址域名仅仅是 I...

2019-06-28 09:54:08 3377 1

转载 网络数据的大小端问题

不同 CPU 中,4 字节整数 1 在内存空间的存储方式是不同的。4 字节整数 1 可用 2 进制表示如下:00000000 00000000 00000000 00000001有些 CPU 以上面的顺序存储到内存,另外一些 CPU 则以倒序存储,如下所示:00000001 00000000 00000000 00000000若不考虑这些就收发数据会发生问题,因为保存顺序的不同意味...

2019-06-28 09:53:08 788

转载 socket编程实现文件传输功能

这节我们来完成socket文件传输程序,这是一个非常实用的例子。要实现的功能为:client 从 server 下载一个文件并保存到本地。编写这个程序需要注意两个问题:1) 文件大小不确定,有可能比缓冲区大很多,调用一次 write()/send() 函数不能完成文件内容的发送。接收数据时也会遇到同样的情况。要解决这个问题,可以使用 while 循环,例如://Server...

2019-06-28 09:52:13 647

转载 shutdown()函数:优雅地断开TCP连接

调用 close()/closesocket() 函数意味着完全断开连接,即不能发送数据也不能接收数据,这种“生硬”的方式有时候会显得不太“优雅”。图1:close()/closesocket() 断开连接上图演示了两台正在进行双向通信的主机。主机A发送完数据后,单方面调用close()/closesocket() 断开连接,之后主机A、B都不能再接受对方传输的数据。实际上,是完全无...

2019-06-28 09:49:16 987

转载 图解TCP四次握手断开连接

建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源。如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪忧。建立连接需要三次握手,断开连接需要四次握手,可以形象的比喻为下面的对话:[Shake 1] 套接字A:“任务处理完毕,我希望断开连接。” [Shake 2] 套接字B:“哦,是吗?请稍等,...

2019-06-27 15:09:15 249

转载 详细分析TCP数据的传输过程

建立连接后,两台主机就可以相互传输数据了。如下图所示:图1:TCP 套接字的数据交换过程上图给出了主机A分2次(分2个数据包)向主机B传递200字节的过程。首先,主机A通过1个数据包发送100个字节的数据,数据包的 Seq 号设置为 1200。主机B为了确认这一点,向主机A发送 ACK 包,并将 Ack 号设置为 1301。为了保证数据准确到达,目标机器在收到数据包(包括SYN包、...

2019-06-27 15:08:09 341

转载 图解TCP数据报结构以及三次握手(非常详细)

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Ha...

2019-06-27 15:07:09 220

转载 TCP协议的粘包问题(数据的无边界性)

上节我们讲到了socket缓冲区和数据的传递过程,可以看到数据的接收和发送是无关的,read()/recv() 函数不管数据发送了多少次,都会尽可能多的接收数据。也就是说,read()/recv() 和 write()/send() 的执行次数可能不同。例如,write()/send() 重复执行三次,每次都发送字符串"abc",那么目标机器上的 read()/recv() 可能分三次接收,每次...

2019-06-27 15:06:07 201

转载 socket缓冲区以及阻塞模式详解

在《socket数据的接收和发送》一节中讲到,可以使用 write()/send() 函数发送数据,使用 read()/recv() 函数接收数据,本节就来看看数据是如何传递的。socket缓冲区每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标...

2019-06-27 15:05:08 332

转载 如何让服务器端持续监听客户端的请求?

前面的程序,不管服务器端还是客户端,都有一个问题,就是处理完一个请求立即退出了,没有太大的实际意义。能不能像Web服务器那样一直接受客户端的请求呢?能,使用 while 循环即可。修改前面的回声程序,使服务器端可以不断响应客户端的请求。服务器端 server.cpp:#include <stdio.h> #include <winsock2.h> #p...

2019-06-27 15:03:53 1552

转载 socket编程实现回声客户端

所谓“回声”,是指客户端向服务器发送一条数据,服务器再将数据原样返回给客户端,就像声音一样,遇到障碍物会被“反弹回来”。对!客户端也可以使用 write() / send() 函数向服务器发送数据,服务器也可以使用 read() / recv() 函数接收数据。考虑到大部分初学者使用 Windows 操作系统,本节将实现 Windows 下的回声程序,Linux下稍作修改即可,不再给出代码。...

2019-06-27 15:02:45 662

转载 send()/recv()和write()/read():发送数据和接收数据

在Linux和 Windows 平台下,使用不同的函数发送和接收socket数据,下面我们分别讲解。Linux下数据的接收和发送Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入数据,使用 read() 可以从套接字中读取数据。前面我们说过,两台计算机之间的通信相当于两个套接字之间的通信,在服务器端用 write() 向套接字写入数据,客户端就能收到...

2019-06-27 15:01:22 545

转载 listen()和accept()函数:让套接字进入监听状态并响应客户端请求

对于服务器端程序,使用 bind() 绑定套接字后,还需要使用 listen() 函数让套接字进入被动监听状态,再调用 accept() 函数,就可以随时响应客户端的请求了。listen() 函数通过 listen() 函数可以让套接字进入被动监听状态,它的原型为:int listen(int sock, int backlog); //Linux int listen(S...

2019-06-27 14:59:55 826

转载 bind()和connect()函数:绑定套接字并建立连接

socket() 函数用来创建套接字,确定套接字的各种属性,然后服务器端要用 bind() 函数将套接字与特定的 IP 地址和端口绑定起来,只有这样,流经该 IP 地址和端口的数据才能交给套接字处理。类似地,客户端也要用 connect() 函数建立连接。bind() 函数bind() 函数的原型为:int bind(int sock, struct sockaddr *addr, ...

2019-06-27 14:58:01 751

优秀的开源Web开发资源

精选开源领域里的优秀技术和开发框架,为实现低成本高效率的web开发提供非常有价值的参考。

2013-01-31

Perl Debugger

Addison Wesley 出版 Perl 进阶宝典

2013-01-31

空空如也

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

TA关注的人

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