
学习历程
文章平均质量分 68
帝王铠
这个作者很懒,什么都没留下…
展开
-
【RAG】浅谈NVIDIA AI-AGENT在游戏中的应用
传统FPS类型游戏中设计的AI中,不论是基于行为树,状态机,还是强化学习,目标只有一个就是拟人,只有高度human-like的机器人才能在匹配中让玩家不易察觉。如何检测AI拟人性目前业内没有很好的手段,基本上都还是策划或QA主观体验感觉。没法量化,没法自动化测试。此次项目旨在通过大模型对视频的理解能力,太判断视频角色操作是否拟人,也可以应用在反外挂方面。在游戏领域使用大模型还是很有想象力和潜力的,但是工程上有较大优化空间。原创 2024-08-18 23:34:47 · 1189 阅读 · 0 评论 -
CUDA加速计算的基础C/C++
本文是Nvidia 90美金的课程笔记无论是从出色的性能,还是从易用性来看,CUDA计算平台都是加速计算的制胜法宝。CUDA 提供了一种可扩展 C、C++、Python 和 Fortran 等语言的编码范式,该范式能够在世界上性能超强劲的并行处理器 NVIDIA GPU 上运行经加速的大规模并行代码。CUDA 可以毫不费力地大幅加速应用程序,具有适用于DNN、BLAS、图形分析和FFT等更多运算的高度优化库生态系统,并且还附带功能强大的命令行和可视化性能分析器。CUDA 支持以下领域概念https:原创 2021-05-22 11:14:07 · 2063 阅读 · 2 评论 -
3A游戏制作人员职位及部分职位要求
这里写自定义目录标题前端职位要求地平线:零之曙光为例Game DirectorStudio Art DirectorNarrative DirectorLead ProducerExecutive ProducerTechnical DirectorLead combat DesignLead Quest DesignLead World DesignPrincipal Robot DesignLead Game CodeFeature ArchitectLead Tech C原创 2021-03-27 09:52:05 · 1552 阅读 · 0 评论 -
面向对象七大设计原则
1、 开闭原则(OCP:Open Closed Principle)核心:对扩展开放,对修改关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。根据开闭原则,在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关闭)的基础上,能扩展其功能(扩展开放)。2、 里氏替换原则(LSP:Liskov Substitution Principle)核心:在任何父类出现的地方都可以用他的子类来替代(子类应当可以替换父类并出现在父类能够出现的任何地方)1.子类必须完全原创 2020-12-28 17:14:17 · 256 阅读 · 0 评论 -
如何判断终端环境是物理机、虚拟机还是容器?
有点黑客帝国的意思,我就想探索下怎么判断当前终端所处环境是容器里还是就在物理机上,或者是虚拟机?容器和虚拟机的区别:容器共享内核,虚拟机独享内核虚拟机和物理机的区别:虚拟机是软件模拟的完整硬件系统功能的、完全隔离环境的计算机系统。只要模拟的全面,是没有太大差别的。除了性能差异,毕竟软件做了硬件的事。以下测试环境:容器 docker虚拟机 私有CVM物理机 ubuntu方法一:systemd-detect-virt如果是容器会显示 docker如果是CVM会显示 kvm如果是物理机原创 2020-06-02 10:58:52 · 4205 阅读 · 1 评论 -
最近写博客写的比较少
项目开发中,项目保密,所以很多我自己觉得不错的设计并不能拿出来讲,甚至不能在内部分享写出来,只能等发布后尘埃落定,得到玩家认可才能公开。只能记录一些少量的情报拉原创 2020-05-09 10:49:44 · 211 阅读 · 0 评论 -
sudo rm -rf /执行后到底是什么样子
最近某公司后台删库造成了很大损失,我来探究下sudo rm -rf /会怎么样,主要是云服务器快到期了,试验环境来利用起来。大家就是看看不要在生产环境试验哦。CentOS 7.6 64位第一次执行sudo rm -rf /提示这是个危险操作然后我们强行试一下,这个时候其他终端已经连不上了rm: it is dangerous to operate recursively on ‘/’...原创 2020-03-05 12:36:31 · 16903 阅读 · 0 评论 -
LuaJit Trace Compiler剖析
简要过程如下:分析阶段概要分析的目的是识别热循环。循环计数超过某个阈值后,该循环被认为是热循环,并进入跟踪模式。追踪阶段在跟踪阶段,循环的执行正常进行,记录的操作通常以中间表示(中间表示(IR)是由编译器或虚拟机内部使用,表示源代码中的数据结构或代码)形式存储。优化和代码生成阶段典型的优化包括常量子表达式消除,死代码消除,寄存器分配,不变代码运动,常量折叠和转义分析。优化之后,跟踪将...原创 2019-11-09 15:53:06 · 1769 阅读 · 0 评论 -
阻塞,非阻塞,同步,异步
对于一个network IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的process (or thread),另一个就是系统内核(kernel)。当一个read操作发生时,它会经历两个阶段: 1 等待数据准备 (Waiting for the data to be ready) 2 将数据从内核拷贝到进程中 (Copying the data from the原创 2017-11-16 14:40:18 · 255 阅读 · 0 评论 -
2018关于进阶的思考
转载一部分文章,自己分析一部分。“菜鸟”和“大神”思考的区别刚刚走出就业的程序员,技术是刚刚起步的基点。那下面我们就聊一聊有关技术的东西。首先请您先想想这几个问题。现在社会上有很多程序员,优快云就是我们程序员的家,那您是否可想过程序员为什么会有不同的水平?你又是哪一类的程序员?“菜鸟”程序员和“大神”程序员差在哪里?真是差在技术上了吗?那不是差在技术上那差在了哪里?上面很多一连串的问题,没有把你搞原创 2018-01-03 17:51:15 · 317 阅读 · 0 评论 -
__builtin_popcount 分析
glibc— Built-in Function: int __builtin_popcount (unsigned int x) Returns the number of 1-bits in x. 返回‘1’的个数。int f(int s,int n) //s源数字,n是数字长度{ int cnt = 0; for(int i = 0;i < n;i++)原创 2017-12-28 20:19:38 · 828 阅读 · 0 评论 -
使用 gdb 对程序进行汇编级调试
开始/重新开始 ( gdb) r ( run )下断点 (gdb) b *0x0804ce2b b 表示 break单步步过 (gdb) ni (next instruction) 单步步入 (gdb) si ( step instruction ) 继续执行 ( gdb )c执行到返回 (gdb) finishdisas转载 2017-12-28 20:39:53 · 1332 阅读 · 0 评论 -
C++ new详解
“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程 当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A转载 2018-01-09 09:45:26 · 6403 阅读 · 0 评论 -
go 快速排序
func Quick2Sort(values []int) { if len(values) 1 { return } mid, i := values[0], 1 head, tail := 0, len(values)-1 for head < tail { fmt.Println(values) if原创 2018-01-29 10:24:00 · 264 阅读 · 0 评论 -
virtualenv常用操作
基本命令 查看当前的虚拟环境目录 [root@localhost ~]# workon xxxx 切换到虚拟环境 [root@localhost ~]# workon py3 (py3) [root@localhost ~]# 退出虚拟环境 (py3) [root@localhost ~]# deactivate [root@localhost ~]# 删除虚拟原创 2018-02-12 16:10:45 · 502 阅读 · 0 评论 -
C语言中可变参数的用法va_list
int printf( const char* format, ...);最常见的打印,第一个参数固定为const char* format,后面是是三个点。下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的C函数要在程序中用到以下这些宏: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_转载 2017-11-08 17:38:52 · 440 阅读 · 0 评论 -
consul-HTTP API
服务发现系统consul-HTTP APIconsul的主要接口是RESTful HTTP API,该API可以用来增删查改nodes、services、checks、configguration。所有的endpoints主要分为以下类别:kv - Key/Value存储agent - Agent控制catalog - 管理nodes和serviceshealth - 管理健康监测sessi原创 2017-11-07 15:17:19 · 1121 阅读 · 0 评论 -
SQL truncate 、delete与drop区别
总结: truncate速度快直接清空,delete一行一行删用于回滚,drop直接删表结构原创 2017-05-11 12:01:55 · 318 阅读 · 0 评论 -
小记4 一些基础
一些基础原创 2017-04-28 14:12:28 · 337 阅读 · 0 评论 -
MySQL:MySQL日期数据类型、MySQL时间类型使用总结
《MySQL:MySQL日期数据类型、MySQL时间类型使用总结》适用于 MySQL 5.X 及以上版本。 一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +———————+ | now() | +———————+ | 2008-08-08 22:20:46 | +———————转载 2017-05-16 14:50:12 · 461 阅读 · 0 评论 -
远程唤醒(待验证)
背景:很多人熟悉远程桌面并经常地利用它所带来的方便,但是前提是服务器(远程电脑)必须是处于开机状态。对于机房里有专 人管理的服务器,这点不成问题,但如果是放在家里的电脑,要让它7*24地开机似乎就不好办了。所以,关键的问题是如何能够在需要的时候可以启动/关闭家 里的电脑(或者者说任何连着internet的电脑)。1.WOL原理WOL(Wake on Lan),即局域网唤醒,从根本上来说是硬件设备提供转载 2017-07-07 10:24:48 · 717 阅读 · 0 评论 -
字符编码笔记:ASCII,Unicode和UTF-8
个人认为: 界面显示用unicode (utf-8或者utf16)适配多语言兼容,服务器存储用字节或者多字节省空间,单词节中文乱码就用多字节GB2312。原创 2016-10-20 10:24:13 · 814 阅读 · 0 评论 -
C语言根据日期判断星期几
C语言根据日期判断星期几(使用基姆拉尔森计算公式)原创 2017-08-09 09:52:09 · 5987 阅读 · 0 评论 -
Linux 用户和管理员设置密码相关
$是普通管员,#是系统管理员,root用户默认是没有密码的,因此也就无法使用(据说是为了安全)。想用root的话,得给root用户设置一个密码: sudo passwd root 然后登录时用户名输入root,再输入密码就行了。uid=0(root) gid=0(root) 组=0(root) 新建用户是1000,至于为什么是从1000,开始这没有特殊原因,只是Ubuntu 第一个用户从100原创 2017-07-18 09:44:27 · 849 阅读 · 0 评论 -
std::list<>::sort()排序分析
STL的算法中,提供了sort()算法,算法接收两个RandomAccessIterator。所有关系型容器底层使用红黑树的,有自动排序功能。序列容器中的stack,queue使用priority-queue。而优先队列使用堆实现,它们都有特定的出入口,不允许排序。剩下的vector,list,deque中,list无法使用,因为list的迭代器属于BidirectionIterators。list转载 2017-10-18 14:49:22 · 6796 阅读 · 0 评论 -
Ubuntu设置开机启动找不到rc.local的问题
1、使用runlevel或者who -r查看服务器的运行级别,2、根据运行级别查看 ls -lh /etc/rc.d/rc【X】.d/【XXX】 -> ../rc.local,所指向的rc.local文件是哪个 默认在/etc/rc.d/rc.local下面,/etc/rc.local只是它的一个symlink。 2、注意在rc.local中的脚本尽量使用绝对路径,脚本要加执行权值,...原创 2018-04-08 23:30:14 · 4643 阅读 · 0 评论 -
lua源码研究一些细节记录
LuaJIT版本编译64位,突破2gb内存限制# Enable GC64 mode for x64.#XCFLAGS+= -DLUAJIT_ENABLE_GC64多线程中的lua同步问题修改 源码中llimits.h的#define lua_lock(L) ((void)0)#define lua_unlock(L) ((void) 0)重写这两个宏。以添加pthread提...原创 2019-09-21 17:41:27 · 650 阅读 · 0 评论 -
C++11并发,有锁队列和无锁队列
有锁队列#include <memory>#include <mutex>template<typename T>class threadsafe_queue{private: struct node { std::shared_ptr<T> data; std::unique_ptr<node> next; }...原创 2019-09-11 23:44:11 · 2776 阅读 · 1 评论 -
单机百万并发链接需要修改的一些系统参数备忘
1.Too Many Files默认1024echo ulimit -n 65535 >>/etc/profile2.Address already in use26116/etc/security/limits.conf每个进程打开的io数量root hard nofile 1048576root soft nofile 1048576/etc/sysctl.con...原创 2019-09-07 20:11:05 · 305 阅读 · 0 评论 -
C++并发学习笔记
基础的定义略过,这里只记录一些细节。std::async自动创建一个线程(或从内部线程池中挑选)和一个promise对象。然后将std::promise对象传递给线程函数,并返回相关的std::future对象当我们传递参数的函数退出时,它的值将被设置在这个promise对象中,所以最终的返回值将在std::future对象中可用std::async中的第一个参数是启动策略,它控制s...原创 2019-09-02 01:22:51 · 271 阅读 · 0 评论 -
绑定线程到指定cpu,CPU占用率像海波浪一样
#include <stdlib.h>#include <math.h>#include <sys/time.h>#include <stdbool.h>#include <unistd.h>#include <stdio.h>#include <sched.h>#include <thread...原创 2019-08-15 14:17:30 · 393 阅读 · 0 评论 -
64位操作系统最大虚拟内存16TB
原文链接:http://shayi1983.blog.51cto.com/4681835/1734822本文为原创翻译,原文出处为 http://www.codemachine.com/article_x64kvas.html这有效地将 X64 地址空间分开成2部分——用户模式地址的范围:0x0000000000000000~0x0000FFFFFFFFFFFF;内核模式地址的范围:0xFF...原创 2019-06-26 22:53:20 · 6538 阅读 · 2 评论 -
光追起步 Ray Tracing in One Weekend
https://blog.youkuaiyun.com/libing_zeng/article/details/72598060这个博客写的非常优秀,非常详实。书在这http://www.realtimerendering.com/raytracing/Ray%20Tracing%20in%20a%20Weekend.pdfhttp://www.realtimerendering.com/raytrac...原创 2019-06-03 17:31:06 · 1240 阅读 · 0 评论 -
游戏服务器开发技术总结
游戏服务器开发技术总结游戏类型MMORPGFPS文字/解密2D格斗赛车、球类竞技运动模拟休闲小游戏其他本文以MMORPG类型为例,总结服务器开发的技术栈。架构多服架构,目前主流MMORPG服务器为了提升承载人数,采用多达几十个服务器进程来形成一组游戏服务器服务玩家。通常会按功能分类,比如全局服,代理服,聊天服,战场服,排行榜服,组队服等等。也会按功能或者场景分,比如主城...原创 2019-05-01 22:31:13 · 1761 阅读 · 1 评论 -
C++ Modules 试验
https://blogs.msdn.microsoft.com/vcblog/2017/05/05/cpp-modules-in-visual-studio-2017/未完原创 2018-12-24 20:13:23 · 1749 阅读 · 0 评论 -
如何开启BBR算法
启用BBR算法之前首先要确定系统的Linux内核版本在4.9以上。1.查看内核版本uname -a1如果内核版本小于4.9则需要更新内核,4.9及以上跳过第二步2.更新内核此方法仅适用于Ubuntu和Debian首先查看系统位数,执行以下命令getconf LONG_BIT1看是64还是32位在Ubuntu Kernel上下载对应的内核安装包下载4.11的内核:#32位...原创 2018-12-19 21:54:38 · 3077 阅读 · 0 评论 -
云服务相关
1.亚马逊超越谷歌的原因在于起步早,提供服务器简单,谷歌提供的机器学习市场暂时用不到。2。阿里云主要在国内强,亚马逊除了中国都部署。原创 2018-11-27 10:10:47 · 189 阅读 · 0 评论 -
提问之前要先思考
向老师请教是学习的好方法,但在这里要批驳的是不经思考,有题就问的现象。有的人遇到做错的题直接就拿去找老师。其实有些问题查过书,再经过自己的思考就可以得出正确的结论。甚至得出结论后再去找老师核实也不失为一种好方法。这样就锻炼了思维能力和解题技巧,会达到事半功倍的效果。不经大脑,拿题就问的做法时间长了就会产生惰性。因此,当遇到疑难问题时,不要急于跑去问老师,相反,应该自己先动脑想一想,只有当反复思考...原创 2018-11-14 10:59:25 · 629 阅读 · 0 评论 -
git 回滚本地仓库
git reset --hard HEAD~3:将最近3次的提交回滚原创 2018-10-12 10:59:57 · 6790 阅读 · 0 评论 -
TCP之Nagle算法和延迟确认及关闭参数
主要为了解决首发包延迟问题。关闭Nagle算法,设置TCP_NODELAY关闭延迟确认Delayed Ack, 每次都得设置 TCP_QUICKACK基础知识顺便列一下Nagle算法为了减少网络中小分组的数目,减少网络拥塞的情况。Nagle算法要求在一条TCP连接上最多只能有一个未被确认的未完成小分组,在该分组ACK到达之前不能够发送其他的小分组,发送端需要收集需要发送的小分组,在接...原创 2018-12-18 10:15:35 · 7483 阅读 · 0 评论