[代码练习] 喝100杯奶茶
QQ水群时看到这么一个段子,虽然段子很老套,但这么工整一段话段话看起来就让人手痒,就做一个代码练习吧。
写一个能随机生成这段话的代码。但是如果只是一模一样的生成就有点太无聊了,最好是能根据输入的词能够按这样的模板输出。
也就是将 “喝xx杯奶茶”提取出来,然后根据提取词随机生成。
提取数字与汉字把数字与汉字分别提取出来,存储在一个[]string切片中 也就是[][]string
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849func preParam() [][]string { var s = "喝100杯奶茶\n来99个拥抱\n看98场日落\n要97次接吻\n拍96张照片\n买95朵玫瑰\n去94家餐馆\n看93次大海\n走92条小巷\n打91次雨伞\n要90场牵手\n种89个草莓\n盖88次被子\n递87杯温水\n热86次剩饭\n看85次电影\n做84顿午饭\n切83个水果\n吃82次甜品\n喝81次暖茶\n要80次拥抱\ ...
用Go语言来做一个小游戏吧!
为了学习GO语言做了一个简单的2D游戏。游戏中遇到了一些有趣的数学知识,在真实的在代码里体现它之前,还以为会永远用不到这些数学知识。
GitHub仓库: goTraining
2D游戏对角移动设置了游戏角色移动速度为5。在x轴与y轴上这没问题,但是如果要对角移动经过了合速度,实际移动速度就无法恒定。这时候就需要计算出缩放因子。
根据勾股定理:
V = 5 Vd = squa(VxVx + VyVy)
缩放因子 Q = 5 / Vd
当每一帧移动发生的时候对 Dx 与 Dy进行缩放: Dx = Dx * Q,Dy = Dy * Q。即可保证对角移动速度恒定为V = 5。
同样可以用数形结合理解,利用三角形等比例缩放。 通过缩放x与y轴恒定一帧内第三边移动距离。
旋转如果游戏角色旋转点不在游戏角色中心。而在周围某一点,比如游戏角色资源的左上角。想要实现角色原地旋转就需要一点小方法调整旋转点。
在一帧内 平移 → 旋转 → 再平移
第一次平移将旋转点移动到,原来的游戏角色中心点上。第二次平移将角色复位。
矩形是否重叠要计 ...
HowLinuxWorks随记
本文将记录《how linux works》一书中的知识。
第一章 概述Linux层次Linux分为用户进程,Linux内核,硬件。内核在硬件之上管理硬件系统,是硬件系统和应用程序之间进行通信的接口
进程指计算机中运行的所有程序,组成了最顶层,称作用户空间或用户进程
用户进程与内核之间最主要的区别是内核在内核模式 kernel mode中运行,用户进程在用户模式运行。内核模式中运行不受任何限制访问处理器与内存。那些只有内核可以访问的空间叫做内存空间 kernel space,反之用户进程可以访问的为用户空间 user space。一般来说用户进程的影响范围被限制在用户空间内。
主内存与CPU频繁产生读取行为的内存。数据以特定排列的0与1 bit存储,这被称为状态 state。我们可以用状态的变化阶段来描述进程的执行过程(eg. 进程的执行阶段 ,进程正在执行启动任务阶段)。镜像 image 通常表示比特值在内存中的特定物理排列
内核内存负责管理以下四个方面:
进程:决定哪个进程可以使用CPU
内存:内存分配,管理进程间的共享内存与空闲内存
设备驱动程序:作为硬件系统和进程之间的接口
...
全栈测试随记
本文将记录关于《Full Stack Testing》这本书中的诸多方法论与测试技巧
手动探索测试手动探索性测试一般处于开发后进行,探索性测试强调所有三个角度(业务需求,技术实现细节,最终用户需求)结合起来,并从这些所有角度去挑战在过去业务角度,功能开发角度中被认为对的事情。相较于传统手动测试,完成特定测试任务以满足某一需求文档中的验收标注,手动探索测试更为自由,更为全局。手动探索测试在特定的测试环境中随意干预各种应用程序组件,例如数据库,服务或者后台进程。
探索性测试框架等价类划分假如有一个正数的输入值x,有x小于500,x在500 与1500之间,大于1500,针对三种情况分别有三个不同的策略。如何进行测试?
可以划分为三个等价类 {0-500,500-1500,1500- },只需要在其区间内各区三个数就可覆盖所有情况。
边界值分析边界值分析法是等价类的扩展方法。它将类之间模糊不清的边界值也纳入测试,{0,1,500,501,1500,1501}
状态转换在程序的行为根据历史记录发生变化时可以使用状态转换将状态过程可视化。比如登录三次失败三次账号锁定。
决策表在面对逻辑关系(A ...
混沌工程随记
混沌工程并不是在生产环境中搞破坏。搞破坏很容易但完成下述事情很难:减小爆炸半径,对安全性进行批判性思考,确定漏洞是否值得修复,决定是否应该进行实验。寻找做对的地方比寻找做错的地方提供的信息多得多,因为对于复杂系统而言,故障可能是因为熵增而导致的系统性错误,这些并不能被预测到。而混沌工程通过实验认识到系统的属性信息,从而可以通过测试的方法规避掉错误,让团队拥有更好韧性。 对与让系统更加健壮而言,一味的冗余只会掩盖问题的存在,同时冗余的同时引入了故障,发生了熵增。