自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

周翔的专栏

努力终有回报 https://github.com/ZhouBox

  • 博客(234)
  • 资源 (3)
  • 收藏
  • 关注

原创 MQTT协议与mosquitto的安装使用

MQTT (Message Queuing Telemetry Transport,消息队列遥测传输) 是一种标准化的发布/订阅消息传输协议。它是一种非常轻量级的协议,由于对带宽需求很低,从而成为了 M2M 通信或物联网应用的理想选择,现在已经成为这类场景最常见的协议之一。发布/订阅发布订阅模式比轮询的效率高很多。发布订阅是MQTT协议的核心,除了基于同一个消息代理的发布者和订阅者之外,还有一些其

2016-06-11 13:04:51 14202

原创 Spark--用Java开发微服务

这个说的Spark不是apache的Spark,这边说的是一个java的web application的框架。 官网:http://sparkjava.com/我做过一段时间的后台架构开发,使用的是微服务架构,主要使用了C++和PHP,大部分是PHP,C++只是用在API结构频率很高的地方,大部分的还是使用的PHP完成,使用C++是比较痛苦的,虽然借助与nginx,不需要解析HTTP协议,但是还是

2016-05-28 18:18:28 8916

原创 I2C总线协议

毕业设计中使用到了AT24C04器件,其是Ateml公司出品的,是一种低功耗CMOS串行EEPROM,其使用两线串行的总线和控制器进行通讯。其内部保存的数据在掉电的情况下可以有40年以上的有效期。其采用8 脚的DIP 封装,易于使用。简单来说,AT24C02是一款能在断电的情况下依然能够长时间存储数据的芯片。可以使用I2C协议总线与AT24C04进行交互。I2CI2C总线协议概论I2C总线是一种由数

2016-05-15 11:45:13 5215

原创 CC2530+74HC164矩阵键盘的设计

最近个大网盘都发出通知,用户的数据将会被清楚,其中就有金山快盘,上大学的时候用的金山,很多重要的资料在其中都保存了一份。现在将其全部下载了下来,然后发现了我的毕业论文,看了一遍,就有了这系类文章。今天将矩阵键盘的设计和编程。背景我的毕业设计是基于ZigBee网络的一个hub系统,协调器节点作为中枢,控制器和被控制器都连接在这个中枢上。控制器上使用矩阵键盘那就很平常了。CC2530的端口数比较小,这

2016-05-07 11:32:14 13230

原创 基于C++11的事件驱动框架

闲来无事,系统捣鼓C++。之前在signal-slot中提到事件循环,不过那个实在写的太挫。现在写了一个说的过去的。项目地址: https://github.com/ZhouBox/moos.git下面简单的说明下。 task完成实现对事件循环的一个任务的封装。 task_policy实现了各种task的策略。 task_queue是事件队列 looper是一个事件循环。 moos_

2016-04-06 21:05:20 12265 2

原创 使用内存快照来加速嵌入式系统的启动

用过virtual box和vm的人都知道一个休眠功能,关机之后,从新开始使用时,还会加载到休眠时的状态,这个很方便人们的使用,可以你开启你的工作环境需要很多的时间。这其中就使用到了内存快照的技术,将当前运行的虚拟机的内存状态保存到一个文件中,在启动的时候加载这个文件,然后就可以恢复到当前的现场,从而缩短了启动到可用的时间。在嵌入式系统的开发中,有很多场景对启动有很多要求,从上电到嵌入式应用显示需要

2016-04-06 20:58:49 3279

原创 C++11中多线程例子

C++11开始,自带线程相关的操作库。这里举个例子,以并发编程最经典的例子,生产者消费者的例子来示例在C++11使用标准库提高的线程库来进行并发编程。这里为了方便线程的使用,参考了android源码中对thread的封装。class Thread{public: Thread() : m_running(false) { } virtual ~Thr

2016-03-31 21:10:41 3528

原创 利用可变模板参数实现log功能

在以前的博文中,写过类似的课题。使用的是下面这种方法。// 递归出口template <typename T>void logOld(const T& t){ std::cout << t << '\n';}// 递归展开template <typename T, typename ... Args>void logOld(const T& t, const Args& ...

2016-03-19 17:10:21 4203 18

转载 前后端分离开发部署模式

身体出了点小毛病,这周基本在家养病,转文章一篇,以激励学习。在开始讨论这个话题之前我们先来认识一下传统的开发模式。一、传统开发模式相信很多做过Web开发童鞋应该都会经历这样一种开发模式,利用后端语言提供的模版引擎编写HTML/XML页面,比如:PHP 开发有 Smarty模板引擎Java web工程有jsp页面Python 各个Web框架都有各自的模板引擎NodeJS 的express你懂得

2016-03-12 09:50:44 19270

原创 Android系统input系统(1)

我们平台的build system移植于android,在android组件中,我们使用了Binder驱动,来实现进程间的交互,对于input系统,因为我们将android的java application framework换成了Qt,为了实现更好的图形渲染,主要是我们需要实现主从设备的显示屏公用,这样我们需要将从设备的surface传输到主设备的来实现不同设备间的surface合成,来实现主从

2016-03-05 19:47:40 4486

转载 android的surfaceflinger原理讲解

SurfaceFlinger是Android multimedia的一个部分,在Android的实现中它是一个service,提供系统范围内的surface composer功能,它能够将各种应用程序的2D、3D surface进行组合。在具体讲SurfaceFlinger之前,我们先来看一下有关显示方面的一些基础知识。 1、原理分析让我们首先看一下下面的屏幕简略图:每个应用程序可能对应着一个或者

2016-03-03 20:22:15 4520

原创 SBA--以服务为基础的架构

做过一段时间的后台架构,当时只是个小的公司用工具类app后台,并发小,业务简单,当时就快速简单的完成了,但是架构设计方面还是要好好学习的。2015年微服务架构和restful架构风格大行其道,一直想明白mircoservice和soa这两者到底有什么关系,然后在nginx官网发现了一本书,那么就来开始研究。 本篇从两者的共同开始讲起,SBA(Service-base architectures)

2016-03-01 09:10:21 7935 1

原创 基于nginx的TCP Proxy实现数据库读写分离

nginx很早就支持tcp proxy,但是一直不知道其使用,最近在nginx blog上看见了,一些实践者将其运用到数据库访问的负载均衡以及实现读写分离,来提高数据库的吞吐量,这里我不会讲具体的搭建实现,只是最一些理论上的设计猜想。直接上图 db集群,分为读db和写db,写db向读db同步数据。读db只能读,写db只能写,图中读写各一个,只是一个例子,实际需要根据业务来配置读写服务器比例。ngi

2016-02-26 15:33:20 4688 2

原创 python简单的绘制折现图

在做一些数据统计时,折现图能够看出变化的趋势,最近查内存泄漏,跑了一个晚上的数据,想查查,那么折现图能够给一个很直观的结构。我们使用pylab包来绘制图形。 我使用pip来管理python包sudo pip install pylab时间比较长,其会下载一些依赖的包。#!/usr/bin/pythonimport osimport matplotlib.pyplot as pltallFile

2016-02-25 20:01:06 3980 2

原创 C++中实现自动注册的工厂

很长时间没有跟新博客了,不是博主懒,是因为博主再帮研究生妹子弄硕士论文,定位方面的,被imu,行人航迹,激光匹配各种虐,不说了,都是泪。Factory模式,在工程中多用了创建派生类实例,内部一般使用switch-case根据不同的key去创建不同的派生类对象。switch(Key) { case A: return new A; case Bw: r

2016-01-23 13:44:54 7353 2

原创 使用nginx作为websocket的proxy server

WebSocketWebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择。其为HTML5的一部分,WebSocket相较于原来开发这类app的方法来说,其能使开发更加地简单。大部分现在的浏览器都支持WebSocket,比如Firefox,IE,Chrome,Safari,Opera,并且越来越多的服务器框架现在也同样支持WebSocket。在实际的生产环境中,要求多

2015-12-12 22:44:51 50070

翻译 express 4.x Api 中文版

喜大普奔,express 4.x api中文翻译第一版出来了,本来利用零碎的时间,花了一个多月的时间初步翻译完成,其中那面有很多笔误和专业知识错误,希望路过的各位指正。 github:https://github.com/ZhouBox/express_api_4.x_chinese.git

2015-12-04 21:02:30 7942 3

翻译 Express 4.x API---(2)

Requestreq对象代表了一个HTTP请求,其具有一些属性来保存请求中的一些数据,比如query string,parameters,body,HTTP headers等等。在本文档中,按照惯例,这个对象总是简称为req(http响应简称为res),但是它们实际的名字由这个回调方法在那么使用时的参数决定。 如下例子: app.get('/user/:id', function(req,

2015-11-23 11:31:49 2099 2

原创 基于nodejs+socket.io的chatrobot

最近在玩nodejs,可是想服务器和终端进行实时的数据交互,不想基于麻烦的long-polling,那么websocket是最佳的选择。 首先生成一个app。 我们新建一个servers文件夹,其中新建一个websocketserver文件夹,然后新建websocketserver.js 文件。"use strict";var websocketserver = {}websocketserv

2015-11-22 10:48:55 1740

原创 C++中怎么对野指针进行防护

一直从事C++底层库的开发,这里以监听模式来示例野指针的防护。底层通知上层,一种方式是,底层提供一个监听接口类,上层实现,然后注册下来,一般是有注册就有反注册,可以把下层安全压在上层使用者,在释放这个监听接口类之前进行反注册,这个就太不明智,那么我们就需要基于框架设计能防护野指针破坏,这里我们提供一个Guard机制。 `Guard`翻译过来的意思就是`警卫`,顾名思义就是用来防护的。先看其实现:c

2015-11-14 10:36:25 1810

翻译 Express 4.x API---(1)

最近在看express,可是在工作中根本用不到,那我就来翻译他们的文档,学习其文档,目前来说再好不过。 原文路径:http://expressjs.com/4x/api.html。这个只是部分,还有就是我不是web出生,有些专业词汇翻译很烂,还有就是我的英语也比较烂。 项目地址:https://git.oschina.net/zhouX/express-4.x-api-Chinese.gitex

2015-11-06 15:08:54 2202

原创 使用express创建自己第一个nodejs程序

前面对nodejs做了一些了解,这次我们来学习基于nodejs的非常流行的web框架express。 1. 第一步先安装express-generator express-generator可以安装express框架的工程模板生成一个项目。sudo npm install express-generator -g-g将这个模块安装到全局模块。 2. 新建一个app 使用express新建一个

2015-10-31 20:06:03 10442 1

翻译 Yotoc Project快速指南

原文路径:http://www.yoctoproject.org/docs/1.8/mega-manual/mega-manual.html1.欢迎欢迎来到Yocto项目!Yocto项目是一个专注于嵌入式Linux开发者的开源协作项目。在其他方面,Yocto项目使用一个基于OpenEmbedded项目的编译系统,这个编译系统使用BitBake工具来构造完整的linux系统镜像。BitBake和OE的

2015-10-19 14:47:45 6610 2

原创 docker和nodejs

去年买了一本docker书,本来想玩玩,可是了各种事情,一直闲着,最近在玩nodejs,突然想起可以把他们两个合一起玩。 我做过一段时间的APP后台开发,主要是RESTful API开发,主要使用C++和PHP开发,这期间还开源了一个FastCGI开发的框架ccfast。那么玩nodejs也是弄弄restful api开发。js的语法比较简单,20分钟差不多,然后看的nodejs入门那边书,其中讲

2015-10-17 20:58:15 3421

原创 基于boost.asio的echo服务器3

外包公司赶项目拿人当狗用,fuck!上次2是给list加了层锁,这里为每个io_service都分配一个list来减少竞争。class TestEchoServer2 : public boost::enable_shared_from_this<TestEchoServer2> , private boost::noncopyable{public: TestEchoS

2015-09-18 22:48:08 1159

原创 智能硬件和驾驶安全是否存在创业的兴奋点?

我在上海黄浦区工作,住的很远,每天都要在高架上堵车很久。今晚实在无聊,就在公交车上给自己来了个头脑风暴。我看见一个小伙手腕上带着一个运动手环,我在公交车上,旁边都是各种私家车,晚高峰比较赌,南京宝马车主的暂时性精神病。然后我从这些开始考虑智能硬件(这边特指手环),开始考虑手环对于车主行车安全是否可以有应用市场。开车忌讳疲劳驾驶,情绪驾驶。那么我的第一个问题是向医学方面的童鞋提出: 1.人在疲劳的状

2015-09-12 22:23:38 1347

原创 基于boost.asio的echo服务器2

在多处理器普及的现在,服务器程序会充分使用计算机多核的能力,比如nginx的master-worker多进程模式,那么今天我们就在1的基础上来通过多线程来使用多核。 进程和线程数不是越多越好,一般不要超过CPU核数的2倍。io_service是asio的事件循环,那么多线程就是几个io_service在各自的线程运行,这里我们使用io_service_pool类管理他们。#define CPUS

2015-09-12 12:11:16 1219

原创 基于boost.asio的ECHO服务器

基于boost.asio的ECHO服务器前沿从大二开始就对服务器开发,感兴趣,从Qt的QTcpServer和QTcpSocket到使用linux的epoll。后来有因为工作搞了一个nginx和php做app后台,后来想找个游戏服务器方面的工作,可是人家嫌你没开发经验,当时我毕业还没一年,能有多少锤子经验。问我熟悉boost.asio库吗,我说知道,没用过,然后就没有然后啦。老老实实做嵌入式开发。ec

2015-08-29 20:11:16 1964 1

原创 Android添加一个Native Service

Native Service其实就是一个linux守护进程,提供一些服务,不过由于android的进程间通讯使用了Binder机制,那么我们就需要按照android的规则来实现我们的Native Service。客户端在请求service的服务时使用了一个具有相同接口的Proxy类。native service这具体实现这个接口,所以android提供了IInterface类,其是”base cla

2015-08-07 17:09:59 8257 1

原创 C++怎么判断一个类存在指定的函数名的函数

C++怎么获得一个类存在指定的函数名的函数怎么在编译期获得一个类是否存在指定函数名的函数?#define HAS_MEMBER(member)\ template<typename T, typename... Args>struct has_member_##member\{\private:\ template<typename U> static auto Check(in

2015-08-05 12:28:30 7183

原创 在android系统中添加hello程序

在android系统中添加hello程序标签(空格分隔): android遵循android系统的原则,我们添加一个hello程序,来说明怎么添加一个可执行问价到android系统中。 我们在frameworks/bask下新建一个hello文件夹,在里面新建一个main.cpp和Android.mk文件。 main.cpp文件#include "utils/RefBase.h"#includ

2015-08-04 18:07:15 979

原创 Linux服务器编程(1)

Linux服务器编程(1)前言虽然有OSI七层标准协议,但是现在Internet上的实际协议是四层的TCP/IP协议族,从上倒下,分别是应用层,传输层,网络层和数据链路层。其是一个分层,多协议的通讯体系。每一层通过不同的协议完成不同的功能,上层使用下层提供的服务,如下图所示。 数据链路层数据链路层实现了网卡接口的驱动程序,来处理在数据在物理媒介的传输。不同的物理网络,比如以太网,令牌环,wlan,

2015-08-04 18:06:00 936

原创 android中的Settings

android中的Settings这个星期,妹子被安排学习android中Settings App的学习,其实我开发工作类似于android的framework的开发,对上层的UI不是很熟悉,可是没办法,硬着头皮上。 这个我看的android是4.0以上的,其系统实现的settings app是使用的header+fragment来实现的,就是程序启动的Activity中的那些项目是一个一个的he

2015-08-01 09:22:26 1409

原创 为什么智能家居只闻名不见影

为什么智能家居只闻名不见影对于智能家居这行我算不得老人,但是也不算个新人。第一次听到这个名词是在大二的时候,班主任对我说的。那时我开始接触嵌入式linux和ZigBee无线网开发。其实在大三的时候,我就开始做类似于小米插座那样的设备,可是还是因为资金和技术(主要是硬件方面和设计)问题,仅仅停留在纸上谈兵。在我大四找工作的时候,老班问我希望找哪方面的工作,我说嵌入式智能家具吧,可是老班有些神伤,对我说

2015-07-07 09:28:54 2125 2

原创 基于tornado实现web camera

基于tornado实现web camera最近在学习python,找了一个框架学习,我选择的是tornado,因为其不只是一个web开发框架,其还是一个服务器,异步事件库,一举多得。 我一直在完opencv,我想接合他们两个做一个web camera,这就开始。 在tornado中要实现对一个URL的响应,需要实现你自己的Handle,根据你对外提供的接口,实现相关的接口就好了。 下面为整个工

2015-06-27 08:26:25 2501 1

原创 ccfast更新-支持基于Redis的Session

这是一个基于FastCGI和C++的RESTful API开发框架。其依赖于fastcgi,boost,libmysqlpp,jsoncpp,其中用了C++11的特性。现已初步添加了基于Redis的Session支持。ChangeLog 1. 基于Redis的Session管理 2. 代码结构调整前端web服务器我们使用Nginx,需要的配置如下:location ~* ^/ccfast/.+\

2015-06-07 11:55:07 1013

原创 python学习之List和Tuple

python学习之List和Tuple前言在编程的过程中,有一类数据结构我们将它们称为容器,其被用来保存一系列的数据元素。在C++中,我们为了保存不同类型的对象,我们需要为他们基类。但是在python中,这些都可以免了,python是动态语言,其自动识别。Listlist是python内置的一种数据类型,称之为列表,是一种有序的集合,可以向其中添加和删除其中的元素。 比如,我们有一个整数listi

2015-06-07 10:47:56 1652

原创 python学习之基础数据类型

python学习之基础数据类型数据类型是什么?数据类型是对一类具有相同属性的数据值的抽象,以此来对学习惊醒分类。计算机处理外部的各种数据值时,其不知道数值是什么东西,那就不知道怎么玩了。整数在python中,其可以处理正负任意大的整数。整数的表示和数学上的写法一致。比如我们输出一串整数。print 0, -1, 1314整数有不同的进制表示,最常用的十六进制0xAB,其能够比较直观的表示一个字节的各

2015-06-06 12:12:45 811

原创 私活板块开版啦

作为一个小老板,是不是想借互联网的东风,改变一下企业形象,做个NB的网战,来个微信公众号,让人对你的公司耳目一新,业绩蹭蹭往上长。老板员工乐呵呵!!! 作为一名大牛,团队都是从苦逼开始的,没钱招人,没钱跑业务,没关系,我们为你提供需求。不久将来,你就会当上总经理,出任CEO,赢取白富美,走上人生巅峰。哇哈哈哈! 本板块提供有需求的个人和小团体进行项目承包,只提供信息,不参与双方的经济活动

2015-06-05 21:34:48 1201

原创 实现signal和slot机制(2)-跨线程投递

前言在1中,我们实现了一个基础的signal+slot的模块件调用机制,不过那个direct调用,在这篇中,我们将支持夸线程调用,即在对象的线程上下文中,调用对象的函数。对象线程绑定在qt中,有一个很重要的概念,对象线程绑定,即在每个对象实例时候,其保存其线程上下文信息,其中就有一个事件循环,跨线程的信号就是将这个一个task丢到这个事件循环中,在对象绑定的线程中完成slot响应。实现对slot调用

2015-06-04 21:08:27 3724

hadoop eclipse插件

hadoop eclipse 插件 进行MapRecude程序的开发

2012-10-25

基于qt的多线程视频采集与传输

将服务端的设备虚拟化,供客户端调用。使用TCP/IP协议传输,使用V4L2实现视频采集。

2012-10-08

perl正则表达式

perl是unix上的工具,但是现在已经发张成了一门很完整的编程语言特别是在网络服务端

2012-07-11

空空如也

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

TA关注的人

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