自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(183)
  • 资源 (2)
  • 收藏
  • 关注

转载 关于PostgreSQL failed to load SQLModule安装失败的解决办法

https://blog.csdn.net/sinat_37506845/article/details/77620907亲测可用,我的win10也遇到了相同的问题,就是在安装postgresql的过程中,最后的最后出现了failed to load SQLModule 的字样。 Failed to load sql modules into the database ...

2020-04-13 22:50:38 1295

原创 PostgreSQL数据表复制

PostgreSQL数据表太大的话,会影响读写效率。将一个很大的数据表进行拆分,将数据分散到较小的若干个数据表中,分别用多台计算机进行并行处理,之后再将处理结果进行汇总,是一个高效的解决方案。数据表的拆分方法如下:CREATE TABLE table_1 AS SELECT * FROM table WHEREuid >=1 AND uid<=5000000;CREATE T...

2019-05-11 22:58:38 1730

原创 Visual Studio(C#)中使用Npgsql连接PostgreSQL数据库

在Visual Studio里,通过安装Npgsql来连接PostgreSQL数据库。值得注意的是,并不是一次安装后在任何工程里都可以使用。而是需要首先打开需要使用的解决方案,之后再按照以下方法进行安装。在Visual Studio中的程序包管理器控制台的提示符之后输入以下安装命令:Install-Package Npgsql。...

2019-05-11 22:52:59 8384

原创 PostgreSQL给数据表的某字段添加唯一约束

在windows的开始菜单下,从PostgreSQL 10标签下展开并打开pgAdmin 4,打开要操作的数据库,浏览到需要操作的数据表。注意,打开数据表的路径是:PostgreSQL10 -&gt; Databases(3) -&gt; ChiCorpus -&gt; Schemas(1) -&gt; public -&gt; Tables -&gt; mycorpus。(mycorpus即使我...

2019-03-10 11:31:53 9479

原创 Windows中PostgreSQL数据库的备份和还原

1、备份: 通过cmd命令窗口进入到PostgreSQL安装目录下的bin目录下:然后,输入以下命令:2、还原也是通过cmd命令窗口进入到PostgreSQL安装目录下的bin目录下,然后输入以下命令即可。但在还原数据库之前,需要提前建立一个空白的同名数据库。3、单表备份:单表恢复的方法同上。...

2018-11-12 19:54:23 5991 1

转载 Python网络请求模块requests

Python网络请求模块requests安装方法:注意,安装过程可能会多次出现异常,请反复尝试,直至成功。背景介绍之前说了,公司有一个需求需要使用python实现。由于公司服务器上的python版本是2.7我在写这个需求时,用到网络请求这部分时,发现python 2.7版本的请求模块真的是设计很不合理,urllib和urllib2两个包,我弄的云里雾里的,索性我就不适...

2018-02-28 03:25:24 461

原创 Python程序运行中防止意外Ctrl+C按键致程序终止

Python网络爬虫往往需要连续运行很长时间。期间,运行过程中会随时输出一些状态信息,供分析查看。在此过程中,有时会选择所需信息,然后习惯性地点击Ctrl+C进行复制操作,啊哦~~~~ 不妙!对于运行中的Python来说,这也会导致发出退出运行的信号。于是我们就看到如下的画面:KeyboardInterrupt异常!怎么办?如果不想因为一个粗心大意的按键而导致程序中途退出,势必需要对退

2018-01-14 01:44:22 13008 1

原创 Python3.6中安装psycopg2实现对PostgreSQL数据库的操作

注意:在打开cmd窗口进行pip升级时,需要以管理员身份打开,否则可能升级失败。python3.7,有时安装完在Scripts文件夹下连pip.exe都没有。解决办法:Windows命令行,输入:python -m ensurepip,即可生成pip3.exe然后添加Scripts路径到环境变量path中即可。 上述方法不行的话,可以尝试:python -m ...

2018-01-11 21:30:33 37904 3

原创 Windows7下安装配置PostgreSQL10

PostgreSQL安装:一、windows7下安装过程首先上PostgreSQL官方网站的下载页面https://www.postgresql.org/download/windows/,下载本软件安装介质:postgresql-10.1.3-1-windows-x64.exe(166M),安装过程非常简单,基本是一路next,过程如下:1、开始安装:2、选择程序安装目录:...

2018-01-11 11:18:49 4327

原创 用C语言开发一个BT下载软件 (四) ------ 代码实现-5-Peer管理模块

系统为每一个与之建立TCP连接的Peer构造一个Peer结构体。Peer管理模块负责管理由各个Peer节点构成的Peer链表,主要工作是创建节点,添加节点到Peer链表,从Peer链表中删除节点等。//peer.h#ifndef PEER_H#define PEER_H#include #include #include "bitfield.h"#define IN

2018-01-04 11:10:03 1179 3

原创 用C语言开发一个BT下载软件 (四) ------ 代码实现-4-信号处理模块

在运行过程中,程序会收到一些信号,比如SIGINT、SIGTERM,这些信号的默认动作是立即终止程序。但在终止程序之前,需要首先执行一些善后操作,比如释放动态申请的内存、关闭文件描述符、关闭套接字等。这些善后操作就是在信号处理模块里进行。本模块的头文件是signal_handler.h,源文件是signal_handler.c。//signal_handler.h#ifndef SIGNA

2018-01-01 10:00:33 610

原创 用C语言开发一个BT下载软件 (四) ------ 代码实现-3-出错处理模块和运行日志模块

出错处理模块      出错处理模块,主要定义了一些错误类型,以及发生导致程序终止的致命性错误时程序的响应。//bterror.h#ifndef BTERROR_H#define BTERROR_H#define FILE_FD_ERR -1 // 无效的文件描述符#define FILE_READ_ERR -2 // 读文件失败#define FILE

2017-12-30 12:14:09 699

原创 用C语言开发一个BT下载软件 (四) ------ 代码实现-2-位图管理模块的代码实现

//bitfield.h#ifndef BITFIELD_H#define BITFIELD_H//位图结构体typedef struct _Bitmap { unsigned char *bitfield; // 保存位图地址的指针 int bitfield_length; // 位图所占的总字节数 int valid_len

2017-12-29 18:49:21 873

原创 设置CentOS6.5默认不启动图形界面

CentOS6.5默认时会首先启动图形界面,之后再进入tty2,输入用户名密码进入shell命令界面。但今天遇到一个问题,在图形界面输入用户名密码的时候,不知为何,图形界面卡死在那里,无法输入用户密码。重启、关机后还是如此。      后来尝试了这样,修改CentOS启动时的等级,修改为默认从命令行启动,命令行启动之后,再输入startx启动图形界面。没想到这样还真解决了这个问题,现在图形界面

2017-12-27 15:22:45 5669

原创 Linux系统Bash shell里解决中文输入和显示乱码的问题

在VMWARE虚拟机里安装了CentOS6.5。由于工作性质,需要在shell里输入汉字,以及显示汉字。在网上搜索了很多设置方法,但都不管用。比如:vi /etc/sysconfig/i18n      修改“LANG=zh_CN.UTF-8”(或者无论修改为zh_CN.GB18030,或zh_CN.GB2312,或zh_CN.GBK等)都不管用。      也尝试过这样:

2017-12-25 13:26:12 30539

原创 用C语言开发一个BT下载软件 (四) ------ 代码实现-1-种子文件解析模块

//parse_metafile.h#ifndef PARSE_METAFILE#define PARSE_METAFILE// 保存从种子文件中获取的tracker的URLtypedef struct _Announce_list { char announce[128]; struct _Announce_list *next;} Announce_list;//

2017-12-24 13:44:28 3932 5

原创 用C语言开发一个BT下载软件 (三) ------ 系统结构设计

整个系统各个模块功能如下图所示:种子解析:负责解析种子文件,从中获取Tracker服务器的地址,待下载文件的文件名和长度,piece长度,各个piece的hash值。连接Tracker:根据HTTP协议构造获取peer地址的请求,与Tracker建立连接,解析Tracker的回应消息,从而获取各个peer的IP地址和端口号。与peer交换数据:根据peer的IP地址和端口号连接

2017-12-24 05:55:44 1521

原创 用C语言开发一个BT下载软件 (二) ------ 算法和策略

流水线作业      当客户端向peer发送数据请求时(即发送request消息),一次请求多个slice(即在一个数据包中发送多个request消息请求多个slice)。peer发送完一个slice后接着发送下一个slice,从而避免了等待,提高了数据传输的效率。片断(piece)选择算法一旦向某个peer发送对某个piece中的slice请求后,则该piec

2017-12-24 05:27:22 2313

原创 用C语言开发一个BT下载软件(一) ------ BitTorrent协议 -2

与Tracker交互      完成解析种子文件并从中获取Tracker服务器的URL后,即可开始与Tracker进行交互。交互有2个目的:将自己的下载进度告知给Tracker以便Tracker进行一些相关统计;获取当前下载同一个共享文件的peer的IP地址和端口号。      客户端使用HTTP协议与Tracker通信。通过HTTP GET方法从Tracker获取请求,请求的

2017-12-23 15:31:34 3511 3

原创 用C语言开发一个BT下载软件(一) ------ BitTorrent协议 -1

BitTorrent(简称BT)是一个文件分发协议,每个下载者在下载的同时不断地向其他下载者上传已下载的数据。它是属于一个应用层的协议。  基于BT协议的文件分发系统由以下几个实体构成:一个web服务器一个种子文件一个Tracker服务器一个原始文件提供者一个网络浏览器 若干个下载者      web服务器上保存着种子文件。种子文件又称为元文件或metafile,它保存

2017-12-23 13:40:04 4333

原创 套接字编程4 ------ 动态生成多线程并发扫描服务器端口的实例

本程序使用TCP connect方式对服务器进行端口扫描。      本程序在扫描端口时使用了多线程技术,把要扫描的所有端口平均分配给一些线程,每一个线程负责扫描一部分端口。主线程负责任务分配、启动各个子线程和等待子线程结束。代码如下:// 端口扫描程序,只支持扫描TCP端口#include #include #include #include #include #includ

2017-12-22 03:19:58 503

原创 套接字编程3 ------ 一个面向连接的SERVER/CLIENT综合实例

本示例程序是用TCP套接字开发的模拟用户远程登录的程序。1、服务器端程序的设计服务器端的并发性服务器端程序采用多进程的方式实现对多个客户端连接请求的响应。主程序创建套接字后将其绑定到4507端口。然后使套接字处于监听状态,调用accept函数等待来自客户端的连接请求。每接收一个新的客户端连接请求,服务器端进程就创建一个子进程,该子进程负责处理该连接请求,服务器端进程继续等待来自其他客户

2017-12-21 13:56:06 646

原创 套接字编程2 ------ 多路复用select示例

// 示例函数select()的使用#include #include #include #include #include void display_time(const char *string){ int seconds; seconds = time((time_t*)NULL); printf("%s, %d\n", string, seconds);}

2017-12-20 23:17:40 309

原创 套接字编程1 ------ 涉及的主要API函数 - 2

网络字节顺序转换函数      不同机器存储数据的字节顺序不同,有大端模式(big-endian)和小端模式(little-endian)。TCP/IP协议规定在网络上传输数据必须采用大端模式(也即网络字节顺序)。Linux系统为大小端模式的转换提供了4个函数。其原型分别如下:#include uint32_t htonl(uint32_t hostlong);uint16_t hto

2017-12-20 14:26:31 902

原创 套接字编程1 ------ 涉及的主要API函数 - 1

TCP进行通信的过程(三次握手):连接的发起段(通常称为客户端),向目标计算机(通常称为服务器)发送一个请求建立连接的数据包。服务器收到请求后,对客户端的同步信号做出响应、发送自己的同步信号给客户端。客户端对服务器端发来的同步信号进行响应。至此,连接建立完成,就可以进行数据传输了。TCP连接的关闭:请求主机发送一个关闭连接的请求给另一方。另一方收到关闭连接的请求

2017-12-20 02:10:57 521

原创 进程间通信(IPC)4 ------ 共享内存(配合使用信号量进行同步)

共享内存就是能被不同进程共同访问的一块内存。      函数shmget()用以创建一个共享内存,或者访问一个已存在的共享内存。原型如下:#include int shmget(key_t key, size_t size, int shmflg);参数key是由ftok()函数或得的键值。参数size以字节为单位制定内存的大小。创建新的共享内存时,size必须大于0;如果访问一

2017-12-18 22:56:58 468

原创 进程间通信(IPC)3 ------ 消息队列 - 2

上文将消息队列中放入了数据,其他进程就可以从中读取消息了。读取消息的函数是msgrcv(),该函数原型为:#include int msgrcv(int msgid, struct msgbuf *msgp, size_t msgsz, long int msgtyp, int msgflg);      相关参数的含义上文已经说明,此处略过。      使用相同的参数PATH_NA

2017-12-18 15:10:20 197

原创 进程间通信(IPC)3 ------ 消息队列 - 1

消息队列是一个存放在内核中的消息链表,由消息队列标识符标识。      向消息队列发送消息时,必须组成合理的数据结构。Linux系统定义了一个模板数据结构msgbuf:#include struct msgbuf{ long mtype; char mtext[1];};      mtype字段代表消息类型。mtext字段指消息内容。     

2017-12-18 14:32:27 294

原创 进程间通信(IPC)2 ------ 有名管道

管道的一个不足之处是没有名字,因此只能在具有亲缘关系的进程之间通信。而“有名管道”与此不同,它提供了一个路径名与之关联,作为一个设备文件存在,即使无亲缘关系的进程之间,只要能访问该路径,也可以通过FIFO进行通信。FIFO总是按照先进先出的原则工作,第一个被写入的数据将首先从管道中读出。      函数原型:#include #include int mkfifo(const char

2017-12-18 13:56:32 310

原创 进程间通信(IPC)1 ------ 管道

进程的地址空间是互相独立的,因此进程之间交互数据必须采用专门的通信机制。尤其是在大型的软件系统中,往往需要多个进程互相协作共同完成一个任务,这就需要使用进程间通信(Inter-Process Connection, IPC)编程技术。      管道(Pipe)是两个进程之间进行单向通信的机制,因为它的单向性,所以又称为半双工管道。它主要用于进程间的一些简单通信。数据只能由一个进程

2017-12-17 22:44:24 210

原创 定时器信号的用法

#include #include #include #include /*信号处理程序*/void handler_sigtime(int signo){ switch (signo) { case SIGALRM: printf("recv SIGALRM\n"); break; case SIGPROF: printf("recv SIGPROF\n

2017-12-17 19:29:24 457

原创 信号的捕获和处理

信号(signal)是一种软件中断,是进程间唯一的异步通信方式。      信号有很多,常见的有:SIGINT:在键盘按下组合键后产生,默认动作为终止进程SIGQUIT:在键盘按下组合键后产生,默认动作为终止进程SIGKILL:无条件终止进程。本信号不能被忽略、处理和阻塞。默认动作为终止进程。它向系统管理员提供了一种可以杀死任何进程的方法SIGALRM:定时器超时,超时的时间由系统

2017-12-16 15:34:04 5606

原创 线程同步3 ------ 信号量在不同进程间同步的又一个实例

以下实例通过信号量实现对临界资源的同步访问问题。server程序创建一个信号集,并对信号量循环减1,相当于分配资源。而client在执行时首先检查信号量,如果大于0代表有资源可用,就继续执行。如果信号量小于0代表资源已经分配完毕,进程client退出。server.c//server.c#include #include #define MAX_RESOURCE 5int m

2017-12-15 11:23:25 348

原创 线程同步3 ------ 信号量实现进程或者线程之间的同步

基本概念      信号量是一个计数器,常用于处理进程或线程的同步问题,特别是对临界资源访问的同步。临界资源可以简单地理解为在某一时刻只能由一个进程或线程进行操作的资源。信号量的值与相应资源的使用情况有关,当它的值大于0时,表示当前可用资源的数量,当它的值小于0时,其绝对值表示等待使用该资源的进程个数。

2017-12-14 15:41:01 2739

转载 线程同步3 ------ Linux进程间通信——使用信号量

这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行

2017-12-12 14:20:53 209

原创 线程同步2 ------ 条件变量实现“生产者-消费者”续

在上一篇转载博客的基础上,我想实现当生产者结束生产任务后,让消费者线程优雅主动地退出循环结束线程。具体代码修改如下。但是事与愿违,执行结果是,只有消费者线程里的第一个线程,能够主动退出循环结束线程,而其他消费者线程仍然不停地轮询等待。      代码:#include #include #include #include #include #include #include

2017-12-06 18:09:13 311

转载 线程同步2 ------ 用条件变量来解决生产者消费者问题

转载自:http://blog.csdn.net/chen_mama/article/details/47429695在上一篇文章中,我使用了匿名信号量什么是条件变量? 我们可以设想一个场景:线程A需要某个条件成立才能继续执行,否则一直等待下去,而线程B执行过程中使线程的执行条件成立,并且唤醒A。 举个例子,在生产者消费者模型中,消费者如果看到缓冲区为空时,就等待,而生

2017-12-06 17:58:19 222

原创 线程同步2 ------ 条件变量

条件变量是利用线程间共享的全局变量进行同步的一种机制。条件变量宏观上类似if语句,符合条件就能执行某段程序,否则只能等待条件成立。      使用条件变量主要包括2个动作:一个等待使用资源的线程“等待条件变量被设置为真”;另一个线程在使用完资源后“设置条件为真”,这样就可以保证线程间的同步了。那么关键的问题来了,就是要保证条件变量能被正确地修改,条件变量应该得到特殊的保护。实际使用中其实仍然需

2017-12-05 21:19:21 297

原创 线程同步1 ------ 互斥锁 ------一个更加典型的例子

上一篇博文里,举了一个简单的应用共享锁的例子。本篇博文将介绍一个稍微更加复杂点的例子。      有一个全局变量数组out,包含100个元素,所有元素初始化为0。然后开启2个子线程同时对数组out进行赋值操作。在此过程,应该启用共享锁对赋值代码进行同步。具体代码如下:#include #include pthread_mutex_t number_mutex;//out数组是全局

2017-12-04 11:19:54 1666

原创 线程同步1 ------ 互斥锁

和多进程相比,多线程的最大特点就是资源的共享。然而共享却涉及到一个同步的问题,这是多线程变成的难点。Linux系统提供了多种方式处理线程间的同步问题,主要有互斥锁、条件变量和异步信号。本文先讲互斥锁。      互斥锁通过锁机制来实现线程间的同步。在同一个时刻,只允许一个线程执行一个关键部分的代码。      使用互斥锁前必须对其进行初始化。有以下2种方式:将宏结构常量

2017-12-04 02:57:15 235

仿照IP138无差错完整IP数据库

包含全球IP地址详细地址、手机号码归属地。翔实、可靠。

2013-07-25

C#实现QQ截图功能源代码

一个类似于QQ程序里截图的功能,采用C#语言。功能很强大完善,有完整的源代码。

2011-11-03

空空如也

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

TA关注的人

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