自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [pycharm]can not set up a python SDK at python 3.8

Pycharm cannot set up a python SDK问题的原因及解决方法

2022-12-04 22:41:47 1210 1

原创 Linux文件类型

1.普通文件(—)此种文件中包含某种形式的数据,数据的解释由处理该文件的应用程序负责2.目录文件(d)包含其他文件的名字和指向与这些文件有关信息的指针3.字符特殊文件(c)用于系统中某些类型的设备4.块特殊文件(b)典型的用于磁盘设备5.管道文件(p)用于进程间通信,也叫命名管道6.socket文件(s)用于进程间的网络通信7.符号文件(l)这种文件指向另一个文件...

2018-10-30 20:47:34 240

原创 设计模式之八大设计原则

面向对象设计原则:一.依赖倒置原则(DIP):+高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定)。+抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。二.开放封闭原则(OCP)+对扩展开放,对更改封闭+类模板应该是可扩展的,但是不可修改三.单一职责原则(SRP)+一个类应该仅有一个引起它变化的原因+变化的方向隐含着类的责任四.L...

2018-10-04 19:29:50 2276

原创 errno,perror,strerror怎么用

errno:在系统出现错误时内核把错误写入到变量errno中。在系统调用返回失败时,必须紧接着引用errno变量,避免程序中的下一条系统调用时出错覆盖errno的值。perror()和strerror():用来打印错误提示信息。perror:将错误信息出处到终端。int main(){ FILE * pFile; pFile = fopen("unexist.ent", "rb");...

2018-09-27 17:08:00 354

原创 柔性数组

C99中,结构体中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员typedef struct st_type { int i; char a[0];}type_a;或者:typedef struct st_type { int i; char a[];}type_a;柔性数组的特点:1.结构中的柔性数组成员前面必须至少一个其他成员。2.sizeof 返回的...

2018-09-27 16:15:06 124

原创 I/0子系统

一.I/O特点1.设备接口类型A.字符设备:键盘,鼠标,串口——访问特征:以字节为单位顺序访问——I/O命令:get(),put();通常使用文件访问接口和语义B.块设备:磁盘驱动器,磁带驱动器,光驱——访问特征:均匀的数据块访问;——I/O命令:原始I/O或文件系统接口;内存映射文件访问C.网络设备:以太网,无线,蓝牙——访问特征:格式化报文交换——I/O命令:send/re...

2018-09-27 15:23:52 684

原创 文件系统

一.文件系统:1.文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能——组织,检索,读写访问数据——大多数计算机系统都有文件系统2.文件是具有符号名,由字节序列构成的数据项集合——文件系统的基本数据单位——文件名是文件的标识符号3.文件系统的功能a.分配文件磁盘空间——管理文件块(位置和顺序)——管理空闲算法(位置)——分配算法(策略)b.管理文件集合——...

2018-09-25 01:27:54 272

原创 死锁,进程间通信

死锁:由于竞争资源或者通信关系,两个或更多线程在执行中出现,永远相互等待只能由其他进程引发的事件进程访问资源的流程是:请求/获取资源->使用资源->释放资源资源分类:1.可重用资源(Reusable Resource)资源不能被删除且在任何时刻只能有一个进程使用进程释放资源后,其他进程可重用(处理器,I/O通道,主副存储器,设备,文件,数据库,信号量等)可能出现死锁(每个...

2018-09-23 21:49:31 933

原创 信号量与管程

基本同步方法:信号量和管程是操作系统提供的两种同步方法多线程并发导致了资源竞争这样的并发问题,这时候需要协调多线程对共享数据的访问,要求任何时刻只能有一个线程执行临界区代码,也就是同步。确保同步正确的方法有底层硬件上的实现和高层次的编程抽象,信号量和管程就是其中两个高层次的编程方法。信号量(semaphore):(由Dijkstra提出)信号量是操作系统提供的一种协调共享资源访问的方法...

2018-09-23 00:10:33 2027

原创 同步互斥

原子操作:(Atomic Operation)原子操作是指一次不存在任何中断或失败的操作要么操作成功完成,或者操作没有执行,不会出现部分执行的状态操作系统需要利用同步机制在并发执行的同时,保证一些操作是原子操作进程的交互关系:相互感知程度互斥(mutual exclusion):一个进程占用资源,其他进程不能使用死锁(deadlock):多个进程各自占用部分资源,形成循环等待饥饿(s...

2018-09-21 18:36:54 224

原创 处理机调度

处理机调度概念:处理机调度:从就绪队列中挑选下一个占用CPU运行的进程;从多个可用CPU中挑选就绪进程可使用的CPU资源调度程序:挑选就绪进程的内核函数。什么时候进行调度呢?依据什么原则挑选进程/线程呢?在运行态进程退出或者进入等待状态时进行调度,或者当前进程被抢占时调度。(CPU资源的使用模式:进程在CPU计算和I/O操作之间交替。CPU在计算模式的时间往往比较短,而且短时间计算的频率...

2018-09-20 23:11:05 226

原创 进程控制

本篇博客简要说明以下几个问题:进程切换,内核如何实现进程间切换?进程创建,用户要创建新进程,如何创建呢?进程加载,如何运行一个新进程?进程等待与退出,父子进程的交互进程切换:进程切换实际上是上下文的切换。暂停当前运行的进程,从运行态变成其他状态;调度另一个进程从就绪态变成运行态。进程切换的要求是 切换前保存进程上下文,切换后恢复进程上下文(上下文:主要指寄存器中的信息),快速切换进...

2018-09-20 01:16:49 667

原创 进程与线程概念

进程的定义: 进程是指一个具有一定独立功能的程序,在一个数据集合上的一次动态执行过程。如下图所示,源代码文件经过编译链接形成可执行文件,将可执行文件加载进内存进行执行。为什么要加载进内存呢?这是因为负责解析和运行程序的CPU需要通过内部的程序计数器来指定内存地址,然后才能读出程序;并且,加载进内存,能对数据进行处理,让程序能够运行。那CPU不能直接读取外部磁盘的数据和程序吗?可以。但是访问磁...

2018-09-18 15:34:48 14975 2

原创 腾讯笔试——安排机器 【 题目描述】小 Q 的公司最近接到 m 个任务, 第 i 个任务需要 xi 的时间去完成, 难度等级为 yi。 小 Q 拥有 n 台机器, 每台机器最长工作时间 zi, 机器等

安排机器 【 题目描述】小 Q 的公司最近接到 m 个任务, 第 i 个任务需要 xi 的时间去完成, 难度等级为 yi。 小 Q 拥有 n 台机器, 每台机器最长工作时间 zi, 机器等级 wi。 对于一个任务,它只能交由一台机器来完成, 如果安排给它的机器的最长工作时间小于任务需要的时间, 则不能完成,如果完成这个任务将获得 200 * xi + 3 * yi 收益。 对于一台机器,...

2018-08-28 11:50:55 4713

原创 腾讯笔试—— 小 Q 的歌单 【 题目描述】小 Q 有 X 首长度为 A 的不同的歌和 Y 首长度为 B 的不同的歌,现在小 Q 想用这些歌组成一个 总长度正好为 K 的歌单,每首歌最多只能在歌单中

小 Q 的歌单 【 题目描述】小 Q 有 X 首长度为 A 的不同的歌和 Y 首长度为 B 的不同的歌,现在小 Q 想用这些歌组成一个 总长度正好为 K 的歌单,每首歌最多只能在歌单中出现一次,在不考虑歌单内歌曲的先后顺序的情况下, 请问有多少种组成歌单的方法。 输入描述 : 每个输入包含一个测试用例。 每个测试用例的第一行包含一个整数,表示歌单的总长度 K(1<=K<=...

2018-08-25 17:02:19 2432 1

原创 网易笔试——1 、字符串碎片 【 题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac" 是由下面碎片组成的:'aaa','bb','c'。牛牛现在给定

字符串碎片 【 题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,”aaabbaaac” 是由下面碎片组成的:’aaa’,’bb’,’c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: : 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’)...

2018-08-25 16:07:59 4819

原创 百度笔试——最大子序列 【 题目描述】对于字符串 x 和 y, 如果擦除 x 中的某些字母(有可能全擦掉或者都不擦)能够得到 y,我们就 称 y 是 x 的子序列。例如."ncd"是"nowcoder

最大子序列 【 题目描述】对于字符串 x 和 y, 如果擦除 x 中的某些字母(有可能全擦掉或者都不擦)能够得到 y,我们就 称 y 是 x 的子序列。例如.”ncd”是”nowcoder”的子序列,而”xt”不是。 现在对于给定的一个字符串 s,请计算出字典序最大的 s 的子序列。 输入描述: : 输入包括一行,一个字符串 s,字符串 s 长度 length(1 ≤ length ≤ ...

2018-08-25 13:22:52 1006

原创 百度笔试—字符覆盖 【 题目描述】小度有一个小写字母组成的字符串 s.字符串 s 已经被写在墙上了. 小度还有很多卡片,每个卡片上有一个小写字母,组成一个字符串 t。小度可以选择字符串 t 中

3 、字符覆盖 【 题目描述】小度有一个小写字母组成的字符串 s.字符串 s 已经被写在墙上了. 小度还有很多卡片,每个卡片上有一个小写字母,组成一个字符串 t。小度可以选择字符串 t 中任意一个字 符,然后覆盖在字符串 s 的一个字符之上。小度想知道在选取一些卡片覆盖 s 的一些字符之后,可以得到的 字典序最大的字符串是什么。 输入描述: : 输入包括两行,第一行一个字符串 s,字符...

2018-08-25 11:08:49 3745

原创 c语言字符串处理函数模拟实现

int fl_strlen_1(const char* str){ int count = 0; while (*str != '\0') { count++; str++; } return count;}int fl_strlen_2(const char* str){ if (*str == '\0...

2018-08-24 16:40:42 222

原创 volatile

先来看一段程序: const int num = 10; int *p = (int *)# *p = 20; printf("%d\n", num); //这里的输出结果是10上面这段程序中,定义const的num = 10,然后用一个指针指向它,修改它,打印它 不该是修改后的值吗? 逻辑上来说应...

2018-08-22 17:11:56 182

原创 浮点数的存储解析

浮点数家族:float , double , long double 浮点数的表示范围:float.h中定义 常见的浮点数:3.14159,1e3根据国际标准IEEE(电器和电子工程协会)754,任意一个二进制浮点数V可以表示成下面这种形式:(-1)^S * M * 2^E (-1)^S表示符号位。当S=0,V位整数;当S=1,V位负数M 表示有效数字,大于等于1,小于2...

2018-08-22 16:28:59 5054 1

原创 大端 / 小端,三种判断方法

1.什么是大端 / 小端? 2.为什么会有大小端之分呢? 3.怎么判断当前机器的字节序?什么是大端 / 小端? 大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中为什么会有大小端之分呢? 因为在计算机系统中,我们以字节为存储单元,每个地址单元都对应着一个字节...

2018-08-22 14:56:03 28157 11

原创 程序环境和预处理

程序编译过程: 1.组成一个程序的每个源文件通过编译器进行编译分别转换成目标文件 2.每个目标文件由链接器链接在一起,形成一个单一的可执行程序 3.链接器会引入标准C库中的被该程序用到的函数,也可以搜索程序员个人的程序库,将程序需要的函数链接到程序中。 编译本身也分为几个阶段: 1.预编译(*.i) 预处理指令 2.编译(*.s) 语法分析,词法分析,语义分析,...

2018-08-22 11:32:27 162

原创 京东笔试——神奇数 【题目描述】东东在一本古籍上看到有一种神奇数,如果能够将一个数的数字分成两组,其中一组数字的和 等于另一组数字的和,我们就将这个数称为神奇数。例如 242 就是一个神奇数,我们能够

2 、神奇数 【 题目描述】东东在一本古籍上看到有一种神奇数,如果能够将一个数的数字分成两组,其中一组数字的和 等于另一组数字的和,我们就将这个数称为神奇数。例如 242 就是一个神奇数,我们能够将这个数的数字分 成两组,分别是{2,2}以及{4},而且这两组数的和都是 4.东东现在需要统计给定区间中有多少个神奇数,即 给定区间[l, r],统计这个区间中有多少个神奇数,请你来帮助他。...

2018-08-17 13:01:33 1929

原创 c++对象模型(继承,虚拟继承,菱形继承)

谈及c++对象模型,内容还是比较繁复,为了便于理解,我将循序渐进的按照以下步骤说明: 1.对象模型是什么? 2.具体继承下的对象模型。 3.对象模型与内存对齐 4.多重继承 5.菱形继承 6.虚拟继承1.对象模型是什么? 一般的,C++中类的对象模型是这样的: 非静态的成员变量被配置于对象中,排列顺序和声明顺序一致 静态的成员变量则被存储在对象之外;存储在全局的数据段中,永远...

2018-08-14 22:03:36 476

原创 编译器产生默认构造函数的四种情境

编译器什么时候会合成默认的构造函数呢?class A{//没有构造函数public: int _val; int* p_val;};int main(){ A a; //在本句语句下断点,不会停在这里;没有执行点;没有生成构造函数 return 0;}编译运行这段代码,并没有构造函数被编译器合成,那么,什么时候编译器会合成默认的构造函数呢...

2018-08-12 13:43:23 290

原创 C语言中字符串的几种定义方式和有没有’\0‘

( 主要解决 什么时候是 “abcd\0” 什么时候是 “abcd” 的问题 )几种常用方式: 1.char* str = “abcd”; 2.char str[] = { “abcd” }; 3.char str[] = { ‘a’, ‘b’, ‘c’, ‘d’ }; //要用户自己加入’\0‘,应为str[] = { ‘a’, ‘b’, ‘c’, ‘d’ ,’\0’}; 4.cha...

2018-08-12 00:22:37 44693 4

原创 C++重载运算符的规则

C++不允许用户自己定义新的运算符,只能对已经存在的运算符进行重载C++允许重载的运算符和不允许重载的运算符 重载不能改变运算符的优先级别重载不能改变运算符的结和性重载运算符的函数不能有默认参数重载不能改变运算符的运算对象的个数(即操作数)重载的运算符必须和用户定义类型的对象一起使用,其参数至少应有一个类对象用于类对象的运算符一般必须重载,但有两个例外,运算符“=”和“&amp...

2018-07-31 16:00:33 329

原创 scanf()

scanf()是一个具有多种用途的输入函数,他从标准输入流stdin读取数据并把数据存储在参数列表指定的变量中。它可以读取所有的内置数据类型并将他们自动转化为适当的内部格式。 #include int scanf(const char* format,…);format指定的控制字符串由以下三类字符组成: 1.格式控制符 2.空白字符 3.非空白字符格式说明符...

2018-04-21 11:05:15 426

原创 task_struct

task_struct结构体: 标识号标识号现场保护资源信息 虚拟内存文件I/O设备终端拥有者计时进程间通信进程状态信号信息其他具体的结构体定义如下:struct task_struct{ volatile long state; //说明了该进程是否可以执行,还是可中断等信息 unsigned long ...

2018-04-06 15:59:24 75

原创 进度条

#include<unistd.h>#include<string.h>#include<stdio.h>int main(){ int i=0; char c[101]; memset(c,0,sizeof(c)); const char* label1="ε=ε_ε=ε_ε=ε_┌(...

2018-04-06 14:54:09 140

翻译 Linux目录

/:处于Linux文件系统树形结构的最顶端,我们称它为Linux文件系统的root,它是Linux文件系统的入口。所有的目录、 文件、设备都在/之下,它是Linux文件系统最顶层的唯一的目录; 一般建议在根目录下面只有目录,不要直接存放文件;根目录是linux系统启动时系统第一个载入的分区,所以启动过程中用到的文件应该都放在这个分区中,其中/etc、/bin、/dev、/lib、/sbin这5个子...

2018-04-06 11:56:23 135

原创 Linux权限

Linux里一般将文件可存取访问的身份分为所有者(owner),用户组(group),其他人(others)。 有了这个概念,那我们再来了解什么是权限。在一个目录下执行 ls -al 我们来看最后一行fib.c这个文件,了解一下这些字母都是啥意思。 在图一中咱发现每个文件的第一个文件权限都不一样,而且一堆字母,都是什么意思呢? 第一个字符代表这个文件是什么类型...

2018-04-06 11:15:10 3647

原创 结构体

声明结构体的一般形式: struct 结构体名 { 成员表列; }; 例如: struct Data //声明一个结构体类型 struct Data { int year; int month; int day; }; //花括号后的分号不能丢掉用定义的结构体类型来声明一个变量(birthday): struct D

2017-12-06 22:02:54 354

原创 qsort( )使用和实现

qsort() 的头文件是: #include < stdlib.h > 函数原型: void __cdecl qsort (void * base, size_t num ,size_t width, int ( __cdecl * comp)(const void * , const void * ) )函数说明: __cdecl :调用约定。 base:传入数组。 num:

2017-12-04 01:21:21 207

原创 C/C++注释转换

将 / * … * / 注释转换为 / / 注释。transform.h#ifndef __transform_h__#define __transform_h__#define MY_INPUT "input.c"#define MY_OUTPUT "output.c"void comment_transform_main();enum STATUS{ NORSTATUS, CSTATU

2017-12-03 02:32:36 225

原创 转移表

要理解转移表,先要了解函数指针数组。 函数指针数组的说明:函数指针数组 先看代码:void print_menu(){ printf("********************************************\n"); printf("***** 1.add 2.sub *****\n"); printf("**

2017-12-03 02:14:30 2064

原创 指针数组/数组指针

指针数组: 指针数组是数组,是一个存放指针的数组。 这里的a[4]就是一个指针数组,其中各元素的类型都是int*。数组指针: 数组指针是指针,这个指针指向一个数组。 这里的P是一个指针,指向一个内部元素类型为int型的数组。上面两个例子都是非常简单的形式,那么当遇到复杂形式时,该如何判断呢? 我们可以这样来看它: 我们看变量名先和什么结合,它和什么先结合,那么它最终的类型就是什么

2017-12-03 01:26:38 352

原创 使用main函数的参数,实现一个整数计算器

使用main函数的参数,实现一个简单的整数计算器,具有整数加,减,乘,除运算的功能。 首先,我们先来看一下main函数参数是什么。 main函数有两种形式: 1. int main(int argc, char *argv[ ]) 2. int main(int argc, char **argv) 其中: argc为main函数的参数个数; argv[]为

2017-12-01 17:58:50 1466

原创 宏,将一个数字的奇数位和偶数位交换

用宏定义的方式,将一个数的二进制形式数的奇偶位进行交换。 其实非常简单,步骤如下: 1.先将这个数左移一位,然后与0xAAAAAAAA相与,此时就保存了奇数位。 2.再将这个数右移一位,然后与0x55555555相与,此时就保存了偶数位。 3.最后将1,2两步的结果或一下,就得到了最终的结果。 代码是这样的://author:fl_sw//date://functio

2017-10-23 16:35:12 356

空空如也

空空如也

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

TA关注的人

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