自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 问答 (5)
  • 收藏
  • 关注

原创 两张动图-彻底明白TCP的三次握手与四次挥手

两张动图解析三次握手,四次挥手

2017-06-04 21:53:54 478678 210

原创 GitHub Action 使用

github-action 常见的实用功能介绍。白嫖ci,可用于日常一些定时任务,或者特定条件触发的任务执行

2023-04-05 14:51:15 2954 1

原创 go-prometheus业务监控指标实战(二)

本文主要讲解的是 Histogram和Summary的案例。并且结合案例配置自动告警机制。service/prometheus/constants.goservice/prometheus/histogram.gografana 图像普通 histogram (不带label) 名称 common_historgram每个学生只有一个总分,学生不带属性.........

2022-06-04 19:31:44 1500 1

原创 go-prometheus业务监控指标实战(一)

Prometheus 实现业务指标监控,使用go_client完成counter和gague的sdk测试,并结合grafana展示监控曲线

2022-05-16 00:03:32 5181

原创 go-consul实战

consul 安装,命令使用,go-consul 服务注册与发现

2022-03-06 18:26:29 1616 1

原创 go-etcd实战

etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines. It gracefully handles leader elections during network partitions and ca

2022-01-16 00:16:55 2386

原创 go实现一个set

go语言实现一个set

2021-12-26 20:48:07 917

原创 kafka入门笔记与golang客户端

kafka入门笔记与golang客户端(2021年/10月)kafka是一个分布式流处理平台,常常以消息中间件的角色各大平台。与之类似的产品有,Apache ActiveMQ、RabbitMQ、RocketMQ等。而kafka常常被用在大数据相关的一些领域。关于更详细的介绍可以参考中文官网kafka的一些特色同一个partition中的消息消费是有序的尽管现在kafka官方宣布将来的版本不会依赖zookeeper做注册中心,但是在当前最新的2.8版本中,官方教程还是使用的zookeeper,也许在

2021-10-24 14:23:21 703

原创 git配置多身份(多用户)不生效

背景当同时为不同的组织工作时,需要用到不同的身份。比如 GitHub 目录 ~/github/ 提交身份为 mygithub,在Gitee 目录 ~/gitee/ 提交身份为mygitee。使用过git的人都知道,如果不做额外的配置,只能使用一个身份进行代码提交。而这并不是我们想要的。我们希望达到的效果是,在同一台开发机下,使用git在不同的组织项目下提交代码表现的身份会不一样。例如:~/github/ 目录下放的都是GitHub 组织的项目,我提交代码时commit时的作者是 mygithub,

2021-09-21 20:12:13 2492 2

原创 GORM框架学习笔记

简介gorm是面向golang语言的一种ORM(持久层)框架,支持多种数据库的接入,例如MySQL,PostgreSQL,SQLite,SQL Server,Clickhouse。此框架的特点,弱化了开发者对于sql语言的掌握程度,使用提供的API进行底层数据库的访问。笔记将会使用mysql数据库作为示例进行演示使用步骤一般而言对于数据库的使用步骤如下创建连接。这个步骤一般会有引入一个数据库驱动的概念,我们的代码就是通过这个驱动去操作底层的数据库。利用连接执行sql语句,操作数据库。获取

2021-09-20 22:59:35 4202

原创 mysql亿级重复数据高效处理

背景有这样一张用户别名表,一个用户ID可以对应多个用户别名,但是系统分配的别名只能有一个。由于user_id 行没有设置唯一主键,一个user_id可以有多个number_nick_name和多个string_nick_name。但是系统自动分配希望每个user_id只有一条,实际程序bug导致一个user_id现在存在多个set_type=1的行(实际上当前表中全部都是 set_type=1 的行)。此表为mysql单表,表中已经有9千万数据,user_id为1-16位int64整数型(例:450

2021-08-22 00:15:04 1322

原创 git reset,rebase,amend 使用实战

前言在平常的git使用中一般用到的都是 git add/commit/pull/push/log等常规操作命令。也许你会在刚安装git或者新下载一些项目还会用到 git init/clone/config 等命令。但是这都不是本文的重点,本文的重点主要针对 reset ,rebase以及 commit --amend 三个部分进行记录,从使用场景以及使用方式及注意事项进行总结。在开始之前,需要说明的是,在git中每次提交都对应一个版本号,每个版本号都是对应一个commitid,版本的维护其实就是com

2021-07-06 10:08:13 1263

原创 VM创建的虚拟机磁盘不够用了,如何扩充磁盘?

VM创建的虚拟机磁盘不够用了,如何扩充磁盘?环境描述利用vm创建的虚拟机 操作系统为 centos7 ,VMware® Workstation 14 Pro 为版本14。 初始创建的虚拟机为内存2g 处理器1核,硬盘20g。 目标将 20g 硬盘扩充到40g。操作步骤关闭虚拟机,将磁盘配置由原来的20g 改为40g。这时候会出现提示,扩充完毕,但是需要手动操作文件系统,将磁盘进行分...

2020-05-03 11:00:08 9172 9

原创 设计一个mq中间件,不得不考虑这些

mq简介mq 全称message queue,也叫消息队列。通俗来讲也就是一个队列,这个队列用来存储消息的。生产者负责往队列里投递消息,消费者在队列中取消息。在分布式应用架构中,常用来做应用的解耦。为什么用mq解耦。例:订单支付成功,需要给会员卡积分,优惠券核销,扣减库存,通知商家发货等。如果使用传统的方式,需要在订单支付成功后,需要与这么多系统发生交互。使用消息队列后,只需要各自需要订单...

2020-04-06 14:07:49 995

原创 apache-rocketmq 学习笔记

apache-rocketmq 学习笔记花式搭建 rocketmq环境准备本文使用的机器为 centos7maven 版本为 3.6.1jdk 版本 1.8.0_11通用流程下载 传送门自选版本。本文使用的是当前最新版本4.7.0,对应的包为 rocketmq-all-4.7.0-source-release.zipjdk,以及maven的安装过程就不在此赘述解压,安装...

2020-04-05 23:28:04 622

原创 Easticsearch+Kibana+Logstash(ELK) 搭建实践

搭建环境Linux centos7 虚拟机jdk8elk 版本都是 7.2 (注意版本必须都对应,否则可能存在安装不成功)软件安装目录为 /usr/local/mysoft/软件包集合Easticsearch+Kibana 搭建参考 搭建流程Logstash 搭建# 1、下载安装包(建议使用迅雷下载)wget https://artifacts.elastic.co/dow...

2020-03-07 21:58:03 538

原创 docker进阶与实战

环境说明本文是紧接着上一节 docker入门与实战docker的网络模式host 主机模式。该网络模式下容器不会拥有自己的ip地址,而是使用宿主机的ip地址和端口,因此不存在宿主机与容器端口映射。bridge 桥接模式(默认)。桥接模式是,当Docker服务启动时,会在主机上创建一个名为docker0的虚拟网桥,并选择一个和宿主机不同的IP地址和子网分配给docker0网桥。后续启动...

2020-03-03 15:55:13 616

原创 docker入门与实战

环境准备本文以centos7 虚拟机进行演示一台Linux机器 能连接外网关闭seLinuxvi /etc/selinux/config# 将 SELINUX=enforcing 改为 SELINUX=disabled需要重启机器 selinux配置才会生效关闭防火墙systemctl stop firewalld.servicedocker的安装与自启动配置国...

2020-03-01 23:57:08 378

原创 正确的redis分布式锁实现方式-Java

正确的redis分布式锁4种实现方式-Java实现原理redis 实现分布式锁主要用到的是 redis 的一个命令 setnx (如果key不存在就设置成功,如果key存在则设置失败) 和 setex(为key设置超时时间) 。方案1 - 原生 redis java客户端 Jedis 实现分布式锁1 maven 依赖 <dependency> ...

2020-01-30 21:09:50 1362 2

原创 Java 基于 org.mousio.etcd4j 服务注册与发现最简demo

java 基于 org.mousio.etcd4j 服务注册与发现maven 依赖 <dependency> <groupId>org.mousio</groupId> <artifactId>etcd4j</artifactId> <v...

2020-01-11 20:52:16 1191 1

原创 Java 集合总结与源码分析

Java 集合总结与案例分析集合总览集合这块主要分为两大块 Connection 和 MapSet 无序,不重复

2019-12-15 02:20:21 281

原创 第一篇 - Java之八大基本数据类型与封装类

Java之八大基本数据类型与封装类基本数据类型介绍类型分类类型关键词空间大小默认值对应包装类整数类型byte1个字节0Byte整数类型short2个字节0Short整数类型int4个字节0Integer整数类型long8个字节0Long字符类型char2个字节‘’(空字符)Character浮点类型...

2019-11-10 00:51:11 349

原创 MongoDB 安装与权限配置

mongodb 使用与权限控制解压版安装MongoDB初始化说明MongoDB 的使用MongoDB 权限认证内置角色介绍解压版安装MongoDB使用解压版绿色软件,为更好选择,只需简单配置即可使用。下载地址初始化说明MongoDB 数据库默认是不开启账号权限验证的,但是默认绑定的IP为 127.0.0.1。也就是说,默认不要账号密码就能登录,但是你只能在绑定的IP上登录也就是本机。...

2019-03-23 20:52:54 1058

原创 最简hadoop3.x完全分布式集群搭建

环境准备三台 Linux centos 7机器,本例中使用 vmware 创建三台虚拟机作为替代基于1,电脑需要安装好 vmware 软件,需要使用 secureCRT 登录Linux机器方便操作准备好 jdk 8 和 hadoop-3.1.2 安装包效果描述最后的集群为一个三台机器的 hadoop 集群,其中数据结点(DataNode)和计算结点(NodeManager)分布在...

2019-03-12 12:48:27 3687

原创 Easticsearch(Linux集群)+Kibana客户端环境搭建记录

资源准备一台物理机,内存4G以上。(若要搭建Easticsearch集群,则至少8G)软件准备,VMware Workstation环境准备 jdk(Easticsearch 启动以来java环境),并且配置好JAVA_HOME jdk下载地址准备好Easticsearch与Kibana 下载链接环境描述本文搭建环境是 win10系统 + vm14.1 + centos7 +...

2019-02-26 10:30:53 454

原创 vmware 三种网络模式区别与应用

vmware 三种网络模式区别与应用本机的物理机称为host主机,而使用vmware创建出来的机器称为guest主机。host-only(仅主机模式)该模式下能实现guest主机与host主机能互通。使用场景(如果你想利用VMWare创建一个与网内其他机器相隔离的虚拟系统)host-only详解bridged(桥接模式)该模式下,guest主机表现为同host主机同一局域网并...

2019-02-23 01:59:40 1493 1

原创 三张时序图-彻底明白数据库事务隔离级别

认清数据库事务隔离级别要想讲清楚数据库的事务隔离级别,首先得明白数据库事务是什么,每件东西的诞生必有它的用途。先看一个小故事。一个小故事生活中有这种常见的场景:银行的转账,A同学账户中有1000元,B同学账户中有2000。现在A同学需要转账给B同学300。而在数据库的层面上来讲,这包含两个操作:首先在A账户中减去300,A账户的钱变为700,然后在B账户中加上300,B账户的钱变成230...

2018-11-26 11:01:10 1488 8

原创 死锁Java源码示例

死锁源码 源码仅供参考,欢迎提出问题进行交流class MyThread implements Runnable{ private Object o1 = new Object(); private Object o2 = new Object(); private boolean flag = true; public void run(){...

2018-06-16 19:32:17 406

原创 生产者消费者问题Java源码示例

生产者消费者问题 本示例仅供参考,欢迎提出问题,进行交流import java.util.LinkedList;class Storage{ private static final int MAX = 100; LinkedList&amp;amp;lt;Object&amp;amp;gt; list = new LinkedList&amp;amp;lt;&amp;amp;gt;(); public void...

2018-06-16 19:25:26 550

原创 常见的排序算法Java源码示例

public class Sort{ //插入排序 class InsertSort{ public void direct(int[] src){ int length = src.length; for(int i=1; i&amp;lt;length; i++){ int temp = s...

2018-06-16 19:18:14 391

原创 Tcp可靠性和网络优化

Tcp可靠性和网络优化Tcp可靠性传输的原理发送方每次发送一个报文段后,接收方必须要回复给发送方已经收到的确认信息。出现差错的时候,如果发送放发送了一个报文后,在一段时间内还没收到确认返回,这时候就要重新发送刚才报文,称为超时重传。(发送方的角度)在接收方,并不知道报文的丢失,在发送方重发的报文过来后,接收以后,突然之前在网络中丢失的那段报文突然到达了,原来是因为网络延迟的缘故,这时候接收方应

2017-09-20 21:56:50 1447 2

原创 有趣的浏览器发展史

血战 普遍认为,91年正式发布的WorldWideWeb是全球最早的一款浏览器,后来改名为Nexus,特点是可以兼容Unix和Microsoft DOS的,但是还不支持图片的显示,虽然功能有限,但在当时却非常流行。 93年,美国伊利诺州的NCSA组织发明了一款可以显示图片的浏览器,可是偏偏就命名为马赛克(Mosaic),这不当紧,让“网络管理员”抓狂了,怎么分辨你的浏览器是否能显示图片

2017-06-23 18:03:07 3588

原创 详解常用测试机器(服务)是否可用的两种方式

背景描述 在网络模型中有一层非常重要的一环,它实现了端到端之间的通信,而传输层最主要用的到协议是tcp和udp,而tcp协议作为一种可靠的面向连接的传输层协议,被广泛应用,所以本文所描述的几种方式都是基于基于传输层的tcp协议的。

2017-06-10 13:38:00 1718

转载 从输入URL到页面展示到底发生了什么

1、输入地址 当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得url了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。对于google的chrome的浏览器,他甚至会直接从缓存中把网页展示出来,就是说,你还没有按下 enter,页面就出来了。

2017-06-06 10:06:21 1449

原创 IP地址的分配原理

网络模型介绍 在计算机网络中有著名的OSI七层协议体系结构,概念清楚,理论完整,但是它既复杂又不实用。TCP/IP体系结构则不同,得到的广泛的应用。最终结合OSI和TCP/IP的优点,采用了一种只有五层协议的体系结构,本文的讲述的IP都是基于五层协议模型中的网络层。

2017-06-04 15:54:14 58226 10

原创 从零搭建流媒体服务器+obs推流直播

背景介绍 本文使用的流媒体服务器的搭建是基于rtmp(Real Time Message Protocol)协议的,rtmp协议是应用层的协议,要依靠底层的传输层协议,比如tcp协议来保证信息传输的可靠性。最后提供了一个不错的测试方案。

2017-05-27 16:44:15 64446 25

原创 WatchService监控文件变化

概述 Java 7 对原有的NIO进行了重大的改进,新增了Path接口(和平台无关的路径),还有Paths,Files两个工具类。好了进入正题WatchService,在前面的Java版本中,如果想监控某个文件的变化,需要启动一个后台进程,每隔一段时间去遍历制定的目录,如果结果和上次的不同则认为发生了变化。而WatchService在这方面有更好的性能,但是需要结合Path类的register方

2017-05-22 21:02:39 2077

原创 RandomAccessFile实现多线程文件复制

RandomAccessFile RandomAccessFile是Java体系中输入/输出流体系中功能最丰富的类之一,拥有强大的API,既支持文件的读,又支持文件的写;支持“随机访问”的方式,即程序可以直接跳转到文件的任意地方来读写数据。利用这个特性可以实现文件的多线程复制,将大文件分成若干段,每一段启动一个线程复制该段的文件,大大提高了效率。代

2017-05-22 17:28:46 1505 2

原创 云服务器搭建WordPress

在搭建之前首先做好一些准备工作,首先得有一台云服务器把,我这是在腾讯云上抢的一台免费的服务器,配置很低只有1核1G,CentOS 7.2 64位,凑合着用把,本地操作系统win7旗舰版。 本篇文章主要目的:1.如何在云服务器上搭建一个WordPress 2.在搭建的过程中遇到的问题以及解决方案。

2017-05-19 17:12:58 1999

原创 junit测试中Hibernate报错SQL Error:1146,SQLState:42S02

此问题困扰笔者很久,希望能帮到一些初学者。 先不多说了,初学Hibernate框架写了一个Demo,结果一直运行不出来想要的结果。 先描述下环境:在eclipse中添加了Hibernate的插件,然后使用的是Hibernate-4.3.11版本。数据库使用的是MySQL5.5.28。在数据库中先创建好一个数据库名字叫:hibernate,里面没有任何东西。 下面首先贴出我的项目

2016-10-05 21:51:30 4271 2

空空如也

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

TA关注的人

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