文中标明【11】的为C++11新增标准。

第零部分

第一章 开始

  • C++是静态(编译时检查变量类型)、弱类型(会自动做隐式类型转换);
  • cin >>cout << 运算顺序均为从左至右,运算结果为一个istream/ostream对象;
  • while (cin >> a) 在读到EOF 时跳出循环;
  • 由于/* */ 注释的判定为遇到第一个*/ 结束,因此该注释不能嵌套。一般只用它来写注释,需要注释掉代码时使用多行//
  • cerr不可重定向,不通过缓冲区;endl会刷新缓冲区;
  • Windows下文件结束符为Ctrl+ZEnter,Linux下为Ctrl+D
  • 用户自定义的标识符不能连续出现两个下划线,也不能以下划线紧连大写字母开头,定义在函数体外的标识符不能以下划线开头;
阅读全文 »

  • Go 是静态、强类型语言;
1
2
3
4
5
6
7
8
9
10
11
12
package main // 定义包名

import "fmt" // 引入包

// 没有 init() 时的程序入口,可执行程序必须包含
func main() { // 注意大括号不能换行
/*
当标识符以一个大写字母开头,就可以被外部包的代码所使用(public),
否则对包外不可见(protected)
*/
fmt.Println("Hello, World!") // 不需要分号,除非一行多条语句
}
阅读全文 »

C++ Concurrency in Action - SECOND EDITION

本文为此书中文译本前四章的读书笔记。

https://github.com/xiaoweiChen/CPP-Concurrency-In-Action-2ed-2019

<pthread.h>

<pthread.h>是贴近底层的 POSIX 线程接口:

1
2
3
4
5
6
7
8
pthread_create():创建一个新的线程。
pthread_join():等待指定的线程退出,并回收其资源。
pthread_detach():将指定的线程设置为分离状态,使其资源在退出时自动回收。
pthread_exit():使当前线程退出,并返回指定的状态值。
pthread_mutex_init():初始化互斥锁。
pthread_mutex_destroy():销毁互斥锁。
pthread_mutex_lock():尝试获取互斥锁,如果已经被其他线程占用,则阻塞等待。
pthread_mutex_unlock():释放互斥锁。
阅读全文 »

项目目标:完成远程真机调试插件,实现对端侧 3D/XR 场景的 Unity 实时场景部署与调试;

具体内容

  1. 在端侧构建调试 SDK,用于接收 Unity 发送的命令,和向 Unity 同步状态;
  2. 在 Unity 中基于插件实现Debug Server,用于和端侧进行实时通信(Unity 场景快速导出并推送到端侧)和同步状态(Unity 场景双向状态同步调试);
  3. PC端:MacOS,移动端:iOS;
阅读全文 »

代码书写

  • 代码书写规范基本遵循 谷歌代码书写规范中文版
  • 不使用using namespace std,不使用goto,不使用vector<bool>
  • 使用using代替typedef
  • 谨慎使用宏定义(尽可能使用const代替宏),#代表将宏参数内容转换成字符串,##代表将两个参数内容连接成为一个字符串;
  • 一个可参考的 C++ 工程目录结构:https://github.com/hattonl/cpp-project-structure
  • 一些常见的注释约定:// TODO(待办),// FIXME(待修复),// HACK(临时解决方案),// NOTE(备注),// OPTIMIZE(待优化),// REVIEW(待审查),// DEPRECATED(已过时);
阅读全文 »

https://www.bilibili.com/video/BV164411S78V

线性回归(Linear Regression)与梯度下降(Gradient Descent)

记号

\(m\) = 训练样本数,\(n\) = 特征数,\(x\) = 输入变量/特征,\(y\) = 输出变量/目标变量

\((x, y)\) = 训练样本。第i个: \((x^{(i)},y^{(i)})\)

\(h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n\)

\(x_0\)\(1\),则\(h_\theta(x) = \sum_{i=0}^{n}\theta_ix_i=\theta^T x\)

\(Minimize_{\theta}\ \ J(\theta) = \frac{1}{2m} \sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2\)

(最小二乘线性回归)

阅读全文 »

https://open.163.com/newview/movie/free?pid=IEU2H8NIJ&mid=VEU2H8NKA

Supervised Learning & Gradient Descent

Notation:

  • \(m\) = #training examples.
  • \(n\) = #features
  • \(x\) = input variables / features.
  • \(y\) = output variable / target variable
  • \((x, y)\) = training example
    • The i-th: \((x^{(i)},y^{(i)})\)
阅读全文 »

Makefile

  • Makefile三部分:目标、依赖、执行语句;
  • 递归执行:若不存在目标文件或目标文件修改时间早于依赖文件,则先产生对应依赖文件,再执行语句;
  • 所有.o文件均由对应.c文件生成,$<为第一个依赖文件,$@为目标,$^为所有不重复的依赖文件,以空格分开;
  • src = $(wildcard ./*.c)得到空格隔开的所有.c文件名;obj = $(patsubst %.c, %.o, $(src)) 代表将src中的所有.c替换成.o;obj = $(src: %.c=%.o) 能得到同样效果;
  • .PHONY代表clean为伪目标
阅读全文 »

外部文件:

.vimrc

基础配置

系统偏好正常设置即可。

super+shift+. 显示隐藏文件。

软件:搜狗输入法,Chrome,XCode,Parallel Desktop/Toolbox,LaTeX,ForkLift,The Unarchiver,Steam,Github Desktop,Clean One Pro,WPS,MS Office,Typora,qBittorrentClashX

阅读全文 »