<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/scabo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; scabo]]></copyright><item><title><![CDATA[HTTPS Batch request的幂等性研究和实践]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/135232665</link><guid>https://blog.youkuaiyun.com/scabo/article/details/135232665</guid><author>scabo</author><pubDate>Tue, 26 Dec 2023 22:20:26 +0800</pubDate><description><![CDATA[通过HTTPS请求的幂等性设计，来提升网络敏感APP的用户体验]]></description><category></category></item><item><title><![CDATA[Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现（三）]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/119749840</link><guid>https://blog.youkuaiyun.com/scabo/article/details/119749840</guid><author>scabo</author><pubDate>Tue, 17 Aug 2021 10:27:15 +0800</pubDate><description><![CDATA[七、可靠性UDP的优化细节

4.5章节中，我们提到了KCP本身的优化提高，由于可靠性UDP是这个方案是否优秀的关键，而各种可靠UDP协议中都有TCP算法的影子，所以下面我们再仔细的谈一下这个部分。按照惯例我们从基础知识谈起。

1）路由器技术

随着现代路由器技术的发展，已经从第一代发展到第五代、第六代，详见百度百科的《路由器技术》，从淘宝上可以看到各个路由器的价格和外观。一条链路上可能由各种路由器、网关、WiFi等设备组成，而同一时间段发送的消息包可能有多条链路。

...]]></description><category></category></item><item><title><![CDATA[Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现（二）]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/119416529</link><guid>https://blog.youkuaiyun.com/scabo/article/details/119416529</guid><author>scabo</author><pubDate>Thu, 05 Aug 2021 14:07:46 +0800</pubDate><description><![CDATA[六、用户态实现

通过上篇文章，我们可知在用户态实现IO多路复用的大规模可靠UDP服务器不能用原生的udp协议，否则会面临当链接数增加的时候CPU和内存占用都增加很快直至承受不住的情况。要规避内核的种种弊端，就必须要用用户态协议栈来实现，这也是最适合最顺理成章的方案。我们可以站在前人的肩膀上，让我们来看一下DPDP+MTCP架构。

1.dpdk+mtcp

dpdk在驱动层工作，前文有所介绍。mtcp在tcp协议层工作，不仅实现了mtcp_socket、mtcp_bind、...]]></description><category></category></item><item><title><![CDATA[深度学习与围棋 名词笔记（一）]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/119347695</link><guid>https://blog.youkuaiyun.com/scabo/article/details/119347695</guid><author>scabo</author><pubDate>Tue, 03 Aug 2021 13:01:41 +0800</pubDate><description><![CDATA[对于对于1对于一门学科来说

对于一门学科来说，把书读薄，也就是记住与理解其相关名词是最重要的事情，记住与理解之后，这门学科也基本通透了。《深度学习与围棋》这本书中涉及到的深度学习相关知识众多，算法众多，名词也超级多，在此记录深度学习与围棋的名词目录。





名词
			解释
			页数
			注释
		机器学习
			机器学习不用直接实现算法，而是从样本数据推断出程序或算法。因此，在应用机器学习技术时，我们仍然向计算机提供数据，但不再提供指令，也不再等待预期的输出，而是向它提供我们所...]]></description><category></category></item><item><title><![CDATA[Linux系统下基于IO多路复用的大规模可靠UDP服务器的实现（一）]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/119346922</link><guid>https://blog.youkuaiyun.com/scabo/article/details/119346922</guid><author>scabo</author><pubDate>Tue, 03 Aug 2021 12:42:02 +0800</pubDate><description><![CDATA[一、范围

本文会由浅入深的讨论Linux系统下基于IO多路复用的大规模可靠UDP实现，知识范围主要涉及到IO多路复用、UDP协议、UDP可靠传输、协议栈内核态/用户态实现等。Linux内核版本为5.13。本文将主要分为三大部分，第一部分介绍相关基础知识，第二部分介绍在内核态实现，第三部分介绍在用户态实现。UDP高并发比较难做，本文涉及的部分技术点也会比较难懂，那么我们这么做有什么好处呢？

二、好处与现有问题

使用可靠UDP协议的业务越来越多，如直播、网络游戏（王者荣耀、...]]></description><category></category></item><item><title><![CDATA[基于A*和势场寻路的快速小队伍动态势场避障寻路]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/118964415</link><guid>https://blog.youkuaiyun.com/scabo/article/details/118964415</guid><author>scabo</author><pubDate>Wed, 21 Jul 2021 13:52:41 +0800</pubDate><description><![CDATA[前言

先把本算法的适用场景和优缺点写在前面，需要的可以继续看，不适用的就可以直接略过了。然后在循序渐进介绍本算法。演示效果在最后。

本算法适用场景

每次寻路以小队伍为单位（几个至几十个队员）
	队员之间（互斥）需要动态避障
优缺点

运算速度快，效率高
	队伍行进效果好，逼真度高
	由于结合了A*算法和势场寻路算法，所以这两者的优化、特例化算法基本都可以结合到本算法中。
	缺点是适用范围窄，在特殊需求下需要另写算法
一、A*寻路

A*寻路算法是基于格子的启发式探索寻路，优点是准确可靠、适用性强，缺点]]></description><category></category></item><item><title><![CDATA[ROK（万国觉醒）服务器卡顿解决方案]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/116047825</link><guid>https://blog.youkuaiyun.com/scabo/article/details/116047825</guid><author>scabo</author><pubDate>Fri, 23 Apr 2021 11:40:46 +0800</pubDate><description><![CDATA[万国觉醒是一款SLG策略手游，拥有庞大的用户群体和较好的口碑，是一款品质很高的SLG手游。但是往往到晚上玩家上线比较集中、战斗比较激烈的时候，就会出现服务器卡顿现象。经过分析，是战斗太多造成的。于是我写了两篇利用CUDA、DPDK、NUMA、Thread-Affinity优化服务器战斗的方案。文章链接如下。

TW项目后端GPU加速、DPDK网络加速

TW项目后端加速精益求精 用NUMA优化

如果服务器端用Java语言，那么需要用JNI技术。但是在用libdpdk.so或者libmtcp.so时会出现C]]></description><category></category></item><item><title><![CDATA[基于NavMesh寻路、漏斗寻路、RVO动态避障自创的服务器大规模寻路+动态避障算法的实现]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/115999800</link><guid>https://blog.youkuaiyun.com/scabo/article/details/115999800</guid><author>scabo</author><pubDate>Thu, 22 Apr 2021 10:49:48 +0800</pubDate><description><![CDATA[一、描述
TW项目是一个拥有较广阔野外空间的SLG游戏，玩家的军队方阵可以在野外进行长距离行军、短距离自由行军、占领要塞、驻扎、形成战斗阵型战斗等行为。其中，野外的山脉、河流等会产生静态阻挡；而由玩家迁城、把守要塞、驻扎等行为，会在野外地图上产生动态阻挡。
每个服务器活跃军队方阵目标5万个，每天产生的长距离寻路请求可能达几十万或者百万个，并且都需要在服务器端计算，用常规的A*寻路、navmesh寻路、ROV避障算法计算量巨大，影响服务器效能。所以我们可以采用两种解决方案：第一...]]></description><category></category></item><item><title><![CDATA[修改 mtcp 源代码来添加对 udp 支持]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/115967931</link><guid>https://blog.youkuaiyun.com/scabo/article/details/115967931</guid><author>scabo</author><pubDate>Wed, 21 Apr 2021 17:53:31 +0800</pubDate><description><![CDATA[mtcp 是一个用户态的 tcp 协议栈，结合 dpdk 可以实现高性能的收发包。mtcp 不支持 udp 协议，想要在 bind 里利用 mtcp 进行加速，需要改动源码以提供支持。
mtcp 项目地址：https://github.com/mtcp-stack/mtcp

1、修改配置文件支持UDP
1.1、修改数据结果struct mtcp_config，增加对UDP协议支持标记变量。
1.2、在core.c文件中的mtcp_init函数中，会调用config.c文件中的LoadConfigurat.]]></description><category></category></item><item><title><![CDATA[HUAWEI河图项目后端高并发探讨]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/115247036</link><guid>https://blog.youkuaiyun.com/scabo/article/details/115247036</guid><author>scabo</author><pubDate>Fri, 26 Mar 2021 15:30:42 +0800</pubDate><description><![CDATA[HUAWEI河图项目后端高并发探讨
一、需求
  河图项目是HUAWEI的数字新世界，可用于地图、虚拟交互等数字化服务。应对未来发展，可能会出现千万级用户同时在线、局部有十万人同时交互体验的超高并发需求。
二、需求分析
  1、超高及时并发要求：
    项目要求同场景（例如某景区前）存在十万人，并且产生交互（例如放烟花、与九色鹿对话、自身移动、定会议室、寻路等），假如每个人都在交互并且实时通知其他人，在局部场景内会产生十万*十万=百亿次广播并发，如果每人每秒同步一次（合并数据包、降低刷新频...]]></description><category></category></item><item><title><![CDATA[编译dpdk和mtcp动态库]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/115073558</link><guid>https://blog.youkuaiyun.com/scabo/article/details/115073558</guid><author>scabo</author><pubDate>Mon, 22 Mar 2021 12:59:42 +0800</pubDate><description><![CDATA[一、dpdk
dpdk编译默认是静态库，要编译成动态库的话需要修改：dpdk/config/common_base中的CONFIG_RTE_BUILD_SHARED_LIB=y，编译成功后会出现libdpdk.so
二、mtcp
可能会出现如下错误：
1、error: converting a packed ‘const struct ether_addr’
  修改./mtcp/src/Makefile中CFLAGS+=-g -O2 -Wno-address-of-packed-member
2、un..]]></description><category></category></item><item><title><![CDATA[使用机器学习构建SLG陪玩系统]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/114927527</link><guid>https://blog.youkuaiyun.com/scabo/article/details/114927527</guid><author>scabo</author><pubDate>Wed, 17 Mar 2021 13:54:25 +0800</pubDate><description><![CDATA[使用机器学习构建SLG陪玩系统
一、目的和意义
对于SLG游戏来说，玩家在游戏内相互竞争是游戏活跃度的重要体现，也是游戏收入的重要来源。但是相互竞争也是玩家流失的一个最主要原因，当游戏中某玩家没有竞争对手的时候，这个玩家也会觉得游戏乏味，趋于流失。
游戏陪玩系统可以为上述没有对手的玩家陪玩，增强游戏活跃度、减少流失率、提高付费、延长游戏生命周期。

二、如何通过机器学习的方式实现陪玩系统
SLG类型的游戏陪玩系统比较复杂，原因如下：
1、不同于moba或者一些单机小游戏，人工智能决策输出结果比较复杂，对于部]]></description><category></category></item><item><title><![CDATA[TW项目后端加速精益求精 用NUMA优化]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/114922666</link><guid>https://blog.youkuaiyun.com/scabo/article/details/114922666</guid><author>scabo</author><pubDate>Wed, 17 Mar 2021 11:52:10 +0800</pubDate><description><![CDATA[TW项目后端加速精益求精 用NUMA优化
一、问题描述
  上一篇文章描述了在每一次战斗时大量的并行计算被分布进行在CPU和GPU同时计算的方法，本篇文章介绍在CPU运算时，由于战斗线程、游戏逻辑线程、网络线程、数据库存取线程等被分别绑定到不同的CPU核心，所以战斗线程还可以运用numa技术，充分利用cpu的l3cache将运算效率进一步提高20%-30%。

二、利用线程与CPU核心绑定和该核心的L3Cache内存（少量）提高运算
  1、首先将战斗线程与CPU内核绑定（https://githu...]]></description><category></category></item><item><title><![CDATA[Centos下编译dpdk，mtcp]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/114920901</link><guid>https://blog.youkuaiyun.com/scabo/article/details/114920901</guid><author>scabo</author><pubDate>Wed, 17 Mar 2021 11:22:19 +0800</pubDate><description><![CDATA[一、内核版本
  使用uname -a查看内核，版本必须大于3.13
  查看内核启动顺序，发现新内核顺序为0
  init 6或者reboot
  重启成功后uname -r

二、升级gcc
# 安装gcc9 tooset
yum install centos-release-scl
yum install devtoolset-9-gcc*
scl enable devtoolset-9 bash
# which gcc
# gcc --version

三、安装libnuma
wge...]]></description><category></category></item><item><title><![CDATA[TW项目后端GPU加速、DPDK网络加速]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/114920629</link><guid>https://blog.youkuaiyun.com/scabo/article/details/114920629</guid><author>scabo</author><pubDate>Wed, 17 Mar 2021 11:14:17 +0800</pubDate><description><![CDATA[TW项目后端加速
一、问题描述
  对于回合制游戏，战斗每秒运行一次（一个回合），在这一次战斗中要进行所有的军队（army）的攻击、反击和将领（英雄）的技能的计算。大致的计算方法如下：
  军队攻击：
  for 所有军队
    for 军队中所有的不同兵种
      for 被攻击军队的兵种
        计算当前增益、互克等
      计算当前兵种总攻击，被攻击军队防御和反击
    按计算公式计算当前军队总伤害
   ...]]></description><category></category></item><item><title><![CDATA[TW寻路最优实践2]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/112043955</link><guid>https://blog.youkuaiyun.com/scabo/article/details/112043955</guid><author>scabo</author><pubDate>Thu, 31 Dec 2020 18:12:03 +0800</pubDate><description><![CDATA[背景
上次完成了初步的寻路设计方案之后，可以顺利的进行静态寻路了，但是对动态避障寻路支持并不好。经过跟项目设计者仔细研究，发现ROV等算法并不能满足现有需求，原因如下：

我们的动态障碍物是突然出现的，不是从某个其他方向走过来的
	每个对象，都需要每隔一小段时间，就要检查一下自己前进的方向是否有阻挡
	我们不能由前端运算，因为有时差问题，只能由后端运算。
据此，我们需要另辟蹊径，找到一个适合自己的算法。

算法描述
由于我们的障碍物是可能突然出现在前方的，我们并不能像ROV那样预先计算，选择一个另外路...]]></description><category></category></item><item><title><![CDATA[TW项目寻路算法最优实践]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/112042543</link><guid>https://blog.youkuaiyun.com/scabo/article/details/112042543</guid><author>scabo</author><pubDate>Thu, 31 Dec 2020 18:03:33 +0800</pubDate><description><![CDATA[TW项目寻路算法最优实践
一、描述
    TW项目是一个拥有较广阔野外空间的SLG游戏，玩家的军队方阵可以在野外进行长距离行军、短距离自由行军、占领要塞、驻扎、形成战斗阵型战斗等行为。其中，野外的山脉、河流等会产生静态阻挡，可能会用到navmesh寻路；而由玩家把守的要塞、由玩家在空地上的驻扎行为，会在野外地图上产生动态阻挡；自动形成战斗阵型等行为，可能会兼用鱼群寻路算法或者ROV避障寻路算法。
    每个服务器活跃军队方阵可能有几万个，每天产生的长距离寻路请求可能达几十万或者百万个，而...]]></description><category></category></item><item><title><![CDATA[浅谈如何从业务逻辑角度将百度春晚红包服务器从10万台优化到200台]]></title><link>https://blog.youkuaiyun.com/scabo/article/details/88041553</link><guid>https://blog.youkuaiyun.com/scabo/article/details/88041553</guid><author>scabo</author><pubDate>Thu, 28 Feb 2019 19:02:54 +0800</pubDate><description><![CDATA[一、起因
除夕夜晚上9点多到家，打开电视看春晚。
听到主持人说打开百度摇红包的时候，心里一喜，立刻打开百度APP摇了几个红包，但部分红包需要下载其他APP才能领取。于是打开某应用商店，出我意料的，某应用商店竟然挂了，于是返回APP继续愉快的摇红包，最后一共中了几块钱。
第二天大年初一看到新闻说由于百度红包总流量达到了X亿，苹果华为小米等应用商店全因此挂掉。本着对技术的好奇，根据新闻里给出的公开数据...]]></description><category></category></item></channel></rss>