自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 最后一篇文章

CSDN因为某些细节个人不太满意,,这次要求绑定手机,因为手机收到的广告和推销什么的很多,所以觉得网络上面对于用户信息的管理是极不负责任的,关键个人信息,我有权不给,此地放弃。

2017-04-18 10:55:12 449 1

原创 如何编写一个uefi shell app,带命令行。

配置: win8.1 x64 + VS2013 + UDK2015 在c:\MyWorkSpace\ShellPkg\Application\ShellCTestApp下面,已经带有样例: ShellCTestApp.c ShellCTestApp.inf 1,将ShellCTestApp.c中的函数体中加一句Print(L”modified\n”);表示是我们修改的版本。 2,在c

2017-03-14 08:48:15 3980

原创 uefi programming-基本概念

Protocol:由规范(Uefi Spec)所定义的,以GUID命名的,一组相关联的[函数和成员变量]–被封装在struct中。 //protocol==GUID+Protocol_Interface。 //看一个源码就清楚了:MdePkg\Include\Protocol\LoadFile.h。Handle:包含一个或多个Protocol的集合。 Handle Database:在(PI)

2017-03-08 16:55:57 746

翻译 如何编译第一个uefi程序【转载】

配置: win8.1 x64 + VS2013 + UDK2015 这里略过初步的EDK源码编译配置过程,在下载的UDK2015中有UDK2015-ReleaseNotes-MyWorkSpace.txt教如何搭建环境,照做完全没有问题。下面参考了某份教程,但找不到源头了,还是注明转载。1,按EDK推荐,相应的子模块放到相应的文件夹中,所以新建文件夹hello,里面放入hello.c和hell

2017-03-06 11:46:48 6134 1

原创 c++ POD

POD stands for Plain Old Data,个人实践总结,表现得如同C-struct和表示得如同RAW_data,纯粹的数据;#include<iostream>#include<cstdio>class Cat{public: int v1; int v2; //生命周期不由构造函数和析构函数控制,因此:Cat(),不可以有;~Cat(),不可以有

2017-02-28 09:42:48 448

原创 vs2015编译zeroMQ和应用

此库一直在发展中,新版越来越强大了,好像没什么朋友发布具体的上手过程,顺便写个:libzmq是c++语言开发的,正式版本在这里: https://github.com/zeromq/libzmq/releases 到这篇文件发布为止,正式稳定版是4.2.21,按照给出的链接下载zeromq-4.2.2.zip文件。 2,解压到D:\zeromq文件夹中, 3,用vs2015打开工程文件:”D

2017-02-21 14:13:25 7735 1

原创 c++,在windows下调用子进程,并获得子进程的返回值。

win32 API真是相当复杂啊,为了调用一个函数,要读那么多参数,还要查阅相有关连的其它函数…以下是主进程代码 :#include<iostream>#include<windows.h>int main(int argc, char*argv[]){ STARTUPINFO si = { sizeof(STARTUPINFO) };//在产生子进程时,子进程的窗口相关信息

2017-02-16 17:02:12 7455

原创 c++ type traits 2

另一种type traits方法:#include<iostream>#include<typeinfo>using namespace std;template<typename T>struct CharTraits{ typedef T value;};template<>struct CharTraits<char>{ typedef char value;}

2017-02-14 16:39:42 288

原创 c++ enable shared from this

是一种允许在对象内部,得到(shared_ptr自身)的方法。有几点需要注意:对于: class MyClass :public enable_shared_from_this< MyClass>{……}; 总结: 1,不可以在MyClass的构造函数中使用shared_from_this(),因为父类的弱针指成员还没有被初始化。 2,对象直接在栈上或堆上构建,也是不能使用shared_fr

2017-02-13 17:28:43 830

原创 c++ weak ptr解除指针循环引用。

看着简单,避免眼高手低,还是亲自理解一下:#include<iostream>#include<memory>using namespace std;class Point{public: int value; shared_ptr<Point> next; weak_ptr<Point> weak_Next; Point(int v):value(v){}

2017-02-13 10:33:21 734

原创 c++版 宽窄字符 转换方法

c++的locale不同于c的locale,c++的locale是个对象,这个对象又由许多叫facet对象组成,每个facet对象负责处理字符的某个方面 根据国际化的要求。比如下面这个facet: ctype< charT> 就可以处理宽窄字符转换:#include<locale>#include<string>std::wstring toWstring(std::string str)

2017-02-12 16:07:41 2503 1

转载 C++ SFINAE,替代失败不是错误

本文, 引用http://blog.csdn.net/godcupid/article/details/50420925 引用http://blog.csdn.net/freeelinux/article/details/53429009 对以上原作者表示感谢。SFINAE:Substitution Failure Is Not An Error,替代失败不是错误。个人总结: 在调用某个

2017-02-12 11:19:17 636

原创 c++ Policy-based design

基于Policy和基于traits都是一样的,只是感觉Policy倾向于行为提取,traits倾向于类型提取。好像还有一种名词:Aspect-oriented programming,不过感觉都有相同的意义。举个实例:计算加减乘除,常规方法是定义一个抽像计算的基类,然后派生出各种具体计算类…就不多说了。 下面使用Policy方法,实现一把:#include<iostream>template<t

2017-02-10 17:29:42 1311

原创 c++双向链表构成的队列

也可以看成循环队列的。需要仔细,重点是插入与弹出,结合前篇的绘图,总结逻辑是: 1先外部元素建立连接 2后内部元素改变连接 3改变内部元素连接时,留意前驱或后驱是否为空时的特例。 以下是自定义实现://circularqueue.h#ifdef _MSC_VER#pragma once#endif // _MSC_VER#ifndef CIRCULAR_QUEUE_h_H_#defin

2017-02-07 09:58:54 927

原创 c++双向链表

难点是插入与删除元素的方法,一边学习一边画图:先是插入元素方法, 1,首端插入: 2,中端插入: 3,尾端插入: 然后是删除元素的方法, a,首端删除: b,中端删除: c,尾端删除:

2017-02-03 13:28:10 505

原创 c++单向链表-数据结构

单向链表看着简单,实现起来还是需要很仔细,指向的元素需要想清楚,内存需要能正确释放,代码要讲究可读性,试了一下午,以下是自定义的实现://list.h#ifndef LIST_H_H_#define LIST_H_H_#include<cstdio>#include<cstdlib>#include<cassert>/** 节点中的具体的数据类型 */typedef int DataTyp

2017-02-02 20:52:01 355

原创 windows-event-进程间通信2

这是第2种方式,追踪boost/asio源码找到的一种线索,使用事件通知://server.cpp#include <windows.h> #include <iostream> #include <string> using namespace std;int main(){ HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE,

2017-01-29 16:08:28 3676

原创 windows-pipe-进程间通信1

稍微研究了一下windows各种进程通信,要求复杂度小、高效率的、双向的、不跨计算机的(不涉及网络的),只专注本地进程通信,总结出2种方式: 第一种:windows named pipe windows pipe可以实现双向通信,一个pipe就能实现,如果涉及阻塞、同步异步、锁…这带来了复杂度提升,因此觉得一个pipe只要专注单向传输就好了,如果要涉及双向传输,使用2个pipe。以下是一种单向传

2017-01-29 14:34:18 4418

原创 一份 c++的DoxyGen 的注释模板

看了一些资源,以下是总结出的一份模板: 在最后附效果。////////////////////////////////////////////////////////////////////////////////// You should have received a copy of the GNU General Public License /// along w

2017-01-25 15:14:29 5115 1

原创 冒泡排序

一列数字,通过比较互相交换,让最大的值排到最后,需要排序的数组长度减一;递归;#include<iostream>#include<vector>using namespace std;void bSort(int a[], int length){ for (int pos = length-1; pos >0; pos--)//不断减小数组长度; { fo

2017-01-24 16:32:16 223

原创 c++插入排序

直接插入排序:#ifdef WIN32#define _CRT_SECURE_NO_WARNINGS#endif // WIN32#include<iostream>using namespace std;int main(){ int a[10] = { 12,88,45,72,3,15,7,66,92,31 }; for (int watch = 1; watch <

2017-01-24 09:57:48 272

原创 c++ 责任链 设计模式

可以看作GUI框架处理事件的原型,例如点击按钮事件,button(window),先处理;如果事件没有得到处理,再上溯给父panel(window)去处理;如果事件没有得到处理,再上溯给父frame(window)去处理;如果事件没有得到处理,最后交给APP实例处理。#include<iostream>using std::cout;using std::endl;class Handle{

2017-01-23 14:59:25 298

原创 c++ FlyWeight 设计模式

个人觉得:一个单例模式的工厂,永远只维护一个类的实例,谁要访问实例,工厂就返回这个实例,不会有副本。FlyWeight模式类似,一堆实例工厂,其中,每个实例都是独一无二的,且没有副本(因此隐含了工厂来管理对象的生命周期)。 参考的网络例子太多没注意内存泄漏,本人都作了完善。 如下:#include<iostream>#include<string>#include<vector>usi

2017-01-23 11:47:09 547

原创 c++ command 命令模式

形象生动的讲,就是个苦力模式:一个老板,三个领导,还有一个苦工。如下:#include<iostream>#include<vector>using std::cout;using std::endl;class Leader;class Boss{ std::vector<Leader*> team;public: void addHelper(Leader* leade

2017-01-22 14:53:12 499

原创 c++ visitor 设计模式

关于访问者模式,语言表达总是太绕,不如一个具体的实现:#include<iostream>#include<string>#include<chrono>#include<vector>using std::cout;using std::endl;//前向声明,访问者class Visitor;//被访问的抽象类,只有一个接口,用来接受访问者class Object{public

2017-01-21 19:42:55 1381

原创 二维数组的参数传递

#include<iostream>//第1种形式:void try1(int(*p)[2][6]){ for (int i = 0; i < 2; i++) { for (int j = 0; j < 6; j++) { std::cout << *(*(*p + i) + j); } st

2017-01-20 10:34:59 571

原创 c++ std::bind用法小结。

有些新东西,虽然不怎么使用这一套,但经常碰到,还是要了解一下。 小小试验,总结与分享:#include<functional>#include<iostream>using namespace std;class Cat{public: Cat() { //001使用内部绑定; std::bind(&Cat::cry, this)();

2016-04-28 14:57:50 4532

原创 wxListCtrl简单使用

核心代码:Simple::Simple(const wxString& title) :wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(450,400)){ wxPanel* panel = new wxPanel(this, wxID_ANY); //wxListCtrl* listCtrl = new wxLis

2016-04-19 16:52:59 1481

原创 介绍一个类型安全的回调库:libsigc++

类似于QT的信号与槽,可以一对一的绑定,也可以一对多多的绑定,很方便: 最初是在GTKMM官网发现的,使用c++语言,windows下也可以使用。 http://www.gtkmm.org/en/download.html下面放出2个例子 例一:绑定成员函数#include <iostream>#include <sigc++/sigc++.h>class Cat{public:

2016-04-18 15:21:40 1478

翻译 Qt网络与通信-UDP

实现UDP通信: 1,客户端只要声明一个QUdpSocket的实例,便开可开始发送数据。 类似: udpSock->writeDatagram(msg.toLatin1(),msg.length(),QHostAddress::LocalHost,port);2,服务端先要绑定端口,然后才能接收数据: udpSock=new QUdpSocket(this); udpSock->bind(

2016-04-10 19:12:38 315

原创 自定义visual studio的通用debug函数

这篇文章扩展以前的 http://blog.csdn.net/u012442719/article/details/50827771在unicode模式下,如何同时接受宽字符和窄字符,并且接受不同变量的debug输出:#include<windows.h>#include<iostream>#include<string>#include<cassert>//first;template<

2016-04-08 15:24:48 403

转载 一个基本的wxWidgets程序

配置:win10_th2+msvc2013+wxWidgets3.1.0.#include<wx/wx.h>class MyApp : public wxApp{public: virtual bool OnInit();};class MyFrame : public wxFrame{public: MyFrame(const wxString& title, const

2016-04-08 10:30:57 352

转载 stl-thread-003

以package线程包,封装函数的方式,使一个函数通常(但不一定)运行于某一分离线程中:#include<thread>#include<future>#include<iostream>using std::cout;using std::endl;double calc(double x, double y){ return x + y;}int main(){ s

2016-04-06 14:19:51 266

转载 stl-thread-002

第一篇讲的是高级线程函数async(); 第二篇,这篇讲低级线程函数thread(),和它的promise-结果收集器。#include<iostream>#include<thread>#include<future>#include<string>#include<exception>#include<stdexcept>#include<functional>#include<

2016-04-06 14:14:56 272

转载 stl-thread-001

介绍c++11引入的标准线程类thread,属于入门系列。 这是第一篇,转自c++标准库:开2个子线程运行,并取得结果;#include<future>#include<thread>#include<iostream>#include<random>#include<chrono>#include<exception>using std::cout;using std::endl;

2016-04-06 14:04:40 470

翻译 005 ZeroMQ REQ-<ROUTER-Dealer>-REP代理应答与请求

框架: 优点是,如果客户端是同型的,服务端也是同型的,都可以动态加入或退出。 但消息只实现一半路由,要完全路由,参考上一篇文章。 内部消息传递原理: 实现代码: client.cpp:#include<zmq.h>#include<iostream>#include<thread>#include<chrono>using std::endl;using std::cout;

2016-04-04 16:06:15 2102 1

翻译 005 ZeroMQ REQ-<ROUTER-ROUTER>-REQ 路由模式

框架: 代码放在最后。 实践,为了便于理解,没有使用多线程,tcp取代ipc通信,只加入了一个客户端和一个工人: 消息路由原理: client.cpp#include<zmq.h>#include<iostream>using std::endl;using std::cout;int main(){ void* pContext = zmq_ctx_new(); v

2016-04-04 15:00:45 3337

翻译 004 ZeroMQ <PUB XSUB-XPUB SUB>模式

这篇文章是第2篇的扩展 框架: 提供中间代码(XSUB-proxy-XSUB)。前、后端的代码可以参考第2篇文章,只是连接方式改成了connect而不是bind,所有要bind的endpoint都在中间代理中。#include<zmq.h>#include<iostream>using std::endl;using std::cout;int main(){ void* pCo

2016-04-03 22:12:41 5255

翻译 003 ZeroMQ PUSH and POLL

原理:taskVent分发任务,worker工作,collect收集结果 框架: 实践part1: 实践part2: 以下是代码: code:taskvent.cpp#include<zmq.h>#include<iostream>#include<thread>#include<chrono>using std::cout;using std::endl;int main()

2016-04-03 11:18:42 1089

翻译 002 ZeroMQ PUB and SUB

定义框架: 实现: 服务端wuserver.cpp#include<zmq.h>#include<thread>#include<chrono>#include<iostream>using std::endl;using std::cout;int main(){ void* pContext = zmq_ctx_new(); void* pPubSocket =

2016-04-02 16:02:07 1666 1

winsocket api

包含winsocket 1.1和winsocket 2.2的api详细说明文档,pdf格式。

2017-02-21

空空如也

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

TA关注的人

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