自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 收藏
  • 关注

原创 客户端监控要怎么做?

如何搭建一个端到端的APM 监控系统,你需要了解的重点是:1. 从客户端采集到的数据可以用通用的消息格式,上传到 APM 服务端,服务端将数据存入到 Elasticsearch 中,以提供原始日志的查询,也可以依据这些数据形成客户端的监控报 表;2. 用户网络数据是我们排查客户端,和服务端交互过程的重要数据,你可以通过代码的植 入,来获取到这些数据;3. 无论是网络数据,还是异常数据,亦或是卡顿、崩溃、流量、耗电量等数据,你都可以 通过把它们封装成 APM 消息格式,上传到 APM 服务端

2021-01-31 23:04:49 1810 1

原创 服务端监控要怎么做?

文章出自:阿里巴巴十亿级并发系统设计(2021版)链接:https://pan.baidu.com/s/1lbqQhDWjdZe1CBU-6U4jhA提取码:8888在一个项目的生命周期里,运行维护占据着很大的比重,在重要性上,它几乎与项目研发并驾齐驱。而在系统运维过程中,能够及时地发现问题并解决问题,是每一个团队的本职工 作。所以,你的垂直电商系统在搭建之初,运维团队肯定完成了对于机器 CPU、内存、磁盘、网络等基础监控,期望能在出现问题时,及时地发现并且处理。你本以为万事大吉,却没...

2021-01-31 22:37:04 979 1

原创 监控工具—Prometheus—监控Redis

原文作者:wyl9527原文地址:Grafana Prometheus系统监控Redis服务目录1、下载redis_exporter安装包2、解压安装3、systemd管理redis_exporter服务4、启动服务5、修改prometheus的配置文件6、Grafana展示Prometheus获取到的数据1、下载redis_exporter安装包下载安装包,打开github然后下载最新的安装包。这里我们选择v0.24.0,因为最新的版本,没有-redis.fi..

2021-01-31 21:56:42 1732

原创 Java数据结构—基本数据类型

一、String1、字符串转成整数1)把String转化为Integer类型Integer integer=Integer.valueOf(i);2)把String转化为int类型int i=Integer.valueOf(s).intValue();2、判断字符串是否相等在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写。在java中,用的是equals(),返回true 或false。由于字符串是对象类型,所以不能用简单的“==”判断。...

2021-01-30 22:18:22 96

原创 API网关—Spring Cloud Zuul

原文作者:思想者原文地址:一起学习使用Spring Cloud Netflix之Zuul前言Zuul在Spring Cloud 体系中扮演着统一网关的角色,负责与外部交互。用户可以通过不同的URL特征来访问不同的后端服务,类似于Nginx代理的效果。Zuul与Eureka结合使用,可以根据服务名来访问后端的服务,对于Eureka而言,Zuul也是一个Eureka Client。系统的信息流入流出都需要经过Zuul,在Zuul中,我们可以统一监控流量,统一安全认证,统一报文组装等等。本文..

2021-01-29 14:53:55 91

原创 创建型模式—单例模式

原文作者:C语言中文网原文地址:单例模式(单例设计模式)详解在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式。1、单例模式的定义与特点单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。在计算机系统中,还有 Windows 的回收站、操...

2021-01-29 14:21:02 309 2

原创 设计模式—责任链模式

原文作者:C语言中文网原文地址:责任链模式(职责链模式)详解目录1、模式的定义与特点2、模式的结构与实现在现实生活中,一个事件需要经过多个对象处理是很常见的场景。例如,采购审批流程、请假流程等。公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据需要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这无疑增加了难度。在计算机软硬件中也有相关例子,如总线网中数据报传送,每台计算机根据目标地址是否同自己的地址相

2021-01-29 14:07:00 175

原创 并查集—岛屿数量

leetcode地址:200. 岛屿数量解答参考:岛屿数量官方解答问题描述:给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","...

2021-01-29 11:31:01 970

原创 数据结构—并查集UnionFind

原文作者:愚公要移山1原文地址:一个非常实用而且精妙的算法-并查集(java语言实现)在学习数据结构的时候,老师多少会提到并查集,他的应用也是超级广泛。本文首先会通过案例来对并查集有一个介绍。然后给出并查集的java实现。

2021-01-29 10:02:13 192

原创 ELK技术栈—Logstash—Input插件

原文作者:归来朝歌原文地址:logstash之Input插件1、stdin标准输入和stdout标准输出Logsrtash含有两个非常重要的基础插件,input与output;首先执行命令:bin/logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }' 程序启动之后输入:hello logstash2、监控日志文件变化Logstash 使用一个名叫File...

2021-01-29 08:53:13 478

原创 ELK技术栈—Kibana

原文作者:少年阿峣_从零单排原文地址:Kibana介绍、安装和使用目录1、介绍2、优势3、安装4、使用5、X-pack插件6、Kibana+X-Pack介绍使用1、介绍Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的...

2021-01-29 08:52:13 570

原创 天平思想—寻找数组中心索引

leetcode地址:5. 最长回文子串解答参考:动态规划、中心扩散、Manacher 算法问题描述:一个整数数组nums,编写一个能够返回数组 “中心索引” 的方法。数组 中心索引 是数组的一个索引,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,返回 -1 。如果数组有多个中心索引,应该返回最靠近左边的那一个。注意:中心索引可能出现在数组的两端。比如nums = [1, 7, 3, 6, 5, 6],中心索引为3,索引3的左侧数之和 (1 + 7 + 3 = 1..

2021-01-29 08:51:52 137 1

原创 API网关—系统的门面要如何做呢?

文章出自:阿里巴巴十亿级并发系统设计(2021版)—第27节:API网关:系统的门面要如何做呢?链接:https://pan.baidu.com/s/1lbqQhDWjdZe1CBU-6U4jhA提取码:8888目录API网关起到的作用API网关要如何实现如何在你的系统中引入API网关呢?课程小结到目前为止,你的垂直电商系统在经过微服务化拆分之后,已经运行了一段时间了,系统的 扩展性得到了很大的提升,也能够比较平稳地度过高峰期的流量了。 不过最近你发现,随着自己的...

2021-01-29 08:51:11 306

原创 ELK技术栈—Logstash—基础介绍

原文作者:原文地址:1、概述官网介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。Logstash常用于日志关系系统中做日志采集..

2021-01-28 16:18:16 499

原创 回文字符串—回文子串—Manacher算法

leetcode地址:5. 最长回文子串解答参考:动态规划、中心扩散、Manacher 算法问题描述:给你一个字符串s,找到s中最长的回文子串。比如给定字符串s = "babad" ,找出最长的回文子串为"bab"算法思路:本题可以采用暴力破解法、中心扩散法、Manacher算法3种方法,本篇文章讲解Manacher。Manacher 算法,被中国程序员戏称为“马拉车”算法。它专门用于解决“最长回文子串”问题,时间复杂度为 O(N)。维基百科中对于 Manacher 算法是这样...

2021-01-28 14:48:33 365

原创 回文字符串—回文子串—中心扩散法

leetcode地址:5. 最长回文子串解答参考:动态规划、中心扩散、Manacher 算法问题描述:给你一个字符串s,找到s中最长的回文子串。比如给定字符串s = "babad" ,找出最长的回文子串为"bab"算法思路:本题可以采用暴力破解法、中心扩散法、Manacher算法3种方法,本篇文章讲解暴力破解法。暴力法采用双指针两边夹,验证是否是回文子串。除了枚举字符串的左右边界以外,比较容易想到的是枚举可能出现的回文子串的“中心位置”,从“中心位置”尝试尽可能扩散出去,得...

2021-01-28 14:15:06 471

原创 回文字符串—回文子串—暴力破解法

leetcode地址:5. 最长回文子串解答参考:动态规划、中心扩散、Manacher 算法问题描述:给你一个字符串s,找到s中最长的回文子串。比如给定字符串s = "babad" ,找出最长的回文子串为"bab"算法思路:本题可以采用暴力破解法、中心扩散法、Manacher算法3种方法,本篇文章讲解暴力破解法。根据回文子串的定义,枚举所有长度大于等于 2的子串,依次判断它们是否是回文;在具体实现时,可以只针对大于“当前得到的最长回文子串长度”的子串进行“回文验证”;...

2021-01-28 14:02:47 258

原创 监控工具—Prometheus—监控Java程序

原文作者:青蛙小白原文地址:Prometheus监控实践:使用Prometheus监控Java应用目录1、Prometheus JVM Client2、Prometheus的服务发现3、Grafana Dashboard和告警规则参考之前在《Prometheus监控实践:Kubernetes集群监控》一本中总结了我们目前基于Prometheus对Kubernetes集群的监控,除了监控Kubernetes集群本身的关键指标之外,也对部署在Kubernetes集群上应用的状态做.

2021-01-28 10:32:17 7045 1

原创 监控工具—Prometheus—安装部署

原文作者:虎纠卫原文地址:监控神器-普罗米修斯Prometheus的安装目录步骤1:安装go 语言环境步骤2:在监控服务器上安装prometheus步骤3:在系统层用作系统监控步骤4:安装grafana步骤1:安装go 语言环境由于Prometheus 是用golang开发的,所以首先安装一个go环境,Go语言是跨平台,支持Windows、Linux、Mac OS X等系统,还提供有源码,可编译安装。Windows :go1.8.3.windows-amd64.msi.

2021-01-28 10:14:35 663

原创 监控工具—Prometheus—基础介绍

原文作者:IT有意思原文地址:Prometheus(普罗米修斯)——适合k8s和docker的监控系统1、介绍Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,由SoundCloud公司开发,是现在重要的云原生监控平台之一,它允许企业从任何基础设施或应用组件收集和处理指标数据,用于监控容器化工作负载。它与Kubernetes和云原生生态系统中的其他组件集成,通过监控数据可以帮助企业收集和处理四种类型的指标:计数器(counter),量规(g..

2021-01-28 09:52:48 3190 2

原创 动态规划—零钱兑换

leetcode地址:322. 零钱兑换问题描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。比如coins = [1,2,5],amount = 11,11 = 5 + 5 + 1,最终结果为3算法思路:本题可以采用动态规划思路,也可以采用贪心算法思路,此篇文章讲解动态规划如何做。首先看下记忆搜索的方式可以看出在进行递归的时候..

2021-01-28 08:36:17 738

原创 动态规划—编辑距离

leetcode地址:72. 编辑距离问题描述:给你两个单词word1 和word2,请你计算出将word1转换成word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符、删除一个字符、替换一个字符。比如:word1 = "horse", word2 = "ros",最少需要操作三次:horse -> rorse (将 'h' 替换为 'r') rorse -> rose (删除 'r') rose -> ros (删除 'e')算法...

2021-01-28 08:35:34 140 1

原创 贪心算法—零钱兑换

leetcode地址:322. 零钱兑换问题描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。比如coins = [1,2,5],amount = 11,11 = 5 + 5 + 1,最终结果为3算法思路:采用贪心算法:想要总硬币数最少,肯定是优先用大面值硬币,所以对 coins 按从大到小排序。先丢大硬币,再丢会超过总额时,就可以递归..

2021-01-28 08:34:54 1485

原创 动态规划—最小路径和

问题描述:给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。每次只能向下或者向右移动一步。算法思路:采用动态规划,将上述矩阵转为下面的矩阵,状态转移方程为:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j]class Solution { public int minPathSum(int[][] grid) { if (grid == nu...

2021-01-27 15:59:52 213

原创 动态规划—最长公共子序列

问题描述:给定两个字符串text1 和text2,返回这两个字符串的最长公共子序列的长度。比如:text1 = "abcde",text2 = "ace" ,最长公共子序列是 "ace",它的长度为 3。算法思路:明确 dp 数组的含义:对于两个字符串的动态规划问题,套路是通用的。比如说对于字符串 s1 和 s2,它们的长度分别是 m、n,一般来说都要构造一个这样的 DP table:int[][] dp = new int[m+1][n+1]。这里为什么要加1,原因是你可以不加1,但是不加1...

2021-01-27 15:34:32 262

原创 动态规划—最长公共子串

问题描述:有两个字符串str和str2,求出两个字符串中最长公共子串长度。str=acbcbcef,str2=abcbced,则str和str2的最长公共子串为bcbce,最长公共子串长度为5。算法思路:把两个字符串分别以行和列组成一个二维矩阵。 比较二维矩阵中每个点对应行列字符中否相等,相等的话值设置为1,否则设置为0。 通过查找出值为1的最长对角线就能找到最长公共子串。针对于上面的两个字符串我们可以得到的二维矩阵如下:从上图可以看到,str1和str2共有5个公共子串,但最长的公共

2021-01-27 15:10:44 730

原创 Spring框架—SpringBean生命周期

原文作者:sunshujie1990原文地址:请别再问Spring Bean的生命周期了!Spring Bean的生命周期是Spring面试热点问题。这个问题即考察对Spring的微观了解,又考察对Spring的宏观认识,想要答好并不容易!本文希望能够从源码角度入手,帮助面试者彻底搞定Spring Bean的生命周期。一、4个重要阶段在传统的Java应用中,bean的生命周期很简单,使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了。一旦bean不再被使用,.

2021-01-27 14:42:44 112

原创 Spring框架—SpringBean源码分析

原文作者:Javadoop原文地址:Spring IOC 容器源码分析在继续往下之前,我们需要先了解 BeanDefinition。我们说 BeanFactory 是 Bean 容器,那么 Bean 又是什么呢?这里的 BeanDefinition 就是我们所说的 Spring 的 Bean,我们自己定义的各个 Bean 其实会转换成一个个 BeanDefinition 存在于 Spring 的 BeanFactory 中。所以,如果有人问你 Bean 是什么的时候,你要知道 Bean 在..

2021-01-27 14:37:57 499

原创 Spring框架—SpringBean加载过程

原文作者:RunAlgorithm原文地址:图文并茂,揭秘 Spring 的 Bean 的加载过程1. 概述Spring 作为 Ioc 框架,实现了依赖注入,由一个中心化的 Bean 工厂来负责各个 Bean 的实例化和依赖管理。各个 Bean 可以不需要关心各自的复杂的创建过程,达到了很好的解耦效果。我们对 Spring 的工作流进行一个粗略的概括,主要为两大环节:解析:读 xml 配置,扫描类文件,从配置或者注解中获取 Bean 的定义信息,注册一些扩展功能。 加载:通过解析..

2021-01-27 14:30:05 475

原创 Spring框架—SpringBean配置

目录一、配置1、基于XML的配置2、基于注解的配置3、基于Java类的配置二、解析1、基于XML配置的解析2、基于注解配置的解析三、注册一、配置1、基于XML的配置适用场景:Bean实现类来自第三方类库,如:DataSource等<beans> <import resource=“resource1.xml” />//导入其他配置文件Bean的定义 <import resource=“resource2.xml”

2021-01-27 14:02:39 124 2

原创 Spring框架—IoC容器

首先我们需要了解一下是什么是IoC。IoC是Spring的核心技术之一,全称是Inversion of Control(控制反转)。最原始的创建对象的方法就是通过new来实现(手动的编写代码实现),而Spring提供了Ioc容器用于对象的创建以及配置、管理、销毁等。容器启动的时候,读取配置文件,基于配置文件的信息初始化(创建)对象。容器一启动就创建对象的好处是:使用的时候就不用创建了,直接从容器中获取比使用时创建性能好。弊端是:不使用对象但是创建了对象,占用内存。newHollow();当应.

2021-01-27 13:54:52 137

原创 常见索引结构—二叉搜索树

关于普通二叉树:数据结构—二叉树BinaryTree根节点的值大于其左子树中任意一个节点的值,小于其右节点中任意一节点的值,这一规则适用于二叉查找树中的每一个节点。中序搜索二叉树形成的列表是排序列表...

2021-01-27 09:26:42 478

原创 数据结构—二叉树BinaryTree

1、如何定义一个二叉树通过递归的方式定义二叉树,不能直接定义二叉树,只能定义二叉树结点。节点类的属性包括当前节点的值、左子节点、右子节点(子节点的类型也是二叉树结点类)、构造函数,代码如下:public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int ...

2021-01-27 09:24:12 260 1

原创 创建型模式—工厂模式

原文作者:alpha_panda原文地址:设计模式之工厂模式(factory pattern)工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体的例子逐步深入分析,来体会三种工厂模式的应用场景和利弊。1. 简单工厂模式该模式对对象创建管理方式最为简单,因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型...

2021-01-26 11:32:15 179

原创 软件设计模式—控制反转

原文作者:梦在原地原文地址:IoC(控制反转)的概述建议阅读:浅析控制反转1、可插拔(轻量级)框架SpringSpring 号称是一个可以实现模块可插拔(轻量级)的 JavaEE 开发框架。那么它是如何实现程序的可插拔(轻量级)的呢?实现程序的可插拔的核心理念就是控制反转(IoC:Inversion of Control),所谓的控制反转就是将代码的调用权(控制权)从调用放转移给被调用方(服务提供方)。如图所示:(1) 强耦合调用方式将 A 调用 B 的对象修改为 C ..

2021-01-26 11:18:55 404

原创 软件设计模式—面向接口编程

原文作者:laoer2009原文地址:设计模式之面向接口编程01第一次需求玩家有很多属性,例如:身高,性别 blalalala ,玩家可以攻击其他玩家。产品狗YY妹子写程序也是很利索,一天就把程序搞定了,而且还抽象出一个palyer的基类出来,堪称高级程序员必备技能//玩家的基础抽象类abstractclassPlayer{publicstringName{get;set;}//.//....

2021-01-26 11:18:22 337

原创 软件设计模式—依赖注入

原文作者:悬壶醉世原文地址:为什么我们需要依赖注入?以前刚入行的时候一直很困惑,spring这个东西为什么把new一个对象的事情搞这么麻烦。后来慢慢入行这才了解了依赖注入是怎么一回事。本文决定非常浅显的给大家聊聊依赖注入。我们的疑问是从Spring框架的xml开始的,这个xml被人诟病已久。其实呢依赖注入并非值得是用xml来new对象,依赖注入其实是一种思想,一种方法。而xml是它最菜的实现方式。。由浅入深慢慢来~~~~~~第一步:为什么我们不能new对象?随时随地new对象会引发一个问.

2021-01-26 11:06:47 185

原创 Spring框架—体系结构

原文作者:CHS007chs原文地址:Spring核心框架体系结构上图是Spring 5的模块结构图,而这些组件被分别整合在核心容器(Core Container)、AOP(Aspect Oriented Programming)、设备支持(Instrument)、数据访问及集成(Data Access/Integratioin)、Web、报文发送(Messaging)、Test等模块。1.核心容器spring-core:控制反转IoC(Inversion of Control)与依.

2021-01-26 09:59:37 389

原创 HBase—基础介绍

原文作者:Java3原文地址:我终于看懂了HBase,太不容易了...目录摘要:前言一、介绍HBase二、为什么要用HBase三、入门HBase3.1 HBase的数据模型3.2 HBase 的Key-Value3.3 HBase架构3.4 HRegionServer内部3.5 被遗忘的HMaster四、RowKey的设计4.1 根据一个RowKey查询4.2根据RowKey范围查询摘要:HBase是一个NoSQL数据库,一般我们用.

2021-01-26 09:23:22 277

原创 分布式离线计算—HiveSQL

原文作者:极客教程原文地址:Hive 简介目录MapReduce实现SQL的原理Hive的架构Hive如何实现join操作总结Hive 简介,Hive是Hadoop大数据仓库Hive。在数据仓库中,SQL是最常用的分析工具,既然一条SQL可以通过MapReduce程序实现,那么有没有工具能够自动将SQL生成MapReduce代码呢,答案就是Hive。MapReduce的出现大大简化了大数据编程的难度,使得大数据计算不再是高不可攀的技术圣殿,普通工程师也能使用MapRedu.

2021-01-26 09:23:01 529 1

空空如也

空空如也

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

TA关注的人

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