《The Way to Go》Chapter14 协程
Chapter 14
协程(goroutine)与通道(channel)
Go为构建并发程序的基本代码块是协程与通道,需要语言、编译器和runtime支持。Go语言提供的垃圾回收器对并发编程至关重要(?)。
原则:不要通过共享内存来通信,而通过通信来共享内存。
《The Way to Go》Chapter13 错误处理与测试
Chapter 13 错误处理与测试
错误处理与测试
Go通常在函数和方法中返回错误对象作为返回值,如果返回nil则没有错误发生
永远不要忽略错误,否则可能会导致程序崩溃!调用函数后必须检查错误
为了让代码更清晰,应该使用包含错误值变量的if 符合语句
if value, err := pack1.Func1(param1); err != nil { fmt.Printf("Error %s in pack1.Func1 with parameter %v", err.Error(), param1) return // or: return err } else { // Process(value) }
《The Way to Go》阅读笔记
Chapter1
go语言的发展目标
结合静态语言的安全性和高效性,动态语言的易开发性。
注意,go是静态语言(静态类型语言)。是类型安全和内存安全的编程语言。通过goroutine来实现并发并行编程,通过channel来实现gorountine之间通信。
像其他静态语言一样执行本地代码,但依旧运行某种意义上的虚拟机进行垃圾回收,不需要开发人员考虑内存管理的问题。
语言的特性
没有类和继承概念,使用接口(interface)来实现多态性,函数是基本构件
使用静态类型,强类型语言,隐式的类型转换不被允许
通关后简单地评价一下P5R
写在前面
从最早17年看狗头人玩女神异闻录5,到17下半年自己攒钱买了显示器和缩水版的ps4slim在寝室里自己玩,再到19年皇家版游戏发售找代购入了收藏版,我终于在22年年初换了工作之后忙里偷闲地把它作为psn平台上的第一个白金游戏通关了。

前前后后五年间跟这个系列之间的故事自然也不少了,虽然至今为止也不能说自己是一个很合格的系列粉丝——并不是那种真的和系列一起长大的玩家,除了通关了第五代游戏和在系列上花了不少钱其实也没有什么拿的出手的粉丝证明,但是还是想在这里简单地记录一下皇家版与我之间的故事,并以不成熟的测评人身份说说我对皇家版的看法。
注意:本文可能含有大量剧透,请尚未以任何形式通关《女神异闻录》《女神异闻录5皇家版》的读者自行选择是否继续阅读。
计算机图形学中的四元数
四元数与欧拉角
以下内容主要是参考了Krasjet关于四元数的介绍《四元数与三维旋转》:“点这里阅读《四元数与三维旋转》”
会记录一些阅读过程中遇到的结论性内容,系统学习主要还是参考原文档为主
复数
1.3 复数相乘与2D旋转
与复数 \(z=a+bi\) 相乘代表着\(\begin{bmatrix}a & -b \\b & a \end{bmatrix}\) 矩阵所作出的变换,将矩阵中的每一个元素都除以模长,可以得到以下变换:
\[ \begin{bmatrix}a & -b \\b & a \end{bmatrix} = \sqrt{a^2+b^2}*\begin{bmatrix}\frac{a}{\sqrt{a^2+b^2}}&\frac{-b}{\sqrt{a^2+b^2}}\\\frac{b}{\sqrt{a^2+b^2}}&\frac{a}{\sqrt{a^2+b^2}}\end{bmatrix} \]

从复平面观察可以得到,\(\|z\|=\sqrt{a^2+b^2}\) 且有 \(\theta=\arctan(\frac{b}{a})\) ,原本的矩阵转换为了两个变换矩阵的复合,其中左边的\(\begin{bmatrix}\|z\|&0\\0&\|z\|\end{bmatrix}\)是缩放矩阵,而右边的\(\begin{bmatrix}\cos( \theta)&-\sin(\theta)\\\sin(\theta)&\cos(\theta)\end{bmatrix}\)则是2D旋转矩阵。