摘要: 测试代码structpass.cpp struct Vertex { int x, y, z; }; Vertex getVertex(Vertex a) { a.x = 111; a.z = 222; return a; } int main() { Vertex t; t.x = 1; t.y 阅读全文
posted @ 2022-09-23 00:15 哇哩顾得 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 本文主要从汇编的角度,看C++类的内存模型,即C++类的各种数据是如何分布的。 ####1.假设有如下Cpp文件: classMemoryLayout.cpp class Base { public: Base(){} virtual int func1() = 0; virtual int fun 阅读全文
posted @ 2022-08-30 22:39 哇哩顾得 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 本文主要从汇编的角度,看C++的类是如何实现的。 ####1.假设有如下Cpp文件 点击查看代码 //file:fraction.h class fraction { public: fraction(); int public_int; int getprivate(); void setpub( 阅读全文
posted @ 2022-08-21 22:08 哇哩顾得 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 本文主要描述了X64下的汇编层面的方法调用。具体来说就是一个C语言的方法被另外一个方法调用,是如果在汇编语言X64的规范中实现的。 1.假设有如下C语言文件 "test.c" 点击查看代码 int sumNine(int one, int two, int three, int four, int 阅读全文
posted @ 2022-08-20 23:21 哇哩顾得 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 1.0基本的指令 movx 单纯的copy %al = [10000000] %bl = [00000000] movb %al, %bl after %al = [10000000] %bl = [00000000] movsxx copy并且进行sign扩展 %al = [10000000] % 阅读全文
posted @ 2021-12-08 17:59 哇哩顾得 阅读(166) 评论(0) 推荐(0) 编辑
摘要: gu //小写 gU //大写 control a // add one control x // delete one gc // 注释 :! //输入命令 t 和 copy 和 co // 复制 //用法:2,3 copy 2 m // move // 用法: 2,3 m 4 gv // 选中上 阅读全文
posted @ 2021-11-29 12:26 哇哩顾得 阅读(44) 评论(0) 推荐(0) 编辑
摘要: The listen() interface provided by Unix system #include <sys/socket.h> int listen (int sockfd, int backlog); Returns: 0 if OK, -1 on error For the sen 阅读全文
posted @ 2021-08-26 18:05 哇哩顾得 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 1.什么是CAVLC? Context Adaptive Variable Length Coding (CAVLC) is a method used to encode residual, scan ordered blocks of transform coefficients. 2.CAVL 阅读全文
posted @ 2021-05-06 22:11 哇哩顾得 阅读(944) 评论(5) 推荐(0) 编辑
摘要: 1.什么是NAL unit? NAl Unit是一种包装H.264 数据的格式. Network Abstract Layer NAL 的一种分割方法是用 start_code即 0x000001 或者 0x00000001 NAL 中包含 integer number of bytes 2.VCL 阅读全文
posted @ 2021-05-02 17:49 哇哩顾得 阅读(384) 评论(0) 推荐(0) 编辑
摘要: What is H.264 H.264(AAC Advanced Video Coding) is an industry standard for video coding. Providing a set of tools for video compression and a stage in 阅读全文
posted @ 2021-04-21 17:02 哇哩顾得 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 1.有限长度函数,进行周期延长,变成周期函数 2.DFT的定义 周期函数的离散傅里叶级数DFS等价于原函数的DFT. 3.DFS的性质 平移性质 对称性质 卷积性质 用modulo的表现方式 DFT和Z变换的关系 DFT其实是 有限序列的sequence的Z变换的采样 采样点是WN^(-K) DFT 阅读全文
posted @ 2021-04-05 15:07 哇哩顾得 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 1.拉普拉斯变换 s = a + jw; 拉普拉斯变换相当于原函数乘以一个指数的傅里叶变换, 如下 2. Z变换 Z^n是一个eigen-function, 把所有的信号拆成 z^n. 证明如下. z^n经过一个系统后 Z 变换公式 离散时间傅里叶变换和Z变换的比较 傅里叶变换融入到了Z变换里面 Z 阅读全文
posted @ 2021-04-03 15:04 哇哩顾得 阅读(823) 评论(0) 推荐(0) 编辑
摘要: 1.方波采样 square wave的spectrum 信号经过square wave 采样后的spectrum,时域相乘,频域卷积。 图中可以看到只要采样频率w0 是信号最大频率两倍还大,频谱就不会重叠,信号就能还原. 固定长度,使用Impulse train 作为carrier。 impulse 阅读全文
posted @ 2021-03-06 00:28 哇哩顾得 阅读(1202) 评论(0) 推荐(0) 编辑
摘要: 1.傅里叶级数理解,cos(nx) 为一个单位向量基向量 (除以模 就等于基向量了) ,这是求一个f(x)在基向量上的投影. 2.DFT理解 3.e^jwt是一个特征函数 特征函数定义:a function which when you put it through the system comes 阅读全文
posted @ 2021-03-05 17:25 哇哩顾得 阅读(641) 评论(0) 推荐(0) 编辑
摘要: ADTS Audio Data Transport Stream (ADTS) is a format, used by MPEG TS or Shoutcast to stream audio, usually AAC. wiki链接 Structure AAAAAAAA AAAABCCD EEF 阅读全文
posted @ 2021-03-04 18:47 哇哩顾得 阅读(247) 评论(0) 推荐(0) 编辑
摘要: -o //输出名字 -I //头文件 -L //库文件的位置 -i /// 使用哪个库 gcc -E hello.c -o hello.i //头文件与源代码合在一起 gcc -S hello.i -o hello.s //汇编 gcc -c add.c -o add.o //编译成机器码 gcc 阅读全文
posted @ 2021-02-25 21:29 哇哩顾得 阅读(101) 评论(0) 推荐(0) 编辑
摘要: ffmpeg 常用命令记录 ffmpeg官网 录屏 ffmpeg -f {device} -i {input} -r {帧率} out.yuv e.g. ffmpeg -f gdigrab -i "desktop" out.yuv ffplay -video_size 1920x1080 -pix_ 阅读全文
posted @ 2021-02-25 20:33 哇哩顾得 阅读(578) 评论(0) 推荐(0) 编辑
摘要: JPG压缩的第4步是哈夫曼编码。下面主要介绍JPEG是如果进行哈夫曼编码的。 图片引用自"Compressed Image File Formats JPEG, PNG, GIF, XBM, BMP - John Miano"[1] 1.AC数据的哈夫曼Symbol. 对于AC数据而言,需要编码的前 阅读全文
posted @ 2021-02-18 23:17 哇哩顾得 阅读(405) 评论(0) 推荐(0) 编辑
摘要: JPG编码的第3步是量化。对于经过离散余弦变化后的8*8block的数据,我们要对这8*8的数据进行量化。在JPEG中量化就是对数据V除以某个数Q,得到round(V/Q)代替原来的数据。然后在JPG解码的时候再乘以M得到V。 需要注意的是,量化会丢失图片精度,而且是不可逆的。 M的大小同时也影响压 阅读全文
posted @ 2021-02-18 19:14 哇哩顾得 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 采样后,需要对8*8block进行DCT(离散余弦变换)。为什么要进行DCT?第一点是余弦变化后的图片能量主要集中在低频,我们只需要保存低频数据,默认高频0。第二点是,DCT后的图片很适合哈夫曼压缩,对于原图而言,区域相连的pixle数值差不多,哈夫曼压缩效果差。全部代码在 https://gith 阅读全文
posted @ 2021-02-18 02:53 哇哩顾得 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 我们已经从BMP图中拿到了需要压缩RGB的数据,我们需要对原数据从RGB域转变YCbCr域,之后对YCbCr数据进行下采样(down sampling)。对于不需要看文章的同学,这边直接给出源代码。https://github.com/Cheemion/JPEG_COMPRESS 图片引用"Comp 阅读全文
posted @ 2021-02-13 22:29 哇哩顾得 阅读(831) 评论(0) 推荐(0) 编辑
摘要: 在学习图象处理的过程中,JPEG是我的第一个拦路虎。一直很想手写一下JPG的压缩和解压的过程,我在网上找到了一些代码或者文章,很多都是没有注释或者是解释不够清楚的。所以特地写这篇文章记录自己从无到有写一个JPEG_Encoder的过程,也能帮助其他学习图形或者音视频的童鞋。对于不想看文章的同学,这边 阅读全文
posted @ 2021-02-12 15:15 哇哩顾得 阅读(671) 评论(0) 推荐(3) 编辑
摘要: 1.静态图片压缩 1.1对于图像而言,通常将图形分割成8 * 8 或者 16*16的这样子的一小块图像为单位进行压缩。下图是图像压缩过程图 1.2将在空间频的图像转变到频率域以便更好的压缩(DCT discrete consine transform, Discrete wavelet transf 阅读全文
posted @ 2020-12-18 00:23 哇哩顾得 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 本文主要介绍系统属性以及推导出时不变系统的卷积公式。 1.系统的概念 一个系统简而言之就是,接受输入,产生输出。 人的眼睛接受光信号,在大脑中产生化学信号(使得我们能够看到外界)就是一种系统。系统的范围很广阔,可以说万物皆系统。 连续时间系统t的取值为所有实数用圆括号()表示, 离散时间系统的取值为 阅读全文
posted @ 2020-12-05 09:49 哇哩顾得 阅读(868) 评论(0) 推荐(0) 编辑
摘要: 在信号与系统分析中,有两类函数特别重要,可以称之为构建傅里叶变化的基石(BuildingBlocks).本文主要讨论着这两类函数以及一些后续课程需要的知识 1.第一类函数是三角函数信号(Sinusoidal Signals) x(t)=Acos(ωt+θ). x(t)=Acos(ωt+θ) ω称之为 阅读全文
posted @ 2020-12-04 23:23 哇哩顾得 阅读(1613) 评论(0) 推荐(0) 编辑
摘要: http://docs.scala-lang.org/tour/lower-type-bounds.html中有一段代码 文中说这段代码不会通过编译,因为Function1是contravariant 在参数的位置上。看到这里是一个头很多个大的。 However, this program does 阅读全文
posted @ 2017-10-15 23:49 哇哩顾得 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 前言 最近看到好多红黑树的东西,英文好的童鞋可以直接点击http://www.cs.princeton.edu/~rs/talks/LLRB/RedBlack.pdf这里查看我之前学习的材料,对理解下面讲的东西肯定也有点帮助(但是不完全一样),英文一般的同学就直接看我的文采飞扬把哈哈。还有大家可以去 阅读全文
posted @ 2017-09-28 16:03 哇哩顾得 阅读(1356) 评论(0) 推荐(1) 编辑
摘要: BinarySearchTreeMap的实现 1 public interface Map<K extends Comparable<K>, V> { 2 void put(K k, V v); 3 4 V get(K k); 5 6 void delete(K k); 7 8 boolean co 阅读全文
posted @ 2017-09-21 12:55 哇哩顾得 阅读(1790) 评论(1) 推荐(1) 编辑
摘要: 堆 排 序 堆排序。就是通过堆结构来排序。可以看之前写的http://www.cnblogs.com/robsann/p/7521812.html 。关于堆的结构 堆排序先要使结构堆有序。所以要先使所有的小堆有序,小堆一点一点加入先的元素。最后整个堆有序。解图。假设你有 如下数组对象 [ 2 ][ 阅读全文
posted @ 2017-09-19 13:42 哇哩顾得 阅读(403) 评论(0) 推荐(0) 编辑
摘要: Quick の implementation 快排,就像它的名字一定,风一样的快。基本上算是最快的排序算法了。快排的基本思想是选择一个切分的元素。把这个元素排序了。所有这个元素左边的元素都小于这个元素,所有这个元素右边的元素都大于这个元素。接着再把左右2个数组分别排序。 假设你有如下数组 (所有 i 阅读全文
posted @ 2017-09-19 11:24 哇哩顾得 阅读(327) 评论(0) 推荐(1) 编辑
摘要: MergeSort 's implementation MergetSort 的中心思想就是分治思想,通过解决每一个小问题来解决大问题 假设你有2个已经排好序的数组 数组[ 4 ][ 8 ] 和 数组[ 5 ][ 7 ] 进行排序 4 是第一个数组最小的值 和 第二个数组最小的值5 进行比较 4 < 阅读全文
posted @ 2017-09-15 23:39 哇哩顾得 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 希尔排序 no 实现 希尔排序其实就是插入排序。只不过希尔排序在比较的元素的间隔不是1。 我们知道插入排序 都是 一个一个和之前的元素比较。发现比之前元素小就交换位置。但是希尔排序可能是和前第n个元素比较,如果发现比前第n个元素小就和前第n个元素交换位置。具体看下图 第一趟比较。n是为5。也就是说每 阅读全文
posted @ 2017-09-15 21:37 哇哩顾得 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 插入排序 の implementation 插入排序就像打赌的时候,比如双扣。抽牌的时候,一次拿一张牌,这张牌和之前的牌一张张比较。选择把这张牌插入什么位置,排好顺序的位置后打牌更顺。要不然得一个一个找到时麻烦。也不利于打牌的大局观。看下图 假设第一次抽到梅花7, 不用排序。因为只有一张 接着抽到梅 阅读全文
posted @ 2017-09-15 21:06 哇哩顾得 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 选择排序 no implementation 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的元素中中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法 选择排序图解。假设你有如下的数组需要排 阅读全文
posted @ 2017-09-15 10:16 哇哩顾得 阅读(344) 评论(0) 推荐(0) 编辑
摘要: PriorityQueue 的 implementation PriorityQueue即是优先队列。通俗的说就是体育课的时候老师要求从高到低排序,老师能直接一眼看出谁是最高的在班级里。当这个最高的离开的时候,老师也马上能知道下面哪个最高的人。 public class MaxPriorityQue 阅读全文
posted @ 2017-09-14 17:36 哇哩顾得 阅读(1650) 评论(0) 推荐(0) 编辑
摘要: 算法基础类介绍 Firstly -> Bag Bag类就是一个存放东西的地方,形象起来就是一个存钱罐,可以往里面放东西,也可以瞥一眼里面有什么东西,不可以把东西从里面拿出来,除非destory它。 public interface Bag<T> extends Iterable<T>{ void a 阅读全文
posted @ 2017-09-14 16:45 哇哩顾得 阅读(722) 评论(0) 推荐(1) 编辑