9 写了程序换酒钱

尚未进行身份认证

Want to be a geek!!!

等级
TA的排名 4k+

MQTT协议与mosquitto的安装使用

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

2016-06-11 13:04:51

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

I2C总线协议

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

2016-05-15 11:45:13

CC2530+74HC164矩阵键盘的设计

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

2016-05-07 11:32:14

基于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

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

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

2016-04-06 20:58:49

C++11中多线程例子

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

2016-03-31 21:10:41

利用可变模板参数实现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

前后端分离开发部署模式

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

2016-03-12 09:50:44

Android系统input系统(1)

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

2016-03-05 19:47:40

android的surfaceflinger原理讲解

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

2016-03-03 20:22:15

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

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

2016-03-01 09:10:21

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

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

2016-02-26 15:33:20

python简单的绘制折现图

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

2016-02-25 20:01:06

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

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

2016-01-23 13:44:54

使用nginx作为websocket的proxy server

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

2015-12-12 22:44:51

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

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

基于nodejs+socket.io的chatrobot

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

2015-11-22 10:48:55

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

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

2015-11-14 10:36:25

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!