- 军军小站|张军博客
搜索到与相关的文章
Linux

Linux下C语言多线程,网络通信简单聊天程序

功能描述:程序应用多线程技术,可是实现1对N进行网络通信聊天。但至今没想出合适的退出机制,除了用Ctr+C。出于演示目的,这里采用UNIX域协议(文件系统套接字),程序分为客户端和服务端。应用select函数来实现异步的读写操作。先说一下服务端:首先先创建套接字,然后绑定,接下进入一个无限循环,用accept函数,接受“连接”请求,然后调用创建线程函数,创造新的线程,进入下一个循环。这样每当有一个新的“连接”被接受都会创建一个新的线程,实现1对N的网络通信

系统 2019-08-12 01:31:59 2789

Python

python安装pil库方法及代码

安装PIL在Debian/UbuntuLinux下直接通过apt安装:$sudoapt-getinstallpython-imagingMac和其他版本的Linux可以直接使用easy_install或pip安装,安装前需要把编译环境装好:$sudoeasy_installPIL如果安装失败,根据提示先把缺失的包(比如openjpeg)装上。Windows平台就去PIL官方网站下载exe安装包。操作图像来看看最常见的图像缩放操作,只需三四行代码:impor

系统 2019-09-27 17:56:20 2788

编程技术

查找串t在串s中出现的次数

//查找串t在串s中出现的次数,模式匹配,KMP算法#include#include#includeusingnamespacestd;strings,t;vectornext;voidnextIt()...{inti=0,j=-1,n=t.size();next[0]=-1;while(i

系统 2019-08-29 23:09:00 2788

Android

短信的收发及在android模拟器之间实践(2)

3.1、运行SMS程序给另一个android模拟器发短信运行上面我们编写的TextMessage程序,另外在Windows的命令行下切换到tools目录下,并输入emulator–datasmsReceiver,我的如下:这样就会启动一个android模拟器,如下所示:(注意它的编号:5556,就是用这个编号与它通信的)图2、通过emulator启动一个android模拟器通过我们TextMessage程序启动的android模拟器,编写短信:图3、Tex

系统 2019-08-29 22:55:40 2788

编程技术

BISM TABULAR MODEL 分集(EXCEPT)一个实例

useExcelExercisego--=====CreatethetesttableCREATETABLEPurchase(PurchaseIDINTIDENTITY(1,1),CustomerIDINT,ProductCodeCHAR(1)PRIMARYKEYCLUSTERED(PurchaseID));--=====Populatethetesttablewithknowndata.INSERTINTOPurchase(CustomerID,Prod

系统 2019-08-29 22:13:52 2788

Android

Android中的Binder机制的简要理解

我们知道,在Android系统中,每一个应用程序都运行在独立的进程中,这也保证了当其中一个程序出现异常而不会影响另一个应用程序的正常运转。在许多情况下,我们activity都会与各种系统的service打交道,很显然,我们写的程序中activity与系统service肯定不是同一个进程,但是它们之间是怎样实现通信的呢?Binder是android中一种实现进程间通信(IPC)的方式之一。了解Binder1.binder用来做什么?用来实现不同进程之间的通信

系统 2019-08-12 09:30:36 2788

Tomcat

Tomcat6.0使用log4j替换默认日志配置

操作步骤很简单:解压jars.rar,解压后的文件夹名为jars,文件夹中包含如下文件:进入tomcat6.0的安装目录,替换bin目录下的tomcat-juli.jar为jars文件夹中的tomcat-juli.jar。复制jars文件夹中的tomcat-juli-adapters.jar、log4j-1.2.12.jar、commons-logging-1.1.1.jar、log4j.properties文件到lib目录下。删除或重命名conf目录下的

系统 2019-08-12 09:30:30 2788

Oracle

[Oracle]高效的PL/SQL程序设计(三)--Package的

本系列文章导航[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧[Oracle]高效的PL/SQL程序设计(二)--标量子查询[Oracle]高效的PL/SQL程序设计(三)--Package的优点[Oracle]高效的PL/SQL程序设计(四)--批量处理[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集[Oracle]高效的PL/SQL程序设计(六)--%ROWTYPE的使用使用Package的优点在于

系统 2019-08-12 09:30:10 2788

各行各业

UVa 10167 - Birthday Cake

这道题是直接暴力,需要注意的是cherry不能在直线上,因此需要两个变量来分别统计在直线两边的个数;还想到一种方法:把所有斜率排序,然后二分枚举,复杂度为O(n+n*lgn+lgn)。1#include23intc[105][2];45intmain()6{7intn,c1,c2,A,B,i,ans[2];89while(1)10{11scanf("%d",&n);12if(!n)break;1314for(i=1;i<=2*n;++i)

系统 2019-08-12 09:27:20 2788

Linux

Linux学习笔记4——函数调用栈空间的分配与释放

一、函数执行时使用栈空间作为自己的临时栈,3种方式决定编译器清空栈的方式:__stdcall、__fastcall、__cdecl1、__stdcall表示每个调用者负责清空自己调用的函数的临时栈__fastcall函数自己在返回前自己清空临时栈,然后返回值退出__cdecl表示所有调用者只有一个清空函数来负责清空所有被调用函数的临时栈2、这三种方式决定函数栈压栈的参数顺序,都是从右到左.3、在window下,函数名前加_stdcall,它决定了函数的名字

系统 2019-08-12 01:32:53 2788