自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (12)
  • 收藏
  • 关注

原创 Linux常用命令

功能 命令 关机 shutdown -h now 或者 poweroff 或者 init 0 重启 reboot 注销

2016-07-17 03:07:36 834

原创 GDB调试技巧

工具程序gdb是GNU调试器。为了能调试程序,编译时必须指定GCC的-g选项将源码与可执行代码联系起来。将程序载入调试器fibonacci.cint current;int next;int nextnext;void setstart(void) { current = 0; next = 1;}void calcnext(void) { nex

2017-12-12 12:32:07 1061

原创 VS错误收集

LINK : fatal error LNK1117: 选项“mapinfo:lines”中的语法错误解决方法: 找到”链接器” —>”命令行”,把“其他选项“里面的 /mapinfo:lines 去掉就行了错误 183 error LNK1104: 无法打开文件“mfc42.lib”

2017-04-08 18:56:24 1170

原创 GCC编译C/C++

-c 编译.c源文件生成.o目标文件 -o 修改生成的文件名

2017-02-24 17:30:03 1027

原创 GCC预处理程序规则

/* 限定只有在定义了__unix__的情况下才能成功编译 */#ifndef __unix__#error "This section will only work on UNIX systems"#endif/* 插入指定的文件 */#include <errno.h>#include <stdio.h>#include <stdlib.h>/* 两值中的最小值 */#define

2017-02-22 17:14:25 525

原创 ICMP协议与ping

原始套接字原始套接字提供普通TCP和UDP套接字所不提供的能力。具体如下:进程可以使用原始套接字读与写ICMPv4、ICMPv6和IGMPv4等分组。ping程序使用原始套接字发送ICMP回射请求并接收ICMP回射应答。#include <netinet/in.h>int sockfd; // 使用原始套接字创建ICMPv4套接字sockfd = socket(AF_INET, SOCK_RA

2017-02-21 13:08:46 1747

原创 套接字选项

#include <sys/socket.h>int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);对于T

2017-02-14 16:16:17 3078

原创 广播与多播

多播支持在IPv4中是可选的,在IPv6中却是必需的。IPv6不支持广播。使用广播的任何IPv4应用程序一旦移植到IPv6就必须改用多播重新编写。广播和多播要求用于UDP或原始IP,它们不能用于TCP。广播广播的用途之一是在本地子网定位一个服务器主机,前提是已知或认定这个服务器主机位于本地子网,但是不知道它的单播IP地址。这种操作也称为资源发现。 源自Berkeley的内核不允

2017-02-10 11:47:42 1947

原创 套接字I/O

阻塞和非阻塞套接字套接字的默认状态是阻塞的,可能阻塞的套接字调用可分为以下四类:输入操作,包括read、readv、recv、recvfrom和recvmsg共5个函数。 阻塞的TCP套接字:如果该套接字接收缓冲区中没有数据可读,进程将被投入睡眠,直到有一些数据(单个字节或一个TCP分节等)到达。阻塞的UDP套接字:如果该套接字接收缓冲区为空,对它调用输入函数的进程将被投入睡眠,直到有UDP数

2017-01-23 19:06:39 521

原创 UDP客户/服务器

一般来说,大多数TCP服务器是并发的,而大多数UDP服务器是迭代的(单个进程/线程就得处理所有客户)。UDP套接字调用connect(不同于

2017-01-19 17:12:56 3664

原创 TCP客户/服务器

《UNIX Network Programming Volume1: The Socket Networking API, Third Edition》 W.Richard Stevens / Bill Fenner / Andrew M.Rudoff字节排序函数#include <netinet/in.h>uint16_t htons(uint16_t host16bitvalue);

2017-01-16 15:25:52 4364

翻译 同步机制——“读写锁“的实现

在《Multithreading Applications in Win32》(Jim Beveridge & Robert Wiener)一书中提及读写锁的实现时,作者阐述尝试了网络上近乎全部的实现发现均存在问题,后来参考一篇已发表的文章《Concurrent Control with “Readers” and “Writers”》使用Win32基础同步机制实现了读写锁。由于Windows自Vi

2017-01-15 19:18:18 2147

原创 多字节整数字节序(小端/大端)

>《UNIX Network Programming Volume1: The Socket Networking API, Third Edition》>W.Richard Stevens / Bill Fenner / Andrew M.Rudoff考虑内存中存储一个16位整数,它由2个字节组成,因此存储这两个字节有两种方法:- **小端字节序**——将低序字节存储在起始地址;- **大端字

2017-01-13 17:07:18 3328

原创 TCP和UDP概述

《UNIX Network Programming Volume1: The Socket Networking API, Third Edition》 W.Richard Stevens / Bill Fenner / Andrew M.RudoffTCP和UDP概述 多字节整数字节序(小端/大端) 套接字I/O 套接字选项 TCP客户/服务器 UDP客户/服务器 广播与多播 I

2017-01-12 16:56:11 1232

原创 POSIX针对pthread线程的调整

《POSIX多线程程序设计》——David R.ButenPthreads改变了很多POSIX进程函数的含义。fork应尽量避免在一个多线程的程序中使用fork。。 当多线程进程调用fork创造子进程时,Pthreads指定只有那个调用fork的线程在子进程内存在。子进程拥有与父进程相同的互斥量、线程私有数据键等。fork调用不会影响互斥量的状态。如果它在父进程中被锁住,则它在子进程中被锁!ex

2017-01-10 11:33:23 877

原创 pthread线程

主线程是特殊的当c语言运行时,首先执行main函数,这个特殊的执行流被称为“主线程”。主线程的特殊性在于Pthreads在main函数返回阶段保留了传统UNIX进程行为。即当进程结束时,所有线程、状态和它们的工作结果都会简单的“蒸发”——没有理由要清理什么。在大多数系统中,主线程运行在默认进程堆栈上,该堆栈可以增长到足够的尺寸;而在某些系统中,普通线程的堆栈空间是受限的,如果线程堆栈溢出,则程序会因

2017-01-05 14:04:40 510

原创 同步和异步例子(linux)

同步alarm.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>int main(int argc, char *argv[]) { int seconds; char line[128]; char message[64]; while (1) {

2017-01-04 20:08:55 2702 1

原创 vim常用命令

set nu 或set number // 显示行号; set nonu 或set nonumber // 关闭显示行号; w !sudo tee % // 在没有写权限的用户下编辑后保存命令 相关错误提示:E45: ‘readonly’ option is set (add ! to override):%s/vivian/sky/或g/vivian/s//sky/ // 替换每一行的第一个

2017-01-04 19:45:50 559

原创 线程术语

可重入函数与线程安全函数一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。 可重入与线程安全并不等同。一般说来,可重入的函数一定是线程安全的,但反过来不一定成立。如果一个函数中用到了全局或静态变量,那么它不是线程安全的,也不是可重入的; 如果我们对它加以改进,在访问全局或静态变量时使用互斥量或信号量等方式加锁,则可以使它变成线程安全的,但此时它仍然是不可重入的,

2017-01-04 15:30:09 417

原创 HTTP和URL协议

HTTP深入浅出 http请求URL中“#” “?” &“”号的作用 关于URL编码在线HTTP POST/GET接口测试工具 - aTool在线工具

2016-12-28 16:57:20 549

原创 Win32——_beginthread()、CreateThread()、_beginthreadex()

《Win32多线程程序设计》–Jim Beveridge & Robert WienerC runtime library参考:C Runtime Library单线程版本: 当 C runtime library 于 20 世纪 70 年代产生出来时,内存容量还很小,多任务是个新奇观念,更别提什么多线程了。C runtime library 使用数个全局变量和静态变量,这可能在多线程程序中彼此

2016-12-28 11:40:11 783

原创 Notepad++正则表达式替换规则

例子: 192.168.2.11 –> [192.168.2.11] 192.168.2.12 –> [192.168.2.12] 192.168.2.123 –> [192.168.2.123] 查找目标: 192.168.2.([0-9]{2,3}) –> [192.168.2.\1]

2016-12-27 11:13:23 2475

原创 c运算符优先级(*/++)、const、二维数组、指针

一元运算符*和++具有相等的优先级,结合使用时是从右向左进行的。 total += *start++ // 先把指针指向的数据加到total上,再使指针自增1 total += (*start)++ // 先把指针指向的数据加到total上,再使指针指向的数据自增1 total += *++start //指针先增加1,再把指针指向的数据加到total上指向常量的指针不能用于修改数值 dou

2016-12-22 19:56:25 1364 1

原创 Win32线程——同步机制

《Win32多线程程序设计》–Jim Beveridge & Robert Wiener同步(synchronous):当程序1调用程序2时,程序1 停下不动,直到程序2完成回到程序1来,程序1才继续下去;SendMessage() 根本就像是“直接调用窗口之窗口函数”,除非等该窗口函数结束,是不会回到原调用点的,所以它是同步行为。异步(asynchronous):如果程序1调用程序2后,径自继

2016-12-17 16:55:16 3343

原创 Win32线程——优先权

《Win32多线程程序设计》–Jim Beveridge & Robert WienerWin32 优先权是以数值表现的,并以进程的“优先权类别(priority class)”、线程的“优先权层级 (priority level)”和操作系统当时采用的“动态提升(Dynamic Boost)”作为计算基准。 所有因素放在一起,最后获得一个 0~31 的数值。拥有最高优先权之线程,即为下一个将执行起

2016-12-16 18:11:30 1066

原创 Win32线程——在某个线程内终止另一个正在运行的线程(1)

《Win32多线程程序设计》–Jim Beveridge & Robert Wiener 对于多线程程序,如果用户企图结束程序(主线程)时,子线程尚未完成工作,怎么办? 结束一个线程,听起来好容易,但是结束程序必须按次序进行,以避免发生 race conditions。让程序依次序进行是非常重要的,特别是在程序要结束之前。结束一个程序就好像拆除一栋建筑物一样,在你以推土机轧平它之前,你

2016-12-16 17:35:57 5925

原创 Win32线程——等待另一个线程结束

《Win32多线程程序设计》–Jim Beveridge & Robert Wiener “等待某个什么东西”是线程常常需要做的事。等待是线程的“必要之恶”。 如果你没有等待线程结束就莽撞地结束程序,线程会被系统强制结束掉——在它完成它的工作之前。 由于让线程停工是操作系统的责任,很合理地我们会认为操作系统也有责任让其他线程知道某个线程停工了。Sleep()这个函数要求操作系统中止

2016-12-14 21:14:12 5425 3

原创 Win32线程——在某个线程内终止另一个正在运行的线程(2)(Event对象)

《Win32多线程程序设计》 Win32 中最具弹性的同步机制就属 events 对象了。 Event 对象是一种核心对象,它的唯一目的就是成为激发状态或未激发状态。这两种状态全由程序来控制,不会成为Wait…() 函数的副作用。 Event 对象之所以有大用途,正是因为它们的状态完全在你掌控之下。Mutexes 和 sem aphores 就不一样了,它们的状态会因为诸如WaitForS

2016-12-14 00:37:06 2755

原创 MFC隐藏窗口及图标

隐藏窗口声明:BOOL CWnd::SetWindowPos(const CWnd* pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags); 示例:SetWindowPos(&CWnd::wndNoTopMost, 0, 0, 0, 0, SWP_HIDEWINDOW); HWND_NOTOPMOST:值为-2,将窗口置于所有非顶

2016-12-13 23:49:56 2607

原创 Windows定时器

Win32范例1: 在当前进程内创建一个延时1s的定时器,定时器ID为SetTimer的返回值。使用GetMessage捕获WM_TIMER 消息。#include <stdio.h>#include <time.h>#include <Windows.h>int main(void) { UINT_PTR timeID = SetTimer(NULL, 0, 1000, NULL

2016-12-13 19:35:19 544

原创 #pragma、条件编译预处理指令用法(Visual Studio)

只被编译一次#pragma once结构体对齐#pragma pack(1) (结构体中数据成员按1字节对齐)加载静态链接库#pragma comment(lib, "gdiplus") (使用gdi+,调用gdiplus.lib)忽略静态链接库(用于消除静态库冲突)#pragma comment(linker, "/NODEFAULTLIB:libcd.lib") (vs2005以上项目中调

2016-12-12 19:19:22 3180

原创 printf宽度控制和精度控制

参考文章:printf “%.*s” printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个*代替那个常量,然后在后面提供变量给*。一般形式: printf("格式控制字符串",输出列表); 格式控制字符串形式: [标志][输出最小宽度][.精度][长度][类型]类型d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出

2016-12-09 13:52:01 33154 1

原创 文件流中读行的正确使用(fgets、feof、ferror)

char *fgets(char *buf, int bufsize, FILE *stream);功能fgets函数用来从stream所指文件中读入bufsize-1个字符放入buf为起始地址的空间内;如果在未读满bufsize-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,调用fgets函数时,最多只能读入bufsize-

2016-12-04 14:02:43 10428

原创 MFC回车键和Esc键默认退出程序的问题

PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当你需要在MFC之前处理某些消息时,常常要在这里添加代码.声明:virtual BOOL PreTranslateMessage(MSG* pMsg);拦截回车和ESC键:BOOL C***Dlg::PreTranslateMessage(MSG* pMsg

2016-11-29 10:09:50 558

原创 字符串:多字节与宽字节转换

头文件#include <stdlib.h> mbstowcs 多字节字符串转换为宽字符串 wcstombs 宽字符串转换为多字节字符串使用注意对于 mbstowcs 函数来说,它需要知道多字节的编码类型才能正确的将其转换成宽字节的 unicode,很可惜这个编码类型并没有体现在函数的参数列表里,而是隐含依赖全局的 locale 。更加不幸的是,全局 locale 默认没有使用系统当前语言,

2016-11-23 14:41:38 3702 2

原创 MFC xp style界面

方法1:.manifest文件相关介绍: 一分钟明白 VS manifest 原理 使用manifest实现XP风格界面 Application Manifests(微软官方介绍)XPStyle.manifest :<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-micro

2016-11-23 02:23:46 453

原创 MFC 文件夹对话框

浏览文件夹对话框 SHBrowseForFolder Displays a dialog box that enables the user to select a Shell folder. SHGetPathFromIDList Converts an item identifier list to a file system path. BOOL BrowseFolderContr

2016-11-21 22:31:54 448

转载 windows获取控制台窗口的句柄

全局声明: typedef HWND (WINAPI *PROCGETCONSOLEWINDOW)(); PROCGETCONSOLEWINDOW GetConsoleWindow; Main()中动态载入API函数GetConsoleWindow: HMODULE hKernel32 = GetModuleHandle(“kernel32”); GetConsoleWindow = (P

2016-11-02 12:27:38 3937

原创 Oracle

数据字典数据字典提供了数据库的一些系统信息。它是只读表和视图的集合,数据字典的所有者是sys用户。其信息是从数据文件中获取的,用户在上面只能执行查询操作,其维护和修改是系统自动完成的.数据字典基表:存储数据库的基本信息,普通用户不能访问数据字典的基表 数据字典视图:数据字典视图是基于数据字典基表所建立的视图,普通用户可以查询数据字典视图获取系统信息。表 表名 含义 user_tables

2016-09-20 18:15:12 351

原创 bfg.jar(清除 GIT commit 所有历史记录)

清除所有commit记录:BFG Repo-Cleaner(需要安装java SDK才能运行)详情:处理GitHub不允许上传大于100M文件问题

2016-09-01 23:56:06 3480

HTTP协议中英文_RFC2616&RFC1945

http协议标准文件,包含英文原版和中文翻译版。

2017-02-21

SQLiteExpertProfessional&SQLiteSpy&SQLiteStudio(附文档和源码)

查看sqlite数据库的工具:SQLiteExpertProfessional&SQLiteSpy(最简便)&SQLiteStudio(最强大),包含一个简单的数据库db文件,另外附上sqlite使用文档和官方源码。

2017-01-19

Concurrent Control with “Readers” and “Writers”

1971年在“Operating Systems”上发表的论文,讨论读写锁的实现算法

2017-01-15

基于 MFC 对话框的 Excel 辅助工具

说是 Excel 辅助工具,在编程技术上和 Excel 没什么关系,这个小工具是上篇文章"工作,因你而简化"中扩展而来,功能上更加完善,模仿 VS 2010 浅色风格对标题栏进行了重绘。 详情:http://blog.csdn.net/yss28/article/details/47903795

2015-08-24

青鸟消防辅助编程工具.exe

.exe文件,一个动态编译,一个静态编译版本,重绘了标题栏、按钮控件、组合框控件,详细介绍见此: http://blog.csdn.net/yss28/article/details/47903795

2015-08-23

一个非常简单的对话框程序

MFC 基于对话框的小程序,程序本身很简单,是自己的一个初学练手程序,功能与自己目前工作有关,无其他意义,详情见 http://blog.csdn.net/yss28/article/details/46493219

2015-08-22

基于Windows API与C++的俄罗斯方块

完全使用Windows API处理消息循环,包含两个C++类(公有继承关系)处理游戏的操作,有17个方块类型,5个游戏等级,游戏视图为一个非模态对话框,代码有1.2K行,此资源包括VS2012编译、运行正常的代码和一个“俄罗斯方块.exe”程序。详细介绍见: http://blog.csdn.net/yss28/article/details/45247209

2015-04-24

Dosbox + MASM各个版本 + 教程

win7 64位下没有debug调试工具 可以编译运行汇编语句 学习汇编很不方便 可以安装dosbox软件 它可以模拟出其他的dos环境 然后让编译器(MASM exe等)在dosbox中运行

2013-10-18

dos命令大全

dos命令文档,不是简单的收集命令,而是使用dos进行详细的操作,处理一定的问题,包含详细的步骤

2013-07-08

无忧隐藏9.29.

窗口、文件、进程隐藏工具——无忧隐藏9.29.最新版含破解补丁].HideWizard.9.2

2013-04-07

空空如也

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

TA关注的人

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