自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 并查集(小米16年笔试题朋友圈问题)

我们先来看一道16年小米校招笔试题假如已知n个好友和m对好友关系(存于数字r),如果两个人是直接或间接的好友(好友的好友的好友…),则认为他们属于同一个朋友圈,请写程序求出这n个人里面一共有多少个朋友圈。 假如:n=5,m=3,r={{1,2},{2,3},{4,5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友圈,结果为2个朋友...

2018-04-26 12:49:32 928

原创 map和set原理和使用

《C++Primer》中列举了标准库的8个关联容器,这8个容器间的不同体现在三个维度上: 1.或者是一个set,或者是一个map; 2.或者要求不重复的关键字,或者允许重复关键字; 3.按顺序保存,或无序保存。允许重复关键字的容器的名字中都包含单词multi;不保持关键字按顺序存储的容器的名字都以unordered开头。类型map和multimap定义在头文件map中;set和multi...

2018-04-26 10:32:11 1300

原创 实现简单的网络套接字编程UDP

一、IP地址1.作用:在IP协议中,用来标识网络不同主机的地址。 2.IP协议有两个版本,IPv4和IPv6。 IPv4:IP地址有4个字节,共32位。 IPv6:IP地址有16个字节,共128位。 3.通常用“点分十进制”的字符串表示IP地址,用点分割的每一个数表示一个字节,范围是0~255.在网络传输数据的过程中,IP地址是不变的。IP地址包括源IP地址、目的IP地址。...

2018-04-25 22:06:29 777

原创 MySQL输入密码后时出现闪退的解决方法

相信好多初学者和我一样,在使用MySQL时,会出现输入密码后闪退的现象,我将造成这种现象可能的原因总结了以下几点,希望能帮助到和我一样遇到该问题的人。按下winky(Fn和Alt中间的那个键)+R键,出现运行框,进入cmd然后回车。 单击“确定”,出现DOS窗体,cd到安装MySQL的路径下,然后使用命令: cd C:\Program Files\MySQL\MySQL Server ...

2018-04-24 23:25:31 36806 12

原创 mysql数据库的基本操作

一、mysql的基本使用1.连接到mysql mysql [-h主机] -u 用户 -p 说明: ①如果没有写[-h主机]默认连接的是主机。 ②如果需要登录到另外一个mysql,则需要修改配置,一般情况下不让远程登录。2.mysql关闭和启动 二、库的操作1.查看有哪些数据库: show databases; 2.创建数据库: create databas...

2018-04-22 11:21:03 772

原创 C语言----数组(描述数组相关的知识、动态创建一个二维数组)

面试题:什么是数组?解答此类问题要循序渐进,具有条理性。①概念:数组是相同类型的数据的集合;②分类:一维数组、二维数组③特性:数组在底层是一段连续的空间,支持随机访问。 数组名在不同情境下表示的含义不同。&数组名、sizeof(数组名)均表示的是整个数组,其他情况下(作为参数、指针指向等)表示的均是首元素的地址。 注意:int arr[10]的类型是int [10]. ...

2018-04-20 23:31:18 251

原创 C语言---基本语句(面试题)

C语言中的基本语句及常考的面试题1.switch语句注意:括号中只能为整型(包括字符类型)、枚举类型面试题:switch-case与if-else的区别?①case语句小于3句时,与if-else**底层的实现方式是相同的**; ②线性查找 当case语句大于4的时候,且相邻的两个case之间产生的间隔之和不超过6的时候,就按照线性结构查找; ③树形查找 当最大的case和...

2018-04-20 23:21:02 283

原创 C程序的编译过程

从一个.cpp文件到执行需要经历四个过程: 以一个实例来说明编译过程,假设现在有一个hello.c文件1、预处理gcc -E hello.c -o hello.i 主要内容如下: (1)将所有的#define删除,并且展开所有的宏定义; (2)处理所有的条件编译,如#if,#ifdef; (3)处理#include预编译指令,将被包含的文件插入到该预编译指令的位置。该过程...

2018-04-20 21:48:42 214

原创 C++中四种类型转换的关键字

C++中四种类型转换的关键字分别为: static_cast、dynamic_cast、const_cast、reinterpret_cast1.reinterpret_cast 该函数将一个类型的指针转换为另一个类型的指针。 这种转化不用修改指针变量值存放格式(不改变指针变量值),只需在编译时重新解释指针的类型就可以做到。 reinterpret_cast可以将指针值转换为一个整型数...

2018-04-20 21:16:33 574

原创 Windows 10创意者更新显示不了文字处理方法

相信有不少人遇到过Windows 10更新后在卡顿后显示不了文字,只显示图标。遇到这种情况,重启能解决问题,但不能从根本上解决。在以后使用电脑的过程中,会时不时的出现类似的问题。网上也找了一些解决方法,但有的方法在我的电脑上不能得到好的解决,还是会出现文字不显示的情况。 我电脑的版本: 解决方法: 第一步,输入winkey(ctrl和alt中间的键)+R,输入services.msc,回...

2018-04-20 18:52:47 1239

原创 理解inode,以及软硬链接

一、inode查看命令1.stat 功能:列出文件大小,文件占有的块数,块的大小,主设备号,次设备号,inode number,链接数,访问权限,uid,gid,atime(最近访问),mtime(最近更改),ctime(最近改动) 2.df -l 功能:查看硬盘的i结点总数和使用的个数文件系统,总块数,已用块数,可用块数,已用所占比例,挂载点 3.ls -i 功能:查看目录...

2018-04-18 22:27:16 292

原创 守护进程

我们经常使用的各种APP,像淘宝、京东等购物APP,在晚上的时候,程序员不可能一直守在计算机前操作,但晚上有人想买一件物品的时候也是得提供服务的,因此就有了守护进程,它的作用十分强大,不受用户登录和注销的影响,是一个非常有用的进程。Linux大多数服务器就是守护进程实现的,例如:ftp服务器、ssh服务器、Web服务器等。 守护进程又称精灵进程(Daemon),是运行在后台的一种特殊进程。其本质...

2018-04-17 23:14:23 240

原创 进程间关系(进程组、作业、会话、作业控制有关信号、终端)

我们之前认为在终端下./test就相当于创建了一个进程,那么对应的就创建了一个PCB,这个PCB指向一块虚拟地址空间,而虚拟地址空间上的地址通过页表映射到物理地址空间。这样的认为在现在看来是不准确的,其实每个进程除了有一个进程ID外,还属于一个进程组。通常情况,进程组与同一作业相关联,可以接收来自同一终端的各种信号。一、进程组1.每个进程都属于唯一的一个进程组。 2.每个进程组都有一...

2018-04-17 19:58:55 355

原创 用读写锁实现--读者写者模型

读者写者模型读者写者模型是操作系统中的一种同步与互斥机制,与生产者消费者模型类似,但不同的是在生产者消费者模型中,多个读者间没有关系,而且消费者会让临界资源的个数减少,而读者不会改变临界资源的个数。 读者写者模型应该具备的条件1.写者是排他性的,即有多个写者的情况下,只有一个写者占有仓库。 2.读者可以一起读,采取并行机制。 3.读者和写者是同步且互斥的,如果读者占有了仓库,则写...

2018-04-14 22:35:31 602

原创 Linux线程同步--POSIX信号量(生产者消费者问题)

POSIX信号量POSIX信号量有两种:有名信号量和无名信号量,无名信号量也可被称为基于内存的信号量,有名信号量通过IPC名字进行进程间同步,而无名信号量如果不是放在进程的共享内存区中,是不能用来进行进程间同步的,只能用于线程同步。POSIX信号量还可以分为: 1.二值信号量 信号量的值只有0和1,和互斥量类似。若资源被锁住,信号量的值为0,若资源可用,信号量的值为1. 2.计数信号...

2018-04-14 17:49:10 1012

原创 浅析惊群效应

什么是“惊群效应”? 举个例子,当你往一群鸽子中间扔一块食物,所有的鸽子都被惊动来抢夺这块食物,但是最终只能有一只鸽子可以抢到食物,没有抢到食物的鸽子只能回去继续睡觉,等待下一块食物的到来。这里我们可以将鸽子看做是进程(线程),食物就是等待处理的事件。网络编程的时候经常会用到多进程或多线程模型,就是父进程创建socket,bind、listen后,通过fork创建多个子进程,每个子进程继承了...

2018-04-13 21:28:41 519

原创 深入理解线程安全和可重入函数

线程安全一个线程当且仅当被多个并发进程反复调用时,它会一直产生正确的结果。反之,就是不安全的。四类线程不安全的函数: 1.不保护共享变量的函数; 2.函数状态随着调用改变的函数; 3.返回指向静态变量指针的函数; 4.调用线程不安全函数的函数。线程安全的问题基本上是由全局变量及静态变量引起的,因为同一进程中的多线程是在同一个地址空间中运行,而全局变量和静态变量就属于多线程共享的...

2018-04-13 21:25:24 533

原创 Linux线程同步---条件变量(生产者消费者模型)

我们来理解一下条件变量,通俗的来讲就是条件变量的作用在于给多个线程提供了一个汇合的场所。举个例子说明一下,运动会赛跑中,所有选手都会等到发令枪响后才开跑,把选手比作其他线程,发令员比作主线程,意思就是所有的线程都等待主线程给予一个可以运行的信号,如果没有给信号,那么将会阻塞下去。1.条件变量的概念上一篇中我们介绍的是互斥量,而条件变量与互斥量不同,互斥量是防止多线程同时访问共享的互斥变...

2018-04-12 21:32:12 337

原创 Linux线程同步---互斥量

在日常生活中,为了避免在火车站、电影院排队购票,网上购买火车票、电影票也越来越普遍。我们首先实现一个购票系统,每当有人购买一张票的时候,总票数就会减1,而此时的“总票数”就是一个共享变量。代码实现简单的网上购票系统:#include <stdio.h> #include <stdlib.h>#include &lt...

2018-04-12 12:46:28 293

原创 命令行参数

每个C程序语言都必须有一个main函数,作为程序的入口点。当程序执行时,命令行参数(command-line argument)通过两个入口参数提供给main函数。 main函数的函数原型:int main(int argc,char *argv[]);argc表示命令行参数的个数,argv指向命令行参数的指针数组,每一个参数都是以NULL结尾的字符串。每个字符串,通常指向该程序的名称。ar...

2018-04-10 20:16:23 352

原创 线程终止、等待、分离

一、线程终止线程终止有三种方式,包括: 1.从线程函数return(对主线程不可使用),从main函数return相当于调用exit。 2.线程可以调用pthread_exit终止自己。 3.一个线程可以调用pthread_cancel终止同一进程中的另外一个线程。我们来认识几个函数: pthread_exit函数 用来终止进程,参数是void*类型,无返回值。 注意:retu...

2018-04-10 17:06:42 506

原创 死锁概念,死锁产生的四个必要条件,如何避免和预防死锁

一、死锁概念死锁是指两个或多个进程在执行的过程中,因为竞争资源而造成互相等待的现象,若无外力作用,它们都无法推进下去。 1.在等待对方时占有不可抢占的资源 举个例子,假设有P1,P2两个进程,都需要A和B两个资源,两个都等待另一个资源而不肯释放资源,就这样无限等待中,这就形成死锁。这只是死锁的一种情况,就是在等待对方时占有不可抢占的资源。 2.竞争可消耗资源引起死锁 有P1,P2,P3...

2018-04-10 14:50:14 9936

原创 Linux 线程ID

在没有谈到线程前,我们认为一个进程对应的是一个进程描述符PCB,对应一个进程ID。但现在我们引入了线程的概念后,一个用户进程可以包含多个用户态线程,每个线程作为一个独立的调度实体在内核态都有自己的进程描述符PCB,因此Linux内核为了处理以上关系,引入线程组的概念。我们之前在学习进程的过程中,学过一个函数getpid,作用是获得当前进程的ID,同样,也有一个函数gettid可以获得线程ID,...

2018-04-03 23:18:45 2483 1

空空如也

空空如也

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

TA关注的人

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