服务器开发
文章平均质量分 66
woshiyuanlei
精通服务器架构,网络通信,数据库操作,熟悉操作系统原理
展开
-
mongoDB权限管理
开启mongoDB的权限管理,找了很多文章,最后发现都不行。比如这个网址,当然也可能是我操作不对...按照文中操作后报错:auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-1": (AuthenticationFailed) Authentication failed.打开mongod.log有这样的报错:SASL SCRAM-SHA-1 authenticatio原创 2021-12-17 17:01:22 · 5979 阅读 · 0 评论 -
cmd执行命令行程序时有时会卡住
背景说明我们项目开发了一个后台程序,使用的是命令行模式,运行时就一个窗口。我们的运维会定时巡检,有一次报修说程序不在运行了。查看日志等都无果。最后远程看了一下,发现界面上有一个白色的光标,类似如下图:这个情况很有可能在巡检的时候,特别是在电脑息屏时,运维不小心点击了一下鼠标。解决方案win10 和 winserver2016 等服务器都是默认开启快速编辑模式,当然不排除用户自己设置了这个选项。方式一:windows cmd->属性->选项->编辑选项。...转载 2021-05-13 14:52:46 · 3440 阅读 · 0 评论 -
分布式一致性算法Raft简介(转载)
https://www.jianshu.com/p/ee7646c0f4cfhttps://www.jianshu.com/p/10bdc956a305最近看了Ongaro在2014年的博士论文《CONSENSUS: BRIDGING THEORY AND PRACTICE》的部分章节,对raft有了初步的理解。其中论文中提到用于教学的user study,个人感觉非常不错,言简意赅,特此分享出来。本文基本与原讲解一致,又加上了笔者的一点理解。资源来源于Ongaro和Ousterhout在.转载 2021-03-31 09:59:46 · 242 阅读 · 0 评论 -
go test 使用 和 我遇到的坑
网上很多go test的教程,但是写得都不好,尤其对新手不友好。现在同目录下有两个文件:calc.go 和 calc_test.go,现在就来讲一讲具体操作。calc.go 内容如下package mainfunc Add(a int, b int) int { return a + b + 1}func Mul(a int, b int) int { return a * b}func GetSumOut(n int) (sum int) { for i :原创 2021-03-25 16:42:28 · 1327 阅读 · 0 评论 -
mysql 出现 Commands out of sync; you can't run this command now
存储过程中就只有一句普通的select * from ...;第一次调用成功,然后mysql_stmt_close()..再调一次,结果mysql_stmt_prepare()这一句,就出现CR_COMMANDS_OUT_OF_SYNC错误。郁闷啊。。。 ------Solutions------你的代码是什么? ------Solutions------void转载 2017-02-28 21:01:07 · 20704 阅读 · 0 评论 -
VS2012下X64平台嵌入汇编程序
http://www.cnblogs.com/kuangke/p/6155368.htmlVS2012在win32平台编译的时候可以很好的支持汇编语言的嵌入。建立一个控制台应用程序,选择空项目。项目建立好之后添加一个.cpp文件。在cpp文件中写入如下代码: #include using namespace std; i转载 2017-01-21 18:10:31 · 4274 阅读 · 0 评论 -
VS2010中编写x64汇编的具体方法
VS2010中编写x64汇编的具体方法VS2010中编写x64汇编的具体方法编写涉及系统特性的一些底层程序,特别是ShellCode,不可避免地要采用直接编写汇编代码的方式。在目标平台为x86模式时,可以直接使用内联汇编,这个很多人都比较熟悉了,也非常地方便。但是当目标平台为x64时,微软不再允许直接内联汇编了,这给我们编程造成了一些不便。怎么解原创 2017-01-22 10:13:11 · 1238 阅读 · 0 评论 -
C/C++与汇编的函数相互调用分析
转自:http://blog.sina.com.cn/s/blog_4ae178ba01012d3o.htmlC/C++与汇编的函数相互调用分析write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie讨论新闻组及相关文件下载昨天好好研究了一下内嵌汇编的情况。。。。。更进一步的,该是看看独立编译的汇编程转载 2017-01-22 15:01:26 · 3031 阅读 · 0 评论 -
IOCP注意事项
一、 WSAENOBUFS 错误问题。 这个问题通常很难靠直觉发现,因为当你第一次看见的时候你或许认为是一个内存泄露错误。假定已经开发完成了你的完成端口服务器并且运行的一切良好,但是当你对其进行压力测试的时候突然发现服务器被中止而不处理任何请求了,如果你运气好的话你会很快发现是因为WSAENOBUFS 错误而影响了这一切。原创 2015-09-05 11:58:24 · 738 阅读 · 0 评论 -
不调用具有"协程特性"的系统API函数而使用汇编实现协程
上一篇根据云风的协程库实现了windows下的协程:fiber协程今天,打算用汇编实现一下(windows下汇编),实现之前需要先复习下函数调用的基础:点击打开链接每个函数都有自己的堆栈,一般函数开头都有类似的语句:push ebp;mov ebp,esp;且函数调用前会将eip入栈,函数返回后把eip出栈即可回到函数入口出继续往下执行,因此保存寄存器信息,获得eip信息并入栈原创 2017-01-16 16:08:49 · 906 阅读 · 0 评论 -
Windows下安装并设置Redis
原地址:点击打开链接Redis对于Linux是官方支持的,安装和使用没有什么好说的,普通使用按照官方指导,5分钟以内就能搞定。详情请参考:http://redis.io/download 但有时候又想在windows下折腾下Redis,可以从redis下载页面看到如下提示(在页面中搜索 "windows"):[plain]转载 2017-02-09 10:59:42 · 9843 阅读 · 0 评论 -
Windows环境下安装Redis体验谈
Redis 是一个高性能的key-value数据库, 使用内存作为主存储,数据访问速度非常快,当然它也提供了两种机制支持数据持久化存储.比较遗憾的是,Redis项目不直接支持Windows,Windows版项目是由微软开放技术团队建立和维护一个实验性项目(支持32,64位),所以并不适用生产环境,但可在Windows环境下用于开发测试。1.下载安装猛戳这里就到了开源首页,下载源码包,解压Z转载 2017-02-08 20:16:09 · 991 阅读 · 0 评论 -
windows 纤程(fiber) 实现的协程
参考云风的协程库实现:https://github.com/cloudwu/coroutine环境:win7、VS2013头文件: (coroutine.h)#ifndef __COROUTINE__H__#define __COROUTINE__H__#define COROUTINE_DEAD 0#define COROUTINE_READY原创 2017-01-14 15:05:44 · 6203 阅读 · 0 评论 -
基于内存,redis,mysql的高速游戏数据服务器设计架构
1、数据服务器详细设计数据服务器在设计上采用三个层次的数据同步,实现玩家数据的高速获取和修改。数据层次上分为:内存数据,redis数据,mysql数据设计目的:首先保证数据的可靠,防止数据丢失,保证数据完整。然后实现数据的高速访问,减少由玩家数量增加对数据服务器性能造成的影响。最后实现运维数据的入库,以及数据持久化。在这个基础上数据服务器不再是一个单一服务器,它转载 2017-02-16 19:40:52 · 4444 阅读 · 2 评论 -
十字链表的AOI算法
http://www.codedump.info/?p=388看了云风写的AOI算法文章,自己也照着写了一下,感觉不容易理解,里面提到了十字链表的算法,在某同学提示下写了个实现.算法的大概思想如下.每个场景维护两个链表,分别为X轴和Y轴的坐标按序排列好的链表,也就是比如在X轴链表上,越在前的对象,X坐标越小,Y轴链表同理.这样,每次需要更新状态的时候,只需要在这个链表上转载 2016-11-17 14:10:33 · 888 阅读 · 0 评论 -
惊艳的时间轮定时器
http://www.cnblogs.com/zhongwencool/p/timing_wheel.html问题引入:游戏里面每个Player身上有很多buffs,在每一个tick(最小时间段)都要去检查buff里面的每一个buff是不是过期,产生的效果如何,造成在每个tick里面都去遍历一个长list,明显很不好。怎么优化?1.原始模型:转载 2016-07-15 15:26:39 · 2968 阅读 · 0 评论 -
高性能服务开发之定时器
高性能服务开发之定时器 在开发高性能服务器中,定时器总是不可或缺的。 常见的定时器实现三种,分别是:排序链表,最小堆,时间轮。 之前用的定时器是基于最小堆的,在定时器数量不多时可以使用, 目前公司用的框架中的定时器是基于简单时间轮的,但是为了支持大范围的时间,每个齿轮的所维护的链表为有序链表,每次插入时先mod出spoke,再从头遍历链表以便将定时器插入到合适位置, 所以转载 2016-07-14 11:17:57 · 742 阅读 · 0 评论 -
windbg解决线程死锁
1、打开将要被检测的软件A,同时打开windbg2、windbg,File->attach to process ,附加到进程A3、F5运行或DEBUG->GO4、等待进程A进入死锁状态,然后DEBUG->Break,在下面的输入栏中输入 ~*kb,然后查看各线程信息,分析死锁原因原创 2015-08-14 09:56:35 · 5107 阅读 · 2 评论 -
X64的函数调用规则
闲着没事想研究一下gcc的函数调用方式和m$的__stdcall、__fastcall之类有何区别,本想是了解一下关于参数的入栈顺序和清理方,就随便写了个C函数,编译成.s文件,一看发现根本就没有push和pop之类的指令...两个int参数都是利用rsi和rdi传递!网上百度了一个关于m$平台x64的调用约定 看完ddk里相关的部分,总结下吧,规则倒是不复杂,相对转载 2017-01-22 16:14:40 · 6554 阅读 · 0 评论 -
Windows下安装并设置Redis,使用C++操作Redis
Redis对于Linux是官方支持的,安装和使用没有什么好说的,普通使用按照官方指导,很快就可以搞定。但是对于windows版本Redis官方是不支持的。只是微软的人在Redis基础上搞了一个可以支持windows下部署的。可以在这儿下载:https://github.com/MSOpenTech/redis我下载的是redis-3.0版本。下载后编译即可生成相应库文件和exe原创 2017-02-10 15:57:44 · 2441 阅读 · 1 评论 -
麻将胡牌算法(查表法 和 拆解法)
/* 1.查表法计算麻将胡牌(原理:http://hp.vector.co.jp/authors/VA046927/mjscore/mjalgorism.html) 2.跟拆解法对比进行效率比较*/package mainimport ( "fmt" "time" "sort" "os" "encoding/json" "log" "runtim原创 2018-07-06 17:29:03 · 18670 阅读 · 6 评论 -
golang的defer精析
example1func f() (result int) { defer func() { result++ }() return 0}example2func f() (r int) { t := 5 defer func() { t = t + 5 }() return t}exam...转载 2018-04-23 16:38:05 · 240 阅读 · 0 评论 -
windows 端口被进程占用 但是进程已经关闭
windows 端口被进程占用 但是进程已经关闭,再开此程序,提示开启失败或端口被占用等。这是因为此进程使用了system("start a.exe")等类似的语句,导致在其他进程还未退出时,windows的cmd进程和conhost进程都不会完全退出。此时如果启动start的父进程退出,也不会退出的很干净。端口就被留下来了。解决办法:只要用任务管理器杀死所有看到的cm原创 2017-08-09 21:03:49 · 6112 阅读 · 0 评论 -
探索skynet(二):skynet如何启动一个服务
转自:探索skynet(二):skynet如何启动一个服务时间 2017-02-12 17:08:35 一根笨茄子原文 http://blog.guoyb.com/2017/02/12/skynet-2/主题 Luaskynet框架是由C语言写成的,而skynet的服务可以完全用lua语言来编写,灵活性很高。那skynet是如何启动一个lua语言编写的服务的转载 2017-06-28 11:10:40 · 6517 阅读 · 0 评论 -
使用VisualGDB在windows上编写linux程序(centos)遇到的问题
1、编写多线程程序时,报错: undefined reference to `pthread_create',需要在设置中加上多线程的库.原创 2017-05-13 17:17:20 · 1975 阅读 · 1 评论 -
makefile 实验
makefile 功能学习:vim makefile,然后粘贴以下内容,退出vim后分别输入make和make linux命令:PLAT ?= none$(warning A top-level warning $(PLAT))PLATS = linux freebsd macosxCC ?= gcc.PHONY : none $(PLATS) clean all原创 2017-06-12 19:31:59 · 1163 阅读 · 0 评论 -
jemalloc 编译出错
linux编译jemalloc,按照install.md的安装说明:Building and installing a packaged release of jemalloc can be as simple astyping the following while in the root directory of the source tree: ./configure原创 2017-06-22 20:35:56 · 2613 阅读 · 0 评论 -
使用VMware安装centos7后与本机windows系统 ping不通
1、在VMWare网络设置中设置成桥接模式2、进入/etc/sysconfig/network-scripts/ 下将配置修改成如下类似的形式:HWADDR=00:0C:29:CA:A5:87TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=no原创 2017-05-10 14:52:44 · 11061 阅读 · 1 评论 -
IOS-IAP 苹果支付
1、下载带ssl的curllib,自己编译生成相关Lib、DLL2、参考SDK流程进行开发原创 2015-11-11 11:14:12 · 1520 阅读 · 0 评论 -
使用VS+VisualGDB编译调试Linux程序
阅读目录配置虚拟机创建Demo编辑与调试参考资料Linux程序开发变得越来越多,越来越多的程序、产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要。但是对于习惯了Windows下的开发,使用了VS这个宇宙第一IDE后,觉得Linux下的纯命令行开发调试,还是有些不习惯,效率有些低(大神除外)。那么能不能用VS来开发调试Linux程序呢转载 2017-04-27 17:18:24 · 2137 阅读 · 0 评论 -
MYSQL 问题
起因是我通过本机连接本机数据库,数据库IP不是配置的127.0.0.1,而是配置的本机IP192.168.0.170.于是出现了以上错误 后来才知道原因。 我的mysql默认有四种连接: root@::1 root@127.0.0.1 root@localhost sa@%原创 2017-04-30 15:55:25 · 844 阅读 · 0 评论 -
C/C++ Windows移植到Linux
近期写了有关Socket的程序,需要从windows移植到linux。现把有用的东东收集整理记录下来。 1.头文件windows下winsock.h或winsock2.h;linux下netinet/in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在in.h里已经包含了,可以省了)。 2.初始化window转载 2017-04-10 17:05:27 · 3779 阅读 · 0 评论 -
协程 及 Libco 介绍
libco 是腾讯开源的一个协程库,主要应用于微信后台RPC框架,下面我们从为什么使用协程、如何实现协程、libco使用等方面了解协程和libco。 why协程为什么使用协程,我们先从server框架的实现说起,对于client-server的架构,server最简单的实现:while(1) {accept();recv();do();send();}串行地转载 2017-01-23 15:26:24 · 646 阅读 · 0 评论 -
互斥 临界区 自旋锁 排队自旋锁 MCSLOCK 性能简单测试
VS2013#include #include #include using namespace std;DWORD dwTest;const DWORD dwMax = 20000000;//#define MY_CRITICAL//#define MY_MUTEX#define MY_SPINLOCK#ifdef MY_CRITICAL CRITIC原创 2016-05-23 12:01:39 · 1592 阅读 · 0 评论 -
巧夺天工的kfifo
http://blog.csdn.net/linyt/article/details/5764312Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开发者能从基础的数据结构中,提炼出优美的特转载 2016-03-28 13:57:46 · 606 阅读 · 0 评论 -
Tcp通信中服务器处理客户端意外断开 / 10054
所谓意外断开,是客户端(多指支持3G的移动设备)并没有正常关闭socket,双方并未按照协议上的四次挥手去断开连接,一般的处理办法都是利用保活机制。而保活机制分又可以让底层实现也可自己实现。一、双方拟定心跳(自实现)一般由客户端发送心跳包,服务端并不回应心跳,只是定时轮询判断一下与上次的时间间隔是否超时(超时时间自己设定)。服务器并不主动发送是不想增添服务器的通信量,减少压力。转载 2015-08-15 18:38:07 · 10798 阅读 · 0 评论 -
Windows Socket五种I/O模型——代码全攻略(转)
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑转载 2015-04-22 21:13:44 · 542 阅读 · 0 评论 -
构建C1000K的服务器(1) – 基础
著名的 C10K 问题提出的时候, 正是 2001 年, 到如今 12 年后的 2013 年, C10K 已经不是问题了, 任何一个普通的程序员, 都能利用手边的语言和库, 轻松地写出 C10K 的服务器. 这既得益于软件的进步, 也得益于硬件性能的提高.现在, 该是考虑 C1000K, 也就是百万连接的问题的时候了. 像 Twitter, weibo, Facebook 这些网站, 它们转载 2015-04-28 17:13:33 · 402 阅读 · 0 评论 -
IOCP中在WSASend以及WSARecv的时候出现WSA_IO_PENDING情况的说明
原文链接:http://www.xixis.net/doserver.net//read.php/2063.htm 应该是windows网络编程第二版里面提到过。现在整理一下。1:在IOCP中投递WSASend返回WSA_IO_PENDING的时候,表示异步投递已经成功,但是稍后发送才会完成。这其中涉及到了三个缓冲区。网卡缓冲区,TCP/IP层缓冲区,程序缓冲区。转载 2015-08-05 11:28:52 · 691 阅读 · 0 评论 -
深入浅出TCP协议的2MSL TIME_WAIT状态
TCP状态迁移路线图:2MSL TIME_WAIT状态存在的理由:TIME_WAIT状态的存在有两个理由:(1)让4次握手关闭流程更加可靠;4次握手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN过来。若主动关闭方能够保持一个2MSL的TIME_WAIT状态,则有更大的机会让丢失的ACK被再次发送转载 2015-08-14 15:53:03 · 418 阅读 · 0 评论