- 博客(104)
- 资源 (2)
- 收藏
- 关注
转载 D3D Frustum六个裁剪平面生成原理
概念介绍正在上传…重新上传取消Frustum裁剪是CLOD中很重要的一个算法,很多文章都是一句话就过去,或者直接给出代码。但是数学推导很少给出,本文章的目的就是解释大家看这些代码中的疑问。透视投影是将相机空间中的点从视锥体(view frustum)变换到规则观察体(Canonical View Volume,CCV)中,即是世界空间的视锥体(view frustum)中的任何一个点,...
2020-04-07 14:49:23
608
转载 socket程序listen之后,不写accept函数,会是怎样一种情况?
int listen(int sockfd, int backlog);不accept 最大的监听个数就是这个backlog了因为一直没有accept,所以这个里的队列会一直在,不会减少虽然这个backlog是可以手动设置的,但是linux是最大值128如果超过这个数目了,就是无效的,最大也就128(linux下,可以设置的),win是#define SOMAXCONN
2016-03-11 14:49:00
715
原创 mysql5.7在win下安装
win7 64位下如何安装配置mysql-5.7.5-m15-winx64距离上次安装MySQL已经过去好久了。步骤这些,有可能会忘记。简单记录一下吧。(参考了一些网络上的博客。)1.mysql-5.7.5-m15-winx64.zip下载官方网站下载地址:http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.5-m15-wi
2016-03-10 23:20:04
573
转载 产生N个不重复的随机数的快速算法
int startArray[] = {0,1,2,3,<span class="number">4,5,6,7,8,9};<span class="comment">//seed array int N = 10;//随机数个数  
2016-01-29 11:48:13
407
转载 Sublime Text 2支持GB2312和GBK,解决中文显示乱码问题
Sublime Text 2是一个非常不错的源代码及文本编辑器,但是不支持GB2312和GBK编码在很多情况下会非常麻烦。不过Sublime Package Control所以供的插件可以让Sublime Text 2几乎完美地支持CJK编码的文本。安装Sublime Package Control非常简单,在Sublime Text 2上用Ctrl+~打开控制台并在里面输入以
2016-01-09 09:43:55
428
转载 function_traits
templatestruct function_traits{private: using call_type = function_traits ;public: using return_type = typename call_type::return_type; static const std::size_t arity = call_type::ar
2015-11-28 13:32:11
1608
转载 二分查找算法
int binary_search(int* a, int len,int goal){int low=0;int high= len-1;while(low high){int middle= (low+ high)/2;if(a[middle]== goal)return middle;//在左半边else
2015-11-13 17:13:26
335
转载 c++实现读写共享锁
一、使用互斥锁和条件变量实现读写锁:[cpp] view plaincopyclass readwrite_lock { public: readwrite_lock() : stat(0) { } void readLock()
2015-11-12 10:16:00
927
转载 Redis在游戏服务器中的应用
Agent`K 最近在使用Redis,忽然发现以前很多费神的事情都迎刃而解了,又应了经典:我们要做的99%的事情,别人都早已做过了!(扫盲:Redis是内存型、键值对型数据库,独立运行,不是第三方库)排行榜游戏服务器中涉及到很多排行信息,比如玩家等级排名、金钱排名、战斗力排名等。一般情况下仅需要取排名的前N名就可以了,这时可以利用数据库的排序功能,或者自己维护一个元
2015-11-04 14:43:35
1407
转载 mongodb数据文件格式(二)
mongodb数据文件格式 本文适合于对mongodb有一定了解的朋友阅读。mongodb的数据文件存在dbpath选项指定的目录里。每个库(database)都有一系列的文件:dbname.ns, dbname.0, dbname.1, ...数据文件也叫pdfile,意思是Portable Data File。 www.2cto.com dbname.ns文
2015-10-20 19:38:49
887
原创 mongodb3.x认证
MongoDB-CR Authentication failed的解决方法:use admindb.system.users.remove({}) <== removing all usersdb.system.version.remove({}) <== removing current version db.system.version.insert({ "_id" :
2015-10-19 22:11:09
355
转载 mongodb数据文件格式(一)
有人在Quora上提问:MongoDB数据文件内部的组织结构是什么样的。随后10gen的工程师Jared Rosoff出来做了简短的回答。每一个数据库都有自己独立的文件。如果你开启了directoryperdb选项,那你每个库的文件会单独放在一个文件夹里。数据库文件在内部会被切分成单个的块,每个块只保存一个名字空间的数据。在MongoDB中,名字空间用于区分不同的存储类别。比如
2015-10-14 20:35:40
6574
转载 VS2013将新建的源码文件的编码格式自动设置成UTF8
VS 2013 新创建的cpp和h文件默认是GB2312的,为适应国际化需求,现在都使用UTF-8格式,下面教大家设置为默认UTF-8进入vs安装目录的 Microsoft Visual Studio 12.0\VC\vcprojectitems用 VS2013打开 newc++file.cpp 和 hfile.h 文件,在里边加入如下内容:#pragm
2015-10-11 20:09:16
723
转载 linux nc命令使用详解
功能说明:功能强大的网络工具语 法:nc [-hlnruz][-g网关...>][-G指向器数目>][-i延迟秒数>][-o输出文件>][-p通信端口>][-s来源位址>][-v...][-w超时秒数>][主机名称][通信端口...]参 数: -g网关> 设置路由器跃程通信网关,最丢哦可设置8个。 -G指向器数目> 设置来源路由指向器,其数值为4的倍数。 -
2015-09-14 20:08:12
1105
转载 技巧:Linux 动态库与静态库制作及使用详解
标准库的三种连接方式及静态库制作与使用方法Linux 应用开发通常要考虑三个问题,即:1)在 Linux 应用程序开发过程中遇到过标准库链接在不同 Linux 版本下不兼容的问题; 2)在 Linux 静态库的制作过程中发现有别于 Windows 下静态库的制作方法;3)在 Linux 应用程序链接第三方库或者其他静态库的时候发现链接顺序的烦人问题。本文就这三个问题针对 Lin
2015-09-11 20:11:23
445
转载 《深入应用C++11:代码优化与工程级应用》勘误表
《深入应用C++11:代码优化与工程级应用》勘误表,会不断更新,欢迎读者留言或发邮件(cpp11book@163.com)给我提出宝贵意见。1.第7.3节目录final和override关键字应该改为标识符;这个问题由园友“李奥霍克”和“Cu2S”指出, 在此表示感谢。2.page 156, 倒数第三行代码newint应该为new int3.page 177,倒数第三行语句uniq
2015-08-26 12:47:51
961
转载 linux下函数调用栈Backtraces函数
BacktracesA backtrace is a list of the function calls that are currently active in a thread. The usual way to inspect a backtrace of a program is to use an external debugger such as gdb. However,
2015-08-02 12:22:18
665
转载 operator new和operator new[]区别?
对于C++来说new操作分为两步:(1) 申请一块内存(operator new), 相当于malloc(2) 调用构造函数(placement new)而delete的操作也分两步(1') 调用析构函数(2') 释放内存,相当于free关于申请释放内存的部分我们可以不用想太多,直接理解把它们理解为malloc/free就行,要内存的时候只需传给它大小,释放的时候只
2015-08-02 12:20:13
551
转载 cmake用cotire设置gcc的预编译头
一、预编译头 当工程大了,单机编译速度会很慢。预编译头会提高很大的速度。相关原理这里不赘述,网上很多。(或者老夫有空的时候再补充)二、cmake设置gcc的预编译头 一开始google到一个国内同行写的cmake宏,用了下,貌似不是很好用。另外作者也表示还是有bug。 后来找到cotire。目前使用良好。 三、cot
2015-08-02 12:19:45
2847
转载 tcpdump非常实用的抓包实例
详细的文档见tcpdump高级过滤技巧基本语法========过滤主机--------- 抓取所有经过 eth1,目的或源地址是 192.168.1.1 的网络数据# tcpdump -i eth1 host 192.168.1.1- 源地址# tcpdump -i eth1 src host 192.168.1.1- 目的地址# tcpdump -i
2015-07-24 11:27:54
389
转载 Boost库中的Traits(is_float, is_class)
对以判断是不是某个基本类型(整数, 浮点, bool)可以参考下面代码:3. is_float[cpp] view plaincopytemplatetypename T> struct is_float : bool_typefalse>{}; #define IS_FLOAT(T) template : bo
2015-07-23 14:03:58
785
转载 tolua++实现分析
项目正在使用cocos2dx的lua绑定,绑定的方式是tolua++。对大规模使用lua代码信心不是很足,花了一些时间阅读tolua++的代码,希望对绑定实现的了解,有助于项目对lua代码的把控。从阅读结果上来看,起码在内存管理上,帮助还是很大的。1.tolua++如何将c++对象导入到lua里tolua++为每一个传入lua的对象建立一个userdata,userda
2015-07-05 13:37:40
405
转载 Java在游戏服务器开发中的应用
随着游戏市场的兴起,特别是网页游戏、手机游戏的崛起,对游戏开发技术的需求越来越多。网络游戏开发是一个庞大的体系,总体来说是客户端与服务器端。客户端是玩家接触的游戏图像显示端,服务器是处理游戏运行中的各种数据,由于一台服务器要支持众多玩家的请求,所以服务器的性能高低决定了同一个游戏的用户数量。我们公司选择使用Java做服务器开发语言,主要原因是:1.Java是跨平台的,方便部署;2.Java
2015-05-22 12:29:10
636
转载 window环境下glog的使用
先下载glog最新版,解压里面有*sln文件,如果你安装了VS2005以上版本都可以直接打开,编译即可得到libglog.dll和libglog.lib文件,拷贝文件到你的测试文件夹下,并拷贝src\windows\下的glog目录到你的工程文件下。 如下是一个测试代码, [cpp] view plaincopy
2015-04-29 22:59:22
465
转载 Lua与c++互调
上一节我们实现了一个c++的封装类,通过该类我们就可以调用lua中的函数。可是这还满足不了我们的需求,我们还想通过lua来调用我们c++的方法。通过研究/tolua++-1.0.93/src/tests下的例子,结合c++的特性,我总结了一个tolua的例子。不能说相当完美,但是基本的功能已经能够满足项目的需求了,而且通过这个例子,也可以使各位对tolua的语法以及用法有一个初步的了解。本
2015-04-21 18:11:59
581
转载 Lua基础学习(二)
本节我将一步一步带领大家完成c++调用lua函数并接受lua的返回值,通过分析调用的方式来封装一个类,最终封装完成的类并不是最优的,但应该能够满足一般的项目中对lua调用的功能。不足之处欢迎大家给予指正。 1 基本概念1.1 栈c++调用lua是通过一个抽象的栈来实现数据的交换的。C++调用lua时,首先需要把lua函数需要的参数压入这个抽象的栈中,
2015-04-21 18:09:31
380
转载 Lua基础学习(一)
Lua基础学习要学习tolua++的使用,首先也得先学会lua的基本语法和lua与c/c++之间的接口调用。本次总结意在把lua的一些基本的用法总结归纳一下,好让大家可以在短时间内对lua有一个简单的了解,达到可以看懂lua代码的目的。注:注释:单行注释:--多行注释:--[[ --]]lua大小写敏感1. 基本类型1.1
2015-04-21 18:08:21
490
转载 STL Support Tools
STL Support ToolsWhen you try to use GDB's "print" command to display the contents of a vector, a stack, or any other GDB abstract data structure, you will get useless results. Instead, download
2015-03-14 11:38:34
456
原创 GLIBCXX_DEBUG开启STL检测功能
string在GLIBCXX_DEBUG宏是否存在的情况下处理方式不同,不同的库如果没带该选项而自己的项目又定义了它,有可能造成冲突导致程序挂掉,但是又想使程序项目在STL检测的庇护下,可以修改/usr/include/c++/4.7/debug/debug.h头文件,将#ifndef _GLIBCXX_DEBUG修改为#ifndef _GLIBCXX_DEBUG_,然后在自己的项目中定义
2015-03-12 16:20:58
1352
转载 linux通过端口号查看进程名
iftop -i eth0 -P //查看网络流量方法一 1.通过lsof命令查看PID 1.1、简单而实用的查看 [root@test proc]# lsof -i:8080 1.2、ipv4/ipv6 [root@test proc]# lsof -Pnl +M -i4(i6) 也可以使用: [root@test proc]#lsof -Pnl +M
2015-02-26 14:47:59
1915
原创 git配置
第一步,安装git:$ sudo apt-get install git第二步,创建一个git用户,用来运行git服务:$ sudo adduser git第三步,创建证书登录:收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。证书的制作参照ssh-ke
2015-02-15 21:18:23
515
原创 linux为用户添加sudoer
切换到root用户,进入etc目录 “cd /etc”为sudoers文件添加写入的权限:使用命令 chmod u+w sudoersroot ALL=(ALL) ALLlishaoyu ALL=(ALL) ALL (在root下面添加这行)chmod u=r-- sudoers 将文件权限改回来即可
2015-02-07 22:39:21
3824
原创 CMake生成版本号
CMake生成版本号(金庆的专栏)原来的CMake需要用shell脚本生成SVN版本号,再作为cmake参数传入。CMake调用脚本示例:#!/bin/sh# cmake.shServerCodeRoot=~/Code/ServerCodeRevNum=`svn info ${ServerCodeRoot} | grep Revision | awk
2015-01-13 22:54:58
3886
原创 sublime 配置python
安装 Sublime Package Control1、打开 Sublime Text 2,按下 Control + ` 调出 Console2、将以下代码粘贴进命令行中并回车:import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.maked
2015-01-12 14:31:47
549
转载 mongodb shell问题
1、MongoDB Shell中退格键使用的问题。利用SecureCRT工具访问linux的时候,在使用MongoDB的交互式shell的时候,退格键(Backspace)无法使用,导致无法修改输入的字符。为这个错误,废了好长时间的力气,终于找到了错误的原因。其实,主要是SecureCRT工具默认的字符输入模式的问题,可以通过以下方式修改:第一步:选择Option菜单中的Sessi
2015-01-07 00:45:50
523
原创 gdbserver远程调试代码
gdbserver 192.168.1.188:5000 zonemain //远程创建监听(待被调试)本地连接调试:先gdb zonemain 然后再 target remote 192.168.1.188:5000
2015-01-06 21:30:17
839
转载 Bash Shell 里的各种括号
今天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题。对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括号的用法和区别,别的Shell我不会。。。(( )) :一对圆括号有两个地方用到。1,for循环,for (( expr1 ; expr2 ; expr3 )) 这里一对双括号里边的表达式,GNU的文
2015-01-05 21:53:10
551
原创 centos mail发送qq邮件
vi /etc/mail.rc添加两行set from=410017376@qq.com smtp=smtp.qq.comset smtp-auth-user=410017376@qq.com smtp-auth-password=lishaoyu1989 smtp-auth=loginfrom是发送的邮件地址smtp是发生的外部smtp服务器的地址smtp-aut
2014-12-28 13:04:26
1294
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人