- 博客(1122)
- 资源 (43)
- 收藏
- 关注

原创 暂停更新!
因不可抗拒因素,近期会将优快云的专栏与文章进行下线(如果没意外,应该是所有文章)。 目前专栏里的文章包含:其中有些专栏看的人蛮多的,记得是去年优快云推出了"专栏收费"的功能,自己也在考虑要不要将专栏进行收费,考虑到各位读者,最终没有选择使用"专栏收费"这个功能,我的文章有人看就是最大的收获。...
2021-03-31 09:32:15
2970
18
原创 面试冲刺:54---MTU是什么?IP分片是什么?MSS是什么?TCP和UDP会分片吗?它们的关系是什么?
文章介绍之前先介绍几个概念应用层:传输的数据单位为“报文” 运输层: TCP:传输的数据单位为“报文段” UDP:传输的数据单位为“用户数据报”‘’ IP层/网络层:传输的数据单位为“分组/包”,就是将运输层的内容封装为“分组/包”,并通过路由转发 数据链路层:传输的数据单位为“帧” 物理层:传输的数据单位为“比特”一、什么是MTU?在数据链路层中用MTU(Maximum Transmission Unit,最大传输单元)来限制所能传输的数据包大小 MTU是指一次传送的数据最大
2022-10-21 09:04:18
2482
原创 系统可用性:SRE口中的3个9,4个9...到底是个什么东西?
作为服务端开发的同学,最常听到的一句话是你的接口有几个9?2个9?3个9?到底几个9才算是稳定呢?
2022-08-01 22:46:23
4049
2
原创 MySQL与Redis数据库连接池介绍(图示+源码+代码演示)
一、概念数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。 简单的说:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。二、图示不使用数据库连接池如果不使用数据库连接池,对于每一次SQL操作,都要走一遍下面完整的流程: 1.TCP建立连接的三
2021-06-09 22:18:26
3460
1
原创 优先级队列应用之(哈夫曼树、哈夫曼编码)
一、判定树/判别树的概念现在假设有下面这样的一个题目如果根据题目构建下面这样的一棵树,那么这个树就是判定树(或判别树)判定树(或判别树):用于描述分类过程的二叉树什么是哈夫曼树呢?假设每次的输入量很大,假设现有10000个学生的成绩,其中E的学生占5%、D的学生占15%、C的学生占40%、B的学生占30%、A的学生占10% 假设以下面的方式构建一棵判定树,则1000个数据的比较次数为:10000*(1*5%+2*15%+3*40%+4*40%)=31500次假设以下面的方式构
2021-04-01 13:35:08
2888
原创 服务/软件管理:54---Mac下包管理工具Homebrew的安装与使用
一、介绍Homebrew是mac下的包管理工具,类似于二、安装三、相关使用方法
2021-01-01 20:28:12
1179
原创 服务/软件管理:53---Mac下的royaltsx远程连接工具的使用
一、royaltsx介绍royaltsx是一个远程连接工具,可以在Windows、Mac等系统下使用 目前支持的内容大致有: 访问和管理您的连接 凭证管理 标签式用户界面 连接插件(目前可用。远程桌面、VNC、Apple Remote Desktop、SSH、Telnet、Web、VM ware等) 二、royaltsx的安装进入官网https://www.royalapps.com/ts/mac/features进行下载点击上方的"Free Download",然后来到下
2020-12-26 19:29:16
3201
原创 长文讲述Docker的4大网络模型(host、container、none、bridge)
docker在安装后会默认生成三种网络,none、bridge及host我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定 container模式,使用--net=container:NAME_or_ID指定 none模式,使用--net=none指定 bridge模式,使用--net=bridge指定,默认设置 一、host模式众所周知,Docker使用了L
2020-12-26 11:12:17
2186
原创 手头没资源?机器不够用?带你使用云端Docker(Play with Docker)
一、介绍Play with Docker(PWD)是由Marcos Liljedhal和Jonathan Leibiusky发起的一个项目,由Docker公司赞助 Play with Docker是一个网址,免费提供了一个在线的Docker操作平台,你可以在里面对Docker进行操作和学习 国内访问Play with Docker可能会非常满,因此需要进行翻墙才可以快速访问二、使用演示第一步:进入官网https://labs.play-with-docker.com/,然后点击"Login"进
2020-12-25 22:58:47
2965
1
原创 核心篇,你必须要会的Dockerfile指令详解
一、Dockerfile介绍在前面的文章(https://dongshao.blog.youkuaiyun.com/article/details/107389320)中我们介绍了若干种构造镜像的方式,其中一种方式就是基于Dockerfile构造镜像 关于使用Dockerfile构造镜像的演示案例,请参阅上面的链接二、Dockerfile构建失败时会怎样?如果在构建的过程中,Dockerfile某一步骤出错会怎样?下面通过一个演示案例来看看演示案例第一步:编写当前路径下的Dockerfile,将第一
2020-12-25 22:16:13
2439
原创 C语言操作Redis(hiredis库)
一、hiredis库简介Hiredis是redis数据库一个轻量的C语言客户端库 之所以轻量是由于它只是简单的提供了对redis操作语句支持的接口,并没有实现具体的操作语句的功能。但正是由于这种设计使我们只要熟悉了通用的redis操作语句就可以很容易的使用该库和redis数据库进行交互 除了支持发送命令和接收应答/应答数据,它提供了对应答数据的解析操作。而且这个基于I/O层的数据流解析操作设计考虑到了复用性,可以对应答数据进行通用的解析操作 Hirides仅仅支持二进制安全的redis协议,所以你
2020-12-21 21:36:52
2344
1
原创 muduo网络库:21---muduo简介之(详解muduo多线程模型)
muduo的线程模型为one loop per thread+thread pool模型,在前面一篇文章的末尾曾简单的提起过:https://blog.youkuaiyun.com/qq_41453285/article/details/105104845 本节以一个Sudoku Solver(数独求解)例子为例,回顾了并发网络服务程序的多种设计方案,并介绍了使用muduo网络库编写多线程服务器的两种最常用手法 在后面“muduo编程示例”相关文章会展现muduo在编写单线程并发网络服务程序方面的能力与便捷性。本文
2020-12-21 20:12:04
1898
原创 Nginx:17---反向代理之(反向代理服务器的性能调优:缓冲数据、缓存数据、存储数据、压缩数据(gzip模块))
一、缓冲数据二、缓存数据三、存储数据四、压缩数据(gzip模块)
2020-12-21 10:32:29
1360
1
原创 Nginx:15---反向代理之(安全隔离:SSL流量加密、SSL客户端身份验证、基于原始IP地址阻止流量)
通过代理分开了客户端到应用程序服务器的连接,实现了安全措施。这是在一个架构中使用反向代理的主要原因之一。客户端仅直接连接运行反向代理的机器,这台机器应该足够安全,以至于攻击者找不到任何入口 安全是一个相当大的话题,我们在这里只是简单地就该要点来观察 在反向代理之前设置防火墙,仅允许公网访问80端口(如果HTTPS连接提供443端口,那么也包括该端口) 确保Nginx使用一个非特权用户运行(典型的用户WWW、webservd或者WWW-data,这依赖于具体的操作系统) 加密的流量可以防止窃听
2020-12-21 10:32:22
13836
原创 服务/软件管理:49---VMware下安装Mac OS
一、为VMware解锁Mac OS系统默认的情况下,VMware是不可以安装Mac OS系统的。例如在新建一个虚拟机时是找不到Mac OS这个选项的,因此我们需要先在VMware中解锁Mac OS系统解锁Mac OS只需要下载一个文件即可,下载网址为:https://github.com/theJaxon/unlocker,下载完成之后进入文件夹,点击win-install.cmd即解锁...
2020-12-21 00:28:37
417
2
原创 Lua:09---OS库:rename()、remove()、exit()、getenv()、execute()
一、os.rename()该函数用于文件重命名二、os.remove()该函数用于移除(删除)文件三、os.exit()该函数用于终止程序的执行 参数: 参数1:可选的,表示该程序的返回状态,可以是一个数值(0表示执行成功)或者一个布尔值(true表示执行成功) 参数2:可选的,当值为true时会关闭LUa状态并调用所有析构器释放所占用的所有内存(这种终止方式通常是非必要的,因为大多数操作系统会在进程退出时释放其占用的所有资源) 四、os.getenv()该函数用于获取某个环
2020-08-19 13:45:08
3125
原创 Lua:08---I/O库:input()、output()、write()、read()、lines()、open()、tmpfile()、flush()、setvbuf()、seek()、pope
一、前言由于Lua语言强调可移植性和嵌入型,所以Lua本身并没有提供太多与外部交互的机制。在真实的Lua程序中,从图形、数据库到网络的访问等大多数I/O操作,要么由宿主机实现,要么通过不包括在发行版中的外部库实现 单就Lua语言而言,只提供了ISO C语言标准支持的功能,即基本的文件操作等 对于文件操作来说,I/O库提供了两种不同的模型: 简单I/O模型 完整I/O模型 一、简单I/O模型简单I/O模型虚拟了一个当前输入流和一个当前输出流,其I/O操作是通过这些流实现的 I/O库把当
2020-08-19 13:17:30
4078
原创 Lua:07---Lua函数:函数语法、多返回值、可变长参数(table.pack()、select())、table.unpack()、尾调用
一、函数的定义Lua中函数定义的常见语法格式为:function 函数名(函数参数) -- 函数体end例如,下面是一个对序列'a'的元素进行求和的函数function add(a) local sum = 0 for i = 1, #a do sum = sum + a[i] end return sumend二、函数调用的注意事项是否需要带"圆括号"一般情况下,函数调用时需要带上圆括号(不论函数是否带有参数)。
2020-08-16 13:49:58
11464
原创 Lua:06---table表类型:表索引、表构造器、数组、序列、table标准库
一、表类型介绍表(Table)是Lua语言中最主要(事实上也是唯一的)和强大的数据结构 使用表,Lua语言可以以一种简单、统一且高效的方式表示数组、集合、记录和其他许多数据结构。也可以使用表来表示包(package)和其他对象(例如当调用math.sin时,对于Lua来说,实际上是以“字符串sin”为键检索“表math”) Lua语言的表本质上是一种辅助数组,这种数组不仅可以使用数值作为索引,也可以使用字符串或者其他任意类型的值作为索引(nil除外)基本使用可以使用构造器表达式来创建表。例如
2020-08-13 22:07:42
4849
原创 Lua:05---string字符串类型:lua字符串的使用、字符串标准库、Unicode标准库
一、Lua字符串介绍Lua语言中的字符串是一串字节组成的序列。在Lua语言中,字符使用8个比特位来存储 Lua语言中的字符串可以存储包括空字符在内的所有数值代码,这意味着我们可以在字符串中存储任意的二进制数据 我们也可以使用任意一种编码方式(UTF-8、UTF-16等)来存储Unicode字符串(在文章下面会详细介绍)二、字符串常量我们可以使用一对双引号或者单引号来声明字符串常量。例如:a = "a line"ab = 'another line'b双引号和单引号声明字符串是等
2020-08-11 23:24:24
3723
原创 Lua:04---number数值类型:interger、float、算术运算/关系运算/运算符优先级、math数学库、interger与float的转换
一、Lua数值类型发展在Lua 5.2及之前的版本中,所有的数值都以双精度浮点格式表示 从Lua 5.3版本开始,Lua语言为数值格式提供了两种选择: 整型值:称为interger的64位整型 浮点型值:称为float的双精度浮点类型 二、数值常量表示下面是一些合理的数值常量表示:40.4其中还可以使用科学记数法: 格式为一个可选的十进制部分外加一个可选的十进制指数部分) 科学记数法最终是一个浮点数 4.57e-30.3e125E+20三、类
2020-08-11 16:20:26
9548
1
原创 Lua:03---Lua数据类型(附加逻辑运算符)
一、Lua数据类型汇总Lua语言是一种动态类型语言,在这种语言中没有类型定义,每个值都带有其自身的类型信息 Lua有8种基本类型: nil:空 boolean:布尔 number:数值 string:字符串 userdata:用户数据 function:函数 thread:线程 table:表 使用type()函数可以获取一个值对应的类型名称,该函数的返回值为string类型:type(nil)type(true)type(10.4*3)type("Hel
2020-08-11 13:16:00
893
原创 Lua:02---Lua语法命名规范、;号的使用、Lua注释、Lua全局变量/局部变量、do-end代码块
一、Lua语法命名规范Lua语言对大小写是敏感的标识符命名规则Lua语言中的标识符(或名称)可以由:任意字母、数字、下划线组成,但是不能以数字开头 例如下面都是符合规则的命名ii10_ijaSomeWthaLongName其中以“下划线+大写字母”组成的标识符通常被Lua语言用作特殊用途,应该避免使用。例如:_VERSIONLua的保留字下面是Lua语言的保留字,不能用作标识符二、分号的使用在Lua语言中,分号的使用是可选的 例如,下面的使用都
2020-08-11 10:59:52
4146
原创 Lua:01---Lua语言介绍、运行Lua程序(lua解释器)
一、Lua语言介绍Lua语言从一开始就被设计为能与C/C++及其他常用语言开发的软件集成在一起使用的语言,这种设计带来了非常多的好处: 一方面, Lua语言不需要在性能、与三方软件交互等C语言已经非常完善的方面重复“造轮子”,可以直接依赖C语言实现上述特性,因而Lua语言非常精简 另一方面,通过引入安全的运行时环境、自动内存管理、良好的字符串 处理能力和可变长的多种数据类型, Lua 语言弥补了C语言在非面向硬件的高级抽象能力、 动态数据结构、鲁棒性、调试能力等方面的不足 Lua语言强大的
2020-08-11 10:34:43
14481
原创 网络云盘项目——HTTP接口介绍、功能介绍、服务端/客户端代码解析
本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.youkuaiyun.com/qq_41453285/article/details/107871393 2.Redis部署、MySQL部署、MySQL表设计:https://blog.youkuaiyun.com/qq_41453285/article/details/107871620 3.FastDFS部署:https://blog.youkuaiyun.com/qq_41453285/article/details/107874068 4.Ngin
2020-08-09 16:49:15
3512
7
原创 网络云盘项目——服务端部署、客户端部署、演示运行效果
一、服务端部署第一步:到Github中(https://github.com/dongyusheng/cloud-disk)将服务端的代码下载下来放到ubuntu中,如下图所示(只需要server目录就行了)把服务端代码下载之后,还需要修改一些地方 第二步:修改conf/目录下的cfg.json文件 redis:配置redis服务端的IP和地址 mysql:添加MySQL的相关信息,并且database设置为我们之前创建的colud_disk dfs_path:因为我们的服务端程序调用
2020-08-09 13:53:21
3308
21
原创 网络云盘项目——Nginx配置(配置Nginx访问FastCGI、FastDFS)
本项目分为7篇博客文章完成: 1.项目总体介绍:https://blog.youkuaiyun.com/qq_41453285/article/details/107871393 2.Redis部署、MySQL部署、MySQL表设计:https://blog.youkuaiyun.com/qq_41453285/article/details/107871620 3.FastDFS部署:https://blog.youkuaiyun.com/qq_41453285/article/details/107874068 4.Ngin
2020-08-09 13:44:35
2517
原创 网络云盘项目——FastDFS集群部署
本项目分为7篇博客文章完成: 1.项目总体介绍:https://blog.youkuaiyun.com/qq_41453285/article/details/107871393 2.Redis部署、MySQL部署、MySQL表设计:https://blog.youkuaiyun.com/qq_41453285/article/details/107871620 3.FastDFS部署:本文介绍的 一、安装fastdfs可以通过下载FastDFS的源码包来编译安装FastDFS FastDFS的安装就不详细介绍
2020-08-09 13:43:17
2477
原创 网络云盘项目——Redis部署、MySQL部署、MySQL表设计
本项目分为7篇博客文章完成: 1.项目总体介绍:https://blog.youkuaiyun.com/qq_41453285/article/details/107871393 2.Redis部署、MySQL部署、MySQL表设计:本文介绍 一、本文目的本文配置整个项目中的Redis与MySQL,并且对MySQL中的数据表进行设计二、Redis部署Redis的安装Redis的安装比较容易,可以参阅:https://blog.youkuaiyun.com/qq_41453285/article/det
2020-08-09 13:41:22
3710
原创 网络云盘项目——总体介绍、附源码链接
一、项目介绍本项目是一个类似于百度云盘的项目 Github开源链接:二、项目架构图Qt充当网络云盘的客户端,支持对文件的上传、下载、删除、共享等 后端使用Nginx充当代理服务器,将Qt客户端发送过来的请求转发给后台的FastCGI进行进行处理 FastCGI对Nginx转发过来的请求进行解析处理 FastDFS集群中storage节点保存着客户端的文件 Redis保存着客户端的信息(token)等 MySQL保存着文件的信息三、项目包含的技术项目包含的技术大概有: Qt
2020-08-09 13:33:17
6736
2
原创 面试冲刺:42---虚拟地址、逻辑地址、线性地址、物理地址是什么意思?各个地址之间是如何转换的?
Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同 Linux运行在虚拟存储空间,并负责把系统中实际存在的远小于4GB的物理内存根据不同需求映射到整个4GB的虚拟存储空间中 Linux主要工作在保护模式下。80X86从逻辑地址到物理地址变换中经过了两个阶段: 第一阶段使用分段机制把程序的逻辑地址变换成处理器可寻址内存空间(称为线性地址空间)中的地址 第二阶段的分页机制把线性地址转换成物理地址
2020-08-05 23:39:59
2378
原创 面试冲刺:41---分页与分段是什么?它们的区别是什么?
一、分页、分段的发展历史在分段这个技术还没有出现之前,程序运行是需要从内存中分配出足够多的连续的内存,然后把整个程序装载进去。举个例子,某个程序大小是10M,然后,就需要有连续的10M内存空间才能把这个程序装载到内存里面。如果无法找到连续的10M内存,就无法把这个程序装载进内存里面,程序也就无法得到运行直接把整个程序装载进内存的方式是有一定的问题的①地址空间不隔离:举个例子,假设我有两个程序,一个是程序A,一个是程序B。程序A在内存中的地址假设是0x00000000~0x00000099,程序B
2020-08-05 23:11:14
9216
3
原创 面试冲刺:21---MySQL的日志文件你有了解吗?有哪些?redo log与bin log的区别是什么呢?
一、MySQL的日志文件有哪些?MySQL常见的日志文件有: 错误日志(error log) 慢查询日志(slow query log) 查询日志(query log) 二进制文件(bin log) 重做日志(redo log) 回滚日志(undo log) 本文不讲解每个日志文件的具体细节,详情可参阅给出的每个链接错误日志该日志比较简单,对MySQL的启动、运行、关闭都进行了记录 遇到问题时应该首先查看该日志,以便定位问题 该文件不仅记录了所有的错误信息,还给
2020-08-02 23:23:22
263
原创 长文详解!Docker客户端与服务端TLS认证(Docker Remote API认证)
一、Docker Remote API的认证在前一篇文章我们介绍了Docker Remote API如何使用:https://blog.youkuaiyun.com/qq_41453285/article/details/107642615 在前一篇文章中我们介绍了如何连接到Docker Remote API,但是不意味着任何其他人都能连接到同样的API。从安全的角度上看,这存在一点儿安全问题。不过值得感谢的是,自Docker的0.9版本开始Docker Remote API开始提供了认证机制。这种认证机制采用了
2020-07-28 22:56:53
5512
6
原创 Docker API(Registry API、Docker Hub API、Docker Remote API)
一、Docker API简介在Docker生态系统中一共有3种API: Registry API:提供了与来存储Docker镜像的Docker Registry继承的功能 Docker Hub API:提供了与Docker Hub继承的功能 Docker Remote API:提供与Docker守护进程集成的功能 这3种API都是RESTful风格的 本文我们主要介绍Remote API,因为它是通过程序与Docker进行继承和交互的核心内容二、初识Remote APIRemo
2020-07-28 19:44:59
4217
原创 玩转Docker实战篇!使用Docker构建Consul分布式服务发现工具
一、服务发现服务发现是分布式应用程序之间管理相互关系的一种机制。一个分布式程序一般由多个组件组成。这些组件可以都放在一台机器上,也可以分布在多个数据中心,甚至分布在不同的地理区域。这些组件通常可以为其他组件提供服务,或者为其他组件消费服务 服务发现允许某个组件在想要与其他组件交互时,自动找到对方。由于这些应用沈本是分布式的,服务发现机制也需要分布式的。而且,服务发现作为分布式应用不同组件之间的“胶水”,其本身还需要足够动态、可开,适应性强,而且可以快速且一致地共享关于这些服务的数据 另外,Docke
2020-07-28 10:00:24
860
原创 不会容器编排?带你使用Docker容器编排工具Docker Compose(原Fig)
一、Docker编配和服务发现编配(orchestration)是一个没有严格定义的概念。这个概念概念大概描述了自动配置、协作和管理服务的过程。在Docker的世界里,编配用来描述一组时间过程,这个过程会管理运行在多个Docker容器里的引用,而这些Docker容器有可能运行在多个宿主机上。Docker对编配的原生支持非常弱,不过整个社区围绕编配开发和集成了很多很棒的工具 在现在的生态环境里,已经围绕Docker构建和继承了很多工具。一些工具只是简单地将多个容器快捷地“连”在一起,使用简单的组合来构建
2020-07-27 22:25:45
1389
原创 玩转Docker实战篇!使用Docker构建一个Java Tomcat服务器
一、本文目的本文我们考虑把Docker作为引用服务器和编译管道。本文做一个更加“企业化”且用于传统工作负载的服务:获取Tomcat服务器上的WAR文件,并运行一个Java引用程序,为了做到这一点,我们创建了两个Docker镜像: 一个镜像从URL拉取指定的WAR文件并将其保存到卷中 一个含有Tomcat服务器的镜像运行上面那个卷目录下的WAR文件 本文的代码、文件链接本文用到的所有文件和代码,对应的Github链接为:https://github.com/dongyusheng/csdn
2020-07-27 17:09:07
916
SGI STL源码.zip
2020-08-26
QQChat.zip
2020-08-06
matrix.zip
2019-11-26
vrctorList.zip
2019-11-23
arrayList.cpp
2019-11-23
arrayList.zip
2019-11-22
USB DNW.zip
2019-11-11
01.OpenOCD with GUI setup.zip
2019-11-11
OpenJTAG.zip
2019-11-11
openwrt-17.01.4-17.01.4.zip
2019-10-16
LinEnum-master.rar
2019-09-21
webshell b374k.zip
2019-09-19
HTTPS单向认证通信
2019-09-14
PthreadPool.zip
2019-09-14
sqIi-labs,SQL注入平台
2019-08-06
glibc-2.27.tar.gz
2019-07-22
pthread_pool2.zip
2020-12-20
binarySearchTree.zip
2020-01-23
linkedBinaryTree.zip
2020-01-22
completeWinnerTree.zip
2020-01-12
maxHblt.zip
2019-12-22
maxHeap.zip
2019-12-21
arrayTree.zip
2019-12-16
hashChains.zip
2019-12-15
SGI STL源码.zip
2019-12-14
hashTable.zip
2019-12-13
skipList.zip
2019-12-12
sortedChain.zip
2019-12-08
linkedQueue.zip
2019-12-08
arrayQueue.zip
2019-12-08
linkedStack.zip
2019-12-08
derivedLinkedStack.zip
2019-12-05
arrayStack.zip
2019-12-05
derivedArrayStack.zip
2019-12-05
squareMatrix.zip
2019-11-30
单链表chain.zip
2019-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人