自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(731)
  • 资源 (7)
  • 收藏
  • 关注

原创 在类Unix平台实现TCP服务端

我们没有指定hints.ai_family = AF_INET或 AF_INET6,因为getaddrinfo可以动态决定它的具体类型,也就是我们可以同时兼容IPv4 和IPv6.上一步只是用本地地址信息创建了socket,还要将这个socket与本地地址绑定起来,才能真正关联起来。由bind函数来完成。调用listen函数让socket可以监听外界对它的访问。我们这里设置了最多有10个等待处理的进来的访问,换句话说,

2024-04-07 00:42:41 395 2

原创 在类Unix平台实现TCP客户端

我们这个TCP客户端将从命令行接收两个参数,一个是IP地址或域名,另一个是端口,并尝试连接在这个IP地址的TCP服务端。

2024-03-17 18:55:39 1037

原创 C++ lock_guard的使用

它的构造函数接受一个互斥量my_mutex初始化了一个对象,因为是在test()函数中调用的,那么构造出来的对象会被放到栈内存空间。在构造时,它顺便调用了mutex的lock函数,对函数体进行了加锁,当test()函数执行完时,栈里的东西都会被销毁,包括创建出来的lock_guard对象,此时lock_guard对象的析构函数就会被调用,在它的析构函数里,就可以调用mutex的unlock函数进行解锁。注意:用new运算符产生的对象,是没有这一特点的,因为new出来的对象,需要你主动去delete。

2024-02-18 20:23:21 348

原创 C++单例模式的实现

单例模式就是在整个程序运行期都只有一个实例。在代码实现方面,我们要限制new出多于一个对象这种情况的发生。而不是仅仅依靠无保障的约定。目前大多数的编程语言的做法都是私有化构造函数,对外提供一个获取实例的接口。这样做的目的使实例的创建不能在类外部完成,这样我们只需要在内部保障实例只创建一次即可。定义单例基本上来说是很简单的,就是先私有化构造函数,单例内部new出这个实例,并对外提供获取实例的接口。在这里我想特别分享一下,为什么要弄一个内部类的作用。目的只有一个就是当程序退出时主动delete掉实例。

2024-02-17 19:04:20 511

原创 C++中的互斥量

互斥量就如同一把锁,在同一时间,多个线程都可以调用lock成员函数尝试给这把锁头加锁,但是只有一个线程可以成功给这把锁加锁,其他没有加锁成功的线程的执行流程就会卡在lock语句行这里不断地尝试去加锁,一直到加锁成功,执行流程才会继续走下去。sum变量是我们想要保护的对象,因为多个线程对sum进行加1时,如果在同一时刻,多个线程同时修改sum变量,那么最终得到的累加结果就有可能是错的。上面的例子中使用一把锁还是比较简单,当多把锁一起使用时,就可能会因为思考不周导致死锁出现。

2024-02-17 14:43:07 169

原创 C++ lamda表达式和重载圆括号来创建子线程

【代码】C++ lamda表达式和重载圆括号来创建子线程。

2024-02-16 15:23:30 209

原创 C++多线程编程

在编程的实践中,一般来说,主线程必须等待子线程结束才结束,所以上面的程序,如果不调用join等待子线程执行完毕,主线程就会先结束,主线程先结束了,还没有执行完的子线程就会被操作系统强制终止。一个程序的子线程,并不是越多越好,因为每个线程都需要有一个独立的堆栈空间(这个耗费内存),线程间的切换需要保存许多中间状态等(即上下文切换,若线程太多,上下文切换就会很频繁,上下文切换是必须的,但是这种切换如果是没有意义的额外工作,那么只会浪费本属于程序运行的时间)主线程执行到下面这行就阻塞在那,直到子线程执行完毕。

2024-02-15 23:49:29 717

原创 __main__.py的作用

这个函数就是python的主函数入口。像C或C++、Java等程序都用一个main函数入口,这样一来这些程序都可以直接在命令行运行。,那么这份文件所在的包就可以直接在命令行执行,如我们有一个文件夹(包)dump,我们将。那么python的主函数入口在哪里呢?如果我们把这个程序入口放到。

2024-02-10 21:23:26 303

原创 __init__.py的作用

在python3.3之前的版本,所有的python包都需要有这样一份文件。因为importlib这个导入系统的核心模块已经可以自动侦测包,不需要。这个文件是空的,但是它也可以用来配置下当前这个python包,如指定包的版本,或者控制可见的符号,当使用。一个文件夹中有这一个文件时,那么这个文件夹就会被视作一个python包。文件的一个重要用途就是表示当前文件夹是一个包,它是可以空的。我们仍然可以使用这份文件去定义一些变量或其他的配置,它会在导入时被执行。所在的文件夹名,星号处的值就是可以在这个文件里配置。

2024-02-10 21:04:04 247

原创 python3创建虚拟环境venv

接下来就可以在当前环境安装依赖了。

2024-02-10 14:20:39 225

原创 用C语言列出Linux或Unix上的网络适配器

sys/socket.h 定义主要socket的操作和结构体,如sockaddr_in、AF_INET(IPv4地址族)、AF_INET6(IPv6地址族)等。netdb.h 这里包含许多对网络操作的定义 ,如addrinfo结构体,这里面有AI_NUMERICHOST,这是说返回数字主机地址作为名字等等。ifaddrs.h 定义ifaddrs结构体和函数 getifaddrs, freeifaddrs。stdio.h 提供了通用文件操作的支持和窄字符输入输出的能力,如printf等。

2024-02-10 14:05:04 1774

原创 使用pandas将excel转成json格式

安装好后,pandas会被放在excel的环境里,其他的环境不受影响。在弹出来的选项中选择我们刚刚创建的环境就可以完成配置。python 代码实现。

2024-02-05 16:53:17 881 1

原创 annaconda如何切换当前python环境

annaconda默认的python环境是base:把各种项目的依赖都安装到base环境中不是一个好的习惯,比如说我们做爬虫项目和做自动化测试项目等所需要的依赖是不一样的,我们可以将为每个项目创建自己的环境,在各自的环境中安装自己的依赖,这是比较好的做法。

2024-02-04 09:43:51 636

原创 在Linux中用C语言实现Socket通信

stdio.h : 这个文件头文件是标准的输入输出,StandardInputOutput。这个头文件主要涉及文件相关的输入输出操作。典型的方法printf() , scanf(),getc(), putc()。怎么理解这里文件呢?在Linux,有一个基本的原则,键盘、显示等这些操作都会作为文件来对待。事实上,键盘输入是默认的stdin文件流,显示输出是默认的stdout文件流。StandardL。

2024-01-28 17:48:12 1418

原创 HarmonyOS应用开发的工程目录结构

在介绍鸿蒙应用开发的细节,我们来了解工程目录结构,这样我们才知道我们能做什么。我们现在来一一介绍这些目录都是用来做什么的。AppScope > app.json5 应用级的配置信息AppScope > resources 这个目录下的base>element用于存放全局使用的基本元素,如字符串、颜色和布尔值。base>media目录则存储媒体、动画和布局等资源文件。如果模块下的resources的有同样的资源,那么就会优先使用模块下的资源,否则就使用这里的资源。

2024-01-21 18:30:31 1592

原创 为什么有些视频能够边下载边观看?

在传输上,与要下载才能播放的视频没有区别,只是流媒体不需要保存它的副本或它的数据,流媒体音视频数据可以被直接消费,需要下载的视频则必须先保存音视频的所有视频或一个完整的副本才能够开始播放。在流媒体,浏览器或播放器不需要创建一个本地的视频副本或保存接收到视频数据,然后再播放,浏览器或播放器只需要先加载少量的视频数据就可以实时播放视频了。因此对于要下载完毕才能播放的音视频文件,是因为播放端不知道如何对文件进行解析,必须下载整个文件,才能收集到足够的信息去做数据解析,所以它不能边下载边播放。电影,你可以直接看;

2024-01-14 17:52:43 461

原创 repo工具是如何简化我们使用git的?

如果本地当前的分支在远程并没有对应的分支,那么就什么都不操作。所以为了简化git的使用,repo就出现了,我们来看看repo封装了git后,向我们了哪些功能。这个命令后面有一个项目列表,意味着使用repo的项目往往比较大,依赖的项目也比较多,通过项目列表可以单独去更新某个项目的文件,如果次次都要更新全部项目,那会很耗时,现在可以指定更新会比较高效。那么接下来所有repo的命令的工作目录必须是.repo的父目录,如这里的~/HmOS或者~/HmOS的子目录,总的来说,都必须在~/HmOS这个目录里。

2024-01-14 16:11:24 931

原创 Repo命令与git的关系

Repo命令与git的关系是很密切的。我们都知道,git是一个开源的版本控制系统,常用在大型项目的管理上。我们对repo的使用和了解就比较少了。Repo是一个基于Git构建出来的工具,它的出现不是为了取代Git,而是为了更方便开发者使用Git这个工具。

2024-01-14 13:24:42 1265

原创 apk签名后在apk文件里的META-INF文件

将apk的后缀改名为.zip再解压,我们会看到产生了如下文件,存放在META-INF这个文件夹中:这些签名后产生的文件有什么用呢?

2024-01-08 13:35:35 1021 1

原创 android apk文件的签名问题

android的APK文件实际上是一个jar文件。jar的意思是瓶、罐,那就意味着jar文件是一个用来存放android应用相关文件的容器。事实上,它也确实如此,它只是一个带或不带压缩的zip文件,当你把.apk后缀改成.zip后,就能对此进行解压了。用java写的不同类型应用都会使用jar来存储它们的文件。jar有一些特殊的结构。

2024-01-06 18:01:41 833

原创 什么是.jks(.keystore)文件

jks 文件就是Java KeyStore (JKS)文件。它的用于存储加密密钥和证书。这个jks可以用在SSL加密,Android应用签名,Java应用等上面。其实,我们还见过.keystore文件,它和.jks文件是一样的。.jks 文件是.keystore 文件的其中一种。区别在于 .jks 文件是Java应用的默认keystore。既然.jks文件存储了加密密钥和证书,那么具体有哪些呢?因为它存储了这么多敏感的信息,所以一定要保护好这个文件。从输出的信息中,我们可知有等等。还可以通过。

2024-01-06 14:29:48 1439

原创 Scrum的事件

各方都清楚后,可以对本任务进行工作量的评估(如用故事点数,在Scrum中每个任务就是一个用户故事)小巧门:为了避免成员间的互相影响,可以采取分开匿名的投票方式来评估,如果出现太大的值,那么间接说明Product owner可能没有说清楚故事的内容或任务太大了,此时Product owner要进一步解释,或拆解故事,使其更好理解和执行。在这个会要检查一下我们的Sprint Backlog,看看有多少增量交付了,还要多少没有交付,找出不好的原因,方便下一次的Sprint planning。

2024-01-05 20:31:21 1019

原创 Scrum的工件

Sprint Backlog一定是高度可视化,也就是每天都能够清楚地看到进度、完成的情况(可视化方面的工具都可以用上,常的就是看板、燃尽图等等),这个待办列表每天都会被更新,这通常发在整个Sprint过程中,Daily Scrum每日站会是一个重要更新场所,关于Sprint Backlog的任何更新和反馈提供了足够的细节来检查我们的进度,也给作出新的调整适应新的变化提供了依据。增量是我们实现产品目标的垫脚石。这个完成的定义是开发者对这个增量的承诺,也就是这个增量做成什么样子,是这个增量的完成定义来决定的。

2024-01-05 18:09:53 1124

原创 使用anaconda创建爬虫spyder工程

到此spyder的环境就创建好了,接下来我们来使用这个环境来开发。使用anaconda 创建spyder工程是很方便的。

2023-12-31 13:25:11 1302

原创 使用anaconda创建notebook工程

题外话,一个IDE最基本的三个主要组成部分:编辑器、集成的编译器、集成的调试器。

2023-12-31 11:22:40 1023

原创 音视频编码基础知识

视频编码指的是通过特定的压缩技术将一种视频格式文件转换成另一种视频格式文件的过程。DTS与PTS的意思。

2023-12-27 10:19:53 728

原创 什么是流媒体

这里的首屏秒开是指从视频播放开始到真正看到第一帧画面所消耗的时间要尽可能的短,不能让观众有明显的等待时间。这种能力主要依靠云端服务的优化以及播放器的配合,使用阿里云的秒开功能最快可以实现 200ms 左右的首屏打开速度,如果网络下行足够够好的话甚至可以瞬开。所谓的流媒体是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网上即时传输音视频以供观赏的一种技术。如果没有流媒体技术,那么在观赏前必须下载整个媒体文件。目前应用流媒体技术就多的场景就是直播场景。

2023-12-25 18:21:55 100

原创 音视频转码

音视频转码一般过程是先解码再编码,方式可以是通过软件解码和编码(俗称软解软编),亦可以是通过硬件解码和编码(俗称硬解硬编)。据说一部90分钟的电影就大到1000GB,1s的视频大小就有186多MB,所以必须经过编码压缩之后才方便存储、方便网络上传输。当连续的图像变化每秒超过24帧以上,根据视觉暂留原理,人眼无法辨别单幅的静态画面,看上去是平滑连续的视觉效果,这样的连续的画面就叫视频。根据视频定义,我们不难理解,在视频数据中往往在时间域和空间域层面都存在大量冗余信息,而压缩技术就是去掉当中的冗余信息。

2023-12-23 19:18:20 597

原创 音视频的编码格式与封装格式

音视频的编码格式与封装格式是两个不同的概念,视频封装格式常见的有:mp4,rmvb,avi,mkv,mov,mpg,vob,3gp,asf,rmvb,wmv,divx,flv,ts/ps,rm,webm,dat,mpeg,ogg,这些视频封装格式是包裹了音视频编码数据的容器,把特定编码标准编码的视频流和音频流混在一起。在移动端一般将视频封装为mp4格式,mp4支持H.264, H.265等视频编码和acc,mp3等音频编码。封装简单来说就是将已经编码压缩好的视频轨和音频轨按照一定格式放在一个文件中。

2023-12-22 09:48:19 368

原创 ffprobe工具

ffprobe工具主要用于检测多媒体信息,如时长,视频分辨率、帧率、音频采样率、声道数、每个流信息等等。关于ffprobe更多参数可以参考。

2023-12-21 21:29:28 44

原创 ffplay工具

在编译ffmpeg时,如果系统中包含了SDL库,则会默认编译生成ffplay工具,否则无法生成ffplay工具。ffplay即可以作为播放器,也可以作为很多图像化音视频数据的分析工具,通过它可以看到视频图像的运动估计方向、音频数据的波形等。ffplay也可以作为用于测试ffmpeg的codec引擎、format引擎、filter引擎的工具。ffplay的常用参数,更多的参数信息请参考。

2023-12-19 23:15:15 198

原创 Y4M视频文件格式

以YUV4Mpeg格式创建的视频文件;这个视频文件存储了一组未压缩的YCbCr图像,这些图像逐帧组成视频;在压缩成MPEG-2或Matroska等更流行的视频格式之前,用作原始的彩色视频格式Y4M文件是一个纯文本格式的header开始,header有0或多个参数,每个参数以0x20分隔,在所有参数最后以0x0A结束,后面就是YUV原始数据。header后面是任意数量帧数据。每帧数据以固定字符串FRAME开始,我们以这个Y4M文件来一窥究竟。YUV4MPEG2: 签名,这是固定的,在文件的最前面。

2023-12-17 22:34:55 114

原创 ffmpeg模拟信号到数字信号

声道数就是声音通道数量,声道数是指在一次采样中所记录的声音波形个数,声道数增加,声音质量也会随之提升,同时音频文件的大小也会增加。将会影响音频数字信号的质量。

2023-12-17 13:51:05 81

原创 FFmpeg转码流程和常见概念

7、码率(bitrate per second, bps):又叫比特率,是指每秒处理的比特数,用于衡量视频或音频质量的一个参数。主要的封装(Mux/Demux)类型包括flv,avi,rmvb,mp4,mov,mkv,ts,m3u8等。6、帧率(帧频率):指的是视频文件中每一秒的帧数,人的眼睛如果想要看到连续移动的图像,每秒至少需要15帧。视频格式:mkv,flv,mov,wmv,avi,mp4,m3u8,ts等等。3、帧(Frame):在这里指的是一张静止的图像,它分为I、P、B三种帧。

2023-12-17 00:11:59 284

原创 FFmpeg项目的组成

无论是上面提供的工具还是SDK,它们的源代码都在工程中,都是由这些源代码编译出来的,FFmpeg是由C语言实现的,主要在Linux平台上进行开发。这个部分是供开发者使用的SDK,SDK是编译好的库。基本上每个平台都有对应的SDK。

2023-12-16 23:26:25 230

原创 股票市场简介

所谓股票市场就是已经发行的股票的转让、买卖、流通的场所,包括交易所市场和场外交易市场两类。中国有上海证券交易所和深圳证券交易所两个交易市场。所谓发行市场就是资金需求者融资的场所。资金需求者可以通过在一级市场上发行股票、债券等筹集资金。发行市场为资金供应者提给投入机会,谋求证券投入收益。发行市场与流通市场区别就是一般没有一个有形的特定场所,有时证券的出售是在发行者和投入者之间直接实行的,但更多的是通过中介机构实行,因此发行市场是由发行者、证券中介和投入者三者构成。

2023-12-11 14:09:55 113

原创 微服务架构下的分布式事务

比如说现在A、B、C三个服务各自使用了不同的数据库,现在有两个请求1和请求2,并发修改同一个数据项,这个数据项分别由这三个服务进行处理,由于网络延迟,这个数据项在三个数据库中的值可能会不一致,如在A中为100,在C中为200.1、A(Atomicity)原子性,在同一组数据库操作中,其中某一步失败了,之前的所有操作都会被回滚,不允许出现部分成功,部分失败的情况。(3)最终一致性:在系统功能正常的前提下,等待足够长的时间之后,某条数据在系统中的状态能够收敛达成一致,之后,读取到的数据都是最新的。

2023-12-09 11:21:22 77

原创 kubernetes的服务发现(二)

服务对象中的label selector字段与选择器中定义的标签相匹配的Pod就会纳入当前服务对象的Pod列表中。服务对象的选择控制器会持续扫描和服务对象的标签相匹配的Pod,然后更新到EndPoint对象中。1、调用者向DNS服务发起域名(服务名称)查询,如果本地没有缓存就会被提交到DNS服务,DNS服务返回对应的ClusterIP。ClusterIP是服务对象的IP地址,并不是具体提供服务的Pod的IP地址。服务就是不需要主动去DNS中注册,靠DNS的控制器就能完成服务的自动注册。

2023-12-08 21:31:09 363

原创 微服务架构之服务发现

Kubernates的Node节点上都会有一个kube-proxy的代理,这代理会实时检测服务和端口的信息,当有变化时,kube-proxy会在对应的Node节点处修改相当的iptables路由规则,客户端服务就可以比较方便地通过服务名称访问上游服务。典型例子:Eureka这个组件提供了注册中心和客户端,它对服务地址的更新基于发布订阅模式中的拉取方式,也就是说客户端会定时到注册中心拉取最新的数据,这可能会出现服务这此期间进行更新,当时还调用差旧的服务,所以这种技术要求节点与服务的关系相对固定。

2023-12-07 23:44:04 328

原创 微服务的应用架构

在这种背景下,无疑单体应用是最合适的,单体应用开发简单,只需要构建一个单独的应用程序,其次,测试也不麻烦,只需要测试端到端的场景和调用接口的测试;当系统壮大后,各方面的复杂度都在增加,就是时候对单体应用的体系进行拆解,典型的手法就是分层。在六边形的边界上有进出的端口,通常以某种协议的API形式出现,与之对应的是外部的适配器,它们将完成外部系统的调用,并通过端口与应用交互。六边形架构的扩展性也非常好,例如我们要引入一种新的通信协议,或一种新型的数据库,那么我们只需要实现对应的适配器就可以完成引入。

2023-12-03 20:15:10 475 1

Android-ttf.zip

Android字体,.ttf字体文件,可以用于Android中。本资源包含29种字体,任君选择。可以在Android应用中使用。这样可以丰富android应用的显示。

2020-07-02

java-json.jar.zip

这个jar包可以实现xml与json字符串互相转化的功能。通过常我们反序列化时都习惯用json,但有些接口仍然使用xml,那么可以借助这个工具来实现xml转换json了。

2020-06-27

sqlitestudio-3.2.1.tar.xz

sqlite studio这一款数据库工具可以非常方便查看sqlite数据库,非常直观。在linux系统上下载下来解压后就可以使用了,无需要安装。

2020-04-17

mongodb-org-server_4.2.5_amd64.deb

这是mongodb server,版本是4.2.5,它是一个文档数据库。是NoSQL类型的数据库。在官方网站下载,可能会比较慢。在此分享给你们。

2020-03-28

git常用命令.pdf

这是一份提供常用的git命令的pdf文件。可以通过查阅这份文档,快速使用git。个人觉得非常好用,遂推荐给大家。

2019-11-14

最完整的git教程.zip

git最全的教程、最官方的教程、最完整的教程,你可以学习到最完整的git教程,你可以系统地学习git教程。

2019-11-13

jdk1.6-bin.zip

jdk-6u45-linux-x64.bin用于在linux上安装的,drozer需要jdk1.6。还有一些平台就是需要jdk1.6的。真是很奇怪。分享给大家。

2019-10-23

空空如也

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

TA关注的人

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