自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (1)
  • 收藏
  • 关注

原创 C++ noexcept关键字

noexcept简介noexcept有两个作用,一是作为说明符,用来说明函数是否跑出异常,一是运算符,能够判断函数是否有声明不会抛出异常。说明符举例:运算符举例:如果在移动构造时发生了异常,则将会发生很严重的错误,原本的数据也不可用,因此,我们需要保证移动构造的时候不抛出异常。如果函数没有抛出异常的可能,则函数可以使用移动构造,反之,则使用复制构造。下面的代码是一个强制开发者实现类型T的移动操作的交换值函数如果类型T的 移动构造和移动赋值函数会抛出异常,则会编译失败,这样让写类型T的开发者强制实现不抛出异常

2022-06-19 18:19:48 668 1

原创 Mysql事务以及特性

事务(transaction),是一个操作序列。这些操作要么都做,要么都不做。事务有四个特性,即ACID。Atomicity(原子性),指一个事务是一个不可分割的工作单位,其中的操作要么都成功,要么都失败,不能存在部分成功或者部分失败的情况。如果事务中一个SQL语句执行失败,则已执行的语句也必须回滚,数据库退回到事务前的状态。InnoDB保证原子性是通过redo log以及undo log来进行的。在InnoDB中,redo log是以512字节进行存储的,正好是磁盘页大小,因此写入是原子性的,不需要额外的

2022-06-10 15:35:25 661

原创 Redo log

redo,重做,目的是恢复数据库的操作,在发生意外时进行重新操作,保证数据安全。Redo Log重做日志,事务中修改的任何数据,都会存储到日志中,包含表空间id、插入的记录所在的页号、insert的具体数据等。当数据库启动时,会根据checkpoint来判断哪些数据是需要恢复的。进行数据恢复时,innodb将从LOG_CHECKPOINT_LSN所指向的redo文件位置开始进行数据恢复。图一 lsn其中,checkpoint_page = redo_lsn - checkpoint_lsn,指已经记录到re

2022-06-10 15:33:26 190

原创 根据UID获取B站用户头像

示例:博主的uid是350692333获取用户信息的API https://tenapi.cn/bilibili/?uid=350692333然后会得到如下的数据{ "code": 200, "data": { "uid": "350692333", "name": "minfeee", "level": 4, "sex": "男", "description": "", "avatar": "http://i2.hdslb.com/bfs/face/02b0b379a8c0746fe20994972de5

2022-06-01 11:46:15 2343

原创 dup函数与CGI服务器

把标准输出重定向到一个网络连接。使用dup或者dup2函数来实现dup函数创建一个新的文件描述符,该新文件描述符和原有文件描述符oldfd指向相同的文件、管道或者网络连接。同时,dup函数返回的新文件描述符,总是取当前系统可用的最小整数值。dup2函数,返回的新文件描述符不小于newfd的整数值。dup\dup2函数,失败时返回-1并设置errno。因此,我们把本地的输出重定向到网络连接,就可以创建一个CGI服务器。

2022-06-01 11:43:34 101

原创 根据UID获取B站用户头像

示例:博主的uid是350692333获取用户信息的APIhttps://tenapi.cn/bilibili/?uid=350692333然后会得到如下的数据{ "code": 200, "data": { "uid": "350692333", "name": "minfeee", "level": 4, "sex": "男", "description": "", "avatar": "http://i2.hdslb.com/bfs/face/02b0b379a8c0746fe209949

2022-05-19 23:22:12 1687

原创 游戏设计模式-单例模式

当我刚进入游戏行业的时候,所编写的代码,使用了不少的单例,但随着后来的很多bug,我开始意识到单例模式的弊端。1 什么是单例模式“确保一个类只有一个实例,并为其提供一个全局访问入口。单例模式提供了在编译期就能确保某个类只有一个实例的方法。单例的定义:(1)构造函数私有化,防止外界创建出对象;(2)使用一个唯一的变量指向该类的唯一实例;(3)提供一个开放接口供外部使用。2 创建单例的几种方法(1)Lazy Singleton(懒汉):单例在第一次使用时才会被创建出来。

2022-04-20 22:04:43 4579

原创 游戏设计模式-原型模式

使用特定原型实例来创建特定种类的对象,并且通过拷贝原型来创建新的对象。原型模式的核心思想是:一个对象可以生成与自身相似的其他对象。假设我们有一个怪物的类,我们可以这样构造:#include <iostream>class Enemy{public: virtual ~Enemy() {} virtual std::shared_ptr<Enemy> Clone() = 0;};class BirdEnemy :public Enemy{public.

2022-04-14 12:06:06 3377

原创 游戏设计模式-观察者模式

成就系统,基本上是每个游戏里都会涉及到的系统,但如果直接使用其它系统的函数接口,你将会发现整个项目中,每个系统都要和成就系统耦合在一起。这是一件极其糟糕的事情。观察者模式可以解决这件事情。首先,我们先定义两个类,分别是观察者和被观察者。观察者:class Observer{ friend class Subject;public: Observer() :next(nullptr), previous(nullptr) {} void OnNotify(con.

2022-04-09 23:38:28 5341

原创 游戏设计模式-命令模式

游戏中,玩家的输入方式有很多种,例如键盘、鼠标等。玩家输入操作,游戏需要调用相应的逻辑,最简单的处理方式是:if (Input.GetKeyDown("Q")) Jump();else if (Input.GetKeyDown("T")) Idle();else if (Input.GetKeyDown("A")) Attack();else if (Input.GetKeyDown("Z")) Skill();...

2022-04-07 23:57:14 3365

原创 Linux调整随机端口范围(服务器启动失败 端口被占用)

Linux调整随机端口范围博主最近在工作中遇到了问题,服务器启动不起来,bug显示端口被占用。端口是被connect端给占用了,非listen端。

2022-03-09 10:20:31 4524

原创 分布式服务器中的数据安全问题及其解决办法

最近笔者在工作中遇到了这样一个问题:对于离线的数据/远端的数据,如何保证在处理过程中的数据安全。

2022-03-04 15:09:08 2706 1

植物大战僵尸素材资源包(图片/声音)

该资源包为植物大战僵尸素材包 包含39个植物、18个僵尸、声音、UI图标、地图等

2022-03-02

空空如也

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

TA关注的人

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