自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第四届阿里巴巴性能大赛总结

最近一直在找装修公司,自己辛苦买的房子不住进去确实心有不甘呐。。。所以,比赛完了好久才开始写这个比赛总结。写总结的原因是这次比赛还是学到了很多东西。想要总结下。一开始看到有这个比赛的时候我是犹豫之拒绝的。因为想着准备装修,刚换工作根本没有时间。直到另外一个朋友发消息给我说,有这个比赛挺适合我的时候,我才决定报名的。。第一赛季:简介:目的:借助于 service mesh 的解决...

2018-07-18 21:55:48 2364

原创 netty spring 实现handler 配置

需求基础netty 中接收一个数据处理流程 inboundHandler1->inboundHandler2->inboundHandler3 netty 发送一个数据的处理流程outboundHandler3->outboundHandler2->outboundHandler1我们使用 netty 开发的时候很多初始化的代码都是重复的,一般都是 ha...

2018-04-03 22:31:54 2014

原创 netty 超时,登录,心跳,状态模式等解问题

物联网交流群:651219170 不要只做伸手党,希望大家能多分享多交流。在使用 netty 的时候可能会出现: 1.设备链接 netty 之后,不做登录操作,也不发送数据,白白浪费socket资源。 2.设备链接之后不做认证,就发送数据(对于这样的流氓我们肯定是断开了)。 3.设备链接之后,也登录成功了,但是网络异常,设备掉线了。这时候服务器是感知不到的(浪费资源)。 4.设备超时...

2018-03-29 15:48:02 4727

原创 netty EventLoop write() 源码分析(二)

netty 高并发物联网交流群 651219170Netty 的write() 和 flush()下面我们就跟踪下 write() 和 flush() .验证两个事情。 1.在非 EventLoop 线程 write() 是线程安全的。 2.write() 只是把数据放到了 ChannelOutboundBuffer 中。flush() 才是把数据发送出去(在 EventLoop 线程调用的话,

2017-10-12 14:54:45 557

原创 netty EventLoop 源码分析(一)

Netty 核心代码分析背景都说是 netty 的 write() 在非 EventLoop 线程调用时线程安全的。但是没看过源码,总是觉得不安心。可能之前自己在写 Reactor 的时候也总是在考虑怎么解决 Reactor 线程 和普通线程 write() 怎么解决竞争问题。所以抱着学习的态度学习了下 Netty 的 EventLoop 对各种事件的处理过程(包括了我一直纠结的 write()。准

2017-10-12 14:39:47 546

原创 mosquitto mqtt tls 认证

TLS和SLL 简介SSL/TLS协议提供的作用。认证用户和服务器,确保数据发送到正确的客户机和服务器; 加密数据以防止数据中途被窃取; 维护数据的完整性,确保数据在传输过程中不被改变。制作 CA 证书SSL在身份认证过程中需要有一个双方都信任的CA签发的证书,CA签发证书是需要收费的,但是在测试过程中,可以自己产生一个CA,然后用自己产生的CA签发证书,下面的mosquitto的ssl功能的测

2017-09-25 21:41:06 3143

原创 mosquitto(mqtt)服务部署+redis 认证模块

功能说明运行的环境(系统版本,mosquitto版本,redis版本)1.centos6.5 及以上.2.mosquitto-1.4.93.redis 3.0.1部署准备(外部依赖)1.openssl2.c-ares-devel3.libc-ares24.libuuid-devel5.gcc6.cmake7.hiredis配置文件的说明部署环境搭建步骤0.安装redis wg

2017-07-31 17:34:44 5850

原创 mosquitto 集群

Mosquitto的分布式集群部署物联网交流群:651219170如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简单的Mosquitto集群模式。 首先集群需要2台以上的Mosquitto服务器。安装方式以前的章节有。 先了解下Mosquitto集群模式的逻辑图,如下:可以看出,master 这一台分别作为 broker1, 和 broke

2017-06-29 20:43:49 5648 2

原创 istio 部署及调用链显示

选择版本号下载https://github.com/istio/istio/releases/下载:wget https://github.com/istio/istio/releases/download/1.13.2/istio-1.13.2-linux-amd64.tar.gz解压tar -xvf istio-1.13.2-linux-amd64....

2022-03-20 22:19:11 837

原创 EventLoop execute() 怎么保证线程安全

EventLoop 的 execute() 是在 SingleThreadEventLoop 中实现的。 @Override public void execute(Runnable task) { if (task == null) { throw new NullPointerException("task");...

2019-08-01 15:56:14 282

原创 EventLoop execute() 怎么保证线程安全

EventLoop 的 execute() 是在 SingleThreadEventLoop 中实现的。 @Override public void execute(Runnable task) { if (task == null) { throw new NullPointerException("task");...

2019-08-01 15:42:30 401

原创 微服务docker化实践

1.docker 基本介绍http://e087fad4.wiz03.com/share/s/3wx_Hk28ckNt21nt-J1VrfUz0HtTdr3jxAdy2dkg9q05x9ns 2.docker 基础docker helloworldhttp://e087fad4.wiz03.com/share/s/3wx_Hk28ckNt21nt-J1VrfUz3QS5f62m...

2018-07-18 22:06:14 532

原创 docker 学习总结

1.docker 基本介绍http://e087fad4.wiz03.com/share/s/3wx_Hk28ckNt21nt-J1VrfUz0HtTdr3jxAdy2dkg9q05x9ns 2.docker 基础docker helloworld  实现http://e087fad4.wiz03.com/share/s/3wx_Hk28ckNt21nt-J1VrfUz3QS5...

2018-07-18 22:03:21 245

原创 netty helloworld

一切从 helloworld 开始1.从 helloworld 开始主函数部分主函数部分,设置接收链接的 nio 池。处理事件的 nio 池。 输入任意字符退出。HelloServerpackage com.yhy;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.EventL...

2018-03-21 21:49:34 188

原创 cbor java

基本知识:jackson 操作 cbor 和 json 的使用基本没有什么不同。使用的抽象工厂模式,只是不同的 json,xml,cbor 只是使用的工厂不同。 1.流式API - 读取并将JSON内容写入作为离散事件。 JsonParser读取数据,而JsonGenerator写入数据。它是三者中最有效的方法,是最低的开销和最快的读/写操作。 2.树模型 - 准备JSON文件在内存里以树

2018-01-24 21:40:54 2174

原创 mqtt mosquitto mysql 认证

mosquitto + mysql 认证物联网交流群:651219170背景mqtt 客户端链接的时候,我都希望是合法的设备才允许链接。所有我们希望在建立 tcp 链接之后立马查询数据库 mysql 进行认证,合法的链接才保留,不合法的立马断开。当然并发要求不高的时候此做法可以。而且设备一般建立链接之后也不会断开。如果真的 mysql 认证出现瓶颈了,可以查看另外一篇文章使用 re

2018-01-05 15:16:01 5663

原创 原始 socket 编程

原始套接字简介普通 socket 的权力和原始 socket 权力对比。1.原始 socket 可以和内核一样直接对所有层进行操作(除了物理层)。可以更改 mac 更改 ip 更改端口。so dos 攻击就可以通过原始 socket 编程来伪造 ip 进行。 2.也可以访问经过网卡的所有数据.普通的 socket 只能访问发送给自己端口的数据。 api 介绍 int socket

2017-09-25 23:18:03 1677 1

原创 mqtt mosquitto tls java 客户端

简介做为 mosquitto 开启 tls 之后的调试客户端写的代码。其中需要注意的是 tls 的 ca 证书,如果你是自己ca那么你要把他加到信任的 ca 列表,也就是下面那几步。如果是真正的著名的 ca 颁布的那么可以把下面几行代码注释掉。因为jdk的jdk1.8/jre/lib/security/cacerts 里面已经默认存了这写著名机构的 ca.crt 了。 //====

2017-07-11 19:45:30 2330

原创 mosquitto(mqtt) 认证 登陆(使用redis)

#先通过 配置文件讲解认证的基本知识。后面在用 redis 认证插件做认证。认证主在配置文件# =================================================================# Security# =================================================================### 用户名密码

2017-06-27 20:03:21 2568

原创 代码注释怎么写

注释怎么写注释的作用是什么?我认为注释最终作用无非就两个。 1.和伪代码一样的作用,为接下来要实现的功能写出一个指导性的算法思路。只是没有伪代码详细。但是也指出了完成此功能的大体算法思路。 2.给看代码的人一个解释性说明。注意看代码的人包括你自己。让看你代码的人可以快速的浏览你的代 码,而不至于每看一行都要一层 一层的方法看下去,才能了解你这个方法到底在干什么。 简单的说注

2017-05-15 00:20:33 13322

原创 c++ string与int(其他的内部类型)转换

基于C++11 的 string 转换问题如果你用的编译器是基于最新的C++11标准,那么string和其他类型转换问题就变的很简单,因为中已经封装好了对应的转换方法:标准库中定义了to_string(val);可以将其它类型转换为string。to_string这个函数还是很强大的!string to_string (int val);string to_string (long val);

2017-02-22 10:41:25 5097

原创 poco aes 加密

poco aes 加密AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。poco aes 加密需要注意的两点: 使用的填充方式是 PKCS5Padding 使用的密钥最好是16的整数倍。如果不是的话,就不知道他会用啥密钥来加密了。最好是这样 setKey() 一下。 Cip

2017-02-16 11:02:01 829

原创 poco aes 加密

poco aes 加密poco aes 加密需要注意的两点: 使用的填充方式是 PKCS5Padding 使用的密钥最好是16的整数倍。如果不是的话,就不知道他会用啥密钥来加密了。最好是这样 setKey() 一下。 Cipher::ByteVec b(16); for( int i = 0; i< 16; ++i ) { b[i] = 's'

2016-04-06 15:21:46 2318 1

原创 ubuntu opencv3 安装

安装完 ubuntu 系统之后立马安装此库。否则后面安装的时候会造成软件包冲突。 apt-get libopencv-dev在 /usr/include/opencv2 目录下有所有的头文件。 opencv2_modules.hpp 文件夹里有与所有 opencv2 的宏。(我理解为: 判定你当前的 opencv 有没有某个功能就直接查看该文件的宏就好了)#define HAVE_OPEN

2015-12-30 19:20:40 612

原创 c++11 静态成员线程安全?

c++11 要求保证函数内部静态变量线程安全。 实测是保证静态成员构造的时候线程安全。#include <iostream>#include <unistd.h>#include <pthread.h>using namespace std;class Cnum{public: Cnum() { std::cout << "construct star

2015-12-28 16:58:22 5784

原创 c++ 在main 之前的全局对象

问题: google c++ 编程规范要求全局对象,应该用指针代替。指出类的构造函数在 main 之前执行是一个未定义的行为。查看资料之后,两大主流编译器 g++ , vs它们对于全局对象的处理是这样的。。。在 main() 函数开始之前先执行了一个 _start() 的函数。这个函数做了一些运行程序的初始化的操作。 证明:class Test{public: Test()

2015-12-28 11:12:28 2578

原创 select

调试 snmp++ 出现段错误。第一个参数maxfd所代表的含义:代表的就是 socket 最大值.实测。下面是另一位仁兄的纠结过程。http://m.blog.csdn.net/blog/wuzili1234/12450451

2015-11-30 17:50:57 528

原创 c++ 迭代器与下标访问效率问题

今天验证下在 c++ vector 下标访问及迭代器访问的效率问题。100W 数据存放到 vector 里。便利访问,以为打印的效率很低,所以不打印,只是访问下就 ok。 首先用迭代器的方式访问了一下。 平均时间: real 0m0.009s user 0m0.008s sys 0m0.000sint main(){ std::vector<int> vecInt(1

2015-08-04 22:46:11 7175 4

原创 poco JSON 的使用

三个例子:第一个是解析一个简单的 json。第二个是在构造一个 json 对象并且加入数据。第三个是解析带数组的 json对象。 这三个场景基本上满足大部分需求了。#include<iostream>#include <stdint.h>#include <sstream>#include "Poco/JSON/Parser.h"#include "Poco/JSON/ParseHandl

2015-08-01 21:00:27 12288

原创 Poco TcpServer 介绍

TcpServer 使用简介简介 1) Poco 的 TcpServer 是一个多线程的 Tcp 服务器。 服务器使用 ServerSocket(Poco 的一个用于初始化服务器的socket的类) 来接收链接。ServerSocket 在被传给 TcpServer 之前必须是处于监听状态。 2) TcpServer 为到来的链接维护一个队列。队列是多大呢?默认情况下队列的大小是和线程池

2015-07-13 13:00:23 4326

原创 poco Mutex(互斥量)

作用: 互斥量用于线程间同步。实际上就是锁住某部分指令。 linux 底层的 api 互斥量使用还是很麻烦的。pthread_mutex_init() pthread_mutex_lock() pthread_mutex_destory() 下面是 Poco 里关于锁的一些实现。 要看 Poco::Mutex 所以我们应该去看基类 Poco::MutexImpl 类的实现。class

2015-07-10 11:31:11 5752 1

原创 linux 两次 connect()

就是有时间研究这个。 一个已经 connect() 成功的 fd 再次 connect 会怎么样呢?撸代码试一下就好了。

2015-06-16 15:36:12 1175

原创 c++ new 的几个用法

在 c++ 里 new 有三个用法。1) new xxx, 2) operator new( int size ), 3) placement new.最常用的是 new xxx 例如 pstr = new string(“xxx”); 这种会调用 string 的构造函数,并需要通过 delete pstr 来析构。 void* w = operator new(100); op

2015-06-16 15:31:47 3178

原创 c++ new 的几个用法

在 c++ 里 new 有三个用法。1) new xxx, 2) operator new( int size ), 3) placement new.最常用的是 new xxx 例如 pstr = new string(“xxx”); 这种会调用 string 的构造函数,并需要通过 delete pstr 来析构。 void* w = operator new(100); op

2015-06-16 00:56:13 658

原创 recv MSG_PEEK

因为不清楚 MSG_PEEK 是否阻塞所以写代码测试。 结论:recv falg 为 MSG_PEEK 时候是阻塞的。 #include <sys/types.h>

2015-06-05 00:46:30 1086

转载 关于C++类成员函数的重载、覆盖、隐藏与virtual关键字

1. 重载、覆盖与隐藏1).重载:成员函数具有以下的特征时发生”重载”A.相同的范围(同一个类中)B.函数的名字相同C.参数类型不同(不能进行隐式类型转换)D.Virtual关键字可有可无2).覆盖(也叫”继承”):指派生类函数覆盖基类函数,特征是:A.不同的范围(分别位于基类与派生类中)B.函数名字相同C.参数相同D.基类函数必须有virtual关键字3).隐藏:是指派生类的函数屏蔽了与其同名的基

2015-05-29 23:48:22 1818

原创 linux snmp 安装

tar -zxvf snmp++v3.3.4.tar.gz cd snmp++-3.3.4/ ./configure make sudo make install//测试 snmp++ 代码#include <iostream>#include <snmp_pp/snmp_pp.h>#include <snmp_pp/oid.h>using namespace std;using

2015-05-29 11:10:27 1284

原创 tcp recv() 什么时候停止

tcp 传输是基于流的方式。send() 只是把数据放到发送缓冲区,而recv() 只是从内核缓冲区取出现在的数据。不能send 一次 recv 一次。 例如你send 的数据大,那么造成分成多个包发送过来那么 recv() 一次是错误的。那么我们在循环里 recv() 什么时候停止呢。 正常情况: 1.你自己的包里带长度,服务器端首先接收到长度,然后不停的按长度接收,接收满那些长度,则此次发

2015-05-29 02:16:30 2769

转载 基数估计算法

译注:给定一个数据集,求解数据集的基数(Cardinality,也译作“势”,表示一个数据集中不同数据项的数量)是非常普遍的一个需求。许多业务需求最终可以归结为基数求解,如网站访问分析中的UV(访客数,指一段时间内访问网站的不同用户的数量)。由于数据集基数是不可聚集指标(两个数据集总的基数无法通过分别的基数简单计算),因此如果要得到N个数据集任意组合的基数,需要 2^N次数据集去重计算,是一个复杂

2015-05-28 18:01:48 2706

原创 linux 批量编码转换公具

安装工具 sudo apt-get install enca 把当前目录下所有文件转换为 utf-8 编码。 enca -x utf-8 *

2015-05-27 19:18:03 508

linux 下简易smtp内网邮件服务器

念书的时候写的一个 linux 下的smtp 内网邮件服务器.能够接收outlook 邮件

2014-05-13

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

TA关注的人

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