自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 C++项目 -- 负载均衡OJ(一)comm

代码由客户端编写完成后,上传到服务端oj_server,由oj_server根据compile_server的负载情况选择相应的服务,来进行代码的编译与运行,结果再由oj_server返回给客户端,是基于BS模式(浏览器(客户端)-服务端)编写的。本项目的功能为一个在线的OJ,实现类似leetcode的题目列表、在线提交、编译、运行等功能。类中用于实现一些针对文件路径的方法;类中用于实现一些针对文件的方法;类用于实现以下字符串操作的接口;类用于实现一些针对时间的方法;该模块用于编写一些公共方法;

2024-04-13 19:50:02 1187

原创 C++项目 -- 负载均衡OJ(三)online_judge

Control类用于根据Model类中获取的题目数据,来调用View类中的方法构建OJ网页;所有主机离线后,再次上线,触发ctrl + c信号,就可以上线所有主机;类用于保存每台编译服务器的具体信息,一个编译服务对应一个。这是和数据交互的模块,对外提供访问数据的接口;在ctemplate中数据是以字典的格式存放的。这两个内容是通过题目的编号,产生关联的。这是谷歌开源的cpp网页渲染库;每次都会选择负载最低的机器运行;View类用于网页的渲染;这是业务的核心逻辑模块;这是构建网页的模块;

2024-04-13 19:48:46 1214

原创 MySQL -- MySQL Connection C中的API介绍

如:2. 链接数据库mysql_real_connect初始化完毕之后,必须先链接数据库,在进行后续操作。(mysql网络部分是基于TCP/IP的)建立好链接之后,获取英文没有问题,如果获取中文是乱码:设置链接的默认字符集是utf8,原始默认是latin1;第一个参数 是 C api中一个非常重要的变量(的返回值),里面内存非常丰富,有port,dbname,charset等连接基本参数。它也包含了一个叫 的结构体变量,该变量里面保存着很多函数指针,这些函数指针将会在数据库连接成功以后的各种数据操

2024-04-12 22:40:11 684

原创 C++项目 -- 负载均衡OJ(二)compile_server

编译模块

2024-03-20 20:55:42 1343

原创 C++项目 -- 高并发内存池(七)性能瓶颈与优化

因此在32位系统下,共有2 ^ 19页,共需要2 ^ 19长度的数组;函数访问_idSpanMap的时候就不需要加锁了。

2024-02-21 17:48:02 895

原创 C++项目 -- 高并发内存池(六)解决一些细节问题

多线程环境下高并发内存池的效果要比malloc和free的效果好;

2024-02-21 14:16:25 896

原创 C++项目 -- 高并发内存池(五)释放内存过程

【代码】C++项目 -- 高并发内存池(五)释放内存过程。

2024-02-19 21:10:18 1070

原创 C++项目 -- 高并发内存池(四)Page Cache

这样的设计方便以页为单位的分配和回收;

2024-02-17 21:59:43 850

原创 C++项目 -- 高并发内存池(三)Central Cache

CentralCache模块的设计

2024-02-06 17:35:59 1023

原创 C++项目 -- 高并发内存池(二)Thread Cache

高并发内存池整体设计ThhreadCache设计

2024-02-04 21:10:10 889

原创 C++项目-- 高并发内存池(一)

高并发内存池项目介绍定长内存池的实现

2024-02-03 15:47:57 1108

原创 Go后端开发 -- 即时通信系统

虚线框内:server是服务器,user是用户server中:online map用来记录当前那些用户在线;channel用于进行广播;user中:一个用户对应两个go程,一个go程用于阻塞地从channel中读取消息,若有消息,会立即会写给客户端;另一个go程会阻塞等待客户端发消息;这是读写分离模型。

2024-01-24 17:36:39 802 1

原创 Go后端开发 -- goroutine && channel

多进程操作系统解决了阻塞的问题存在切换成本设计复杂将一个线程分为用户线程和内核线程,CPU只能看到内核线程使用协程调度器调度多个协程,形成N:1关系多个线程管理多个协程,M:N,语言的重点就在于协程调度器的优化channel是Go语言中的一个核心类型,可以把它看成管道。并发核心单元通过它就可以发送或者接收数据进行通讯,这在一定程度上又进一步降低了编程的难度。channel是一个数据类型,主要用来解决go程的同步问题以及go程之间数据共享(数据传递)的问题。

2024-01-22 16:16:15 1094 2

原创 Go后端开发 -- 反射reflect && 结构体标签

反射可以大大提高程序的灵活性,使得interface{}有更大的发挥余地反射必须结合interface才玩得转变量的type要是concrete type的(也就是interface变量)才有反射一说反射可以将“接口类型变量”转换为“反射类型对象”反射使用TypeOf和ValueOf函数从接口中获取目标对象信息反射可以将“反射类型对象”转换为“接口类型变量reflect.value.Interface().(已知的类型)遍历的Field获取其Field。

2024-01-18 10:52:04 1162 1

原创 Go后端开发 -- 面向对象特征:结构体 && 继承 && 多态 && interface

type用来声明数据类型//声明一种新的数据类型myint,是int的一个别名 type myint int使用type定义结构体可以先定义后初始化;也可以直接在{}中初始化// 定义一个结构体//可以先定义后初始化book1.author = "李四"//也可以直接在{}中初始化book2 := Book{title: "c++", author: "王五"}上面实例的结构体类型Hero的首字母是大写的go语言的封装是针对包来封装的,类的公有和私有都是针对包来的。

2024-01-16 16:03:05 2160

原创 C++刷题 -- 栈和队列

力扣链接2.用队列实现栈用两个队列实现栈时间复杂度: pop为O(n),其他为O(1)空间复杂度: O(n)只用一个队列实现:时间复杂度: pop为O(n),其他为O(1)空间复杂度: O(n)3.有效的括号有效的括号括号匹配是使用栈解决的经典问题如果还记得编译原理的话,编译器在 词法分析的过程中处理括号、花括号等这个符号的逻辑,也是使用了栈这种数据结构。再举个例子,linux系统中,cd这个进入目录的命令我们应该再熟悉不过了。这个命令最后进入a目录,系统是如何知道进入了

2024-01-15 21:36:48 873

原创 Go后端开发 -- 数组 && slice && map && range

切片不需要说明长度或使用make()函数来创建切片,make函数可以为容器开辟空间也可以简写为也可以指定容量,其中capacity为可选参数。这里 len 是数组的长度并且也是切片的初始长度。//切片定义切片初始化直接初始化切片,[]表示是切片类型,{1,2,3}初始化值依次是1,2,3.其cap=len=3初始化切片s,是数组arr的引用将arr中从下标startIndex到endIndex-1 下的元素创建为一个新的切片缺省endIndex时将表示一直到arr的最后一个元素。

2024-01-15 15:52:05 1004

原创 Go后端开发 -- 条件、循环语句 && defer语句

select 是 Go 中的一个控制结构,类似于 switch 语句。Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。condition: 关系表达式或逻辑表达式,循环控制条件;for 循环是一个循环控制结构,可以执行指定次数的循环。post: 一般为赋值表达式,给控制变量增量或减量。以上代码中的 key 和 value 是可以省略。init: 一般为赋值表达式,给控制变量赋初值;运行时panic异常一旦被引发就会导致程序崩溃。else语句的区别是。这个特性常用于处理成对的操作,如。

2024-01-05 17:38:38 1403

原创 Go后端开发 -- Go Modules

Go modules 是 Go 语言的依赖解决方案,发布于 Go1.11,成长于 Go1.12,丰富于 Go1.13,正式于 Go1.14 推荐在生产上使用。Go 语言长久以来的依赖管理问题。“淘汰”现有的 GOPATH 的使用模式。统一社区中的其它的依赖管理工具(提供迁移功能)。

2024-01-03 11:35:31 1568

原创 Go后端开发 -- main函数 & 变量 & 常量 & 函数

常量是一个简单值的标识符,在程序运行时,不会被修改的量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。//显式类型定义//隐式类型定义:fmt.Println("面积为:", area)const (UNKNOW = 0FEMALE = 1MALE = 2数字 0、1 和 2 分别代表未知性别、女性和男性。常量可以用常量计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过。

2024-01-02 10:39:52 1199

原创 C++刷题 -- 字符串

当然,我们在判断 s + s 拼接的字符串里是否出现一个s的的时候,第一个for循环用来标定子串的末尾,根据末尾取出子串。第二个while循环用来检查原字符串是否由子串构成。那么既然前面有相同的子串,后面有相同的子串,也就是由前后相同的子串组成。

2023-12-20 22:16:47 451

原创 Go后端开发 -- Golang的语言特性

代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。代表项目:go-kit、micro、monzo bank的typhon、bilibili等。编译完成的可执行程序是比较大的,因为已经把所有需要的库全部静态编译起来了;代表项目:tidb、influxdb、cockroachdb等。代表项目:以太坊、hyperledger等。编译的时候就可以检查出来隐藏的大多数问题;通过编译的时候就可以知道代码哪里有问题;外,不依赖其他的库,可以直接。

2023-12-20 11:38:41 921

原创 Go后端开发 -- 环境搭建

配置完后,保存并加载一下:

2023-12-20 11:05:20 2846

原创 C++刷题 -- KMP算法

前缀表要求的就是相同前后缀的长度;字符串a的最长相等前后缀为0。字符串aa的最长相等前后缀为1。字符串aaa的最长相等前后缀为2。等等…为什么一定要用前缀表刚刚匹配的过程在下标5的地方遇到不匹配,模式串是指向f,如图:然后就找到了下标2,指向b,继续匹配:如图。

2023-12-19 23:11:34 870

原创 C++刷题 -- 哈希表

一种方法是直接两个for循环暴力求解,时间复杂度为O(N^2);

2023-12-12 15:44:05 1044

原创 C++刷题 -- 链表

【代码】C++刷题 -- 链表。

2023-12-07 23:06:52 1105

原创 C++刷题 -- 数组

二分查找、滑动串口、双指针法

2023-11-21 22:10:42 361

原创 MySQL -- mysql connect

该函数会调用MYSQL变量中的t_mysql_methods中的 read_rows 函数指针来获取查询的结果。同时该函数会返回MYSQL_RES 这样一个变量,该变量主要用于保存查询的结果。执行完mysql_store_result以后,其实数据都已经在MYSQL_RES 变量中了,下面的api基本就是读取MYSQL_RES 中的数据。它也包含了一个叫 st_mysql_methods的结构体变量,该变量里面保存着很多函数指针,这些函数指针将会在数据库连接成功以后的各种数据操作中被调用。

2023-11-09 22:58:10 1161

原创 MySQL -- 用户管理

【代码】MySQL -- 用户管理。

2023-11-09 22:28:20 556

原创 MySQL -- 视图

同真实的表一样,视图包含一系列带有名称的列和行数据。

2023-11-09 11:11:15 173

原创 MySQL -- 事务管理

其中隔离级别越严格,安全性越高,但数据库的并发性能也就越低,往往需要在两者之间找一个平衡点。不可重复读的重点是修改和删除同样的条件, 你读取过的数据,再次读取出来发现值不一样了;幻读的重点在于新增同样的条件, 第1次和第2次读出来的记录数不一样;说明:mysql 默认的隔离级别是可重复读,一般情况下不要修改上面的例子可以看出,事务也有长短事务这样的概念。事务间互相影响,指的是事务在并行执行的时候,即都没有commit的时候,影响会比较大。

2023-11-09 10:33:08 195

原创 MySQL -- 索引

索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值,在于提高一个海量数据的检索速度。主键索引(primary key)唯一索引(unique)普通索引(index)全文索引(fulltext)–解决中子文索引问题。

2023-11-06 22:27:03 302

原创 MySQL -- 复合查询及内外连接

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而。,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。共有三个关键字:in,all,any;外连接分为左外连接和右外连接;一一进行组合,就是数据穷举;

2023-11-02 22:33:07 240

原创 MySQL -- 内置函数

得到的md5摘要是一个32位字符串;md5()函数一般用于密码存储:密码的比较本质是对摘要的比较;

2023-11-01 16:21:41 219

原创 MySQL -- 表的增删查改

group by是通过分组这样的手段,为未来进行聚合统计提供基本的功能支持(group by一定是配合聚合统计使用的group by后面跟的都是分组的字段依据,只有在group by后面出现的字段,未来在聚合统计的时候,在select中才能出现;where VS having:他们两个不是冲突的,是互相补充的;having通常是在完成整个分组聚合统计,然后再进行筛选;where通常是在表中数据初步被筛选的时候,要起效果的;

2023-10-31 09:54:22 138

原创 MySQL -- 表的约束

如上图所示,

2023-10-26 09:45:48 241

原创 MySQL -- 数据类型

timestamp:时间戳,从1970年开始的 ‘yyy-mm-dd HH : ii : ss’ 格式和datetime完全一致,占用四字节;datetime:时间日期格式 ‘yyy-mm-dd HH : ii : ss’ 表示范围从1000到9999,占用八字节;向bit类型元素中插入数据,但是没有显示,这是因为bit字段在显示的时候,是按照ASCII码对应显示的;在表中只插入了前两个数据,但是时间戳的数据也更新到的最新的时间,这是因为。,符合约束条件才可以进行操作,不符合条件就无法操作;

2023-10-24 09:19:16 111

原创 MySQL -- 库和表的操作

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。IF NOT EXITS:如果数据库不存在再创建,存在了就不创建了,可省略;创建数据库的时候,后面有选项可以指定字符集和校验规则;CHARACTER SET:指定数据库采用的字符集;创建一个数据库,校验规则使用utf8_bin。COLLATE:指定数据库字符集的校验规则;如果备份的不是整个数据库,而是。修改数据库主要是修改数据库的。

2023-10-23 21:01:09 443

原创 MySQL -- 数据库基础

文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便为了解决上述问题,专家们设计出更加利于管理数据的东西 – 数据库, 它能更有效的管理数据。数据库其实也是一种文件系统;以特定格式保存好的文件,就叫做数据库;MySQL数据库:提供较为便捷的数据存取服务的软件集合,是一个软件层,能够帮助用户进行数据管理;MySQL存储介质:磁盘为主,内存为辅;

2023-10-20 14:31:08 263 1

原创 MySQL -- 环境安装(CentOS7)

在[mysqld]最后一栏配置(不知道是什么,就放在配置文件最后) 加入: skip-grant-tables 选项,并保存退出;sargs是将前面管道的结果作为参数,喂给yum命令,-y是指所有的确认选项默认为y;安全强度,默认为中,即1,要求必须包含 数字、符号、大小写字母,长度至少为8位;判断修改密码时候新密码是否符合当前的策略,不满足报错,不让修改,关闭它;如果有,就执行第3步,没有就执行第4步;再次尝试登陆,不需要密码就可以登录了;安装完成,检查mysql必要文件;再次进行安装,就可以了;

2023-10-19 15:37:02 269

空空如也

空空如也

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

TA关注的人

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