自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wangdamingll的博客

个人的一些学习总结

  • 博客(251)
  • 收藏
  • 关注

原创 linux shell awk sed 使用

具体可以通过awk --help 参看下面提供几个使用示例:ls actionlog/* |xargs -i grep MILITARYAIDSKILLLEVELUP {} |awk -F’[,|&]’ ‘{if($9 > 10000){if(a[$4] == 0){a[$4]=$11} else if(a[$4]

2023-10-19 14:20:30 285

原创 tcpdump 使用

/抓取HTTP POST (POST = 0x50, 0x4f, 0x53, 0x54) 请求,以ascii展示。//抓取HTTP GET (GET = 0x47, 0x45, 0x54, 0x20) 请求,以ascii展示。//抓取网卡eth0下与www.baidu.com交互的http请求和返回数据,以ascii展示。//抓取网卡eth0下与169.254.0.4交互的http请求和返回数据,以ascii展示。请参考官网参看具体参数信息。

2023-07-17 17:16:14 625

原创 C++ 设计模式-状态模式

状态模式的介绍和使用

2022-12-15 20:53:30 563 1

原创 C++ 设计模式-策略模式

策略模式的介绍和使用

2022-12-06 20:16:35 1664 1

原创 C++ 设计模式-装饰模式

介绍装饰模式和使用

2022-11-28 20:16:52 495

原创 C++ 设计模式-外观模式

介绍外观模式使用

2022-11-21 20:28:20 242

原创 Mysql总结

mysql学习总结

2022-08-27 15:34:18 467

原创 Redis总结

redis 使用个人总结

2022-02-08 11:31:54 501

原创 C++ 公共组件-定时器(time wheel)

一. time wheel

2021-11-18 18:51:40 1955

原创 游戏设计------匹配模块设计

一、背景游戏的匹配模块可谓是游戏设计中比较重要的模块了,MMO游戏基本上都有这个模块,但是要想写的比较好确是不容易,下面简单谈谈如何设计. 这里提到的设计只是简单抽象的,并不是适合所有游戏二、匹配模块1. 部分服务架构图2. 匹配流程图3. 匹配房间状态机4. 匹配模块设计UML类图三、总结上面匹配模块体现了部分设计模式思想,比如,MatchApp只针对Queue抽象编程,具体的匹配逻辑也是针对Queue编程,体现了解耦的思想,而不是乱糟糟的写到一起...

2021-10-21 15:36:25 974

原创 C++ 设计模式-观察者模式

设计模式介绍一、观察者模式1. 观察者模式定义**2. 观察者模式本质**3. 观察者模式结构和说明(1) 结构(2) 调用顺序4. 观察者模式适用情况5. 观察者模式优缺点(1) 优点(2) 缺点6. 相关模式二、观察者模式示例代码...

2021-10-14 18:47:45 563

原创 C++ 设计模式-抽象工厂

设计模式介绍一、抽象工厂1. 抽象工厂定义**2. 抽象工厂本质**3. 抽象工厂结构和说明(1) 结构(2) 调用顺序4. 抽象工厂适用情况5. 抽象工厂优缺点(1) 优点(2) 缺点6. 相关模式二、抽象工厂示例代码...

2021-09-30 16:04:37 236

原创 C++ 设计模式-工厂方法

设计模式介绍一、工厂方法**1. 工厂方法定义**2. 工厂方法本质**3. 工厂方法结构和说明(1) 结构(2) 调用顺序4. 工厂方法适用情况5. 工厂方法优缺点(1) 优点(2) 缺点6. 相关模式二、工厂方法示例代码...

2021-09-30 16:03:13 894

原创 C++ 设计模式-简单工厂

设计模式介绍一、简单工厂简单工厂不是23中标准设计模式之一,但是太常用了,这里就介绍下1. 简单工厂定义略2. 简单工厂本质略3. 简单工厂结构和说明(1) 结构

2021-09-30 12:18:36 308

原创 C++ 设计模式-单例模式

一、单例模式介绍1. 单例模式定义保证一个类仅有一个实例,并提供一个访问它的全局访问点。2. 单例模式的本质控制实例的数目3. 单例模式的结构和说明(1) 结构Singleton:负责创建 Singleton类自己的唯一实例,并提供一个 getinstance I的方法,让外部来访问这个类的唯一实例。(2) 调用顺序懒汉式饿汉式二、单例模式优缺点1. 时间和空间懒汉式典型的时间换空间, 饿汉式典型的空间换时间懒汉式是典型的时间换空间,也就是每次获取实例都会进行判断,看是否需

2021-09-29 20:25:48 240

原创 C++ 公共组件-libcurl的简单使用

这里写自定义目录标题libcurl官网C++ 封装libcurl使用libcurl官网libcurl上面官网地址简单列出了api的使用说明C++ 封装libcurl使用代码

2021-08-03 15:58:27 137

原创 svn:svnserve 配置使用

一、svnserve 安装shell> apt search svnserveshell> apt install svnserveshell> svnserve --version二、创建svn仓库shell> svnadmin create --helpshell> svnadmin create /data/svn-reposshell> tree .tree ..├── conf│ ├── authz│ ├── hooks-env

2020-12-02 17:16:59 987

原创 zookeeper使用(七)---分布式锁

一、分布式锁分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。在平时的实际项目开发中,我们往往很少会去在意分布式锁,而是依赖于关系型数据库固有的排他性来实现不同进程之间的互斥。这确实是一种非常简便且被广泛使用的分布式锁实现方式。然而有一个不争的事实是,目前绝大多数大型分布式系统的性能瓶颈都集中在数据库操作上。因此,如果

2020-09-23 20:48:25 248

原创 zookeeper使用(六)---zookeeper容灾部署

一、容灾所谓容灾,在IT行业通常是指我们的计算机信息系统具有的一种在遭受诸如火灾、水灾、地震、断电和其他基础网络设备故障等毀灭性灾难的时候,依然能够对外提供可用服务的能力。对于一些普通的应用,为了达到容灾标准,通常我们会选择在多台机器上进行部署来组成一个集群,这样即使在集群的一台或是若干台机器出现故障的情况下,整个集群依然能够对外提供可用的服务。而对于一些核心应用,不仅要通过使用多台机器构建集群的方式来提供服务,而且还要将集群中的机器部署在两个机房,这样的话,即使其中一个机房遭遇灾难,依然能够对外提供

2020-09-23 17:26:44 1182

原创 zookeeper使用(五)---zookeeper开启JMX服务

一、zookeeper单点配置1. 配置普通单点zookeeper请参考:zookeeper单点配置二、zookeeper开启JMX服务1. 打开 zkServer.sh脚本注意不要修改错了ZOOMAIN变量,修改为截图的样子-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=$JMXHOSTNAME //一定要有这项-Dcom.sun.management.jmxremote.port=$JMXPORT -Dcom.su

2020-09-23 12:50:55 2847

原创 Redis内存淘汰策略----LRU LFU

一、一般LRU算法LRU(Least Recently Used)是一种内存淘汰算法。 实现 LRU 算法除了需要 key/value 字典外,还需要附加一个链表,链表中的元素按照一定的顺序进行排列。当空间满的时候,会踢掉链表尾部的元素。当字典的某个元素被访问时,它在链表中的位置会被移动到表头。所以链表的元素排列顺序就是元素最近被访问的时间顺序。位于链表尾部的元素就是不被重用的元素,所以会被踢掉。位于表头的元素就是最近刚刚被人用过的元素,所以暂时不会被踢。二、Redis LRU策略(1) 内存淘汰策

2020-08-29 17:43:21 942

原创 Redis:过期策略

一、过期策略概述Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除。你可以想象Redis 内部有一个死神,时刻盯着所有设置了过期时间的 key,寿命一到就会立即收割。你还可以进一步站在死神的角度思考,会不会因为同一时间太多的 key 过期,以至于忙不过来。同时因为 Redis 是单线程的,收割的时间也会占用线程的处理时间,如果收割的太过于繁忙,会不会导致线上读写指令出现卡顿。二、过期的 key 集合redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定时遍历这

2020-08-29 12:34:35 140

原创 Redis:redis-cluster分布式解决方案

redis-cluster 配置1. 下载源码包从官网下载redis 6.0.6 版本的源码包,解压并且进入src,然后make,将可执行程序拷贝出来使用即可.下载地址:redis.tar.gzshell> cd srcshell> make2. redis-cluster配置//1. 创建redis 实例shell> mkdir -p 7000/data 7001/data 7002/data 7003/data 7004/data 7005/datashell&gt

2020-08-24 18:29:16 447

原创 Redis:codis分布式集群解决方案

一、codis介绍在大数据高并发场景下,单个 Redis 实例往往会显得捉襟见肘。首先体现在内存上,单个 Redis 的内存不宜过大,内存太大会导致 rdb 文件过大,进一步导致主从同步时全量同步时间过长,在实例重启恢复时也会消耗很长的数据加载时间,特别是在云环境下,单个实例内存往往都是受限的。其次体现在 CPU 的利用率上,单个 Redis 实例只能利用单个核心,这单个核心要完成海量数据的存取和管理工作压力会非常大。正是在这样的大数据高并发的需求之下,Redis 集群方案应运而生。它可以将众多小内存的

2020-08-24 15:21:57 505

原创 Redis:Redis Sentinel

一、Redis Sentinel 的安装检查一下自己的系统里面有没有安装redis-sentinel命令,如果没有 可以选择安装redis-sentinel://我这里已经安装了shell> which redis-sentinel /usr/bin/redis-sentinel//安装方法:(ubuntu18.04)shell> apt search redis | grep sentinelshell> apt install redis-sentinelshell

2020-08-21 19:00:08 678

原创 Redis:主从同步

一、CAP 原理在了解 Redis 的主从复制之前,让我们先来理解一下现代分布式系统的理论基石——CAP 原理。1. CAP原理介绍CAP 原理就好比分布式领域的牛顿定律,它是分布式存储的理论基石。C - C onsistent ,一致性A - A vailability ,可用性P - P artition tolerance ,分区容忍性2. 网络分区分布式系统的节点往往都是分布在不同的机器上进行网络隔离开的,这意味着必然会有网络断开的风险,这个网络断开的场景的专业词汇叫着「网络分区

2020-08-20 17:23:50 170

原创 Redis:事务

一、Redis事务Redis 的事务使用非常简单,不同于关系数据库,我们无须理解那么多复杂的事务模型,就可以直接使用。不过也正是因为这种简单性,它的事务模型很不严格,这要求我们不能像使用关系数据库的事务一样来使用 Redis。二、Redis事务使用Redis 在形式上看起来也差不多,分别是 multi/exec/discard。multi 指示事务的开始,exec 指示事务的执行,discard 指示事务的丢弃。//事务基本使用> multiOK> incr booksQUEUE

2020-08-20 12:47:01 103

原创 Redis:持久化

一、Redis持久化必要性Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。二、Redis持久化机制快照AOF日志混合持久化(Redis 4.0)三、快照1. 快照特点是一次全量备份快照是内存数据的二进制序列化形式,在存储上非常紧凑加载快照速度比AOF日志快2. 快照原理(1) 问题引入我们知道 Redis 是单线程程序,这个线程要同时负责多个客户端套接字的

2020-08-19 20:41:28 105

原创 Redis:GeoHash算法

一、附近的人问题1. 用数据库求解当然,现在数据库基本上都引入了相关功能,这里只介绍最普通的实现方式。(1) 问题引入如果要计算「附近的人」,也就是给定一个元素的坐标,然后计算这个坐标附近的其它元素,按照距离进行排序,该如何下手?如果现在元素的经纬度坐标使用关系数据库 (元素 id, 经度 x, 纬度 y) 存储,你该如何计算?(2) 算法思想首先,你不可能通过遍历来计算所有的元素和目标元素的距离然后再进行排序,这个计算量太大了,性能指标肯定无法满足。一般的方法都是通过矩形区域来限定元素的数量,

2020-08-19 12:39:05 504

原创 Redis:限流算法

一、限流算法分类简单限流算法漏斗限流算法(令牌桶算法)分布式漏斗限流算法(分布式令牌桶算法)二、简单限流算法1. 问题引入系统要限定用户的某个行为在指定的时间里只能允许发生 N 次,如何使用 Redis 的数据结构来实现这个限流的功能?2. 解决方案这个限流需求中存在一个滑动时间窗口,想想 zset 数据结构的 score 值,是不是可以通过 score 来圈出这个时间窗口来。而且我们只需要保留这个时间窗口,窗口之外的数据都可以砍掉。那这个 zset 的 value 填什么比较合适呢?它

2020-08-18 19:00:43 943

原创 Redis:布隆过滤器

一、布隆过滤器1. 定义它是一种space efficient的概率型数据结构,用于判断一个元素是否在集合中。主要用来去重,且空间占用少2. 特点具有去重功能,并且空间相比较其他数据结构,占用很少当布隆过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在布隆过滤器可以插入元素,但不可以删除已有元素.只要参数调整合适(需要添加的总元素数量和误差率),误差率可以控制3. 用途新闻推荐系统(用户看过的新闻不推荐)爬虫url去重垃圾邮件过滤其他等等4. 算法原理

2020-08-18 16:19:17 134

原创 Redis:延时队列

Redis延时队列延时队列可以通过 Redis 的 zset(有序列表) 来实现。我们将消息序列化成一个字符串作为 zset 的 value,这个消息的到期处理时间作为 score,然后用多个线程轮询 zset 获取到期的任务进行处理,多个线程是为了保障可用性,万一挂了一个线程还有其它线程可以继续处理。因为有多个线程,所以需要考虑并发争抢任务,确保任务不能被多次执行。Redis延时队列实现这里借助C库hiredis实现。hiredis官网地址Redis LuaRedis延时队列实现...

2020-08-17 20:15:41 106

原创 Redis:分布式锁

一、定义分布式锁本质上要实现的目标就是在 Redis 里面占一个“茅坑”,当别的进程也要来占时,发现已经有人蹲在那里了,就只好放弃或者稍后再试。二、指令//这里的冒号:就是一个普通的字符,没特别含义,它可以是任意其它字符,不要误解//将竞争锁和设置超时绑定成一个原子操作 避免死锁> set lock:book 1 ex 10 nx> dosomething> del lock:book三、超时问题1. 问题描述Redis 的分布式锁不能解决超时问题,如果在加锁和释放锁

2020-08-13 16:26:31 222

原创 mysql:性能调优

mysql性能调优mysql性能调优设计到方方面面,我在这里就抛砖引玉一、CPU选择1. 选择标准OLTP需要IO密集型操作 OLAP是CPU密集型操作。所以为了支持更大内存,最好选择支持64位的多核CPU。2. 调优方式可以利用CPU多核特性,增大读写线程的个数.mysql> show variables like 'innodb_%io_threads' ;+-------------------------+-------+| Variable_name

2020-08-11 20:58:58 381

原创 mysql:备份与恢复

一、概述1. 备份分类这里需要理解数据库备份的一致性,这种备份要求在备份的时候数据在这一时间点上是一致的。举例来说,在一个网络游戏中有一个玩家购买了道具,这个事务的过程是:先扣除相应的金钱,然后向其装备表中插入道具,确保扣费和得到道具是互相一致的。否则,在恢复时,可能出现金钱被扣除了而装备丢失的问题。(1) 按备份的方法不同划分:Hot Backup(热备):是指数据库运行中直接备份,对正在运行的数据库操作没有任何的影响。这种方式在MySQL官方手册中称为Online Backup(在线备份)C

2020-08-08 18:53:25 229

原创 mysql:事务

一、定义事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中的操作,要么都做修改,要么都不做,这就是事务的目的,也是事务模型区别与文件系统的重要特征之一。二、事务ACID特性原子性(atomicity):简单来说,要么都做,要么都不做一致性(consistency):一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。隔离性(isolation):每个读写事务的对象对其他事务的操作对象能相互分离,即该事务提交前对其他事务都不

2020-08-05 20:56:00 229

原创 mysql:undo log

一、定义用来进行事务回滚操作所需要的文件。二、作用对事务进行回滚操作MVCC控制,当用户读取一行记录时,若该记录已经被其他事务占用,当前事务可以通过undo读取之前的行版本信息,以此实现一致性非锁定读取。三、存放位置在共享表空间内的undo log段。四、注意undo是逻辑日志,因此只是将数据库逻辑地恢复到原来的样子。所有修改都被逻辑地取消了,但是数据结构和页本身在回滚之后可能大不相同。undo log会产生redo log,也就是undo log的产生会伴随着redo log的产生

2020-08-05 18:22:29 721 1

原创 mysql:锁

一、锁定义锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。这里还要区分lock与latch:latch一般称为闩锁(轻量级的锁),因为其要求锁定的时间必须非常短。若持续的时间长,则应用的性能会非常差。在InnoDB存储引擎中,latch又可以分为mutex(互斥量)和rwlock(读写锁)。其目的是用来保证并发线程操作临界资源的正确性,并且通常没有死锁检测的机制。lock的对象是事务,用来锁定的是数据库中的对象,如表、页、行。并且一般lock的对象仅在事务com

2020-08-01 17:47:30 115

原创 mysql:全文检索

mysql全文索引的使用

2020-07-29 12:38:19 224

原创 mysql:索引使用优化

mysql索引的建立与优化

2020-07-29 12:37:48 304

空空如也

空空如也

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

TA关注的人

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