自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 问答 (1)
  • 收藏
  • 关注

原创 golang aes加密ecb模式

golang官方不支持ecb模式package myAesimport ( "bytes" "crypto/aes" "crypto/md5" "encoding/hex" "fmt" "strings")func padding(ciphertext []byte, blockSize int) []byte { padding := blockSize - len(ciphertext)%blockSize padtext := bytes.Re

2021-12-15 12:50:59 2001

原创 Mysql自动添加时间戳

添加时间戳一,建表设置,CURRENT_TIMESTAMP二,设置自动更新时间戳,ON UPDATE CURRENT_TIMESTAMP范例:CREATE TABLE IF NOT EXISTS test_table( id INT UNSIGNED AUTO_INCREMENT, create datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', updatetime datetime DEFAULT CURRENT_TI

2021-12-15 12:42:08 2970 1

转载 epoll详解

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll的相关系统调用epol

2014-12-30 19:57:26 385

转载 TCP/UDP Socket编程步骤

sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);WINDOWS环境下TCP/UDP编程步骤:1. 基于TCP的socket编程是采用的流式套接字。在这个程序中,将两个工程添加到一个工作区。要链接一个ws2_32.lib的库文件。服务器端编程的步骤:1:加载套接字库

2014-06-25 11:30:30 509

原创 Linux 信号量

锁有一个很明显的缺点,那就是它只有两种状态:锁定与不锁定。信号量本质上是一个非负数的整数计数器,它也被用来控制对公共资源的访问。当公共资源增加的时候,调用信号量增加函数sem_post()对其进行增加,当公共资源减少的时候,调用函数sem_wait()来减少信号量。其实,我们是可以把锁当作一个0-1信号量的。它们是在/usr/include/semaphore.h中进行定义的,信号

2014-06-12 14:28:00 452

原创 Linux c 多线程编程

进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。

2014-06-11 13:58:10 473

转载 UDP TCP 打洞技术

UDP、TCP打洞技术内容概述:在p2p通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的p2p客户端在无论以何种有效的公网ip都无法访问的问题。虽然目前已经发展出多种穿越NAT的技术,但相关的技术文档却很少,用来证明这些技术的稳定性和优点的实际数据更少。本文的目的在于描述和分析在实际中运用得最广泛、

2014-06-04 17:20:50 561

转载 UDP用打洞技术穿透NAT的原理与实现

首先先介绍一些基本概念:            NAT(Network Address             Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network             Address/Port Translator)。         

2014-06-03 14:59:32 596

转载 UDP打洞原理

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.许多P2P软件比如SKYPE,QQ,电驴之类需要不同内网的两台机子进行通信,而路由器的NAT机制决定了内网访问外网容易,而外网访问内网困难,那如何才能做到这一点呢?有办法------打洞!具体实现方法需要一台服务器,现在假设两台内网PC,A和B想用端口40000通信,网关分

2014-06-03 11:35:51 509

转载 Linux下C语言的多线程编程学习

Linux下C语言的多线程编程学习一、首先,简单了解一下多线程,从耳熟能详的fork()、pthread中理点头绪出来,然后自己写一个简单的来增加一下信心。1、Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连 接时需要使用库libpthread.a。因此,后面的编译必须在选项中加入 -lpthread

2014-05-30 17:17:46 547

转载 多线程的那点儿事(基础篇)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】        多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程?当然,要了解到多进程,就要涉及到操作系统。不过大家也不要紧张,听我慢慢道来。这其中的环节其实并不复杂。    (1)单CPU下的多线程     在没有

2014-05-28 11:36:14 361

转载 Iperf 源代码分析(四)

Socket 类    Socket的定义和实现分别在文件Socket.hpp和 Socket.cpp中。它的主要功能是封装了socket文件描述符、此socket对应的端口号,以及socket接口中的listen, accept, connect和close等函数,为用户提供了一个简单易用而又统一的接口。同时作为其他派生类的基类。    Socket类的定义如下:

2014-05-26 10:46:17 531

转载 Iperf 源代码分析(三)

SocketAddr类    SocketAddr类定义在lib/SocketAddr.hpp中,实现在lib/SocketAddr.cpp中。SocketAddr类封装了网络通信中经常用到的地址结构以及在这些结构上进行的操作。地址解析也是在SocketAddr的成员函数中完成的。首先讨论一下Socket编程中用于表示网络地址的数据结构。    网络通信中的端点地址可以一般化的

2014-05-26 10:45:11 809

转载 Iperf 源代码分析(二)

Thread类     Thread类封装了POSIX标准中的多线程机制,提供了一种简单易用的线程模型。Thread类是Iperf的实现中比较重要的类,使Iperf实现多线程并行操作的核心。    Thread类的定义在文件lib/Thread.hpp中,其实现位于lib/Thread.cpp中。[cpp] view plaincopyprint?

2014-05-26 10:44:01 764

转载 Iperf 源代码分析(一)

概述       前段时间学习Linux网络编程的有关知识,希望看一看这些网络编程的技术在实际的代码中是如何运用的。正巧实验室的项目中使用了开源网络性能测试软件Iperf,于是便初步分析了Iperf的源代码。现将分析代码的点滴收获写在我的Blog上,希望各位高人多多指教。      Iperf 是美国伊利诺斯大学(University of Illinois)开发的一种网络性能测试工具。可

2014-05-26 10:42:27 580

原创 C语言当中几个获取时间和处理的函数

#include int gettimeofday(struct timeval*tv, struct timezone *tz);其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果

2014-05-06 14:18:49 516

原创 Linux c Socket编程

socket基本操作:发

2014-04-25 18:05:16 482

原创 希尔排序(C语言版)

希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组子序列,所有距离为gap的倍数的记录放在同一个组中;然后,对各组内的元素进行直接插入排序。 这一趟排序完成之后,每一个组的元素都是有序的。然后减小gap的值,并重复执行上述的分组和排序。重复这样的操作,当gap=1时,整个数列就是有序的

2014-04-25 16:27:20 1123

原创 Udp编程

一.UDP编程流程(1)服务器:创建套接字(socket)绑定IP地址和端口(bind)收发数据(sendto/recvfrom)关闭连接(closesocket)(2)客户端:创建套接字(socket)收发数据(sendto/recvfrom)关闭连接(closesocket)二.用于收发的函数:

2014-04-25 16:19:03 468

转载 TCP编程

前面专题的例子都是基于应用层上的HTTP协议的介绍, 现在本专题来介绍下传输层协议——TCP协议,主要介绍下TCP协议的工作过程和基于TCP协议的一个简单的通信程序,下面就开始本专题的正文了。 一、TCP的工作过程首先TCP是一种面向连接的,可靠的,基于字节流的传输层通信协议。TCP的工作过程可以分为三个阶段:一、连接的建立;  二、传输数据; 三、断开连接,下面就对这三个

2014-04-24 16:11:17 424

转载 UDP介绍

引用:前一个专题简单介绍了TCP编程的一些知识,UDP与TCP地位相当的另一个传输层协议,它也是当下流行的很多主流网络应用(例如QQ、MSN和Skype等一些即时通信软件传输层都是应用UDP协议的)底层的传输基础,所以在本专题中就简单介绍下UDP的工作原理和UDP编程的只是,希望可以对刚接触网络编程的朋友起到入门的作用。一、UDP介绍UDP和TCP都是构建在IP层之上传输层

2014-04-24 16:09:46 2283

原创 sockaddr_in 和sockaddr_un的区别

sockaddr_in的结构:  struct   sockaddr_in   {                  short   int   sin_family;                     unsigned   short   int   sin_port;                     struct   in_addr   sin_addr;    

2014-04-23 15:39:19 7442

原创 Makefile中预定义变量介绍

在Linux开发中,经常会出现Makefile中出现的变量。变量是在Makefile中定义的名字,用来代替一个文本字符串,该文本字符串称为该变量的值。在一些具体情况下,这些值代替目标、依赖、命令及Makefile文件中的其他部分。Makefile中常见的预定义变量及默认值如下: 变量名 含义 默认值 AR 库文件维护程序的名称 ar AS 汇编程序的名称 as CC C

2014-04-23 14:36:22 653

原创 Glibc中的字符测试函数

Glibc中的字符测试函数   在Glibc库中有一类很常见的函数,那就是字符测试函数。   常见的字符测试函数有: 函数名称函数原型 功能说明 isalnum int isalnum(int c) 检查参数C是否为英文字符或阿拉伯数字 isalpha int isalpha(int c) 检查参数

2014-04-23 14:32:16 586

原创 Linux C输入输出函数

格式化输入输出函数(14)这些函数都要包含头文件stdio.h, 以v开始的还要包含头文件stdarg.h1. 输出printf: 格式化输出数据函数定义: int printf(const char *format, ...);函数说明: printf()会根据参数format字符串来转换并格式化数据, 然后将结果写出到标准输出设备, 直到出现字符串结束符('\0')

2014-04-23 14:26:53 1342

空空如也

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

TA关注的人

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