软件
文章平均质量分 60
JXDZ
这个作者很懒,什么都没留下…
展开
-
Gitblit服务器搭建及Git使用
使用Gitblit搭建属于公司或自己的Git服务器,方便公司或自己程序代码及文档版本管理。环境:1、Win10 64位操作系统。2、Git-2.24.1.2-64-bit(git工具)3、TortoiseGit-2.7.0.0-64bit(git客户端)4、TortoiseGit-LanguagePack-2.7.0.0-64bit-zh_CN(git客户端汉化工具)5、jdk1.8.0(需要java环境,已安装请忽略)6、gitblit-1.8.0(git服务器工具)Git工具原创 2020-07-16 14:02:15 · 9620 阅读 · 1 评论 -
malloc函数详解
一、原型:extern void *malloc(unsigned int num_bytes);头文件:#include 或 #include (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free(转载 2014-11-27 09:25:29 · 436 阅读 · 0 评论 -
堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2014-11-27 09:26:43 · 397 阅读 · 0 评论 -
线性表的链式存储——链表(带源码)
一、为什么要采用链式存储(链表)存在的意义 为什么要采用链式存储: 与数组相比,链式存储(即链表)有如下两个优点: 1、数据元素的个数不确定,随时可能增减。采用固定大小的数组浪费空间。 2、方便排序,对于数组来说,每次插入一个元素都可能导致大量数据的移动。 有缺点吗: 与素族相比,链式存储有一个很大的缺点——读取数据! 对于读取其中指定第N个数据,链表必须从头结点用p =转载 2014-11-27 08:12:30 · 694 阅读 · 0 评论 -
MFC中如何使用OnTimer()函数实现定时控制
最近要实现一个类似于Sniffer的网络抓包程序, 其中需要一个按钮具有以下功能: 当按下按钮开始抓包, 再按一次就停止抓包. 开始考虑过用多进程实现, 但是这个比较麻烦. 其实这个功能可以用计时器实现. 介绍如下: 总的来说, 这里面一共需要三个函数:SetTimer, KillTimer()和OnTimer(). 先请看SetTimer这个API函数的原型UINT_原创 2014-11-24 10:22:42 · 9481 阅读 · 2 评论 -
MFC 调用 printf 输出
如下代码即可:#include #include void OpenConsole(){ AllocConsole(); HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); int hCrt = _open_osfhandle((long)handle,_O_TEXT); FILE * hf = _fdopen( hCrt转载 2014-12-25 15:26:03 · 408 阅读 · 0 评论 -
STARTUP.A51详解
STARTUP.A51 这个文件有什么用,有必要添加到工程吗? 如果不添加"startup.a51"文件,编译器就会自动加入一段初始化内存以及堆栈等的代码,这时的内存初始化部分你就无法去控制了,当然这在大部分情况下没什么关系。但是如果你想你的程序在复位后,内存里面的信息依然还保存着(所说的“热复位”),那么你就需要添加该启动文件,并且去里面修改内存初始化部分,不要初始化你需要保留的部分内存。转载 2014-12-30 14:50:31 · 4173 阅读 · 0 评论 -
CFileDialog的用法
CFileDialog 在MSDN中的函数原形CFileDialog::CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt = NULL,转载 2014-12-30 10:40:38 · 686 阅读 · 0 评论 -
理解一般指针和指向指针的指针
在说指向指针的指针之前,不得不说指向变量的指针。先看如下示例:1. 指向整型指针先看如下示例: 1 #include iostream> 2 using namespace std; 3 4 int main() 5 { 6 int a = 5; 7 int * p = &a; 8 cout "a = "转载 2015-03-17 13:39:37 · 374 阅读 · 0 评论 -
Modbus协议相关
目录(?)[+]1:Modbus协议简介 Modbus协议主要描述的是应用层的信息封装格式,处于OSI模式的第七层(应用层)。Modbus的物理层可以是RS-485、Ethernet II /802.3。Modbus协议栈的层次图: 本文主要介绍Modbus使用物理层是EIA/TIA-485的情况。Modbus主要内容转载 2015-03-18 15:27:46 · 1625 阅读 · 1 评论 -
MinGW - 安装和配置 / MinGW - Howto Install And Configure
MinGW在线安装程序下载地址:http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/mingw-get-inst-20101030/mingw-get-inst-20101030.exe/download一、运行环境 / EnvironmentWindo转载 2014-10-15 08:01:22 · 1146 阅读 · 0 评论 -
MFC radio button 设置默认选中
我们假设有两个RADIO控件:IDC_RADIO_SINGLE和IDC_RADIO_RANGE,我们的目的是默认选种IDC_RADIO_SINGLE控件。方法一:CheckRadioButton(IDC_RADIO_SINGLE,IDC_RADIO_RANGE,IDC_RADIO_SINGLE);方法二:将IDC_RADIO_SINGLE设置为有Group属性,IDC_RADIO_转载 2016-09-28 10:41:41 · 5791 阅读 · 0 评论 -
转载--IAR for STM8介绍、下载、安装与注册
转载原网址:https://blog.csdn.net/ybhuangfugui/article/details/52936636Ⅰ、写在前面本文讲述的内容是IAR for STM8(EWSTM8)的介绍、下载、安装与注册,其安装、注册过程和IAR for ARM类似,如果需要了解IAR for ARM相关的文章,可以到我博客,或微信公众号查看并下载。 IAR系列教程:http://blog.cs...转载 2018-03-28 09:58:01 · 1182 阅读 · 0 评论 -
结构体指针的定义和引用
指针变量非常灵活方便,可以指向任一类型的变量,若定义指针变量指向结构体类型变量,则可以通过指针来引用结构体类型变量。7.3.1 指向结构体类型变量的使用首先让我们定义结构体:struct stu{char name[20];long number;float score[4];} ;再定义指向结构体类型变量的指针变量:struct stu *p1, *p转载 2014-11-27 10:35:01 · 9020 阅读 · 0 评论 -
STM32的BootLoader 从SD卡更新固件
STM32的BootLoader 从SD卡更新固件by coolweedman2013-11-13 23:07:26目 录1. 前言2. 初识BootLoader2.1 百度百科的BootLoader2.2 BootLoader的简单理解2.3 BootLoader转载 2014-10-30 09:39:32 · 4110 阅读 · 3 评论 -
strstr的用法
/**strstr的用法:**/**strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。/**找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;/**如果未找到所搜索的字符串,则返回NULL。*/#include#include //strstr的头文件int main(void){ char *s="Golden Glo原创 2014-11-14 09:41:20 · 6306 阅读 · 0 评论 -
static的作用
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable转载 2014-07-16 16:25:07 · 433 阅读 · 0 评论 -
ucosii学习 事件标志组
FLAG-事件标志组管理,在UCOSII里我个人觉相对比较复杂,首先我们要有个大致的概念,就是FLAG事件组能用来干什么。以下只摘自一位网友博客上的,写的很好,转一下:gliethttp.cublog.cn(一)描述://对于flag--"事件组"的使用,可以用一个简单的例子做说明:// 比如,我现在用迅雷下载一部10集的连续剧,我打算10集全部下载完成之后,//才开始正式看,现在转载 2014-07-17 10:56:24 · 939 阅读 · 0 评论 -
ucos 中的 OS_PRIO_SELF
OSTaskDelReq(LED_TASK_Prio);OSTaskDelReq(LCD_TASK_Prio);请求将任务TaskLed和TaskLCD删除,记住,这里只是请求而不是删除。那么在任务TaskLed和TaskLCD执行的时候,将同时调用这个方法判断是否有任务删除请求,如果有那么将执行删除操作: if(OSTaskDelReq(OS_PRIO_SELF)==OS_TAS转载 2014-07-15 13:30:59 · 1162 阅读 · 0 评论 -
Ucos printf浮点数问题
1. 问题描述:当使用uocs printf(),sprintf()打印浮点数问题会出问题,但是裸机不会出问题我现在使用STM32跑UCOS,在使用sprintf打印float类型时候,不管是何值最后都是0.0,但是类型是int,short类型时没有问题。网上查到是任务堆栈8字节对齐就可以了。当没有操作系统时,系统堆栈是8字节对齐的,但是当使用ucos时,用户任务不一定是8原创 2014-08-07 14:34:10 · 1998 阅读 · 0 评论 -
存储字节对齐
什么是字节对齐,为什么要对齐?TragicJun 发表于 2006-9-18 9:41:00 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台转载 2014-08-20 10:45:33 · 660 阅读 · 0 评论 -
UC/OS-II学习笔记之消息队列使用
UC/OS-II学习笔记之消息队列使用对消息队列的学习理解有点难,对技术来说,一本好的书一般是原理和例子相结合的,可惜我找到的很少。书上说消息队列实际上是多个邮箱组成的数组,是一个列表。这个数组其实是个指针数组,里面每个指针可以指向不同类型的变量,通过传递一个个指针,我们可以做到传递指针所指向的一个个变量。(顺便复习下,一个邮箱只能传递一个指针,而队列可传递多个)。#include转载 2014-08-13 08:22:05 · 598 阅读 · 0 评论 -
父窗口与物主窗口
父窗口与物主窗口 在windows形形色色的窗口家族中,每个窗口也只能是三种基本类型之一:1. 重叠窗口(Overlapped)2. 弹出窗口(Pupup)3. 子窗口 (Child)当调用CWnd的Create/CreateEx或是CDialog的Create创建一个基于以上三种类型之一的窗口时,会要求同时指定Parent或pParentWn转载 2014-09-24 11:39:10 · 857 阅读 · 0 评论 -
网络端口及其详解
3大类: (1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。 (2)注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态转载 2014-09-04 08:44:49 · 1690 阅读 · 0 评论 -
VC6.0中控件及按钮的设置和使用
VC6.0中控件及按钮的设置和使用 VC学习笔记1:按钮的使能与禁止用ClassWizard的Member Variables为按钮定义变量,如:m_Button1;则m_Button1.EnableWindow(true); 使按钮处于允许状态m_Button1.EnableWindow(false); 使按钮被禁止,并变灰显示VC学习笔记转载 2014-09-28 14:00:27 · 2468 阅读 · 0 评论 -
实现自己的printf函数
在嵌入式开发中,常常会通过串口打印一些信息到PC终端,这就需要实现自己的printf函数,下面介绍打印函数print的实现。print.h[cpp] view plaincopyprint?#ifndef __PRINT_H_ #define __PRINT_H_ void print(char* fm转载 2014-11-10 15:56:27 · 710 阅读 · 0 评论 -
AfxExtractSubString函数的用法
今天无意在网上看到了一个比较不常用的MFC分割 字符串的函数AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,int iSubString, TCHAR chSep = '/n'),下面大概说一下它的用法: 参数说明: rString 得到的字符串;lpszFullString转载 2014-11-13 09:04:47 · 3399 阅读 · 0 评论 -
用AVRstudio+win_gcc生成二进制bin文件的方法
首先用avr-studio新建工程 并编译一遍 这时产生的文件 有.hex .lss .eep 等文件然后从“工程”->“配置选项”里的常规选项里 选择 使用外部的Makefile 然后选择 工程目录里的 default(如果你的工程输出文件夹是在这的话)里的Makefile然后 工程文件列表的 其他文件夹里就多了个Makefile双击Makefile编辑找到下面这行## Bu转载 2014-09-30 11:55:45 · 2392 阅读 · 0 评论 -
OSSemCreate初值为0和1的区别
当 pend请求发出的时候信号量的值减1,当post的时候信号量的值加1,信号量的值0跟1分别是用来同步跟互斥的,什么是同步,什么是互斥呢。。。假设你把信号量的值设为0,有A,B连个任务,当A发出pend请求的时候它发现此事的信号量值为0就把它减1然后挂起等待,等待到什么时候呢?等待任务B执行post操作把信号量的值加1然后唤醒进程A,然后两个进程同步并发执行。。。通俗点解释就是任务A执行到某个地转载 2014-07-15 13:54:05 · 2548 阅读 · 0 评论