-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcontent.json
1 lines (1 loc) · 281 KB
/
content.json
1
{"meta":{"title":"金振涛个人主页","subtitle":null,"description":null,"author":"金振涛","url":"https://jinzt.github.io","root":"/"},"pages":[{"title":"about","date":"2019-07-09T10:04:30.000Z","updated":"2020-04-12T13:06:04.112Z","comments":true,"path":"about/index.html","permalink":"https://jinzt.github.io/about/index.html","excerpt":"","text":"关于我自己 消灭星星试玩地址 FlappyBird"},{"title":"categories","date":"2019-07-09T10:04:21.000Z","updated":"2019-07-10T06:31:06.200Z","comments":true,"path":"categories/index.html","permalink":"https://jinzt.github.io/categories/index.html","excerpt":"","text":""},{"title":"tags","date":"2019-07-09T10:04:25.000Z","updated":"2019-07-10T06:31:18.967Z","comments":true,"path":"tags/index.html","permalink":"https://jinzt.github.io/tags/index.html","excerpt":"","text":""}],"posts":[{"title":"phaser游戏开发","slug":"游戏开发/phaser/README","date":"2020-04-12T12:53:32.204Z","updated":"2020-04-12T12:54:02.339Z","comments":true,"path":"posts/c151b467.html","link":"","permalink":"https://jinzt.github.io/posts/c151b467.html","excerpt":"","text":"","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"phaser","slug":"phaser","permalink":"https://jinzt.github.io/tags/phaser/"}]},{"title":"进程间通信","slug":"运维/进程间通信","date":"2020-04-12T12:51:33.901Z","updated":"2020-04-12T12:16:39.968Z","comments":true,"path":"posts/5729df21.html","link":"","permalink":"https://jinzt.github.io/posts/5729df21.html","excerpt":"","text":"基本教程 w3c教程http://www.runoob.com/linux/linux-tutorial.html linux入门教程http://www.92csz.com/study/linux/ 视频教程 51CTO教程http://edu.51cto.com/course/course_id-669.html 韩顺平linux教程http://www.icoolxue.com/album/show/23 其它 操作系统知识回顾—进程线程模型 Linux进程间通信 Linux下的进程间通信-详解 Linux–进程间通信(信号量,共享内存) linux下进程间通信的几种主要方式简介 我是这样学习Linux下C语言编程的-RPC远程调用编程 网游服务器多进程架构的思考 Linux共享内存(一) 浅谈管道模型(Pipeline) 小何讲进程: Linux进程控制编程 (fork、vfork)","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"多线程","slug":"运维/多线程","date":"2020-04-12T12:51:33.899Z","updated":"2020-04-12T12:19:08.327Z","comments":true,"path":"posts/5729df21.html","link":"","permalink":"https://jinzt.github.io/posts/5729df21.html","excerpt":"","text":"基本教程 w3c教程http://www.runoob.com/linux/linux-tutorial.html linux入门教程http://www.92csz.com/study/linux/ linux多线程pthread 视频教程 51CTO教程http://edu.51cto.com/course/course_id-669.html 韩顺平linux教程http://www.icoolxue.com/album/show/23 自旋锁 spinlock Linux内核同步机制之(四):spin lock spin_lock & mutex_lock的区别? 有了互斥量,为什么还需要条件变量? 无锁编程 Linux无锁编程 多线程模型下的无锁编程 这个时代无锁真的就是无锁吗 linux无锁化编程–__sync_fetch_and_add系列原子操作函数 无锁编程实战演练 无锁编程技术及实现 透过 Linux 内核看无锁编程 无锁编程本质论 无锁编程和有锁编程效率对比 linux无锁编程","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"windows使用","slug":"运维/windows使用","date":"2020-04-12T12:51:33.898Z","updated":"2020-04-12T12:17:40.603Z","comments":true,"path":"posts/5729df21.html","link":"","permalink":"https://jinzt.github.io/posts/5729df21.html","excerpt":"","text":"telnet 61.139.124.38 33143 使用 tracert -d 182.140.212.86 我看看路由其它 用winsw让任何Windows程序都能运行为服务 参考 Windows电脑快捷键汇总 Windows快捷键12345678910win+r 运行win+e 资源管理器win+f 查找文件或文件夹win+t 后台程序切换win+tab 激活任务视图win+d 显示桌面win+l 直接锁屏win+m最小化所有窗口win+shift+m 还原最小化的窗口 ALT 快捷键1234567891011121314151617181920Alt+F4 关闭当前程序Alt+空格+C 关闭窗口Alt+空格+N 最小化当前窗口Alt+空格+R 恢复最大化窗口Alt+空格+X 最大化当前窗口Alt+空格+M 移动窗口Alt+空格+S 改变窗口大小Alt+u+v word全屏视图Alt+F 打开文件菜单Alt+V 打开视图菜单Alt+E 打开编辑菜单Alt+I 打开插入菜单Alt+O 打开格式菜单Alt+T 打开工具菜单Alt+A 打开表格菜单Alt+W 打开窗口菜单Alt+H 打开帮助菜单Alt+回车 查看文件属性Alt+双击文件 查看文件属性Alt+Tab在打开的应用不同窗口间进行切换 # [1.在dos下,输入netstat -ano|findstr “8081”,查看端口使用情况。 2.查看该pid对应的进程名称tasklist|findstr “pid号”3.taskkill /pid pid号 来停止端口占用。","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"windows","slug":"windows","permalink":"https://jinzt.github.io/tags/windows/"}]},{"title":"vim","slug":"运维/vim","date":"2020-04-12T12:51:33.897Z","updated":"2020-04-12T12:16:39.973Z","comments":true,"path":"posts/5729df21.html","link":"","permalink":"https://jinzt.github.io/posts/5729df21.html","excerpt":"","text":"基础教程 实验楼Vim快速入门 Vim入门基础 Vim简明教程【CoolShell】 Vim入门教程 25个Vim教程、视频和资源 老司机乱谈编辑器之神 VIM分屏指令 vim中的杀手级插件: vundle 使用 Vundle 管理 Vim 插件 Vim插件之插件管理器Vundle vim C++开发环境插件安装详解 使用vundle进行插件管理 Vim自动补全插件YouCompleteMe安装与配置 跟我一起学习VIM - The Life Changing Editor 简明Vim练级攻略 常用插件auto-pairs 自动匹配括号、引号等 git clone git://github.com/jiangmiao/auto-pairs.git ~/.vim/bundle/auto-pairs NERDTree 显示目录树 在命令行模式下输入:NERDTree,然后回车,窗口左侧就出现了vim工作目录的目录树 git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle SuperTabVim插件管理插件Vundle安装Vundle git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle 配置 vim .vimrc 添加 set nocompatible " be iMproved filetype off " required! set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " let Vundle manage Vundle Bundle 'gmarik/vundle' "my Bundle here: " " original repos on github Bundle 'kien/ctrlp.vim' Bundle 'sukima/xmledit' Bundle 'sjl/gundo.vim' Bundle 'jiangmiao/auto-pairs' Bundle 'klen/python-mode' Bundle 'Valloric/ListToggle' Bundle 'SirVer/ultisnips' Bundle 'Valloric/YouCompleteMe' Bundle 'scrooloose/syntastic' Bundle 't9md/vim-quickhl' " Bundle 'Lokaltog/vim-powerline' Bundle 'scrooloose/nerdcommenter' ".................................. " vim-scripts repos Bundle 'YankRing.vim' Bundle 'vcscommand.vim' Bundle 'ShowPairs' Bundle 'SudoEdit.vim' Bundle 'EasyGrep' Bundle 'VOoM' Bundle 'VimIM' ".................................. " non github repos " Bundle 'git://git.wincent.com/command-t.git' "...................................... filetype plugin indent on " Brief help " :PluginList - lists configured plugins " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate " :PluginSearch foo - searches for foo; append `!` to refresh local cache " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal " " see :h vundle for more details or wiki for FAQ " Put your non-Plugin stuff after this line .ycm_extra_conf.py https://gist.github.com/locojay/4950253自动补全 Vim自动补全神器:YouCompleteMe vim智能补全插件YouCompleteMe新手完全攻略 YouCompleteMe总结sudo apt-get install cmake python-dev 安装Vundle后需编译安装YCM cd .vim/bundle/YouCompleteMe ./install.sh --clang-completer vim 操作总结ctrl+o 可以进入一次性编辑模式进入官方教程vimtutor移动h j k l GG shift g ngg ctrl + h ctrl + m ctrl + m w b插入操作i 插入 shift i 在行首插入 a 附加 shift a 在行尾附加 o 在当前行插入并跳到下一行 shift o 在当前行之上插入并调到 ctrl o 一次性进入normal模式复制、粘贴、剪切删除操作x 删除光标所在字符 dw 向后删除一个单词 db 向前删除一个单词 shift d or d$ 删除光标直至行尾的所有字符 d^ 删除至行首 dd 删除一行 dj 删除当前行和下一行 dk 删除当前行和上一行 ndd 删除n行 如5dd dG 删除到文档结尾处 d1G 删至文档首部 cw 替换从光标所在位置后到一个单词结尾的字符回滚u 回滚到上次操作执行外部命令!commond sample: !ls -l命令模式常见操作:e 文件路径 打开相应文件 :!commond 执行外部命令退出1.命令行退出 q 退出 q! 强制退出,不保存 w 保存 w <文件路径> 另存为 wq 保存并退出 2.普通模式下退出vim 普通模式下输入Shift+zz即可保存退出vim 查找/","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"termux 使用","slug":"运维/Termux","date":"2020-04-12T12:51:33.896Z","updated":"2020-04-12T12:17:55.047Z","comments":true,"path":"posts/cbd7345.html","link":"","permalink":"https://jinzt.github.io/posts/cbd7345.html","excerpt":"","text":"介绍termux主页 https://wiki.termux.com/, wiki 下载安装 Google Play 基本命令Termux除了支持apt命令外,还在此基础上封装了pkg命令,pkg命令向下兼容apt命令.apt命令大家应该都比较熟悉了,这里直接简单的介绍下pkg命令: 12345678910pkg search <query> 搜索包pkg install <package> 安装包pkg uninstall <package> 卸载包pkg reinstall <package> 重新安装包pkg update 更新源pkg upgrade 升级软件包pkg list-all 列出可供安装的所有包pkg list-installed 列出已经安装的包pkg shoe <package> 显示某个包的详细信息pkg files <package> 显示某个包的相关文件夹路径 目录环境结构12345678~ > echo $HOME/data/data/com.termux/files/home ~ > echo $PREFIX/data/data/com.termux/files/usr ~ > echo $TMPPREFIX/data/data/com.termux/files/usr/tmp/zsh 长期使用Linux的朋友可能会发现,这个HOME路径看上去可能不太一样,为了方便,Termux 提供了一个特殊的环境变量:PREFIX 安装vim1pkg install vim 设置默认编辑器 1export EDITOR=vim 更换国内源更换Termux清华大学源,加快软件包下载速度 参考Termux 镜像使用帮助 123sed -i 's@^\\(deb.*stable main\\)$@#\\1\\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux stable main@' $PREFIX/etc/apt/sources.listapt update && apt upgrade 安装基本工具1pkg install curl wget git unzip unrar 管理员身份利用proot工具来模拟某些需要root的环境 1pkg install proot 然后终端下面输入: 1termux-chroot 即可模拟root环境在这个proot环境下面,相当于是进入了home目录,可以很方便地进行一些配置. 在管理员身份下,输入exit可回到普通用户身份。 申请读写权限 之后会在home目录下有storage 连接**12termux-setup-storagels storage ssh安装openssh 12apt updateapt install openssh 启动ssh 1sshd 连接ssh服务器 termux是单用户,可以采用密钥方式,但比较繁琐,这里采用账号密码登录方式。 先设置密码(默认是没密码的) 1passwd 查看用户名 1whoami 查看ip 1ifconfig -a 连接 默认端口8022,u0_a258 1ssh [email protected] -p 8022 安装ftp 1pkg install pure-ftpd 可以在PC上的Filezella客户端上配置新站点,选择协议:SFTP,连接方式:询问密码,端口8022,连接输入正确的用户名和密码,就可以访问模拟器文件夹了。具备删写功能。如果你输入连接sd卡的目录,形如/sdcard或者/storage/emulated/0,且在手机权限管理赋予Termux读写存储权限的话,就可以远程管理手机存储,同样具备删写功能。 安装c++开发环境1pkg install clang gdb cgdb cmake 安装python271pkg install python2 安装 vim-python 1pkg install vim-python golang12pkg install golangpkg install vim-golang nodejs123pkg install nodejsnode -vnpm -v MariaDB(MySQL)安装1234567891011121314151617181920212223242526272829303132pkg install mariadbmysql_install_db // 初始化mysqlmysqld // 启动mysql服务mysql // 新开一个窗口 连接mysql提示1045 2800 我们改下配置 调过过密码认证 在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程vim /data/data/com.termux/files/usr/etc/my.cnf[mysqld]explicit_defaults_for_timestamp=trueskip-grant-tables重启msyql在使用 mysql 连接就成功了接下来就是用sql来修改root的密码mysql> use mysql;mysql> select * from user; // 用户表里面是空的mysql> flush privileges;mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; // 修改用户root 给予全部权限mysql> grant all privileges on *.* to 'jzt'@'%' identified by '123456'with grant option; // 创建用户root 给予全部权限mysql> flush privileges;mysql> quit;编辑my.cnf,去掉刚才添加的内容,然后重启MySQLmysql -uroot -p // 使用密码登录 免root安装Centos$ pkg install proot$ termux-chroot 安装centos 复制以下内容到termux执行 1pkg install wget openssl-tool proot tar -y && hash -r && wget https://raw.githubusercontent.com/EXALAB/AnLinux-Resources/master/Scripts/Installer/CentOS/centos.sh && bash centos.sh 启动centos./start-centos.sh退出centosexit nginxpkg install nginx/data/data/com.termux/files/usr/share/nginx/html/index.html 启动nginxnginx 停止nginxfuser -k 8080/tcp重启nginx服务nginx -s reload 127.0.0.1:8080 sshpkg install openssh 内网穿透 fatedier/frp https://www.natfrp.org/# https://blog.csdn.net/qq_16093323/article/details/82182027 https://github.com/cloudswave/termux-script/tree/master/frpc frp + termux内网 建站域名 xinlingbodong.top机器ssh ip:144.34.170.63 port:10339 passwd:bat123456 encrypt:aes-256-cfb 1.将域名 www.xinlingbodong.top 映射到机器 144.34.170.63在主机上安装nginxhttp://144.34.170.63/http://www.xinlingbodong.top/ apt-get install wget frp下载地址 https://github.com/fatedier/frp/releaseswget https://github.com/fatedier/frp/releases/download/v0.29.1/frp_0.29.1_linux_arm64.tar.gz tar -zxvf frp_0.29.1_linux_arm64.tar.gzmv frp_0.29.1_linux_arm64 frp vim frps.ini iptables -I INPUT -p tcp –dport 7000 -j ACCEPTiptables-save 12345678910[common]# 绑定端口bind_port = 7000# 通过自定义域名访问部署于内网的 web 服务vhost_http_port = 8080 # 123456789101112131415# frpc.ini[common]server_addr = x.x.x.xserver_port = 7000[web]type = httplocal_port = 80custom_domains = www.yourdomain.com[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000 通过 ssh 访问内网机器,假设用户名为 test:ssh -oPort=6000 [email protected] ftpssh 参考教程 termux从入门到入坑 - 简书 Termux 高级终端安装使用配置教程 安卓手机免root安装各种Linux系统:Ubuntu, Centos,Kali等","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"tool","slug":"tool","permalink":"https://jinzt.github.io/tags/tool/"}]},{"title":"shell","slug":"运维/shell","date":"2020-04-12T12:51:33.894Z","updated":"2020-04-12T12:16:39.968Z","comments":true,"path":"posts/5729df21.html","link":"","permalink":"https://jinzt.github.io/posts/5729df21.html","excerpt":"","text":"基本教程 w3c教程http://www.runoob.com/linux/linux-tutorial.html linux入门教程http://www.92csz.com/study/linux/ 视频教程 51CTO教程http://edu.51cto.com/course/course_id-669.html 韩顺平linux教程http://www.icoolxue.com/album/show/23 命令调整ubuntu时间sudo date -s "2016-02-23 23:59" 查看时间 date其它 linux lsof命令详解 shell脚本模版 每天一个linux命令 将 Win32 程序移植到 Linux Linux grep 命令中的正则表达式详解 内存查看与监控 Linux查看CPU和内存使用情况 Linux下查看内存使用情况方法总结 linux下,一个运行中的程序,究竟占用了多少内存? 查看到对应哪个应用占用了80端口:netstat -tulnp | grep ‘:80 ‘找到对应的PID杀掉。kill ‘PID’ sudo apt-get autoremove 笑笑小白归类自己需要的资料,慢慢爬行gdb调试带参数程序 一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译 器(cc/gcc/g++)的 -g 参数可以做到这一点。如: cc -g hello.c -o hellog++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名、变量名,所代替的全是 运行时的内存地址。当你用-g把调试信息加入之后,并成功编译目标代码以后,让我们来看看如何用gdb来调试他。 启动 GDB的方法有以下几种: 1、gdb program也就是你的执行文件,一般在当然目录下。 2、gdb core用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。 3、gdb 如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在 PATH环境变量中搜索得到。 GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb -help查看。我在下面只例举一些比较常用的参数: -symbols -s 从指定文件中读取符号表。 -se file从指定文件中读取符号表信息,并把他用在可执行文件中。 -core -c 调试时core dump的core文件。 -directory -d 加入一个源文件的搜索路径。默认搜索路径是环境变量中PATH所定义的路径。 当以gdb 方式启动gdb后,gdb会在PATH路径和当前目录中搜索的源文件。 如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。 在gdb中,运行程序使用r或是run命令。 程序的运行,你有可能需要设置下面四方面的事。 1、程序运行参数。set args 可指定运行时参数。(如:set args 10 20 30 40 50)show args 命令可以查看设置好的运行参数。 2、 运行环境。path 可设定程序的运行路径。show paths 查看程序的运行路径。set environment varname [=value] 设置环境变量。如:set env USER=hchenshow environment [varname] 查看环境变量。 3、工作目录。cd 相当于shell的cd命令。pwd 显示当前的所在目录。 4、程序的输入输出。info terminal 显示你程序用到的终端的模式。使用重定向控制程序输出。如:run > outfiletty命令可以指写输入输出的终端设备。如:tty /dev/ttyb 具体来说就是 例如一个程序名为prog 参数为 -l a -C abc则,运行gcc/g++ -g prog.c/cpp -o prog就可以用gdb调试程序prog#gdb prog进入gdb调试界面输入参数命令set args 后面加上程序所要用的参数,注意,不再带有程序名,直接加参数,如:set args -l a -C abc回车后输入r即可开始运行 ##https://www.jianshu.com/p/a0e11854b209","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"多线程linux zong","slug":"运维/README","date":"2020-04-12T12:51:33.893Z","updated":"2020-04-12T12:16:39.968Z","comments":true,"path":"posts/5729df21.html","link":"","permalink":"https://jinzt.github.io/posts/5729df21.html","excerpt":"","text":"首页常用库 Linux下安装使用mysql connector(C++) 定时器 高性能服务开发之定时器 使用epoll+时间堆实现高性能定时器 高性能服务器编程中的定时器 网络编程中最小堆实现的定时器 一个高效的定时器分析及设计 以最小堆、红黑树、时间轮三种方式实现定时器 游戏后台之高效定时器-时间轮 游戏后台定时器系统设计与实现 RE- [ Linux C正则](http://blog.csdn.net/wangran51/article/details/9131267)dbg调试 传课调试 一篇很好的GDB 教程 CGDB Manual 0.7.0 GDB中文手册 知识体系熟悉linux系统 Linux基础命令及shell脚本 系统监控 网络监控 数据库维护掌握要求熟悉linux系统 了解所有的命令,熟练掌握常用的命令 熟悉shell脚本的编写 熟悉系统网络的监控 熟悉数据库的维护","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"nginx","slug":"运维/nginx","date":"2020-04-12T12:51:33.891Z","updated":"2020-04-12T12:16:39.968Z","comments":true,"path":"posts/5729df21.html","link":"","permalink":"https://jinzt.github.io/posts/5729df21.html","excerpt":"","text":"安装niginxsudo apt-get install nginx windows安装下载 官网地址 使用winsw将nginx配置成服务,下载WinSW.NET4.exe 下载地址 https://github.com/kohsuke/winsw/releases 将 WinSW.NET4.exe 放到跟nginx.exe 同一个目录,并创建一个 WinSW.NET4.xml 配置文件,内容如下 1234567891011<service> <id>nginx</id> <name>nginx</name> <description>nginx</description> <executable>D:\\Install\\nginx-1.15.8\\nginx.exe</executable> <logpath>D:\\Install\\nginx-1.15.8\\logs</logpath> <logmode>roll</logmode> <depend></depend> <startargument></startargument> <stopargument>stop</stopargument></service> 安装服务 1WinSW.NET4.exe install 安装完成后后在服务里查看到该服务 nginx,点击启动服务,至此服务安装完成 卸载服务命令 1nginxservice.exe uninstall 或者使用 sc delete 服务名称 此时执行 nginx -s reload 命令会提示权限不足,我们借助 pstools 来完成配置热加载. 下载 pstools 地址,将 PSToolszip 解压到 C:\\PSTools,并添加到环境变量. 执行以下命令热加载配,建议添加到 批处理 1"c:\\pstools\\psexec.exe" -s D:\\Install\\nginx-1.15.8\\nginx.exe -p D:\\Install\\nginx-1.15.8 -s reload linux安装泛型域名资源1234567891011121314151617181920212223# 泛域名解析实现二级域名多域名# 亲朋h5游戏 资源 # html 建立目录 qpworldcup qpzdxb 放世界杯 战斗细胞资源# 域名 qpworldcup.vk51.com qpzdxb.vk51.com 解析到主机 server { listen 80; server_name ~^(?<subdomain>.+).vk51.com$; #access_log /data/wwwlogs/zzstudio.net_nginx.log combined; index index.html index.htm index.php; root /www/wwwroot/vk51.com/$subdomain/; #location ~ .php$ { # fastcgi_pass unix:/dev/shm/php-cgi.sock; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # include fastcgi_params; #} location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ { expires 30d; } location ~ .*\\.(js|css)?$ { expires 7d; }} 反向代理Http123456789101112# hall server server端口负载均衡upstream hall_server_for_server { server 127.0.0.1:8011 weight=1; server 127.0.0.1:8012 weight=1; }server { listen 8010; server_name zdxbhall.qianz.com h5f4byhall.qianz.com; location / { proxy_pass http://hall_server_for_server; }} 反向代理tcp123456789101112131415# tcp 反向代理stream { # 反向代理老框架tcp网关 upstream gatesocket { hash $remote_addr consistent; # $binary_remote_addr; server 172.12.10.103:19999 weight=5 max_fails=3 fail_timeout=30s; } server { listen 19999;#监听端口 proxy_connect_timeout 10s; proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。 proxy_pass gatesocket; }} 反向代理websocket123456789101112131415161718192021# 简单负载均衡upstream socket.kevin.com { #hash $remote_addr consistent; server 127.0.0.1:20001; server 127.0.0.1:20002;}# websocket 反向代理server { listen 20000; #server_name test.gamesvr.com; location / { proxy_pass http://socket.kevin.com/; proxy_set_header Host $host:$server_port; # 添加下面三行支持websocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }} 真实ip透传SSL准备证书openssl自签证书免费阿里云证书 登录您的Nginx服务器,在Nginx安装目录(默认Nginx安装目录为/usr/local/nginx/conf)下创建cert目录,并将下载的证书文件和密钥文件拷贝到cert目录中。 按照下文中注释内容修改nginx.conf文件: 1234567891011121314151617# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。server { listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。 server_name localhost; #将localhost修改为您证书绑定的域名,例如:www.example.com。 root html; index index.html index.htm; ssl_certificate cert/domain name.pem; #将domain name.pem替换成您证书的文件名。 ssl_certificate_key cert/domain name.key; #将domain name.key替换成您证书的密钥文件名。 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。 ssl_prefer_server_ciphers on; location / { root html; #站点目录。 index index.html index.htm; }} 可选: 设置HTTP请求自动跳转HTTPS。在需要跳转的HTTP站点下添加以下rewrite语句,实现HTTP访问自动跳转到HTTPS页面。 12345678server { listen 80; server_name localhost; #将localhost修改为您证书绑定的域名,例如:www.example.com。 rewrite ^(.*)$ https://$host$1 permanent; #将所有http请求通过rewrite重定向到https。 location / { index index.html index.htm; }} 保存nginx.conf文件后退出。执行以下命令重启Nginx服务器。nginx -s stopnginx -s start 可视化配置日志 利用GoAccess分析Nginx访问日志","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"收集","slug":"运维/linux收集","date":"2020-04-12T12:51:33.889Z","updated":"2020-04-12T12:18:30.987Z","comments":true,"path":"posts/f9385b7.html","link":"","permalink":"https://jinzt.github.io/posts/f9385b7.html","excerpt":"","text":"","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"docker","slug":"运维/frp","date":"2020-04-12T12:51:33.888Z","updated":"2020-04-12T12:16:39.968Z","comments":true,"path":"posts/f255ffad.html","link":"","permalink":"https://jinzt.github.io/posts/f255ffad.html","excerpt":"","text":"frpcentos7配置frpc开机自启复制frpc启动命令及配置文件到系统相应目录 1234cp frpc /usr/local/bin/frpcmkdir /etc/frpccp frpc.ini /etc/frpc/frpc.inichmod 777 /etc/frpc/frpc.ini 新建:vim /lib/systemd/system/frpc.service,输入: 1234567891011[Unit]Description=frpc serviceAfter=network.target syslog.targetWants=network.target[Service]Type=simpleExecStart=/usr/local/bin/frpc -c /etc/frpc/frpc.ini[Install]WantedBy=multi-user.target 开机自启动依次执行以下命令: 123systemctl enable frpcsystemctl start frpcsystemctl status frpc 如果要重启应用,可以这样,systemctl restart frpc如果要停止应用,可以输入,systemctl stop frpc如果要查看应用的日志,可以输入,systemctl status frpc","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"docker","slug":"运维/docker","date":"2020-04-12T12:51:33.886Z","updated":"2020-04-12T12:16:39.968Z","comments":true,"path":"posts/5729df21.html","link":"","permalink":"https://jinzt.github.io/posts/5729df21.html","excerpt":"","text":"docker教程 Docker菜鸟教程 win7安装docker参考 完整记录在 windows7 下使用 docker 的过程 DOCKER windows安装 win7安装docker0.安装前先卸载 并删除 C:\\Program Files\\Docker Toolbox C:\\Users\\Administrator.docker 目录0. 安装git并将git添加到环境变量 在下载地址下载docker,并安装 直接去 github上下载 https://github.com/boot2docker/boot2docker/releases 下载 boot2docker.iso,将boot2docker.iso拷贝至C:\\Users\\用户名.docker\\machine\\cache目录下 进入安装目录 C:\\Program Files\\Docker Toolbox ,双击打开start.sh文件 初始化成功后会有docker对应的machine ip,记下它 使用ssh进行docker操作,machine ip,端口22,用户名及密码:docker/tcuser 使用ftp工具FileZilla进行文件上传,新建站点docker,端口不填,协议选择SFTP,用户名及密码:docker/tcuser docker 配置镜像加速 打开桌面 Kitematic (Alpha),选择左下角的 Docker Cli 依次输入下面1234docker-machine ssh default sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=https://4rx2re3v.mirror.aliyuncs.com |g" /var/lib/boot2docker/profileexitdocker-machine restart default 如果 1docker-machine env default docker 配置独立ip网络连接 Npcap Loopback Adapter 修改ipv4即可VirtualBox 选择default 设置 网络,选择桥接网卡 Npcap Loopback Adapter docker code-serverdocker go编译环境docker go运行环境docker gitlabdocker redisdocker mysqldocker mongonbdocker centos7docker安装ubuntu镜像 下载ubuntu14.04镜像 使用ftp工具FileZilla上传ubuntu-14.04-x86_64.tar.gz到根目录 ssh连接docker,ls即可看到ubuntu-14.04-x86_64.tar.gz 使用命令镜像:cat ubuntu-14.04-x86_64.tar.gz |docker import - ubuntu:14.04 查看镜像: docker images 运行镜像: docker run -it ubuntu:14.04 /bin/bash docker commit方式保存镜像 运行镜像: docker run -it ubuntu:14.04 /bin/bash 查询容器id:docker ps 创建镜像:docker commit 3507d25681e8 ubuntu:14.04.01 docker主机(win7)与容器文件夹共享 打开Oracle VM VirtualBox,添加共享文件夹 docker_shared,勾选固定挂载和固定分配 打开Docker terminal,然后进入虚拟机 在mnt目录下创建一个共享映射路径:cd /mnt && sudo mkdir docker_shared 挂载共享目录:sudo mount -t vboxsf docker_shared /mnt/docker_shared/ 基于已有镜像创建新镜像时带上挂载信息:-v /mnt/docker_shared:/mnt/shared 命令:docker run -it -v /mnt/docker_shared:/mnt/shared ubuntu:14.04 /bin/bash docker删除none容器docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm docker images|grep none|awk '{print $3 }'|xargs docker rmidocker自带的端口映射功能创建容器时可以选择docker自带的端口映射功能能够跨网络实现172.17.0.11与192.168.233.129的通信。参考命令如下,docker的其他使用方法这里不再赘述 docker run -it -p 3306:3306 -p 8001:8001 -p 8006:8006 -v /mnt/docker_shared:/mnt/shared ubuntu:14.04 /bin/bashdocker安装 CentOS常用命令停止所有容器:docker stop $(docker ps -a -q) 删除全部容器:docker rm $(docker ps -aq) 停用并删除容器:docker stop $(docker ps -q) & docker rm $(docker ps -aq) 保存镜像到一个tar包:docker save image_name > /home/imagename.tar 加载一个tar包格式的镜像:docker load < /home/imagename.tar其它 Docker镜像上传到阿里云 数据共享https://www.cnblogs.com/xiangsikai/p/9938670.htmlhttps://my.oschina.net/665544/blog/1933032https://www.imooc.com/article/43803","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"cmd","slug":"运维/Command","date":"2020-04-12T12:51:33.884Z","updated":"2020-04-12T12:16:39.968Z","comments":true,"path":"posts/2f5c1cc0.html","link":"","permalink":"https://jinzt.github.io/posts/2f5c1cc0.html","excerpt":"","text":"基本命令1. 帮助---help ls --help help pwd 2. 清屏---clear 3. 打印当前路径---pwd 4. 改变路径---cd cd / -- 根目录 cd .. -- 上级目录 cd . -- 当前目录 cd ~ -- 用户主目录 cd /etc -- 移动到指定目录 5. 显示内容---ls ls -- 显示目录下的内容 ls -a -- 显示全部的内容包括隐藏文件 ls -l -- 详细形式显示文件(读写权限,用户,时间等) d rwx r-x r-x 4 user nobody 1024 Feb 22 0920 a.txt 1 2 3 4 5 6 7 8 9 10 1:文件类型;目录("d");普通文件("-");链接文件("|") 2:文件拥有者对该文件的访问权限:r:度 w:写 x:执行 -:无相应权限 3:同组者对该文件的访问权限 4:其他人对该文件的访问权限 5:文件的硬链接数(参见"ln"命令) 6:文件的拥有者 7:文件的属组 8:文件大小(单位:byte) 9:文件的最后一次修改时间 10:文件名 r 读权限 w 写权限,对目录来说,可生成文件与子目录或删除文件与子目录 x 执行权限,对目录来说,可查找该目录下内容 - 没有权限 如 -rw-r--r-- 拥有者 同组人 其它人 其中拥有者-生成文件时登录的人,权限最高,u表示 同组人-系统管理员分配的同组的一个或几个人,g表示 其它人-除拥有者,同组人外的人,o表示 所有人-包括拥有者、同组人及其它人,a表示 6. 修改权限---chomod <1> 符号模式,总结起来符号模式可以总结为下面的这个表达式: chmod u/g/o/a=/+/-r/w/x filename 其中,中间的这部分的字母代表 u ---所有者 g ---同组用户 o ---其他用户 a ---所有用户 + ---增加权限 - ---减去权限 = ---最终权限 r ---读取权限 w ---写入权限 x ---执行权限 例如 chmod g+w a.txt chomod +x a.out -- 给予a.out可执行权限 <2> 在绝对模式下: 相对应的文件或者目录的权限有三位数字表示从左向右, 第一位是代表所有者的 第二位是代表同组其它用户的权限, 第三位是其它用户的权限。 而每个数字都是1,2,4三位数字组成的和,可以是0,1,2,3,4,5,6,7 1 --- 执行权限 2 --- 写入权限 4 --- 读取权限 例如 chmod 664 a.txt 7. 文件创建命令---touch 命令:touch filename touch a.txt touch a.txt -- 文件已存在会修改时间 8. 创建目录命令---mkdir mkdir dir_test mkdir dir_test -- 无法创建 目录已存在 mkdir -p dir_test/dir01/dir02 -- 如果需要一次建立多层目录,需要使用-p选项 9. 拷贝命令---cp cp a.txt dir_test/ cp -rf dir_test dir_test02 10. 删除命令---rm和rmdir rm a.txt rm -rf dir_test02 mkdir dir_test03 -- 删除目录 rmdir dir_test03 -- 删除空目录 11. 移动命令---mv mv a.txt b.txt mv dir_test02 dir_test03 12. 文件查看命令--- cat more head tail cat a.txt more a.txt --- 分屏查看内容,回车查看下一行,空格看下一屏,q退出 head -5 a.txt --查看文件的开头5行 tail -5 a.txt --查看文件的最后5行 13. 12.显示文本或字符串变量echo echo hello echo "hello world!" > myfile -- 输出到文件 13. 查看文本内容---cat cat a.txt 14. 压缩命令---tar tar zcf dir_test03.tar dir_test03 tar zxvf dir_test03.tar 15. 系统时间命令---date date -- 查看时间 sudo date -s "2016-08-12 13:30:30" -- 修改系统时间 16. 内容查找命令---grep 16. whereis 17. locate locate 16. find mkdir -p test/file touch test/file hellocpp.txt find test/ -name hellocpp.txt -- 在test目录下查找全名为hellocpp.txt文件 find test/ -name "*cpp*" -- 查找文件名中含有字符串cpp的文件 find test/ -name "hello*" -- 查找文件名中开头是字符串hello的文件 find test/ -amin -10 -- 查找在test中最后10分钟访问的文件 find test/ -mmin -5 -- 查找在test中最后5分钟修改过的文件 也可使用混合查找方式查找文件 此命令更多内容请百度 whereis和locate都是通过数据库找出,whereis数据库大概一周更新一次 locate大概一天更新一次,find是在硬盘遍历查找,效率低,建议使用whereis和locate查找不到时使用find查找 17. whereis 16. 测算命令(程序)的执行时间---time time ./a.out time ps aux 在程序或命令运行结束后,最后输出了三个时间,分别是 user:用户cpu时间,命令在用户态中执行的时间总和 system:系统cpu时间,命令在核心态中执行的时间总和 real:实际时间,从命令行开始执行到运行终止的消逝时间 cpu时间 = 用户cpu时间+系统cpu时间 实际时间 > cpu时间 17. 后台运行命令---nohup nohup ./a.out > myout.file2>&1 & -- 后台执行 打印输出到myout.file文件 nohup ./a.out > myout.file2>&1 & -- 后台执行 打印输出到myout.file文件并在屏幕上显示 18. telnet 19. 端口命令---netstat netstat -apn -- 查看所有的进程和端口使用情况 netstat -apn | grep skynet -- 查看skynet进程使用端口情况 netstat -apn | grep 2016 -- 查看使用2016端口的情况 21. lsof -i:2016 --查看端口属于哪个程序 20. 查看进程---ps ps -A --列出所有进程 ps -w --显示加宽可以显示较多的资讯 ps -au --显示较详细的资讯 ps -aux --显示所有包含其他使用者的行程 ps -aux | grep pid ps -aux | grep skynet 21. 杀掉指定进程---kill 也可以用来发送信号 kill pid -- 默认6级杀死进程,发送SIGTERM信号给进程 kill -9 pid -- pid进程id 强制杀掉进程 其它 ps killall grep 22. 切换用户---su whoami --- 查看当前用户名 su root whoami exit 23. 修改密码---passwd passwd 22. 创建连接---ln touch a.txt;echo hello > a.txt cat a.txt ln a.txt b.txt -- 创建硬链接 ln -s a.txt c.txt -- 创建软连接 硬链接本质上是磁盘上文件数据的另一个访问路径 软连接里面只保存了目标文件的位置 删掉目标a.txt时,不影响硬链接b.txt,但软连接失去了访问磁盘数据的通路 rm a.txt cat b.txt cat c.txt -- 提示没有那个文件或目录","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"code-server","slug":"运维/code-server","date":"2020-04-12T12:51:33.883Z","updated":"2020-04-12T12:18:57.413Z","comments":true,"path":"posts/5e1c4c56.html","link":"","permalink":"https://jinzt.github.io/posts/5e1c4c56.html","excerpt":"","text":"code-server二进制安装去 https://github.com/cdr/code-server/releases 找到下载对应版本 wget https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gztar -zxvf code-server2.1692-vsc1.39.2-linux-x86_64.tar.gzmv code-server2.1692-vsc1.39.2-linux-x86_64 code-servercd code-server vim start.sh 12345#!/usr/bin/bashchmod +x code-serverexport PASSWORD=123456rm -rf server.lognohup ./code-server --auth password --port 8080 > server.log 2>&1 由于在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 1chmod +x /etc/rc.d/rc.local 赋予脚本可执行权限假设/root/script/start_code-server.sh是你的脚本路径,给予执行权限 1chmod +x /root/script/start_code-server.sh 打开 vim /etc/rc.d/rc.local 文件,在末尾增加如下内容 1/root/script/start_code-server.sh centos7默认关闭了rc.local文件的执行权限,所以需要手动开启:chmod u+x /etc/rc.d/rc.local 创建一个启动脚本vim start.sh 123456#!/usr/bin/bashchmod +x code-serverexport PASSWORD=123456rm -rf server.lognohup ./code-server --auth password --port 8080 > server.log 2>&1 创建一个关闭脚本vim stop.sh 123#!/usr/bin/bashps -aux | grep "\\.\\/code-server" | grep -v grep | awk -F' ' '{print $2}' | xargs -r kill -9 通过 ip:8080 进行访问,密码使用环境变量配置的 123456 断开 ssh 连接,那么 code-server 就不可以再使用了,借助 tmux来优化yum install tmux 123456789101112# 启用一个名为code-server的会话tmux new -s code-server# 在tmux中启动code-serversh start.sh# 断开tmux会话,下次还可以接着用# 或者使用快捷键Ctrl+b + d,三次按键就可以断开当前会话,这里我们只能使用快捷键tmux detach(这里只能使用快捷键 Ctrl+b +d)# 重新进入code-server会话,有两种方式tmux a # 默认进入第一个会话tmux a -t code-server # 进入到名称为code-server的会话# 查看会话列表tmux ls 安装golang开发环境安装golang sudo vim /etc/profile 12345678export PATH=$PATH:/usr/local/go/binexport GOROOT=/opt/goexport GOPATH=/home/root/goexport GOPROXY=https://goproxy.ioexport GOARCH=amd64export GOOS=linuxexport GOTOOLS=$GOROOT/pkg/toolexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin source /etc/profile go get github.com/mdempsky/gocode 插件离线安装VSCode扩展商店网页版:https://marketplace.visualstudio.com/vscode 里面下载离线插件搜索扩展,进入到详情页之后,选择右下角的Download Extension下载离线包。 之后在扩展界面选择Install from VSIX,选择路径安装。","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"centos7","slug":"运维/CentOS-7","date":"2020-04-12T12:51:33.881Z","updated":"2020-04-12T12:16:39.968Z","comments":true,"path":"posts/4270ea2f.html","link":"","permalink":"https://jinzt.github.io/posts/4270ea2f.html","excerpt":"","text":"CentOS-7 安装和使用centos下载安装CentOS-7 去 官网 下载 安装ifconfig系统默认 没有安装 ifconfig 命令。 运行 yum install ifconfig 提示No package ifconfig available通过运行 yum search ifconfig 提示我们: 安装ifconfig 包 只需要安装 net-tools.x86_64 即可执行 yum install net-tools.x86_64 安装vimyum install vim 配置,编辑vim配置文件 vim /etc/vimrc 末尾添加以下几行,设置缩进长度、退格缩回长度,一行最大字符数、显示行号、自动缩进 set shiftwidth=4 set softtabstop=4 set textwidth=200 set nu set autoindent安装OpenSSH服12345678910111213141516171819202122232425261.安装OpenSSH服务(CentOS系统默认安装了openssh) yum install openssh-server -y2.配置OpenSSH服务(默认的配置已可以正常工作)OpenSSH的主配置文件:/etc/ssh/sshd_config常见的配置选项:Port=22 设置SSH的端口号是22(默认端口号为22)Protocol 2 启用SSH版本2协议ListenAddress 192.168.0.222 设置服务监听的地址DenyUsers user1 user2 foo 拒绝访问的用户(用空格隔开)AllowUsers root osmond vivek 允许访问的用户(用空格隔开)PermitRootLogin no 禁止root用户登陆PermitEmptyPasswords no 用户登陆需要密码认证PasswordAuthentication yes 启用口令认证方式123456789101112131415163.开机自启chkconfig sshd on4.重启OpenSSH服务 service sshd restart5.客户端通过ssh远程连接服务器 ssh username@hostname(hostIP) 1如:ssh [email protected] 配置国内yum源12345678910111、备份(针对所有CentOS可用,备份文件在当前路径下)mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/下载阿里云源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo或者网易云源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo3、之后运行yum makecache生成缓存yum makecache4、更新yum -y update 修改root密码[root@localhost ~]# passwdChanging password for user root.New password:Retype new password:passwd: all authentication tokens updated successfully. 增加用户(docker)并添加权限adduser docker passwd docker通过ssh服务使用终端访问安装openssh server yum install ssh 启动ssh服务 service sshd start 设置开机运行: chkconfig sshd onC++环境配置安装c++开发环境 yum install gcc gcc-c++ make gdb automake autoconf ncurses-devel yum install libtool rpm-build redhat-rpm-config yum-utils -y 升级安装gcc 8 1234567891011121314151617第一步:安装scl源:yum install centos-release-scl scl-utils-build第二步: 列出scl可用源yum list all --enablerepo='centos-sclo-rh'yum list all --enablerepo='centos-sclo-rh' | grep "devtoolset-" 第三步: 安装8版本的gcc、gcc-c++、gdb工具链(toolchian):yum install -y devtoolset-8-toolchain第四步: 开启gcc8scl enable devtoolset-8 bash最后:查看结果gcc --version 安装cgdb 12345678yum install readline-develyum install readline yum install flex autoconf automake texinfo help2mancurl -R -O http://cgdb.me/files/cgdb-0.7.1.tar.gztar zxvf cgdb-0.7.1.tar.gzcd cgdb-0.7.1./configure --prefix=/usr/localmake && make install 安装cmake 12345678wget https://cmake.org/files/v3.16/cmake-3.16.0.tar.gztar -xzvf cmake-3.16.0.tar.gzcd cmake-3.16.0./configure./bootstrapgmakemake && make installcmake --version 安装protobuf 12345678910111213yum install autoconf libtool automake curl命令安装yum install protobuf-compiler编译安装wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gztar zxf protobuf-2.5.0.tar.gz cd protobuf-2.5.0./configure --prefix=/opt/local/protobuf-2.5.0makemake installln -s /opt/local/protobuf-2.5.0/bin/protoc /usr/bin/protocprotoc -I=. --cpp_out=. msg.proto 安装libevent 1sudo apt-get install libevent-dev 编译安装 OpenSSL 123456789prefix 是安装目录,openssldir 是配置文件目录,另外建议安装两次,shared 作用是生成动态连接库。wget ftp://ftp.openssl.org/source/openssl-1.0.2g.tar.gztar -zxf openssl-1.0.2g.tar.gzcd openssl-1.0.2g/./config --prefix=/usr/local --openssldir=/usr/local/sslmake && make install./config shared --prefix=/usr/local --openssldir=/usr/local/sslmake cleanmake && make install 安装lua1234567891011121314lua安装依赖breadline环境yum install readline-devel安装lua详见[LUA官网](http://www.lua.org/download.html)curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gztar zxf lua-5.3.5.tar.gzcd lua-5.3.5make linux && make install删除cent7默认lua5.1,并进行链接cd /usr/binrm -rf lua luacln -s /usr/local/bin/lua /usr/bin/lualn -s /usr/local/bin/luac /usr/bin/luaclua -v 升级pythoncentos7默认安装了python2.7.5,我们将它升级到2.7最后一个版本2.7.16 1234567891011121314wget http://python.org/ftp/python/2.7.16/Python-2.7.16.tgz tar -zxvf Python-2.7.16.tgzcd Python-2.7.16#./configure #make all #make install #make clean #make distclean #usr/local/bin/python2.7 -V #mv /usr/bin/python /usr/bin/python2.6.6#ln -s /usr/local/bin/python2.7 /usr/bin/python#python -V #vi /usr/bin/yum 将文件头部的#!/usr/bin/python改成#!/usr/bin/python2.6.6 安装golangyum install golang vim-golang 修改gopath 1234567891011创建 gowork 目录mkdir /root/code/gowork -pvim /etc/profile 添加export GOPATH=/root/code/goworkexport PATH=$PATH:$GOPATH/bin保存后执行source使其生效:source /etc/profile之后执行`go env`来检查环境变量是否配置成功 安装git可以直接使用命令yum install git进行安装,不过git版本比较低,这里使用源码进行安装 1234567891011121314151617181920212223安装需求# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel# yum install gcc perl-ExtUtils-MakeMaker# yum remove git下载git2.22.0并将git添加到环境变量中# cd /usr/src# wget https://www.kernel.org/pub/software/scm/git/git-2.22.0.tar.gz# tar xzf git-2.22.0.tar.gz安装git并添加到环境变量中# cd git-2.22.0# make prefix=/usr/local/git all# make prefix=/usr/local/git install# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc# source /etc/bashrc查看版本号# git --versiongit version 2.22.0 通过源安装当然, 最后的最后, 如果你已经安装过旧版的 git, 需要先卸载才行yum remove git 添加 IUS 源yum install -y https://centos7.iuscommunity.org/ius-release.rpm IUS 源的软件名称一般会加上版本号和 u 字母 查看 git2u 版本yum info git2u # 会发现比较新, 但不是最最新, 不过会比 yum 默认源要新很多 安装 git2uyum install -y git2u 安装完成后, 再查看下版本咯[root@icentos ~]# git versiongit version 2.16.5 安装svnyum install subversion subversion-toolswindow与centos共享访问window通过samba共享centos目录centos挂载window共享目录centos配置ftp服务器12345678910111213141516171819202122232425安装ftpyum install vsftpd -y service vsftpd startchkconfigchkconfig vsftpd on建一个测试文件夹mkdir /var/ftp/test试一下 ftp://ip,一个只能下载的FTP站就好了。增加ftp用户密码12345678useradd ftpuser -s /sbin/nologinpasswd ftpuser ftp123修改ftp配置文件cp /etccp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_back vim /etc/vsftpd/vsftpd.conf开启一下项write_enable=YESascii_upload_enable=YES ascii_download_enable=YES ftpd_banner=Welcome to blah FTP servicechroot_local_user=YES重启ftp服务service vsftpd restart在window上输入ftp://ip访问,输入用户名及密码 ftpuser/12345678即可看到/home/ftpuser/目录 mysql环境搭建123456789101112131415161718首先必须添加mysql社区repo通过输入命令sudo rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm安装mysqlyum install -y mysql-server mysql mysql-devel libmysqlclient-dev 启动服务service mysqld start设置root密码/usr/bin/mysqladmin -u root password '12345678'设置mysql开机启动chkconfig mysqld on配置mysql允许远程访问mysql -u root -p执行以下命令开启远程访问限制 grant all privileges on *.* to 'root'@'%' identified by '12345678' with grant option;flush privileges; exit;重启mysqlservice mysqld restart xshell通过ssh与服务器传输文件使用yum install lrzsz命令进行安装,rz命令上传 sz命令下载 安装iptables防火墙1234567891011121314151617181920安装yum install iptables-services设置开机自启动systemctl enable iptables.serviceservice iptables start #启动服务service iptables stop #停止服务service iptables restart #重启服务关闭SELINUX vim /etc/selinux/config #注释以下配置 SELINUX=enforcing SELINUXTYPE=targeted #增加以下配置 SELINUX=disabled #使配置立即生效 setenforce 0 安装nginx123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 1、安装prce(重定向支持)和openssl(https支持,如果不需要https可以不安装。) yum -y install pcre* yum -y install openssl* 2、下载nginx 1.9.9 wget http://nginx.org/download/nginx-1.9.9.tar.gz 3、解压编译安装 tar -zxvf nginx-1.9.9.tar.gz cd nginx-1.9.9 ./configure make && make install 编译完成后会发生成了/usr/local/nginx/目录 4.启动nginx /usr/local/nginx/sbin/nginx 重启 /usr/local/nginx/sbin/nginx -s reopen 关闭 /usr/local/nginx/sbin/nginx -s stop 重新加载配置 /usr/local/nginx/sbin/nginx -s reload 5.验证nginx是否启动成功 执行curl http://localhost 出现下面信息表示启动成功 6.检查 ps -ef |grep nginx netstat -antup |grep 80 7、开放80端口 /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /etc/rc.d/init.d/iptables save service iptables restart 9.配置web 主配置文件/usr/local/nginx/conf/nginx.conf 修改默认web路径(http://www.5yun.org/6634.html) vim /usr/local/nginx/conf/nginx.conf 修改localtion / root 为 /var/www 重启nginx /usr/local/nginx/sbin/nginx -s reopen 在/var/www下放至web服务器./configure --prefix=/usr/local/nginx-1.9.9 \\--with-http_ssl_module --with-http_spdy_module \\--with-http_stub_status_module --with-pcre如果没有error信息,就可以执行下边的安装了:makemake install4、开启nginx进程/usr/local/nginx-1.8.0/sbin/nginx重启或关闭进程:/usr/local/nginx-1.8.0/sbin/nginx -s reload/usr/local/nginx-1.8.0/sbin/nginx -s stop5、关闭防火墙,或者添加防火墙规则就可以测试了。service iptables stop或者编辑配置文件:vi /etc/sysconfig/iptables添加这样一条开放80端口的规则后保存:-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT重启服务即可:service iptables restartok,,可以浏览器访问了。Welcome to nginx! redis安装** yum安装redis** 参考教程 CentOS 7 yum 安装redis(更简单) 123456789101112131415161718192021222324252627282930313233下载fedora的epel仓库yum install epel-release安装redisyum install redis使用下面的命令操作redis # 启动redis service redis start # 停止redis service redis stop # 查看redis运行状态 service redis status # 查看redis进程 ps -ef | grep redis开机自启动chkconfig redis on进入redis服务 # 进入本机redis redis-cli # 列出所有key keys *防火墙开放相应端口 # 开启6379 /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT # 开启6380 /sbin/iptables -I INPUT -p tcp --dport 6380 -j ACCEPT # 保存 /etc/rc.d/init.d/iptables save # centos 7下执行 service iptables save 编译安装Redis centos6安装redis-2.8.19.tar.gz 12345678910111213141516171819202122232425262728293031323334然后再按照下面的方式执行InstallationDownload, extract and compile Redis with:$ wget http://download.redis.io/releases/redis-3.2.6.tar.gz$ tar xzf redis-3.2.6.tar.gz$ cd redis-3.2.6$ make && make install$ cd deps/hiredis$ make && make installThe binaries that are now compiled are available in the src directory. Run Redis with:$ src/redis-serverYou can interact with Redis using the built-in client:$ src/redis-cliredis> set foo barOKredis> get foo"bar"修改 /etc/ld.so.conf 文件,增加 /usr/local/lib执行 /sbin/ldconfig1、linux下如何安装hiredis1)下载地址 https://github.com/redis/hiredis2)编译和安装解压后的文件夹执行 make;make install;启动服务器redis-server启动客户端redis-cli配置redis 后台 centos安装redis+三种启动方式(http://blog.csdn.net/zc474235918/article/details/50974483) 安装tinyxml# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/tinyxml-devel-2.6.1-1.el6.x86_64.rpm # rpm -ivh tinyxml-devel-2.6.1-1.el6.x86_64.rpm 编译静态库 wget https://nchc.dl.sourceforge.net/project/tinyxml/tinyxml/2.6.2/tinyxml_2_6_2.zip unzip tinyxml_2_6_2.zip -d tinyxml 修改Makefile [plain] view plain copy #OUTPUT := xmltest OUTPUT := libtinyxml.a ${OUTPUT}: ${OBJS} # ${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS} ${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS} #xmltest.o: tinyxml.h tinystr.h 编译安装 make && install手把手教你搭建自己的shadowsocks1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768Shadowsocks-go一键安装脚本本脚本适用环境:系统支持:CentOS,Debian,Ubuntu内存要求:≥64M日期:2018 年 03 月 15 日关于本脚本:一键安装 Go 版的 shadowsocks 最新版本 1.2.1。与 Python 版不同的是,其客户端程序能使用多个服务端配置,本脚本安装的是服务端程序。友情提示:如果你有问题,请先参考这篇《Shadowsocks Troubleshooting》后再问。默认配置:服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成)密码:自己设定(如不设定,默认为 teddysun.com)加密方式:自己设定(如不设定,默认为 aes-256-cfb)Shadowsocks for Windows 客户端下载:https://github.com/shadowsocks/shadowsocks-windows/releases使用方法:使用root用户登录,运行以下命令:wget --no-check-certificate -O shadowsocks-go.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-go.shchmod +x shadowsocks-go.sh./shadowsocks-go.sh 2>&1 | tee shadowsocks-go.log安装完成后,脚本提示如下:Congratulations, Shadowsocks-go server install completed!Your Server IP :your_server_ipYour Server Port :your_server_portYour Password :your_passwordYour Encryption Method:your_encryption_methodWelcome to visit:https://teddysun.com/392.htmlEnjoy it!卸载方法:使用 root 用户登录,运行以下命令:./shadowsocks-go.sh uninstall其他事项:客户端配置的参考链接:https://teddysun.com/339.html安装完成后即已后台启动 Shadowsocks-go ,运行:/etc/init.d/shadowsocks status可以查看 Shadowsocks-go 进程是否已经启动。本脚本安装完成后,已将 shadowsocks-go 加入开机自启动。使用命令:启动:/etc/init.d/shadowsocks start停止:/etc/init.d/shadowsocks stop重启:/etc/init.d/shadowsocks restart状态:/etc/init.d/shadowsocks status多用户多端口配置文件示例:配置文件路径:/etc/shadowsocks/config.json{ "port_password":{ "8989":"password0", "9001":"password1", "9002":"password2", "9003":"password3", "9004":"password4" }, "method":"your_encryption_method", "timeout":600}官方版本的示例 ,详见这里。 设定固定IP虚拟机网络适配模式设为:桥接模式+复制物理网络连接状态 $sudo cp /etc/network/interfaces /etc/network/interfaces_back $sudo vim /etc/network/interfaces 配置内容为 auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.0.111 netmask 255.255.255.0 gateway 192.168.0.1 重启网络使之生效 $sudo /etc/init.d/networking restart 这时候就能ping到局域网中的电脑了。但是上不了Internet,是因为没有设置DNS的原因。DNS信息保存在/etc/resolv.conf中,一旦更改,立即生效。 $sudo vim /etc/resolvconf/resolv.conf.d/head 配置内容为 nameserver 192.168.2.43 nameserver 192.168.2.6 或者直接在/etc/network/interfaces 添加 dns-nameservers 192.168.2.43 dns-nameservers 192.168.2.6 重启生效 $sudo reboot -h now 查看ip信息 ifconfig 查看路由相关信息: route -n 命令设定ip ifconfig eth1 192.168.1.10 netmask 255.255.255.0 相关问题 [CentOS]如何解决gcc版本冲突? CentOS6.5升级手动安装GCC4.8.2 linux下安装或升级GCC4.8,以支持C++11标准 相关 Centos 6.4 python 2.6 升级到 2.7 用CentOS 7打造合适的科研环境 ssh工具 xshell centos7升级内核教程:https://www.jianshu.com/p/fdf6bb6c5b9cgcc升级1wget https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz 相关问题 如何在 SSH 下远程使用 IDE 编译和调试? vim相关教程 25个Vim教程、视频和资源 Linux上vi(vim)编辑器使用教程 vim配置及插件安装管理(超级详细) Ubuntu下vim插件的在线安装 vim addon manager vim安装YouCompleteMe 插件 vim智能补全插件YouCompleteMe新手完全攻略 手把手教你把Vim改装成一个IDE编程环境(图文) 文件换行符问题如test.sh提示换行符问题 vim test.sh 命令模式下输入以下内容,表示使用unix换行符,set ff=dos表示使用dos换行符 set ff=unix wq在Linux中查看所有正在运行的进程[在Linux中查看所有正在运行的进程](http://blog.csdn.net/cnmilan/article/details/34104713)端口占用sudo netstat -tulnp | grep ':80' kill -9 PID压缩解压缩解压 tar zxvf 文件名.tar.gz 压缩 tar zcvf 文件名.tar.gz 目标名其它 在新版 Win10 中启用 Linux Bash 环境 手把手教你:如何让 Windows 恋上 Linux bash centos6、ubuntu 14.04安装ShadowSocks 搭建自己专属的vpn——Centos搭建vpn的几种办法 CentOS 7 开放3306端口访问 在自己vps ubuntu上安装v2ray输入下面命令进行一键安装 1bash <(curl -L -s https://install.direct/go.sh) 安装完成后我们来编辑一下配置文件 1vim /etc/v2ray/config.json 记下来inbounds里面的port 28072id 1656d469-bc80-48d4-a0e3-01243cf7d046alterId 64 若需要配置Shadowscoks,请于inbounds同级增加以下配置 12345678910111213141516"inboundDetour": [ { "protocol": "shadowsocks", "port": 30001, "settings": { "method": "aes-256-cfb", "password": "v2ray", "udp": false } }],"log": { "loglevel": "warning", "access": "/var/log/v2ray/access.log", "error": "/var/log/v2ray/error.log"}, 之后可以使用 service v2ray start|stop|status|reload|restart|force-reload 控制 V2Ray 的运行","categories":[{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"}],"tags":[{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"}]},{"title":"python","slug":"编程语言/python/python","date":"2020-04-12T12:51:33.876Z","updated":"2020-04-12T09:41:54.498Z","comments":true,"path":"posts/a4d4b8b8.html","link":"","permalink":"https://jinzt.github.io/posts/a4d4b8b8.html","excerpt":"","text":"首页基本教程 python官网 w3c教程 Tornado概览 Tornado模板 易百教程 python学习与分享平台 视频教程其它 从0开始Tornado建站 tornado的一些相关项目搜集 WLBLOG Tornado实战项目(伪JD商城) 有没有什么很好的 Tornado 的教材或者开源项目可以做参考的? tornado应用例子(二):使用ajax(jquery)通过前台和后台交互 https://github.com/paradoxxxzero/butterflyhttps://github.com/finiteloop/blog ##d 用python为mysql实现restful接口 网络 游戏服务器端架构升级之路 python网络编程——IO多路复用之epoll python select网络编程详细介绍 ##d Python实现数据库一键导出为Excel表格 大型教程 欢迎使用 Flask 欢迎进入Flask大型教程项目! Flask 教程,第一部分:Hello,World! Flask 用户指南 python / FlaskWeb开发入门 参考 python2.7+Flask框架+新浪SAE之微信公众平台后端从无到有 python+flask+sae+微信公众号开发后记 Vue 2.0 起步(4) 轻量级后端Flask用户认证 - 微信公众号RSS 系列教程 Python - GUI Programming (Tkinter) Python GUI编程(Tkinter) 可爱的 Python:Python 中的 TK编程 pyhon之Tkinter实例化学习 Tkinter GUI 教程系列 | 莫烦Python python学习笔记14–用Tkinter实现GUI编程 文章 基于tcp交互的python聊天程序 python— 如何将自己的程序打包成exe ? 初用Python:Tkinter做的Http小工具 Tkinter 实现带界面的client与server端程序 python3带tkinter窗口的ftp服务器,并使用pyinstaller打包成exe python使用tkinter写带界面的工具 python——Tkinter图形化界面及threading多线程 基于Python多线程的TCP客户端/服务端应用示例 Python初学——窗口视窗Tkinter 为什么很多Python开发者写GUI不用Tkinter,而要选择PyQt和wxPython或其他? 浅析python select模块 实战聊天室系列教程 Python - GUI Programming (Tkinter) Python GUI编程(Tkinter) 可爱的 Python:Python 中的 TK编程 pyhon之Tkinter实例化学习 Tkinter GUI 教程系列 | 莫烦Python python学习笔记14–用Tkinter实现GUI编程 Python之GUI的最终选择(Tkinter) tkinter python(图形开发界面) MVC架构模式在Tkinter中的运用 python socket + tkinter实现网络聊天室 文章 基于tcp交互的python聊天程序 python— 如何将自己的程序打包成exe ? 初用Python:Tkinter做的Http小工具 Tkinter 实现带界面的client与server端程序 python3带tkinter窗口的ftp服务器,并使用pyinstaller打包成exe python使用tkinter写带界面的工具 python——Tkinter图形化界面及threading多线程 基于Python多线程的TCP客户端/服务端应用示例 Python初学——窗口视窗Tkinter 为什么很多Python开发者写GUI不用Tkinter,而要选择PyQt和wxPython或其他? 浅析python select模块 实战聊天室sd python tornado websocket 多聊天室(返回消息给部分连接者) tornado之TCPServer性能测试 Tornado解析 游戏服务器端架构升级之路 python网络编程——IO多路复用之epoll python select网络编程详细介绍 python 爬取极客学院视频 Python3爬取某教育平台题库保存为Word文档 参考123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778#!/usr/bin/python#-*-encodeing:utf-8-*-import tornado.webimport tornado.ioloopimport tornado.optionsimport multiprocessingfrom tornado.options import define,optionsimport os,sysdefine(\"port\", default=9000, help=\"run on the given port\", type=int)class BaseHandler(tornado.web.RequestHandler): def get_current_user(self): return self.get_secure_cookie('user') def get_template_path(self): return os.path.join(os.path.dirname(__file__),'templates')class MainHandler(BaseHandler): @tornado.web.asynchronous @tornado.web.authenticated def get(self): name=tornado.escape.xhtml_escape(self.current_user) self.write('Hello'+self.current_user) self.finish()class LoginHandler(BaseHandler): def lower(self,string): return string.lower() def get(self): self.write('''<html> <head><title>MyDemo</title></head> <body> <form action='/login' method='post'> Username:<input type='text' name='username'/> Password:<input type='password' name='password'/> <input type='submit' value='Submit'/> </form> </body></html>'''), def post(self): if not self.request.headers.get('Cookie'): self.write('Please enable your Cookie option of your broswer.') return self.set_secure_cookie('user',self.get_argument('username'),expires_days=1) self.redirect('/')settings={ 'static_path':os.path.join(os.path.dirname(__file__),'static'), 'cookie_secret':'F/hsxF7kTIWGO1F6HrH78Rf4bMRe5EyFhjtReh6x+/E=', 'login_url':'/login', 'debug':True,}app=tornado.web.Application([ (r'/',MainHandler), (r'/login',LoginHandler),],**settings)if __name__ == '__main__': tornado.options.parse_command_line() def run(mid,port): print \"Process %d start\" % mid sys.stdout.flush() app.listen(port) tornado.ioloop.IOLoop.instance().start() jobs=list() for mid,port in enumerate(range(9010,9014)): p=multiprocessing.Process(target=run,args=(mid,port)) jobs.append(p) p.start() 微信公众号后台123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357## -*- coding: utf-8 -*-#coding=utf-8import osimport timeimport traceback import jsonimport urllib import urllib2import hashlibimport threadingimport tornado.httpserverimport tornado.ioloopimport tornado.webimport tornado.autoreloadfrom tornado.options import define, optionsimport xml.etree.ElementTree as ETimport configfrom wxhelper import WeixinHelper# 导入日志 并进行配置import logginglogging.basicConfig( filename = os.getcwd() + \"/web.log\", # format = \"%(levelname)-10s %(asctime)s %(filename)s %(module)s %(funcName)s %(lineno)s %(message)s\", format = \"%(levelname)-2s %(asctime)s %(filename)s %(lineno)s %(message)s\", level = logging.INFO )console = logging.StreamHandler() console.setLevel(logging.INFO) formatter = logging.Formatter('%(levelname)-2s %(filename)s line:%(lineno)-2s %(message)s') console.setFormatter(formatter) logging.getLogger('').addHandler(console) # CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET# server configdefine(\"port\", default=444, help=\"run on the given port\", type=int)define(\"debug\", default=True, help=\"set debug mode\", type=bool)SessionMap = {}class BaseHandler(tornado.web.RequestHandler): def get_current_user(self): session_id = self.get_secure_cookie('session_id') if session_id and SessionMap.has_key(session_id): data = SessionMap[session_id] if data['over_time'] < int(time.time()): del SessionMap[session_id] self.set_secure_cookie('session_id', None) return None else: return data else: return None def __create_id(self): new_id = session_id = lambda: hashlib.sha1('%s%s' % (os.urandom(16), time.time())).hexdigest() return new_id() def set_current_user(self, data): session_id = self.get_secure_cookie('session_id') if session_id is None: id = self.__create_id() self.set_secure_cookie('session_id', id) SessionMap[session_id] = data def set_default_headers(self): self.set_header('Access-Control-Allow-Origin', '*') self.set_header('Access-Control-Allow-Methods', 'POST, GET, METHODS, OPTIONS') self.set_header('Access-Control-Max-Age', 1000) self.set_header('Access-Control-Allow-Headers', '*') # self.set_header('Content-type', 'application/json')class IndexHandler(tornado.web.RequestHandler): def get(self): self.render('index.html') # self.write('welcom view xue zhan dao di!!!') # self.render('index.html',appId = appId, timestamp = timestamp, nonceStr=nonceStr, signature = signature) # self.redirect('http://113.106.164.45:8081/UpdateRes/web/?n', permanent=True) # class OtherHtmlHandler(tornado.web.RequestHandler): def get(self, page): pagename= page + '.html' path = os.path.join(self.settings['static_path'], pagename) self.render(pagename, hello=\"helo world\") def post(self, page): passclass OtherHandler(tornado.web.RequestHandler): def get(self, page, extension): pagename= page + '.' + extension path = os.path.join(self.settings['static_path'], pagename) print path if extension != 'html': with open(path) as f: self.write(f.read()) pass# 127.0.0.1/wxclass WxHandler(BaseHandler): @tornado.web.asynchronous def get(self): logging.info('-------------- WxHandler GET ------------') signature = self.get_argument(\"signature\", None) timestamp = self.get_argument(\"timestamp\", None) nonce = self.get_argument(\"nonce\", None) echostr = self.get_argument(\"echostr\", None) if not signature or not timestamp or not nonce or not echostr: self.write('access weixin failed with params') logging.warning(\"access weixin failed with params\") else: if self.application.wxhelper.check_signature(signature, timestamp, nonce): self.write(echostr) logging.info(\"access weixin success\") else: self.write('access weixin failed') logging.warning(\"access weixin failed\") self.finish() @tornado.web.asynchronous def post(self): logging.info('-------------- WxHandler POST ------------') body = self.request.body # logging.info(body) xmlData = ET.fromstring(body) msgType = xmlData.find('MsgType').text toUser = xmlData.find('ToUserName').text fromUser = xmlData.find('FromUserName').text createTime = xmlData.find('CreateTime').text if msgType == 'text': msgId= xmlData.find(\"MsgId\").text content = xmlData.find('Content').text.encode(\"utf-8\") createTime = int(time.time()) textTpl = \"\"\"<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <MsgId>%s</MsgId> </xml>\"\"\" out = textTpl % (fromUser, toUser, createTime, msgType, content, msgId) self.write(out) elif msgType == 'event': self.write('msg type is not support ' + msgType) logging.warning(\"msg type is not support \" + msgType) else: self.write('msg type is not support ' + msgType) logging.warning(\"msg type is not support \" + msgType) self.finish()# 授权登录class WxAuthLoginHandler(BaseHandler): @tornado.web.asynchronous def get(self): logging.info('-------------- WxHandler GET ------------') CODE = self.get_argument('code', None) # STATE = self.get_argument('state', None) if CODE: # 获取用户session user_data = self.get_current_user() if not user_data: result = self.application.wxhelper.get_user_access_token(CODE) if not result: self.write(json.dumps({\"errmsg\":\"request user access_token failed\"})) logging.error(\"request user access_token failed\") else: over_time = int(time.time()) + result['expires_in'] user_data = {'openid':result[\"openid\"],'access_token':result[\"access_token\"], 'over_time':over_time} # 写入cookie self.set_current_user(user_data) if user_data: # 重定向到游戏 new_game_url = config.game_url + '?openid=' + user_data[\"openid\"] + '&access_token='+user_data[\"access_token\"] new_game_url = config.game_url self.redirect(new_game_url, permanent=True) logging.info(\"WxAuthHandler redirect game url \" + new_game_url) # print '---- redirect game url ' + new_game_url return else: self.write(json.dumps({\"errmsg\":\"weixin auth failed with code is None\"})) logging.warning(\"weixin auth failed with code is None\") self.finish()# http://xzdd.qianz.com/reqsignclass ReqWxSignHandler(BaseHandler): @tornado.web.asynchronous def get(self): logging.info('-------------- ReqWxSignHandler GET ------------') jsapi_ticket = self.application.wxhelper.get_jsapi_ticket() url = config.game_url ret = self.application.wxhelper.make_signature(jsapi_ticket, url) data = json.dumps(ret) logging.debug(data) self.write(data) #self.render('index.html') self.finish() @tornado.web.asynchronous def post(self): encrypt_key = self.get_argument('encrypt_key', None) url = self.get_argument('url', None) if encrypt_key and encrypt_key == config.encrypt_key and url: logging.info('-------------- ReqWxSignHandler POST ------------') jsapi_ticket = self.application.wxhelper.get_jsapi_ticket() logging.info(\"req sign URL:\" + url) ret = self.application.wxhelper.make_signature(jsapi_ticket, url) data = json.dumps(ret) logging.info(data) logging.info(jsapi_ticket) self.write(data) else: self.write(json.dumps({\"errmsg\":\"req sign post params invalid\"})) logging.warning(\"req sign post params invalid\") self.finish()class WxShareHandler(BaseHandler): @tornado.web.asynchronous def get(self): logging.info('-------------- WxShareHandler GET ------------') jsapi_ticket = self.application.wxhelper.get_jsapi_ticket() url = \"http://xzdd.qianz.com/share\" url = \"http://127.0.0.1/share\" ret = self.application.wxhelper.make_signature(jsapi_ticket, url) self.render('share.html',appId = ret[\"appId\"], timestamp = ret[\"timestamp\"], nonceStr=ret[\"nonceStr\"], signature = ret[\"signature\"]) # self.finish()# class ReqUserTokenHandler(BaseHandler):# def get(self):# # 获取用户session# # self.set_default_headers()# logging.info(\"ReqAccessTokenHandler\")# user_session = self.get_current_user()# if not user_session:# logging.warning(\"user_session is None\")# result = {\"errcode\":10001,\"errmsg\":\"user session is None\"}# data = json.dumps(result)# self.write(data)# return # # 认证# ACCESS_TOKEN = None# OPENDID = None# auth_info = user_session.get_auth_info()# if auth_info: # data = {\"access_token\":ACCESS_TOKEN, \"openid\":OPENDID}# data = json.dumps(result) # self.write(data)# else:# result = {\"errcode\":10002,\"errmsg\":\"user has not auth\"}# data = json.dumps(result) # self.write(data)# def post(self):# self.set_default_headers()# result = {\"errcode\":10002,\"errmsg\":\"user has not auth\"}# data = json.dumps(result) # self.write(data)class RefreshWorker(threading.Thread): def __init__(self, weixin_helper): threading.Thread.__init__(self) self.weixin_helper = weixin_helper def run(self): try: while not self.weixin_helper.is_deleted: while not self.weixin_helper.is_deleted and not self.weixin_helper.refresh_access_token(): time.sleep(300) time.sleep(self.weixin_helper.expires_in - 100) except Exception, e: print Exception, ':', eclass CustomApplication(tornado.web.Application): def __init__(self, debug=False): handles = [ (r'/$', IndexHandler), (r'/wx', WxHandler), (r'/auth', WxAuthLoginHandler), # (r'/reqtoken', ReqUserTokenHandler), (r'/reqsign', ReqWxSignHandler), (r'/share', WxShareHandler), (r'/(.+?)\\.html', OtherHtmlHandler), (r'/(.+?)\\.(.+)', OtherHandler), ] settings = { 'static_path': os.path.join(os.path.dirname(__file__), 'templates'), 'template_path': os.path.join(os.path.dirname(__file__), 'templates'), # 'login_url': '/login.html', 'cookie_secret': \"61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o\", 'xsrf_cookies': False, 'debug':debug } super(CustomApplication, self).__init__(handles, **settings) def refresh_token(self): logging.info('----------- timer refresh_token -----------') self.wxhelper.refresh_access_token() self.wxhelper.refresh_jsapi_ticket() now_time = round(time.time()) for k, v in SessionMap.items(): if v['overtime'] < now_time: print 'clean session', k del SessionMap[k] passdef main(): tornado.options.parse_command_line() # 实例化一个httpserver对象 application = CustomApplication(debug=options.debug) application.wxhelper = WeixinHelper(config.appid, config.secret, config.token) http_server = tornado.httpserver.HTTPServer(application) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().add_timeout(1, application.refresh_token) # 启动时执行一次 tornado.ioloop.PeriodicCallback(application.refresh_token,3600*1000).start() # 定期 2小时执行一次 loop = tornado.ioloop.IOLoop.instance() tornado.autoreload.start(loop) logging.info(\"web server start at port \" + str(options.port)) loop.start() if __name__ == '__main__': main()# taskkill /f /t /im python.exe sd python+flask+sae+微信公众号开发后记 细数Python Flask微信公众号开发中遇到的那些坑 零基础 20 分钟搭建 SAE 微信个人号后台 python2.7+Flask框架+新浪SAE之微信公众平台后端从无到有 项目-gxgk-wechat-server wechat-admin 第三方App接入微信登录 微信三方登录、分享、支付集成 微信授权登录、分享、支付等核心内容和支付宝支付 # 深度学习应用开发TensorFlow实践 # [TensorFlow]http://www.tensorfly.cn/中文社区](http://www.tensorfly.cn/) ## 强化学习入门简单实例 DQN 用TensorFlow构建你的第一个游戏AI入门教程 中国大学mooc 深度学习应用开发-TensorFlow实践 人工智能:模型与算法 人工智能实践:Tensorflow笔记 视频 Python制作数据分析工具 机器学习-实现简单神经网络 初识机器学习-理论篇 Tensorflow 搭建自己的神经网络 深度学习之神经网络入门最佳路径 视频 基于Python玩转人工智能最火框架 TensorFlow应用实践 深度学习与TensorFlow 2入门实战","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"python","slug":"python","permalink":"https://jinzt.github.io/tags/python/"}]},{"title":"编程语言/golang/知识体系","slug":"编程语言/golang/知识体系","date":"2020-04-12T12:51:33.873Z","updated":"2020-04-11T17:51:33.103Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"go知识体系go 基础go 调试go testgo 文档go 插件go与配置中心 Apllo apllo go Uber jaeger–一个基于Go的分布式追踪系统 Uber jaeger–一个基于Go的分布式追踪系统 go web开发 gingo 微服务kratosgo 监控 Prometheus Prometheus笔记(二)监控go项目实时给grafana展示 深入理解 Prometheus(GO SDK 及 Grafana 基本面板) 使用Prometheus和Grafana监控golang服务 Grafana全面瓦解 grafana - 监控信息可视化工具 go etcd 服务注册与发现 go语言基于etcd的服务注册与发现 Golang etcd服务注册与发现 go gopher-lua 嵌入脚本 当 Go 遇上了 Lua go goaccess 日志分析 GoAccess go gitlabgo dockergo redisgo rabbitmqgo ELKgo go-admin go-admin 参考 Go语言超详细学习知识体系","categories":[],"tags":[]},{"title":"编程语言/golang/环境搭建","slug":"编程语言/golang/环境搭建","date":"2020-04-12T12:51:33.871Z","updated":"2020-04-11T17:51:33.103Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"vscode 开发环境搭建## 安装gocode 打开命令提示符(以管理员身份打开),输入: 1go get -u -v github.com/nsf/gocode 2)安装godef 1go get -u -v github.com/rogpeppe/godef 3)安装golint 12345678复制代码# 创建 $GOPATH/src/golang.org/xcd $GOPATH/src/golang.org/xgit clone https://github.com/golang/tools.gitgit clone https://github.com/golang/lint.git# 完成以上步骤后,执行go get golang.org/x/lint/golint 4)安装go-find-references 1go get -u -v github.com/lukehoban/go-find-references 5)安装go-outline 1go get -u -v github.com/lukehoban/go-outline 6)安装goreturns 1go get -u -v sourcegraph.com/sqs/goreturns 7)安装gorename 12go get -u -v golang.org/x/tools/cmd/gorename提示:如果还提示报错,因为前面已经git clone 下来了,可以执行执行"go install golang.org/x/tools/cmd/gorename"; 8)安装gopkgs 1go get -u -v github.com/tpng/gopkgs 9)安装go-symbols 1go get -u -v github.com/newhook/go-symbols 调试 123cd golang.org/x/git clone https://github.com/golang/sys.gitgo get -u github.com/go-delve/delve/cmd/dlv 参考 vscode调试golang环境搭建及配置","categories":[],"tags":[]},{"title":"编程语言/golang/环境","slug":"编程语言/golang/环境","date":"2020-04-12T12:51:33.870Z","updated":"2020-04-11T17:51:33.102Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"源码安装gohttps://golang.google.cn/dl/ 文档使用godoc工具能生成web格式文档命令使用godoc -http=:6060然后在http://localhost:6060/pkg/git.huoys.com/qp/cells/访问到项目文档http://godoc.ml/ https://www.youbbs.org/t/2849 godoc 注释规范https://www.colabug.com/4353266.html 版本号go test","categories":[],"tags":[]},{"title":"编程语言/golang/收集","slug":"编程语言/golang/收集","date":"2020-04-12T12:51:33.868Z","updated":"2020-04-12T09:43:47.328Z","comments":true,"path":"posts/24b6fe22.html","link":"","permalink":"https://jinzt.github.io/posts/24b6fe22.html","excerpt":"","text":"## Go mod 使用 golang内置包管理工具go mod简明教程 将 dep 更换为 go mod 准备使用go mod需要1.11以后的版本才能使用,并且需要配置GO111MODULE环境变量GO111MODULE=on(可设置三个值,分别是auto, on, off) 配置环境变量新建 用户变量 变量名:GO111MODULE 变量值:on ##进入仓库根目录go mod init mod命令 go help mod 查看mod命令的帮助 go mod init 初始化模块,目录下生成go.mod go mod tidy 根据go.mod文件来处理依赖关系 go list -m all 显示依赖文件 go mod download <path@version> 下载依赖(path是包的路径,version是包的版本) go mod vendor 复制所有依赖到模块下的vendor目录 go mod graph 输出模块所需的依赖表 go mod verify 验证模块的完整性 orm 库 Golang xorm工具,根据数据库自动生成 go 代码 Go 语言,开源服务端代码自动生成 框架 - EasyGoServer 【go】根据数据库自动生成相应结构体代码 生成mysql每一个表golang的CRUD生产代码 写了一个 MySQL 数据表和查询的 go 代码生成器 文档注释规范参考 go标准命令详解0.5 godoc GoDoc的使用 Golang Mysql笔记(二)— CURD基础 go数据同步(sync与atomic包) fatih/pool go连接池 《Go 同步和并发设计模式》培训会后整理 Golang之chan/goroutine(转) tyrchen/chatroom Golang类似Erlang OTP的实现 【GO语言】棋牌游戏服务器 dbldqt/landlord 纯go实现的分布式im即时通讯系统 golang制作一个斗地主游戏服务器[10]:房间、桌子、玩家 2019/9/4 23:21:02https://my.oschina.net/mickelfeng/blog/3013119 2019/9/4 23:27:03https://github.com/gansidui/chatserver?files=1 2019/9/4 23:45:09https://www.ctolib.com/mip/fananchong-go-xserver.html 2019/9/4 23:49:40https://www.ctolib.com/mip/connsvr.html 2019/9/4 23:53:38https://blog.csdn.net/RA681t58CJxsgCkJ31/article/details/84986162 0:01:49https://www.jianshu.com/p/64e777b87c96 0:03:01https://www.codercto.com/a/52418.html 0:16:20https://blog.csdn.net/RA681t58CJxsgCkJ31/article/details/84948665 0:21:09https://blog.csdn.net/shangguan_1234/article/details/79584856 0:38:38https://github.com/dwg255/landlord 8:52:20https://coding.net/u/anywherecreate/p/px_game_server/git 9:05:15https://github.com/Golangltd/codeclass 9:09:52https://github.com/Golangltd/codeclass 9:12:24https://www.zhihu.com/question/35385236/answer/62654548 https://github.com/shuimuliang/qnmahjongserver https://github.com/gochenzl/chess https://www.jianshu.com/p/546773568592 2019/9/5 9:12:24https://www.zhihu.com/question/35385236/answer/62654548 8:33:10https://github.com/tux21b/ChessBuddy?files=1 8:51:38https://blog.csdn.net/shangguan_1234/article/details/79584856 9:01:34https://blog.csdn.net/hnxxwyq/article/details/12995083 9:12:28https://github.com/3zheng/railgun/blob/master/README.md https://studygolang.com/topics/2167 2019/9/5 0:38:38https://github.com/dwg255/landlord 2019/9/5 8:52:20https://coding.net/u/anywherecreate/p/px_game_server/git 2019/9/5 9:05:15https://github.com/Golangltd/codeclass 2019/9/5 9:09:52https://github.com/Golangltd/codeclass 2019/9/5 9:12:24https://www.zhihu.com/question/35385236/answer/62654548 2019/9/6 8:33:10https://github.com/tux21b/ChessBuddy?files=1 2019/9/6 8:51:38https://blog.csdn.net/shangguan_1234/article/details/79584856 2019/9/6 9:01:34https://blog.csdn.net/hnxxwyq/article/details/12995083 2019/9/6 9:12:28https://github.com/3zheng/railgun/blob/master/README.md 2019/9/6 9:14:15https://studygolang.com/topics/2167 2019/9/7 15:41:29https://cloud.tencent.com/developer/article/1487549 2019/9/8 1:17:55https://www.jianshu.com/p/f20cd2304aea 2019/9/8 2:01:10https://segmentfault.com/a/1190000006744213?utm_medium=referral&utm_source=tuicool 2019/9/8 2:29:03https://github.com/9b9387/zero?files=1 2019/9/8 2:33:51https://blog.csdn.net/fwhezfwhez/article/details/89487425 2019/9/8 3:46:17https://github.com/fwhezfwhez/tcpx?files=1 2019/9/8 4:02:38https://www.cnblogs.com/tohxyblog/p/8974763.html 2019/9/8 4:05:27https://www.cnblogs.com/tohxyblog/p/8974763.html 2019/9/8 4:10:05https://www.xuebuyuan.com/1289326.html 2019/9/8 4:11:43https://my.oschina.net/u/1859679/blog/842513 2019/9/8 4:16:12http://m.ishare.iask.sina.com.cn/f/32P6HS6NWpC.html 2019/9/8 4:21:35https://blog.csdn.net/chenjiayi_yun/article/details/23291731 2019/9/8 4:28:04http://open.biligame.com/wiki/sdk_server_doc/ 2019/9/8 4:32:22https://go.ctolib.com/magiclvzs-antnet.html 2019/9/8 5:17:10https://blog.csdn.net/diagnoa_wleng/article/details/81608795 2019/9/8 5:27:22https://itbilu.com/nodejs/npm/EknY6k0FX.html 2019/9/8 5:32:06https://itbilu.com/nodejs/npm/EknY6k0FX.html 2019/9/8 5:42:12https://www.it610.com/article/4672602.htm 2019/9/8 5:45:17https://my.oschina.net/nextzeus/blog/1204620 2019/9/9 2:36:37https://blog.csdn.net/micl200110041/article/details/82013032 2019/9/9 2:37:21https://hxzqlh.com/2018/09/12/go-rate-limit/ 2019/9/9 2:37:58https://cloud.tencent.com/developer/article/1477080 2019/9/9 2:38:23https://studygolang.com/articles/15890 2019/9/9 2:43:15https://m.baidu.com/ala/c/www.ctolib.com/mip/yangwenmai-ratelimit.html 2019/9/9 2:45:09https://blog.csdn.net/zl1zl2zl3/article/details/84631824 2019/9/9 2:45:43https://m.baidu.com/from=1086k/s?pn=10&usm=1&word=go%20mysql%E7%86%94%E6%96%AD%20%E9%87%8D%E8%AF%95&sa=np&rsv_pq=11803037333493205139&rsv_t=3ea7JsYxVbYW7lu%252FE6dxTZvVi5EKj8sHCcLXcEzp9siuPt8wtz8yy6OiKZY&rqid=11803037333493205139 2019/9/9 2:46:04https://www.lbbniu.com/6240.html 2019/9/9 12:33:03https://blog.csdn.net/weixin_33841503/article/details/91447175 2019/9/11 22:06:49https://github.com/Hadopire/ws2tcp 2019/9/11 23:01:45https://github.com/sarimoly/gameserver-1 2019/9/11 23:09:13https://github.com/dyzdyz010/GameServer/blob/master/console/console.go 2019/9/11 23:15:18https://github.com/davyxu/cellmesh 2019/9/12 0:27:01https://study.163.com/course/courseMain.htm?courseId=1005164022&_trace_c_p_k2_=427bab11114345e99a681f020e4fe044 2019/9/12 0:30:32https://study.163.com/course/courseMain.htm?courseId=1006521005&_trace_c_p_k2_=020813f66bfc440e9afd27cb2929b5a8 2019/9/12 0:31:12https://study.163.com/course/introduction/1209318815.htm 2019/9/12 0:33:03https://study.163.com/course/introduction/1004720008.htm?share=1&shareId=1018712305 2019/9/12 0:37:46http://www.eimhe.com/thread-146949-1-1.html 2019/9/13 1:55:28https://studygolang.com/articles/17405 2019/9/13 2:02:46https://blog.csdn.net/axuan_k/article/details/93363778 2019/9/13 2:03:45https://blog.csdn.net/matchvs/article/details/80230159 2019/9/13 2:12:12https://gameinstitute.qq.com/community/detail/128992 2019/9/13 2:20:51https://github.com/simonidf 2019/9/13 2:39:00https://github.com/BaiPingg/TankGameServer 9:27:17https://github.com/TheAlgorithms 9:27:17https://github.com/jinzhu/gorm 9:27:17https://github.com/sirupsen/logrus 9:27:17https://github.com/unknwon/the-way-to-go_ZH_CN 9:27:18https://github.com/unknwon/go-study-index 9:27:18https://www.ctolib.com/go/docs/ 9:27:18https://github.com/mmcgrana/gobyexample 9:27:18https://github.com/yudai/gotty 9:27:18https://www.ctolib.com/SolarLune-resolv.html 9:27:18https://github.com/ffhelicopter/Go42 9:27:19https://github.com/xcxlegend/tank2d.io 9:27:19https://github.com/EngoEngine/engo 9:27:19https://www.ctolib.com/go/ 9:27:19https://www.ctolib.com/go/ 9:27:19https://www.ctolib.com/senghoo-golang-design-pattern.html 9:27:19https://www.ctolib.com/chai2010-advanced-go-programming-book.html 9:27:20https://www.ctolib.com/go-astar.html 9:27:21https://www.ctolib.com/Humpheh-goboy.html 9:27:21https://www.ctolib.com/AppsComTr-Spaceship.html 9:27:21https://www.ctolib.com/dwg255-invest.html 9:27:21https://www.ctolib.com/sniperHW-sanguo.html 9:27:21https://www.ctolib.com/GoogleCloudPlatform-open-match.html 9:27:21https://github.com/keyunq/ytguess 9:27:21https://www.ctolib.com/lonnng-nano.html 9:27:22https://www.ctolib.com/kcp-go.html 9:27:22https://www.ctolib.com/magicsea-ga_server.html 9:27:22https://www.ctolib.com/kcptun.html 9:27:22https://www.ctolib.com/ankur-anand-simple-go-rpc.html 9:27:22https://www.ctolib.com/Unknwon-the-way-to-go_ZH_CN.html 9:27:22https://www.ctolib.com/quii-learn-go-with-tests.html 9:27:23https://github.com/chanxuehong/wechat 9:27:23https://github.com/silenceper/wechat 9:27:23https://github.com/guidao/gopay 9:27:23https://github.com/193Eric/go-wechat 9:27:23https://github.com/milkbobo/gopay 9:27:23https://github.com/gochenzl/chess 9:27:23https://github.com/medivhzhan/weapp [thinking] 基于 golang interface 特性衍生的插件化处理思维 golang如何实现插件化编程 Golang:Golang生成动态库及调用 Golang笔记-Plugin初探 go 静态库 动态库插件中定义的 struct 无法暴露出来,可以让主程序和插件程序import公共的 package 来解决私有方法、变量不会被暴露出来 golang插件plugin从使用到放弃 vladimirvivien/go-plugin-examplecampoy/golang-pluginsnatefinch/piedullgiulio/pingowendigo/go-bind-pluginchain33开发随记chain33 官方插件系统potix/plugger 基于插件的服务器框架 插件工程独立建库问题 go mod 解决vscode中golang插件依赖安装失败问题 Go 语言构建高并发分布式系统实践","categories":[],"tags":[]},{"title":"golang","slug":"编程语言/golang/basic","date":"2020-04-12T12:51:33.867Z","updated":"2020-04-11T16:30:31.514Z","comments":true,"path":"posts/af1c25a3.html","link":"","permalink":"https://jinzt.github.io/posts/af1c25a3.html","excerpt":"","text":"书籍教程 Go 菜鸟教程 Go入门指南 Go语言博客实践 Go语言圣经 Go Web 编程 视频教程 跟无闻学Go语言:Go Web基础视频教程 Go慕课 web框架 beego gin iris revel 游戏服务器框架 lonng/nano bobohume/gonet Cyinx/einx leaf mqant xingo goworld funny/link topfreegames/pitaya davyxu/cellmesh Cyinx/einx matchvs/gameServer-go FenrirLi/game-server–MooreFSM youngtrips/gohive xtaci/gonet bobohume/gonet owenliang/go-push xiaonanln/goworld sydnash/lotou仿skynet lonng/nano lonng/nanoserver zllangct/RockGO lonng/starx k4s/tea lib gorilla/websocket gorilla/mux gorilla/sessions faiface/pixel gobwas/ws 图形界面开发 mattn/go-gtk gotk3/gotk3 Go语言图形界面开发:Go版GTK 优秀web项目 wechat owenliang/go-push owenliang/go-websocket olahol/melody knadh/niltalk nordicdyno/go-pubsub 教程 基于Go实现Web聊天室(3种方式) html5+go+websocket简单实例代码 使用 Go 语言和 HTML5 WebSocket 构建一个 Web 聊天室 Golang实现基于Websocket协议的H5聊天室 Go实战–golang中使用WebSocket实时聊天室(gorilla/websocket、nkovacs/go-socket.io) 程序丨网络同步和卡顿有多要命?《球球大作战》客户端优化分享 WebSocket 和 Golang 实现聊天功能 magicsea/h5game panshiqu/framework 【GO语言】棋牌游戏服务器 gochenzl/chess golang实践-异步系统的无锁 高性能Go并发 golang使用protobuf golang日志库glog解析 性能优化实战:百万级WebSockets和Go语言 json golang中struct、json、map互相转化 golang的json操作 编程规范 Go 语言编程规范 go文档工具godocapigo 游戏服务器 http://studygame.yyxtao.com/ golang不错的教程 终端 https://github.com/nsf/termbox-go/ termui gocui tview gocui-使用go语言的Console UI termbox-go xterm-color-chart snake-game doc gotetris go-tetris vixl44 termloop termloop, 在Termbox平台上,构建了基于终端的游戏引擎 斗地主 写一个模仿斗地主 landlord 教程练习 xg-wang/gobyexample 工具 cnlh/nps 游戏服务器 bobohume/gonet go actor server AsynkronIT/protoactor-go 285728047 magicsea/ga_server 基于actor的分布式游戏服务器 golang实现 ## 如何写出优雅的 Golang 代码 https://segmentfault.com/a/1190000018115849 服务器模型gate game bridge 没有中心节点 go world消息队列定义几个节点 center gate game 等等 都向中心节点注册actor 可以多节点,单节点可多服务,每个服务是一个actor,有一个master服务 例 skynet magicsea/ga_server go语言实现仿QQ聊天功能 go-websocket后台聊天室框架 Golang 实现的高并发聊天程序 Golang的聊天服务器实践(群聊,广播) golang聊天室的搭建(实现room,群聊,指定room推送)加锁版本 Go实战–golang中使用WebSocket实时聊天室 io类开房间游戏类型 GoWorld – 用Golang写一个分布式可扩展、可热更的游戏服务器 Go游戏服务器开发的一些思考(十一):IO游戏同步 golang有没有好的开源游戏框架 okpub/rhino 【Golang语言社区】前端编程- 从零开始开发一款H5小游戏(一) 重温canvas的基础用法 golang 游戏编程 golang笔记:游戏中排行榜的实现 有没有golang开发的游戏引擎? lonng/nano topfreegames/pitaya bobohume/gonet ## Go语言(golang)开源项目大全 golang游戏开发学习笔记-开发一个简单的2D游戏(基础篇) grpc-go与actor模式 golang Leaf 游戏服务器框架简介 golang-2018优秀开源框架和库 物理引擎 ByteArena/box2d oakmound/oak jakecoffman/cp SolarLune/resolv GarageEngine - Go (golang)编写的 2D游戏引擎 [] 嵌入脚本 robertkrimen/otto yuin/gopher-lua Azure/golua aarzilli/golua anko - golang编写的脚本解释器 d5/tengo Gisp 解释器 Golang 辅助开发工具 guofei/Flang 用 Go 语言实现解释器 sbinet/igo 【Interpreter】构建简单的解释器(第1部分—Go语言实现) GopherLua GopherLua基础入门 Gopher-Lua API 趟坑 GOLANG中使用LUA进行扩展 插件 golang插件化方案 epoll tidwall/evio ## 转Go后offer之路上的那些真相 百万 Go TCP 连接的思考: epoll方式减少资源占用 非常牛逼 smallnest/1m-go-tcp-server 游戏引擎 Korok2D bbuck/dragon-mud 使用了lua JoelOtter/termloop 终端游戏引擎 korok引擎开发 Korok Engine学习 gdemo 是 gcluster 游戏服务器引擎的 demo 项目 shoot游戏服务器引擎 snake 百万级别的分布式游戏服务器实时通讯 NIO 框架 基于 golang 和 redis 实现的简易队列 gmq 多房间聊天室 logan-go/roomManager bigBarrage/roomManager potato47/nhwc-server jin06/GoChat intelligentfish/room_service ablegao/simplechat knadh/niltalk DavidAFox/Chat cuongpnh/chat-websocket-go bentranter/chat khaledkucse/GO_AND_RPC_Chat","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"golang","slug":"golang","permalink":"https://jinzt.github.io/tags/golang/"}]},{"title":"汇编","slug":"编程语言/汇编","date":"2020-04-12T12:51:33.864Z","updated":"2020-04-12T09:22:29.381Z","comments":true,"path":"posts/d147e7fa.html","link":"","permalink":"https://jinzt.github.io/posts/d147e7fa.html","excerpt":"","text":"首页基本教程 《汇编语言(第2版)》郑晓薇编著配套实验 视频教程","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"汇编","slug":"汇编","permalink":"https://jinzt.github.io/tags/%E6%B1%87%E7%BC%96/"}]},{"title":"typescript","slug":"编程语言/typescript","date":"2020-04-12T12:51:33.863Z","updated":"2020-04-11T16:30:31.522Z","comments":true,"path":"posts/98b5ec51.html","link":"","permalink":"https://jinzt.github.io/posts/98b5ec51.html","excerpt":"","text":"","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"typescript","slug":"typescript","permalink":"https://jinzt.github.io/tags/typescript/"}]},{"title":"lua","slug":"编程语言/lua","date":"2020-04-12T12:51:33.861Z","updated":"2020-04-11T17:49:03.773Z","comments":true,"path":"posts/d671372b.html","link":"","permalink":"https://jinzt.github.io/posts/d671372b.html","excerpt":"","text":"首页基本教程 Lua官网http://www.lua.org/ w3c教程http://www.runoob.com/lua/lua-tutorial.html lua开发者http://www.luaer.cn/ 易百教程http://www.yiibai.com/lua/lua_basic_syntax.html lua5.1参考手册http://old.sebug.net/paper/books/lua/lua_manual.html Lua入门系列http://www.jellythink.com/archives/category/language/lua 知识体系 8种基本类型 标准库 算法与设计模式 热更 与c、c++交互 内存管理 视频教程推荐书籍 Lua程序设计(第二版) lua库与工具 libraries and tools for lua 其它 lua 2d游戏引擎http://www.love2d.org/ Lua设计模式 编写高性能的Lua代码 lua与c&c++– lua调用so动态库 LuaJIT 官网 初识Luajit lua数据交换协议– 在lua环境中使用protobuf luapb github pbc 在Quick-cocos2d-x中使用云风pbc解析Protocol Buffers 在lua环境中使用protobuf sprotoLua解析 LuaXml 简单介绍 lua解析xml总结 lua与c、c++交互 超越luabind的luaBridge 又一个lua与C++粘合层框架 UI iup 下载dll window安装lua windows 安装lua-5.3.4 Windows下编译 Lua 5.3.0 参考 lua绑定C++对象学习 常见lua tinker,tolua++,LuaPlus,luabind,luabridgeluaBridge地址 github地址 手册 dslua单元测试框架lunit doc lua单元测试框架ltest github地址 lua单元测试框架lbusted [] 简单单元测试框架实现需求 简洁 [内容包括:类型判断、错误堆栈打印、测试分析统计] 工具 Lua 开发工具开源软件 iup_mingw cloudwu/iupmingw Lua工具:Excel数据转换成Lua文件","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"lua","slug":"lua","permalink":"https://jinzt.github.io/tags/lua/"}]},{"title":"c语言","slug":"编程语言/cpp","date":"2020-04-12T12:51:33.860Z","updated":"2020-04-11T17:48:33.890Z","comments":true,"path":"posts/bcc4edaf.html","link":"","permalink":"https://jinzt.github.io/posts/bcc4edaf.html","excerpt":"","text":"首页基本教程 w3c教程http://www.runoob.com/cprogramming/c-tutorial.html C语言中文网http://c.biancheng.net/cpp/u/jiaocheng/ 视频教程 51CTOhttp://edu.51cto.com/course/course_id-358.html 慕课网http://www.imooc.com/learn/249 其它 C语言宏定义,内置宏,FILE,LINE,## 用法 d Standard C 语言标准函数库速查 首页t推荐学习 cppreference.com 基本教程 w3c教程http://www.runoob.com/cplusplus/cpp-tutorial.html C语言中文网http://c.biancheng.net/cpp/biancheng/cpp/rumen/ 易百lua教程 视频教程 51CTOhttp://edu.51cto.com/course/course_id-358.html 慕课网http://www.imooc.com/learn/249 其它 C++技术网 极力推荐经典C++库 c++博客 C++技术网电子书索引 tcmalloc jemalloc 和ptmalloc 对比 ptmalloc,tcmalloc和jemalloc内存分配策略研究 更好的内存管理-jemalloc 内存分配奥义·jemalloc 内存分配器dlmalloc 2.8.3源码浅析 从零开始学C++ 代码规范 google stytle C/C++该采用怎样的命名规则才能让自己的代码足够清晰呢? Google C++编码规范 C/C++语言编码规范 11条最全面的C/C++编码规范总结 Google 开源项目风格指南 参考 关于rand和srand函数使用的一点心得 C/C++产生随机数 C++随机数生成方法 参考 C++ 中的也能使用正则表达式 插件框架实现 C++插件架构浅谈与初步实现 轻量级C++插件框架 x3py 可以用了 C_C++:构建你自己的插件框架 C/C++:构建你自己的插件框架 自己动手写插件框架 用C++实现插件体系结构 插件框架C++ 用C++实现插件体系结构 如何写一个c++插件化系统 C++ 插件框架 Pluma Framework 基于C_的插件框架设计和实现_申启杰 构建自己的C C 插件开发框架zz 款C++开发的PL框架完整源代码 源码 C++ Plugin System Simple C++ plugin system plugin frame/service for c plus plus C++ plugin system 支持热插拔的动态库插件管理框架 基于插件的跨平台网络服务器框架 -PSS 分布式跨平台微内核插件化RPC服务框架 插件框架设计动态库加载类 插件加载配置 插件基类 插件管理类 Windows/Linux下C/C++内存泄露检测工具 C/C++的内存泄漏检测工具Valgrind memcheck的使用经历 VLD(Visual LeakDetector)内存泄露库的使用 2018/8/31 3:06:28我的手机 2018/8/31 3:06:28https://blog.csdn.net/gongdileidechouzhu/article/details/78808557 我的手机 2018/8/31 3:07:38https://blog.csdn.net/gongdileidechouzhu/article/details/7880855710:25:57我的手机 2018/9/5 10:25:57https://blog.csdn.net/Hellboy/article/details/347636?utm_source=jiancool10:30:15我的手机 2018/9/5 10:30:15https://blog.csdn.net/bao_bei/article/details/73840674 我的手机 2018/9/5 10:31:01https://blog.csdn.net/rabbit729/article/details/5629108 https://blog.csdn.net/calmreason/article/details/52447343 https://blog.csdn.net/wenzhou1219/article/details/50866467 https://wetest.qq.com/cloud/index.php/index/TMM 实体-组件-系统(ECS)实现数据驱动的游戏框架 实现 组件-实体-系统 用组件来重构你的游戏实体 阐述实体组件模式所存在的问题 entityx anax Artemis-Cpp ecst kult corgi A minimal entity-component system. EntityFu Entity/Component System for C++ EntitySystem Entity-Component-Samples Artemis-Cpp A C++11 component-entity system Entity-component-system based 3D game engine OpenEcs ## This is bill的专属博客 LZ的这个错误是典型的链接错误,#ifndef 加在头文件重是为了保证类的头文件在一个.cpp文件中被多次引用后会不会出现重复定义的问题,注意,只是防止在一个.cpp文件中被多次引用如果是C++,可以对头文件的函数定义加inline或者static表明函数是在线或者静态的,这样编译器就可以自行解决重复定义的问题。如果是C,则只能通过头文件函数定义加static来表明函数为静态,这样连接器不会报错。正确的做法应该是只在头文件中声明,而真正的定义放到源文件中,这样不管哪个源文件包含了头文件,都不会有问题,因为定义的地方只有一个,链接的时候会找到的。 调试 #if defined(WIN32) && defined (DEBUG)#define OUTLOOK(format, …) do{ char lBuffer[1024] = {0}; sprintf(lBuffer, format”\\n”, ##__VA_ARGS); OutputDebugString(lBuffer); }while(0)#else#define OUTLOOK(format, …) (0)#endif 侵入式与非侵入式接口设计 模块系统与非侵入性 分侵入式增加模块 其它 概要设计说明书 文档那些事儿 推荐书籍 从程序员到项目经理 你会写软件开发文档吗?软件开发中的文档和分类软件开发文档 DOP基本教程 什么是数据驱动编程 数据驱动编程之表驱动法 用数据驱动思想来设计游戏-读《游戏编程精粹1》 数据驱动编程 请问有基于数据驱动的游戏框架吗(不是指引擎)? 实体-组件-系统(ECS)实现数据驱动的游戏框架 创建游戏中的人类世界:数据驱动的开放世界AI框架 数据驱动设计思路——带你一天完成独立HTML5游戏 怎么理解游戏开发中的“Data-Driven Design”? 游戏程序开发的基本理念和方法 dd 什么是游戏开发的实体系统框架 Fast Entity Component System ntityX - A fast, type-safe C++ Entity-Component system java设计模式基本教程 w3chttp://www.runoob.com/design-pattern/design-pattern-tutorial.html java设计模式详解http://www.weixueyuan.net/java/shejimoshi/ java设计模式系列http://www.cricode.com/category/design/design-pattern c++设计模式基本教程 c++设计模式http://blog.csdn.net/column/details/design.html C++设计模式系列http://www.jellythink.com/archives/878 视频教程其它 工厂方法模式 架构设计:生产者/消费者模式 第1页:“生产者/消费者模式”介绍 浅谈软件需求建模 参考 函数式编程语言的「天然支持并行与并发」是不是吹牛? 函数式编程扫盲篇 C++并发实战15:函数式编程 对函数式编程简单理解 其它 从RTTI谈C++的向下转型 多态运用中,如何扩展某个子类中增加的方法 我所理解的设计模式(C++实现)——访问者模式(Visitor Pattern) 使用typeid和RTTI C++获取对象运行时类名称 面向对象vs面向数据 原来,面向对象和数据库是“冤家”! 面向对象编程的弊端是什么? 如此理解面向对象编程 名家吐槽:面向对象编程从骨子里就有问题 java设计模式基本教程 w3chttp://www.runoob.com/design-pattern/design-pattern-tutorial.html java设计模式详解http://www.weixueyuan.net/java/shejimoshi/ java设计模式系列http://www.cricode.com/category/design/design-pattern 23种设计模式创建型模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 单例模式结构型模式 适配器模式 桥接模式 组合模式 装饰器模式 外观模式 享元模式 代理模式行为型模式 责任链模式 命令模式 解释器模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 模板方法模式 访问者模式 其它模式 MVC模式 插件模式 组件模式 设计模式推荐书籍 23种设计模式(C++) 设计模式精解GoF 设计模式之禅 ## 参考 C++接口实现总结 C++中接口与实现分离的技术 PIMPL 模式的实现及应用。 C++接口与实现分离的2种方法 【C++自我精讲】基础系列六 PIMPL模式 【C++程序设计技巧】Pimpl机制 PIMPL设计模式的理解和使用 从信息隐藏的一个需求看C++接口与实现的分离 实现私有化(Pimpl) — QT常见的设计模式 C++类互相包含的问题 总结什么是接口实现分离,接口与实现分离.实现有改动时引用cpp不需要重新编译 ## cplusplus cppreference中文 c++在线手册 c++在线手册 linux man c++ linux 下安装c++ man 参考 从汇编层面深度剖析 C++ 虚函数 C/C++ 结构体字节对齐详解 cpp11 C++开发者都应该使用的10个C++11特性 C++ 11 创建和使用 unique_ptr C++ 参考手册 ## 调试Release发布版程序的Crash错误(转)","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"c语言","slug":"c语言","permalink":"https://jinzt.github.io/tags/c%E8%AF%AD%E8%A8%80/"}]},{"title":"开源游戏","slug":"游戏开发/源码分析/源码","date":"2020-04-12T12:51:33.856Z","updated":"2020-04-12T12:14:03.866Z","comments":true,"path":"posts/c11120a3.html","link":"","permalink":"https://jinzt.github.io/posts/c11120a3.html","excerpt":"","text":"首页知识体系之工具数据库理论 SQL教程 常用数据库 MySQL Redis 其它一些不错源码 cppGameFrame easyserver kernel4gameserver LuaGameEngine MyBase zengine 游戏服务器测试 [] 开源游戏 110款有趣的开源游戏和应用 开源派 Lordofpomelo游戏分析 开源中国 网易游戏服务器开发框架 Pomelo 棋牌游戏 幼麟棋牌社区版 休闲游戏 炸弹人 游戏云 leancloud tianti","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"源码分析","slug":"源码分析","permalink":"https://jinzt.github.io/tags/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/"}]},{"title":"最后一战","slug":"游戏开发/源码分析/最后一站","date":"2020-04-12T12:51:33.855Z","updated":"2020-04-12T12:14:15.361Z","comments":true,"path":"posts/8ea7e252.html","link":"","permalink":"https://jinzt.github.io/posts/8ea7e252.html","excerpt":"","text":"飙风111 最后一站源码分析 最后一战源码分析_所有文章的目录 最后一战源码分析","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"源码分析","slug":"源码分析","permalink":"https://jinzt.github.io/tags/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/"}]},{"title":"暗黑战神","slug":"游戏开发/源码分析/暗黑战神源码分析","date":"2020-04-12T12:51:33.853Z","updated":"2020-04-12T12:13:39.883Z","comments":true,"path":"posts/c11120a3.html","link":"","permalink":"https://jinzt.github.io/posts/c11120a3.html","excerpt":"","text":"消息定义在rpc_mogo.h中定义了所有消息 客户端输入帐户名/密码进行登录验证MSGID_LOGINAPP_LOGIN = 31 判断是否超过最大登录数量 判断是否被禁止登录 判断是否重复登录 是否是首次登录 是 MSGID_DBMGR_SELECT_ACCOUNT 不是 MSGID_BASEAPPMGR_CREATEBASE_FROM_NAME_ANYWHERE 客户端版本校验MSGID_LOGINAPP_CHECK = 30 logapp loginapp timerd独立的定时器服务定时器 发送心跳包给所有服务器 发送对时包给所有的服务器RPCCall 接受消息关闭定时器服务 redis工具类封装class CRedisUtil { public: CRedisUtil(); ~CRedisUtil(); public: bool Connect(const char* pszAddr, int nPort, int nDbId); void DisConnect(); void DisConnectAndBgSave(); public: int UpdateEntity(const string& strEntity, const map<string, VOBJECT*>& props, TDBID dbid); public: void RedisHashLoad(const string& strKey, string& strValue); void RedisHashSet(const string& strKey, int32_t nSeq, const string& strValue); void RedisHashDel(const string& strKey, int32_t nSeq); private: struct redisContext* m_redis; };进程间通信mailboxmailbox CMailBoxManager mailbox分类 ClientMailboc { fd; entity_type; entity_id; } EntityMailbox { server_mailbox_id; entity_type; entity_id; }服务服务类型 服务id 服务邮箱移动同步客户端请求移动 参数:方向、x坐标、y坐标 移动效验 两次移动之间距离 > (实体基本速度(毫秒精度) * 时间间隔(毫秒) * 5) 回应 更新实体上次移动时间 效验失败处理 则把客户端拉回原来的坐标点 同步坐标给客户端自己 效验成功 同步坐标给aoi范围内其他玩家客户端配置unity3d采用4.7.1版本1、删除Assets/Plugins目录下的Android目录2、修改client\\Assets\\Resources\\cfg.xml里面的路径为你的WEB服务器cfg.xml的路径 http://10.105.60.100/mogo/cfg.xml3、修改Assets\\Resources\\SystemSwitch.xml的1把里面的1改成04.代码Scripts\\GameLogic\\NoticeManager.cs修改DownloadNotice函数中通知ipC:\\Users\\Administrator\\AppData\\LocalLow\\aiyou4399 服务器配置服务环境搭建安装依赖sudo apt-get update lua依赖 编译安装lua5.3.2 项目Makefile CFLAGS添加 -D__LUA_5_3_2 宏 项目Makefile CFLAGS添加 -D LUA_COMPAT_5_2 兼容lua5.2 修改lua_base.cpp lua_cell.cpp 宏为D__LUA_5_3_2 sudo apt-get install mysql-server mysql-client libmysqlclient-dev sudo apt-get install redis-server libhiredis-dev vim /etc/redis/redis.conf bind 0.0.0.0 redis-server /etc/redis/redis.conf sudo apt-get install libtinyxml-dev sudo apt-get install uuid-dev sudo apt-get install libcrypto* sudo apt-get install libcurl4-openssl-dev sudo ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.a /usr/local/lib/libmysqlclient.a sudo ln -s /usr/lib/x86_64-linux-gnu/libhiredis.a /usr/local/lib/libhiredis.a sudo ln -s /usr/lib/x86_64-linux-gnu/libtinyxml.a /usr/local/lib/libtinyxml.a sudo ln -s /usr/lib/x86_64-linux-gnu/libtinyxml.so /usr/lib/libtinyxml.so sudo ln -s /usr/lib/x86_64-linux-gnu/libuuid.a /usr/local/lib/libuuid.a sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.a /usr/local/lib/libcrypto.a sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.a /usr/local/lib/libssl.a sudo ln -s /usr/lib/x86_64-linux-gnu/libcurl.a /usr/local/lib/libcurl.a sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread.a /usr/local/lib/libpthread.a sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread.so /usr/local/lib/libpthread.so sudo /sbin/ldconfig$wget http://www.zlib.net/zlib-1.2.11.tar.gz$tar -xvzf zlib-1.2.11.tar.gz$cd zlib-1.2.11$./configure$make$make install 安装web服务器安装Apache sudo apt-get install apache2 具体详见http://jingyan.baidu.com/article/6d704a130c8a0d28da51ca5f.html sudo vim /etc/apache2/sites-available/000-default.conf 找到"<Directory /var/www/>"的位置-->更改"/var/www/"为新的根目录就可以了。 sudo /etc/init.d/ ubuntu 环境,当apache2重启提示: - Starting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName 打开000-default.conf文件后,在default文件顶端加入: ServerName 127.0.0.1 重启apache时遇到以上问题,端口正在使用,使用sudo netstat -tulnp | grep ':80' 查看后用kill -9 PID号删除后还是不行,老会自动重启,使用 killall -9 httpd后,再查,httpd不会再自动出现,Apache乖乖的重启了,三月三放假回来可以优雅的跟熊哥交差了; 配置游戏web服务 将mogo文件夹复制到/var/www/目录下 在浏览器http://10.105.60.100/mogo/cfg.xml访问成功记配置成功 安装nginx sudo apt-get install nginx sudo /etc/init.d/nginx start 默认的虚拟主机的目录设置在了/usr/share/nginx/www数据库配置创建数据库card与collectorcentos部署sudo yum install hiredis-develyum -y install libuuid-develyum install readline-develyum install boost-develyum –skip-broken install mysql-develyum install tinyxml-devel 安装tinyxml链接问题g++: error: /usr/local/lib/libuuid.a: No such file or directory # whereis libuuid # ln -s /usr/lib64/libuuid.a /usr/local/lib/libuuid.a # ln -s /usr/lib64/libcrypto.a /usr/local/lib/libcrypto.a # ln -s /usr/lib64/libssl.a /usr/local/lib/libssl.a # ln -s /usr/lib64/libtinyxml.so /usr/local/lib/libtinyxml.so # ln -s /usr/lib64/mysql/libmysqlclient.so /usr/local/lib/libmysqlclient.so暗黑战神介绍暗黑战神是由四三九九网络股份有限公司开发,4399手机游戏网(4399游戏盒)运营的一款3D动作手机网游,将给大家带来前所未有的手机游戏体验。游戏是在引擎上,采用的是国际级的Unity 3D引擎,其画面质感、动作流畅程度都是一流的,简单的操作就能有超强的连击爽快感受。加上西方魔幻题材与日韩画风。在职业选择上也是丰富多彩的,狂战士,暗杀者,魔箭手,妖术师四大职业各具特色,任你选择。在装备选择上,除了常规的蓝装、紫装、橙装等你收集外,属性能自动成长的暗金装备更是个极大的创新常规的蓝装、紫装、橙装等你收集外,属性能自动成长的暗金装备更是个极大的创新。 暗黑战神部署 游戏部署过程","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"源码分析","slug":"源码分析","permalink":"https://jinzt.github.io/tags/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/"}]},{"title":"unity坦克","slug":"游戏开发/源码分析/unity坦克大战分析","date":"2020-04-12T12:51:33.852Z","updated":"2020-04-12T12:14:19.015Z","comments":true,"path":"posts/1e5e4d57.html","link":"","permalink":"https://jinzt.github.io/posts/1e5e4d57.html","excerpt":"","text":"网络版本房间消息room 获取房间列表 创建房间 加入房间 退出房间战斗消息battle 基本单元消息同步 坦克 位置xyz 旋转xyz 坦克炮塔(只能基于坦克y旋转) 坦克炮管 (只能基于炮塔x旋转) 同步策略 只有玩家在控制坦克时才同步 同步要有间隔(200毫秒), Time.time - lastSendInfoTime > 0.2f 射击同步 子弹被实例化时 位置xyz 旋转xyz","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"源码分析","slug":"源码分析","permalink":"https://jinzt.github.io/tags/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/"}]},{"title":"数据库","slug":"游戏开发/sql/数据库","date":"2020-04-12T12:51:33.846Z","updated":"2020-04-11T16:30:31.522Z","comments":true,"path":"posts/70a5b4e4.html","link":"","permalink":"https://jinzt.github.io/posts/70a5b4e4.html","excerpt":"","text":"首页知识体系之工具数据库理论 SQL教程 数据库设计 常用数据库 MySQL Redis 其它数据库 memcached mongodb leveldb ssdb ssdb 官网 SSDB:高性能数据库服务器 SSDB Redis替代品","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"sql","slug":"sql","permalink":"https://jinzt.github.io/tags/sql/"}]},{"title":"sql","slug":"游戏开发/sql/sql","date":"2020-04-12T12:51:33.845Z","updated":"2020-04-11T16:30:31.520Z","comments":true,"path":"posts/7b25d017.html","link":"","permalink":"https://jinzt.github.io/posts/7b25d017.html","excerpt":"","text":"基本教程 w3c教程http://www.runoob.com/sql/sql-tutorial.html 易百教程http://www.yiibai.com/sql/ 视频教程其它","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"sql","slug":"sql","permalink":"https://jinzt.github.io/tags/sql/"}]},{"title":"redis","slug":"游戏开发/sql/redis","date":"2020-04-12T12:51:33.844Z","updated":"2020-04-11T16:30:31.521Z","comments":true,"path":"posts/7b25d017.html","link":"","permalink":"https://jinzt.github.io/posts/7b25d017.html","excerpt":"","text":"基本教程 Redis官网http://www.redis.cn/ w3c Redis教程 易百Redis教程 拨云剑redis教程 超强、超详细Redis数据库入门教程 视频教程 在线分布式数据库实践 Redis运维之道 其它 基于redis分布式缓存实现 用Redis作为Mysql数据库的缓存 Redis教程 Redis mysql应用 redis + mysql应该如何架构? redis常用命令、常见错误、配置技巧等分享 Redis 存储分片之代理服务Twemproxy 测试 使用Redis之前5个必须了解的事情 一、消息队列场景简介 超强、超详细Redis数据库入门教程 基于内存,redis,mysql的高速游戏数据服务器设计架构 redis应用场景 Redis作者谈Redis应用场景 Redis的11种Web应用场景 详解 Redis 应用场景及应用实例 Redis应用场景 国内外三个不同领域巨头分享的Redis实战经验及使用场景 Redis中5种数据结构的使用场景介绍 Redis 在新浪微博中的应用 Redis在游戏服务器中的应用 游戏服务器之数据存档(应用数据引擎redis) redis集群在腾讯游戏的应用及演进 主从复制 redis的主从复制配置 redis的备份 深入剖析redis主从复制 redis主从复制延迟时间 Redis 主从复制 Redis主从复制 redis的主从复制,读写分离,主从切换 Redis主从复制 在多台服务器上简单实现Redis的数据主从复制 构建高性能数据库缓存之redis主从复制 Redis持久化 Redis持久化 Redis持久化-数据丢失及解决 Redis学习笔记9–Redis持久化 redis持久化RDB和AOF redis+mysql redis+mysql有几种用法? 如何用redis/memcache做Mysql缓存层? 用Redis作为Mysql数据库的缓存 redis作为mysql的缓存服务器(读写分离) 浅谈 Redis 与 MySQL 的耦合性以及利用管道完成 MySQL 到 Redis 的高效迁移 Redis mysql应用 数据库高可用架构(MySQL、Oracle、MongoDB、Redis) MySQL to Redis 《MySQL与Redis缓存架构》 Redis和MySQL的结合方案 redis+lua实战 c/c++(hiredis)异步调用redis 总结 在windows上安装redis并设置密码","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"redis","slug":"redis","permalink":"https://jinzt.github.io/tags/redis/"}]},{"title":"mysql","slug":"游戏开发/sql/mysql","date":"2020-04-12T12:51:33.842Z","updated":"2020-04-11T16:30:31.521Z","comments":true,"path":"posts/9520183a.html","link":"","permalink":"https://jinzt.github.io/posts/9520183a.html","excerpt":"","text":"基本教程 w3c教程http://www.runoob.com/mysql/mysql-tutorial.html 易百教程http://www.yiibai.com/mysql/ 21分钟 MySQL 入门教程http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html MySQL社区http://www.mysqlpub.com/ MySQL优化http://imysql.cn/ 视频教程 51CTOhttp://www.imooc.com/course/list?c=mysql 与MySQL的零距离接触 性能优化之MySQL优化 常用命令 mysql命令大全 ubuntu下mysql的常用命令 安装相关 Win7系统安装MySQL5.5.21图解 MySQL下载地址 UBUNTU 彻底删除 MYSQL 然后重装 MYSQL ubuntu10.10搭建mysql开发环境 其它 Win7系统安装MySQL5.5.21图解http://blog.csdn.net/longyuhome/article/details/7913375 Mysql命令大全 SQL注入攻防入门详解 SQL注入 MySQL可视化工具 Navicat for MySQL 下载 SQLyog 下载 MySQL常见问题 MySQL远程访问1130错误, 解决方法 详见 ubuntu环境 搭建中 mysql 环境搭建内容 MySQL在远程访问时非常慢的解决skip-name-resolve 并且出现Reading from net MySQL主从复制 mysql主从复制(超简单) MySQL主从复制原理以及架构 MySQL主从复制架构搭建及读写分离测试 MySQL主库已经存在的基础上搭建从库的过程 实现MySQL数据库主从热备份 mysql主从备份及原理分析 请教:如何解决mysql主从复制带来的数据延迟问题? 怎样解决MySQL数据库主从复制延迟的问题 分布式数据库 MYSQL大数据处理,分布式数据库的应用 分布式数据库如何实现? 分布式数据库技术 高效分布式数据库缓存经典解决方案 淘宝Tair分布式缓存数据库系统 总体结构 分布式数据库概述 一个分布式服务器集群架构方案 服务器集群和分布式的区别 MySQL备份 mysql—整体备份和增量备份 mySQL 增量备份方案 其它 数据库表分割技术:水平分割、垂直分割、库表散列 mysql c api简单连接池 如何创建MySQL数据库连接池(一个基于libmysql的MySQL数据库连接池示例(C/C++版)) 存储过程与函数的区别 不停止MySQL服务增加从库的两种方式 MySQL执行监控 监控mysql执行的sql语句 查看Mysql实时执行的Sql语句 跟踪监控MYSQL执行的sql语句","categories":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"}],"tags":[{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"sql","slug":"sql","permalink":"https://jinzt.github.io/tags/sql/"}]},{"title":"colyseus 游戏技能系统","slug":"游戏开发/game sys/skill sys","date":"2020-04-12T12:51:33.836Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/b2095421.html","link":"","permalink":"https://jinzt.github.io/posts/b2095421.html","excerpt":"","text":"# 一个MOBA游戏的常规技能系统 一个MMORPG的常规技能系统 code dongweiPeng/SkillSystem dx50075/SkillSystem caolaoyao/SkillEditor FireEmblemUniverse/SkillSystem_FE8 taotao111/SkillSystem ejasan0502/skill_game JerryZhou/opensc","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏系统","slug":"游戏系统","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E7%B3%BB%E7%BB%9F/"}]},{"title":"游戏开发/game sys/pengzhuang","slug":"游戏开发/game sys/pengzhuang","date":"2020-04-12T12:51:33.835Z","updated":"2020-04-11T16:30:31.498Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"## 【H5/JS】游戏常用算法-碰撞检测-包围盒检测算法(2)-矩形 AABB包围盒算法,在2D碰撞检测中的实现 实时碰撞检测算法总结 可视化GJK碰撞检测算法 “等一下,我碰!”——常见的2D碰撞检测 OBB包围盒及其碰撞检测算法(一) 码农干货系列【1】–方向包围盒(OBB)碰撞检测 基于OBB包围盒快速碰撞检测.pdf 矩形旋转碰撞,OBB方向包围盒算法实现 在2D空间中使用四叉树实现碰撞检测 碰撞检测和 sprite 动画 JavaScript实现碰撞检测(分离轴定理) 一种面向虚拟装配的基于aabb-obb混合包围盒的碰撞检测方法 基于Sphere和OBB混合的碰撞检测算法 算法与游戏之OBB碰撞算法 多边形碰撞检测 – 分离轴算法 【任意多边形碰撞检测及简单2D光照演示】(附源码及原 多边形碰撞检测,支持点,线段,圆,任意凸多边形、凹多边形的碰撞 使用四叉树管理场景内物体","categories":[],"tags":[]},{"title":"colyseus 实体组件系统","slug":"游戏开发/game sys/esc sys","date":"2020-04-12T12:51:33.833Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/ccbba629.html","link":"","permalink":"https://jinzt.github.io/posts/ccbba629.html","excerpt":"","text":"博文 详解实体组件系统ECS 实体组件系统 如何通过实体组件系统在Javascript中构建游戏 GamePlayKit的ECS“实体-组件-系统” A-Frame简明教程之实体组件系统 实现 组件-实体-系统 组件-实体-系统 游戏编程模型 根据实体组件系统分析《炸弹人》的游戏机制 实体-组件-系统(Entity-Component-System) 干货来袭丨这篇文章帮你快速了解组件-实体-系统 使用实体组件系统(ECS)开发”吃方块”游戏实例分析 code Entitas-Cpp, Entitas++是一个快速实体组件系统( vt ECS ) C++11端口 Entitas C# alecthomas/entityx redxdev/ECS qiao/ces.js nova-engine/ecs ianpaschal/aurora sz-piotr/rook-ecs itay-ecs EngoEngine/ecs zllangct/RockGO","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏系统","slug":"游戏系统","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E7%B3%BB%E7%BB%9F/"}]},{"title":"服务器框架 skynet","slug":"游戏开发/game server/框架/skynet","date":"2020-04-12T12:51:33.830Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/d7687202.html","link":"","permalink":"https://jinzt.github.io/posts/d7687202.html","excerpt":"","text":"pbc介绍pbc是lua结合protobuf方案,由云风编写pbc pbc设计理念 pbc github地址 pbc使用安装protobuf http://blog.csdn.net/xiexievv/article/details/47396725 git clone https://github.com/cloudwu/pbc cd pbc make基本教程 github地址 云风skynet wiki 云风博客 云风skynet框架研究 介绍 skynet浅析 http://www.linuxidc.com/Linux/2015-09/123610.htm 基于lua脚本语言的骰子游戏(后端) http://www.2cto.com/kf/201511/448793.html 整理 skynet简介 Skynet框架2-分离Master与Harbor some-mmorpg skynet框架 使用心得 skynet服务的本质与缺陷 一个无锁消息队列引发的血案:怎样做一个真正的程序员?(一)——起因 skynet任务调度分析 网络游戏服务器构架设计(四):云风的轨迹 给skynet增加websocket模块 总结skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,skynet主要工作是管理注册服务,并开启多线程协调服务之间的调用和通讯。skynet一般用于开发游戏服务端程序。参考 重载一个 skynet 中的 lua 服务 skynet 的 snax 框架及热更新方案 常见热更策略把修改过的lua文件重新加载一次 坑:服务有状态时,新旧版本的代码如何交接数据 必须制定策略 且每个开发者遵守 对于一个bug需修改多个乱文件 ?有协程挂起 修改后可能出现问题 仅限于紧急修改函数bug 开启一个新的服务,代替次服务 问题:新服务与旧服务通信地址不一样了 旧服务中的消息 数据是否需要转到新服务 旧服务的关闭时机不重启系统,热更整个服务skynet zhanjunxiong/RillServer cheukw/mmo","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"服务器框架 汇总","slug":"游戏开发/game server/框架/README","date":"2020-04-12T12:51:33.828Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/f8cb612e.html","link":"","permalink":"https://jinzt.github.io/posts/f8cb612e.html","excerpt":"","text":"相关开源 推荐!国外程序员整理的 C++ 资源大全 Swa-server 开源框架 超轻量级、高性能 C 日志库 EasyLogger 正式版发布 手游服务器框架Survive Trinity Core2 值得推荐的C/C++框架和库 Photon 官网 如何使用Photon引擎开发MMO大型多人在线游戏 SCUT游戏服务器引擎 官网 Scut游戏服务端免费开源引擎 github cocoachina社区 开源手机游戏服务器引擎Scut介绍(基于Mono) [] KBEngine 官网 github地址 KBEngine - 开源中国社区 什么是KBEngine 开始架设kbengine KBENGINE MMO源码(完整服务端源码+资源+完整客户端源码) KBEngine 新手入门教程 NoahFrameRyzom 官网 [开源项目]科幻背景的MMO网游Ryzom介绍 Ryzom相关的项目简介 github cuberite 官网 github cuberite — 使用C++编写的、高效的、可兼容的、开源 fflib github forgottenserver github rathena rathena H2Engine服务器引擎 H2Engine服务器引擎 github其它开源 An open source server for the MMORPG Tibia. 腾讯 libco qnode(cute node) - C + Lua + Actor Model 一个轻量级的actor模式框架 An Actor-based framework for Lua 一个Actor并发服务器框架,时钟,组播,网络库,日志系统,监视器,RPC 抢占式的基于lua5.1的类Actor模型的简单实现Cellular actor-pattern-framework C-Actors Computational Network Toolkit (CNTK) Simple C++ network server framework sim 简洁易用的C++11网络库 / 支持单机千万并发连接 / a simple C++11 network server framework handy swoole-src fastsocket HandlerSocket-Plugin-for-MySQL A plugin-framework that uses C++ and STL. x3c 腾讯开源AI开服框架组件behaviac 官网 github golang github Firefly Firefly logo分布式游戏服务器端框架 Firefly git Pomelo 官网 Pomelo:网易开源基于 Node.js 的游戏服务端框架 fastrpc 2.0 发布,高性能 C++ 服务器框架 fastrpc 2.0 发布,高性能 C++ 服务器框架 c++ actor 官网 ulua 官网 muduo 从epoll构建muduo-13 Reactor + ThreadPool 成型 RakNet RakNet","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"服务器框架 其它","slug":"游戏开发/game server/框架/other","date":"2020-04-12T12:51:33.827Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/432a9de9.html","link":"","permalink":"https://jinzt.github.io/posts/432a9de9.html","excerpt":"","text":"## 并行编程 深入理解并行编程 《C++ 并发编程》- 第1章 你好,C++的并发世界 基本教程 为什么Actor模型是高并发事务的终极解决方案? Actor模型的本质:究竟是要解决什么问题 Actor模型浅谈 ActorLite:一个轻量级Actor模型实现 关于actor模型的优缺点分析 以Akka为示例,介绍Actor模型 Actor模型 Actor模型和CSP模型的区别 akka actor模型和java thread模型各有什么优势? .NET的Actor模型:Orleans 详解Theron通过Actor模型解决C++并发编程的一种思维 actor并发模型&基于共享内存线程模型 为什么我觉得 Actor 很难用? Scala 学习笔记 《七周七并发模型》第五章Actor总结 actors角色模型系列之一 actors介绍以及akka 框架的使用入门 Actors 响应式云Actor实现:一种可进化的事件网络 视频游戏《光环4》的Actor模型设计和实现 actor模型 Actor并发模型 CAF(C++ Actor Framework)介绍 一个C++Actor模型的实现, 并包含了完整的测试 Actor的原理 Akka笔记之Actor简介 基本教程 官网 Theron, a lightweight C++ concurrency library, 源码分析 详解Theron通过Actor模型解决C++并发编程的一种思维 基本教程 协程 or 纤程 ? 为什么觉得协程是趋势? C++ 协程与网络编程 关于C10K、异步回调、协程、同步阻塞 Libtask: a Coroutine Library for C and Unix 修改libtask支持epoll处理大量并发连接 最轻量级的C协程库:Protothreads State Threads 回调终结者 ucontext-人人都可以实现的简单协程库 一种协程的 C/C++ 实现介绍 实现c协程 协程实现的基础 谈谈协程和C语言的协程 纤程 进程、线程和协程的理解 ProudNet 【ProudNet】服务器引擎之艰难困苦的开发历程 ProudNet游戏服务器引擎介绍 基本教程 libevent源码深度剖析 使用libevent进行多线程socket编程demo 对libevent+多线程服务器模型的C++封装类 高性能、高并发TCP服务器(多线程调用libevent) 基本教程 官网 github 基于libuv的TCP设计 库-libuv 和 libev的对比 lua + libuv 的坑与爽 libuv 中文编程指南 基于libuv的最精简Web服务器:tinyweb v1 v2 v3 (C语言源码) libuv中文教程 优秀源码 uvw uvpp c++11 uvpp libsourcey libuvcpp luv libuv_tcp 官网 zeromq 参考 史上最快的消息队列 —– ZMQ的学习和研究 C/C++网络编程总结与ZeroMQ ZeroMQ深度探索 异步消息队列zeromq实现服务器间高性能通信 整理 游戏程序 | Erlang 游戏开发经验总结 扯淡 erlang 的“适合”和“不适合”","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"服务器框架 noahframe","slug":"游戏开发/game server/框架/noahframe","date":"2020-04-12T12:51:33.825Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/432a9de9.html","link":"","permalink":"https://jinzt.github.io/posts/432a9de9.html","excerpt":"","text":"基本教程 官网 github地址 ArkGameFrame ArkGameFrame实战系列文章说明 ArkGameFrame ArkClient-Unity3D Node工程Plugin Net Log Kernel Config protobuf其它插件Url Mysql NoSql Actor Lua","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏开发/game server/框架/MaNGOS","slug":"游戏开发/game server/框架/MaNGOS","date":"2020-04-12T12:51:33.824Z","updated":"2020-04-11T16:30:31.489Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"","categories":[],"tags":[]},{"title":"服务器框架 KBEngine","slug":"游戏开发/game server/框架/KBEngine","date":"2020-04-12T12:51:33.822Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/ca006f02.html","link":"","permalink":"https://jinzt.github.io/posts/ca006f02.html","excerpt":"","text":"基本教程 官网 github地址 KBEngine - 开源中国社区 什么是KBEngine 开始架设kbengine KBENGINE MMO源码(完整服务端源码+资源+完整客户端源码) KBEngine 新手入门教程","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"服务器框架 go","slug":"游戏开发/game server/框架/golanggo","date":"2020-04-12T12:51:33.821Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/b86dc7eb.html","link":"","permalink":"https://jinzt.github.io/posts/b86dc7eb.html","excerpt":"","text":"基本教程 官网 介绍 Leaf —— GO编写的游戏服务器框架 整理 我的Golang全接触","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"colyseus 使用","slug":"游戏开发/game server/框架/colyseus","date":"2020-04-12T12:51:33.820Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/353574cd.html","link":"","permalink":"https://jinzt.github.io/posts/353574cd.html","excerpt":"","text":"介绍colyseus 主页 使用 colyseus 的优秀文章 io类游戏快速开发 1 io类游戏快速开发 2 帧同步 IO类游戏快速开发 3 状态同步 其它文章 colyseus.js, 用于JavaScript的多人游戏客户端 对等游戏平台的可扩展性与状态一致性的分析.pdf colyseus 作者的项目 colyseus-server colyseus.js colyseus-examples colyseus-loadtest colyseus-monitor 其它开发者 platformer-mmo bomberman-colyseus mem-server-colyseus colyseus-cluster-example colyseus-without-sync phaser-colyseus-pac multiplayer_shooter_game pong-client PongServer mem-server Yggdrasill auditory endel/tanx 多人坦克 体验","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"服务器框架","slug":"服务器框架","permalink":"https://jinzt.github.io/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%A1%86%E6%9E%B6/"},{"name":"nodejs","slug":"nodejs","permalink":"https://jinzt.github.io/tags/nodejs/"}]},{"title":"游戏开发/game server/配置中心","slug":"游戏开发/game server/配置中心","date":"2020-04-12T12:51:33.817Z","updated":"2020-04-11T17:51:33.097Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"配置中心Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 github上仓库 ctripcorp/apollo 安装使用线上灰度发布总结缺陷1.配置版本与机器版本2.同时发布多个配置文件,配置文件之间有依赖 参考 微服务架构中配置中心的选择 apollo 携程Apollo统一配置中心的搭建和使用(java)","categories":[],"tags":[]},{"title":"游戏开发/game server/自动化部署","slug":"游戏开发/game server/自动化部署","date":"2020-04-12T12:51:33.815Z","updated":"2020-04-11T17:51:33.097Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"参考 58 赶集基于 Docker 的自动化部署实践 自动化运维之Ansible服务部署详述 Ansible自动部署nginx+keepalived高可用负载均衡 ansible自动部署nginxkeepalived高可用负载均衡 CentOS 7 里使用自动化运维工具Ansible 使用Jenkins部署应用到Kubernetes 使用ansible结合keepalived高可用,nginx反向代理部署小型企业环境 使用Docker和Kubernetes构建可伸缩的微服务 将代码从Git自动部署到容器 Jenkins~通过WebDeploy实现自动部署 GitHub是如何无缝迁移到Kubernetes的? Docker部署基于Nodejs的Web应用","categories":[],"tags":[]},{"title":"游戏算法安全","slug":"游戏开发/game server/网络安全","date":"2020-04-12T12:51:33.814Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/bae7ba03.html","link":"","permalink":"https://jinzt.github.io/posts/bae7ba03.html","excerpt":"","text":"https://bbs.csdn.net/topics/391018988python游戏封包https://my.oschina.net/godareyou/blog/552724?p=https://cloud.tencent.com/developer/article/1093590https://blog.csdn.net/qq_37267015/article/details/71330600https://blog.csdn.net/a649344475/article/details/81110957https://blog.csdn.net/u012278016/article/details/80710435https://blog.csdn.net/chinassj/article/details/79678741https://ke.qq.com/course/135466https://blog.csdn.net/u012662688/article/details/54693422http://tieba.baidu.com/p/5064453197https://blog.csdn.net/u012278016/article/details/80710450","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"网络同步","slug":"游戏开发/game server/网络同步","date":"2020-04-12T12:51:33.812Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/20775bb3.html","link":"","permalink":"https://jinzt.github.io/posts/20775bb3.html","excerpt":"","text":"","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏临散收集","slug":"游戏开发/game server/版本迭代","date":"2020-04-12T12:51:33.811Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/1f3ad41b.html","link":"","permalink":"https://jinzt.github.io/posts/1f3ad41b.html","excerpt":"","text":"内网测试服 策划配表专用 一份svn配置 配置 svn:test_excel 作用 全局测试 稳定版展示 内网稳定服 配置 svn: excel 由内网测试服测试稳定后拷贝过来 作用 全局测试 稳定版展示 配置 稳定测试 全局测试 一份svn配置(由内网测试服测试功能及配置后拷贝过来) 外网正式服外网测试服 测试核心 软件测试的核心价值是什么? 设计测试用例 测试用例设计的核心 做好测试计划和测试用例工作的关键 如何对一个游戏进行设计测试用例. 游戏测试用例设计实例 游戏测试用例模板 游戏测试功能性测试用例设计以及模板 51游戏测试 测试用例以及设计测试用例的方法 游戏测试需要怎么设计测试方案? 游戏测试的测试用例要怎么样写才能翻盖全面? 详述游戏测试的三种方法 个人游戏测试总结 自动化测试正确使用定时器定点定时器任务 某一时刻执行 循环定时器任务 每隔?执行 定点定时器任务 应用 如 0点重置,0点重置后再添加下一个零点任务 活动开启与关闭,无需开启循环定时器轮询检测,只需给每个活动添加开启定时器与关闭定时器即可 循环定时器任务 每个几秒轮询 检测条件成立 优化 定时器任务排序 比较最小时间戳,一旦小与某一任务事件戳就不在进行遍历,只是插入任务有消耗,最小堆不使用 定时器参考 游戏程序 | 对抗网络延迟 手游服务器实时同步方案分享 服务器设计笔记(2)—–定时器的实现(C++) 定时器实现定时器核心就两种 计时器(每个多长时间触发一次)和定时器(定点触发) 每隔多久执行一次 定时执行一次bool Init();void ShutDown(); 消息分发处理void ProcessMsg();日志 初始化关服处理日志记录消息处理(接受分发)定时器信号简单服务器配置加载 DBRedis+MySQL 共享内存 服务器效验参数效验参数是否为空 类型是否正确数值转化 比如接收数据做 tomumber() tostring()处理 以服务器数据为准 客户端传入参数 要做服务器配置表中检测是否存在 不要相信客户端传入金币 、钻石、登材料消耗值,应该由服务器拿 配置表id去读取金币、钻石等数量 配置表兼容处理 在写代码时提前做兼容处理 如配置表 {gold=1, money=2} 策划可能后期去掉money消耗,又未通知程序 所以服务器应在读取配置表时做为空判断 为空 则停止运行 并与策划交流 并在使用时 做二者为空判断 为空默认0数值使用 老数据效验造成原因 新配置表与老数据不一致 基于新配置传递的参数在老数据中找不到或不正确处理 效验 确定老数据则log并返回客户端操作失败 配置应该分层全服配置 与服务器本身配置无关通用服务器配置 单服服务器配置 本地配置 低层级能覆盖高层级配置 参考unix conf里include conf 游戏配置 通常与客户端共享 服务器配置 服务器读取配置表时 不能以序号作为id,要单独配置id,比如第一列对于配置表的修改应遵循 id递增、不能重复增加行 以最后一个id 递增 最后插入 或其它规则、不能重复删除行 配置表中直接删除这一行,不能再此位置添加相同id的行,会导致玩家id对于数据与所配置不符合 参考 服务器数据怎样备份 服务器系统如何备份才能保证数据万无一失 数据备份的重要性数据备份的时机什么时机备份:实时?闲时 备份存储位置:原服务器上并复制备份到非服务器计算机上(避免服务器死机,硬件崩坏) 备份检测:针对备份数据应该在内部环境 测试服进行备份数据恢复测试,保证备份数据的恢复参考 游戏服务器数据缓存跟持久化中间件设计总结 游戏服务器,每秒需要处理百来次数据库的读写操作,如何设计比较好? 网络游戏服务器与数据库的关系? 核心写缓存 减少次数 持久化保证数据完整性1 游戏的数据库一般分 角色数据库和账号数据库2 账号数据库一般与平台绑定,通常情况下不会提供给你访问账号数据库的权限,而只会给你提供验证接口.3 角色数据库也不是通常意义的直接从数据库中读,通常会有个缓冲,这个缓冲会动态调整保存活跃度较高的玩家数据4 3中的缓冲通常由角色服务器来提供这样的功能 gameserver缓存 dbserver缓存 dbserver缓存 玩家数据 + 公有数据 优化 -游戏服务器数据缓存跟持久化中间件设计总结策略 dbserver 动态调整缓存活跃度较高的玩家所有数据 玩家下线后 持久化到mysql 同时定制redis缓存保留5分钟自动清理(用于 玩家掉线 重连) 尽可能不要过个服 对dbserver 请求读取及持久化 游戏里比较纠结的DB操作是:A、B两个模块同时发起对某个对象的保存或读取,这样很难保证新存的数据被旧的覆盖或者读取到得不是最新数据。 如果序列化这些操作,又失去了异步的意义。 gameserver缓存设置脏标 dbserver缓存设置脏标 gameserver定期更新脏数据到dbserver缓存 dbserver缓存定期持久化脏数据到mysql 需要实时持久化的 立即更新到dbserver缓存并持久化到数据库 可开多个线程持久化dbserver缓存到mysql 持久化 加入队列机制 可设立持久化优先级 如何保证持久化时 是完整的数据,将缓存数据拷贝进行持久化 需要其他玩家离线数据怎么办 一个逻辑上的东西拆成2个函数来完成,确实代码不美观,不易阅读。不过好在这部分逻辑较少。大部分数据在玩家上线时已经加载到GameServer内存了。少数像玩家房屋之类的just in time的数据就需要做这样的回调。不知道谁有更好的方法DB接口加载所有名字服务器启动时 调用 缓存名字列表 并同步列表 用于角色取名时去重检测bool LoadAllName(); 加载帐号下所有角色信息玩家登陆后选择角色界面数据展示(仅包括需要显示的基础数据(名字、级别、装备等))bool LoadAcctRoles(ui32 nAccountID, vector& vInfos) 创建角色 bool CreateRole(ui32 nAccountID,const string& strName, ui8 nGender, ui8 nClass, ui8 nRace, RoleInfo& info) 删除角色bool DelRole(ui32 nAccountID, ui64 guid); ## 游戏服务器的压力测试应该如何进行?自己写机器人还是 LR 等工具? 游戏服务端压力测试相关","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏运营","slug":"游戏开发/game server/游戏运营需求","date":"2020-04-12T12:51:33.810Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/b6747392.html","link":"","permalink":"https://jinzt.github.io/posts/b6747392.html","excerpt":"","text":"运营功能需求一.目标 快速关闭服务器 快速部署跟新服务器 提供运行所需的配置工作 二.功能 发任务 批量玩家系统消息 全区系统消息 发邮件 踢人 禁言 封账号 封ip 通过GM指令关闭服务器 通过GM工具自动部署服务器","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏算","slug":"游戏开发/game server/游戏编程设计模式","date":"2020-04-12T12:51:33.808Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/bf5fd41e.html","link":"","permalink":"https://jinzt.github.io/posts/bf5fd41e.html","excerpt":"","text":"## 游戏编程设计模式——Game Loop 游戏设计模式思考:“穿越火线”中的“策略模式” 游戏编程设计模式-state [浅墨] 游戏设计模式之论撤消重做回放系统的优雅实现:命令模式http://www.taidous.com/bbs/thread-43026-1-1.html","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏系统","slug":"游戏开发/game server/游戏系统","date":"2020-04-12T12:51:33.806Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/4ec1679f.html","link":"","permalink":"https://jinzt.github.io/posts/4ec1679f.html","excerpt":"","text":"基础 RPG游戏设计 MMO游戏系统设计 基础 MMORPG游戏在策划层面上如何设计一个新颖的物品背包系统? 基于mongodb, 设计游戏中的个人背包系统 基础 网络游戏物品校验系统的设计 游戏道具设计(一):道具产出条件和随机设定 游戏道具的设计-多媒体应用论文 关于动作RPG游戏的技能与道具设计 [] 运营功能需求一.目标 快速关闭服务器 快速部署跟新服务器 提供运行所需的配置工作 二.功能 发任务 批量玩家系统消息 全区系统消息 发邮件 踢人 禁言 封账号 封ip 通过GM指令关闭服务器 通过GM工具自动部署服务器 基础 网络游戏物品校验系统的设计 游戏道具设计(一):道具产出条件和随机设定 游戏道具的设计-多媒体应用论文 关于动作RPG游戏的技能与道具设计 [] 基础 MMORPG大型游戏设计与开发(服务器 游戏场景 地图和区域) 游戏程序 | 迷宫寻路系列常用算法逻辑探究 游戏研发 | 开发笔记:掉落系统模块设计思路 技术交流:横版动作游戏中角色的移动逻辑 基础 MMORPG大型游戏设计与开发(服务器 游戏场景 地图和区域) 游戏程序 | 迷宫寻路系列常用算法逻辑探究 游戏研发 | 开发笔记:掉落系统模块设计思路 技术交流:横版动作游戏中角色的移动逻辑 基础 游戏服务器登陆以及验证过程 游戏系统策划案-基本设定-01-游戏登陆设定 [] 基础 实例分析武器/道具锻造系统的设计要点 基础 副本系统设计 游戏服务端编程–场景服务器探讨 浅论游戏场景设计的概念和功能 基础 副本系统设计 游戏服务端编程–场景服务器探讨 浅论游戏场景设计的概念和功能 基础 网络游戏公会系统设计与实现 公会系统 [] 相关文章 运营菜鸟也谈游戏运营活动基础分类 浅谈网络游戏线上活动策划 教你一步一步入运营的大门:活动策划篇 活动目的促进游戏留存率,及用户消费等,最终目的是促进用户消费。 活动要素活动时间:永久、时间段(期限限制) 活动范围:什么区,什么服可以参加 活动内容:描述了活动的参与规则,达成条件,领取奖励等信息活动流程看到活动->参与活动->领取奖励看到活动方式主要有两种 游戏内部 活动界面展示、GM活动提醒等 游戏外部 游戏官网、渠道、微信等参与活动参与条件限制:时间限制(到了时间自动默认参加),玩家达成指定条件才可参与. 活动状态(时间):未开启、已开启、已结束 参与状态:未参加、已参加、已完成(已参加并领取完了活动奖励)领取奖励能否领取奖励条件 玩家参与了活动,玩家达到领取奖励的触发条件 奖励状态:不可领取(未达成领取奖励条件)、可领取、已领取活动分析活动范围分析:只要服与服之间不共享数据,那么就存在不同的服有不同的活动,比如手游IOS平台服与Android服数据不共享,通常有针对各自平台的活动,比如端游不同的区有不同的活动,甚至同一区,几个服也有不同的活动。 活动时间分析:活动按时间可分为两种,永久型,时间限制。永久型活动的特点是保留性,以数据持久化的角度考虑,玩家永久型活动的数据是需要永久保存的。时间限制性活动的特点是只能在活动时间段内才能参加,在活动开始之前或活动开始之后无法再次参加,通常为一次性活动,以数据持久化的角度考虑,在游戏结束后是可以不必保存该类型活动数据的。常见活动示例永久性活动每日活动、每周活动活动描述: 每日活动:通关A,B,C副本可获得宝石、金币、等多少 每周活动:周一完成。。。,可获得。。。 周二完成。。。可获得。。 一周累计完成。。。多少次可获得。。。。 活动分析:它们属于永久性活动,通常一直存在,只是每日或每周达成条件与奖励不同罢了,它是循环型活动,在每周运营商关服维护后只需修改培训表的条件,奖励,无需修改代码即可,重新开服后清理玩家每日活动,每周活动的达成记录领取记录,玩家可重新开始参加活动。签到型活动每天签到领取什么新手活动玩家创建角色 针对新创建角色,新手的活动,目的为了鼓励新玩家加入游戏,或老玩家玩多个角色。如新手礼包时间限制性活动开服活动运营商在新服初开之际,为了鼓励更多的玩家加入该新服,而准备的活动,活动开始时间为开服时间 ,活动结束时间为新服开服后的某一天,如开服7日在线奖励活动。节日活动在国庆期间通过副本经验200%,通关巢穴获得什么充值活动在某日到某日充值,送。。。消费活动在某日到某日在商城购买抽奖券送。。。游戏服务器活动模块实现配置表设计 活动表:活动类型+活动时间类型+活动列表(元素为活动奖励表中的id)+活动描述+开始时间+结束时间+额外数据(活动参与条件) 活动(子项)奖励表:活动id+奖励达成条件+奖励+活动描述+额外数据 定义活动基类活动基类成员:protected 活动类型 :时间类型 活动项:{id,活动类型,活动时间表,宣告id,时间长度,时间信息} 活动id 实例id(唯一性)public 活动开启时间 活动结束时间 流程123456st=>start: 项目Export e=>end: 结束 op1=>operation: 选择java下的javadoc op2=>operation: 选择要导出的工程 op3=>operation: java doc的配置设置 st->op1->op2->op3->e 数据库设计代码设计活动基类类名:ActivityBase成员:活动类型、活动实例id,活动奖励数据,活动开启时间、结束时间、活动状态、附加数据接口: 内部: 通用虚函数:活动开启、活动结束、激活活动、领取活动奖励、格式化活动数据 特殊虚函数:在线活动时间统计,邀请好友活动人数统计,副本通关统计等活动管理器类成员:活动列表接口: 非虚:加载所有活动,玩家登陆、登出玩家活动数据类: 函数:玩家活动数据加载,保存,更新,删除 外部cmd– 通用接口 玩家登陆玩家登出 激活指定类型活动(大类型)(当前默认条件是时间,也有可能是其它)激活某类型当中子活动(条件值,当前int行,需扩展)领取活动奖励– 后台活动,获取后台活动玩家信息 方法public 虚 活动开启 虚 活动结束 触发达成活动(事件影响活动奖励领取状态) 领取活动奖励 通知活动结束 获取活动类型 获取活动项 获取活动id活动管理类成员:private 活动管理单例实例 活动容器 方法public 定时器检测(活动创建与关闭) 销毁活动(活动列表删除活动) private 创建活动(tempid)public 玩家加入活动(玩家信息,活动id) 通知wordboss开启 基础 游戏编程干货:游戏技能系统全解析 技能系统设计:技能模块同步的实现 如何设计一个易扩展的游戏技能系统? mmorpg 技能同步问题? 游戏技能设计 游戏开发——战斗系统之技能设计 游戏技能设计参考 游戏技能系统全解析 MMORPG游戏服务器技能系统设计 技能和BUFF数据编辑架构 浅谈游戏中BUFF的设计要点 Buff机制及其实际运用 游戏技能、buff的代码如何架构 传奇还原案·技能和BUFF效果设计说明.pdf Buff系统设计 游戏技能系统实现 游戏程序 | 游戏服务端开发:如何精确计算MMO游戏技能攻击区域? 游戏编程干货:游戏技能系统全解析 游戏程序 | 技能系统设计:技能模块同步的实现 游戏服务端开发:如何精确计算MMO游戏技能攻击区域? MMORPG游戏服务器技能系统设计:表格字段与技能程序框架 基础 如何做到在跨服务器无锁完成交易 游戏经济系统设计问题的四个难点! 《神武》交易系统设计思路分析 手游发展论:端游之后再无交易系统? 游戏经济系统设计 [] 基础 游戏人物系统实现 基础 游戏策划学习资料之DNF聊天系统分析 【自由之城】聊天系统补充文档 游戏设计策划方案 基础 排行榜算法设计实现比较 基础 游戏任务系统设计思路 创新手机游戏《3L》开发点滴(1)——道具、物品、装备表设计 《游戏脚本的设计与开发》-(RPG部分)3.5 游戏背包和任务系统 游戏任务系统的设计要素 游戏任务结构 游戏为什么需要有任务系统? 游戏任务系统设计 游戏任务系统实现 程序开发MMORPG开发杂谈(一):任务系统设计 任务系统实现:数据结构和处理流程版 《天择》设计思路之:任务系统对于RPG网络游戏的作用 游戏策划 | 游戏任务设计(1):概念与简史 游戏任务设计方法论:Collect与Hunt任务 总结任务状态 无效 INVALID 任务已完成 COMPLETE 任务正在进行中 RUNNING 准备可以执行任务 VIABLE 任务管理容器 任务列表 基础 一个商城系统的改良设计方案 基础 游戏策划-邮件系统 3D网络游戏中邮件系统的设计与实现 [] 基础 举例阐述游戏战斗系统设计的基本规则 游戏系统开发笔记(九)——构建战斗系统 战斗系统说明文档 游戏战斗系统设计文档 大型多人在线角色扮演类网络游戏角色战斗系统的设计与实现.pdf DNF战斗系统分析文档 MMORPG战斗系统设计(1)——战斗系统概述 MMORPG战斗系统设计 一种手游中实时战斗系统的设计思路 游戏战斗设计入门:类层的划分与创新 游戏程序 | 基于战斗重演的全校验—- 塔防大师PVP反外挂设计思路分享 游戏研发 | 游戏开发之状态机的实现与优化 移动游戏战斗系统实现方式探讨 基础 网络游戏中装备相关子系统的架构设计 游戏道具设计 游戏在设计装备系统中需要考虑哪些因素? 游戏策划培训笔记之游戏道具设计 [] 基础 MMO RPG 游戏中的组队系统设计 基础 游戏系统——变装系统 基础 如何设计游戏中的成就系统? 游戏成就系统设计1 游戏策划资料-天龙八部系统设计分析 基础 宠物系统-设计文档 宠物系统 [] 基础 宠物系统-设计文档 宠物系统 [] 基础 游戏策划新人作业之一:签到系统作业 一份系统策划案,请大神评点 游戏签到系统详解 签到奖励详情及补签攻略 签到系统设计–RS 连续签到奖励 数据库如何设计? 基础 分享:游戏新手引导程序框架设计3要点 基础 游戏行业的人工智能设计:AI的设计和实施 游戏行业的人工智能设计(二):路径搜寻和感知 设计面向游戏的人工智能(三):战术和战略人工智能 (AI) 游戏程序 | 使用行动列表去创造简单且可扩展的AI 游戏程序 | 对弈类游戏的人工智能设计(4)——游戏AI的落地 参考 MMORPG游戏的人工智能(AI)和行为树 使用群体行为创建一个冰球游戏的AI:发起攻击 基础 教你快速高效接入SDK——总体思路和架构 教你快速高效接入SDK——统一sdk服务器的实现 [] 基础 玉米游戏VIP系统文档《惊天战神》 基础 服务器压力测试需要哪些功能,机器人怎么做 揭秘《英雄联盟》的自动化测试 关服方式1.GM关服(自身也是玩家) 2.web关服 通过连接服务 3.杀进程 不能保存数据 需知道服务的进程号 流程服务器状态 启动中 运行中 重启中 关服中 已关闭 服务器启动时设置为启动中状态 禁止所有客户端连接 启动所有服务 收到所有服务已启动消息后设置为运行中 只有在运行中状态才允许客户端连接游戏 一个连接在请求关服后 设置为关服中状态 在关服状态下禁止连接(有新的连接直接杀掉) 需关闭所有除请求关服者之外所有的客户端连接(要保存数据) 通知关闭所有的服务 在收到所有的服务已关闭消息 设置为已关闭状态 像请求关服者发送已关服成功消息(或以断开连接表示) 视情况决定是否直接退出 连接服务器 基础 自动更新程序设计实现思路 大型的客户端游戏是怎么实现游戏内更新的呢?是更新dll么? 游戏内热更新实现方案 参考 游戏服务器中的日志处理方式之一 浅谈游戏服务器—功能模块上来看 服务器设计系列:日志模块 tx面试题 设计一个高并发的日志系统 基于Log4J的日志服务器的搭建 编写Shell脚本监测服务器状态 写了一个简单的shell脚本监控mysql服务器运行状态 shell脚本监控服务器进程和端口 shell脚本监控服务器宕机、检测、报警程序 shell脚本监控系统负载、CPU和内存使用情况 Shell脚本监控服务器在线状态和邮件报警的方法 一个shell监控服务日志的脚本 我常用的主机监控Shell脚本 总结日志模块:我将此日志模块分为两大类,一类是游戏服务器调试维护用日志,一类是游戏运营用日志,可选择使用本地文档或是数据库模式记录 调试维护日志没啥好说的,运营日志说说,是给客服提供的,谁消费了什么 交易流向 物品流向 等等的记录 GM操作的记录等等 比如万一某玩家装备被盗了,则可通过此来证明。 日志模块分类: 一、运行日志 描述:通常用于记录服务器日常运行状态及异常状态。通常以文件的形式进行存储,以备查看。如果需要存储到数据库中,或使用工具查看,则需要定义好日志的格式,以方便解析。 存储方式:文件 日志格式: 记录方式:主要借助辅助工具 shell等监控服务器运行状态 日志读取:远程访问 日志处理:监控 记录 报警 维护 二、异常日志 描述:主要记录在游戏服务器中程序发生的异常。有些BUG在测试环境中是很难测试到的。记录程序中的异常,可以定位程序中BUG的位置,清楚BUG产生的原因。对游戏服务器的改进提供必要的支持。 存储格式:文件或数据库 日志格式:时间 位置 错误原因 相关数据 记录方式:捕获异常,存储到日志文件,或发送到日志服务器,统一存储 日志读取:远程访问 三、运营日志 描述:亦称为用户日志 游戏服务器的核心就是用户的日志。用户日志可以分为几大类:登陆日志;消费日志,收入日志,行为日志,充值日志。 1,登陆日志 主要记录玩家登陆的时间,IP等信息。登陆日志可以用于判断客户端的状态。识别使用软件进行不正常的大规模访问。比如,频繁的登陆断开。这会给服务器造成额外的压力。使正常的玩家受到影响,有时候严重的,不能正常登陆。管理员可以根据这些信息,对此客户端的IP进行封号处理。 2,消费日志 主要记录玩家在游戏中各种货币的消费情况。根据这些信息,可以分析玩家大部分资金的流向,对运营的营销有很大的帮助。还可以根据这些信息,查看服务器系统中是否存在一些刷钱的BUG。因为一个人无限的可以购买一个物品明显是不正常的。根据这些日志,可以很快定位到哪个功能导致了这种情况的发生。 3,收入日志 主要记录玩家在游戏中的货币来源情况。也是游戏系统整个产出的表现。便于数值对整个游戏的产出情况做一个全面的了解。也有助于发现系统的BUG,因为一个人的资金突然比别的玩家高出了很多是不正常的。根据这些日志,可以定位到是哪个功能导致了这种异常的增长。 4行为日志 主要记录玩家的一些操作行为,比如抽卡次数,挑战次数,购买次数等信息。分析玩家在游戏成长过程中的行为。根据这些日志,可以修改游戏的某些小功能,增加用户体验的好感。 5充值日志 主要记录玩家的充值信息。这是非常重要的,如果一个玩家充值,钱扣了,但是钻石没发给人家,是要给人家一个说法的。充值日志可以直接反映出哪些玩家是土豪,清楚游戏收入的来源。 存储方式:数据库 日志格式: 记录方式:主要借助辅助工具 shell等监控服务器运行状态 日志读取:通过网站 日志处理: 针对 通过gm实现shell脚本监控服务器教程日志服务器实现教程非实时存储 日志等级 存储优先级 存储实时性 日志http://www.zolsky.com/read/best/6/314.htm http://blog.csdn.net/yutianhuan/article/details/51121182 http://blog.csdn.net/gujintong1110/article/details/44278535 http://blog.chinaunix.net/uid-21222282-id-1829129.html http://zhoulifa.bokee.com/6071872.html 基础 RPG游戏设计 MMO游戏系统设计 基础 服务器压力测试需要哪些功能,机器人怎么做 揭秘《英雄联盟》的自动化测试 基础 自动更新程序设计实现思路 大型的客户端游戏是怎么实现游戏内更新的呢?是更新dll么? 游戏内热更新实现方案 基础 自动更新程序设计实现思路 大型的客户端游戏是怎么实现游戏内更新的呢?是更新dll么? 游戏内热更新实现方案 基础 自动更新程序设计实现思路 大型的客户端游戏是怎么实现游戏内更新的呢?是更新dll么? 游戏内热更新实现方案 http://www.zolsky.com/read/best/6/314.htm http://blog.csdn.net/yutianhuan/article/details/51121182 http://blog.csdn.net/gujintong1110/article/details/44278535 http://blog.chinaunix.net/uid-21222282-id-1829129.html http://zhoulifa.bokee.com/6071872.html 基础 游戏系统——变装系统 基础 如何设计游戏中的成就系统? 游戏成就系统设计1 游戏策划资料-天龙八部系统设计分析 基础 宠物系统-设计文档 宠物系统 [] 基础 游戏策划新人作业之一:签到系统作业 一份系统策划案,请大神评点 游戏签到系统详解 签到奖励详情及补签攻略 签到系统设计–RS 连续签到奖励 数据库如何设计? 基础 分享:游戏新手引导程序框架设计3要点 基础 游戏行业的人工智能设计:AI的设计和实施 游戏行业的人工智能设计(二):路径搜寻和感知 设计面向游戏的人工智能(三):战术和战略人工智能 (AI) 游戏程序 | 使用行动列表去创造简单且可扩展的AI 游戏程序 | 对弈类游戏的人工智能设计(4)——游戏AI的落地 参考 MMORPG游戏的人工智能(AI)和行为树 使用群体行为创建一个冰球游戏的AI:发起攻击 页面跳转 反推文档教程第一部分:格式篇 基础 玉米游戏VIP系统文档《惊天战神》 基础 MMORPG游戏在策划层面上如何设计一个新颖的物品背包系统? 基于mongodb, 设计游戏中的个人背包系统 基础 网络游戏物品校验系统的设计 游戏道具设计(一):道具产出条件和随机设定 游戏道具的设计-多媒体应用论文 关于动作RPG游戏的技能与道具设计 [] 基础 MMORPG大型游戏设计与开发(服务器 游戏场景 地图和区域) 游戏程序 | 迷宫寻路系列常用算法逻辑探究 游戏研发 | 开发笔记:掉落系统模块设计思路 技术交流:横版动作游戏中角色的移动逻辑 基础 游戏服务器登陆以及验证过程 游戏系统策划案-基本设定-01-游戏登陆设定 [] 基础 实例分析武器/道具锻造系统的设计要点 基础 副本系统设计 游戏服务端编程–场景服务器探讨 浅论游戏场景设计的概念和功能 基础 网络游戏公会系统设计与实现 公会系统 [] 相关文章 运营菜鸟也谈游戏运营活动基础分类 浅谈网络游戏线上活动策划 教你一步一步入运营的大门:活动策划篇 活动目的促进游戏留存率,及用户消费等,最终目的是促进用户消费。 活动要素活动时间:永久、时间段(期限限制) 活动范围:什么区,什么服可以参加 活动内容:描述了活动的参与规则,达成条件,领取奖励等信息活动流程看到活动->参与活动->领取奖励看到活动方式主要有两种 游戏内部 活动界面展示、GM活动提醒等 游戏外部 游戏官网、渠道、微信等参与活动参与条件限制:时间限制(到了时间自动默认参加),玩家达成指定条件才可参与. 活动状态(时间):未开启、已开启、已结束 参与状态:未参加、已参加、已完成(已参加并领取完了活动奖励)领取奖励能否领取奖励条件 玩家参与了活动,玩家达到领取奖励的触发条件 奖励状态:不可领取(未达成领取奖励条件)、可领取、已领取活动分析活动范围分析:只要服与服之间不共享数据,那么就存在不同的服有不同的活动,比如手游IOS平台服与Android服数据不共享,通常有针对各自平台的活动,比如端游不同的区有不同的活动,甚至同一区,几个服也有不同的活动。 活动时间分析:活动按时间可分为两种,永久型,时间限制。永久型活动的特点是保留性,以数据持久化的角度考虑,玩家永久型活动的数据是需要永久保存的。时间限制性活动的特点是只能在活动时间段内才能参加,在活动开始之前或活动开始之后无法再次参加,通常为一次性活动,以数据持久化的角度考虑,在游戏结束后是可以不必保存该类型活动数据的。常见活动示例永久性活动每日活动、每周活动活动描述: 每日活动:通关A,B,C副本可获得宝石、金币、等多少 每周活动:周一完成。。。,可获得。。。 周二完成。。。可获得。。 一周累计完成。。。多少次可获得。。。。 活动分析:它们属于永久性活动,通常一直存在,只是每日或每周达成条件与奖励不同罢了,它是循环型活动,在每周运营商关服维护后只需修改培训表的条件,奖励,无需修改代码即可,重新开服后清理玩家每日活动,每周活动的达成记录领取记录,玩家可重新开始参加活动。签到型活动每天签到领取什么新手活动玩家创建角色 针对新创建角色,新手的活动,目的为了鼓励新玩家加入游戏,或老玩家玩多个角色。如新手礼包时间限制性活动开服活动运营商在新服初开之际,为了鼓励更多的玩家加入该新服,而准备的活动,活动开始时间为开服时间 ,活动结束时间为新服开服后的某一天,如开服7日在线奖励活动。节日活动在国庆期间通过副本经验200%,通关巢穴获得什么充值活动在某日到某日充值,送。。。消费活动在某日到某日在商城购买抽奖券送。。。游戏服务器活动模块实现配置表设计 活动表:活动类型+活动时间类型+活动列表(元素为活动奖励表中的id)+活动描述+开始时间+结束时间+额外数据(活动参与条件) 活动(子项)奖励表:活动id+奖励达成条件+奖励+活动描述+额外数据 定义活动基类活动基类成员:protected 活动类型 :时间类型 活动项:{id,活动类型,活动时间表,宣告id,时间长度,时间信息} 活动id 实例id(唯一性)public 活动开启时间 活动结束时间 流程123456st=>start: 项目Export e=>end: 结束 op1=>operation: 选择java下的javadoc op2=>operation: 选择要导出的工程 op3=>operation: java doc的配置设置 st->op1->op2->op3->e 数据库设计代码设计活动基类类名:ActivityBase成员:活动类型、活动实例id,活动奖励数据,活动开启时间、结束时间、活动状态、附加数据接口: 内部: 通用虚函数:活动开启、活动结束、激活活动、领取活动奖励、格式化活动数据 特殊虚函数:在线活动时间统计,邀请好友活动人数统计,副本通关统计等活动管理器类成员:活动列表接口: 非虚:加载所有活动,玩家登陆、登出玩家活动数据类: 函数:玩家活动数据加载,保存,更新,删除 外部cmd– 通用接口 玩家登陆玩家登出 激活指定类型活动(大类型)(当前默认条件是时间,也有可能是其它)激活某类型当中子活动(条件值,当前int行,需扩展)领取活动奖励– 后台活动,获取后台活动玩家信息 方法public 虚 活动开启 虚 活动结束 触发达成活动(事件影响活动奖励领取状态) 领取活动奖励 通知活动结束 获取活动类型 获取活动项 获取活动id活动管理类成员:private 活动管理单例实例 活动容器 方法public 定时器检测(活动创建与关闭) 销毁活动(活动列表删除活动) private 创建活动(tempid)public 玩家加入活动(玩家信息,活动id) 通知wordboss开启 基础 游戏编程干货:游戏技能系统全解析 技能系统设计:技能模块同步的实现 如何设计一个易扩展的游戏技能系统? mmorpg 技能同步问题? 游戏技能设计 游戏开发——战斗系统之技能设计 游戏技能设计参考 游戏技能系统全解析 MMORPG游戏服务器技能系统设计 技能和BUFF数据编辑架构 浅谈游戏中BUFF的设计要点 Buff机制及其实际运用 游戏技能、buff的代码如何架构 传奇还原案·技能和BUFF效果设计说明.pdf Buff系统设计 游戏技能系统实现 游戏程序 | 游戏服务端开发:如何精确计算MMO游戏技能攻击区域? 游戏编程干货:游戏技能系统全解析 游戏程序 | 技能系统设计:技能模块同步的实现 游戏服务端开发:如何精确计算MMO游戏技能攻击区域? MMORPG游戏服务器技能系统设计:表格字段与技能程序框架 基础 如何做到在跨服务器无锁完成交易 游戏经济系统设计问题的四个难点! 《神武》交易系统设计思路分析 手游发展论:端游之后再无交易系统? 游戏经济系统设计 [] 基础 游戏人物系统实现 基础 游戏策划学习资料之DNF聊天系统分析 【自由之城】聊天系统补充文档 游戏设计策划方案 基础 排行榜算法设计实现比较 基础 游戏任务系统设计思路 创新手机游戏《3L》开发点滴(1)——道具、物品、装备表设计 《游戏脚本的设计与开发》-(RPG部分)3.5 游戏背包和任务系统 游戏任务系统的设计要素 游戏任务结构 游戏为什么需要有任务系统? 游戏任务系统设计 游戏任务系统实现 程序开发MMORPG开发杂谈(一):任务系统设计 任务系统实现:数据结构和处理流程版 《天择》设计思路之:任务系统对于RPG网络游戏的作用 游戏策划 | 游戏任务设计(1):概念与简史 游戏任务设计方法论:Collect与Hunt任务 总结任务状态 无效 INVALID 任务已完成 COMPLETE 任务正在进行中 RUNNING 准备可以执行任务 VIABLE 任务管理容器 任务列表 基础 游戏任务系统设计思路 创新手机游戏《3L》开发点滴(1)——道具、物品、装备表设计 《游戏脚本的设计与开发》-(RPG部分)3.5 游戏背包和任务系统 游戏任务系统的设计要素 游戏任务结构 游戏为什么需要有任务系统? 游戏任务系统设计 游戏任务系统实现 程序开发MMORPG开发杂谈(一):任务系统设计 任务系统实现:数据结构和处理流程版 《天择》设计思路之:任务系统对于RPG网络游戏的作用 游戏策划 | 游戏任务设计(1):概念与简史 游戏任务设计方法论:Collect与Hunt任务 总结任务状态 无效 INVALID 任务已完成 COMPLETE 任务正在进行中 RUNNING 准备可以执行任务 VIABLE 任务管理容器 任务列表 基础 一个商城系统的改良设计方案 基础 游戏策划-邮件系统 3D网络游戏中邮件系统的设计与实现 [] 基础 举例阐述游戏战斗系统设计的基本规则 游戏系统开发笔记(九)——构建战斗系统 战斗系统说明文档 游戏战斗系统设计文档 大型多人在线角色扮演类网络游戏角色战斗系统的设计与实现.pdf DNF战斗系统分析文档 MMORPG战斗系统设计(1)——战斗系统概述 MMORPG战斗系统设计 一种手游中实时战斗系统的设计思路 游戏战斗设计入门:类层的划分与创新 游戏程序 | 基于战斗重演的全校验—- 塔防大师PVP反外挂设计思路分享 游戏研发 | 游戏开发之状态机的实现与优化 移动游戏战斗系统实现方式探讨 基础 网络游戏中装备相关子系统的架构设计 游戏道具设计 游戏在设计装备系统中需要考虑哪些因素? 游戏策划培训笔记之游戏道具设计 [] 基础 MMO RPG 游戏中的组队系统设计","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏算法","slug":"游戏开发/game server/游戏算法","date":"2020-04-12T12:51:33.805Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/159b2d0b.html","link":"","permalink":"https://jinzt.github.io/posts/159b2d0b.html","excerpt":"","text":"参考 算法杂货铺——分类算法之决策树(Decision tree) 游戏排行榜算法设计实现比较 夜深人静写算法(1):搜索入门(http://blog.jobbole.com/96312/) 置换表 中国象棋程序设计探索 匹配算法 游戏自动分配算法讨论 游戏 匹配算法 实现(基于ELO分数、等待时长) 关于游戏中匹配同等「战斗力」的算法 竞技游戏的匹配系统要做到尽可能使双方实力接近有多难? 分析匹配游戏类型及其机制 英雄联盟ELO值算法(匹配对手的方法) 转 各大游戏的匹配算法究竟有多差,会让喷子每次玩都被匹配到傻x? 游戏的匹配系统应该怎么测试? 排行算法 TopN算法与排行榜 10000亿数据寻找 最大 或者最小 n个 数 各种算法比较","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏开发/game server/日志中心","slug":"游戏开发/game server/日志中心","date":"2020-04-12T12:51:33.803Z","updated":"2020-04-11T17:51:33.096Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"技术选型Filebeat +Filebeat exporter,接入Prometheus Filebeat + redis + logstash + Elasticsearch+Kibana 参考 【解构云原生】基于Filebeat的日志采集服务设计与实践 ELK Prometheus 实时日志 检索 监控 告警 Filebeat+ELK部署文档 ELK+filebeat+kafka+zookeeper构建海量日志分析平台 filebeat+redis+elk日志平台搭建 使用Filebeat和Logstash集中归档游戏日志 Linux搭建ELK日志收集系统:FIlebeat+Redis+Logstash+Elasticse","categories":[],"tags":[]},{"title":"游戏开发/game server/弱网模拟","slug":"游戏开发/game server/弱网模拟","date":"2020-04-12T12:51:33.802Z","updated":"2020-04-11T17:51:33.096Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"","categories":[],"tags":[]},{"title":"帧同步","slug":"游戏开发/game server/帧同步","date":"2020-04-12T12:51:33.800Z","updated":"2020-04-12T12:15:13.737Z","comments":true,"path":"posts/31cd6d8b.html","link":"","permalink":"https://jinzt.github.io/posts/31cd6d8b.html","excerpt":"","text":"要点 一致性 网络抖动 使用cocos2dx制作 帧同步 游戏 creator2.0实现的帧同步Demo 帧同步联机战斗(预测,快照,回滚) 《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了 ccc用什么怎解决浮点计算一致性问题? -实时联网游戏后台服务技术选型和挑战(房间匹配与数据同步篇) Unity3D简单的帧同步方案 帧同步的一些思考(三):技能动作表现 帧同步之从零开始 Unity 3D实现帧同步技术 多人游戏对战技术(坦克大战、状态同步) 帧同步 状态同步 动作手游实时PVP帧同步方案(客户端) 帧同步和状态同步资料 漫谈游戏帧同步 https://www.e-learn.cn/en/share/3471574 https://blog.csdn.net/jiangguilong2000/article/details/89399857 code https://github.com/mankiw/xiaoxiao https://github.com/ookcode/LockstepDemo wonderkiln/lockstep.io colyseus-iog-lockstep-sync L-LingRen/lockstep_demo AeroX2/lockstep-typescript rpetrich/mobius aFlyc/LockStepFrameSyncDemo bailu1901/lockstepserver CraneInForest/LockStepSimpleFramework-Client no5ix/realtime-server matchvs/demo-creator 代码搜索lockstep frame sync","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏开发/game server/代码发布系统","slug":"游戏开发/game server/代码发布系统","date":"2020-04-12T12:51:33.799Z","updated":"2020-04-11T17:51:33.094Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"","categories":[],"tags":[]},{"title":"游戏开发/game server/README","slug":"游戏开发/game server/README","date":"2020-04-12T12:51:33.797Z","updated":"2020-04-11T16:30:31.486Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"基本教程 游戏策划学习教程 游戏策划入门专题 游戏道 游资网策划教程 搜客网策划教程 其它 游戏策划知识体系指南:游戏设计的七要素 一名游戏制作人的设计感悟 不懂程序不懂美术,来看看游戏运营策划是干嘛的 游戏数值策划入门教程 MMO游戏数值框架概述(偏模拟方向)2 游戏数值策划 fakescript脚本 github 需要基础 熟练使用最少一门编译语言如c、c++ 熟练使用一门脚步语言如lua、python 扎实的数据结构与算法知识及面向对象编程能力(stl、设计模式) 掌握游戏开发过程中可能用到的算法、设计模式、及数学知识 掌握游戏开发常见库、引擎的使用 wss 代理tcp H5游戏(web-socket)连接TCP服务器解决方案 源码 [nodejs安装及WebSocket转TCP代理搭建] (源码)(https://www.npmjs.com/package/wstcp) websocket协议转tcp协议的代理 源码 ws-tcp-relay websockify-nginx-module, 将websockify嵌入 Nginx tcp - NGINX to reverse proxy websockets AND enable SSL NGINX如何反向代理websockets并启用SSL nginx实现tcp反向代理","categories":[],"tags":[]},{"title":"游戏设计","slug":"游戏开发/game design/README","date":"2020-04-12T12:51:33.793Z","updated":"2020-04-12T12:15:13.738Z","comments":true,"path":"posts/8c7a4343.html","link":"","permalink":"https://jinzt.github.io/posts/8c7a4343.html","excerpt":"","text":"基本教程 游戏策划学习教程 游戏策划入门专题 游戏道 游资网策划教程 搜客网策划教程 其它 游戏策划知识体系指南:游戏设计的七要素 一名游戏制作人的设计感悟 不懂程序不懂美术,来看看游戏运营策划是干嘛的 游戏数值策划入门教程 MMO游戏数值框架概述(偏模拟方向)2 游戏数值策划 增量更新 两种增量更新方案 app后端设计(10)–数据增量更新 一般数据库增量数据处理和数据仓库增量数据处理的几种策略 其它热更 在Unity中使用Lua脚本:语言层和游戏逻辑粘合层处理 Unity手游之路 C# 序列化(总) 相关源码 网络层+架构层 : 自研游戏帧同步方案 LockstepFramework帧锁定 FrameSyncNetwork 推荐 游戏编程相关的好书有哪些推荐? 推荐书籍游戏编程模式 游戏编程精粹系列","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"优秀收集的学习资源","slug":"游戏开发/game design/learn-source","date":"2020-04-12T12:51:33.792Z","updated":"2020-04-12T12:20:33.685Z","comments":true,"path":"posts/2c63bf3c.html","link":"","permalink":"https://jinzt.github.io/posts/2c63bf3c.html","excerpt":"","text":"介绍素材站点 6m5m cg柚子 爱给 opengameart itch.io [maxvoxel] [asprite] [sprinte] [pixkel] 开源 github gitee coding.net 开源中国 ### 让你尖叫的游戏开发工具清单 http://www.godotengine.cn/ 基本教程 游戏策划学习教程 游戏策划入门专题 游戏道 游资网策划教程 搜客网策划教程 其它 游戏策划知识体系指南:游戏设计的七要素 一名游戏制作人的设计感悟 不懂程序不懂美术,来看看游戏运营策划是干嘛的 游戏数值策划入门教程 MMO游戏数值框架概述(偏模拟方向)2 游戏数值策划 刚入游戏行业小白必须了解的基础知识 数据分析与玩家生命周期","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏素材","slug":"游戏素材","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E7%B4%A0%E6%9D%90/"}]},{"title":"cocos creator实战-棋牌大厅","slug":"游戏开发/cocos creator/实战/棋牌/README","date":"2020-04-12T12:51:33.787Z","updated":"2020-04-12T12:07:59.095Z","comments":true,"path":"posts/1f46ccea.html","link":"","permalink":"https://jinzt.github.io/posts/1f46ccea.html","excerpt":"","text":"","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"},{"name":"游戏开发实战","slug":"游戏开发实战","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/"}]},{"title":"cocos creator实战-捕鱼","slug":"游戏开发/cocos creator/实战/棋牌/fish","date":"2020-04-12T12:51:33.785Z","updated":"2020-04-12T12:08:15.090Z","comments":true,"path":"posts/2e87f40.html","link":"","permalink":"https://jinzt.github.io/posts/2e87f40.html","excerpt":"","text":"基于cocos2d-x引擎捕鱼达人多人游戏功能的设计与实现 CocosCreator水波折射效果shader 鱼的影子效果,如何实现会比较好? 克隆图集 color 等于 黑色 调整透明度 20 shiruiWeb/fishJoy fylz1125/CCFish 知识点 鱼的生成 鱼的游动 武器的创建 子弹的生成 渔网的生成 碰撞检测 网络同步","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"},{"name":"游戏开发实战","slug":"游戏开发实战","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/"}]},{"title":"cocos creator实战-FlappyBird","slug":"游戏开发/cocos creator/实战/FlappyBird游戏","date":"2020-04-12T12:51:33.782Z","updated":"2020-04-12T12:08:50.374Z","comments":true,"path":"posts/ec7d7221.html","link":"","permalink":"https://jinzt.github.io/posts/ec7d7221.html","excerpt":"","text":"asdf","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"},{"name":"游戏开发实战","slug":"游戏开发实战","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/"}]},{"title":"cocos creator实战-炸弹人","slug":"游戏开发/cocos creator/实战/Bomberman","date":"2020-04-12T12:51:33.781Z","updated":"2020-04-12T12:06:29.976Z","comments":true,"path":"posts/f807c753.html","link":"","permalink":"https://jinzt.github.io/posts/f807c753.html","excerpt":"","text":"# Edimier/laya_bomb Eden1114/Bang_man indie21/BubbleManGo","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"},{"name":"游戏开发实战","slug":"游戏开发实战","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/"}]},{"title":"cocos creator实战-坦克大战","slug":"游戏开发/cocos creator/实战/battlecity","date":"2020-04-12T12:51:33.779Z","updated":"2020-04-12T12:06:51.649Z","comments":true,"path":"posts/420abc20.html","link":"","permalink":"https://jinzt.github.io/posts/420abc20.html","excerpt":"","text":"newagebegins/BattleCity safish/tank.io penumbragames/tankanarchy","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"},{"name":"游戏开发实战","slug":"游戏开发实战","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/"}]},{"title":"cocos creator实战-飞机大战","slug":"游戏开发/cocos creator/实战/aircraft_war","date":"2020-04-12T12:51:33.778Z","updated":"2020-04-12T12:09:08.041Z","comments":true,"path":"posts/587f039a.html","link":"","permalink":"https://jinzt.github.io/posts/587f039a.html","excerpt":"","text":"源码 A123asdo11/aircraft_war Here21/aircraft-war superman-t/PlaneGame tccpc/planeWars HurTeng/StormPlane","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"},{"name":"游戏开发实战","slug":"游戏开发实战","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/"}]},{"title":"cocos creator基础-大纲","slug":"游戏开发/cocos creator/basic/README","date":"2020-04-12T12:51:33.774Z","updated":"2020-04-12T12:12:07.778Z","comments":true,"path":"posts/ca9d5490.html","link":"","permalink":"https://jinzt.github.io/posts/ca9d5490.html","excerpt":"","text":"大纲 UI 动画 声音 特效 物理 热更新 脚本编程 场景制作 资源管理 项目打包与发布 基础图像绘制 网络 博毅创维基础 cocos creator基础-cc.Node(一)场景树 cocos creator基础-cc.Node(二)事件响应 cocos creator基础-cc.Node(三)坐标空间转换 cocos creator基础-cc.Node(四)节点action的使用 cocos creator基础-(五)cc.Component使用 cocos creator基础-(六)cc.Sprite使用 cocos creator基础-(七)cc.Graphics组件和cc.Camera组件 cocos creator基础-(八)cc.Label使用 cocos creator基础-(九)cc.AudioSource使用 cocos creator基础-(十)cc.Animation动画组件的使用 cocos creator基础-(十一)spine骨骼动画组件使用 杂篇 [cocos creator基础操作总结](cocos creator基础操作总结) 实战 cocos creator微信小游戏【趣味套牛】的视频教程 第一步 重定向url,参数web给的token第二步 客户端拿token 去web post获取unionid,key等第三步 客户端拿 unionid,key去游戏服务器登录(db校验key)","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"}]},{"title":"Cocos Creator游戏开发实战","slug":"游戏开发/cocos creator/README","date":"2020-04-12T12:51:33.770Z","updated":"2020-04-12T12:12:34.209Z","comments":true,"path":"posts/95e6e992.html","link":"","permalink":"https://jinzt.github.io/posts/95e6e992.html","excerpt":"","text":"基础篇 [第1章 认识Cocos Creator] [第2章 搭建跨平台开发环境] [第2章 Cocos Creator的资源管理] [第2章 Cocos Creator的UI系统] [第2章 Cocos Creator的动画系统 精灵动画 anim动画 骨骼动画] [第2章 Cocos Creator的3d] [第2章 Cocos Creator的音乐及音效] [第2章 Cocos Creator的碰撞检测] [第2章 Cocos Creator的网络] [第2章 Cocos Creator的热更新] 实战 [Fly bird] [第2章 棍子英雄] [第2章 桌球] [飞机大战] [推箱子] [吃豆人] [网络游戏基础] [帧同步与状态同步] [云函数和mogobe] [基于mogobe帧同步坦克大战] [基于mogobe状态同步坦克大战] [初认识colyseus] [基于colyseus帧同步坦克大战] [基于colyseus状态同步坦克大战] [基于colyseus状态同步] [斗地主] [麻将] [五子棋] [象棋] cocos2dx官网 cocos2d-x 3.0 制作横版格斗游戏 Cocos2dx游戏源码合集 《热血沙城》45度ARPG手游-Lua移植版 Cocos Creator子游戏动态下载实现(大厅+子游戏模式) 初学Cocos Creator收集的视频教程 cocoscreator-ddz tutorial-hot-update physics-example CocosCreatorPlugins Cocos技术派 | 3d人物渲染详细教程 slitherIO majiang-cocos-creator 贝密游戏","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"}]},{"title":"cocos creator收集的学习资源","slug":"游戏开发/cocos creator/learn-source","date":"2020-04-12T12:51:33.769Z","updated":"2020-04-12T12:12:22.694Z","comments":true,"path":"posts/6a598898.html","link":"","permalink":"https://jinzt.github.io/posts/6a598898.html","excerpt":"","text":"介绍优秀教程 cocos creator互动课程 Cocos Creator 集合类游戏模块化与热更新实践 Cocos Creator 极速入门 Cocos Creator 项目:如何较为优雅地实现新手引导? 基于JavaScript的强大的物理引擎PhysicsJS 从零开始制作微信小游戏-弹一弾,纯原生Canvas与物理引擎Matter.js应用 phaser-grid-physics, 网格物理插件是街机物理,街机物理是MatterJS的 使用cocos2dx制作 帧同步 游戏 新手引导 配置式、可编程的新手引导框架,新增多任务引导,演示更新! ## Creator开源游戏、插件、教程、视频汇总 Moba 多人游戏 demo,已开源 Cocos Creator—最佳构建部署实践 小游戏整理-qbkivlin[20170407更新] cocos creator 可视化状态机插件(支持typescript)","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"}]},{"title":"软件工程","slug":"游戏开发/软件工程","date":"2020-04-12T12:51:33.766Z","updated":"2020-04-12T12:15:26.134Z","comments":true,"path":"posts/7821ac43.html","link":"","permalink":"https://jinzt.github.io/posts/7821ac43.html","excerpt":"","text":"在阿里一年,我颠覆了曾经坚信不疑的技术思维","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"软件工程","slug":"软件工程","permalink":"https://jinzt.github.io/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/"}]},{"title":"游戏编程范式","slug":"游戏开发/编程范式","date":"2020-04-12T12:51:33.765Z","updated":"2020-04-12T12:15:15.451Z","comments":true,"path":"posts/8c7a4343.html","link":"","permalink":"https://jinzt.github.io/posts/8c7a4343.html","excerpt":"","text":"首页基本教程知识体系 软件工程理论 面向过程编程 面向对象编程 设计模式 数据驱动编程 文档编写 视频教程其它 概要设计说明书 文档那些事儿 推荐书籍 从程序员到项目经理 参考 函数式编程语言的「天然支持并行与并发」是不是吹牛? 函数式编程扫盲篇 C++并发实战15:函数式编程 对函数式编程简单理解 DOP基本教程 什么是数据驱动编程 数据驱动编程之表驱动法 用数据驱动思想来设计游戏-读《游戏编程精粹1》 数据驱动编程 请问有基于数据驱动的游戏框架吗(不是指引擎)? 实体-组件-系统(ECS)实现数据驱动的游戏框架 创建游戏中的人类世界:数据驱动的开放世界AI框架 数据驱动设计思路——带你一天完成独立HTML5游戏 怎么理解游戏开发中的“Data-Driven Design”? 游戏程序开发的基本理念和方法 dd 什么是游戏开发的实体系统框架 Fast Entity Component System ntityX - A fast, type-safe C++ Entity-Component system 你会写软件开发文档吗?软件开发中的文档和分类软件开发文档","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏策划文档","slug":"游戏开发/策划文档","date":"2020-04-12T12:51:33.763Z","updated":"2020-04-12T12:15:13.737Z","comments":true,"path":"posts/8c7a4343.html","link":"","permalink":"https://jinzt.github.io/posts/8c7a4343.html","excerpt":"","text":"首页基本教程知识体系 软件工程理论 面向过程编程 面向对象编程 设计模式 数据驱动编程 文档编写 视频教程其它 概要设计说明书 文档那些事儿 推荐书籍 从程序员到项目经理 参考 函数式编程语言的「天然支持并行与并发」是不是吹牛? 函数式编程扫盲篇 C++并发实战15:函数式编程 对函数式编程简单理解 DOP基本教程 什么是数据驱动编程 数据驱动编程之表驱动法 用数据驱动思想来设计游戏-读《游戏编程精粹1》 数据驱动编程 请问有基于数据驱动的游戏框架吗(不是指引擎)? 实体-组件-系统(ECS)实现数据驱动的游戏框架 创建游戏中的人类世界:数据驱动的开放世界AI框架 数据驱动设计思路——带你一天完成独立HTML5游戏 怎么理解游戏开发中的“Data-Driven Design”? 游戏程序开发的基本理念和方法 dd 什么是游戏开发的实体系统框架 Fast Entity Component System ntityX - A fast, type-safe C++ Entity-Component system 你会写软件开发文档吗?软件开发中的文档和分类软件开发文档","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏开发/游戏音效","slug":"游戏开发/游戏音效","date":"2020-04-12T12:51:33.762Z","updated":"2020-04-12T09:43:47.325Z","comments":true,"path":"posts/5727aa7d.html","link":"","permalink":"https://jinzt.github.io/posts/5727aa7d.html","excerpt":"","text":"2d像素https://jackschaedler.github.io/goya/ a 写给程序员的美术创作指南 MagicaVoxel教程 MagicaVoxel 教程有哪些? 像素爱好者的超级玩具——Magicavoxel 零门槛!像素化3D建模入门攻略 立体像素软件应用分享part1 Unity辅助建模工具 | Magica Voxel的进阶 其它 利用Voxel Importer在Unity3D中对MagicaVoxel模型建骨 关于制作 Voxel(体素,3D像素)模型并导入Unity","categories":[],"tags":[]},{"title":"游戏开发/游戏运维","slug":"游戏开发/游戏运维","date":"2020-04-12T12:51:33.761Z","updated":"2020-04-11T17:51:33.087Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"## 游戏运维编年史|可能是目前最详细的游戏运维指南 如何应对游戏进程卡死、崩溃监测线上进程开始、崩溃检测卡死 上报卡死、崩溃重启进程 卡死、崩溃排查检测崩溃 重启进程 重启前准备(是否资源,socket) 重启 C#如何判断一个进程是否卡死了?就是卡住在那不动 判断卡死的思路1.游戏进程定时写日志(比如10s),然后一个批处理,shell检测上报到钉钉2.或上报数据(比如心跳)到另一个地方 由另一个地方上报卡死到钉钉短信等 应用程序卡死如何排查","categories":[],"tags":[]},{"title":"游戏美术","slug":"游戏开发/游戏美术","date":"2020-04-12T12:51:33.759Z","updated":"2020-04-12T09:25:19.707Z","comments":true,"path":"posts/8c7a4343.html","link":"","permalink":"https://jinzt.github.io/posts/8c7a4343.html","excerpt":"","text":"2d像素https://jackschaedler.github.io/goya/ a 写给程序员的美术创作指南 MagicaVoxel教程 MagicaVoxel 教程有哪些? 像素爱好者的超级玩具——Magicavoxel 零门槛!像素化3D建模入门攻略 立体像素软件应用分享part1 Unity辅助建模工具 | Magica Voxel的进阶 其它 利用Voxel Importer在Unity3D中对MagicaVoxel模型建骨 关于制作 Voxel(体素,3D像素)模型并导入Unity 素材站点 6m5m cg柚子 爱给 opengameart itch.io [maxvoxel] [asprite] [sprinte] [pixkel] 开源 github gitee coding.net 开源中国 ### 让你尖叫的游戏开发工具清单","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}]},{"title":"游戏测试","slug":"游戏开发/游戏测试","date":"2020-04-12T12:51:33.758Z","updated":"2020-04-12T09:40:14.799Z","comments":true,"path":"posts/8c7a4343.html","link":"","permalink":"https://jinzt.github.io/posts/8c7a4343.html","excerpt":"","text":"参考 揭秘《英雄联盟》的自动化测试 压力测试 mqant压力测试工具 go实现压力测试工具弱网测试18:38:56我的手机 2018/12/26 18:38:56https://blog.csdn.net/test_xhz/article/details/7284116818:41:27我的手机 2018/12/26 18:41:27http://jagt.github.io/clumsy/cn/manual.html18:43:49我的手机 2018/12/26 18:43:49https://blog.csdn.net/nawenqiang/article/details/78541871 我的手机 2018/12/26 18:45:11https://www.jianshu.com/p/c66dc2b5019018:47:43我的手机 2018/12/26 18:47:43http://jagt.github.io/clumsy/cn/index.html18:58:16我的手机 2018/12/26 18:58:16https://m.baidu.com/sf_zd/question/1366437112260413059.html?entrytime=1545821869168&word=%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%94%BB%E5%87%BB&ms=1&rid=1126640446131779836519:24:13我的手机 2018/12/26 19:24:13http://www.safebase.cn/article-219447-1.html19:31:35我的手机 2018/12/26 19:31:35https://www.cnblogs.com/davidwang456/p/3590846.html 游戏测试之用例游戏测试计划游戏测试之单元测试游戏测试之接口测试游戏测试之压力测试游戏测试之 代理游戏映射之 host hosts文件以及映射条目的使用规则 如何绑定hosts文件 Android修改hosts文件的方法介绍 游戏测试之弱网模拟-模拟弱网环境测试——工具篇 clumsy 之弱网模拟clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。 官网地址https://jagt.github.io/clumsy/cn/index.html Clumsy 弱网络环境模拟工具使用介绍 手机弱网模拟 QNET-QNET弱网测试 安装在官网下载 触动精灵 Android root 版 触动抓色器 触动脚本编辑器 触动字库工具 雷电模拟器及夜神模拟器使用局域网连接 IDE 及抓色器 实战定时登录游戏需求1.模拟 每隔10分钟进行一次游戏登录登出操作2.判定登录失败后上报到钉钉","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}]},{"title":"游戏开发/服务器架构","slug":"游戏开发/服务器架构","date":"2020-04-12T12:51:33.756Z","updated":"2020-04-11T16:30:31.505Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"首页常用客户端引擎 cocos2d love2d unity3d 常见服务器框架 KBEngine skynet NFrame FreeEngine ProudNet 游戏服务器框架 Leaf/go gonet 服务器开发论坛 9ria服务器开发 游戏岛 3D游戏编程开发 游资网 大家论坛 必看精品文章 游戏服务端究竟解决了什么问题? 游戏服务器架构 百万用户级游戏服务器架构设计与游戏视频开发平台源码分享 一种经典的网络游戏服务器架构 浅析国内某种端游服务器架构 服务器结构探讨-登录服的负载均衡 MMO服务器架构 游戏多服务器架构的一点想法 大型网络游戏服务器的框架设计 MMORPG游戏服务器设计 Online-game服务器端设计 网络游戏同步法则 腾讯技术分享实录:游戏后台开发九问 《征途》服务器分布式设计理念介绍 服务器又宕机了,怎么办? 游戏服务器 网络即时战略游戏软件开发 网游类似魔兽世界的服务器维护都是在干嘛? 代码中如何应对缓存服务器宕机的情况 说说服务器宕机恢复和负载均衡那些事(上) 网游服务器如何做到零回档? Online-game服务器端设计 游戏服务端究竟解决了什么问题? 游戏服务器端所完成的事 网页游戏架构与开发-经验分享 游戏程序 | C/C++服务器架构机制设计总结 MMORPG游戏服务器技术选型参考 游戏服务端究竟解决了什么问题? 从keep-alive原理 分析TCP游戏服务端心跳包的实用功能 基于Lua的游戏服务端框架简介 游戏服务端究竟解决了什么问题? 游戏服务端究竟解决了什么问题? 游戏服务端开发 游戏服务端开发 网络服务器开发总结 游戏服务器端开发要点 游戏服务器中的数据库异步操作技术和游戏数据的保存机制 网游服务端开发入门知识 游戏服务器端引擎的设计实现 关于游戏服务器中的逻辑与场景治理 网络游戏客户端服务端同步方案 格斗游戏如何实现同步? 游戏架构 游戏架构设计(15) MMORPG大型游戏设计与开发(服务器 游戏场景 多线程) MMORPG大型游戏设计与开发(服务器 游戏场景 核心详述) MMORPG大型游戏设计与开发(part1 of net) 游戏服务器架构演化史 2015再谈游戏同步 分布式系统生成唯一主键 人人都该了解的十大算法 [已解决] 大鸡蛋大神,请教一下firefly的数据同步是如何实现的 MMORPG服务器架构 游戏服务器帧率控制 MMOG游戏引擎同步策略的研究与实现 游戏中的网络同步(一) 网络游戏服务器通信系统的设计和实现 基于EPOLL的网络游戏服务器通信架构的研究和设计 网络游戏服务器通信架构及关键技术研究 大世界网络游戏服务器的构架 《网络游戏运营》 从epoll构建muduo-13 Reactor + ThreadPool 成型 原创 《梦幻西游》手游主程刘强:如何提供一个稳定高效的MMO手游服务器引擎 关于格斗网络游戏AI、数值计算和攻击判定的疑问 游戏服务器之服务器优化思路 游戏系统开发笔记(六)——服务端架构设计 游戏研发 | 游戏编程经验分享:打造KISS项目的六大要诀 游戏研发 | Unity3D中实现帧同步 (二):跟踪平均数 游戏系统设计经验分享:系统的了解认知与实现 再谈网游同步技术:实时动作游戏同步方式和传输协议的选择 网络服务器开发热点分析与解决 游戏服务器架构调研报告 MMORPG大型游戏设计与开发(服务器 AI 概述) 服务器公共库开发–定时器管理器模块 游戏服务器的场景管理计算AOI终于搞出一个靠谱的方案了 游戏后台的快速开发 网络 云风详解网易网络游戏服务器 百万在线 QQ游戏百万人同时在线服务器架构实现 百万用户同时在线游戏服务器架构实现 《梦幻西游》手游服务器如何实现200万玩家同时在线?(技术篇) 论百万人同时在线棋牌类网络游戏服务器设计 如何设计一个千万人在线的MMO游戏? Mangos服务器的游戏对象和AI系统 基于Lua的游戏服务端框架简介 网络游戏协议以及分发模块的设计 百人同屏(数据同步) 游戏服务端编程–场景服务器探讨 游戏开发手记:游戏逻辑模块组织及数据同步 小谈网络游戏同步 游戏研发 | 再谈网游同步技术:实时动作游戏同步方式和传输协议选择 帧同步在竞技类网络游戏中的应用 再谈网游同步技术 手游后台PVP系统网络同步方案总结 无缝世界 无缝游戏世界服务器如何处理边界问题 游戏服务器端所完成的事 网络游戏服务器端的设计与实现 一种高性能网络游戏服务器架构设计 开放世界游戏中的大地图背后有哪些实现技术? 游戏ai AI分享站 游戏人工智能(AI)开发 游戏开发中会用到哪些常用AI算法 MMORPG大型游戏设计与开发(服务器 AI 概述) MMORPG大型游戏设计与开发(服务器 AI 逻辑设定和状态结点) AI服务器的设计与实现 Mangos服务器的游戏对象和AI系统25_mangos (搬运工)Mangos服务器的游戏对象和AI系统(一) 服务器的AI优化(一个隐晦的瓶颈) 游戏引擎基础(十)(人工智能和导航) 防作弊 MMO即时战斗:地图角色同步管理和防作弊实现 对等通信结构 网络游戏编程基本架构 之 Peer-to-Peer 对等通信结构 网络游戏架构 [] 消息包格式PackageHead+PackageBodyPackageHead通常包括消息长度(整个消息包的长度或消息包体的长度)PackageBody包括消息体数据有争议的是消息对应的协议号(或消息号id)的位置,可放在包头亦可放在包体中经典结构是 size+data争议是否需要自己效验他说的是二进制协议吧,我出过这样一个Bug,开始协议就是 数据长度(定长1-4个字节)+数据内容块(变长)用破坏性工具就是 wireshark 截包 改掉了lengt 然后发送 结果造成了后面的包全部错乱造成假死,后来加上起始符和结束符可以把非法的包扔掉解决这个问题‘##’+消息长度+消息体+校验位” 消息包 为什么TCP自定义协议报文头由固定字符如‘##’+消息长度+消息体+校验位组成? 利用TCP\\IP协议进行传输时,不是可以保证数据的有效性吗?为什么还要加上校验呢? tcp协议socket是否会出现数据丢失 socket中,大家是怎么定义数据包的 定长数据 还是结束符 其它 一个MMO游戏服务逻辑系统 如何设计游戏中道具功能 Linux后台进程挂起通用做法 从keep-alive原理分析TCP游戏服务端心跳包的实用功能 手机格斗网游该如何避免延迟 游戏后台定时器系统设计与实现 SD 游戏服务器架构 经典游戏服务器端架构概述 游戏服务器 模块划分 大话客户端网络编程(1)一个普通的网络模块 大话客户端网络编程 网络游戏中网络模块浅析 游戏服务端逻辑模块处理框架 经典软件架构模式 经典游戏服务器端架构概述 (1) 游戏开发手记:游戏逻辑模块组织及数据同步 游戏开发笔记(六)——服务端架构设计 服务器1.帐号服务器(唯一)AccountServer 2.充值服务器(可唯一)RechargeServer 3.登陆服务器 LoginServer 4.登陆网关服务器 LoginGateServer 5.网关服务器(代理服务器)ProxyServer / AgentServer 6.世界服务器(区服唯一)WorldServer 7.游戏Master服务器 GameMasterServer 8.游戏服务器 GameServer 9.数据库服务器 DBServer数据库1.帐号数据库(存储玩家的全局帐号信息) 2.游戏数据库(存储玩家游戏数据) 4.日志数据库(记录玩家行为操作、用于运营分析)拓扑图账号服务器 账号注册(写账号数据库) 充值服务器 sdk验证(登陆sdk,充值sdk) 独立的原因是降低游戏服务器复杂度,而且是游戏共用的 可以之配置一个,也可以组服务器配置一个,不推荐(单服一个) 以web合适 建议使用python编写服务器基础版本功能服务器节点(node.exe)消息处理(收发) 定时器 日志 支持Actor 支持分布式 支持插件框架 配置读取(简单,仅用去读取服务器配置) xml配置 支持简易web持久缓存话方案(DBCache.so)Redis+MySQL脚本化支持Lua脚本共享内存方案初始化关服处理日志记录消息处理(接受分发)定时器信号简单服务器配置加载 尽可能减少依赖 Depend lua libmysql 、mysql++ redis md5 oppenssl zipFrame network —- tcp udp http logger —- 日志级别 redis+mysql组件 script —- luaGameFrame 插件式开发 可以单进程 多个dll,多个服务 也要支持 多进程,多服务, 支持lua 逻辑编写 模块化编程 网络协程简化异步编写 数据共享:添加redis及共享内存支持 分布式:服务注册、发现、卸载BaseLib Log Crypto net tcp http websocket udp ssl netbuffer(ringbufffer) poller mailbox coroutine timer参考 棋牌游戏服务器的架构设计需要注意哪些点 棋牌游戏服务器架构设计 网狐服务器分析 QQ游戏百万人同时在线服务器架构实现 sd 谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现(更新优化思路) MOBA 游戏技能系统设计 2.0 参考 dongweiPeng/SkillSystem dx50075/SkillSystem taotao111/SkillSystem ejasan0502/skill_game emreCanbazoglu/SkillSystem 技能 设计MOBA技能系统(分析篇) MOBA 游戏技能系统设计 2.0 【ARPG/MOBA类游戏游戏系列】技能系统设计 MMO即时战斗:技能实现 技能系统设计:技能模块同步的实现 参考 分布式系统设计的几条原则 分布式缓存 我终于深入参与了一个分布式系统了,好多想法不一样了! 分布式设计与开发 分布式设计与开发 揭秘《英雄联盟》的数据服务器 d AOI 服务的设计与实现 MMORPG游戏AOI解决方案 游戏的AOI算法 游戏服务端之AOI概述 游戏服务器场景管理AOI方案 分布式AOI处理 我的服务端之AOI概述 游戏服务器场景管理AOI方案 游戏的AOI算法 AOI 游戏服务器的场景管理计算AOI终于搞出一个靠谱的方案了。。。 dd 游戏行为系统设计原理解析:行为树的基本概念及进阶 AI设计:如何给动作游戏的敌人设计人工智能? 参考 一款已上市MMO手游地图同步方案总结 浅谈RTS游戏网络同步:3种同步机制模式的实现 再谈网游同步技术:实时动作游戏同步方式和传输协议选择 解密:腾讯如何打造一款实时对战手游 服务端构架干货:快节奏多人游戏的技术实现 参考 网游服务器中的GUID(唯一标识码)实现-基于snowflake算法 游戏服务器里GUID的生成算法 游戏服务器中的ID生成策略 ID生成器 游戏服务器ID生成器组件 如何在高并发分布式系统中生成全局唯一Id 在分布式系统中如何生成唯一ID 数据库连接池(Oracle,Mysql,SQLite) SOCI、LiteSQL、POCO数据库访问类库对比 libzdb 官网 项目介绍 数据库连接池库libzdb使用教程 数据库连接池libzdb的使用 状态服务器与无状态服务器 状态服务器与无状态服务器(要点) 状态和无状态--2种服务器架构之间的比较 . 弱交互的游戏服务器采用无状态服务器设计是否可行,优缺点分别是什么? C++服务热更新c++可以热加载动态库,但是在这个过程中, 推荐 进行进程级热更新 实例 GateA -> GameServerA 新启动GameServerB,采取策略将所有连接处理转移到b,然后关闭A 单机手游如何防破解? 分享几点简单的防护措施 手游后台PVP系统网络同步方案总结 攻击 DDoS的攻击实例 Python3基于Scapy实现DDos DDOS 什么是缓存雪崩?服务器雪崩的场景与解决方案 游戏技能系统开发探索1 游戏开发笔记(九)——技能系统 游戏编程干货:游戏技能系统全解析 如何设计一个易扩展的游戏技能系统? 【ARPG/MOBA类游戏游戏系列】技能系统设计 教你从头写游戏服务器框架 教你从头写游戏服务器框架 一 教你从头写游戏服务器框架(二) 教你从头写游戏服务器框架(三)","categories":[],"tags":[]},{"title":"游戏数学","slug":"游戏开发/数学","date":"2020-04-12T12:51:33.755Z","updated":"2020-04-12T12:15:13.737Z","comments":true,"path":"posts/5c04002e.html","link":"","permalink":"https://jinzt.github.io/posts/5c04002e.html","excerpt":"","text":"首页学习课程 高等数学 线性代数 概率论和数理统计 离散数学","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"微信公众号","slug":"游戏开发/微信公众号","date":"2020-04-12T12:51:33.754Z","updated":"2020-04-12T12:15:13.737Z","comments":true,"path":"posts/f66864f1.html","link":"","permalink":"https://jinzt.github.io/posts/f66864f1.html","excerpt":"","text":"注册公众平台登录https://[email protected] wuji5890302 注册 微信公众平台接口测试帐号申请因为没有认证的公众号,所以申请测试账号 测试号信息 12appID wxde374247d5e85784appsecret dbd6f17e21577b68113b141eae8172f2 接口配置信息 12URL https://wechat.jinzt.top 微信后台回调通知我们自己的web服务器的域名Token weixin 我自己设置的token JS接口安全域名 1games.jinzt.top 客户端的域名(客户端会使用jssdk) 第一步 本地搭建一个web服务器安装windows版本nginx 在html目录下新建 wechat.jinzt.top 目录,然后在其目录下新建 index.html 内容为 1234567891011<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程(runoob.com)</title></head><body> <h1>我的第一个标题</h1> <p>我的第一个段落。</p></body></html> 修改 nginx.conf 123456789 # wechat.jinzt.top server { listen 80; server_name wechat.jinzt.top; location / { root html/wechat.jinzt.top.; index index.html index.htm; }} 通过 http://localhost/wechat.jinzt.top/ 即可访问 第二步 域名解析要想同步域名访问就得有一个域名,在阿里买一个域名 jinzt.top,添加一个域名解析 1ipv4 wechat.jinzt.top 解析到外网centos主机 144.34.170.63 并且给 jinzt.top 申请一个免费 ssl 证书,下载nginx版本 frp配置** 远程centos主机144.34.170.63配置 **vim frps.ini 12345678910111213141516171819202122232425[common]bind_port = 7000#kcp_bind_port = 7000vhost_http_port = 8080#vhost_https_port = 443# 自定义二级域名subdomain_host = frp.jinzt.top# 设定一个token,frp客户端要连接本服务器必须配置一样的tokentoken = 12345678# 端口白名单allow_ports = 5000-8000tcp_mux = truemax_pool_count = 5# web面板dashboarddashboard_addr = 0.0.0.0dashboard_port = 7500dashboard_user = admindashboard_pwd = 123456# 配置loglog_file = ./frps.log ./frps -c ./frps.ini 本地frpc修改 frpc.ini 添加一个web配置项 123456[test_wechat]type = httplocal_ip = 127.0.0.1local_port = 80locations = /custom_domains = wechat.jinzt.top 启动frpc 1.\\frpc.exe -c ./frpc.ini 通过域名访问现在就可以通过http://wechat.jinzt.top:8080/进行访问了,但是这里不支持ssl,而且后面必须带一个8080端口进行访问,接下来就通过nginx来解决 ssl访问及8080端口隐藏在centos机安装nginx 123456yum install nginxyum install lrzszcd /etc/nginxmkdir certcd certrz 分别上传2476612_jinzt.top.pem 和 2476612_jinzt.top.key 配置ssl 隐藏8080https://www.jianshu.com/p/b4988508faa3 vim /etc/nginx/sites-enabled/default 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364# sslserver { listen 443 ssl; server_name wechat.jinzt.top; ssl_certificate /etc/nginx/cert/2547643_wechat.jinzt.top.pem; ssl_certificate_key /etc/nginx/cert/2547643_wechat.jinzt.top.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://wechat.jinzt.top:8080; } proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Forwarded-Proto $scheme; #error_log /var/log/nginx/wildcard.jinzt.top.log debug; #access_log /var/log/nginx/wildcard.jinzt.top.access.log main; }``建议公众号开发者使用中控服务器统一获取和刷新Access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务##[官方文档](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432)## 微信web开发者工具- [下载](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140)## 支付- [tvrcgo/weixin-pay](https://github.com/tvrcgo/weixin-pay)- [befinal/node-tenpay](https://github.com/befinal/node-tenpay)- [supersheep/wechat-pay](https://github.com/supersheep/wechat-pay/tree/master/lib)## 文章- [SilenceHVK/wechatByNode](https://github.com/SilenceHVK/wechatByNode)- [sofish/wechat.js](https://github.com/sofish/wechat.js)- [liuxing/koa2-wechat](https://github.com/liuxing/koa2-wechat/tree/master/lesson4)## 准备- 1.nodejs- 2.mysql安装nodejs [下载](http://nodejs.cn/download/)安装koa```bashnpm install --save koa 简单实用 创建 app.js 12345678910111213141516171819var koa =require('koa');var app=new koa();//配置路由//中间件//express写法//app.use(function(req,res){//// res.send('返回数据')//})app.use( async (ctx)=>{ ctx.body='你好 koa2.x';})app.listen(3000); 启动server 1node app.js 安装 mongodb ### 请问微信 JSSDK 分享接口,如何绑定多个 JS 接口安全域名? PHP解决微信公众号网页授权域名只能填写一个的问题","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏开发文档","slug":"游戏开发/开发文档","date":"2020-04-12T12:51:33.753Z","updated":"2020-04-12T12:15:13.737Z","comments":true,"path":"posts/8c7a4343.html","link":"","permalink":"https://jinzt.github.io/posts/8c7a4343.html","excerpt":"","text":"首页基本教程知识体系 软件工程理论 面向过程编程 面向对象编程 设计模式 数据驱动编程 文档编写 视频教程其它 概要设计说明书 文档那些事儿 推荐书籍 从程序员到项目经理 参考 函数式编程语言的「天然支持并行与并发」是不是吹牛? 函数式编程扫盲篇 C++并发实战15:函数式编程 对函数式编程简单理解 DOP基本教程 什么是数据驱动编程 数据驱动编程之表驱动法 用数据驱动思想来设计游戏-读《游戏编程精粹1》 数据驱动编程 请问有基于数据驱动的游戏框架吗(不是指引擎)? 实体-组件-系统(ECS)实现数据驱动的游戏框架 创建游戏中的人类世界:数据驱动的开放世界AI框架 数据驱动设计思路——带你一天完成独立HTML5游戏 怎么理解游戏开发中的“Data-Driven Design”? 游戏程序开发的基本理念和方法 dd 什么是游戏开发的实体系统框架 Fast Entity Component System ntityX - A fast, type-safe C++ Entity-Component system 你会写软件开发文档吗?软件开发中的文档和分类软件开发文档","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏安全","slug":"游戏开发/安全","date":"2020-04-12T12:51:33.751Z","updated":"2020-04-12T12:15:13.737Z","comments":true,"path":"posts/3ba7cf91.html","link":"","permalink":"https://jinzt.github.io/posts/3ba7cf91.html","excerpt":"","text":"首页限制某个IP或IP段访问服务器指定端口 win2003 ip安全策略 限制某个IP或IP段访问服务器指定端口图文说明 windows防火墙设置只允许指定IP访问指定端口","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"UML","slug":"游戏开发/UML","date":"2020-04-12T12:51:33.750Z","updated":"2020-04-12T12:15:13.737Z","comments":true,"path":"posts/8c7a4343.html","link":"","permalink":"https://jinzt.github.io/posts/8c7a4343.html","excerpt":"","text":"首页基本教程知识体系 软件工程理论 面向过程编程 面向对象编程 设计模式 数据驱动编程 文档编写 视频教程其它 概要设计说明书 文档那些事儿 推荐书籍 从程序员到项目经理 参考 函数式编程语言的「天然支持并行与并发」是不是吹牛? 函数式编程扫盲篇 C++并发实战15:函数式编程 对函数式编程简单理解 DOP基本教程 什么是数据驱动编程 数据驱动编程之表驱动法 用数据驱动思想来设计游戏-读《游戏编程精粹1》 数据驱动编程 请问有基于数据驱动的游戏框架吗(不是指引擎)? 实体-组件-系统(ECS)实现数据驱动的游戏框架 创建游戏中的人类世界:数据驱动的开放世界AI框架 数据驱动设计思路——带你一天完成独立HTML5游戏 怎么理解游戏开发中的“Data-Driven Design”? 游戏程序开发的基本理念和方法 dd 什么是游戏开发的实体系统框架 Fast Entity Component System ntityX - A fast, type-safe C++ Entity-Component system 你会写软件开发文档吗?软件开发中的文档和分类软件开发文档","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏开发/open games","slug":"游戏开发/open games","date":"2020-04-12T12:51:33.748Z","updated":"2020-04-11T16:30:31.504Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"## 25个HTML5和JavaScript游戏引擎库 ## A WebGL + TypeScript 2D Game framework A lightweight, fast and extensible game server for Minecraft 坦克大战游戏平台 CodeGame mk.js是一个使用HTML5 canvas和JavaScript创建的简单格斗游戏 Daimonin MMORPG 网络即时战略游戏 Hive Rise 开源赛车游戏 Stunt Rally 一款像素风格的策略冒险游戏 Cortex Command Diablo 游戏的移植版 devilution-nx 基于 egret 的棋牌斗地主游戏 Poke 纯 C++ 实现的捕鱼游戏 CppFishingCode CHessCHS中国象棋 多人游戏 Pienoon VoltAir 是 google 的一款开源游戏 五子棋联机游戏 Five-children-chess 格斗游戏 Punch & Kick 超级玛丽游戏 Mega Mario html5 斗地主游戏 https://m.ihouser.com excaliburjs/excaliburjs.github.io example-.io-game HTML5 game for 5th Game Off Jam Multiplayer .io Pac-Man game Realtime multiplayer .IO game Real-time multiplayer game server slither.io imitation socket-io-game An online poker game server powered by Redis, node.js and socket.io Multiplayer game engine/framework built using SocketCluster and Phaser A web adaptation of the social deduction board game Secret Hitler. Multiplayer online chess game use Vue , Nodejs, Webpack, Em6, Socket.io, Mongodb, Express io类开房间游戏类型,服务器使用golang,客户端使用cocos creator 纯js实现 HTML5游戏开发的基本流程+P2.js物理引擎实战开发 原生 JS 智能推箱子游戏 aitxz 仿贪吃蛇大作战游戏 laya-snakes 贪吃蛇游戏的人工智能 Snake-AI 纯 JS 实现商业版飞机大战游戏 Plane 在线的 HTML5 游戏 BrowserQuest 塔防游戏 Tower-Defense 基于浏览器的 RPG 游戏 Roguish HTML5 海藻逃离游戏 Alge’s Escapade 俄罗斯方块游戏 Blockrain.js 用 JavaScript 实现的 pong 游戏","categories":[],"tags":[]},{"title":"unity收集的学习资源","slug":"游戏开发/learn-source","date":"2020-04-12T12:51:33.747Z","updated":"2020-04-12T12:15:13.737Z","comments":true,"path":"posts/95e6e992.html","link":"","permalink":"https://jinzt.github.io/posts/95e6e992.html","excerpt":"","text":"介绍国外视频 www.skillshare.com www.classcentral.com www.coursera.org/ www.gamedesigning.org www.raywenderlich.com 国外教程 https://noobtuts.com/unity 优秀教程 Unity 3D 网络游戏架构设计 UNITY 2D AND 3D GAME DEVELOPMENT unity帧同步游戏极简框架及实例(附客户端服务器源码) 素材站点 https://unitylist.com/ http://7dgame.com/ ww386362087/dn_asset ## 给初学者看的Unity教程(零):如何学习Unity3D Unity教程 | 从零开始制作一款3D炸弹超人游戏 UI框架 游戏UI框架设计 else 使用Unity实现依赖注入 运用Unity实现依赖注入[结合简单三层实例] 使用Unity 实现依赖注入 运用Unity实现依赖注入[有参构造注入] 使用 Unity (三):理解和使用依赖注入的键 参考 【Unity3D实战】技能系统与技能编辑器的设计 Unity3D手游开发日记(2) - 技能系统架构设计 untiy 技能系统及编辑器 Unity角色技能及技能编辑器设计之概念篇 Unity3D 战斗技能系统架构 MMORPG中技能战斗系统的技术分享 游戏开发笔记(九)——技能系统 MMORPG游戏服务器 - 技能系统设计【上篇】 [Unity实战]结合UGUI制作技能系统 MMORPG游戏服务器技能系统设计:表格字段与技能程序框架 unity3d 技能编辑器 buff系统 简单的技能Buff系统 Unity–简单Buff系统 Buff系统框架设计 BUFF系统的实现 RPG2.0战斗框架学习5之目标被击处理 技能系统的数据结构 一个通用高自由度技能系统的设计(一)","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"unity3d","slug":"unity3d","permalink":"https://jinzt.github.io/tags/unity3d/"}]},{"title":"游戏词汇","slug":"游戏开发/game english","date":"2020-04-12T12:51:33.745Z","updated":"2020-04-12T12:15:13.737Z","comments":true,"path":"posts/2786125f.html","link":"","permalink":"https://jinzt.github.io/posts/2786125f.html","excerpt":"","text":"首页参考 游戏英文词汇700+","categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"}],"tags":[{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"}]},{"title":"游戏开发/baselib","slug":"游戏开发/baselib","date":"2020-04-12T12:51:33.743Z","updated":"2020-04-11T16:30:31.473Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"https://github.com/wjakob/filesystem/tree/master/filesystem 关服方式1.GM关服(自身也是玩家) 2.web关服 通过连接服务 3.杀进程 不能保存数据 需知道服务的进程号 流程服务器状态 启动中 运行中 重启中 关服中 已关闭 服务器启动时设置为启动中状态 禁止所有客户端连接 启动所有服务 收到所有服务已启动消息后设置为运行中 只有在运行中状态才允许客户端连接游戏 一个连接在请求关服后 设置为关服中状态 在关服状态下禁止连接(有新的连接直接杀掉) 需关闭所有除请求关服者之外所有的客户端连接(要保存数据) 通知关闭所有的服务 在收到所有的服务已关闭消息 设置为已关闭状态 像请求关服者发送已关服成功消息(或以断开连接表示) 视情况决定是否直接退出 连接服务器 常用数据交换语言 msgpack 基本教程 玩转Protocol Buffers PBC is a google protocol buffers library for C without code generation. 介绍pbc是lua结合protobuf方案,由云风编写pbc pbc设计理念 pbc github地址 pbc使用安装protobuf http://blog.csdn.net/xiexievv/article/details/47396725 git clone https://github.com/cloudwu/pbc cd pbc make基本教程 玩转Protocol Buffers PBC is a google protocol buffers library for C without code generation. protobuf lua 在lua环境中使用protobuf 推荐个protobuf的lua版 用protoc-gen-lua生成PB的lua代码 cocos2dx3.4 lua整合protobuf pdb bind lua Google 的开源技术protobuf 简介与例子 序列化悍将Protobuf-Net,入门动手实录 linux安装使用protobuf参考 http://blog.csdn.net/xiexievv/article/details/47396725 git clone https://github.com/google/protobuf.git sudo apt-get install autoconf automake libtool curl make g++ unzip cd protobuf/src vim autogen.sh 替换curl $curlopts -O https://googlemock.googlecode.com/files/gmock-1.7.0.zip 为 curl $curlopts -L -o gmock-1.7.0.zip https://github.com/peter-wangxu/gMock/archive/1.7.0.zip ./autogen.sh ./configure make make check sudo make install sudo ldconfig 命令安装 sudo apt-get install protobuf-compilerRpc protobuf+RPC的几个C++实现 sd Protobuf生态圈(上)简介和数据库粘合层 protobuf入门 常用数据交换语言 msgpack 基本教程 玩转Protocol Buffers PBC is a google protocol buffers library for C without code generation. 网络游戏协议以及分发模块的设计 基本教程xml解析库 XML解析库比较 XML库,libxml2使用方法 rapidxml,一个快速的xml库 SlimXml和TinyXml,RapidXml的性能对比 tinyxml sourceforge TinyXML:一个优秀的C++ XML解析器 C++之tinyXML使用 Linux 下配置Tinyxml,将其编译为静态库 rapidxml RAPIDXML中文手册 rapidxml读取文件 pugixml 官网 pugixml的简单使用 excel2xml 游戏开发–将excel转化成xm 一步步学会用Python导出Excel为Lua/Json/Xm excel2xml xls2xml 基本教程c log 基本教程 c log C++ log C++ log easylogapp spdlog glog log4z 日志需求1.日志打印级别 DEBUG INFO WARN ERROR(D I W E)2.控制台日志输出颜色区分3.日志滚动包括以天为单位及文件大小滚动4.日志打印可动态设置打印级别(1.日志暴增时提供打印级别 2.需更详细信息时生产环境降低到DEBUG级别) 日志文件名日志文件名.日期.时间.进程id.loglogfile_test.20181111-144002.3605.log 日志打印规范日期 时间 级别 ID 正文2018-11-14 12:14:15.092 LOG_INFO 100 官方 libuv 源码分析 libuv源码分析——从libuv说开来 libuv 中文编程指南 libuv中文API手册,中文教程 博客 基于libuv的TCP设计(一) 基于libuv的TCP设计(二) libuv 高并发异步使用 Libuv中文文档之线程 使用libuv实现简单的异步WEB服务器 基于libuv的最精简Web服务器 Boost.Asio和Libuv服务器实现案例 libuv轻松实现维持服务器端300+连接和执行客户端命令控制 libuv服务器端包装类源代码分享 并发服务器(一):简介 相关代码 MOM libuv的windows环境下的使用。 whatisgame / galaxy_libuv shadowsocks-libuv wqvbjhc/libuv_tcp billywhizz/ws-uv liigo/tinyweb erikdubbelboer/libuv-lua-http-server haywire/haywire adzhang/uv_server TIME-GATE/libuv-service 4Fork 4 shshheyi/XTransServer btrask/libasync libuv wrapper skypjack/uvw larroy/uvpp hnakamur/couv steveyen/uv","categories":[],"tags":[]},{"title":"成长历经","slug":"成长/README","date":"2020-04-12T12:51:33.739Z","updated":"2020-04-12T12:37:56.801Z","comments":true,"path":"posts/50dc23e.html","link":"","permalink":"https://jinzt.github.io/posts/50dc23e.html","excerpt":"","text":"","categories":[{"name":"成长","slug":"成长","permalink":"https://jinzt.github.io/categories/%E6%88%90%E9%95%BF/"}],"tags":[{"name":"成长","slug":"成长","permalink":"https://jinzt.github.io/tags/%E6%88%90%E9%95%BF/"}]},{"title":"应该阅读","slug":"其它/阅读","date":"2020-04-12T12:51:33.735Z","updated":"2020-04-11T16:30:31.534Z","comments":true,"path":"posts/49e22dc0.html","link":"","permalink":"https://jinzt.github.io/posts/49e22dc0.html","excerpt":"","text":"应该阅读的源码 skynet redis Tinyhttpd muduo Linq TinySTL algorithms_and_data_structures Data-Structure-And-Algorithm ldcsaa/HP-Socket 游戏源码 TrinityCore forgottenserver PSS gameserver jice1001/game_server ArkGame/ARK InfiniteRasa/Game-Server SEGS - Super Entity Game Server http://segs.io/ mmoarpg game server alucard-dracula/yggdrasil theAsmodai/metamod-r sniper00/MoonNetLua jasonxiong/ServerFramework hyh111/sframe MFW3D/MFrameWork anlingbbq/MOBAGame DamienDoury/Mobamon XuBaoJunPaul/The-Warring-State evesgf/MOBAServer bryangough/MobaClone 棋牌 gamex shu 《游戏编程模式》中文版 http://gpp.tkchu.me 免费的编程中文书籍索引","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/tags/%E5%85%B6%E5%AE%83/"}]},{"title":"管理","slug":"其它/管理","date":"2020-04-12T12:51:33.734Z","updated":"2020-04-11T16:30:31.534Z","comments":true,"path":"posts/5974bf24.html","link":"","permalink":"https://jinzt.github.io/posts/5974bf24.html","excerpt":"","text":"管理本质– 提升正能量、消灭负能量– 营造正向提升的势– 敢管、对事不对人 问题 发现问题 解决问题 预防问题的再次发生 预知避免潜在未发生过的问题发生 管理原则 集合其人 整合其力 融合其心 员工教导原则 532原则 5分激励 3分表扬 2分批评 精神与物质 认可(奖励与惩罚) 流程化规范化 常规以流程化规范化为主 根据实际情况(特殊)辅以人情 理解企业 企业是创造价值的地方(盈利) 理解人的两面性(自身的角度、每个人观念有差异) 正向:真善美 善良、踏实、 负向: 自私、惰性、随波逐流 改变现状 改变现状的重要性 从小事开始一点一滴的改变 潜移默化 小事 行为 习惯 观念 把握改变的度(适可而止 环境因素) 5W1H分析法 1、对象 (What)——什么事情 2、场所 (Where)——什么地点 3、时间和程序 (When)——什么时候 4、人员 (Who)——责任人 5、为什么(Why)——原因 做到让主管无事可做 做事要考虑更细致,思维高度高 思维高度 向主管靠拢 主动完成任务(无需主管吩咐) 沟通真诚参考书籍 余世维 领袖性格","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/tags/%E5%85%B6%E5%AE%83/"}]},{"title":"关注","slug":"其它/关注","date":"2020-04-12T12:51:33.732Z","updated":"2020-04-11T16:30:31.533Z","comments":true,"path":"posts/3b008fb7.html","link":"","permalink":"https://jinzt.github.io/posts/3b008fb7.html","excerpt":"","text":"在线it学院 CSDN学院http://edu.csdn.net/yearPromotion 腾讯课堂http://ke.qq.com/ 51CTO学院http://edu.51cto.com/ 网易云课堂http://study.163.com/ 百度传课http://www.chuanke.com/ 麦子学院http://www.maiziedu.com/ 爱酷学习网http://www.icoolxue.com/ 慕课网http://www.imooc.com/ 极客学院http://www.jikexueyuan.com/ 游客学院http://www.youkexueyuan.com/ 宅客学院http://www.zker.com.cn/ 实验楼https://www.shiyanlou.com/ 为梦学院http://www.vidream.cn/ 浪曦http://www.langsin.com/ 泰客学院http://www.taikredu.com/ 课课家教育http://www.kokojia.com/ 希赛网http://www.educity.cn/ 17xuee游戏学院 领悟书生 达内 教程、博客、论坛 w3cschool菜鸟教程http://www.runoob.com/ 易百教程http://www.yiibai.com/ CSDN论坛http://www.csdn.net/ 51CTO.COMhttp://www.51cto.com/ 博客园http://www.cnblogs.com/ ChinaUnix博客http://blog.chinaunix.net/ 开源中国http://www.oschina.net/ ITPUB技术论坛http://www.itpub.net/ cocos2dhttp://www.cocos.com/ love2dhttp://love2d.org/ unity3dhttp://unity3d.com/cn/ KBEnginehttp://kbengine.org/cn/ skynethttp://skynetdoc.com/ c语言中文网http://c.biancheng.net/cpp/ 专业linux学习平台http://www.linuxeye.com/ c++爱好者https://www.cppfans.org/ CocosChina 游戏开发者 中国游戏开发者 游戏魂 游戏蛮牛 游戏产业论坛 云世界游戏开发 鸟哥私房菜 资源下载 githubhttps://github.com/ verysourcehttp://www.verysource.com/ sourceforgehttp://sourceforge.net/ http://www.codeforge.cn/code 程序员联合开发网http://www.pudn.com/ IT资源网http://it.aura.cn/ 商业源码网http://www.zzcodes.net/ 资源爱好者http://www.aihao.org/ 搜客网http://www.soke163.com/ 车库源码网http://www.src.cool/portal.php 9秒社团http://www.9miao.com/ 游戏咖啡屋 关注优秀个人博客 [云风 陈硕的Blog 知乎 程序员 为项目编写Readme.MD文件 sniperHW 知然 嘻咪 游戏服务器开发专栏 寒风","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/tags/%E5%85%B6%E5%AE%83/"}]},{"title":"Wireshark 使用","slug":"其它/Wireshark","date":"2020-04-12T12:51:33.730Z","updated":"2020-04-12T12:39:59.739Z","comments":true,"path":"posts/af1b7b64.html","link":"","permalink":"https://jinzt.github.io/posts/af1b7b64.html","excerpt":"","text":"Wireshark参考 官网 Wireshark安装使用及报文分析(图文详解) Wireshark初步入门 wireshark怎么抓包 wireshark抓包详细图文教程 网络抓包工具 wireshark 入门教程 WIRESHARK 实用过滤表达式 Wireshark过滤规则 tcp dst port 19999 src host 172.18.4.175 expert.message==”ACK”","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"tool","slug":"tool","permalink":"https://jinzt.github.io/tags/tool/"}]},{"title":"vscode 使用","slug":"其它/vscode","date":"2020-04-12T12:51:33.729Z","updated":"2020-04-12T12:39:57.905Z","comments":true,"path":"posts/b84c37ec.html","link":"","permalink":"https://jinzt.github.io/posts/b84c37ec.html","excerpt":"","text":"首页基础教程 官网 Visual Studio Code 试用体验总结 vscode配置C/C++的编译调试环境 剖析并利用Visual Studio Code在Mac上编译、调试c#程序 Visual Studio Code的基本使用 在Visual Studio Code中配置GO开发环境 利用VSCode进行C/C++开发 结合MinGw64搭建gcc环境第一步 MinGW-W64先下载 离线安装包(下载地址), 选择 MinGW-W64 GCC-8.1.0 x86_64-posix-seh版本 下载 第二步 解压 第三步 配置环境变量系统变量,找到Path变量,添加 C:\\mingw64\\bin新建LIBRARY_PATH变量,在其值中加入C:\\mingw64\\lib这是标准库存放的路径;新建C_INCLUDE_PATH变量,在其值中加入C:\\mingw64\\include这是Include查找头文件的路径; 如果要链接 mysql C_INCLUDEDE_PATH 添加 C:\\Program Files\\MySQL\\MySQL Server 5.7\\include; 创建 gcc.exe 的副本 cc.exe创建 mingw32-make 副本 make.exe 参考msys2安装MSYS2 + MinGW-w64 + Git + gVim 环境配置msys2MSYS2开发环境搭建 如何为 VSCode 开发一个扩展插件VSCode 使用教程:使用好的工具提高你的工作效率 Windows下使用Visual Studio Code搭建Go语言环境 告别xshell,使用vscode远程linux开发 使用vscode远程linux开发 下载vscode insider 地址 下载ssh remote 扩展 其它问题vscode连接不到扩展商店 1文件》》首选项》》设置》》应用程序》》》代理服务器","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"tool","slug":"tool","permalink":"https://jinzt.github.io/tags/tool/"}]},{"title":"其它/vps","slug":"其它/vps","date":"2020-04-12T12:51:33.727Z","updated":"2020-04-11T17:51:33.093Z","comments":true,"path":"posts/0.html","link":"","permalink":"https://jinzt.github.io/posts/0.html","excerpt":"","text":"免费容器服务站HerokuKubSail KubeSail免费无限制容器服务申请方法 https://vipiu.net/archives/2019/07/15/2015.html arukas.io 折腾之使用日本arukas.io的免费docker服务建立GitLab 便宜的 vps https://tinykvm.com/ https://alphavps.bg https://hostodo.com https://www.vultr.com/ fad10c60368a url:https://billing.spartanhost.net/account:[email protected]:_Wuji5890302pin:5890 个人vpsurl https://billing.virmach.com/clientarea.phpaccount:[email protected]:_Wuji5890302 Your IP is: 172.245.154.124Your Username is: rootYour Password is: e8m8Ml8WjbO6CA72QxPlease CHANGE the password once you have successfully logged in. 搭建 vpnhttps://yuan.ga/v2ray-complete-tutorial/https://zshttp.com/1310.html 自动安装 123bash <(curl -L -s https://install.direct/go.sh)# 上列命令会自动安装 V2Ray,然后执行下面命令运行systemctl start v2ray 安装完成后会新增下列文件: 12345/usr/bin/v2ray/v2ctl:V2Ray 工具,用于给程序自身调用/usr/bin/v2ray/v2ray:V2Ray 核心程序/etc/v2ray/config.json:配置文件/usr/bin/v2ray/geoip.dat:IP 数据文件,V2Ray 路由功能时有用,下同/usr/bin/v2ray/geosite.dat:域名数据文件 vim /etc/v2ray/config.json 新增 123456789101112131415161718192021222324"inboundDetour": [{ "protocol": "shadowsocks", "port": 30001, "settings": { "method": "aes-256-cfb", "password": "v2ray", "udp": false } }, { "protocol": "shadowsocks", "port": 30002, "settings": { "method": "aes-256-cfb", "password": "v2ray", "udp": false } },], "log": { "loglevel": "warning", "access": "/var/log/v2ray/access.log", "error": "/var/log/v2ray/error.log" }, inboundDetour 由于 Shadowsocks 的限制,多用户的时候只能开多个端口,所以上面配置了两组 重启 12systemctl stop v2raysystemctl restart v2ray","categories":[],"tags":[]},{"title":"vagrant 使用","slug":"其它/Vagrant","date":"2020-04-12T12:51:33.725Z","updated":"2020-04-12T12:39:57.905Z","comments":true,"path":"posts/e6ca16c8.html","link":"","permalink":"https://jinzt.github.io/posts/e6ca16c8.html","excerpt":"","text":"1,介绍Vagrant我们做web开发的时候经常要安装各种本地测试环境,比如apache,php,mysql,redis等等。出于个人使用习惯,可能我们还是比较习惯用windows。虽然说在windows下搭建各种开发环境是可行的,各大开发环境都有windows版本。然而在windows下配置有时候会显得繁琐,并且还会导致开发环境(windows)和生产环境(lunix)不一致。 能不能在windows下也像linux那样开发?也许你想到了,用虚拟机。用虚拟机装个linux系统就好了。装完linux系统就设置共享目录,设置网络端口映射,等等。好像也有那么点繁琐。 还有,假如我们是一个团队进行开发,那么每个人的电脑上都要装个虚拟机+ linux系统+各种运行环境。手动设置麻烦不说,大家的开发环境不太一致(可能你装了apcahe我装了nginx等),也是头疼。能不能把各种设置都自动化,并且保持整个团队的开发环境一致呢? Vagrant就是为了解决这个问题而生的。它使用开源 VirtualBox 作为虚拟化支持,可以轻松的跨平台部署。 2,下载下载VirtualBox:https://www.virtualbox.org/wiki/Downloads 下载Vagrant:https://www.vagrantup.com/downloads.html 下载虚拟镜像:http://www.vagrantbox.es/ 选择 CentOS 7.2 x64 这个 3,安装下载好上面的软件包后,先安装VirtualBox,然后安装Vagrant。都是双击即可安装的,所以没什么好介绍。下面介绍下怎么把镜像导入。 将下载好的 vagrant-centos-7.2.box 放到创建的工作目录 D:install\\linux 里面 vagrant box listvagrant box remove centos7.2 然后输入命令初始化 12vagrant init centos7.2vagrant box add centos7.2 vagrant-centos-7.2.box 检查是否导入成功 vagrant box list 4,配置用文本编辑器打开 D:install\\linux 目录下的 Vagrantfile 文件便可以进行一些常用配置。下面列举出几个常用的配置。要用到其他配置请访问官网文档或者百度谷歌一下。 1,端口映射 config.vm.network :forwarded_port, guest: 80, host: 8080 把上面这句代码前面的#号去掉。它表示映射本机的8080端口到虚拟机的80端口 优点:简单、容易理解、容易实现外网访问虚拟机。 缺点:需映射很多端口时较麻烦、不支持在宿主机器上使用小于1024的端口来转发(如:不能使用SSL的443端口来进行https连接)。 2,Public network(公有网络) 推荐config.vm.network "public_network", ip: "192.168.50.4"优点:方便团队协作,别人可以访问你的虚拟机。 缺点:需要有网络,有路由器分配IP 3,目录映射 config.vm.synced_folder "D:/www", "/var/www/html" 如果启用上面的命令,表示把本机的data目录共享到虚拟机里的/var/www目录 5,启动 进入目录 D:install\\linux 后执行命令 vagrant up 如果是win7 可能会提示 powershell 版本达不到要求,按照 https://www.jianshu.com/p/16cd4b25249c 升级 powershell 虚拟机启动之后则可以通过 vagrant ssh 联入虚拟机进行进一步的环境配置,或者软件安装相关的工作,在Windows系统下,并不能直接通过 vagrant ssh 连到虚拟机,需要使用 Putty,Xshell 等第三方工具进行连接。连接地址127.2.0.1,端口2222。登录的帐号root的密码为 vagrant 6,导出 在cmd里进行工作目录后,执行下面命令 vagrant package --output centos-7.2.box 完成后会在当前目录就会生成package.box,之后新建虚拟机则可使用这个box。如果事先在你的虚拟机里建立好了各种开发环境,那么你直接把这个box给你的团队其他成员安装,这样就可以省去一台台电脑部署的时间,还可以保持开发环境一致。很方便有木有。 7,其他命令 下面列举出一些常用的cmd操作命令 12345678vagrant up //(启动虚拟机)vagrant halt //(关闭虚拟机——对应就是关机)vagrant suspend //(暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)vagrant resume //(恢复虚拟机 —— 与前面的暂停相对应)vagrant box remove centos6.6 //(移除box,其中centos6.6是box名)vagrant destroy //(删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留)vagrant ssh // SSH登录到该虚拟机vagrant reload // 重载 配置centos环境使用 vagrant ssh 命令登录到该虚拟机 默认账号密码vagrant vagrantroot vagrant 或者在xshell上访问,ip:127.2.0.1 port:2222 账号密码:root/vagrant 切换到管理员模式 su 更换国内源 12345678910mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/下载阿里云源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo或者网易云源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo3、之后运行yum makecache生成缓存yum makecache4、更新yum -y update 安装基础工具 123yum install wget curl lrzsz git unzip zip net-tools vimyum install golang vim-golangyum install nginx 参考 vagrant文档 vagrant + centos/7 搭建自己的本地开发环境 搭建宝塔(可选) 123yum updateyum install -y vim lrzsz wget curl git subversion unzip zip net-tools unzip zipyum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh 记住最后的 地址用户名及密码Bt-Panel: http://183.17.229.18:8888 http://172.12.10.117:8888username: fcfu5v0dpassword: 3ec942f9","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"tool","slug":"tool","permalink":"https://jinzt.github.io/tags/tool/"}]},{"title":"暂存收集","slug":"其它/tmp","date":"2020-04-12T12:51:33.723Z","updated":"2020-04-12T09:43:05.262Z","comments":true,"path":"posts/7424e8cb.html","link":"","permalink":"https://jinzt.github.io/posts/7424e8cb.html","excerpt":"","text":"W3C教程知识体系工具 菜鸟工具 Git教程 语言 C语言教程 C++ 教程 Lua教程 Python基础教程 Python 3 教程 PHP教程 JSON教程 XML教程 Linux教程 Linux 教程 TCP/IP 教程 数据库 SQL教程 MySQL教程 Redis教程 Memcached教程 其它 正则表达式教程","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/tags/%E5%85%B6%E5%AE%83/"}]},{"title":"应该star、","slug":"其它/Star","date":"2020-04-12T12:51:33.713Z","updated":"2020-04-11T16:30:31.531Z","comments":true,"path":"posts/949f2654.html","link":"","permalink":"https://jinzt.github.io/posts/949f2654.html","excerpt":"","text":"Star CodeBasicLib loki LogLib easyloggingpp glog spdlog zlog ProtoLib protobuf rapidxml tinyxml2 json cJSON MessagePack IniLib inifile2 ini-parser ActorLib actor-framework CPP-Actor-framework PluginCoroutineLib cloudwu/coroutine NetworkLib Libevent libuv muduo ZeroMQ handy fastrpc server-framework HttpLibGameClienFrame love2d cocos2dx unity3d MonoGame godot Serious-Engine GamePlay BansheeEngine Urho3D ejoy2d LumixEngine KlayGE GameServerFrame skynet kbengine NoahGameFrame scut Firefly cuberite Hercules fflib Survive OpenGameServer 优秀 魔兽开源服务器 ArkCORE LaPosadaDelOcio Infinite Rasa - Game Server EasyGameServer (for cocos2dx) distributed gateway server(php game server, socket server) Game Server Programming Step By Step PhantomCore use c++/lua/protocolbuffer. Hercules CGSF MMO-Framework 良好 server_framework zhanjunxiong/z NetMauMau chenboo/GameServer BlackCat MetazionWorld winner DServerFramework Simple IOCP Game Server Framework PlayFrame a Distributed mmorpg game server thegamelife WOWDIAMOND sarimoly/gameserver poechen/GameServer mud game programming metamod-p worrysprite/GameServer domi_server cpp_game_server ChaosServer flygame RoCore foryoung365/GameServer ServerFramework moon_net sframe Heuristicks/core PandaCore blizzlikecore sample-netgame-server 一般 Community-driven Google Protobuf definitions for a game client/server. shaovie/gserver TitansTech/GameServer dakara-server gabriel All-Monster-Obliterated Orca hkitty/server SocketGameServer gse AutoUpdater NAMS gameRankServer arcticdev mudgame ServerForMogan imxserver tidaybreak/game-server MobaServer faq_server MediaGroop/GameServer server test Rentz mvm-reversed lite_client master/robot OpenGameLuaLib pbc lua-snapshot lua-conf luasql lua-cjson lua-MessagePack luaunit ltest pack tool wsrlua luasocket luvit lua_async_task else behaviac","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/tags/%E5%85%B6%E5%AE%83/"}]},{"title":"markdown教程","slug":"其它/markdown","date":"2020-04-12T12:51:33.711Z","updated":"2020-04-12T12:39:57.905Z","comments":true,"path":"posts/d1d9a8a.html","link":"","permalink":"https://jinzt.github.io/posts/d1d9a8a.html","excerpt":"","text":"markdown教程 作业部落 vscode中md转pdf VSCode如何将Markdown转为PDF 首页Markdown教程 jekyll教程 Markdown 语法说明 Markdown——入门指南 GitHub上Markdown基本使用 在 Markdown 中嵌入 UML 文档 例子 markdown简明语法 博客搭建 博客来源于Havee博客,克隆github地址为https://github.com/iHavee/ihavee.github.io 一步步在GitHub上创建博客主页-最新版 博客编写工具 notepad++安装NppMarkdown插件 MaHua编辑器 Cmd Markdown sublime text安装Markdown Editing和Markdown Preview 插件 MEditor.md gitbook 在自己的服务器上安装GitBook Centos之GitBook文档工具安装与使用-yellowcong 基于centos6构建私有gitbook平台 在centos7上安装gitbook windows下搭建gitbook平台 Windows上使用gitbook制作电子书 window安装gitbook 安装phantomjs 安装Calibre制作静态网页电子书 gitbook build gitbook serve 制作电子书pdf gitbook pdf https://blog.csdn.net/stu059074244/article/details/77767835 编辑器 gitbook editor 写书 知行 高级Bash脚本编程指南(https://www.gitlore.com/operatesystem/%E9%AB%98%E7%BA%A7Bash%E8%84%9A%E6%9C%AC%E7%BC%96%E7%A8%8B%E6%8C%87%E5%8D%97) ProGit第二版 C++并发编程 数据结构思维 笨办法学Linux中文版 Docker 从入门到实践 图说设计模式 gitbook安装 C:\\Program Files (x86)\\Calibre2 https://www.html.cn/archives/6622 -Markdown中使用mermaid画流程图https://mermaidjs.github.io/ https://jingyan.baidu.com/article/ab69b2708cc5392ca7189fd7.html 12345678graph TBA[Apple]-->B{Boy}A---C(Cat)B.->D((Dog))C==喵==>Dstyle A fill:#2ff,fill-opacity:0.1,stroke:#faa,stroke-width:4pxstyle D stroke:#000,stroke-width:8px; 12345graph LR A[Square Rect] -- Link text --> B((Circle)) A --> C(Round Rect) B --> D{Rhombus} C --> D 使用mermaid画思维导图123456graph LRA[Markdown画图]A-->B(流程图)A-->C(时序图)A-->D(思维导图)A-->E(类图) 使用PlantUML Gravizo绘制类图![Alt text](https://g.gravizo.com/svg? digraph G { main -> parse -> execute; main -> init; main -> cleanup; execute -> make_string; execute -> printf init -> make_string; main -> printf; execute -> compare; }) <img src=’https://g.gravizo.com/svg?@startuml; actor User;participant “First Class” as A;participant “Second Class” as B;participant “Last Class” as C; User -> A: DoWork;activate A; A -> B: Create Request;activate B; B -> C: DoWork;activate C; C –> B: WorkDone;destroy C; B –> A: Request Created;deactivate B; A –> User: Done;deactivate A; @enduml; ‘> digraph digraph G { main -> parse -> execute; main -> init; main -> cleanup; execute -> make_string; execute -> printf init -> make_string; main -> printf; execute -> compare;} showdochttps://github.com/star7th/showdoc","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"tool","slug":"tool","permalink":"https://jinzt.github.io/tags/tool/"}]},{"title":"其它/hexo-blog","slug":"其它/hexo-blog","date":"2020-04-12T12:51:33.710Z","updated":"2020-04-12T12:39:58.067Z","comments":true,"path":"posts/ad88b335.html","link":"","permalink":"https://jinzt.github.io/posts/ad88b335.html","excerpt":"","text":"","categories":[],"tags":[]},{"title":"git 使用","slug":"其它/git","date":"2020-04-12T12:51:33.709Z","updated":"2020-04-12T12:39:57.905Z","comments":true,"path":"posts/86c88f6a.html","link":"","permalink":"https://jinzt.github.io/posts/86c88f6a.html","excerpt":"","text":"git 使用 git安装yum install git 创建一个目录 将learngit目录编程一个仓库cd learngitgit init 创建一个文件touch readme.txt使用 git status 查看git状态,会提示readme.txt 没有纳入仓库版本管理 git简介安装在centos中使用命令进行安装 1yum install git 安装完成后进行设置 12git config --global user.name "jinzt"git config --global user.email "[email protected]" 简单使用 1234567mkdir learngit # 创建一个目录cd learngitgit init # 将目录变成一个仓库touch readme.txtgit add readme.txt git commit -m "add readme.txt"git status 克隆指定分支git clone -b <指定分支名> <远程仓库地址> 时光穿梭机远程仓库分支管理git clone https://git.huoys.com/qp/h5by.gitcd h5bytouch README.mdgit add README.mdgit commit -m “add README”git push -u origin mastergit checkout -b developgit push -u origin develop 标签submodule自定义git忽略特殊文件 常用命令总结1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950用命令 `git add <file>`将文件添加到仓库git add readme.txt再使用git status 查看,会提示文件可以被提交,也可以使用 git rm命令撤销添加使用`git rm --cached <file>`进行撤销添加git rm --cached readme.txt用命令 `git add .` 将当前目录修改都添加到仓库git add .用命令 `git checkout .` 撤销所有修改用命令 `git checkout -- <file>` 撤销单个文件修改git pull 强制覆盖本地的代码git fetch --allgit reset --hard origin/mastergit pullgit branchgit branch -agit add filenaem.txtgit add .gir rm -cagit reset --hard headgit commit -m "up"git pushgit diff两个版本对比git diff 版本1sha 版本2sha查看版本日志git log更新到指定版本git reset --hard [commit哈希值]git merge 撤销(https://www.jianshu.com/p/4090ba4f9963)git reset --merge merge前的任何一次提交的hash串撤销conmitgit reset --soft HEAD~1 …or create a new repository on the command line echo “# blog” >> README.mdgit initgit add README.mdgit commit -m “first commit”git remote add origin https://github.com/jinzt/blog.gitgit push -u origin master …or push an existing repository from the command line git remote add origin https://github.com/jinzt/blog.gitgit push -u origin master 基于历史版本创建分支先切换到指定分支git checkout 查看记录,并记录历史版本号git log基于想要的历史版本创建新的分支git checkout -b git push –set-upstream origin ##git基于历史commit创建分支","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"tool","slug":"tool","permalink":"https://jinzt.github.io/tags/tool/"}]},{"title":"cmake 使用","slug":"其它/fewusetool","date":"2020-04-12T12:51:33.707Z","updated":"2020-04-12T12:39:57.905Z","comments":true,"path":"posts/49e22dc0.html","link":"","permalink":"https://jinzt.github.io/posts/49e22dc0.html","excerpt":"","text":"基本教程 Visio 2013 快速入门指南 Visio2010 入门教程 如何对已经绘制好的visio流程图进行简单美化 如何使用Visio:[1]绘制思维导图 视频教程 基本教程 Office教程学习网 非凡的 Office 教程 Office家园 Office学院 Office教程网 ExcelHome 视频教程 EXCEL职场进阶技巧 EXCEL 其它 excel技巧[策划] 其它工具图标资源 多尺寸图标 编译工具 SourceLair 实验楼在线实训平台 15 款最好的 C/C++ 编译器和集成开发环境 ssh工具 xshell putty http工具 在线http post,get接口测试请求工具 思维导图 processon 项目管理 禅道 基础教程 批处理经典入门教程!(从不懂到高手) BAT 批处理脚本 教程 精通批处理教程 批处理从入门到精通 bat批处理文件命令详解 Windows 批处理bat程序设计简明教程 视频教程 批处理基础高级视频教程 MinGW安装 在www.mingw.org上下载mingw-get-setup.exe后点击安装 安装过程标记mingw-developer-toolkit、mingw32-base、mingw32-gcc-g++、msys-base并apply 系统环境变量PATH里加入C:\\MinGW\\bin;C:\\MinGW\\msys\\1.0;C:\\MinGW\\msys\\1.0\\bin; 系统环境变量新建LIBRARY_PATH变量,变量值:C:\\MinGW\\lib; 系统环境变量新建C_INCLUDEDE_PATH变量,变量值:C:\\MinGW\\include; 系统环境变量新建CPLUS_INCLUDE_PATH变量,变量值:C:\\MinGW\\include; 拷贝C:\\MinGW\\bin目录下mingw32-make.exe并重命名为make.exe MinGW安装lua环境在http://www.lua.org/download.html下载lua-5.3.4.tar.gz并解压 在git模式 cd /lua-5.3.4/src make mingw 拷贝lua53.dll、luac.exe、lua.exe到C:\\MinGW\\bin 拷贝liblua.a到C:\\MinGW\\lib 拷贝lauxlib.h、lua.h、lua.hpp、luaconf.h、lualib.h到C:\\MinGW\\includeMinGW安装pthread从 ftp://sourceware.org/pub/pthreads-win32/dll-latest/lib/x86 下载libpthreadGC2.a改名为libpthread.a并拷贝到C:\\MinGW\\lib 从 ftp://sourceware.org/pub/pthreads-win32/dll-latest/include 下载pthread.h sched.h semaphore.h并拷贝到C:\\MinGW\\include 连接时加上 -lpthreadGC2 MinGW安装GMP在https://gmplib.org/ 下载https://gmplib.org/download/gmp/gmp-6.1.0.tar.xz 解压压缩包到d盘 打开msys.bat cd d:// cd gmp-6.1.0/ ./configure make make install mingw-get msys-m4 mingw-get msys-vim mingw-get install mingw32-gmpMinGW环境配置首先,我们先在www.mingw.org上找到下载的链接地址,然后再去下载网络安装程序,很小的。我下的是最新的版本,是5.1.6。然后点击 mingw-5.1.6.exe,然后一直next,选择Download only,免得下次重做的时候还的去网上找。下完后,在点击mingw-5.1.6.exe进行安装,不过现在已经下完了,所以不会再一次的去网上下载需要的包了。到选择安装包的时候,可以全部选,也可以默认,然后就是安装,很简单的。 安装完毕后,还不能使用,因为还没设置环境变量。下面我们来设置环境变量。我安装的位置在C:\\MinGW目录。 右击我的电脑,点属性->高级->环境变量。然后: 0. 在www.mingw.org上下载mingw-get-setup.exe,安装过程中标记在mingw-developer-toolkit、mingw32-base、mingw32-gcc-g++、msys-base并apply 1、在PATH里加入C:\\MinGW\\bin,记得,如果里面还有其他的变量,记得要加个分号啊,分号得在英文输入模式下输入的。 2、新建LIBRARY_PATH变量,如果有的话,在值中加入C:\\MinGW\\lib,这是标准库的位置。 3、新建C_INCLUDEDE_PATH变量C:\\MinGW\\include。 4、新建CPLUS_INCLUDE_PATH变量,值为C:\\MinGW\\include\\c++\\3.4.5;C:\\MinGW\\include\\c++\\3.4.5;C:\\MinGW\\include\\c++\\3.4.5\\backward;C:\\MinGW\\include。 现在,环境变量已经配置完毕,我们打开一个CMD窗口,进行下验证,看我们的环境变量有没有配置成功。 在cmd下输入gcc -v,看下输出为gcc版本信息表上设置成功 5.下面测试一下:桌面新建文本文件命名为hello.c,输入以下代码: #include <stdio.h> int main(void) { printf("Hello World!\\n"); return 0; } Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp. C:\\Documents and Settings\\Administrator\\桌面>gcc hello.c -o hello C:\\Documents and Settings\\Administrator\\桌面>hello Hello World! C:\\Documents and Settings\\Administrator\\桌面> 测试成功,完毕。 使用makefile编译 添加build系统 { "cmd": ["make"], "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "working_dir": "${project_path:${folder:${file_path}}}", "selector": "source.makefile", "path": "C:\\\\MinGW\\\\bin", "variants": [ { "name": "mingw", "cmd": ["make", "mingw"] }, { "name": "Clean", "cmd": ["make", "clean"] } ] } 将C:\\\\MinGW\\\\bin目录下mingw32-make.exe 拷贝 一份命令为 make.exe 将项目在subline设为第一目录 且在该目录下必须有makefile ## 编译pbc mingw安装lua环境 cd pbc make 拷贝生成的build/libpbc.a到binding/lua53/ cd binding/lua53/ 修改makefile增加连接 -llua make 拷贝protobuf.so到 luaclib 拷贝protobuf.lua到lualib mingw 将windows lib.dll 转成 lib.a 例子(https://www.cnblogs.com/heling/archive/2013/06/05/3118573.html) ## 其它 - [win 8.1 安装使用MinGW 图文教程](http://www.cr173.com/html/68599_1.html) - [MinGW gcc 生成动态链接库 dll 的一些问题汇总](http://blog.csdn.net/liyuanbhu/article/details/42612365) - [MinGW配置pthread环境](http://blog.csdn.net/htf15/article/details/16846143) - [MingW64和MSYS开发环境](http://blog.csdn.net/hacode/article/details/19161933) 关于Nginx配置SSL证书(Https)和WebSocket的wss ssl证书生成SSL自签证书自签证书就是自己生成的证书,免费的,不支持部署浏览器的,支持浏览器的就是收费的,需要购买,这里因为是本地测试,所以就用的自签证书,买的证书可以跳过证书生成部分. 下载openssl(http://slproweb.com/products/Win32OpenSSL.html) 免费frp服务器 https://diannaobos.com/frp/ https://www.natfrp.com/ http://frp.kerwin.cn/ https://www.chuantou.org/ https://www.waiwang.men/ ## 搭建 frp 内网穿透并启用 HTTPS 访问 FRP内网穿透工具 手把手教你用frp实现内网穿透,进行远程桌面和http访问 centos7下frp后台运行以及开机自启 -[通过frp所在机器的http/socks5代理访问外网,以方便访问公司的项目] (https://bob.kim/articles/2018/06/27/1530088995977.html) 时间就是money 时间去哪了制定计划执行计划 使用滴答清单进行时间管理 时间管理工具时间去哪了时间四象限 时间管理工具时间管理工具有很多,这里推荐自己使用的 滴答清单滴答清单支持多个设备平台,可以在网页、android、ios等多个平台使用,在pc平台推荐在Chrome安装网页插件使用,下载地址 关于如何使用滴答清单可以看 这里 为了真正用好滴答清单,我创建了自己的清单体系滴答清单入门及进阶教程滴答清单:不止是清单,还能做生涯规划 教程-NotePad++ 正则表达式替换 高级用法Notepad++快捷键&正则表达式替换字符串&插件 正则表达式 正则表达式 - 教程 Explorer插件目录树","categories":[{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"tool","slug":"tool","permalink":"https://jinzt.github.io/tags/tool/"}]}],"categories":[{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/categories/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"},{"name":"运维","slug":"运维","permalink":"https://jinzt.github.io/categories/%E8%BF%90%E7%BB%B4/"},{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/categories/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"成长","slug":"成长","permalink":"https://jinzt.github.io/categories/%E6%88%90%E9%95%BF/"},{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/categories/%E5%85%B6%E5%AE%83/"}],"tags":[{"name":"phaser","slug":"phaser","permalink":"https://jinzt.github.io/tags/phaser/"},{"name":"linux","slug":"linux","permalink":"https://jinzt.github.io/tags/linux/"},{"name":"windows","slug":"windows","permalink":"https://jinzt.github.io/tags/windows/"},{"name":"tool","slug":"tool","permalink":"https://jinzt.github.io/tags/tool/"},{"name":"编程语言","slug":"编程语言","permalink":"https://jinzt.github.io/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"},{"name":"python","slug":"python","permalink":"https://jinzt.github.io/tags/python/"},{"name":"golang","slug":"golang","permalink":"https://jinzt.github.io/tags/golang/"},{"name":"汇编","slug":"汇编","permalink":"https://jinzt.github.io/tags/%E6%B1%87%E7%BC%96/"},{"name":"typescript","slug":"typescript","permalink":"https://jinzt.github.io/tags/typescript/"},{"name":"lua","slug":"lua","permalink":"https://jinzt.github.io/tags/lua/"},{"name":"c语言","slug":"c语言","permalink":"https://jinzt.github.io/tags/c%E8%AF%AD%E8%A8%80/"},{"name":"源码分析","slug":"源码分析","permalink":"https://jinzt.github.io/tags/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/"},{"name":"sql","slug":"sql","permalink":"https://jinzt.github.io/tags/sql/"},{"name":"redis","slug":"redis","permalink":"https://jinzt.github.io/tags/redis/"},{"name":"游戏系统","slug":"游戏系统","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E7%B3%BB%E7%BB%9F/"},{"name":"游戏设计","slug":"游戏设计","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E8%AE%BE%E8%AE%A1/"},{"name":"服务器框架","slug":"服务器框架","permalink":"https://jinzt.github.io/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%A1%86%E6%9E%B6/"},{"name":"nodejs","slug":"nodejs","permalink":"https://jinzt.github.io/tags/nodejs/"},{"name":"游戏素材","slug":"游戏素材","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E7%B4%A0%E6%9D%90/"},{"name":"cocos creator","slug":"cocos-creator","permalink":"https://jinzt.github.io/tags/cocos-creator/"},{"name":"游戏开发实战","slug":"游戏开发实战","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/"},{"name":"软件工程","slug":"软件工程","permalink":"https://jinzt.github.io/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/"},{"name":"游戏开发","slug":"游戏开发","permalink":"https://jinzt.github.io/tags/%E6%B8%B8%E6%88%8F%E5%BC%80%E5%8F%91/"},{"name":"unity3d","slug":"unity3d","permalink":"https://jinzt.github.io/tags/unity3d/"},{"name":"成长","slug":"成长","permalink":"https://jinzt.github.io/tags/%E6%88%90%E9%95%BF/"},{"name":"其它","slug":"其它","permalink":"https://jinzt.github.io/tags/%E5%85%B6%E5%AE%83/"}]}