自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 资源 (2)
  • 收藏
  • 关注

翻译 CMake教程Step2(添加库)

参考官方cmake3.24教程翻译https://cmake.org/cmake/help/v3.24/guide/tutorial/index.htmlhttps://gitlab.kitware.com/cmake/cmake/-/tree/master/Help/guide/tutorialstep2https://cmake.org/cmake/help/v3.24/guide/tutorial/Adding%20a%20Library.html我的仓库 :https://github.

2022-07-02 11:38:15 1330

翻译 CMake教程Step1(基本起点)

参考官方cmake3.24教程翻译https://cmake.org/cmake/help/v3.24/guide/tutorial/index.htmlhttps://gitlab.kitware.com/cmake/cmake/-/tree/master/Help/guide/tutorialstep1https://cmake.org/cmake/help/v3.24/guide/tutorial/A%20Basic%20Starting%20Point.html我的仓库 :https:/

2022-07-01 02:23:52 251 3

原创 Docker命令之docker run

docker run -d -p 9200:9200 -p 9300:9300 //指定端口-e “ES_JAVA_OPTS=-Xms512m -Xmx512m” //配置参数–name es //别名elasticsearch //镜像名称或者镜像IDdocker rename 镜像ID //修改容器别名–nam............

2022-06-11 12:33:43 1113

原创 Docker常用命令

docker search 【镜像名称】2、拉取镜像docker pull 【镜像名称】:【tag版本信息】如上位,拉取官方的最新版本(latest)镜像4、修改镜像名称和tag版本docker tag 【镜像ID】【镜像名称】:【tag版本信息】5、删除已安装镜像docker rmi 【镜像名称】:【tag版本信息】6、运行容器使用docker镜像【镜像名称】以后台模式启动一个容器,并将容器命名为【容器名称】。docker run -itd --name 【

2022-06-11 03:09:54 183

原创 游戏服务端(MMORPG)的基础算法二、寻路

寻路算法用途众多,也有多种实现。在MMOPRG游戏中是不可或缺的技术。算是基础的核心技术了。这里就不介绍寻路算法的发展史了,只介绍比较流行高效的跳点寻路算法JPS。总结如下:JPS 又名跳点搜索算法(Jump Point Search),是基于 Grid 格子的寻路算法。如果节点 y 是 x 的邻居,并且节点 y 的邻居有不可达的格子,并且从 parent(x)、x、y 的路径长度比其他任何从 parent(x)到 y 且不经过 x 的路径短,则 y 为 x 的强迫邻居,x 为 y 的跳点。1)如果点 y

2022-05-06 20:15:20 2126

原创 游戏服务端(MMORPG)的基础算法一、AOI

AOI(Area Of Interest),就是感兴趣区域,在MMOPRG游戏服务器上是不可或缺的技术。算是基础的核心技术了。通俗一点说,AOI就是玩家在场景中实时看到的区域,AOI会随着单位(比如玩家角色)在场景中的位置变化而改变。广义上,AOI系统支持任何游戏世界中的单位对一定半径范围内发生的事件进行处理。MMOPRG中绝大多数需求只是对AOI范围内发生的,围绕单位离开、进入的事件进行的处理。这两个事件可以算AOI的核心事件。比如,当你进入一个游戏场景时,如果你能看到其他玩家,那背后AOI系统就正在运作

2022-05-01 17:09:56 4196

原创 Jenkins安装(Debian 11)

适用于任何软件安装前2 、安装jdk包由于jenkins基于java所以安装完成验证java版本3 、安装jenkins包首先将密钥添加和Jenkins apt 存储库条目添加到系统中然后,更新本地包索引,最后安装 Jenkins:4 、启动Jenkins查看运行状态5 、访问 Jenkins Web 界面。 http://你的地址:8080/如:本地访问 http://localhost:8080/访问成功如下,按步骤先解锁jenkins 在Lin

2022-04-12 21:12:40 1619

原创 Linux文件/文件夹 权限设置

说明:-R:递归修改目录下所有的文件或文件夹说明username: 用户名groupname: 组名fullpath: 要更改的目录(文件或文件夹路径)2. 更改所属用户3.更改所属用户组4. 更改操作权限主要如下权限权限对文件的影响对目录的影响r(读取)可读取文件内容可列出目录内容w(写入)可修改文件内容可在目录中创建删除内容x(执行)可作为命令执行可访问目录内容修改某个用户、组对文件夹的权限,用命令chmod实现,其中U代表User,G代表Group,O代表Other;+、

2022-04-12 20:37:54 32533 1

原创 设计模式-第二十五章-分类总结

一、创建型模式 单例模式(Singleton) 工厂方法(Factory Method) 抽象工厂(Abstract Factory) 建造者模式(Builder) 原型模式(Prototype)二、结构型模式 适配器模式(Adapter) 装饰模式(Decorator) 桥接模式(...

2022-02-14 22:26:06 82

原创 设计模式-第二十三章-解释器模式

AbstractExpression 抽象表达式:声明一个抽象的解释操作,并定义一个抽象的解释方案,其具体的实现在各个具体的子类解释器中完成TerminalExpression 终结符表达式:实现文法中终结符有关的解释操作。文法中每一个终结符都有一个具体的终结表达式与之对应NoterminalExpression 非终结符表达式:实现文法中非终结符有关的解释操作Context 环境角色:上下文环境,包含解释器之外的全局信息概念:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解

2022-02-14 22:20:05 115

原创 设计模式-第二十四章-访问者模式

Visitor类,访问者接口声明了一系列以对象结构的具体元素为参数的访问者方法。 如果编程语言支持重载, 这些方法的名称可以是相同的, 但是其参数一定是不同的。Element类,元素接口声明了一个方法来 “接收” 访问者。 该方法必须有一个参数被声明为访问者接口类型ConcreteVisitor类,具体访问者会为不同的具体元素类实现相同行为的几个不同版本。ConcreteElement类,具体元素类 必须实现接收方法。 该方法的目的是根据当前元素类将其调用重定向到相应访问者的方法。 请注意, 即使元素基类实

2022-02-13 20:37:23 183

原创 设计模式-第十二章-状态模式

IState类,接口会声明特定于状态的方法。 这些方法应能被其他所有具体状态所理解, 因为你不希望某些状态所拥有的方法永远不会被调用。Context类,保存了对于一个具体状态对象的引用, 并会将所有与该状态相关的工作委派给它。 上下文通过状态接口与状态对象交互, 且会提供一个设置器用于传递新的状态对象。ConcreteState类,会自行实现特定于状态的方法。 为了避免多个状态中包含相似代码, 你可以提供一个封装有部分通用行为的中间抽象类。状态对象可存储对于上下文对象的反向引用。 状态可以通过该引用从上下文

2022-01-24 23:51:38 307

原创 设计模式-第十章-观察者模式

ISubject类,抽象通知者,一般用一个抽象类 或者接口实现。用来增加观察者, 移除观察者,通知IObserver类,抽象观察者,为所有具体观察者定义一个接 口,在得到主题的通知时更新自己 这个接口 叫更新接口Subject类,具体通知者,将有关状态存入具体观察者对象, 在具体通知者的内部状态改变时,给所有登记过的观察者发送通知Observer类,具体观察者类,实现抽象观察者角色所要求的更新接口,以便使本身的状态与通知者状态相协调当你使用图形用户界面类时通常会遇到一个问题。 比如, 你创建了自定义按钮类并

2022-01-23 20:54:49 203

原创 设计模式-第十四章-备忘录模式

Memento类, 是原发器状态快照的值对象 (value object)。 通常做法是将备忘录设为不可变的, 并通过构造函数一次性传递数据。Originator类可以生成自身状态的快照, 也可以在需要时通过快照恢复自身状态。Caretaker类, 仅知道 “何时” 和 “为何” 捕捉原发器的状态, 以及何时恢复状态。通过保存备忘录栈来记录原发器的历史状态。 当原发器需要回溯历史状态时, 负责人将从栈中获取最顶部的备忘录, 并将其传递给原发器的恢复 (restoration) 方法。备忘录模式是一种行为设计

2022-01-21 21:49:17 328

原创 设计模式-第二十一章-中介者模式

Mediator接口,声明了与组件交流的方法, 但通常仅包括一个通知方法。 组件可将任意上下文 (包括自己的对象) 作为该方法的参数, 只有这样接收组件和发送者类之间才不会耦合。Component基类,是各种包含业务逻辑的类。每个组件都有一个指向中介者的引用, 该引用被声明为中介者接口类型。组件不知道中介者实际所属的类, 因此你可通过将其连接到不同的中介者以使其能在其他程序中复用。ConcreteComponent 类,具体组件类,实现组件基类的接口,不同组件具体功能ConcreteMediator类,具体

2022-01-17 22:32:40 101

原创 设计模式-第十六章-迭代器模式

Iterator 接口,声明了遍历集合所需的操作: 获取下一个元素、 获取当前位置和重新开始迭代等。IteratorCollection接口,声明一个或多个方法来获取与集合兼容的迭代器。 请注意, 返回方法的类型必须被声明为迭代器接口, 因此具体集合可以返回各种不同种类的迭代器。ConcreteIterator类,实现遍历集合的一种特定算法。 迭代器对象必须跟踪自身遍历的进度。 这使得多个迭代器可以相互独立地遍历同一集合。ConcreteCollection类,会在客户端请求迭代器时返回一个特定的具体迭代器

2022-01-17 20:14:58 75

原创 设计模式-第十九章-命令模式

Invoker类,类负责对请求进行初始化, 其中必须包含一个成员变量来存储对于命令对象的引用。 发送者触发命令, 而不向接收者直接发送请求。 注意, 发送者并不负责创建命令对象: 它通常会通过构造函数从客户端处获得预先生成的命令。Command 接口,声明一个执行命令的方法。ConcreteCommand类 ,接收对象执行方法所需的参数可以声明为具体命令的成员变量。 你可以将命令对象设为不可变, 仅允许通过构造函数对这些成员变量进行初始化。Receiver类, 类包含部分业务逻辑。 几乎任何对象都可以作为接

2022-01-13 20:43:57 160

原创 设计模式-第二十章-职责链模式

Handler类,声明了所有具体处理者的通用接口。 该接口通常仅包含单个方法用于请求处理, 但有时其还会包含一个设置链上下个处理者的方法。BaseHandler类,通常情况下, 该类中定义了一个保存对于下个处理者引用的成员变量。 客户端可通过将处理者传递给上个处理者的构造函数或设定方法来创建链。 该类还可以实现默认的处理行为: 确定下个处理者存在后再将请求传递给它。ConcreteHandler类,包含处理请求的实际代码。 每个处理者接收到请求后, 都必须决定是否进行处理, 以及是否沿着链传递请求。处理者通

2022-01-13 18:26:55 136

原创 设计模式-第二十二章-享元模式

Flyweight类 , 同一享元对象可在许多不同情景中使用。 享元中存储的状态被称为 “内在状态”。 传递给享元方法的状态被称为 “外在状态”。FlyweightFactory类,工厂会根据参数在之前已创建的享元中进行查找,如果找到满足条件 的享元就将其返回; 如果没有找到就根据参数新建享元。Context类,通常情况下,原始对象的行为会保留在享元类中。 因此调用享元方法必须提供部分外在状态作为参数。 但你也可将行为移动到情景类中, 然后将连入的享元作为单纯的数据对象。享元模式只是一种优化。 在应用该模式

2022-01-13 00:00:04 161

原创 设计模式-第八章-外观模式

Facade类 外观类,提供了一种访问子系统的便捷方式AdditionalFacade类,其他与facade功能相对相关性的拓展功能集合,避免主facade被污染SubSystem类,若干子系统,不会意识到外观的存在,他们在系统内运作互相之间可以直接进行交互外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。Facade类AdditionalFacade类SubSystem 类 这里只写一个吧。其他雷同main...

2022-01-12 22:18:50 65

原创 设计模式-第十五章-组合模式

Component接口,描述了树中简单项目和复杂项目所共有的操作。Leaf类, 是树的基本结构, 它不包含子项目。一般情况下, 叶节点最终会完成大部分的实际工作, 因为它们无法将工作指派给其他部分。Composite类,是包含叶节点或其他容器等子项目的单位。 容器不知道其子项目所属的具体类, 它只通过通用的组件接口与其子项目交互。容器接收到请求后会将工作分配给自己的子项目, 处理中间结果, 然后将最终结果返回给客户端。组合模式为你提供了两种共享公共接口的基本元素类型: 简单叶节点和复杂容器。 容器中可以包含

2022-01-12 01:22:37 172

原创 设计模式-第十八章-桥接模式

Implementor类,实现部分抽象出来的接口。ConcreteImplementorA,ConcreteImplementorB为Implement派生的类,为具体的实现。Abstraction类,抽象部分实现。RefinedAbstraction类,提炼出来的抽象部分。桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里并不是说,让抽象类与派生类分离,而是指,抽象类和它的派生类用来实现自己的对象。实现系统可能有多角度分类,每一种分类都有可能变化。那么就把这种多角度分离出

2022-01-10 01:49:26 179

原创 git本地仓库上传到远端仓库(gitlab/gitee)

进入本地项目仓库文件夹,git初始化命令如下 2. 将本地项目仓库文件夹的所有文件添加到暂存区 3. 将暂存区的文件提交到本地仓库4. 获取git/gitee远端仓库地址 注:关于远端仓库创建,远端仓库地址获取,不在这里讲在这一步时如果出现错误:,需先输入如下命令,再重新关联6. 将本地仓库文件上传到远端仓库 如果远端仓库不为空,需拉取远端仓库与本地同步合并把本地master分支推送到远端至此,本地仓库上传远

2022-01-08 22:49:00 628

原创 WSL2设置默认启动用户(debian)

以上图为例,通过以下命令更改默认启动用户确认要更改为默认启动得用户为 XXX(XXX为用户名)输入以下命令更改成功

2022-01-08 22:07:34 3486

原创 vim中选定复制粘贴

1). 使用v进入可视模式,移动光标键选定内容。 2). 选定文件中全部文本块ggVG即yank(提起) ,常用的命令如下: y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用; yy 复制整行(nyy或者yny ,复制n行,n为数字); y^ 复制当前到行头的内容; y$ 复制当前到行尾的内容; yw 复制一个word (nyw或者ynw,复制n个word,n为数字); yG 复制至档尾(nyG或者yn

2022-01-08 21:48:50 5121

原创 禁用WSL的子系统beep提示音(debian)

1. 进入文件 2. 取消注释 3. 退出重启1. 进入文件 2. 文件末尾添加3. 加载文件 在~/.vimrc里面添加一行:set vb

2022-01-08 21:06:29 762

原创 设计模式-第十三章-适配器模式

Target类,这是客户期待的接口。可以是具体类或者抽象类或者接口。Adaptee类,需要适配的类。Adapter类,内部包装一个Adeptee对象,把源接口转换成目标接口。适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。系统的聚聚和行为都正确,但是接口不符合时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要用于希望复用一些现存的类,但是接口又与复用环境要求不一直的情

2021-12-04 19:50:45 100

原创 docker-ce安装(debian10)

默认安装# step 1: 安装必要的一些系统工具sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common# step 2: 安装GPG证书curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -# Step 3: 写.

2021-09-14 16:00:26 803

原创 ubuntu/debian切换shell(dash/bash)

Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。GNU/Linux 操作系统中的 /bin/sh 原本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 bash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本

2021-09-14 15:35:00 2538 2

原创 WSL2 更换硬盘位置

windows wsl子系统默认硬盘存放位置在c盘,想要换到其他盘 2.查看wsl信息 3.导出虚拟机 wsl --export 4.注销原有虚拟机 wsl --unregister 5.导入虚拟机至新位置 wsl --import ......

2021-09-14 13:02:35 4267 2

原创 Debian10下给普通用户sudo权限

进入root超级用户,找到 /etc/sudoers文件1、为sudoers文件添加写的权限 :chmod u+w sudoers2、编辑sudoers文件 : visudoers3、找到如下# User privilege specificationroot ALL=(ALL:ALL) ALL username ALL=(ALL:ALL) NOPASSWD:ALL//添加入上面一行,其中username为需要提升的普...

2021-09-14 00:18:50 2142

原创 MariaDB 安装部署(debian)

我linux用的是debian,下面命令依次运行。 2、查看mysql版本和运行状态查看版本mysql --version输出类似以下:mysql Ver 15.1 Distrib 10.1.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2sudo service mysql status输出类似以下:● mariadb.service - MariaDB database server Loaded: loade

2021-02-20 10:00:22 4444

原创 Ubuntu20.04彻底删除mysql,并重装mysql

apt-get purge 与 apt-get remove是不同的,简单来说:可根据需要选择下面mysql常用包进行安装安装过程中如果没有报错信息,安装完成后,会自动启动mysql服务方法有多种。常用如下:如下图则启动成功ubantu下可以直接用service命令查看服务运行状态,类似如下如果未启动,则运行启动命令解决方法参考如下:(MySQL 8, WSL 2) su: warning: cannot change directory to /nonexistent: No such file o

2020-07-22 18:20:10 38667 55

原创 代码提交日志规范化

操作类型[模块/功能] 具体描述例如: fix[日志]修改一个导致日志输出错误的问问题。

2019-03-28 16:38:13 1095

原创 github 常用命令记录

常用命令:git init 新建一个空的仓库git status 查看状态git add [files] 添加文件git rm [files] 删除文件git rm 目录-r -f 删除目录git commit -m '注释' 提交添加的文件并备注说明git remote add origin [email protected]:jinzhaogit/git.git 连接远......

2019-03-21 09:20:35 116

原创 设计模式-第九章-建造者模式

Product类,具体产品类,通常由多个部件组成。是个复杂的对象。Builder类,抽象建造者类,确定产品由若干个部件组成,并声明一个得到此产品建造完成后的产品的接口方法。ConcreteBuilder类,具体建造者。实现抽象建造者接口。也就是此产品的各个部件的具体构建方式。Director类,指挥者类。使用建造者接口的类。控制产品内部部件构造的顺序,组成方式等。建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。用户只需指定需要建造的类型就可以得到它们,

2018-11-19 11:00:34 188

原创 设计模式-第十一章-抽象工厂模式

AbstractProductA和AbstractProductB类,是抽象类。定义了该类型产品的相关操作。ConcreteProductA1、ConcreteProductA2、ConcreteProductB1和ConcreteProductB2类,是对以上抽象类的具体分类实现。各自通过不同的方式去实现该类产品的相关操作。AbstractFactory类是抽象工厂类,里面应该包含生产各类(A,B)产品的抽象方法。ConcreteFactory1和ConcreteFactory2类,具体工厂。生成分别生产

2018-10-30 17:30:20 175

原创 设计模式-第十七章-单例模式

Singleton类,定义一个GetInstance操作,允许客户访问它的唯一实例。 因为Singleton类封装它的唯一实例,这样它可以严格的控制客户怎么访问它以及何时访问它。简单的说就是对唯一实例的受控访问。c++ 饿汉式front end 以上例子为饿汉式单例最简单的一种写法,意在说明这类设计模式。其他实现不在这里讨论...

2018-10-29 16:45:22 189

原创 设计模式-第七章-模板方法模式

AbstractClass是抽象类,其实也就是一个抽象模板,定义并实现一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级的逻辑骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类中实现。ConcreteClass,实现父类所定义的一个或者多个抽象方法。每个AbstractClass都可以有任意多个ConcreteClass与之对应,而每个ConcreteClass都可以给出这些抽象方法。模板方法模式(TemplateMethod),定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法

2018-10-24 14:11:31 130

原创 Linux下常用命令收藏

Linux下常用命令收藏查看目录下文件ls 显示当前目录列表   常用参数 -a  -alll 显示当前目录文件详细信息   常用参数 -a 查看当前目录pwd 查看当前路径查看进程netstat -tunlp | grep  端口号    查看端口占用情况nmap 127.0.0.1 查看本机开放的端口杀死进程kill -s 9 进程号  文件夹操作...

2018-08-19 19:59:49 351

RubyInstallers Window(Ruby安装包Windows)

window10环境下ruby安装包。内涵rubyinstaller-2.5.1-1-x64.exe,rubyinstaller-2.4.4-1-x64.exe

2018-04-04

Redis windows

Redis-x64-3.2.100.msi redis-desktop-manager-0.8.8.384.exe

2017-10-06

空空如也

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

TA关注的人

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