- 博客(36)
- 资源 (4)
- 收藏
- 关注
原创 谈谈面试中的自我介绍
工作这些年,面试过别人,也被别人面试过,就想简单的谈谈面试中的自我。面试中我最常遇到的就是,我最近在某某公司,然后做XX 项目,用某某技术, 然后就完了。 每当听到这种自我介绍,作为面试官我都有一种本能的愤怒:连面试自我介绍都做不好的人,就不要进入下一环节了。首先,面试是双发的第一次见面,作为面试官的我,我会先说“你好”,我是XXX,我负责XX,为了对你有一个快速的了解,请您自我介绍下。我如此的尊重候选人,但是候选人连一个基本的”你好“这样的礼貌回应都没有。再次, 作为程序员也好、软件工程师也.
2021-09-19 22:52:55 403
原创 Netty的inBound事件的处理过程分析
为便于后续阐述,写贴一段分析过程中要用到的源码 public static void main( String[] args ) { EventLoopGroup boss = new NioEventLoopGroup(1); EventLoopGroup worker = new NioEventLoopGroup(); ...
2020-01-09 14:25:48 827 1
原创 Netty服务端accept()过程源码解析
本文将解答如何accept(), 即新的客户端连接上来之后如何创建对应的socket一 基本的编程模型socket serverSocket = CreateServerSocket(); //创建服务端Socketbind(serverSocket) // 绑定listen(serverSocket) //监听select(serverSocket) //1. IO 多路复用...
2020-01-08 15:13:39 491
原创 Netty服务端socket创建和线程池启动过程
一.类图和时序图为便于理解,先上一幅UML 类图下面我们分析服务端线程启动过程,先列出时序图,然后看着时序图来分析相关代码(大部分其它分析源码的文章都是上来就贴源码,根本就没有一个整体的概念,相信没有多少人愿意去看这样的分析文章二 NioEventLoop的创建过程写贴一段简单的服务端源码 public static void main( String[...
2020-01-07 11:21:49 743
原创 Netty支持的Reactor 线程模型
理论上Netty 也支持单线程、多线程模型、主从多线程模型 模型,但从实际测试上来看,并不实际支持主从多线程模型 EventLoopGroup boss = new NioEventLoopGroup(4); //boss线程池, 4个线程 EventLoopGroup worker = new NioEventLoopGroup();//工作线程池,数量为CPU数...
2020-01-06 22:01:11 128
原创 Reactor的三种线程模型
理解Reactor 线程模型是理解Netty 的关键步骤之一,下面我将以一个通俗的例子来讲解Reactor 3种线程模型我们以实际生活中吃饭的例子来做解释通常去餐馆吃饭、例如海底捞是需要排队的,排队完成,有服务员来接待你,然后带领你去落座吃饭这里面的服务员有多少个,是发现你来后直接带你找个空闲座位然后给你端茶倒水完了,再去迎接其它顾客;还是接待你的服务员在门口吆喝一声:里面的服务员...
2020-01-06 22:00:06 6658 2
原创 用Netty实现单机百万TCP长连接
一 服务实现模型单机百万连接有多种方式, 这里采用一个netty server 占用8888 端口,用客户端机器模拟百万客户端连接 模拟实现的方式以下是示意图 如果一台客户端模拟3万个连接,那么100万连接,大致需要33台主机,找到33台主机的确是个困难,但是这种模型定下来,能够先实现若干台主机模拟连接也行,毕竟模型定了,剩下的只是客户主机数量的问题。二...
2019-08-23 15:03:17 15525 9
原创 Centos 7 环境 Storm 2.0.0 完全分布式集群的搭建过程
系列博客地址Centos 7 环境 hadoop 3.2.0 完全分布式集群搭建Centos 7 环境hive3.1.1 搭建Centos 7 环境Spark 2.4.3 完全分布式集群的搭建过程Centos 7 环境HBase 2.1.5 完全分布式集群的搭建过程Centos 7 环境 Storm 2.0.0 完全分布式集群的搭建过程一 搭建Zookeepe...
2019-08-22 12:37:37 796
原创 Centos 7 环境 HBase 2.1.5 完全分布式集群的搭建过程
系列博客地址Centos 7 环境 hadoop 3.2.0 完全分布式集群搭建Centos 7 环境hive3.1.1 搭建Centos 7 环境Spark 2.4.3 完全分布式集群的搭建过程Centos 7 环境HBase 2.1.5 完全分布式集群的搭建过程Centos 7 环境 Storm 2.0.0 完全分布式集群的搭建过程一 环境...
2019-08-21 18:11:05 1293
原创 Centos 7 环境 Spark 2.4.3 完全分布式集群的搭建过程
系列文章地址Centos 7 环境 hadoop 3.2.0 完全分布式集群搭建Centos 7 环境hive3.1.1 搭建Centos 7 环境Spark 2.4.3 完全分布式集群的搭建过程Centos 7 环境HBase 2.1.5 完全分布式集群的搭建过程Centos 7 环境 Storm 2.0.0 完全分布式集群的搭建过程注意:Spark 集群的...
2019-08-21 16:09:32 1722
原创 Centos 7 环境 hive3.1.1 搭建
系列文章地址Centos 7 环境 hadoop 3.2.0 完全分布式集群搭建Centos 7 环境hive3.1.1 搭建Centos 7 环境Spark 2.4.3 完全分布式集群的搭建过程Centos 7 环境HBase 2.1.5 完全分布式集群的搭建过程Centos 7 环境 Storm 2.0.0 完全分布式集群的搭建过程在上面 博客中Cent...
2019-08-21 14:10:21 661
原创 Centos 7 环境 hadoop 3.2.0 完全分布式集群搭建
系列文章地址Centos 7 环境 hadoop 3.2.0 完全分布式集群搭建Centos 7 环境hive3.1.1 搭建Centos 7 环境Spark 2.4.3 完全分布式集群的搭建过程Centos 7 环境HBase 2.1.5 完全分布式集群的搭建过程Centos 7 环境 Storm 2.0.0 完全分布式集群的搭建过程本博目录一. 3台...
2019-08-21 09:28:59 1401 1
原创 ZkClient subscribeDataChanges 注意事项
由于zkClient创建连接的时候指定了默认的序列化类-new SerializableSerializer(),所以存储在节点上的值也是序列化后的字节数组,当使用zkCli.sh在控制台set /xxx/xx的值时,存储的是普通的字符串字节数组。当set值时虽然触发了值改变事件,但zkClient无法反序列化这个值。要使zkCli.sh的值也能被zkClient读取必须通过实现ZkSerial...
2019-04-18 15:18:43 2173
原创 链接和加载:符号解析和地址定位的过程
一 如何确定符号所对应的地址? 先看如下一段代码simpleSection.c,对于这段代码的问题是,如果定位到global_init_var2, global_init_var3 的地址呢?int printf(const char* fromat, ...);int global_init_var = 84;int global_init_var2 = 85;int gl...
2018-12-22 14:21:20 954
原创 JVM 之从不同视角看JVM运行时内存分布
不论何种语言,内存总是亘古不变的话题,想掌握JAVA ,掌握JVM, JVM 内存更是绕不开的知识点,这篇博文是自己学习JVM内存分布的一些归纳总结,目的是提起JVM 能够对主要的环节了然于胸。一 从数据存放角度看二 从线程角度看 从不同的角度来看,最终区域划分都是这些区域花费,围绕这些区域划分,疑问随之而来 学习JVM 可能就是围绕着这些问题死磕,磕明白了,J...
2018-12-20 10:00:22 304
原创 函数调用栈实例分析,有图有真相
函数调用栈是理解函数调用的关键一环,也是理解递归思想的重要基础,本博文综合源码,汇编语言,寄存器,内存进行详细阐述目录一 源码二 汇编语言预计调用栈分析2.1 编译器进入调试状态,并查看源码和对应的汇编代码2.2 分析main 函数的函数栈2.3. add 函数的调用和返回三 总结一 源码int add(int a, int b){ return a + b...
2018-12-19 13:37:25 586
原创 windows 下 Thingsboard 源码编译
目录一 源码的下载二 源码的编译让 node 运行起来编译 API 组件安装cassandra 数据库 用 idea 打开项目编译后运行验证thingsboard 是一款优秀的物联网平台软件,具体介绍请登录 https://thingsboard.io/docs/getting-started-guides/what-is-thingsboard/ 查看, 赞美的话...
2018-08-10 16:37:48 5904 4
原创 centos 下 libeven 的安装编译以及简单demo
1. 安装 执行 yum -y install libevent-devel 当然也可用源码编译安装,从libevent http://libevent.org/ 官网下载安装,我这里选择直接安装2. 从一个最简单的demo 开始, 代码取自 https://www.ibm.com/developerworks/aix/library/au-libev/...
2018-07-24 16:49:03 370
原创 避开微信官方支付的另类方法
在很多的物联网项目中,例如咖啡售卖机、娃娃机等等,设备拥有者的核心需求有两点能够用微信支付或者支付宝支付 支付后当前能够到到设备拥有者的个人银行账户对于第一点,其实并没有太大的难度,拿微信支付来说,首先要开通微信公众号(服务号),开通之后再申请开通微信支付即可。但是要达到第二点则比较困难,因为申请开通微信支付的主体是公司,绑定的银行账号也是对公证号,微信支付的钱最终是到了对公账号上的,所以...
2018-07-23 15:57:31 1513
原创 摩拜单车开锁实现原理剖析
1.开锁技术可能性分析1 mqtt 实现 摩拜服务器作为broker, 手机APP 和 智能锁作为 subcriber/publisher, 过程如下1. 智能锁和摩拜云端保持长连接,订阅开锁消息(根据ID)2. APP 用mqtt 登录上 摩拜borker后 携带智能锁号订阅 请求开锁消息(根据ID)3. borker 收到 开锁消息后,经过业务处理,向
2017-04-21 15:39:26 29425 6
原创 用mqtt.fx 和 wireshark 深入学习MQTT 协议
有时候协议制定者想把协议写的很清楚很明白,但看文档可能看的没有头绪,更好的办法就是结合协议文档和协议内容来学习 ,先看协议文档 https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/02-ControlPacketFormat.html配置maqq.fx 和 wireshark 可
2017-04-18 21:26:48 1596
原创 mosquitto 单向SSL 协议内容抓包简单分析
这篇文章主要介绍mosquitto SSL加密前后包内容的区别,首先,不加密,观察包内容1. 未加密前通过client 向borker 发送 的topic 为test, 内容为tomcat2. 加密后第6帧 是 borker 向 client 发送证书第15帧是client 向borker 发送内容,可以看到消息已经被加密
2017-04-13 18:48:16 1656 1
原创 微信开发之自定义菜单
微信开发早在一年前就进行了,但是由于当时未做记录,现在有些淡忘,现在重新回忆起来1. 开启微信自定义菜单插件2. 获取access_token获取access_token 需要 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&sec
2017-04-12 16:06:49 552
原创 eclipse 配置远程调试
1. 环境客户端:windows eclipse,server 端: 阿里云centos6.5 , tomcat 2. server 端配置编辑 catalina.sh, 增加 CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=
2017-04-12 11:50:22 662
原创 Centos 6.5下 mosquitto 阿里云单机压力测试
上篇文章 MQTT之centos6.5 下编译Mosquitto 我们让 mosquitto 正常运行,那么单机环境下mosquitto 能承载多少长连接呢?为此需要靠压力测试说话,用什么进行压力测试呢?经过寻找,找到了一个测试工具 https://github.com/emqtt/emqtt_benchmark, 此工具是用erlang 编写的,但不影响测试测试环境:brok
2017-04-11 20:36:01 2206
原创 从源码角度分析java 的 sleep()和wait()究竟有什么区别?
要知道根本区别,最好的还是看源代码1. sleep() 的根本实现jvm sleep()---->jni sleep()--------> 最终会进入系统的sys_pasue()调用,而sys_pause() 则会调用 schedule(), schedule() 则会主动放弃cpu 时间片,进入等待队列asmlinkage int sys_pause(void){
2017-04-10 21:23:10 3144 1
原创 MQTT 之 mosquitto 对websocket 的支持
上一篇文章centos6.5 下编译mosquitto 写明了如何编译mosquitto, 如何让mosquitto 支持websocket。有了websocket 我们就可以让页面成为mqtt 的客户端,比如开发微信小程序,在小程序上和mqtt 另外的客户端进行交互1. eclipse 新建 web项目项目本身不需要java 代码,只需要 引入mqttws31.js, 并在ind
2017-04-09 15:59:16 8869
原创 MQTT之centos6.5 下编译Mosquitto
Mosquitto 使用C++ 语言编写的MQTT broker 端,详情可参考官网 http://mosquitto.org/ ,本文主要讲述centos 6.5 环境下如何编译 mosquitto1. 下载源码wget http://mosquitto.org/files/source/mosquitto-1.4.11.tar.gz 2.安装依赖库yum inst
2017-04-09 09:11:08 1463
原创 我为什么要写技术博客
博客很早就出现了,但是自己一直没有动力去写,现在终于去想写了。略微想想,写作其实是有四个原因让他人知道我知道 我们中国人常讲酒香不怕巷子深,我们也对那种功力深厚,但不显山露水的世外高人格外的佩服。于是乎我们仿佛相信只要你自己能力够强,够牛逼,还怕什么呢?假如在古代,你的确是练武之人,那么你可能真的需要把自己隐起来,俗话讲人怕出名猪怕壮,木秀于林而风
2017-04-07 15:59:49 686
原创 什么是物联网
每隔一段时间,各行各业总会有新的名词产生,比如曾经的智慧地球,物联网这个词最早出现在 1999年, 美国麻省理工学院(MIT)的Kevin Ash-ton教授首次提出物联网的概念,从概念提出到现在已经将近20年,但这个词没有从大众眼中消失,反而变得越来越火热。1.什么是物联网就这个三个字,随便搜索,能搜索出不计其数的文章, 这些文章看的人演化缭乱,看完之后好像啥都看了,但是
2017-04-06 20:39:42 913
原创 利用MemoryAnalyzer分析内存泄露
在上篇文章5分钟直观了解JAVA内存泄露我们对JAVA的内存泄露有了直观的认识,这篇文章将介绍如何用MemoryAnalyzer分析内存泄露在实际项目中我们不可能盯着屏幕看到outofmemoryerror, 而是希望当发生内存泄漏时将虚拟机堆内存打印出来,对堆内存进行分析,从而定位出问题首先我们将代码稍加改变,让程序自动发生内存泄露1. 自动产生内存泄露i
2017-04-06 17:18:37 637
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人