自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Q_feifeiyu的博客

一个编程菜鸟的成长故事

  • 博客(69)
  • 收藏
  • 关注

原创 C++基础基础基础杂谈,面试理解,看看就行,有不对欢迎指出

20240321 面试今天面了一家公司,遇到几个之前没有遇到的问题,回答得不是特别好,对此进行归纳整理,顺道吐槽一下,最近西安的公司是真的一言难尽啊,有好的公司推荐下小弟我。联系方式 19105695348。

2024-03-21 13:55:50 834 1

原创 赛道快马问题

5、有这样一种情况,无法得知 A 组的第二名 A2 是否跑的比 B 组的第一名 B1 还要快(刚好,假设 A 组存在这5匹马都远快于其他组,虽然 A2 位于第二名组,但是比第一名组中的 B1 还要快),因此需要选择 A2,B1决策第二名。4、接下来选择第二名和第三名,若 A1-E1 按照速度最快的进行排序,即 A1 快于 B1,B1 快于 C1,C1 快于 D1,D1 快于 E1,即对于 A-E 组,所有的 Ax > Bx > Cx > Dx > Ex。综合看,第八次决策,A2为第二名情况下,新增 A4;

2024-03-19 19:56:02 282 1

原创 数据存储模型

写点什么东西呢之前大学毕设搞了个高并发模型,里面使用到了select模型,里面用到了一个内存池,支持多客户端连接、登录、消息发送,现在工作经验三年多了,开发经验积累了不少,但是对喜爱的C++的一些知识有一些遗忘,想把之前的东西都捡起来。刚好最近新买了一台14700KF的主机,纯用来打游戏些许有点小浪费,琢磨捣鼓捣鼓,把在新公司学到了一些小东西加进去,也可以应用到我的高并发服务模型里面,好不好用再说,先得动手,开搞开搞。

2023-11-19 17:25:31 118

原创 猴子搬桃

有一堆桃子,第一个人过来平均分成五份,多出来一个–扔到海里,取走了一份;第二个人过来平均分成五份,多出来一个–扔到海里,取走了一份;第三、第四、第五个人也是这样,请问,原来至少有多少个桃子?解:每个人分桃子的时候,都是多出来一个,那我们可以假设刚开始,向外“借”4个桃子,刚好凑成整五份,变相为多出来扔到海里的那个桃子实际被这五个人拿走了-》也就是,(sum - 4 )为5的5次方假设刚开始有...

2020-03-21 12:41:13 388

原创 金山---WPSc++笔试题

昨天笔试了金山的面试题,4个问答题,一筹莫展,基本要凉今天刚巧看到STL, 想到第一个题的答案题目是这样的:设计一个数据结构s,s管理一个有k个元素的队列并支持下面的操作:I[val],将val插在队头,如果队列中有val,则将其插入到队头。如果插入后,队列中的元素大于k个,将队尾的元素移出P,打印队头元素T,打印队尾元素今天看了一下《深入实践C++模板编程》这本书,STL中有一...

2020-03-21 12:17:10 675

转载 字符串查找问题---长字符串查找短字符串

假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?比如,如果是下面两个字符串:String 1: ABCDEFGHLMNOPQRSString 2: DCGSRQPOM答案是true,所有在string2里的字母string1也都有。如果是下面两个字符串:String 1:...

2020-03-21 12:03:23 1348

原创 关于云服务器程序端口问题

##这两天在阿里云的CentOS 7上写了个TCP服务器,在Windows客户端进行访问出现了一些问题,解决方案1.云服务器端口问题首先需要配置安全规则登录服务器实例->打开实例列表->找到对应实例->更多->网络和安全组->安全组配置->配置规则->添加安全组规则---具体操作百度搜索使用Xshell连接云服务器查看防火墙状态:systemct...

2020-02-27 15:06:40 415

转载 使用cout在命令行输出彩色字体

##昨天晚上写高并发服务器时,因为服务端需要响应多个客户,想在服务端向已连接的所有客户发送一条新人到来消息,但是客户端同样需要打印一些日志,跟需要确认的消息混合在一起,很难鉴别出来,在网上搜索如何printf打印彩色字体…但是很不幸的是因为看不懂,所以放弃了,所幸C++中有个函数SetConsoleTextAttribute(参数表) 可以将命令行窗口的输出全部换色。SetConsoleText...

2020-02-25 13:14:42 2566 3

原创 套接字 Socket 详解

学习编程的,不能不知道套接字—Socket,网络程序必备。对于一些初学者来说,可能一脸懵逼,挠头三连:这是个啥?怎么用?原理是啥?今天就了解一下套接字。1.什么是 Socket?Socket,译为“套接字”,是计算机之间通信的一种约定。通过 Socket,网络中的计算机之间可以相互收发信息。socket 的典型应用就是 Web服务器和浏览器:浏览器输入URL->向服务器发送请求-&gt...

2020-02-22 23:01:43 345

原创 Lambda表达式

在STL中,往往会使用到函数对象(仿函数—即对operator()的重载),因此需要编写好多函数对象类,有的函数对象类只需要定义一个对象,并且只使用一次,造成浪费。为了解决这个问题,Lambda表达式横空出世!1.Lambda 格式Lambda 表达式的定义形式如下:[外部变量访问方式说明符] (参数表) -> 返回值类型{ 语句块 }“外部变量访问方式说明符”可以是=...

2020-02-21 21:42:21 177

原创 C++里的四种强制类型转换

C语言里将类型符号作为强制类型转换运算符的做法在C++中得到了兼容,但是C++中引入了四种功能不同的强制类型转换运算符:static_cast、reinterpret_cast、const_cast、dynamic_cast1.为什么要新增四种强制类型转换?强制类型转换具有一定风险,如:把整型转换为指针类型、将基类指针转换为派生类指针、将一种函数指针转换为另一种函数指针,将常量指针转换为非常量...

2020-02-20 20:22:28 389

原创 malloc 堆分配算法探析

提到 C 语言不能不说内存管理,而内存管理则必须了解 malloc,今天深度学习了 malloc 的堆分配算法原理,笔记整理如下什么是堆分配算法?程序向操作系统申请一块适当大小的堆空间,然后由程序自己管理这块空间,而具体来讲,管理着堆空间分配的是运行库------也就是封装起来的 malloc 函数。运行库相当于向操作系统“批发”了一块较大的堆空间,然后“零售”给程序使用,当全部“售完”或程序...

2020-01-29 13:41:21 1273

原创 生产者与消费者模型--使用条件变量和信号量实现

生产者与消费者模型一个场所,两种模型,三种关系 场所:线程安全的队列 模型:生产者、消费者 关系:生产者与生产者之间(互斥)、生产者与消费者(同步与互斥)、消费者与消费者(互斥)的关系 功能:解耦合、支持忙闲不均、支持并发 耦合度:相互之间的依赖关系越紧密,耦合度越高使用条件变量实现生产者消费者模型// 使用条...

2019-07-28 09:33:09 326

原创 线程安全--同步

线程同步同步的实现: 条件变量 条件不满足陷入等待,另一方促使条件满足后,唤醒等待 pthread_cond_t // 定义条件变量pthread_cond_init // 初始化pthread_cond_wait // 等待pthread_cond_signal // 唤醒pthread_cond_destroy // 销毁条件变量...

2019-07-27 08:49:25 144

原创 线程基础

线程基础1.进程-> 传统操作系统上,进程就是pcb,操作系统通过pcb描述进程 Linux下,进程称为线程组(tgid--thread group id),线程组---抽象化的一个概念,同一个虚拟地址空间上的线程-pcb,具有相同的特征2.线程->运行程序中的一个独立的执行流 操作系统运行调度的最小单元,包含在进程中。 Linux下,线程使用...

2019-07-27 08:46:47 143

原创 线程安全--互斥

线程互斥相关概念: 临界资源:多线程执行流共享的资源就叫做临界资源 临界区:每个线程内部,访问临界区的代码,就叫做临界区 互斥:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用 原子性:不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成 互斥量: 大部分情况,线程使用的数据都是线程自己...

2019-07-27 08:46:22 140

原创 继承基础及各种继承体系下的派生对象模型

继承1、继承基础概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,在保持原有类特性的基础上进行扩展,增加功能,产生新的类,称派生类。 继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。格式class Student : public/prot...

2019-07-20 20:57:05 282

原创 视图和用户管理

视图1、什么是视图 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。2、视图的相关操作 创建视图 create view 视图名 as select语句; 修改视图 (基表与视图息息相关,操作互相影响) update v_enam...

2019-06-29 11:21:18 201

原创 事务---隔离级别、ACDI特性

事务1、什么是事务? DML/DDL/DCL 事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。2、事务基本操作 开始一个事务--start transaction; 创建一个保存点-...

2019-06-29 11:19:53 285

原创 表的索引

表的索引1、索引 目的:提高检索速度 原理:在操作系统高层次使用 二分思想 和 Binary Tree 来维护这个索引 特点:索引不用加内存,不用改程序,不用调sql,只要执行正确的create index,就可以提高查询速度。 索引占用磁盘空间,是以增加大量的IO操作来提高检索速度,空间换时间 添...

2019-06-29 11:19:03 710

原创 表的连接

表的连接1、内连接: 内连接实际就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。 select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件; 显示SMITH的名字和部门名称 select ename,...

2019-06-29 11:18:26 287

原创 复合查询

复合查询1、单表查询 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J select empno,ename,sal,job from emp where (sal > 500 or job='MANAGER') and ename like 'J%'; 按照部门号升序而雇员的工资降序排序 ...

2019-06-29 11:18:00 367

原创 MySQL中的内置函数

内置函数1、日期内置函数 日期类型:DATE/DATETIME/DATESTAMP datediff(date1, date2)==date1-date2; 插入日期,时间,时间戳 insert into tt values(current_data(), now(), current_timestamp());...

2019-06-29 11:16:23 177

原创 简单的习题--MySQL

习题练习1、英语不及格 select name, english from table where english < 60;2、语文80~90 select name, chinese from table where chinese >=80 AND chinese <=90; select name, chinese from tabl...

2019-06-22 22:18:09 172

原创 数据的增查改删

表中数据的操作1、插 插入数据--insert into student values(1, 'TOM', '男'); 全列插入 --insert into student values(2, 'JACK', '男'), (3, 'ALICE', '女'); 批量插入 --insert ...

2019-06-22 22:16:15 167

原创 表的几种约束

表的约束 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如一个人的身份证号,要求是唯一的。null/not null, default, comment, zerofill,primary key, auto_increment, unique key1、空属性 null、not n...

2019-06-22 22:13:58 3880

原创 MySQL相关命令

数据库--相关命令 4个默认数据库-information、mysql、performance、sys--utf8 3个字节, GBK 2个字节1、库相关 创建数据库-- create database [if not exists]workspace [charset=utf8 collate utf8_...

2019-06-22 22:12:17 168

原创 数据库基础

数据库基础1、什么是数据库? 存储信息的一个管理平台;对数据进行有效的管理2、与文件相比数据库的优势? 文件存在安全性问题; 文件不方便进行存储海量数据; 文件不利于查询和管理; 在程序中操作数据库更方便; 3、存储介质: 磁盘、内存4、主流的数据库: SQL Sever: 微软的产品,.Net程序员的最爱,中大...

2019-06-22 22:10:36 190

原创 C++里模板类的分离编译,函数模板的声明与定义

昨天在使用模板实现顺序表的时候,将函数模板声明与定义分别在两个源文件里编译,在主函数调用模板函数的时候出错---无法解析的外部符号,后来通过查阅资料得知,模板一般情况下是不支持分开编译的。/* SeqList.h */#pragma oncetemplate <typename T>class SeqList{public: void CheckC...

2019-05-23 16:33:58 315

原创 Linux 系统编程--进程

1.冯诺依曼体系结构---存储程序冯诺依曼的体系结构:存储器为核心,所有操作都通过内存来连接比如写文档的时候:键盘编辑输入内容->加载到内存上->cpu处理调度->控制显示屏输出内容2.操作系统--统筹管理计算机的软硬件资源如何管理进程?------先描述、后组织小常识---操作系统通过对驱动程序的管理实现对硬件资源的管理...

2019-05-19 08:00:42 372

原创 Linux 常用工具

Linux下软件的安装分为源码安装和工具安装 源码安装:需要手动依赖关系库 工具安装:自动解决依赖关系库 IDE = vim + gcc + gdb vim:编辑器(有12种模式,常用的有三种:普通、插入、底行) 普通模式: i--光标所在位置插入 I--光标所在行首插入...

2019-05-16 22:34:41 338

原创 动态链接和静态链接

动态链接和静态链接 什么是库文件? 为了防止相同功能的程序每次都要进行编译耗费时间,因此对这些调用函数接口进行编译汇编生成一个二进制文件 <gcc默认使用动态链接库> 什么是静态链接? 静态链接:静态库在编译时期将库文件中的调用函数代码链接到目标程序中,因此程序运行时不再需要该库存在 ...

2019-05-16 22:31:23 212

原创 Linux 权限

权限:管理员root、 普通用户 文件操作对用户的分类: 文件所有者(u) 文件所属组(g) 其他用户(o) 用户对文件操作的分类: 可读(r) 可写(w) 可执行(x) 对目录操作的分类 ...

2019-05-16 21:58:42 261

原创 Linux 基础指令

操作系统 = 内核 + 外部应用Linux简单介绍:Linux分为 Liynux内核 和 外部应用 两部分Linux内核是为了统筹管理软硬件,外部应用是为了提高用户的体验---也就是人机交互。发行版Linux(外部应用):针对内核进行定制化开发,加上自己的外部应用:CentOS、Ubun...

2019-04-29 22:39:57 271

原创 二叉树

二叉树:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。特点: 1、每个节点最多有两颗子树 2、二叉树是有序树,即左右子树的顺序不能颠倒数据结构种的二叉树:(5种)特殊的二叉树: 满二叉树、完全二叉树、平衡二叉树存储结构: 顺序(只适用于完全二叉树---堆)、 链式两种存储方式三种遍历方式:...

2019-04-21 23:11:20 165

原创 排序

八大经典排序算法1、冒泡排序(Bubble Sort)冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法描述:比较相邻的元素。如果第一个比第二个大,就交换它们两个;...

2019-04-20 21:01:31 303

原创 二叉堆的基本实现

二叉树的顺序结构:普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储。需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。堆的概念如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素...

2019-04-19 22:53:10 111

原创 线性表

线性表是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。1.数组形式---顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存...

2019-04-16 16:20:58 237

原创 指针和下标

指针有时比下标更有效率,前提是它们被正确的使用下面举一个函数的例子,它的功能是把一个数组的内容复制到另一个数组#define SIZE 50int x[SIZE];int y[SIZE];int i;int *p1, *p2;1、下标版本// 下标版本void try1() { for (i = 0; i < SIZE; i++) { x[i] =...

2019-03-17 14:46:00 1475

原创 查找旋转数组的最小元素

/****************************************************************** 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的...

2019-03-17 10:58:43 171

空空如也

空空如也

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

TA关注的人

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