- 博客(24)
- 收藏
- 关注
原创 【求助】用Python写一个邮件发送表格的功能,表格的列数如何动态控制
context_mid = "" context_mid = context_mid + """<table><tr>""" for i in range(1,5): context_mid = context_mid+ """"<td class="t1">%d月</td>"...
2019-12-15 22:36:42 273
转载 代理服务器与NAT服务器
什么是代理服务器一、概念: 代理服务器(ProxyServer)是个人网络和Internet服务商之间的中间代理机构,它负责转发合法的网络信息,对转发进行控制和登记。代理服务器作为连接Internet(广域网)与Intranet(局域网)的桥梁,在实际应用中发挥着极其重要的作用,它可用于多个目的,最基本的功能是连接,此外还包括安全性,缓存,内容过滤,访问控制管理等功能。代
2016-09-20 20:15:36 516
转载 Linux-死锁
一、什么是死锁 死锁是指两个或两个以上的进程在执行过程中,为争夺同一资源而造成的 一种互相等待的现象。二、产生死锁的四个必要条件1、互斥条件。每个资源要么已经分配给了一个进程,要么就是可用的。2、占有和等待条件。已经得到了某个资源的进程可以再请求新的资源。3、不可抢占条件。已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式的释放。4、循环等待条件。死锁发
2016-09-10 21:59:46 426
原创 Linux进程间通信(五)
共享内存: 使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。示例:comm.h 1 #pragma once 2 3 #include 4 #include 5 #include 6 7 #define _PROJ_PATH_ "/
2016-09-08 23:45:59 331
原创 Linux进程间通信(四)
一、什么是信号量: 信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。 当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求,等于0,无资源可用,进程会进入睡眠状态直到资源可用。 当
2016-09-08 23:20:50 326
原创 Linux进程间通信(三)
一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。我们可以通过发送消息来避免命名管道的同步和阻塞问题。消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定是先入先出。消息队列与命名管道有一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每
2016-09-08 22:44:22 310
原创 Linux进程间通信(二)
一、概念 匿名管道的一个不足之处是没有名字,因此,只能用于具有亲缘关系的进程间通信,在命名管道(named pipe或FIFO)提出后,该限制得到了克服。 FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存储于文件系统中。命名管道是一个设备文件,因此,即使进程与创建FIFO的进程不存在亲缘关系,只要可以访问该路径,就能够通过FIFO相互通信。值得注意的FIFO(f
2016-09-08 22:28:20 314
原创 Linux进程间通信(一)
什么是进程间通信? 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到所以进程之间要交换数据必须通过核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。利用管道实现进程间通信: 管道是一一种最基本的IPC机制,由pipe函数创建: #include int pi
2016-09-08 21:35:51 348
转载 可重入函数与线程安全的区别与联系
首先来了解一下什么是可重入函数和线程安全。一、可重入函数: 就是可以被中断的函数,主要用于多任务环境中。也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。可重入函数特点:1.不
2016-09-08 20:47:48 352
原创 Linux中umask函数/命令的用法
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。 可以在Linux下使用umask命令来查看一下Linux系统的默认值:[bob@localhost ~]$ umask0002 可以发现um
2016-09-01 00:10:24 697
转载 file结构体
FILE结构体: C语言的stdio.h头文件中,定义了用于文件操作的结构体FILE。这样,我们通过fopen返回一个文件指针(指向FILE结构体的指针)来进行文件操作。可以在stdio.h(位于visual studio安装目录下的include文件夹下)头文件中查看FILE结构体的定义,如下:#ifndef _FILE_DEFINEDstruct _iobuf {
2016-08-27 18:19:57 669
转载 Linux内核task_struct注释
struct task_struct{ volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ /* 表示进程的当前状态: TASK_RUNNING:正在运行或在就绪队列run-queue中准备运行的进程,实际参与进程调度。 TASK_INTERRUPTIBLE:处于等待队列中的进程,
2016-08-25 21:13:19 443
原创 Linux下find命令使用实例
Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间。 命令格式:find 路径 -命令参数 [输出形式]常用参数:1. -name
2016-08-24 09:51:48 452
原创 浅析extern、static、const
extern C和C++中用extern关键字修饰变量或函数,说明该变量或函数是全局性的。extern声明的外部变量和函数告诉编译器,该变量和函数的声明和定义不在同一文件中,而要在其他文件中查找定义。 变量在被extern声明时并不对其分配有效空间,而是在定义时分配空间。extern与“C”连用 这是在C++中的使用方法,比如:extern "C"+函数声明,则告诉编译器按照
2016-06-17 17:14:12 372
原创 C++面向对象程序设计之灵魂——多态性
多态性是面向对象程序设计的一个重要特性。如果一个语言只支持类而不支持多态,是不能称为面向对象语言的,只能说是基于对象的。多态性一、定义 好多书上写的比较字面的解释是:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为。但是这读起来总感觉很难理解。 我对它的理解就是:通过不同的对象在调用一个同名函数时,会产生不同的功能。当然这个同名函数本身是具有不同功能的。二、分
2016-06-16 11:20:48 495
原创 C++面向对象的程序设计——继承
首先让我们了解一个面向对象程序设计的4个主要特点:抽象,封装,继承和多态。其中继承性和派生性是面向对象程序设计的两个重要特性。1.什么是继承: 在C++中继承就是在一个已存在类的基础上建立一个新类,然后新类可以从已有类那里获得它已有的特性。class Base{public: int a; int b;};class Derived :public Base{pub
2016-06-15 08:52:47 504
原创 C++类的6个默认构造函数
1.构造函数。2.析构函数。3.拷贝构造函数。4.赋值运算符重载。5.取地址运算符重载(非const)。6.取地址运算符重载(const)。class Date{public: Date(); //构造函数 ~Date();
2016-06-01 11:34:46 1637
原创 C语言中随机数的生成,以及简单猜数游戏的实现。
C语言标准库提供两个帮助生成随机数的函数:rand()和srand(),而这个库也被包含于中。在实际使用中这两个函数组合使用才能生成正确的随机数。 srand()函数是随机数发生器的初始化函数,原型为:void srand(unsigned seed)。rand()函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次使用rand()之前没有调用sr
2016-04-13 14:36:02 6232
原创 C语言如何求两个数的最大公约数和最小公倍数。
void Gyueshu(int max, int min){ int i = 0, temp = 0; if (max < min) //判断并交换两个数的大小 { temp = max; max = min; min = temp; } if (max%min == 0) printf("最大公约数为%d\n", min); else {
2016-04-13 11:23:53 4411
原创 C语言输入一个整数,输出其二进制位中1的个数
大家都知道一个十进制数转化成对应的二进制形式的方法就是对这个十进制数不断的进行模2取余,然后将它的余数逆序输出就是其二进制形式。比如说:其二进制位中1的个数即模2取余后1的个数。 那么就可以利用这点对一个十进制数模2后判断它的余数是不是1,如果是则计数器加1,然后将这个数除2取它的一半继续进行判断。因为一般情况下整型数为4个字节,即32个比特位,所以循环要执行32次。#inc
2016-04-12 12:52:31 10896
原创 C语言如何求闰年,打印输出1000-2000年之间的所有闰年.
求闰年的方法我们在上小学的时候应该就有了解到。基本流程图如下: 简言之如果一个年份能被4整除却不能被100整除,或者能被400整除那么它就是闰年。 写成C语言代码即:(year%4==0)&&(year%100)!=0||(year%400)==0; 那么这个问题解决起来也就相当简单: #includeint main(){ int year; for (
2016-04-11 22:33:18 9585
原创 C语言输出打印乘法口诀表
#includeint main(){ int i, j, result = 0; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) { result = i*j; printf("%d*%d=%-3d", i, j, result); printf(" "); } printf("\n"); }
2016-04-11 22:13:22 931
原创 C语言如何判断一个数是素数,输出100-200之间的全部素数。
素数又称质数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。#includeint Sushu(int a);int main(){ int n = 0, res = 0; for (n = 100; n < 200; n++) { res = Sushu(n); if (res
2016-04-11 19:53:08 18549 2
原创 开始学习C语言C++在这里记录自己的成长。简单的两变量交换问题
这几天开始着手学习C语言C++,今天正事加入CSDN的大家族,希望在这里共同成长,学到更多的知识。第一次写博客,有哪些不对的地方希望各位大神批评指出。 刚接触到一个双变量交换的简单问题在这里讨论两个变量的交换问题好像过于简单了点,毕竟本人刚刚开始学习,就当是自己一点一滴的成长吧,希望大家不要见笑,下面就来写写实现它的几种不同的方法。 1.好多人遇到这种问题的第一想法肯定是声明一
2016-03-15 12:34:07 409
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人