Boost date_time 库处理日期和时间

在游戏服务器端的开发工作中,很多时候我们不得不面对繁琐的日期和日期处理。比如说一个运营活动的开始和结束时间处理,还有一个限时道具的到期时间处理等等。如果恰好程序的开发语言是 C++,并且框架并没有对时间处理进行过合理的封装,那么这项工作看起来就不是那么轻松愉快了。这个时候使用 time_t 类型和 tm 结构体,进行原始的时间和日期的比较和计算,就俨然成了程序员的梦魇。不过好在写 Boost 的前辈们已经帮我们做了复杂的工作,然后封装成了这个date_time 库。用来真是爽歪歪啊~ date_time 概述在使用 date_time 库之间,我们首先要明确三个基本概念:时间点(Time Po

LeetCode 003 — Longest Substring Without Repeating Characters

Longest Substring Without Repeating Charactershttps://leetcode.com/problems/longest-substring-without-repeating-characters/ 给定一个字符串,找出最长不重复子串的长度。 Solution 1第一个解决方案依然采取最直观的方式,就是做两层遍历,从前往后逐个字符比较。 class Solution {public: int lengthOfLongestSubstring(string s) { int length = 0; f

LeetCode 001 — Two Sum

最近开始撸 LeetCode,在这里做个简单的记录。撸 LeetCode 也不是因为闲来无事,只是觉得在工作之外需要继续锻炼。初步打算按照Problems 的题号来撸,Easy 优先,其他难度的撸不过可以先跳过,以后再来一遍也未尝不可,保持自信心比较重要。 Two Sumhttps://leetcode.com/problems/two-sum/ 题目大意是给定一个 int 数组,要求返回数组中两个数的下标值的数组,并且满足这两个数的和等于一个给定的目标值。并且假定每一个测试用例只有一个确定的结果。 Solution 1这题最容易想到的方法,自然是最暴力的两个 for 循环的遍历,实现如下:

泰拉瑞亚游戏存档路径修改

泰拉瑞亚(Terraria) 是一款非常受欢迎的2D沙盒游戏,甚至有不少玩家称之为 2D MineCraft。我久闻这款游戏的大名,所以早在半年前就从 Steam 上入了正版。但是非常遗憾的是,泰拉瑞亚的PC版没有合适的引导教程,导致入门有些门槛。比如说新手一进去不知道干什么,不知道如何使用道具、怎么砍树、怎么造房子,然后就在第一个夜晚到来的时候不停地被僵尸和眼球虐死。我自己本身也尝试了好几次,都没有摸索出合适的玩法,都没能入门玩起来,所以这款游戏就这么被我搁置了。 直到上个月,我无意中看到一个同事正在玩泰拉瑞亚的手机版,然后就下载了一个一起玩。令人意外的是手机版对于新手友好多了。手机版的开始

Hello Jekyll !

如你所见,本博客改用Jekyll啦。 大约几个月前,我抛弃了臃肿不堪的Wordpress,叛逃到了Pelican。当时之所以选择Pelican是因为对Python比较有好感,Ruby什么的完全接触过啊。最近对Jekyll突然来了兴趣,稍微看了一下,发现用这玩意儿把博客部署到GitHub Pages上比Pelican方便多了啊。Pelican只能把输出的html文件夹放到上面,然后原始文件和主题修改什么的只能另外搞一个仓库上传,而Jekyll可以把整个博客包括原始文件都放上去,完全不用操心,太方便了! Goodbye Pelican! 话说从上班之后,写博客的习惯完全丢掉了啊。。。

判断点是否在多边形内 — 射线法

最近在工作中用到了这个算法,抽空做一个笔记。 判断一个点是否在多边形内部的问题在很多地方都会碰到,最常用的方法就是射线法。 射线法以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外,考虑沿着L从无穷远处开始自左向右移动,遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到第二个交点的时候,离开了多边形,…… 所以很容易看出当L和多边形的交点数目C是奇数的时候,P在多边形内,是偶数的话P在多边形外。 特殊情况 射线穿过多边形的顶点。 这个时候,这个顶点会被计算两次,这显然是不正确的。 解决方法是在射线上的顶点只在计算一次。为了达到这个目的,这里定义