- 博客(114)
- 收藏
- 关注
转载 如果这篇文章说不清epoll的本质,那就过来掐死我吧
本文会从网卡接收数据的流程讲起,串联起CPU中断、操作系统进程调度等知识;再一步步分析阻塞接收数据、select到epoll的进化过程;最后探究epoll的实现细节。目录:一、从网卡接收数据说起二、如何知道接收了数据?三、进程阻塞为什么不占用cpu资源?四、内核接收网络数据全过程五、同时监视多个socket的简单方法六、epoll的设计思路七、epoll的原理和流程八、epoll的实现细节九、结论一、从网卡接收数据说起下图是一个典型的计算机结构图,计算机由CPU、
2021-01-07 18:06:16 1831
原创 分布式常用概念
云原生https://zhuanlan.zhihu.com/p/105071000 2020 年 Service Mesh 技术展望https://www.cnblogs.com/rinack/p/10792336.html Istio究竟是干嘛的?https://www.jianshu.com/p/65c34b60068b Istio是什么?Istio 是一个与Kubernetes紧密结合的适用于云原生场景的Service Mesh形态的用于服务治理的开放平台。 概念误人子弟..
2020-12-14 16:40:22 3608 1
转载 ???请学习如何正确提问???
原文出处:https://github.com/aptx4869yuyang2017/How-To-Ask-Questions-The-Smart-Way每一个不恰当的提问都在消耗别人对你的耐心,程序员届早已经有了诸如《提问的智慧》之类的经典文章介绍了什么是蠢问题,如何避免问蠢问题。然而,常年混迹于十几个技术交流微信群的我,发现很多小白程序员并不懂得这一点,为改善微信群的技术交流氛围,转此文,意图是让大家在担任提问者的角色时,尽可能提高提问的素质,让自己成为值得被教的人。用清晰、正确、精准并语法正确
2020-09-09 11:25:41 1607 1
原创 从Spring Redis到浅谈分布式锁
Java Redis客户端概述Jedis是Redis的Java实现的客户端,提供了基本类型的支持,提供了比较全面的Redis命令的支持;了解Redis命令就能比较熟练的使用Jedis;Jedis使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。Redisson基于Netty框架来实现的,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisso
2020-08-11 18:05:17 20342 7
原创 数据和安全②HTTPS单向和双向认证
前言示例 使用SpringBoot模拟服务端和客户端,使用okhttp作为httpClient工具。如果对https相关理论不太熟悉和理解的可以看上一篇数据和安全①加解密理论概述Okhttp https设置 https://square.github.io/okhttp/https/证书在线格式转换 https://myssl.com/cert_convert.html私钥格式转换 https://www.chinassl.net/ssltools/convert-key.html
2020-07-08 18:30:56 14670 14
原创 看见协议,浅析TCP、HTTP、MQTT
如果对tcp还不了解的,可以看看计算机网络基础简单了解一下;如果对tcp的深入感兴趣,看了上一篇还不过瘾的可以看吊打面试官!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题好了,如果看回来了我们来进入正题,首先了解一下wireshark抓包工具wireshark首先去官网下载对应安装包https://www.wireshark.org/download.htmlwindow安装下一步下一步、默认就行,其中有一个统计usb的包是否安装,可以不装启动服务,.
2020-05-28 19:24:16 17523 13
转载 吊打面试官!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题
每日一句英语学习,每天进步一点点:前言不管面试 Java 、C/C++、Python 等开发岗位, TCP 的知识点可以说是的必问的了。任 TCP 虐我...
2020-05-28 10:47:26 2819 1
原创 微服务应用开发进阶①链路追踪Zipkin
简介Zipkin 是一款开源的分布式实时数据追踪系统,由基于 Google Dapper 的论文设计而来,由 Twitter 公司提供开源实现,主要功能是聚集来自各个异构系统的实时监控数据,和微服务架构下的接口直接的调用链路和系统延时问题。Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪解决方案,集成了Zipkin 。应用场景: 1、可以知道在那个环节耗时长,解决系统并发瓶颈 2、在旧、复杂系统,根据调用链路优化架构 ...
2020-05-20 19:38:57 9516 4
原创 微服务应用开发入门④服务网关
简述相信通过微服务应用开发入门①web端架构演进的阅读,大家已经知道服务网关是干嘛的;一般来说服务网关会做以下几件事情:路由:路由是API网关很核心的模块功能,此模块实现根据请求,锁定目标微服务并将请求进行转发 鉴权:权限身份认证 监控:记录请求响应数据,api耗时分析,性能监控。 日志:日志记录。 限流:实现微服务访问流量计算,基于流量计算分析进行限流,可以定义多种限流规则。Spring Cloud Gateway在SpringBoot1.x的版本中,一般来说用Netflix
2020-05-17 16:57:00 8411 3
原创 微服务应用开发入门③微服务组件eureka、ribbon、feign和hystrix初识
注册中心--Eureka相信通过微服务应用开发入门①web端架构演进童鞋已经大概知道注册中心的概念和它是做什么的;Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。那我们还必须搞明白一些概念(当然其他概念还有很多很多)Register: 服务注册服务的提供者,将自身注册到注册中心,服务提供者也是一个 Eureka Client。当 Eureka Client 向 Eureka Serve
2020-05-13 22:14:25 7067 10
原创 微服务应用开发入门②必用组件和必掌握知识点
概述源码地址 :https://github.com/zhouxiaohei/cloud-start-demo/tree/master/boot-swagger-demo https://github.com/zhouxiaohei/cloud-start-demo/tree/master/boot-mybatisplus-demo环境准备 :1、maven3.x 2、JDK8 3、开发工具intellij idea 4、lombo...
2020-05-13 21:30:33 7048 4
原创 微服务应用开发入门①web端架构演进
从web层架构的演进了解微服务的概念,进而对微服务的组件有一定的了解;从而知道为什么需要这些组件,以及这些组件设计的初衷,了解组件的责任和边界单体架构最早的时候,带宽所限,一个tomcat就可以搞定一个网站或者项目;MVC架构非常流行即使在现在一些简单的网站和项目也可以使用nginx + tomcat;因为这样开发和维护成本比较低;单体架构--面临的挑战•维护和升级困难 代码不断膨胀、功能越来越复杂、代码修改牵一发而动全身•系统可靠性变差 ...
2020-05-09 13:47:55 7194 7
转载 C4 模型 - 可视化架构设计
让程序员和业务人员在讨论系统时候,能有统一的维度和统一标准,这就像是领域驱动设计里面所提倡的统一语言,让所有人在统一的认识中有效的沟通。 鉴于这样的背景,C4 model提出这样的概念来解决这个问题。...
2022-07-20 17:28:24 1176
原创 锁概述:java和mysql
锁分类 : 互斥锁、自旋锁、读写锁、乐观锁、悲观锁互斥锁: 操作系统层面的重量级锁、会带来上下文切换的开销、锁的数量有限;如果加锁失败,操作系统会将线程阻塞自旋锁: CAS(Compare And Swap) 、会一直循环去加锁、但是如果一直获取不到锁、cpu开销会很大;互斥锁加锁失败后,线程会释放 CPU,给其他线程; 自旋锁加锁失败后,线程会忙等待,直到它拿到锁;读写锁:读共享和写独占当没有写操作时、多线程已经并发读取、提高读的性能;一旦有写操作,读和写操作都会阻塞、防止..
2021-03-05 16:53:18 6322 4
原创 DDD领域模型有必要么?
领域模型的基本概念文章抽出来的知识点是个人差不多整理的,有更好的请告知,轻喷。我们先来看看一篇我关注博主的DDD入门文章从零开始的领域驱动设计entity和value object 实体和值对象一定的数据冗余,有助于查询速度,以及相关数据的维护微服务领域需要value object的数据冗余,因为数据库相互隔离认识到在不同场景下,不同的关注点 实体的界限/边界问题模式贫血模型 类似mybatis充血模型 类似JPA的使用失血模型、涨血模型 略聚合和聚合...
2021-01-13 18:51:56 3754 1
原创 Kafka 大消息设置
kafka大消息生产者向broker发送消息体超过限制The message is 7000158 bytes when serialized which is larger than the maximum request size you have configured with the max.request.size configuration.Exception thrown when sending a message with key='null' and payload='白日
2020-12-24 15:30:50 4283
原创 JAVA异常和日志
未捕获异常Runnable 未捕获异常@Slf4jpublic class RunnableDemo implements Runnable{ boolean flag; public RunnableDemo(boolean flag) { this.flag = flag; } @Override public void run() { log.info("进入runnableDemo"); if(
2020-12-11 14:39:07 3504
转载 互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景
前言生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来、电动车被偷等等。但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃·格瓦拉」面前,锁就是形同虚设,只要他愿意,他就可以轻轻松松地把你电动车给「顺走」,不然打工怎么会是他这辈子不可能的事情呢?牛逼之人,必有牛逼之处。那在编程世界里,「锁」更是五花八门,多种多样,每种锁的加锁开销以及应用场景也可能会不同。如何用好锁,也是程序员的基本素养之一了。高并发的场景下,如果选对了合适的锁,则会大大提高系统的性能,否则
2020-09-17 10:34:29 1713 1
原创 数据和安全③Https协议分析
可以查看前面两篇文章数据和安全①加解密理论概述,数据和安全②HTTPS单向和双向认证对ssl感兴趣的可以看看:ssl 1.0 2.0 3.0存在漏洞不推荐使用传输层安全协议tls由TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)组成建立在ssl之上;https://kb.cnblogs.com/page/197396/ ssl和tls介绍最新的boringssl和较旧的OpenSSLHttps的单向验证和双向验证单向验.
2020-07-09 18:00:06 6928
原创 数据和安全①加解密理论概述
理论知识盘点举个例子:小明和小红是一对情侣,他们要通过网络,相互发送一些消息; 由于有一些私密消息,不想让其他人看到,所以要做到防窃听 同时如果消息被修改也是他们不想看到的,所以要做到防篡改/伪造; 防窃听和防篡改分别对应加密和签名,共同构成数据安全屏障。加密和签名的区别1、加密对内容进行保护,防止其他人查看。2、签名是确认信息由发送者发送,不是第三方拦截发送。...
2020-07-08 11:32:46 4525
原创 ZipkinServer存储Cassandra数据分析
接着上篇我们来分析一下存在cassandra的数据结构。对cassandra不了解的可以看我cassandra的博客cassandra博客目录上一篇博客地址微服务应用开发进阶①链路追踪Zipkin数据简述ZipkinServer存储方式选择Cassandra3,指定相应的keyspace,我们可以看到有五张表。--STORAGE_TYPE=cassandra3select * from autocomplete_tags; select * from dependency...
2020-05-25 19:33:49 1592
转载 图解 TCP 重传、滑动窗口、流量控制、拥塞控制,不再发愁
前言前一篇「硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题」得到了很多读者的认可,在此特别感谢你们的认可,大家都暖暖的。来了,今天又来图解 TCP 了,小林可能会迟到,但不会缺席。迟到的原因,主要是 TCP 巨复杂,它为了保证可靠性,用了巨多的机制来保证,真是个「伟大」的协议,写着写着发现这水太深了。。。本文的全部图片都是小林绘画的,非常的辛苦且累,不废话了,直接进入正文,Go!正文相信大家都知道 TCP 是一个可靠传输的协议,那它是如何保证可靠的呢?为了实
2020-05-25 17:18:57 1049
原创 微服务应用开发绪论-目录
初窥门径根据一次给客户培训经历,整理一份针对新手或者初中级选手的基于SpringCloud微服务开发实战系列博客4篇;java开发、SpirngCloud开发、微服务开发包含很多知识点,几篇博客不足以讲完;只能说大家结合github上的源码和下面的博客能快速掌握如何进行微服务开发实践,然后自己多思考多总结;网上的各种博客都很丰富、例如程序猿DD、方志明等等,可以自行去搜索查阅,个人就不继续完善初级使用篇章;当然如果有需要可以关注我,问我,或者留言给我,随时欢迎讨论和交流。github
2020-05-25 11:25:15 7038 9
原创 数据结构和算法基本概念
数据结构概述线性结构: 这是最常用的数据结构,特点是数据元素之间是一对一的线性关系。体现为数组、队列(先进先出)、链表(单、双、环形)、栈(先进后出)等。 单链表 指向后一个节点、双链表指向前后两个节点; 线性结构有两种不同的存储结构:顺序存储结构、链式存储结构 顺序存储 连续的存储空间、 查找快,删除插入慢 链式存储 不一定连续、删除插入块、查找慢总结:数据量小的时候首选顺序存储结构,比如ArrayList,数据量大且...
2020-05-17 17:30:49 638
原创 Java多线程⑥----Lock知识点梳理
多线程文章目录激烈竞争lock比synchonized更佳lock、condition、ReadWriteLock 三个接口Lock可以看到lock更加灵活;注意需要在finally方法释放锁下面对上述的5个方法进行一句话总结:lock():获取锁,不可中断、不可超时。lockInterruptibly():获取锁,可以中断、不可超时。trylock():获取当前可用的锁并返回true,否则返回false,无需中断、无需超时。tryLock(long time, Time.
2020-05-17 10:16:04 1735
原创 Java多线程⑤----并发知识点笔记
多线程文章目录下面这部分知识在面试中可能会用到,同时了解这些只有有助于我们写出高并发的代码;同时欢迎和我探讨。我只是简单的列出部分知识和概念,详细情况可以读我放出的博客链接。对象内存布局https://www.cnblogs.com/zhengbin/p/6490953.html包括三部分:对象头、实例数据和对齐填充对象头: 总共占12个字节,前8个字节是mark world (0-4 4-8) ;哈希码(HashCode)、GC 分代年龄、锁状态标志、线程持有的锁、偏向线程 ID、
2020-05-17 10:12:37 1783
转载 HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
一、HTTP的历史早在 HTTP 建立之初,主要就是为了将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。也是说对于前端来说,我们所写的HTML页面将要放在我们的 web 服务器上,用户端通过浏览器访问url地址来获取网页的显示内容,但是到了 WEB2.0 以来,我们的页面变得复杂,不仅仅单纯的是一些简单的文字和图片,同时我们的 HTML 页面有了 CSS,Javascript,来丰富我们的页面展示,当 ajax 的出现,我们又多了一种向服务器端获取数据的方法,这些其实都是基于 HTT
2020-05-17 07:30:59 261
原创 Java多线程④---CompletableFuture简述
多线程文章目录JDK1.8新加CompletableFuture,实现了Future<T>, CompletionStage<T>两个接口。CompletableFuture vs ListenableFuturejdk8提供对future的升级,会优于Guava的ListenableFuture Futrue FutureTask CompletionService .
2020-05-17 07:19:05 6210 5
原创 Okhttp基础使用和注意事项
基本概念官网https://square.github.io/okhttp/github地址https://github.com/square/okhttpokhttp4.x和okhttp3.x;4.x使用kotlin来编写的RequestRequest类封装了请求报文信息:请求的Url地址、请求的方法(如GET、POST等)、各种请求头(如Content-Type、Cookie)以及可选的请求体。一般通过内部类Request.Builder的链式调用生成Request对象。...
2020-05-17 07:09:11 3017
原创 Cassandra CQL操作和运维
下载和安装简介http://cassandra.apache.org/download/找到一个合适的下载链接,例如:wget https://mirror.bit.edu.cn/apache/cassandra/3.11.6/apache-cassandra-3.11.6-bin.tar.gz## 需要java环境 解压-启动 tar -zxvf apache-cassandra-3.11.6-bin.tar.gzbin/cassandra -f ## -f” 选项指定ca
2020-05-12 15:37:20 2369 3
转载 计算机网络基础
TCP协议TCP三次握手第一次握手客户机发送连接请求报文段到服务器,并进入SYN_SENT状态,等待服务器确认。(SYN = 1,seq=x)第二次握手服务器收到连接请求报文,如果同意建立连接,向客户机发回确认报文段,并为该TCP连接分配TCP缓存和变量。(SYN=1,ACK=1,seq=y,ack=x+1)。第三次握手客户机收到服务器的确认报文段后,向服务器给出确认报文段,并且也要给该连接分配缓存和变量。此包发送完毕,客户端和服务器进入ESTABLISHED(TCP...
2020-05-11 10:35:51 613
原创 多线程文章目录
以下文章基本上保证真实可信,如有谬误欢迎指正;同时很多内容来自个人有道笔记的摘抄,如果有不清不楚的地方还请见谅,随时欢迎咨询。Java多线程①——线程知识梳理有助于新手初步了解线程相关的知识同时加深对基础的理解。了解线程的状态、常用方法以及Thread、Runnable、Callable、Future、FutureTask这些基础概念Java多线程②——多线程知识梳理有助于了解线程池相关的知识、包括线程池执行逻辑、常用方法;以及java为我们提供常用的线程池和任务调度Sch.
2020-05-08 23:03:37 6352 33
转载 线程花絮
---简单对相关知识做的摘抄和收集--进程(Process)与线程(Thread)进程是系统资源分配的最小单元。线程是CPU调度的最小单元。 一个 进程至少包含一个线程,可以包含多个线程。这些线程共享这个进程的资源。 每个线程都拥有独立的运行栈和程序计数器,线程切换开销小。 多进程指的是操作系统同时运行多个程序,如当前操作系统中同时运行着QQ、IE、微信等程序。 多线程指的是同一进程中同时运行多个线程,如迅雷运行时,可以开启多个线程,同时进行多个文件的下载。并行(Parallel)、并发(
2020-05-08 22:16:11 344
原创 Thingsboard MQTT和协议笔记
Thingsboard mqtt相关知识一直在我笔记里面躺着,没有整理出很好的脉络,现在简单整理发出来给需要的人参考。支持哪些版本???https://juejin.im/post/5cafec19e51d456e486953c42010 v3.1 2014 v3.1.1 2018.6 v5.0v5.0和v3.1.1现在是OASIS标准(v3.1.1也已通过ISO批准)。...
2020-04-23 10:32:54 3189
原创 Thingsboard modbus协议
一直没有整理,今天测试整理一下,方便以后配置。Modbus协议modbus协议是一种应用层协议,可以通过OSI第四-7层传输层协议TCP/IP协议来传输,也可以通过OSI第1-2-7层串行链路上的RTU和ASCII来传输。一般来说,通讯数据量少而且主要是文本的通讯则采用MODBUS ASCII规约,通讯数据数据量大而且是二进制数值时,多采用MODBUS RTU规约。modbus-r...
2020-03-02 14:34:12 5598 8
原创 通过Utgard读取Opc数据
代码如下package com.zhou.demo.utils;import lombok.extern.slf4j.Slf4j;import org.jinterop.dcom.common.JIException;import org.openscada.opc.lib.common.ConnectionInformation;import org.openscada.opc....
2019-11-07 20:10:08 4429 4
原创 Java连接Opc server读取数据
java连接OPC server开源的jar有两个,jeasyopc和Utgard;jeasyopc : 底层依赖JNI,只能跑在windows环境,不能跨平台Utgard; 全部基于dcom具有跨平台的特性以下是jeasyopc连接Opc server的样例;Utgard的有机会再补;Opc server简单配置从上一篇OPC概述里,下载opc server安装,如图一个是o...
2019-10-28 10:38:14 4903 2
原创 OPC概述
说道OPC,需要区分两个概念OPC 和OPC UAOPC UA是在OPC的基础上做的升级,是下一代的OPC标准,使用它能更方便、可靠的获取时序数据;当然我觉得最大的区别是OPC必须依赖windows的com和dcom(分布式苦跨平台访问),而opc ua 使用tcp IP socket传输可以很方便的跨平台和通信,彻底拥抱互联网。使用旧版本的opc协议是一件很麻烦的事情,但是O...
2019-10-24 18:06:51 1688
原创 Thingsboard Gateway 根据云端配置初始化
我在博客Thingsboard Gateway简单说了下thingsborad初始化过程和流程图,现在来详细说一下Gateway通过云端配置来初始化的过程;首先我们注意到TenantServiceRegistry这个类,它的方法updateExtensionConfiguration;如果配置不存在就初始化,存在就update,最终来实现数据的采集。它负责opc、mqtt、modbus...
2019-10-10 11:34:34 2525
原创 关系型数据库批量取数,fetchSize相关设置调研,mysql、pg、sqlserver、oracle
为了支持对关系型数据库的批量取数,防止内存溢出;调研了mysql、postgresql、sqlserver、oracle数据库的fetchSize设置;数据库连接和处理的代码大同小异,首先贴一份可运行代码;@Slf4jpublic class TestFetchMysql { private Connection connection; private String...
2019-09-23 11:55:15 3734
bluecove-2.1.1-SNAPSHOT.jar
2020-12-16
Utgard.zip
2019-11-07
cassandra工具类DevCenter-DevCenter-1.6.0.zip
2019-08-28
JAVA_API制作教程.docx
2016-10-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人