- 博客(21)
- 收藏
- 关注
原创 进程和线程的区别
进程是程序在数据集上的一次动态执行的过程,是程序在执行过程中分配和管理资源的基本单位,每个进程都有自己独立的地址空间;线程是cpu调度和分派的基本单位,一个进程里的多个线程可以共享进程所拥有的所有资源线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程开销方面,每个进程都有独立的代码和数据空间,进程之间的切换开销较大;线程则共享进程的代码和数据空间,每个线程都有自己独立的栈和程序计数器,线程之间切换的开销小...
2020-08-30 22:43:18 141
原创 python与操作系统交互的模块
面试突然被发问,当时一脸懵,没怎么想起来,,,os模块getcwd()返回当前工作目录的绝对路径import osprint (os.getcwd())mkdir(),mkdirs()mkdir()创建单级目录,mkdirs()创建多级目录os.mkdir("szs")os.mkdir("mvp/durant")os.remove(file_name)删除文件os.listdir(dirpath)返回一个列表list,列出目录下的所有文件以及子文件夹的名称os.pathos
2020-08-29 09:58:48 288
原创 数据库事务
为什么要有数据库事务?事务的提出主要是为了解决并发情况下保持数据一致性的问题什么是事务?一个或一组sql语句组成的一个执行单元,这个执行单元要么全部执行,要么全部不执行事务和程序的关系:事务和程序是两个概念。一般而言,一个程序中包含多个事务事务的ACID特性原子性(Atomicity):事务是一个不可分割的工作单位,事务中的操作要么全部都发生,要么都不发生。一致性(consistency):事务必须使数据库从一个一致性变换到另一个一致性状态隔离性(isolation): 一个事务的执行不
2020-08-27 16:20:04 203 1
原创 笔试题
1 括号匹配题bool test(string s){ if(s.size() %2 ==1)return false; stack<char> s1; int len = s.size(); for( int i=0;i<len;i++){ if(s[i] == '{' || s[i] == '[' || s[i]=='(') s1.push(s[i]); if(s[i]==' ')break;
2020-08-26 17:14:59 122
原创 数据库--刷题
1题目描述查找入职员工时间排名倒数第三的员工所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天CREATE TABLE employees (emp_no int(11) NOT NULL,birth_date date NOT NULL,first_name varchar(14) NOT NULL,last_name varchar(16) NOT NULL,gender char(1) NOT NULL,hire_date date NOT NULL,PRIMAR
2020-08-24 10:59:43 203
原创 sql语句练习记录
已知表学生表student (s_id , s_name , s_birth, s_sex) ——学号,姓名,出生日期,性别课程表course (c_id , c_name , t_id) —— 课程编号, 课程名称, 教师编号教师表 teacher (t_id, t_name) —— 教师编号, 教师姓名成绩表 score(s_id, c_id, s_score) ——学生编号, 课程编号, 分数表格数据:create table student (s_id varchar(20
2020-08-20 10:44:02 137
原创 2020-08-19
OSI七层模型应用层表示层会话层传输层网络层数据链路层物理层记录每层的功能应用层: 应用层提供各种各样的应用层协议,为计算机用户和网络之间提供接口。应用程序必须能够产生网络流量表示层: 提供数据编码,加密,压缩等功能,确保一个系统的应用层发送的数据能被接收方应用层识别会话层: 为客户端和服务之间建立会话连接,负责管理主机间的会话进程,包括建立,管理及终止进程间的对话。传输层: 负责主机间的两个进程的通信,提供可靠服务和不可靠服务网络层: ip寻址和路由选择数据链路层: 将
2020-08-19 17:40:25 108
原创 python内存管理
内存管理1 变量定义大多数编译型语言,变量在使用前必须先声明。python中,无需此类显示变量声明语句,变量在第一次被赋值时自动声明,无需指明变量类型。变量一旦被赋值,就可以通过变量名来访问它。python中,对象的类型和内存占用都是运行时确定的。在赋值时,解释器会根据语法和右侧的操作数来决定新对象的类型。在对象创建后,一个该对象的引用会被赋值给左侧的变量。2 内存分配python解释器承担了内存管理的复杂任务。python采用引用计数的技术保持追踪内存中的对象,也就是说,python内部记录着所
2020-08-18 21:15:38 140
原创 python基础知识的一些记录
记录python的一些基础知识,大家将就看看吧!python的缺点:1 运行速度慢,python是一门解释性的语言,代码在执行时会一行一行地翻译成CPU能理解的机器码;**python解释器:**CPython,(相当于c,c++的编译器,个人理解)c++:执行一个c++程序之前需要把代码编译成机器码;c++的执行速度要比python快,Python 数据类型:数字, 字符串, 列表,字典,集合,元祖数字:整数,浮点数,bool型,复数python r’ ssssssasasadad’表
2020-08-12 23:47:20 161
原创 python----列表去重
def fun1(lis): #用set实现 lis=list(set(lis)) return lisdef fun2(lis): lis_res = [] for i in lis: if i not in lis_res: lis_res.append(i) return lis_reslist1=[22,33,22,11,2,1,1,1,2,3,]list2 = fun1(list1)list3 = fu
2020-08-10 22:24:34 129
原创 python 递归实现全排列
示例:f(1) : [[1]]f(2) : [[1,2],[2,1]]f(3) : [[1,2,3],[1,3,2],[3,2,1],[3,1,2],[2,1,3],[2,3,1]].….f(n)递归实现:f(n)都是在f(n-1)的不同位置上插入n来得到n全排列;import copydef fun(n): data=[] if(n==1): data.append([1]) else : for elem in fun(n-1): fo
2020-08-10 16:49:14 520
原创 查看僵尸进程
ps axo stat,pid,ppid,cmd | grep -e '^[Zz]'ps axo stat,pid,ppid,cmd | grep -e '^[Zz]' | head//显示前10行head -n 20 //显示前20行top //用于实时显示进程得状态,可以查看cpu和内存得使用率//top命令也可以查看系统中僵尸进程的数量free 查看系统内存使用情况...
2020-08-10 00:51:29 1437
原创 python基础
面向对象编程python中,万物皆对象,面向对象编程是一种程序设计的思想。对象作为程序的基本单元,一个对象包含了数据和操作数据的函数(即成员变量和成员函数)面向对象最基本的概念是类和实例`class Student(): ''' __init__(self)就是类初始化的一个构造函数; 对于类中定义的函数,其第一个参数永远是self,表示实例本身, 实例在调用函数时,不需要传递该参数; ''' def __init__(self,name,id): self.__name=name
2020-08-09 22:23:49 140 1
原创 浏览器输入URL到点击页面的过程
大致流程URL解析DNS查询建立TCP连接浏览器发送HTTP请求服务器端响应请求渲染页面1 URL解析请求发起后,浏览器首先会解析URL得到协议,域名,端口,资源路径等信息2 浏览器查找域名对应的ip地址浏览器先检查自身的缓存中是否存在该域名和ip的映射关系,存在则直接返回ip地址;如果没有,则检查是否存在本地主机的Hosts文件里,没有则向本地DNS服务器发送请求,本地DNS服务器一般都是你的网络接入服务器商提供,如中国移动查询域名对应ip的DNS请求到达本地DNS服务器之后
2020-08-07 15:38:22 400
原创 HTTP协议——整理
万维网概述万维网WWW(world wide web) 是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合。统一资源标识符URL唯一表示万维网里边的资源(文字,视频,音频)URL一般形式:<协议>://<主机>:<端口>/<路径>http 域名ftp ip地址用户通过点击超链接(http://www.baidu.com) 获取资源,这些资源通过超文本传输协议(HTTP)传送给
2020-08-06 00:30:56 426
原创 python深拷贝和浅拷贝
问题的起因是面试时被问到list1=[1,2,3,4]list2=list1list1.append(5)list2的值?感觉考的是深拷贝和浅拷贝的知识,特此记录list1=[1,2,3,4,5,]list2=list1list1.append(10)print("list1:",list1)print("list2:",list2)直接赋值:其实就是对象的引用;list1 和list2就是同一块地址的两个引用。深拷贝和浅拷贝的区别:深拷贝和浅拷贝都是对象的拷贝,都会生成一个
2020-08-05 00:19:57 100
原创 OS——处理器调度算法
1.评价指标cpu使用率:cpu处于忙状态的时间百分比;吞吐量:单位时间内完成的进程数量;周转时间:进程从初始化到进程结束(包括等待)的总时间;等待时间:进程在就绪队列中的总时间;响应时间:从提交请求到产生响应所花费的总时间;2.调度算法2.1 先来先服务(FCFS):系统调度cpu执行进程的顺序和进程的进入就绪队列的顺序相同,进程进入等待状态或者结束状态时,下一个进程进入cpu执行2.2 短作业优先(短进程优先)SPN: 选择就绪队列中执行时间最短的进程占用cpu执行2.3 最高响
2020-07-26 02:02:50 284
原创 char*和char[]
问题char *c1=“abc”;char c2[]=“abc”;//改动c1的值,程序运行会报错int main(){ char c[]="abc"; char *c1="abc"; const char *c2="abc"; char *c3 =new char; c3="abc"; cout<<c<<endl; //abc cout<<c1<<endl; //abc cout<<c2
2020-07-18 19:15:23 186
原创 逻辑运算符记录
按位与(&), 按位或(|), 按位异或(^), 按位取反(~), 左移(<<), 右移(>>)做题时遇见这些逻辑运算符,一时有点懵逼,特此记录下来。(&) 按位与,(|)按位或,按位异或(^), 按位取反(~)这四个都一目了然,操作也很清晰;右移 >>= 和 左移<<=int x=8; //00000000 00000000 00000000 00001000x>>=3; //右移3位cou
2020-07-17 23:31:19 114
原创 总结----用户线程和内核线程
定义 用户线程:由一组用户级的线程库函数来完成线程的管理,包括线程的创建,终止,同步和调度;———————————————————————————————————— 内核线程:由内核通过系统调用实现的线程机制,由内核完成线程的创建,终止和管理。用户线程的特征和缺点特征:不依赖操作系统内核;在用户空间实现的线程机制(TCB由线程库函数维护);同一进程的用户线程切换速度较快(无需用户态/内核态的转换);允许每个进程拥有自己的线程调度算法;缺点:线程发起系统调用而阻塞时,整
2020-06-07 22:25:30 216
原创 Linux的写时拷贝技术(copy on write)
Linux的写时拷贝技术(copy on write)在linux程序中,fork()会产生一个和父进程完全相同的子进程,但大部分子进程之后会exec()系统调用,出于效率考虑,linux引入了“写时复制”技术,也就是只有进程空间的各段的内容要发生写操作时,才会将父进程的内容复制一份给子进程。1.子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢?在fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不
2020-05-30 22:08:29 416
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人