WhiteShirtI
码龄3年
  • 176,205
    被访问
  • 129
    原创
  • 779,497
    排名
  • 3,365
    粉丝
关注
提问 私信

个人简介:不管你现在是什么状态 你要记住 生活中的目标就是快乐自由 每天开心

  • 加入CSDN时间: 2019-01-07
博客简介:

WhiteShirtI的博客

博客描述:
看了就有大收获的博客
查看详细资料
  • 5
    领奖
    总分 1,454 当月 51
个人成就
  • 获得1,391次点赞
  • 内容获得461次评论
  • 获得5,062次收藏
创作历程
  • 118篇
    2021年
  • 16篇
    2020年
成就勋章
TA的专栏
  • 数据库
  • 计算机网络
    12篇
  • Linux
    32篇
  • 项目
    2篇
  • 工具
    7篇
  • C++
    36篇
  • 设计模式
    7篇
  • 数据结构
    13篇
  • C语言
    14篇
  • 数码爱好
    2篇
  • 算法
    4篇
  • 技术转载
    3篇
兴趣领域 设置
  • 大数据
    mysql
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

编写程序段,求(5,-3)所在的象限。

答:

666

回答问题 2021.07.05

Windows下如何安装MySQL服务

1、到官网进行下载MySQL官网下载下载后将其解压(注意不要放在中文路径、有空格或特殊字符的路径中)2、配置环境变量右键此电脑 -> 高级系统设置 -> 环境变量 -> 在下面系统变量栏点新建 ->变量名:MYSQL_HOME变量值:为MySQL解压的根目录在系统变量栏找到 Path 变量并双击%MYSQL_HOME%\bin3、配置MySQL初始化文件在MySQL根目录下创建初始化文件my.ini,即C:\Tool\mysql-8.0.24-win
原创
发布博客 2021.07.05 ·
960 阅读 ·
0 点赞 ·
3 评论

linux下如何升级gcc和g++编译器

1、sudo yum -y intall epel-release2、sudo yum install centos-release-scl-rh centos-release-scl3、sudo yum install devtoolset-7-gcc 4、sudo yum install devtoolset-7-gcc-c++5、将以下命令复制到~/.bashrc文件下source /opt/rh/devtoolset-7/enable...
原创
发布博客 2021.06.10 ·
258 阅读 ·
0 点赞 ·
0 评论

centos如何安装数据库mysql

切换用户1、切换到root用户进行操作安装服务客户端1、安装 mariadb 服务yum install -y mariadb-server2、安装 mariadb 命令行客户端yum install -y mariadb3、安装 mariadb C libraryyum install -y mariadb-libs4、安装 mariadb 开发包yum install -y mariadb-devel修改文件配置1、更改 /etc/my.cnf.d/client.cnf
原创
发布博客 2021.06.10 ·
362 阅读 ·
0 点赞 ·
1 评论

项目 点餐系统

项目介绍项目名称点餐系统项目简介用户通过浏览器访问服务器获得菜品信息进行点餐,管理员可以通过浏览器访问服务器对订单及菜品进行管理开发环境Linux项目开发语言及工具C++、Makefile、vim、g++、Json、mysql、http、线程、socket、stl技术概要相类似的MVC框架:其中业务模块是管理数据的,如菜品信息和菜品订单,外界想要访问数据必须通过这个模块来完成。用户界面模块也就是浏览器前端界面,用户或者管理员的操作都是通过这个界面来完成的。业务控制模块主要是针对页面请求完
原创
发布博客 2021.06.22 ·
752 阅读 ·
4 点赞 ·
1 评论

项目 协程-实现非抢占式TCP服务器

协程(Coroutines)是用户态下的非抢占式的轻量级线程,是一种在程序开发中处理多任务的组件项目介绍项目开发环境Linux项目开发语言及工具C、vim、gcc、gdb、Makefile项目特点协程是完全由程序来控制的,是在用户态下执行,这样子就没有用户态到内核态的切换开销协程是非抢占式的调度,用户可以自己实现调度,同一时间只能有一个协程在执行,并且由协程主动交出控制权协程的执行效率非常高。因为子程序切换不是线程切换,而是由程序自身控制,与同等数量的线程相比,协程的执行效率会更高项
原创
发布博客 2021.06.09 ·
199 阅读 ·
5 点赞 ·
10 评论

linux ucontext族函数的原理及使用

ucontext函数族这里的context族是偏向底层的,其实底层就是通过汇编来实现的,但是我们使用的时候就和平常使用变量和函数一样使用就行,因为大佬们已经将它们封装成C库里了的我们先来看看寄存器寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果我们常用的寄存器是X86-64中的其中16个64位的寄存器,它们分别是%rax, %rbx, %rcx, %rdx, %esi, %edi, %rbp, %rsp%r8, %r9, %r10, %r11, %r
原创
发布博客 2021.06.09 ·
694 阅读 ·
11 点赞 ·
10 评论

设计模式 C++装饰模式

买了新房(毛坯房)需要装修,对新房进行装修并没有改变房子用于居住的本质,但它让房子变得更漂亮,更加满足居家的需求。在软件设计中,我们也可以用类似的技术对原有对象(新房)的功能进行扩展(装修),以获得更加符合用户需求的对象。这种技术在设计模式中称为装饰模式装饰模式可以在不改变一个对象本身的基础上给对象增加额外的新行为,在现实生活中,这种情况比比皆是,如一张照片,可以不改变照片本身,给它增加一个相框,使得它具有防潮的功能,而且用户可以根据需要给它增加不同类型的相框,甚至可以在一个小相框的外面再套一个大相框使
原创
发布博客 2021.06.05 ·
95 阅读 ·
1 点赞 ·
2 评论

设计模式 C++观察者模式

无论是在现实世界中还是在软件系统中,人们常常会遇到这样一类问题,一个对象的状态改变会引发其他对象的状态改变,如十字路口的交通信号灯,红灯亮则汽车停,绿灯亮则汽车行,再如点击软件中一个按钮,则会弹出一个窗口。这些对象之间存在一种依赖关系,一个对象的行为会导致依赖它的其他对象发生反应,为了更好地描述这种对象之间的依赖关系,我们需要学习一种新的行为型设计模式,即观察者模式,它是软件设计与开发中使用频率最高的设计模式之一定义思想:定义对象间一种一对多的依赖关系,使得每当一个对象状态发生改变时,其他相关对象皆得到通
原创
发布博客 2021.06.04 ·
71 阅读 ·
2 点赞 ·
0 评论

设计模式 C++外观者模式

无论是在现实生活中还是在软件开发过程中,人们经常会遇到这样一类情况:需要和多个对象打交道,例如用户在自行组装计算机时需要购买显示器、主板、硬盘、内存、CPU 等硬件设备,组装过程麻烦而且可能还会存在设备不兼容,而直接购买已由专业人士组装好的计算机则可以省去这些麻烦。我们无须购置设备,通过专业计算机组装人员可以获得一台完整的计算机。由于计算机组装人员的出现,简化了用户与多个设备之间的交互,使得用户不需要关心设备的组装细节即可使用它们,在这里,计算机组装人员充当了一个我们称之为“外观类”的角色,通过它可以简化用
原创
发布博客 2021.06.03 ·
67 阅读 ·
0 点赞 ·
0 评论

设计模式 C++抽象工厂模式

推荐阅读设计模式 C++工厂方法模式品牌知名度逐渐提高,不单单只生产一种产品,如果我们继续使用一个工厂对应一种产品,那么假如有三个品牌华为、小米、苹果。他们各自都要三种产品,分别为手机、耳机、笔记本电脑。则此时我们需要创建9个工厂才能实现,类多了代码的实现和维护起来也是非常麻烦的。此时我们就必须引入一种新的模式----抽象方法模式定义思想:抽象工厂模式是工厂方法模式的泛化版,工厂方法模式是一种特殊的抽象工厂模式。在工厂方法模式中,每一个具体工厂只能生成一种具体产品,而在抽象工厂方法模式中,每一个具体工
原创
发布博客 2021.06.03 ·
120 阅读 ·
1 点赞 ·
2 评论

设计模式 C++工厂方法模式

推荐阅读设计模式 C++简单工厂模式工厂方法模式是在简单工厂模式的缺点上进行优化的,我们都知道,在简单工厂模式中,要去增加或者减少一个产品的类型,都需要修改工厂中的if-else判断。这样子显然不符合我们代码开发中的开闭原则,拓展起来也是非常麻烦的工厂方法模式 = 简单工厂模式 + “开闭原则”定义思想:工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的就是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类优点:不需
原创
发布博客 2021.06.03 ·
148 阅读 ·
2 点赞 ·
4 评论

设计模式 C++简单工厂模式

在我们要使用一个对象时,就必须通过类来实例化对象,也就是需要new一个对象。在new的过程是非常复杂的,要经过读文件->解析文本->创建对象->给属性设值等过程。而引入工厂模式,就是将创建类的这个步骤又工厂来帮我们完成,我们只需要去使用工厂里创建好的类即可。在使用工厂时,我们需要让工厂知道我们想要的一个对象,所以我们可以通过传参的方式去告诉工厂我们的需求优点:实现了客户端和具体实现类的解耦客户端免除了直接创建产品对象的责任,而仅仅“消费”产品产品客户端无需知道所创建的具体产品类的
原创
发布博客 2021.06.03 ·
93 阅读 ·
1 点赞 ·
1 评论

C++ 一篇文章让你知道智能指针的魅力

前情提要我们知道除了静态内存和栈内存外,每个程序还有一个内存池,这部分内存被称为自由空间或者堆。程序用堆来存储动态分配的对象即那些在程序运行时分配的对象,当动态对象不再使用时,我们的代码必须显式的销毁它们。在C++中,动态内存的管理是用一对运算符完成的:new和delete,ne:在动态内存中为对象分配一块空间并返回一个指向该对象的指针,delete指向一个动态独享的指针,销毁对象,并释放与之关联的内存。动态内存管理经常会出现两种问题:一种是忘记释放内存,会造成内存泄漏;一种是尚有指针引用内存的情况下
原创
发布博客 2021.05.31 ·
2005 阅读 ·
19 点赞 ·
12 评论

C++ lambda表达式

lambda表达式最先出现于python脚本语言,在运行时候才会一行一行的解释指令,速度虽然满,但是对于程序员来说减少了大量的代码工作,语法相对更加简单lambda表达式是一个匿名的函数完整表达式:[capture-list](parameters)mutable->return-type{statement}[]中的变量就是可以将上下文中的变量引入到匿名函数中去使用,默认属性为const()中的变量为函数的参数列表,定义方式和普通函数一样,可省略,但是如果添加mutable属性后即使()为空
原创
发布博客 2021.05.31 ·
75 阅读 ·
0 点赞 ·
0 评论

C++ C++11新特性--右值引用

左值与右值在C语言中,左值和右值一般有两种区分的方法。可以出现在赋值符号“=”的两边的值为左值,只能出现在赋值符号“=”的右边的值为右值;还有一种说法是能取地址的为左值,不能取地址的为右值。但是这两种说法并非完全正确void test(){ int a = 10; int b = a;//ok a为左值 10 = a; //error 10为右值 int* pa = &a;//ok int* pi = &10;//error}而在C++中,右值有3种变量,分别为常量、
原创
发布博客 2021.05.30 ·
310 阅读 ·
2 点赞 ·
7 评论

C++ 布隆过滤器原理及实现

概念布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。例如我们要我找在40亿个数据中查找某字符串是否存在,我们也是第一想到的是通过遍历一个一个去比对,但是数据庞大,遍历消耗很多的时间和空间的资源。但是我们可以通过一位图+哈希来解决这个问题。在常数时间内判断该字符串是否存在。位图+哈希,我们称为布隆过滤器。其
原创
发布博客 2021.05.28 ·
341 阅读 ·
2 点赞 ·
10 评论

C++ 位图及位图的实现

概念位图就是bitmap的缩写,所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,该数据都是不重复的简单数据。通常是用来判断某个数据存不存在的例如:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中如果不看数据量,我们第一想到的肯定就是依次从头遍历,但是这个数据量是非常大的,有40亿,遍历40亿次消耗的时间和内存是非常多的。但是引入位图后,就可以专门解决这种大量数据查找是否存在的问题。查找这个数是否存在所消耗的时间复杂度
原创
发布博客 2021.05.28 ·
959 阅读 ·
23 点赞 ·
22 评论

C++ 简单实现unorderset和unordermap

unorderset和unordermap是C++11中心引入的一种关联式容器。set和map与他们之间的不同之处就是遍历时是否有序,通过名字就可以看出,unorderset和unordermap在遍历时是无序的。之所他们有这样的差异,是因为他们底层的实现的数据结构是不同的,unorderset和unordermap底层是通过哈希表来实现的,而set和map底层是通过红黑树来实现的。unorderset和unordermap的插入和查找的效率非常高,这也会引入他们的原因之一。下面我们一起来看看如何实现的看
原创
发布博客 2021.05.26 ·
252 阅读 ·
3 点赞 ·
7 评论

Linux 线程安全常用的锁机制

转自:https://blog.csdn.net/qq_35423154/article/details/109259881 文章目录 乐观锁 VS 悲观锁悲观锁乐观锁 CASCAS机制ABA问题CAS的优缺点 互斥锁 VS 自旋锁互斥锁自旋锁对比及应用场景 读写锁实现方式读写锁 VS 互斥锁 乐观锁 VS 悲观锁 乐观锁和悲观锁故名思意,它们的区别就是做事的心态不同。 悲观锁 悲观锁做事比较悲观,它始终认为共享资源在我们使用的时候会被其他线程修改,容易导致线程安全的问
转载
发布博客 2021.05.25 ·
112 阅读 ·
1 点赞 ·
1 评论
加载更多