知识点
文章平均质量分 68
潇洒的白杨树
学习中
展开
-
死锁
概念多个进程循环等待它方占有的资源而无限期地僵持下去的局面原因:竞争资源 程序推进顺序不当必要条件:个资源每次只能被一个进程使用 循环等待 进程已获得的资源,在末使用完之前,不能强行剥夺 个进程因请求资源而阻塞时,对已获得的资源保持不放处理死锁基本方法:1. 预防死锁(摒弃除1以外的条件)进程申请资源时遵循某种协议,打破产生死锁的四个必要条件 允许进程同时访问某些资源 允许进程强行从占有原创 2017-09-22 22:27:45 · 197 阅读 · 0 评论 -
装饰器
廖雪峰装饰器python中一切都是对象 所以函数也是对象, 对象是可以被赋值给变量的,通过变量调用函数>>> def now():... print 'hello,world'...>>> f = now>>> f()hello,world>>>函数对象有一个_name_属性,作用是拿到函数的名字:>>> now.__name__'now'>>> f.__name__'转载 2017-10-04 22:31:59 · 220 阅读 · 0 评论 -
宏定义
什么是宏定义?1.不带参数的宏定义:宏定义又称为宏代换、宏替换,简称“宏” 格式: #define 标识符 字符串 #define PI 3.1415926 标识符就是所谓的符号常量,也称为“宏名” 预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。 “宏”概念的关键是 “换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。 即在对相关命令或语句的含义和功转载 2017-10-03 21:56:54 · 498 阅读 · 0 评论 -
进程的三种基本状态及其转换
进程的基本状态:①就绪(Ready)状态当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态就称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,称为就绪队列。 ②执行状态进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,则有多个进程处于执行状态。 ③阻塞状态正在执行的进程,由于等待某个事转载 2017-09-21 22:16:40 · 5666 阅读 · 0 评论 -
线程同步
什么是线程同步线程同步的真实意思和字面意思恰好相反。 线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操作,而不是同时进行操作。为什么线程同步线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。 当多个线程同时读写同一份共享资源的时候,可能会引起冲突。这时候,我们需要引入线程“同步”机制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团。怎么线程同步原创 2017-09-21 21:57:41 · 475 阅读 · 0 评论 -
if __name__ == '__main__'的理解
转载Python代码和看Python代码时,我们常常可以看到这样的代码:def main(): ...if __name__ == '__main__': mian()name,如果是放在Modules模块中,就表示是模块的名字;如果是放在Classs类中,就表示类的名字;main的含义python代码,是可以直接一行行写出来,然后去运行,更多的Python代码,是写成更加通用的,转载 2017-10-09 01:41:18 · 506 阅读 · 0 评论 -
多线程
参考多线程线程是操作系统直接支持的执行单元 启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行:# -*- coding:utf-8 -*-import threadingimport timedef loop(): print 'thread %s is runing...' % threading.current_thread().name转载 2017-10-08 18:17:33 · 279 阅读 · 0 评论 -
__str__和__repr__比较
python的class的str和repr首先定义一个类:class Item(): def __init__(self,name): self._name=name def __str__(self): return "Item's name is :"+self._nameprint((Item("Car"),))返回的是:C:\Python35\pytho转载 2017-10-08 13:55:37 · 214 阅读 · 0 评论 -
字典
Python 字典(Dictionary)字典是另一种可变容器模型, 且可存储任意类型对象。 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 d = {key1 : value1, key2 : value2 }键必须是唯一的,但值则不必。 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。访问字典里的值di转载 2017-10-08 08:37:24 · 368 阅读 · 0 评论 -
计算机网络__知识点集合1
tcp效率低 建立连接 拥塞控制 流量控制 滑动窗口 TCP连接是全双工 每个方向都必须单独进行关闭TCP协议在重发数据前需要等待的时间–》动态估算tcp首部报文信息标志位字段(U、A、P、R、S、F) URG:紧急比特,紧急封包 SYN: 表示建立连接 FIN: 表示关闭连接 ACK: 表示响应,确认比特 PSH: 表示有 DATA数据传输,要求对方立即传送缓冲区内的其他对应原创 2017-09-21 09:46:07 · 1520 阅读 · 0 评论 -
gethostbyname()
gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构的指针。#include <winsock2.h>struct hostent *gethostbyname(const char *name);name:指向主机名的指针。返回类型struct hostent{ char *h_name;//主机名字 char **h_aliases;转载 2017-09-20 11:40:00 · 713 阅读 · 0 评论 -
虚拟内存
简介Virtual Machine-VM 有了虚拟内存,操作系统中诸如进程间隔离, 文件缓存, 存储交换(swapping)等一系列高级的功能才得以实现. 虚拟内存管理的原理以及如何配置虚拟内存相关参数, 对通用的Linux虚拟内存管理的参数配置有一定的心得 虚拟内存的组成 深入地了解虚拟内存如何工作MMU内存管理单元, 实现虚拟内存系统的物理硬件基础 允许软件通过一个别名的地址跟原创 2017-09-23 00:57:53 · 353 阅读 · 0 评论 -
编译器的工作过程
本文主要针对gcc编译器,也就是针对C和C++,不一定适用于其他语言的编译。 原作者编译器的任务源码要运行,必须先转成二进制的机器码#include <stdio.h>int main(void){ fputs("Hello, world!\n", stdout); return 0;}编译过程第一步 配置(configure)确定编译参数的步骤,就叫做”配置”(configur转载 2017-09-22 23:26:13 · 780 阅读 · 0 评论 -
做Flask-Migrate数据库迁移 遇到了报错
做Flask-Migrate数据库迁移遇到了Target database is not up to date报错、No changes in schema detected报错我解决问题的方法不是很好,等我找到更好的方法后在修改我将migrate文件删了 我又删除了flasky/data-dev.sqlite文件 python manage.py db init python manage.原创 2017-10-13 17:08:56 · 1596 阅读 · 0 评论