自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (5)
  • 收藏
  • 关注

原创 虚拟网络技术系列介绍汇总

(一)网络虚拟化之内核能力NetFilter一、概述二、核心原理三、使用示例(二)网络虚拟化之虚拟网卡技术tun/tap一、概述二、核心原理三、使用示例 (三)网络虚拟化之虚拟网卡技术veth一、概述二、核心原理三、使用示例(四)网络虚拟化之虚拟交换机技术Linux Bridge一、概述二、核心原理三、使用示例(五)网络虚拟化之虚拟局域网技术VXLAN一、概述二、核心原理三、使用示例​3.1 创建VXLAN的VTEP3.2 启动设备3.3 将VTEP设备接入虚拟网关3.4 使用IP对接的形式连通VTEP3.

2022-07-18 13:38:03 727

原创 网络虚拟化之虚拟交换机技术Linux Bridge

接上篇网络虚拟化之虚拟网卡技术veth再来看看虚拟交换机技术Linux Bridge。 几个核心点:1.veth只能成对出现,多对多就需要一个交换机2.Linux Bridge覆盖物理交换机所有功能3.Linux Bridge比物理交换机多一个转发本机IP的数据包4.单IP的单机上多个容器的通讯网络,可以NAT转换有了虚拟网卡,很自然也会联想到让网卡接入到交换机里,实现多个容器间的相互连接。Linux Bridge 便是 Linux 系统下的虚拟化交换机,虽然它以“网桥”(Bridge)而不是“交换机”(S

2022-07-08 18:03:31 2314

原创 Java的虚拟线程和结构化并发,含完整示例代码

Java的线程模型在云原生时代反而失去了优势,因为与操作系统1:1对应的线程模型,是一种非常重量级的线程(内存占用和上下文切换)。核心是要重新设计线程模型和结构化并发。Green Thread是上古Java采用过的模型,OS Thread是当前Java使用过的,Virtual Thread是正在努力进行的。结构化并发是 2016 年才提出的新的并发编程概念。可以让你像写同步代码的方式写异步代码Quasar,Project loom,Virtual Thread,StructuredTaskScope

2022-07-01 17:30:49 1306

原创 深入彻底理解零拷贝技术

零拷贝(Zero-Copy)技术是一个思想,是一种 I/O 操作优化技术,可以快速高效地将数据在文件系统移动和网络接口之间传输数据,而不需要将其从内核空间复制到用户空间。但零拷贝并不代表一次数据复制都没有,而是尽最大可能的减少。实际上Zero-Copy中有一项核心技术即DMA,在IO操作中扮演十分重要的角色,具体原理不是本文范围,可自行查阅资料。 先看一个常规的IO操作,需要从磁盘中读取数据,通过网络传输出去。补充一个技术点💡 DMA技术是Direct Memory Access的缩写。..........

2022-06-29 17:40:25 727

原创 Nacos源码启动

一步步启动Nacos源码项目,中间确实出现各种问题。

2023-02-23 20:53:24 1905 1

原创 Eclipse Maven设置国内服

2023/2/23 CST 下午6:45:39: [INFO] Refreshing settings C:\Users\Administrator\.m2\settings.xml。表示更新成功,此时项目邮件,Maven-UpdateProject-勾选强制更新。可以看到拉去包时已经替换为上述定义的私服。使用阿里云的私服:aliyun maven。点开openfile。

2023-02-23 18:56:42 432

原创 OLAP系统林林总总

系统比如:Presto,Impala,GreenPlum,Clickhouse,Elasticsearch,Hive,Spark SQL,Flink SQL,kudu。实时数据计算,需要实时进行数据ETL过程,实时流计算,来计算出结果,这类计算复杂性不会太高但是对数据处理的吞吐量要求很高,比如典型的计算一个APP的实时在线人数,当天实时新增人数等。秒级查询,即席查询这类场景,可选的方案Presto、Kudu,其他在复杂分析下基本做不到秒级,或者支持不了过于复杂的分析。:多维OLAP,预聚合模式。

2022-12-20 22:58:14 605

原创 KUDU响应时间长,IO调优

最近出现KUDU查询耗时一段时间非常长,差不多在3-5s左右。1.问题排查看到机器的以下监控数据,在出问题期间,IO量很大,IO占用CPU时间基本打满,明显是存在磁盘IO问题。进一步发现内存占用已到90%以上。使用pidstat -d 1统计进程的磁盘读写情况,发现kudu-tserver均值可到100多M每秒,明显定位到IO问题出现kudu上。性能优化、内存优化、kudu内存调优、LSM、WAL

2022-09-30 11:42:06 973

原创 JDK 19马上发布

JEP 426,即 Vector API(第四轮孵化器),根据前三轮孵化的反馈进行了改进——JEP 417(即 Vector API(第三轮孵化器),在 JDK 18 中交付)、JEP 414(即 Vector API(第二轮孵化器),在 JDK 17 中交付),以及 JEP 338(即 Vector API(孵化器),在 JDK 16 中作为孵化器模块交付)。JEP 草案 8280836,即有序集合,提议引入“一组新的接口来表示集合概念,这些集合中的元素按照定义良好的顺序进行排列,作为集合的结构属性。

2022-09-19 15:13:32 936

原创 clickhouse的日期处理

参考:https://clickhouse.tech/docs/en/sql-reference/functions/date-time-functions/#formatdatetime。解析:函数根据给定的格式字符串来格式化时间。请注意:格式字符串必须是常量表达式,例如:单个结果列不能有多种格式字符串。语法:formatDateTime(Time, Format [, Timezone])返回值:根据指定格式返回的日期和时间。

2022-09-19 14:43:55 5082

原创 回顾nacos的一次严重事故,节点意外全部离线

正常情况,两个节点的服务有一个节点被停止,接着启动一个新的服务节点,不会影响没有变化的节点,但从nacos控制台上看到,确实两个节点全部出于离线状态,健康检测都是true,说明服务心跳都在常维持着。1. 服务正常启动 --> 先断开服务网络,时间超过30s+ -->服务从注册列表剔除 --> 恢复网络 --> 服务进入注册列表 状态正常:上线状态。1. 服务正常启动 --> 先断开服务网络 时间超过30s+ -->服务从注册列表剔除 --> 恢复网络 --> 服务进入注册列表 状态正常:上线状态。

2022-09-09 16:31:24 4237

原创 SOA和微服务是一回事吗

作为我们这一代软件开发者,特别庆幸亲身经历了从单体服务到SOA、到微服务、再到云原生的整个变迁,从本篇开始,总结归纳一些这些架构模式中的一些关键点,或者说中间的一些本质逻辑,或许并不准确,姑且作为个人的思考。

2022-09-06 18:02:54 851

原创 Maven打包又在找main方法

最近发现项目中pom比较混乱,接口包打包方式不规范,且不带源码。汇总下相关mvn配置方式。在Spring Cloud环境下,使用springboot构建插件生成可执行包。一个模块有一个父pom,其下有接口pom和服务实现pom。部门级有一总pom。1.普通的Jar包,只含本工程源码编译后文件。2.源码包,方便依赖方使用。

2022-09-06 14:46:09 553

原创 谈谈数据库索引

通过聚集索引可以一次查到需要查找的数据, 而通过非聚集索引第一次只能查到记录对应的主键值 , 再使用主键的值通过聚集索引查找到需要的数据。节点数据构成了一个有序链表,在查询大小区间的数据时候更方便,数据紧密性很高,缓存的命中率也会比B树高。对应数据库的主键索引,以平衡树的方式对表数据行进行索引。同样是采用平衡树作为索引的数据结构,并且可以有多个,不要求唯一,一般是辅助索引。另外是在实现索引时用到的树结构:B+树(B是Balance的意思)的优点是,如果经常访问的数据离根节点很近,而。

2022-08-19 16:16:09 232

原创 非常有用的Linux操作指令(持续更新)

windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用。每个以太网帧64bytes-1518bytes,减去帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes,即为MTU。压缩:tar zcvf FileName.tar.gz DirName。

2022-08-19 16:07:10 108

原创 Presto查询慢SQL原因排查

回到这个HIVE表本身,表中全量数据297万,问题在这些数据每日全量更新,没有按日分片,导致全表扫描。直观看到cpu这个数值特别大,rows14万行,似乎还可以,很难得出结论。基本可以坐实一件事儿,这个慢SQL需要扫描297万行数据。点开查询执行的详细信息发现输入行数也是2.97百万。只查一张表,底层是HIVE表,但是耗时需要5秒左右。还有另外一个分析执行计划命令,会更加详细。SQL执行时出现明显的峰值。...

2022-07-26 18:42:42 1528

原创 网络虚拟化之Docker的网络模式

接上篇,基础的虚拟网络技术基本都认识到,本文来看看Docker中是怎么用的。网络虚拟化的运用才是真正开始解决问题。几个核心点1.Docker开箱即用的网络模式只有3种2.允许自己定制网络,制定给Docker容器3.底层技术并没有脱离之前介绍的基础技术范畴4.虽然当前是K8S的天下,但Docker也是发布了第一个容器网络的业界标准。...

2022-07-26 16:01:17 334

原创 docker(Kubernetes)环境如何查看network namespace

networknamespace是虚拟化网络技术和容器化技术中很重要的资源隔离技术,负责网络资源的隔离。但是你会发现通过常规方法查不到容器定义的网络命名空间。在docker中,默认情况下不会将容器networknamespace添加到linux运行时数据中(从/run挂载到/var/run)。...

2022-07-26 15:45:44 1477

原创 智能(个性化)推荐系统全流程落地实施方案

从以下一张总体脑图开始。整体上分为三个阶段离线计算、推荐结果的实时获取、推荐结果的评估。离线计算是推荐系统的核心部分,涉及从数据收集、内容画像、用户画像、召回、排序几个关键环节,这几个环节也体现出,推荐的本质是进行内容和用户的匹配。......

2022-07-20 22:31:04 1585

原创 网络虚拟化之副本网卡技术MACVLAN

接上篇网络虚拟化之虚拟局域网技术VXLAN再来看看副本网卡技术MACVLAN。这也是虚拟网络最后一种基础技术了。 几个核心点:1. 目标跟Linux Bridge基本一致,但更简化,带来更高性能2. 核心也是解决多子网通信问题3. 借用802.1Q的子接口(多IP)概念,增加了设置多Mac4. 可能受限于网络设备,比如主机连接的交换机在 Macvlan 出现之前,802.1Q的子接口(多IP)概念让我们可以为一块以太网卡添加多个 IP 地址,但不能添加多个 MAC 地址,因为 MAC 地址是标识一块以太网卡

2022-07-13 22:39:25 443

原创 网络虚拟化之虚拟局域网技术VXLAN

接上篇网络虚拟化之虚拟交换机技术Linux Bridge再来看看虚拟局域网技术VXLAN。有了虚拟设备如何组建虚拟局域网? 几个核心点:1. 在三层网络UDP之上传输二层包以太网帧,可实现跨机房3. 典型的Overlay网络,相对于Underlay(物理网络)以类似下图的形式组一个VXLAN。两台主机,每台主机建一个独立的网络空间,打通这俩网络空间的内网。(先尝试一次组播寻址的方式)使用 eth0的多播组 239.1.1.2 通信。id 1:VNI的值,在1~2的24次方之间dstport: VTE

2022-07-12 20:39:34 1262

原创 网络虚拟化之虚拟网卡技术veth

接上篇网络虚拟化之虚拟网卡技术tun/tap再来看看容器中用到的虚拟网络技术veth。 几个核心点:1.veth是虚拟一对直连的网卡,一端连内核协议栈,本意是解决两个隔离网络空间的通信2.无需tun/tap那种多次经过网络协议栈,性能极大提高3.内核几十行代码实现一个复制即可,简单4.容器中的关键网络技术通过ip link命令添加veth0和veth1,然后配置veth0的IP,并将两个设备都启动起来ifconfig查看结果如下:ping一下试试:通了,再测试一下通过这个网卡能否ping通

2022-07-07 16:38:01 1433

原创 网络虚拟化之虚拟网卡技术tun/tap

接上篇网络虚拟化之内核能力NetFilter再来看看真正的软件定义网络技术tun/tap。 几个核心点:1.一个虚拟以太网设备的二层虚拟网卡tap,只能处理链路层以太网帧2.一个虚拟网络层设备的三层虚拟网卡tun,只能处理网络层IP报文3.通过字符设备与应用层交互4.VPN是tun的典型应用tun/tap可以通过网络接口和字符设备两种方式进行操作。当应用程序使用标准网络接口socket API操作tun/tap设备时,和操作一个真实网卡完全一致。当应用程序使用字符设备操作tun/tap设备时,字符设备即充当

2022-07-07 15:00:13 3437

原创 网络虚拟化之内核能力NetFilter

关键点:1.网络层,也就是IP层2.有5个拦截点3.NAT、IPTable Netfilter框架由著名的Linux开发人员Rusty Russell于1998年开发,旨在改进以前实现ipchains(Linux2.2.x)和ipfwadm(Linux2.0.x)。

2022-07-07 13:48:45 813

原创 kafka消费组查看和删除

生产环境监控发现kafka存在大量消费组 查看消费组信息:./kafka-consumer-groups.sh --bootstrap-server ip:port --list查看特定消费组信息:./kafka-consumer-groups.sh --bootstrap-server ip:port --describe --group console-consumer-49781 多次查看发现消息数在增加,但是offset一直不变,说明这些消费组很多不在消费。删除消费组./kafka-consumer

2022-07-06 17:31:11 8844 2

原创 Nginx频繁报状态码400错误,定位到原因是丢包引起

目录一、背景说明二、访问日志分析三、TCP抓包分析四、结论最近线上服务发布,完成后一切平静,到下午用户量正常起来后,开始频繁收到Nginx状态码是400的告警,初步确认是偶尔出现,还好还好!400通常理解为客户端请求错误,一般原因是请求数据中有不合法字符,请求头缺失host头。但这次案例另有原因。详细回顾下定位过程和方法,供大家参考。服务器的负载均衡LB中状态码正常的日志:LB侧状态码是400的日志: 对比发现一个很明显的规律:request_length在400状态码时偏低,upstream_respon

2022-07-06 14:10:51 9766

原创 IntelliJ IDEA运行JDK 19-ea问题

最近Java热门项目Loom进展很好,尝试本地运行下新功能,分享遇到的一些问题。IntelliJ IDEA使用的版本是:2021.3.2 (Ultimate Edition),Build #IU-213.6777.52, built on January 28, 2022。关于Loom的更多信息:Loom Early-Access Builds下载JDK 19预览版java: 源发行版 18 与 --enable-preview 一起使用时无效 (仅发行版 19 支持预览语言功能)......

2022-07-01 15:19:46 7202 3

原创 RocketMQ核心原理设计(1)

消息存储是RocketMQ中最为复杂和最为重要的一部分,本节将分别从RocketMQ的消息存储整体架构、PageCache与Mmap内存映射以及RocketMQ中两种不同的刷盘方式三方面来分别展开叙述。1.1 消息存储整体架构消息存储架构图中主要有下面三个跟消息存储相关的文件构成。(1) CommitLog:消息主体以及元数据的存储主体,存储Producer端写入的消息主体内容,消息内容不是定长的。...

2022-06-30 15:03:32 95

原创 AI出现的历史渊源,透过现象看实质

GMIC 作为每年规模很宏大的一个会议,会邀请行业内的大佬过来演讲,毫无疑问今年的主题跟 AI 相关 --AI 生万物,每天微信各类推送的信息也是各类 AI 咨询。这些让我十分想一探究竟,为何 AI 突然就火了,为啥计算机出现半个多世纪以来,AI 突然现在会受到这么大关注? 后面我希望从人工智能定义、历史的发展和工程原理、实践运用来尝试梳理一下,AI 发展的内在逻辑。先引入 “人工智能”(AI)的概念。......

2022-06-29 13:18:27 648

原创 Java异常该如何正确使用,避坑指南

最近在项目代码中,遇见异常滥用的情形,会带来什么样的后果呢?1. 代码可读性变差,业务逻辑难以理解异常流与业务状态流混在一起,无法从接口协议层面理解业务代码,只能深入到方法(Method)内部才能准确理解返回值的行为。可看一下代码:DAO 层负责数据库的基本操作,该方法返回值为查询结果用户对象数据。代码强行抓了所有的异常,并以 null 返回,后来人无法确认 null 是代表该用户不存在还是出现异常。2. 代码健壮性变差,异常信息被随意捕捉,甚至被吃掉同样上述代码,首先抓了 Throwable 这个所

2022-06-29 11:07:48 213

原创 【CentOS7+ Ambari 2.7.4 + HDP 3.1.4】搭建数据仓库

旧文拾起,来自某源搭建本地仓库:1. 下载软件包Ambari 2.7.4:http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.4.0/ambari-2.7.4.0-centos7.tar.gzHDP-3.1.4.0:HDP:http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.1.4.0/HDP-3.1.4.0-centos7-rpm.tar.gzHD

2022-06-29 11:03:28 360 1

原创 RPC - 非阻塞通信下的同步 API 实现原理,以 Dubbo 为例

Netty 在 Java NIO 领域基本算是独占鳌头,涉及到高性能网络通信,基本都会以 Netty 为底层通信框架,Dubbo 也不例外。以下将以 Dubbo 实现为例介绍其是如何在 NIO 非阻塞通信基础上实现同步通信的。 Dubbo 为一种 RPC 通信框架,提供进程间的通信,在使用 dubbo 协议 + Netty 作为传输层时,提供三种 API 调用方式: 同步接口适用在大部分环境,通信方式简单、可靠,客户端发起调用,等待服务端处理,调用结果同步返回。...

2022-06-29 10:56:23 351

原创 11年前写的程序:Java 中闭包运用,实现方法传递

1.闭包的价值在于可以作为函数对象或者匿名函数,持有上下文数据,作为第一级对象进行传递和保存。2.闭包广泛用于回调函数、函数式编程中。3.函数可以访问函数外部的变量,并且与它建立联系,可以修改变量和读取到外部对变量的修改。......

2022-06-28 10:03:17 663

原创 应该了解的数据库系统高性能利器-WAL

在计算机科学中,预写式日志(Write-ahead logging,缩写 WAL)是关系数据库系统中用于提供原子性和持久性(ACID属性中的两个)的一系列技术。在使用WAL的系统中,所有的修改在生效之前都要先写入log文件中。WAL允许用in-place方式更新数据库。另一种用来实现原子更新的方法是shadow paging,它并不是in-place方式。用in-place方式做更新的主要优点是减少索引和块列表的修改。ARIES是WAL系列技术常用的算法。在文件系统中,WAL通常称为journaling。.

2022-06-24 18:37:09 544

原创 MySQL高级操作命令大全

汇总非常有用的MySQL操作命令

2022-06-24 16:55:35 207

原创 深入MySQL死锁场景

死锁典型场景分析1.行记录不存在时,加记录X锁变成加GAP X锁,GAP X锁可共存,插入意向锁与GAP X冲突导致死锁。2.插入数据唯一索引冲突时,先获取GAP S锁,GAP S锁可共存,但与记录X锁冲突,插入意向锁与GAP S锁也会冲突,最终导致死锁。......

2022-06-24 00:35:12 1464

原创 perf top 实时分析 CPU 使用情况

安装 用户空间工具,命令用于实时系统分析,其功能与TOP程序类似。但是TOP程序通常显示给定进程或线程使用的 CPU 时间,perf 会显示每个特定函数使用的 CPU 时间。在默认状态下, 将告知您用户空间和内核空间的所有 CPU 所使用的函数。要使用 ,您需要 root 访问权限。启动 监控接口:监控数据如下: 在几个列中显示数据含义:"Overhead"列:显示给定函数正在使用的 CPU 百分比。"共享对象"列:显示使用函数的程序或库的名称。"Symbol"列:显示函数名称.....

2022-06-22 16:09:01 5533

原创 磁盘性能测试

云盘IO的性能测试

2022-06-22 15:41:54 377

原创 一张图讲完Hbase核心原理

目录一、特点二、适用场景三、架构原理四、写过程五、读过程放大观看!强烈建议放足够大再看一个冷门知识点:Hbase的名字的来源是 Hadoop database一、特点大:一个表可以有上十亿行,上百万列面向列:面向列(族)的存储和权限控制,列(族)独立检索。稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。二、适用场景快速读写,快速简单检索、基于HDFS的海量数据存储支持随机读写更新实际上是多版本新增不支.

2022-05-11 17:25:54 515

原创 【自建NAS】基础环境搭建,几行命令建成私有云盘,无复杂配置

从2019年10月运行至今,因搬家等不可控重启,目前主要备份家庭中手机、Pad的视频照片。几行命令建成私有云盘,无复杂配置。

2022-05-11 11:51:09 9601

分布式缓存技术-Redis和Memcached选型对比-性能测试

不光有含金量,还很有颜值。 Redis-vs-Memcached-Infographic-ScaleGrid-Blog

2022-05-11

Charles_402_无限使用.zip

解压 将 Charles.app 拖至 应用程序 文件夹 先打开一次 关闭 复制 charles.jar 至 /Applications/Charles.app/Contents/Java/ 打开 进入注册窗口 使用 SN.txt 中的序列码 激活成功

2019-05-08

Pro Android Apps Performance Optimization

Pro Android Apps Performance Optimization 权威性能优化文档,指导android进行高效实现,性能调优,技术方案取舍

2014-07-18

jquery 帮助手册

jQuery 方便的查阅手册,CHM格式的文档,全面快捷

2010-08-24

空空如也

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

TA关注的人

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