- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 游戏中的abtest功能实现,演进与复盘
前言abtest是一种很常见的,利用真实用户来测试的方法。在游戏中,可以用abtest来测试不同的活动,不同的商品,不同的定价,不同的匹配策略等等的用户接受程度。初版:简单的ab池划分与细分在接到第一版需求到时候,需求相当简单,策划/运营想要一个可以做abtest的工具,支持细分和多概率组。基于这个需求,第一版本的abtest需要做三件事情,将玩家的属性统计出来;将玩家按不同的属性进行划分...
2019-10-23 21:59:22
1586
原创 手机游戏后台服务整体架构
目录综述接入层分区分服数据处理玩家请求异常失败的处理日志数据存储对局服务器游戏外的系统综述网络游戏发展了二十年,但是整体的后台架构基本上是比较稳定的。从职能上来分,主要分为周边系统和对局。游戏对局是整个游戏最重要的部分,是游戏体验的基石。网络游戏所有的周边系统都应该是为了这个对局服务的,为了让玩家拥有更好的游戏体验而存在的。有些团队,甚至会将周边系统外包出去,集中精力开发游戏对局。网络游戏后...
2019-02-07 15:00:38
2678
原创 几种脱机环境下安装依赖的方法
前言昨天去CNCERT搭系统,碰到了天坑。晚上回来加早上半天,找了些解决方案。发个博客记录下来。应急中心的安全要求很高,限制非常严格。要求不能使用U盘,只能使用光盘来进行数据交互。而且机房不连通外网。所以在部署系统的时候程序的环境依赖就是个很大的问题了。找了下,大致有以下几种方案: 0. 内网源 1. Remastersys 2. DVD sources. 3. 利用cache制作临时源.
2017-05-28 08:14:11
2215
原创 百度华为实习生面试经历
百度华为实习生面试经历前天面完百度,昨天做完滴滴的笔试题后,找暑期实习的过程实质上已经算是结束了。只剩下等百度的结果了。 以下内容纯凭回忆: 百度:(5月6号下午3点) 1面 (40 min 左右) 1. 自我介绍,项目。 2. 如何识别攻击流。 3. 手撕算法题: 1. 二叉树递归版本先序遍历。 2. 给个数组,随机打乱数组的算法,随机算法一开始没考虑均匀性。
2017-05-28 08:13:38
2928
原创 滴滴新锐计划实习生面试经历
滴滴新锐计划实习生面试经历 周四(2017.04.20)面了滴滴,两面总共花了大概1.5小时吧。感觉整个面试过程和之前经历过得面试完全不一样。而且二面也让我收获颇丰。于是想记录下来。 一面是一个有点吊儿郎当的面试官。给人感觉不像个面试官,像个我想考考你的学长一样。在我回答问题的时候还会坐在沙发上抖腿,很有趣xd.不知道是不是滴滴的面试策略就是这样。 一面的流程很简单,介绍了一下自己,项
2017-05-28 08:12:41
6215
原创 Shell杂记
保证shell脚本的安全性。 在#!/bin/bash 后面加上-e。 -e 的作用是当当前脚本出现问题时就退出。 脚本出现错误时,如果不加-e会继续执行下去,这种忽略错误的行为不是好行为。-v的作用是打印当前脚本。可以在脚本出错退出时很方便的定位到出错的语句。 所以在脚本头该写的是:#!/bin/bash -ev。确保创建目录一定成功。 在mkdir的时候,加上-p的时候能够确保该文件夹创
2017-05-28 08:12:19
609
原创 dpdk ring 性能测试
在问及DPDK为何是高性能时,答案基本上都是DMA,零拷贝,hugepage,PMD轮询,以及无锁等。所以无锁结构的性能有多高呢。 DPDK无锁结构的实现在dpdk中,无锁的结构的思路基本是这样的:#operate n size burstdo{ copy r->head_ptr -> local_head local_head +n -> local_next suc
2017-05-28 08:11:43
2651
原创 数据结构与算法
整理和自己总结的部分数据结构和算法。数据结构队列特点是FIFO。是一种常见的数据结构。可用链表和数组实现。 出队时,链表只需要给出链头并将链头重新指向即可,而数组则需要进行一次全数组移动的操作。 入队时,链表需要遍历一遍链表,数组则不需要。 扩容时,链表是需要遍历一次,而数组需要进行一次拷贝。 操作 链表实现复杂度 数组实现复杂度 出队 1 n 入队 n 1
2017-05-28 08:11:18
1609
原创 阿里2017暑期实习内推面经
后来面了总共四个部门,都挂了。=,=一面3月2日投递简历,3月3号下午3点半左右接到面试电话,推迟20分钟回到寝室后开始面试。面试时长20分钟。 面试内容如下: 1. 项目 项目主要就着简历讲自己的项目。讲了挺久其中性能优化部分。之后问到DPDK的部分。DPDK底层架构(没答上),多队列的实现,大页面的实现(不知道),无锁ring的实现。 2. TCP三次握手 说的有点问题。 3
2017-05-28 08:10:38
1474
原创 LeetCode Golang 答案
Leetcode用golang实现的答案。全都会push到github上。 已经有的题目和答案链接如下: Question Solutioin 1.two sum [1.two sum.py](https://github.com/NachtZ/leetcode/blob/master/1.two sum.py) Add Two Numbers [2. Add Two Num
2017-05-28 08:09:39
2990
2
翻译 SDN综述
论文1思想利用分层思想,将数据与控制分离。 控制层有逻辑中心化和可编程控制器。数据层有dump 交换机,只负责数据的转发,课快速处理匹配数据包,适应流量日益增长的需求。两层之间采用开放统一的接口(比如openflow)交互。控制器通过接口下发规则,交换机按照规则执行工作。体系结构架构2 SDN由北向南分为三个接口:数据平面、控制平面、和应用平面。数据平面与控制平面之间利用用SDN控制数据平面接口
2017-05-28 08:09:09
4426
1
原创 手写一个Pcap捕包工具及性能优化
前言这是在项目上遇到的问题。因为项目的缘故,需要实现pcap捕包的功能,在使用后发现libpcap自身API使用比较复杂,就手写了一个API并尝试进行性能优化。部分代码在githuab上。pcapDumperpcap文件格式一个pcap文件的结构如下: (图片来自博客)如上图,一个pcap文件,有两个部分组成,一个Pcap 头部,和一堆包。其中每一个包都有两个字段,分别是Packet Head和
2017-05-28 08:07:49
2073
1
翻译 Defense4All 粗翻
Defense4All:教程内容 [ 隐藏 ] 1 简介 2 Defense4All设计 3 部署替代 4 Defense4All在ODL环境中 5 框架视图 6 应用视图 7 ODL代表视图 8 基本控制流程 9 配置和设置流程 10 攻击检测流程 11 攻击减轻流程 12 问题和故障排除 13 连续性 14 维护和升级 15 新术语和概念 16 其他信息
2017-05-28 08:07:05
1780
1
翻译 在OpenDayLight控制器上开发Bundle
在OpenDayLight控制器上开发Bundle基于OpendayLight官网上的这篇文档翻译修改而来:Developing Apps on the OpenDaylight controller
2017-01-08 13:24:30
3270
原创 Smarking Algorithm Contest 3
1. 453. Minimum Moves to Equal Array ElementsGiven a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 e
2016-11-06 12:23:09
551
原创 Smarking Algorithm Contest 2
435. Non-overlapping IntervalsGiven a collection of intervals, find the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping.Note: 1. You may assume the int
2016-10-30 12:21:52
470
2
原创 Leetcode第十周周赛Smarking Algorithm Contest
Leetcode 周赛440. K-th Smallest in Lexicographical Order439. Ternary Expression Parser438. Find All Anagrams in a String437. Path Sum III
2016-10-23 12:42:43
641
原创 LeetCode Weekly Contest 8 第八周周赛
415. Add StringsGiven two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2.就是模拟加法,将两个字符串表示的数字相加。其中字符串的长度均不超过5100,字符串中只有0-9,即不可能有负数的情况。解法很简单,就是按照小学时候教的加法运算来做就行了。
2016-10-09 14:37:48
1017
原创 LeetCode第六周周赛
404. Sum of Left Leaves不解释func isLeaf(root * TreeNode) bool{ if root == nil || root.Left!=nil || root.Right!=nil{ return false } return true;}func sumOfLeftLeaves(root *TreeNode)
2016-09-25 14:00:47
609
原创 Leetcode第五周周赛
400. Nth Digit401. Binary Watch402. Remove K Digits403. Frog Jump
2016-09-18 12:32:04
549
原创 Leetcode第四周周赛
用golang做了1,2,4题,第3题golang总是有问题换成c++来做。 代码地址:leetcode solution(golang)396. Rotate Function最暴力的方法莫过于一遍一遍计算。可以得到结果。 第二种方法就是利用了前一次的结果。 假设数组为 [a,b,c,d] 那么第一次计算的结果就是: 0*a + 1*b + 2*c + 3*d 第二次计算的结果是(从
2016-09-12 10:20:33
823
原创 将DPDK移植到snort上的DAQ
DAQ 与Snort在snort-daq中,daq的控制流程是这样的。 如上所述,Snort在初始化的时候载入了daq。这个时候snort的所调用的api是daq_load_modules。也就是说,这个时候在主线程没有启动网卡,初始化实例的操作。 在初始化整个snort之后(载入配置,载入daq及其他各个模块等等)。snort就进入了分析的阶段了。这个阶段的主角是 pig,或者说更本质的
2016-08-06 19:48:17
6125
2
原创 DPDK杂记
DPDK编译动态库将common_linuxapp中的CONFIG_RTE_BUILD_SHARED_LIB和CONFIG_RTE_BUILD_COMBINE_LIBS都改为y,重新编译。将生成的lib文件拷贝到linux的lib中。 (在dpdk16.04中,combine这个选项被取消了。邮件组中提到说是默认就是combine了。但是实际编译中发现不同的网卡驱动还是没有编译在一起。拷贝的时候都
2016-06-17 17:12:25
1016
原创 dpdk_ring剥离(单线程版)
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-06-17 16:50:55
818
原创 在虚拟机中部署dpdk
需要的环境:VMware。 本人用的是最新的VMware,vmware里面装的是ubuntu15.0464位。 DPDK2.0 http://www.dpdk.eu/browse/dpdk/snapshot/dpdk-2.0.0.tar.gz
2015-07-28 21:08:57
3292
原创 credential Provider 简易改写攻略
本次小学期的题目是windows下的凭证改编。本人负责的是Win7 下的credentials Provider 的编写以及其他杂七杂八的工作。当然给我印象最深的就是credentials provider的部分。作为一个比较新的技术(个人感觉在现在中国的局域网上能找的信息中,只要是在xp之后的技术,资料都是少得可怜。),资料少的可怜。在百度,这个关键词到了第三页的信息中中文信息就没有用了。谷歌被
2014-07-14 23:07:53
5027
6
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人