自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 【Go常见错误】8. 关于defer的参数和接受者的取值

本文会深入讨论在defer函数中参数取值以及带指针或值接受者的defer。

2022-10-08 17:52:38 469

原创 【Go常见错误】7. 如何正确设置枚举值中的零值

根据经验,枚举的未知值应该设置为枚举类型的零值。这样,我们就可以区分出显示值和缺失值了。

2022-10-07 13:02:58 619

原创 【Go常见错误】6. JSON错误之单调时钟(3)

JSON的marshaling/unmarshaling处理的程序并不总是可逆的。

2022-10-07 11:16:52 467

原创 【Go常见错误】6. JSON错误之结构体中存在匿名字段(2)

结构体中存在嵌入字段时,对该结构体使用JSON的marshal方法,会出现意想不到的错误?

2022-10-07 11:07:25 345

原创 【Go常见错误】6. JSON错误之Marshal后为空(1)

当我们在go中定义了一个结构体,在使用json.Marshal后输出为空,可能是什么原因呢?让我们一起来看看。

2022-03-08 17:02:38 3120

原创 【Go常见错误】5. 善用defer

Go中经常会出现一些忘记释放资源,死锁等问题,让我们看看如何利用defer来优雅的避免。

2022-03-07 09:53:12 342

原创 【Go常见错误】4. 枚举值无效

Go常见错误之枚举值无效

2022-03-04 11:02:22 906

原创 游戏服务器开发技术栈

游戏服务器开发人员,需要熟悉和深入的相关技术栈

2022-03-03 16:59:41 6606 1

原创 【Go常见错误】3. 比较不正确的值

Go常见错误之比较不正确的值

2022-03-03 15:49:13 343

原创 【Go常见错误】2. 意外的变量隐藏

GO常见错误之意外的变量隐藏

2022-03-02 19:19:03 533

原创 【Go常见错误】1. 从错误中学习

Go常见错误之从错误中学习

2022-03-02 10:25:40 277

原创 linux errno 含义

Linux errno 注解分布在两个文件中,罗列于此,方便查阅。/usr/include/asm-generic/errno-base.h#ifndef _ASM_GENERIC_ERRNO_BASE_H#define _ASM_GENERIC_ERRNO_BASE_H#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file

2021-09-08 10:29:20 124

原创 Golang编程规范

函数注释// fn意图// @param p1 - 第一个参数(p1含义)// @param p2 - 第二个参数(p2含义)// @return r1(or TYPE) - 第一个返回值(如果函数返回值没有定义名称标注类型)// @return r2(or TYPE) - 第二个返回值func fn(p1 TYPE,p2 TYPE)(r1 TYPE, r2 TYPE){ ...}import顺序import ( 标准包 程序内部包 第三方包)

2021-09-08 10:24:19 224

转载 C++虚函数表

一、背景知识(一些基本概念)虚函数(Virtual Function):在基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。纯虚函数(Pure Virtual Function):基类中没有实现体的虚函数称为纯虚函数(有纯虚函数的基类称为虚基类)。C++  “虚函数”的存在是为了实现面向对象中的“多态”,即父类类别的指针(或者引用)指向其子类的实例,然后通过

2017-01-08 20:22:30 491

转载 C++初始化列表详解

何谓初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。

2017-01-08 18:28:49 405

转载 C++中内存泄漏的几种情况

1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存2. 没有正确地清除嵌套的对象指针3. 在释放对象数组时在delete中没有使用方括号方括号是告诉编译器这个指针指向的

2017-01-08 13:00:50 726

原创 C++重要知识点

C++重要知识点一、#include "filename.h"和#include 的区别#include "filename.h" 是指编译器将从当前工作目录上开始查找此文件。#include 是指编译器将从标准库目录中开始查找此文件。二、头文件的作用加强安全检测。通过头文件可以方便地调用库功能,而不必关心其实现方式。三、

2017-01-08 12:52:20 632

转载 Socket接口详解

1. socket概述socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关

2017-01-06 17:38:58 4034

原创 记录一些网络编程要点

1,TCP/IP协议族分层结构:应用层(HTTP,FTP...),传输层(TCP,UDP),网络层(IP),数据链路层。2,Socket是对TCP/IP协议中 传输层和网络层的抽象(封装),可以供应用层直接使用。有一个形象的比喻,HTTP比喻为一辆轿车,Socket比喻为一台发动机。3,IP协议本身决定了其不可靠传输;TCP的三次握手建立连接和四次分手断开连接保证了其相对可

2017-01-06 17:19:07 424

原创 通俗理解TCP/IP协议三次握手与四次分手流程

三次握手流程客户端发个请求“开门呐,我要进来”给服务器服务器发个“进来吧,我去给你开门”给客户端客户端有很客气的发个“谢谢,我要进来了”给服务器四次挥手流程客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走服务器把门关上后,发个“我关门了”给客户端,然后等客户端走(尼玛~矫情啊)客户端发个“我知道了

2017-01-06 14:07:54 17351 1

转载 Epoll模型详解

Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后    首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在 我用的2.6.15-25-386内核中,该值是1024,搜

2016-12-30 17:49:53 416

转载 Linux C++多线程编程

1. 引言  线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。  为什么有了进程的概念后,还要再引入线程呢

2016-12-30 17:41:51 377

转载 开发者都应该使用的10个C++11特性

摘要: 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。auto    在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了

2016-12-22 18:14:31 404

原创 centos升级gcc版本遇到的一些问题

centos6.x版本gcc大多为4.7.x,为了使用最新的C++11,gcc版本必须为4.8.1+,但是手动升级会遇到一些问题。现做一些整理。大部分的安装过程就不一一叙述了,网上可以找到很多,但是有一些注意的细节。比如:1,configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+

2016-12-08 15:42:28 4381

原创 Linux守护进程Shell脚本

服务端程序一般需要长期后台稳定运行,除了保证程序本身的健壮外,还需要用到一些守护程序。现分享一个简单的Shell脚本的方式:#! /bin/sh#进程名字可修改PRO_NAME=xxxxwhile true ; do #用ps获取$PRO_NAME进程数量 NUM=`ps aux | grep -w ${PRO_NAME} | grep -v g

2016-09-28 14:19:55 11379 1

原创 放置类游戏[Swarm Simulator]系统解析

源码地址:https://github.com/DHentrant/swarm游戏地址:https://swarmsim.github.io/#/

2016-03-17 10:29:34 4533

原创 使用MPFR总结

由于项目中需要用到大数值相关的运算,所以选择使用MPFR,以下为一些使用总结。安装过程  安装环境为Centos相关下载路径 GMP:https://gmplib.org/download/gmp/gmp-6.1.0.tar.bz2 MPFR:http://www.mpfr.org/mpfr-current/mpfr-3.1.3.tar.gz1,安装GMPt

2016-02-24 20:09:00 6194

转载 MySQL 分区表

转载自:http://my.oschina.net/jasonultimate/blog/548745?fromerr=GbwoDMxI  以作备忘。目录[-]1. 什么是表分区?2. 表分区与分表的区别3. 表分区有什么好处?4. 分区表的限制因素5. 如何判断当前MySQL是否支持分区?6. MySQL支持的分区类型有哪些?7. Ra

2015-12-28 14:24:09 537

原创 DTMB BDA TV USB

升级Win10后,使用移动硬盘,但是发现怎么也识别不了,但是另外的电脑上确没有问题。于是,猜测应该是驱动的问题。插上移动硬盘后,在设备管理器里发现黄色感叹号"DTMB BDA TV USB",原来是系统将移动硬盘识别为别的设备了。这下找到问题了,即可解决了手动选择更新驱动,强制选为“USB大容量存储设备”。

2015-12-02 10:36:02 4507

转载 C++实现几种排序算法

有时间再自己实现一遍,先转载一篇以备忘。转载自:http://blog.csdn.net/anialy/article/details/7614012几个常用的排序:1)冒泡排序2)选择排序3)插入排序4)归并排序5)快速排序6)希尔排序具体实现:1. 冒泡排序

2015-11-13 18:05:37 391

原创 分享一个简单的Makefile

复制以下的代码内容保存为makefile文件,放到对应的项目中,使用make clean和make命令即可。当然,对应的编译选项什么的,自行修改一个。另外这个makefile是需要根据项目中的cpp文件,对应的来修改的,后面再分享一个全自动超强大的makefile。NAME = TargetLINK = g++CC = gccGCC_VERSION =

2015-11-13 16:03:47 709

原创 维塔士C++笔试题

有些记得不是特别清楚了,分享一个大概吧1,给出一个类,写出类的 copy ,operator = == +函数,不需要具体实现。2,#define sq(x) x*x,更准确的写法。3,std:vector std:list std:hash_map std:prioityquene 的优点,缺点,应用场景。4,实现一个删除双向链表某个节点的方法

2015-11-05 22:41:53 2314

原创 通过一个时间戳计算当天0点时间

在游戏项目中,经常会有这样的一个需求。比如某7天的活动,一般开始和结束时间都是需要活动当天的零点时间。公式为:NowTime - (NowTime + 8 * 3600) % 86400思路为:现在时间 - 今天的秒数。因为NowTime % 86400是0时区当天的秒数,那+8时区应该是NowTime % 86400 + 8 * 3600,由于这个数字可能大于

2015-11-05 18:49:30 7684

转载 C++11新版本

C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百科不是知道是台湾还是香港人翻译的然后由工具转换成简体中文的,有些术语和语言习惯和大陆程序不一样! 我决定结合这两个版本按照我自己的习惯把这篇文章整理到我的博客中.分享给关注我和关注C++11的朋友们.

2015-11-02 19:24:33 4158

原创 GCC编译选项

最近面试的时候,有人问了GCC编译选项的问题,回顾顺便整理一下。其实我更想说的是,一般做项目的话都是有写自己的Makefile吧,基本上写过一次都可以用好久了是吧!在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,这里只介绍其中最基本、最常用的参数。具体可参考GCC Manual。GCC最基本的用法

2015-11-02 15:18:00 495

原创 mysqladmin: connect to server at 'localhost' failed

安装完mysql后,登录提示密码不对然后使用mysqladmin提示登录失败:mysqladmin: connect to server at 'localhost' failederror: 'Access denied for user 'root'@'localhost' (using password: YES)'解决办法:1,service mys

2015-11-02 14:11:47 1864

转载 CentOS下Mysql数据库的安装与配置

一、mysql简介说到数据库,我们大多想到的是关系型数据库,比如mysql、oracle、sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱不得不首先推荐的是mysql数据库了,而且Mysql数据库的第一个版本就是发行在Linux系统上的。MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Orac

2015-11-02 13:17:20 444

原创 浅谈服务器架构之爆服页游

首先这里说的“爆服”页游,也是根据当下的页游情况来说的,也就是大量开新服的模式。这里就涉及到一个问题,为什么现在页游大多是这种模式呢?本人经历过一个实际的游戏项目,当时是在腾讯空间上线的一款游戏,由于我们公司运营能力有限,可以导入的用户量有限,一天只能差不多3000用户左右,这样差不多需要3-4天才能开一个新服,月流水差不多也就在10W左右;但是后来跟一个负责运营的公司合作,同一款

2015-10-30 16:14:26 1009

原创 连接mysql error1130的解决方法

其实就是连接访问权限的问题,一般数据库只是设置了localhost的访问,所以只要增加别的Ip的访问权限即可。1,更改用户权限表更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%" 。mysql -u root -pvmwaremysql>usemysql;mysql>update user set host =

2015-10-30 12:16:27 729

原创 浅谈服务器架构之MMORPG端游

MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写。一般指大型多人在线角色扮演游戏。这里突出的需求就是多人在线,也就是需要一个大区可以有比较大的承载能力。所以这里采用的是采用一个可配置可灵活增减容量的多服架构。客户端:用户机器安装的游戏端,以下简称Client。网关服务器:负

2015-10-29 15:48:54 1193

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除