摘要: 光线追踪 学习记录 本文使用 《Ray Tracing in One Weekend》作为学习书籍 ##1. 输出图片 本书生成的图片使用PPM格式,然后用PMView图片查看器打开生成的图片文件查看即可 输出 p3 3 2 255 255 0 0 0 255 255 0 0 255 255 255 阅读全文
posted @ 2021-01-30 15:46 xcantaloupe 阅读(75) 评论(0) 推荐(0) 编辑
摘要: NAT(网络地址转换) NAT(Network Address Translation)网络地址转换 [TOC] NAT 1. 网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关; 2. 网络访问只能先由私网侧发起,公网无法主动访问私网主机; 3. 阅读全文
posted @ 2019-07-30 17:20 xcantaloupe 阅读(1172) 评论(0) 推荐(0) 编辑
摘要: go从文件中读取json字符串并转换 将要读取的文件的一部分 go package main import ( "bufio" "fmt" "io" "os" "encoding/json" ) type County struct{ Code int Name string } type City 阅读全文
posted @ 2019-07-03 15:58 xcantaloupe 阅读(3873) 评论(0) 推荐(0) 编辑
摘要: 守护进程 [TOC] 守护进程 :也称为精灵进程,守护进程是一个在后台运行并且 不受任何终端控制的进程 。Unix操作系统有很多典型的守护进程(其数目根据需要或20—50不等),它们在后台运行,执行不同的管理任务。用户使守护进程独立于所有终端是因为,在守护进程从一个终端启动的情况下,这同一个终端可能 阅读全文
posted @ 2019-07-02 10:01 xcantaloupe 阅读(529) 评论(0) 推荐(0) 编辑
摘要: c++ uconcontext.h实现协程 [TOC] 什么是协程? 协程是一种程序组件,是由子例程(过程、函数、例程、方法、子程序)的概念泛化而来的,子例程只有一个入口点且只返回一次,而协程允许多个入口点,可以在指定位置挂起和恢复执行。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下 阅读全文
posted @ 2019-06-28 14:10 xcantaloupe 阅读(563) 评论(0) 推荐(0) 编辑
摘要: bzoj 1085骑士精神 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士,且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘:为了体现 阅读全文
posted @ 2019-06-12 15:22 xcantaloupe 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 评测机 [TOC] 思路 通过父进程启动一个子进程,子进程运行用户提交的代码。通过父进程监控子进程使用的内存,时间等计算机资源,最后对子进程生成的答案与正确答案进行比对。 第一步:生成一个进程 用户提交的代码可能会编译不通过,这时需要将编译报错信息返回给用户。我在编译的makefile命令后加这一句 阅读全文
posted @ 2019-05-05 23:19 xcantaloupe 阅读(1176) 评论(0) 推荐(1) 编辑
摘要: 基于时间轮的定时器 [TOC] 原理 ![此处输入图片的描述][1] 图片是一个单层时间轮,当指针走到某一格上,就获取那一格上挂的任务将其执行。 当时如果时间跨度大的时候,格子数明显不够,那么就可以做成多级时间轮。 其实就是当低层的时间轮走了一圈,将它高一层的时间轮走一格,并且将挂在高层时间轮上的任 阅读全文
posted @ 2019-04-13 23:03 xcantaloupe 阅读(1112) 评论(0) 推荐(0) 编辑
摘要: c++ 内存管理(一) |分配|释放|所属|可否重载| | | | | | |malloc|free()|C函数|不可| |new|delete|C++表达式|可| |::operator new()|::operator delete()|c++函数|可| |allocator::allocate 阅读全文
posted @ 2019-03-23 00:26 xcantaloupe 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 树的先序、中序、后序(非递归) 先序 中序 后序 c++ class Solution { public: vector postorderTraversal(TreeNode root) { vectorv; if(root==NULL) return v; stacks; s.push(root 阅读全文
posted @ 2019-03-22 21:56 xcantaloupe 阅读(240) 评论(0) 推荐(0) 编辑