3 江南、董少

尚未进行身份认证

我要认证

C/C++/Linux/网络编程/网络安全

等级
TA的排名 315

从底层聊一聊协程的实现原理

一、先介绍一组概念进程进程是系统进行资源分配和调度的基本单位 进程是一个实体,每一个进程都有自己地址空间线程线程是程序执行流的最小单元 一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源子例程子例程是某个主程序的一部分代码 子例程又被称为子程序、过程、方法、函数等。在主程序中可

2020-09-09 19:29:35

ZooKeeper分布式锁的实现

一、前言在介绍分布式锁之前,我们来聊一聊锁的种类线程锁线程锁就是在同一个进程中访问临界资源时使用的锁,主要是用来线程间同步与互斥的 以Linux为例,常用的线程锁有:互斥量、读写锁、条件变量、自旋锁等...进程锁例如Nginx里面有一个accept锁,是使用共享内存+信号量构成的分布式锁不同机器的不同进程之间的锁二、分布式锁的实现方式常见的实现方式有: Redis分布式锁 MySQL分布式锁 ZooKeeper分布式锁(最常用) ......其

2020-09-06 14:01:54

Redis分布式锁的实现

一、前言在介绍分布式锁之前,我们来聊一聊锁的种类线程锁线程锁就是在同一个进程中访问临界资源时使用的锁,主要是用来线程间同步与互斥的 以Linux为例,常用的线程锁有:互斥量、读写锁、条件变量、自旋锁等...进程锁分布式锁二、...

2020-09-06 09:19:26

2021秋招扬帆起航,祝追梦路上的学子九转功成!长风破浪会有时,直挂云帆济沧海!小小的本科也有大大的梦想!

一、前言九月已至,秋招正在火热的进行中,想必也有很多人已经在提前批拿到了Offer,转眼间,自己也来到了大四,正在忙碌为秋招准备之中 一直想写一篇秋招的文章,以此来记录自己的体会以及对大学生涯的追忆(我已不再是当初那个少年),但是一直没有完成。今天,外面下着小雨,刚吃完晚饭,因为疫情的原因在家宅了近半年,再过几天就要返校了,心中透露着难以言喻的感觉,特此写一篇文章来记录一下最近的心情感受(我不太会写文章,所以可能写不了多少字,也可能会有很多病句,大家理解一下我这个理工男吧)二、备战之前我准备秋招

2020-09-02 21:51:33

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

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

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

Lua:06---table表类型:表索引、表构造器、数组、序列、table标准库

一、表类型介绍表(Table)是Lua语言中最主要(事实上也是唯一的)和强大的数据结构 使用表,Lua语言可以以一种简单、统一且高效的方式表示数组、集合、记录和其他许多数据结构。也可以使用表来表示包(package)和其他对象(例如当调用math.sin时,对于Lua来说,实际上是以“字符串sin”为键检索“表math”) Lua语言的表本质上是一种辅助数组,这种数组不仅可以使用数值作为索引,也可以使用字符串或者其他任意类型的值作为索引(nil除外)基本使用可以使用构造器表达式来创建表。例如

2020-08-13 22:07:42

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

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

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

Lua:02---Lua语法命名规范、;号的使用、Lua注释、Lua全局变量/局部变量、do-end代码块

一、Lua语法命名规范Lua语言对大小写是敏感的标识符命名规则Lua语言中的标识符(或名称)可以由:任意字母、数字、下划线组成,但是不能以数字开头 例如下面都是符合规则的命名ii10_ijaSomeWthaLongName其中以“下划线+大写字母”组成的标识符通常被Lua语言用作特殊用途,应该避免使用。例如:_VERSIONLua的保留字下面是Lua语言的保留字,不能用作标识符二、分号的使用在Lua语言中,分号的使用是可选的 例如,下面的使用都

2020-08-11 10:59:52

Lua:01---Lua语言介绍、运行Lua程序(lua解释器)

一、Lua语言介绍Lua语言从一开始就被设计为能与C/C++及其他常用语言开发的软件集成在一起使用的语言,这种设计带来了非常多的好处: 一方面, Lua语言不需要在性能、与三方软件交互等C语言已经非常完善的方面重复“造轮子”,可以直接依赖C语言实现上述特性,因而Lua语言非常精简 另一方面,通过引入安全的运行时环境、自动内存管理、良好的字符串 处理能力和可变长的多种数据类型, Lua 语言弥补了C语言在非面向硬件的高级抽象能力、 动态数据结构、鲁棒性、调试能力等方面的不足 Lua语言强大的

2020-08-11 10:34:43

网络云盘项目:06---HTTP接口介绍、功能介绍、服务端/客户端代码解析

本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393 2.Redis部署、MySQL部署、MySQL表设计:https://blog.csdn.net/qq_41453285/article/details/107871620 3.FastDFS部署:https://blog.csdn.net/qq_41453285/article/details/107874068 4.Ngin

2020-08-09 16:49:15

网络云盘项目:05---服务端部署、客户端部署、演示运行效果

一、服务端部署第一步:到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

网络云盘项目:04---Nginx配置(配置Nginx访问FastCGI、FastDFS)

本项目分为7篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393 2.Redis部署、MySQL部署、MySQL表设计:https://blog.csdn.net/qq_41453285/article/details/107871620 3.FastDFS部署:https://blog.csdn.net/qq_41453285/article/details/107874068 4.Ngin

2020-08-09 13:44:35

网络云盘项目:03---FastDFS集群部署

本项目分为7篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393 2.Redis部署、MySQL部署、MySQL表设计:https://blog.csdn.net/qq_41453285/article/details/107871620 3.FastDFS部署:本文介绍的 一、安装fastdfs可以通过下载FastDFS的源码包来编译安装FastDFS FastDFS的安装就不详细介绍

2020-08-09 13:43:17

网络云盘项目:02---Redis部署、MySQL部署、MySQL表设计

本项目分为7篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393 2.Redis部署、MySQL部署、MySQL表设计:本文介绍 一、本文目的本文配置整个项目中的Redis与MySQL,并且对MySQL中的数据表进行设计二、Redis部署Redis的安装Redis的安装比较容易,可以参阅:https://blog.csdn.net/qq_41453285/article/det

2020-08-09 13:41:22

网络云盘项目:01---项目总体介绍

一、项目介绍本项目是一个类似于百度云盘的项目 Github开源链接:二、项目架构图Qt充当网络云盘的客户端,支持对文件的上传、下载、删除、共享等 后端使用Nginx充当代理服务器,将Qt客户端发送过来的请求转发给后台的FastCGI进行进行处理 FastCGI对Nginx转发过来的请求进行解析处理 FastDFS集群中storage节点保存着客户端的文件 Redis保存着客户端的信息(token)等 MySQL保存着文件的信息三、项目包含的技术项目包含的技术大概有: Qt

2020-08-09 13:33:17

面试冲刺:49---死锁是怎么产生的?死锁如何预防?如何避免死锁(银行家算法)?死锁如何检测?死锁如何解除?

一、死锁产生的原因下面是死锁产生的必要条件(4个,缺一不可): 互斥:资源不能被共享,只能由一个进程使用 请求与保持:已经得到资源的进程可以再次申请新的资源 不可剥夺:已经分配的资源不能从相应的进程中被强制地剥夺 循环等待:系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源 二、死锁预防破坏互斥条件:就是在系统里取消互斥、若资源一般不被一个进程独占使用,那么死锁是肯定不会发生的,但一般“互斥”条件是无法破坏的。因此,在死锁预防里主要是破坏其他三个必要条件,而

2020-08-06 13:42:54

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 1024超级勋章
    1024超级勋章
    授予原创文章总数达到1024篇的博主,感谢你对CSDN社区的贡献,CSDN与你一起成长。
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取