自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (18)
  • 问答 (1)
  • 收藏
  • 关注

原创 ble HCI 流控机制

ble HCI 流控实现机制介绍

2022-06-17 17:52:52 866 1

原创 ble HCI 数据格式

文章目录一、H4 串口设置二、hci 数据类型1. cmda. OGFb. OCFc. Parameter Total Lengthd. Parameter2. acla. Handleb. PB flagc. BC flagd. Data total length3. scoa. Handleb. Packet_Status_Flagc. Data_Total_Length4. eventa. Event codeb. Parameter Total LengthParameter一、H4 串口设置

2022-03-16 16:25:21 7047

原创 ble 空口包格式

ble 空口包数据格式简介

2022-03-16 16:05:57 1567

原创 ble 简介

文章目录一、ble 概述二、状态机三、设备地址1. Public address2. Random addressa. Static addressb. Private addressi. Non-resolvable private addressii. Resolvable private address四、信道五、实现形态1. soc2. soc + mcu3. host/controller 分离六、协议栈1. Controllera. RF(RADIO)b. BB(BASEBAND)c. LMP(

2022-03-16 15:00:02 8301

原创 docker 常用命令

文章目录一、container二、Image一、containerdocker start mynginx # 开始容器docker stop mynginx # 关闭容器docker restart mynginx # 重启容器docker rm -f mynginx # 强制删除容器docker run -it --name mynginx -p 127.0.0.1:80:8080/tcp -v /data:/data --net=“bridge” nginx:latest /bin/b

2021-06-03 11:32:07 104

原创 django myDailyFresh share

文章目录一、create project二、create app三、create database tables四、create super user五、add apps dir to system path六、allowed hosts六、static files dir setting六、html files dir setting六、set local zone六、set mysql db一、create projectdjango-admin startproject mysite二、c

2021-05-27 17:32:28 392

原创 tcp socket 选项

文章目录一、SO_BROADCAST二、SO_ERROR三、SO_KEEPALIVE四、SO_RCVBUF/SO_SNDBUF五、SO_RCVLOWAT/SO_SNDLOWAT六、SO_RCVTIMEO/SO_SNDTIMEO七、SO_REUSEADDR八、TCP_MAXSEG九、TCP_NODELAY十、SO_LINGER一、SO_BROADCAST本选项开启或禁止进程发送广播消息的能力。只有数据报套接字支持广播,并且还必须是在支持广播消息的网络上(例如以太网、令牌环网等)。如果目的地址是一个广播地

2021-05-25 18:00:21 544

原创 tcp 粘包

文章目录一、TCP 长连接和短连接二、基于消息和基于流传输三、粘包原因四、粘包处理一、TCP 长连接和短连接长连接: Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收短连接: Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个Client连接一个Server二、基于消息和基于流传输UDP基于消息传输,接收端的skbuff(套接字缓冲区)采用了链式结构来记录每一个到达的U

2021-05-25 17:49:16 110

原创 tcp/ip 协议介绍

文章目录一、tcp/ip 四层协议模型1. 物理层2. 数据链路层3. 网络层4. 传输层5. 应用层二、tcp 三次握手1. 三次握手流程2. 为何需要三次握手三、tcp 四次挥手1. 四次挥手流程2. 为何握手需要三次,而挥手需要四次3. 半连接,半打开,半关闭4. 四次挥手中为什么 TIME_WAIT 状态后还需要再等 2MSL后才能返回到 CLOSED 状态四、tcp 滑动窗口1. 窗口类型2. 滑动窗口原理3. 滑动窗口发送数据包4. 滑动窗口接收数据包5. 快速重传为什么是3次相同的ACK五、拥

2021-05-25 17:44:26 404 4

原创 windows 消息处理

文章目录一、windows 消息类型二、windows 消息队列三、windows 队列消息和非队列消息四、windows 消息优先级五、TranslateMessage()六、DispatchMessage()七、SendMessage()与PostMessage()的区别八、GetMessage()和PeekMessage()的区别九、消息死锁十、广播消息十一、Windows 消息系统组成十一、Windows 消息处理过程十二、Windows 消息处理代码示例一、windows 消息类型Win

2021-05-25 16:37:02 755

原创 SharedMemory 使用介绍

文章目录一、SharedMemory 共享内存简介二、SharedMemory 基本函数1. `int shmget(key_t key, size_t size, int shmflg);`2. `void *shmat(int shmid, const void *shmaddr, int shmflg);`3. `int shmdt(const void *shmaddr);`4. `int shmctl(int shmid, int cmd, struct shmid_ds *buf);`三、Sha

2021-05-25 16:09:59 2749

原创 MSGQueue 使用介绍

文章目录一、MSGQueue 消息队列简介二、MSGQueue 基本函数1. `key_t ftok(const char *pathname, int proj_id);`2. `int msgget(key_t key, int msgflg);`3. `int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);`4. `ssize_t msgrcv( int msqid, void *msgp, size_t msgsz, l

2021-05-25 16:01:08 1404 1

原创 FIFO 使用介绍

文章目录一、FIFO 简介二、FIFO 示例代码1. `int mkfifo( const char *pathname, mode_t mode);`一、FIFO 简介无名管道由于没有名字,因此只能用于亲缘关系的进程间通信命名管道提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,这样即使进程不存在亲缘关系,只要可以访问该路径就能够彼此通信FIFO 在文件系统中作为一个特殊的文件而存在,文件内容存放在内存中,当使用 FIFO 的进程退出后,FIFO 文件将继续保存在文件系统中以便

2021-05-25 15:51:46 756

原创 PIPE 使用介绍

文章目录一、pipe 简介二、pipe 代码示例一、pipe 简介pipe 也叫无名管道,有如下特点:半双工,同一时刻数据只能一端操作数据只能从一端写入,从另一端读出存储在内存缓冲区,不存储在文件系统中,只能用于父子进程通信数据一旦从管道中读走,就从管道中释放空间二、pipe 代码示例创建无名管道,其中 fd[0] 固定用于读管道,而 fd[1] 固定用于写管道一般文件 I/O 的函数都可以用来操作管道( lseek() 除外)默认情况当管道里没有数据时,另一个进程调用 read(

2021-05-25 15:47:01 2439

原创 signal 使用介绍

文章目录一、signal 信号简介二、signal 产生方式1. 用户操作终端2. 硬件异常3. 软件异常4. 调用 `kill()` 函数或者执行 `kill` 命令三、signal 基本函数1. `int kill(pid_t pid, int signum);`2. `int pause(void);`3. `signal(int signum, sighandler_t handler);`4. `int sigqueue(pid_t pid, int sig, const union sigval

2021-05-25 15:41:54 5174 1

原创 semaphore 使用介绍

文章目录一、semaphore 简介二、无名信号量基本函数1. `int sem_init(sem_t *sem, int pshared, unsigned int value);`2. `int sem_post(sem_t *sem);`3. `int sem_wait(sem_t *sem);`4. `int sem_trywait(sem_t *sem);`5. `int sem_getvalue(sem_t *sem, int *sval);`6. `int sem_destory(sem_t

2021-05-25 15:12:15 3353 1

原创 rwlock 使用介绍

文章目录一、rwlock 介绍二、rwlock 基本函数1. `int pthread_rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr);`2. `int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock );`3. `int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock);`4. `int pthread_rwloc

2021-05-24 17:26:06 741

原创 cond 使用介绍

文章目录一、cond 介绍二、cond 基本函数1. `int pthread_cond_init(pthread_cond_t *cv, const pthread_condattr_t *cattr);`2. `int pthread_cond_wait(pthread_cond_t *cv, pthread_mutex_t *mutex);`3. `int pthread_cond_signal(pthread_cond_t *cv);`4. `int pthread_cond_timedwait(p

2021-05-24 17:18:39 6415

原创 spinlock 使用介绍

文章目录一、spinlock 简介二、自旋锁与互斥锁的区别三、自旋锁的优缺点一、spinlock 简介自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,不断尝试获取锁,直到获取到锁才会退出循环二、自旋锁与互斥锁的区别自旋锁与互斥锁类似,它们都是为了解决对某项资源的互斥使用,在任何时刻最多只能有一个线程获得锁对于互斥锁,如果资源已经被占用,调用者将进入睡眠状态对于自旋锁,如果资源已经被占用,调用者就一直循环在那里,看是否自旋锁的保持者已经释

2021-05-24 17:09:31 3717

原创 mutex 使用介绍

文章目录一、mutex 基本函数1. `int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);`2. `int pthread_mutex_lock(pthread_mutex_t *mutex);`3. `int pthread_mutex_trylock(pthread_mutex_t *mutex);`4. `int pthread_mutex_unlock(pthread_mutex_

2021-05-24 17:02:22 2287 2

原创 pthread 线程基本函数

文章目录一、`int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);`二、`int pthread_join(pthread_t tid, void **thread_return);`三、`int pthread_detach(pthread_t tid);`四、`void pthread_exit(void *retval);`五、`int pthrea

2021-05-24 15:56:17 2439

原创 linux ln -s 链接

文章目录一、inode节点二、硬链接三、软链接四、创建软硬链接命令一、inode节点文件都有文件名与数据,这在 Linux 上被分成两个部分:文件数据块 (data block),是文件内容真正存储的地方元数据 (metadata),是文件的附加属性,如文件大小、创建时间、所有者,inode等信息在 Linux 中,inode 号即索引节点号才是文件的唯一标识而不是文件名,文件名仅是为了方便人们的记忆和使用,系统通过 inode 号寻找文件数据块,使用命令 mv 移动并重命名文件,其结果不影

2021-05-24 15:39:17 173

原创 linux 文件描述符

文章目录一、文件描述符介绍二、`int dup(int oldfd);`1. 复制文件描述符2. 文件描述符重定向三、`int dup2(int oldfd, int newfd);`一、文件描述符介绍每个进程都有一张文件描述符的表,程序运行起来后标准输入、标准输出、标准错误输出设备是默认打开的,对应的文件描述符 0、1、2 记录在表中在打开其他文件时,系统会返回该进程文件描述符表中最小可用的文件描述符,并将此文件描述符记录在表中Linux 中一个进程最多只能打开 NR_OPEN_DEFAULT(

2021-05-24 15:28:58 129

原创 linux I/O缓存类型

文章目录一、标准 I/O缓存类型二、全缓存 - 普通文件三、行缓存 - 标准输出四、不缓存 - 标准错误输出一、标准 I/O缓存类型I/O缓冲的目的是使用read和write时尽可能少的访问硬盘次数标准I/O提供了三种类型的缓冲:全缓存在填满缓冲区后才进行I/O操作。常规文件(如普通文本文件)通常是全缓冲的行缓存当在输入和输出中遇到换行符时进行I/O操作。标准输入和标准输出对应终端设备(如屏幕)时通常是行缓冲的不缓存每次输入和输出操作都进行I/O操作。标准错误输出通常是无缓冲的,这样

2021-05-24 15:03:47 138

原创 linux 进程介绍

文章目录一、进程基本结构二、进程状态切换1. 进程状态2. 进程状态切换三、进程退出四、等待进程退出五、僵尸进程1. 避免僵尸进程一2. 避免僵尸进程二3. 避免僵尸进程三六、孤儿进程一、进程基本结构(1)代码区:加载的是可执行文件代码段,其加载到内存中的位置由加载器完成(2)全局初始化数据区/静态数据区:存储于数据段(全局初始化,静态初始化数据)的数据的生存周期为整个程序运行过程(3)未初始化数据区:存储于BSS数据段的数据(全局未初始化,静态未初始化数据)的生存周期为整个程序运行过程(4)

2021-05-24 14:52:39 95

原创 C++11 (六) - 右值引用

文章目录一、左值和右值1. 左值2. 右值二、右值引用三、示例代码一、左值和右值1. 左值左值就是非临时的,有名字的,可以取地址的变量,可以在多条语句中使用2. 右值右值是指临时的对象,它们只在当前的语句中有效,包括函数返回的临时变量,常量值如 1,'a',true,lambda 表达式二、右值引用右值引用是 C++ 新标准中引入的新特性 , 主要用于避免使用临时对象构造和赋值新对象时的不必要拷贝,避免了临时对象分配,拷贝,释放的系统开销,提高了效率移动构造函数接受一个”右值引用”参数,可

2021-05-08 09:33:30 122

原创 C++11 (七) - 智能指针

文章目录一、智能指针的作用二、shared_ptr一、智能指针的作用由于 C++ 本身没有内存自动回收机制,程序员每次 new 出来的内存都要手动 delete。当忘记 delete,或者程序异常退出没来得及执行 delete 时,就会出现内存泄漏的问题。用智能指针便可以有效缓解这类问题,智能指针可以自动释放所指向的内存二、shared_ptr多个指针可以同时指向一个对象,共享对象的所有权,通过引用计数机制,当最后一个 shared_ptr 离开作用域时,内存才会自动释放#include &lt

2021-05-08 09:33:16 372

原创 C++11 (五) - default、delete

文章目录一、C++ 默认函数二、default三、delete一、C++ 默认函数C++中,若不显著写明,编译器会默认提供如下几个函数:构造函数析构函数拷贝构造函数拷贝赋值函数(operator=)移动构造函数C++11 为了增强对类默认函数的控制,从而让程序员更加精准地去控制默认版本的函数,引入了两种新特性:default: 显式缺省,告知编译器生成函数默认的缺省版本delete: 显式删除,告知编译器不生成函数默认的缺省版本二、default若我们在类中实现了上述函数之

2021-05-07 15:23:01 153

原创 C++11 (四) - override、final

文章目录一、C++ 继承的控制二、final1. 禁止类继承2. 禁止虚函数重载三、override一、C++ 继承的控制在 C++11 之前,一直没有控制继承的关键字。想要禁止一个类派生很麻烦,想要禁止派生类中重载某个虚函数也很麻烦。因此 C++ 11 添加了两个控制继承的关键字:final 禁止类继承、禁止虚函数重载override 显式声明为重载虚函数二、final1. 禁止类继承class B {/*..*/} final; class D: public B {}; /

2021-05-07 15:00:38 106

原创 C++11 (三) - std::function、std::bind、std::ref

文章目录一、std::bind二、std::function三、std::ref一、std::bindstd::bind 预先把一个可调用实体的某些参数绑定到已有的变量,然后产生一个新的可调用实体,可以直接赋给 std::function 对象std::bind 实际上是一种延迟计算的思想,将可调用对象保存起来,然后在需要的时候再调用,而且参数绑定支持占位符,std::placeholders::_1 代表这个位置将在函数调用时,被传入的第一个参数所替代#include <iostream&

2021-05-07 14:42:26 291

原创 C++11 (二) - lambda 表达式

文章目录一、lambda 表达式的作用二、lambda 表达式的定义三、lambda 表达式捕获1. 值捕获2. 引用捕获3. 隐式捕获四、示例代码一、lambda 表达式的作用匿名函数是一种可调用对象,拥有函数体,但没有函数名C++11 lambda 表达式是一个匿名函数,用它可以非常方便的表示一个函数对象,使得创建快速的、一次性的函数变得简单了。lambda 表达式有 “即用即扔” 的特点,很适合不需要重复调用且运用区域单一的情景(而不是去定义一个正式的函数)二、lambda 表达式的定义[

2021-05-07 14:21:51 110

原创 C++11 (一) - nullptr

文章目录一、C++98 中 0 和 NULL 的使用二、C++11 中 nullptr 的使用一、C++98 中 0 和 NULL 的使用C++98 中的0即表示整数字面值0,又表示指针的0值int x = 0; // 0 表示整数 0int *p = 0; // 0 表示普通指针 0C++98 规定 NULL 就是一个整型0值 #define NULL 0,可以拿来当合法的整型使用(只是看起来比较尴尬)int *q = NULL; // NULL表示指针 0,看起来没什么不合适in

2021-05-07 13:49:44 133

原创 c++ 设计模式 (三) - 工厂模式

文章目录一、为什么需要工厂模式二、简单工厂模式(Simple Factory)三、工厂方法模式(Factory Method)四、抽象工厂模式(Abstract Factory)五、简单工厂模式,工厂方法模式和抽象工厂模式异同一、为什么需要工厂模式平时我们创建一个对象大多数情况都是直接 new 一下不就有了吗?为什么非要按照工厂模式来创建对象呢?为方便理解,下面举个简单的例子,如下代码:public class Service { Dao dao = new JpaDao(); ❶

2021-05-07 11:19:00 304 1

原创 c++ 设计模式 (二) - 单例模式

文章目录单例模式实现方法一、饿汉模式二、懒汉模式三、懒汉模式,使用互斥锁解决多线程问题四、懒汉模式,使用双重检测互斥锁五、内部类方式单例模式实现方法通过单例模式保证系统中一个类只有一个实例,实现方法:设置构造函数,拷贝构造函数,赋值运算符函数均为私有函数定义一个该类的静态私有对象定义一个静态公有函数,用于创建和获取其静态私有对象一、饿汉模式饿了就立刻想到吃,类比到创建对象也是如此,当类一初始化,该对象就立刻会被实例化#include <stdio.h>#include &

2021-05-07 10:40:58 143

转载 c++ 设计模式 (一) - 总述

文章目录设计模式总结一、创建型模式二、结构型模式三、行为型模式设计模式总结按照目的设计模式可以分为创建型、结构型和行为型模式:一、创建型模式创建型模式用来创景对象:工厂方法模式(Factory Method Pattern)定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中抽象工厂模式(Abstract Factory Pattern)的意图是提供一个创建一系列相关或者相互依赖的接口,而无需指定它们具体的类建造者模式(Builder Pattern)的意图是将一个复杂的构建与其表

2021-05-07 10:16:48 77

原创 虚函数与构造函数和析构函数的关系

文章目录结论1. 构造函数不能声明为虚函数2. 析构函数设为虚函数的作用结论构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时必须声明为虚函数1. 构造函数不能声明为虚函数虚函数存储在虚函数表中,这个虚函数表是由对象的 __vfptr 成员变量指向的,如果构造函数是虚函数就需要通过虚函数表来调用,可是对象还没有实例化,还没有构造 __vfptr 成员变量,也就找不到虚函数表,无法找到并调用虚函数就无法生成具体的对象,无法生成具体对象就无法调用虚函数,陷入死锁2. 析构函数设为虚函数的

2021-05-07 10:01:57 344

原创 c++ 虚函数内存布局示意图

文章目录一、virtual 虚函数工作原理二、虚函数内存布局1.基类和派生类同名函数,不能被继承2.单继承,无虚函数覆盖,无新增虚函数i.基类的内存布局:ii.派生类的内存布局:3.单继承,有虚函数覆盖,无新增虚函数4.单继承,有虚函数覆盖,有新增虚函数5.多继承,没有虚函数覆盖,没有新增虚函数6.多继承,有虚函数覆盖,没有新增虚函数7.多继承,有虚函数覆盖,有新增虚函数三、虚函数表指针访问1.代码示例2.安全性i. 通过基类指针访问派生类新增的虚函数ii. 访问 non-public 的虚函数一、v

2021-05-06 18:11:36 1095

原创 一致性hash算法

一致性hash算法一致性哈希的基本概念一致性Hash算法的容错性和可扩展性a. 容错性b. 可扩展性Hash环的数据倾斜问题代码实现a. 不带虚拟节点b. 带虚拟节点本文参考博客: 一致性哈希(hash)算法一致性哈希的基本概念一致性Hash算法也是使用取模的方法,对数据和服务器节点均取hash值,只是普通取模法是对服务器的数量进行取模,而一致性Hash算法是对 232 取模,一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环,hash 值空间为 0 ~ 232-1(即哈希值是一个32位无符号整形

2021-05-06 17:14:27 185

原创 互斥量和信号量实现线程池

文章目录前言一、线程池模型代码前言在传统服务器结构中,常有一个总的监听线程监听新用户连接服务器,每当有一个新的用户进入,服务器就开启一个新的线程用户处理这个用户的数据包,这个线程只服务于这个用户,当用户与服务器端关闭连接以后,服务器端销毁这个线程然而频繁地开辟与销毁线程极大地占用了系统的资源,线程池基本思想就是在程序开始时就在内存中开辟一些线程,通过对多个任务重用已经存在的线程对象,降低了对线程对象创建和销毁的开销,服务器只需要将数据包交给线程池就可以了当有新的客户请求到达时,不是新创建一个线..

2020-12-25 14:41:44 245

原创 信号量实现生产者-消费者模型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、无名信号量常用函数二、生产者-消费者模型代码前言信号量广泛用于进程或线程间的同步和互斥,本质上是一个非负整数计数器。当信号量值大于 0 时,则可以访问公共资源,否则将阻塞访问PV 是对信号量的操作,一次 P 操作使信号量减1,一次 V 操作使信号量加1信号量一般分为两种:1:无名信号量,一般用于线程间和父子进程间同步或互斥,保存在内存中2:有名信号量,一般用于普通进程间同步或互斥,创建一个文件保存在文件中本文

2020-12-25 13:55:18 1163

IC卡参考资料.zip

压缩包内包含:IC卡调试工具与使用文档,以及IC卡和MFRC522模块的数据手册,介绍了基本组成原理和内部存储器的功能,以及各种命令交互的数据协议格式

2020-08-25

VC6.0目录设置

VC++6.0开发环境的目录设置,包括头文件目录,连接文件目录,dll目录的设置

2014-10-17

VC++调用Matlab

介绍和示例VC++与Matlab的多种混合调用方法:Matlab Engine 方式;直接调用Matlab 的C/C++数学函数库;用Matlab 自带的Matlab Compiler;使用matlab 的combuilde 工具;使用Matcom 工具

2014-10-17

静态链接库和动态链接库区别

介绍静态链接库和动态链接库作用和区别,制作静态库和动态库的方法,编程测试自己编写的两种库

2014-10-17

VS2010制作ActiveX控件

使用visual studio 2010开发环境,编写自定义ActiveX控件,示例如何添加属性,方法和事件

2014-10-17

VS2010配置OpenCV

Visual studio 2010开发环境下配置OpenCV

2014-10-17

Skin++破解版皮肤

破解版没有水印,提供多种皮肤文件,任何VC++界面均可使用

2014-10-17

Stm32FSMC接口驱动TFT彩屏

Stm32单片机通过FSMC接口驱动TFT彩屏液晶,封装液晶写字符,写汉字,画图,显示图片等操作

2014-10-17

Stm32驱动SDCard移植FATFS文件系统

SdCard移植FATFS文件系统,Stm32单片机可在SdCard中新建文件,新建文件夹,写入文件,读取文件,删除文件等各种文件操作

2014-10-17

Stm32移植UCOS-II操作系统

Stm32移植uCOS-II实时操作系统,创建多任务,实现PC机多线程效果

2014-10-17

Stm32 USB通信源代码

采用ST公司官方库开发,Stm32单片机Usb模块,能与USB HID设备进行发送和接收通信

2014-10-17

RC4算法VC++实现

使用Visual studio 2010开发环境,创建基于对话框应用程序,可以输入明文计算输出的密文,也可输入密文解密输出明文

2014-10-17

安卓蓝牙程序

在Eclipse开发环境下,开发Android系统蓝牙程序,实现手机与蓝牙设备通信

2014-10-17

ANFIS自适应模糊推理算法Matlab设计

介绍ANFIS算法基本原理,以及Matlab中如何应用举例

2014-10-17

VC定时关机

使用VC++6.0实现电脑的定时关机功能,界面显示模拟时钟

2013-12-16

VC操作USB游戏手柄

使用VC++实现USB游戏手柄的读写操作,可以显示按键状态,也可以让手柄震动

2013-12-16

Visual C++访问SQLite

实用Visual Studio 2010开发环境,可以重新编译运行

2013-11-30

Windows驱动开发

共分三十二章,详细介绍了Windows驱动开发的过程,同时书中附有源代码参考

2013-03-15

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

TA关注的人

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