L5 多处理器编程:从入门到放弃
线程栈大小
可以通过下面的代码来测试当前线程的栈大小:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdatomic.h>
#include <assert.h>
#include <unistd.h>
#include <pthread.h>
#define NTHREAD 64
enum { T_FREE = 0, T_LIVE, T_DEAD, };
struct thread {
int id, status;
pthread_t thread;
void (*entry)(int);...
L4 Python 建模操作系统
状态机
提出了大胆的想法:无论是软件还是硬件,都是状态机
而状态和状态的迁移是可以 “画” 出来的! 理论上说,只需要两个 API:
dump_state() - 获取当前程序状态
single_step() - 执行一步
由此可以简化操作系统: 把复杂的东西分解成简单的东西,我们真正关心的概念:
应用程序 (高级语言状态机)
系统调用 (操作系统 API)
操作系统内部实现
没有人规定上面三者如何实现,通常的思路:真实的操作系统 + QEMU/NEMU 模拟器
我们的思路:
应用程序 = 纯粹计算的 Python 代码 + 系统调用
操作系统 = Python 系统调用实现,有 “假想” 的 I/O 设备
def main():
...
线性代数复习
向量
向量的定义
向量的模
向量的加法(平行四边形和三角形法则)
向量的点乘以及特性
向量点乘在图形学中的应用(判断大致的方向)
向量叉乘以及特性
向量叉乘在图形学中的应用(判断一个点是否在三角形内)
矩阵
矩阵的基本运算(相乘)
参考
GAMES101: 现代计算机图形学入门
一篇搞定!GAMES101现代计算机图形学入门(全)–知乎
GAMES101_Lecture_02
向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读
向量点乘与叉乘的概念及几何意义
向量几何在游戏编程中的使用1
推导相机变换矩阵
GAMES101 作业问题整理
一篇搞定!GAMES101现代计算机图形学入门(全)
写一个播放器之一
前言
年初进入一家音视频的公司,而在这方面感觉太菜,于是决定学习相关的知识。从零实现一个播放器我觉得是一个入门的好办法,于是参考了这个 ffmpeg-video-player,跟着其中的 tutorial 从简单到复杂。
完成这个 tutorial 系列,再去深入研究 FFMpeg 的 ffplay 播放器就相对简单许多(当然 ijkplayer 也不在话下(:逃))。
开始
首先研究 tutorial03。
FFMpeg 的一些初始化
1、创建 AVFormatContext
AVFormatContext * pFormatCtx = NULL;
ret = avformat_open_input(&pFormatCtx, argv[1], NULL, NULL);...
FFMPeg 音频
一些概念
音频有几个重要的参数:
采样率(sample_rate,单位是Hz);
通道数(channels);
采样格式(sample_fmt,见AVSampleFormat,其实就是采样的精度,位数越多表示越精细,当然占用的空间也会比较大)。
在ffmpeg中,音频数据的存储格式也有 planar 和 packed 之分,planar 表示每个通道数据单独存储,packed 表示通道数据交叉存储,在 AVSampleFormat 的类型末尾带P的就表示是 planar 格式的,比如双声道,用 L 表示左声道,R 表示右声道,那么:
packed 的存储为:LRLRLRLRLRLRLRLR;
planar 的存储为:LLLLRRRRLLLLRRRR。
...
Swift Mirror
前置知识介绍
AnyObject
AnyObject :代表任意类的实例、类的类型和仅类遵守的协议。
如下面几个就不正确:
字面量
解释一下 Swift 中的字面量
所谓字面量,就是指像特定的数字,字符串或者是布尔值这样,能够直接了当地指出自己的类型并为变量进行赋值的值。比如在下面:
let aNumber = 3 //整型字面量
let aString = "Hello" //字符串字面量
let aBool = true //布尔值字面量
整型字面量
整型字面量可以是一个十进制,二进制,八进制或十六进制常量。 二进制前缀为 0b,八进制前缀为 0o,十六进制前缀为 0x,十进制没有前缀:
let...
Swift try
一个示例代码
如下示例代码,实现了一个简单的对象转Map:
protocol JsonMap {
func jsonMap() -> Any
}
extension JsonMap {
func jsonMap() -> Any {
let mirror = Mirror(reflecting: self);
guard !mirror.children.isEmpty else { return self }
var reslut: [String : Any] = [:]
for (key, value) in mirror.children {
...
15 post articles, 2 pages.