从代码角度分析动森大头菜价格走势

首先感谢进行解包的大佬Ninji。本文只是对解包代码进行粗略的解读并加以分析。

解包代码大体可分为三个阶段,分别是随机数生成阶段、价格预测阶段和价格计算阶段。

随机数生成阶段–梅森旋转算法

梅森旋转算法,Mersenne twister,简写为MT。在C++11中的随机数库中,有一个随机数生成引擎函数 std::mt19937,这里的mt就是梅森旋转算法的简写。

More

LeetCode刷题记录-Part2

本篇是该系列第二篇,第一篇地址见此。本篇还是数组篇,主要介绍各种常见算法的灵活使用,具体为桶排序、环检测算法、单调栈和BFS,并主要针对排序和查找类题目。

这个系列的上一篇是近两个月前写的,这篇的构思在上个月就已经想好了,但是一直拖到现在才开始动笔,实在不该。但是在我重新梳理本篇的结构时,重新审视了之前刷题的代码,发现人终归是会遗忘的,有些题的思路已经忘记了。所以这里笔者提醒正在刷题的各位,一定要养成定期温习之前刷的题目,这里并不是指重新敲一遍,而是在脑海中过一遍题目的解题思路和实现逻辑。

至于怎么温习,我给出两个建议。

More

HashCode 2020

Hash Code 是由Google举办,并且每一年举办一次的大型编程比赛。今年的比赛官网

关于最终比赛结果,在一共10724份提交代码的小组中,我们最终积分是两千四百多万分,具体排名为2100名。感谢小组内所有大佬的付出,让我们4个小时的努力有所回报。

今年的比赛题目和数据集见此。该仓库包含今年的练习题目与正式题目。此篇文章主要陈述正式比赛题目中的数据集b和d的解法。

至于为什么只写这两个数据集的解法,因为是我写的。但是关于d的算法在数据集d上的实现并不好,然而在f上的实现超出预期。

More

LeetCode刷题记录-Part1

最近在找实习刷LeetCode,所以开了这么一个系列。一是巩固自己的记忆;二是发出来我的解题思路或者我找到的认为比较好的解题思路,想让大家集思广益,分析是否有更好的解法。熟人直接微信或者qq小窗即可,不熟的见上方邮箱。这个系列估计会在我找到全职工作后才会停止更新。

我觉得刷LeetCode最大的乐趣并不在于你WA了多次后迎来AC,或者一遍AC,而是AC后去讨论区,看看其他人的代码是怎么写的?看看有没有和你不一样的解题思路?看看其他人是怎样优化他们的代码?看看他们的编码方式有哪些值得学习。这些才是我认为LeetCode上最有用的地方。

More

毕设填坑笔记-Git lfs的使用

自从自己拟了这个毕设后,感觉自己把自己坑的很惨,上次训练模型把电脑烧了后,总是能碰上奇奇怪怪的问题,所以打算开个新篇幅来记录我是如何填上毕设路上的自己给自己挖的坑。

我的毕设选题是关于用GAN生成图像方面的,为了记录中间的过程,我打算把每次训练生成的epoch都存下来;同时还想用git来管理代码版本,这时摆在我眼前的首要问题就是如何处理图片这些大文件。

使用一些开源的框架和成熟的模型,可以从一定程度上减小自己所需要的训练集体积,但是招架不住每次 pull/push 时所面对的动辄几百兆的传输列表,于是便在网上找到了git基于大文件传输的扩展 – git lfs(Large File Storage)

More

中断以及中断处理

中断

事实上所有计算机都提供了允许其他模块(I/O、存储器)中断处理器正常处理过程的机制。分类如下:

  • 程序中断:在某些条件下由指令执行的结果产生,例如算术溢出、除数为0、试图执行一条非法的机器指令以及访问到用户不允许的存储器位置。
  • 时钟中断:由处理器内部的计时器产生,允许操作系统以一定规律执行函数
  • I/O中断:由I/O控制器产生,用于发信号通知一个操作的正常完成或各种错误条件
  • 硬件故障中断:由诸如掉电或存储器奇偶错误之类的故障产生

More

详细谈谈二维码生成原理与编码(一)

本想一篇文章就解决的,后来发现需要介绍的有点多,一个晚上绝对写不完,看来又要开新坑了。

一、什么是二维码?

二维码有很多种,其中占据大半江山的主要有两种,一是以 PDF417 为代表的堆叠式条形二维码,另一个是以 QR Code 为代表的矩阵式二维码

PDF417 是“便携式数据文件”的缩写。它最少分为三层,最多 90 层。包括左右空白区、起始符、终止符、左右层指示符号字符等。它的具体架构如下图:

More