自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mhHao的博客

mhHao的博客

  • 博客(412)
  • 收藏
  • 关注

转载 redis哨兵模式

redis哨兵模式 https://www.cnblogs.com/kevingrace/p/9004460.html

2020-12-09 17:54:34 243

转载 ASM 简介

前言很早之前就写过面向切面的编程思想,主要学习了AOP的思想(参考:AOP简介)以及使用 AspectJ 实现简单的切面编程(参考:AspectJ之切点语法)。其他常见的AOP编程框架还有 Cglib,Hibernate 和 Spring 等等,而这些目前流行的AOP框架绝大多数底层实现都是直接或间接地通过 ASM 来实现字节码操作。因此,如果你想实现一些简单的切面编程,直接采用上面提及的AOP框架是绝对可以实现的,但是这些框架相对于 ASM 来说重了许多,在你进行代码切入的时候,可能会为你引入许多其

2020-10-30 09:59:00 2035

转载 Docker 不香吗,为啥还要 K8s?

Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了。这时候就需要我们的主角 Kubernetes 上场了,先来了解一下 K8s 的基本概念,后面再介绍实践,由浅入深步步为营。关于 K8s 的基本概念我们将会围绕如下七点展开:Docker 的管理痛点什么是 K8s?云架构 & 云原生K8s 架构原理K8s 核心组件K8s 的服务注册与发现关键问题Docker 的管理痛点如果想要将 Docker 应用于庞大的业务实现,是存在困难的编排、管理和调度问题。于是,我

2020-09-12 12:01:16 1627 2

转载 SpringBoot---WebMvcConfigurer详解

简介WebMvcConfigurer接口2.1 addInterceptors:拦截器2.2 addViewControllers:页面跳转2.3 addResourceHandlers:静态资源2.4 configureDefaultServletHandling:默认静态资源处理器2.5 configureViewResolvers:视图解析器2.6 configureContentNegotiation:配置内容裁决的一些参数2.7 addCorsMappings:跨域2..

2020-08-04 19:08:54 859

转载 基于Kafka+ELK搭建海量日志平台

早在传统的单体应用时代,查看日志大都通过SSH客户端登服务器去看,使用较多的命令就是 less 或者 tail。如果服务部署了好几台,就要分别登录到这几台机器上看,等到了分布式和微服务架构流行时代,一个从APP或H5发起的请求除了需要登陆服务器去排查日志,往往还会经过MQ和RPC调用远程到了别的主机继续处理,开发人员定位问题可能还需要根据TraceID或者业务唯一主键去跟踪服务的链路日志,基于传统SSH方式登陆主机查看日志的方式就像图中排查线路的工人一样困难,线上服务器几十上百之多,出了问题难以快速响应,因

2020-08-02 14:26:44 344

转载 Kafka 总结

一、kafka概述:1、消息队列:1)、原理及其有点:客户端消费Queue种的数据有两种方式:1、发布/订阅模式,也就是一对多,数据生产之后,推给所有的订阅者,打个比方:就像是手机上面的QQ消息,你没有打开手机看消息,但是如果有消息就会一直有消息推送过来。2、点对点模式,也就是一对一,这个是主动模式,第一种模式更像是被动模式,这个就是消费者主动拉取生产后的数据。2、消息队列的优点:1)、解耦。2)、冗余。3)、扩展性。4)、灵活性and峰值处理能力。5)、可恢复性。6)、顺序保证。(ps:kafk

2020-07-17 09:31:26 202

转载 mybatis之foreach用法

在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况:动态生成sql语句的查询条件,这个时候我们就可以用mybatis的foreach了foreach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,该参数为必选。index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选open:foreach代码的开始符号,一般是(和close=")“合用。常用

2020-07-14 15:29:45 390 1

转载 JAVA基础知识之NIO.2——Path,Paths,Files

NIO.2JDK7对NIO进行了重大改进,主要包含以下两方面新增Path接口,Paths工具类,Files工具类。 这些接口和工具类对NIO中的功能进行了高度封装,大大简化了文件系统的IO编程。基于异步Channel的IO在NIO基础上改进后的IO被称为NIO.2 , 上面第一个改进包含在java.nio下新增的包java.nio.file包。 第二个改进包含在原有的java.nio.channels下,新增了多个Aysnchronous开头的channel接口和类。本文暂时只讨论第一个改进,基于

2020-07-13 20:50:40 418

转载 Redis5.0 的19 个新特性!

Redis 5.0 GA 正式版发布了!下载地址:download.redis.io/releases/redis-5.0.0.tar.gz源码下载:github.com/antirez/redis/releases/tag/5.0.0先看一下 Redis 5 带来的更新内容:新的流数据类型(Stream data type) https://redis.io/topics/streams-intro2.新的 Redis 模块 API:定时器、集群和字典 API(Timers, Cluste

2020-07-12 16:28:43 612

转载 shell中#*,##*,#*,##*,% *,%% *的含义及用法 替换字符

介绍下Shell中的KaTeX parse error: Expected 'EOF', got '#' at position 4: {}、#̲#和%%使用范例,本文给出了不…{ }分别替换得到不同的值:${file#/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##/}:删掉最后一个 / 及其左边的字符串:my.file.txt${file#.}:删掉第一个 . 及其左边的字符串:file.txt${file##.}:删掉最后一个 .

2020-07-02 11:24:58 2358

转载 CentOS7下Systemctl详解

一、Systemd简介Systemd是由红帽公司的一名叫做Lennart Poettering的员工开发,systemd是Linux系统中最新的初始化系统(init),它主要的设计目的是克服Sys V 固有的缺点,提高系统的启动速度,systemd和upstart是竞争对手,ubantu上使用的是upstart的启动方式,centos7上使用systemd替换了Sys V,Systemd目录是要取代Unix时代依赖一直在使用的init系统,兼容SysV和LSB的启动脚本,而且能够在进程启动中更有效地引导加

2020-06-29 19:35:04 1835

转载 SSH的免密登录详细步骤

需求为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录。但是很多时候为了操作方便,我们都通过设置SSH免密码登录。在这里我对本地机器Cloud10和目标机器Cloud11、Cloud12进行免密登录大致的三步1.本地机器生成公私钥2.上传公钥到目标机器3.测试免密登录具体操作1.准备工作使用root权限分别修改每台机器的hosts,添加每台机器所对应的IP和主机名(我这里分布式集群是3台机器组成的,所以配置3台,习惯将自己的ip和主机名放在第一行)su

2020-06-29 16:28:31 8492

转载 TCP_NODELAY详解

在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这个算法来尝试解决福特汽车公司的网络拥塞问题(RFC 896),该问题的具体描述是:如果我们的应用程序一次产生1个字节的数据,而这个1个字节数据又以网络数据包的形式发送到远端服务器,那么就很容易导致网络由于太多的数据包而过载。比如,当用户使用Telnet连接到远程服务器时,每一次击键操作就会产生1个字节数据,进而发送

2020-06-25 14:04:42 9155

转载 gcc 编译工具(上)--- 编译过程和原理浅析

gcc 编译工具(上)— 编译过程和原理浅析什么是gccgcc(GNU C Compiler)编译器的作者是Richard Stallman,也是GNU项目的奠基者。gcc是GNU Compiler Collection的缩写。最初是作为C语言的编译器,现在已经支持多种语言了,如C、C++、Java、Pascal、Ada、COBOL语言等。gcc支持多种硬件平台,甚至对Don Knuth设计的MMIX这类不常见的计算机都提供了完善的支持。gcc的主要特征gcc是一个可移植的编译器,支持多种硬件

2020-06-20 22:50:22 694

转载 https://www.cnblogs.com/yangxd1994/p/12083014.html

https://www.cnblogs.com/yangxd1994/p/12083014.html

2020-06-19 19:21:16 2047

转载 Java多线程任务超时结束的5种实现方法

在用Java编写并发程序时,往往会碰到某个线程因计算量大或因阻塞而一直处于无响应的情况,我们可能会等的不耐烦(也可能是不想让它占用太多资源)想及时终止掉它,那就需要用到任务超时结束的技巧了。在刚接触到多线程时,我本以为API会提供这样一个多线程类:Thread(Runnable r, long timeout) ,第二个参数用来设置超时时间,可事实并非如此。因为这样的类不具有通用性,面向对象设计语言的目标是达到更高级的抽象,所以系统只提供了更广泛的定时类,及其他一些类方法。这就需要我们借助这些工具来达到任务

2020-06-19 11:06:30 2210

转载 epoll使用详解(精髓)

epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024

2020-06-17 22:03:40 701

转载 CentOS 7 挂载本地光盘作为镜像源

上传iso文件到/usr/local/src一定要确保这个ISO文件上传完毕后再进行下面的操作。创建挂载目录mkdir /media/CentOS7挂载iso文件mount -t iso9660 -o loop /usr/local/src/CentOS-7-x86_64-Everything-1503-01.iso /media/CentOS74. 设置开机自动挂载光盘镜像执行 vi /etc/fstab(fstab 输入错误会使主机无法正常启动而进入emerge.

2020-06-16 09:11:53 2021

转载 一台java服务器可以跑多少个线程?

一台java服务器能跑多少个线程?这个问题来自一次线上报警如下图,超过了我们的配置阈值。京东自研UMP监控分析打出jstack文件,通过IBM Thread and Monitor Dump Analyzer for Java工具查看如下:IBM Thread and Monitor Dump Analyzer for Java共计1661个线程,和监控数据得出的吻合。但这个数量应该是大了,我们都知道线程多了,就会有线程切换,带来性能开销。当时就想到一台java服务器到底可以跑多少个线程呢?跟什么

2020-06-15 19:14:38 1153

转载 使用Spring @DependsOn控制bean加载顺序

使用Spring @DependsOn控制bean加载顺序spring容器载入bean顺序是不确定的,spring框架没有约定特定顺序逻辑规范。但spring保证如果A依赖B(如beanA中有@Autowired B的变量),那么B将先于A被加载。但如果beanA不直接依赖B,我们如何让B仍先加载呢?控制bean初始化顺序可能有些场景中,bean A 间接依赖 bean B。如Bean B应该需要更新一些全局缓存,可能通过单例模式实现且没有在spring容器注册,bean A需要使用该缓存;因此,如果

2020-06-12 18:07:49 206

转载 XXL-JOB快速入门

概述XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。官方地址中文版:http://www.xuxueli.com/xxl-job目前已有多家公司接入xxl-job,包括比较知名的大众点评,京东,优信二手车,北京尚德,360金融 (360),联想集团 (联想),易信 (网易)等等…Quartz作为开源作业调度中的佼佼者,是作业调度的首选。集群环境中Quartz采用API的方式对任务进行管理,Quartz

2020-06-10 22:08:28 1454

转载 java jvm 参数 -Xms -Xmx -Xmn -Xss 调优

堆大小设置JVM 中最大堆大小有三方面限制: 1.相关操作系统的数据模型(32-bt还是64-bit)限制; 2.系统的可用虚拟内存限制; 3.系统的可用物理内存限制. 在32位系统下,一般限制在1.5G~2G;64为操作系统对内存无特定限制.机器配置:128G内存 32核CPU典型设置:java -Xmx72g -Xms72 -Xmn4g -Xss256m-Xmx72g:设置JVM最大可用内存为72g.-Xms72g:设置JVM促使内存为72g.此值可以设置与-Xmx相同,以避免每次垃圾回

2020-06-09 16:34:51 910

转载 深入springboot原理——一步步分析springboot启动机制(starter机制)

文章主目录前言起步依赖自动配置总结回到顶部前言使用过springboot的同学应该已经知道,springboot通过默认配置了很多框架的使用方式帮我们大大简化了项目初始搭建以及开发过程。本文的目的就是一步步分析springboot的启动过程,分析springboot是如何帮我们简化这个过程的。springboot帮我们做了什么通常搭建一个基于spring的web应用,我们需要做以下工作:1、pom文件中引入相关jar包,包括spring、springmvc、redis、mybaits、l

2020-06-08 22:33:26 253

转载 spring boot 工作原理

一,springspring iocioc(inversion of control,控制反转)有两种实现方式,一种是di(dependency injection),另一种是dl(dependency lookup,依赖查找),前者是当前软件实体被动接受其依赖的其他组件被ioc容器注入,而后者则是当前软件实体主动去某个服务注册地查找其依赖的那么服务。任何一个使用spring框架构建的独立的Java应用,通常会存在一些类似于context.getBean(…)的代码,实际上,这行代码做的就是dl的工作

2020-06-08 22:32:05 551

转载 centos7 开启mysql5.7远程连接授权并连接

centos7 开启mysql5.7远程连接授权并连接Aledsan 2020-04-13 11:48:46 302 收藏展开在centos7安装了mysql数据库,却发现只能本地连接,那么如何来实现远程连接呢, 下面就讲述如何开启mysql5.7远程连接授权并远程连接。一、远程连接授权如果要用第三方工具,如Navicat启用远程访问,是要授权的,因为mysql默认禁止远程访问这里我们有两种方法,一种是下面这种sql语句授权GRANT ALL PRIVILEGES ON . TO ‘roo

2020-06-08 19:11:59 741

转载 Redis的epoll模型

之前相关文章推荐:Redis高性能与epoll本文,我们从源代码的角度,简单理解Redis是如何使用epoll以及epoll的实现原理。浅入浅出~ 找我交流通过本文了解如下三件事儿,就算是达到了本文目的:1、epoll是Linux提供的系统实现,核心方法只有三个2、epoll效率高,是因为基于红黑树、双向链表、事件回调机制3、redis的IO多路复用,Linux上用epoll进行了实现epoll是Linux内核提供的一种多路复用器,照例问问Linux的男人:EPOLL(7)

2020-06-04 22:41:48 2960

转载 Prometheus vs Zabbix

公司要上监控,Prometheus 是最热门的监控解决方案,作为喜新厌旧的程序员,我当然是选择跟风了,但上级更倾向于 Zabbix,那没办法,只能好好对比一番,给出几个靠谱的理由了。Monitoring system但稍稍深入一点,我就体会到,我之前其实并没有真的理解口口相传的 Prometheus 的优点,这次对比虽然是始于无奈,但还是蛮有意义的,正好总结一下自己粗浅的体会。对比先对两者的各自特点进行一下对比:Zabbix Prometheus后端用 C 开发,界面用 PHP 开发,定制化

2020-06-04 22:34:33 351

转载 Linux vmstat命令详解

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。物理内存和虚拟内存区别我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是

2020-06-01 14:24:32 146

转载 基于Spark的电影推荐系统,包含爬虫项目、web网站、后台管理系统以及spark推荐系统

基于Spark的电影推荐系统本次项目是基于大数据过滤引擎的电影推荐系统–“懂你”电影网站,包含了爬虫、电影网站(前端和后端)、后台管理系统以及推荐系统(Spark)。...

2020-04-08 10:10:54 1771

转载 背包九讲——全篇详细理解与代码实现

DD engi 背包九讲的个人整理

2020-04-04 13:51:35 644

转载 JVM源码分析系列

JVM源码分析系列占小狼32019.01.27 10:35:22字数 363阅读 4,258记得关注一下公众号JVM G1算法系列G1垃圾收集器介绍G1垃圾收集器之RSetG1垃圾收集器之SATBG1垃圾收集器之对象分配过程ZGC系列ZGC,一个超乎想象的垃圾收集器ZGC什么时候进行垃圾回收JVM源码分析系列深入分析Object.finalize方法的实现原理JV...

2020-04-02 15:27:45 530

原创 随笔

每次面试都是成长,看到自己的不足,不要害怕失败。

2020-03-10 20:37:39 139

转载 使用 JMeter 进行压力测试

使用 JMeter 进行压力测试一.前言压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter。二.关于JMeterApache JMeter是Apache组织开发的基于Java的压力测...

2020-03-08 11:55:48 1066

转载 何时进行服务熔断、服务降级、服务限流?

伴随着微服务架构被宣传得如火如荼,一些概念也被推到了我们面前(管你接受不接受),其实大多数概念以前就有,但很少被提的这么频繁(现在好像不提及都不好意思交流了)。想起有人总结的一句话,微服务架构的特点就是:“一解释就懂,一问就不知,一讨论就吵架”。服务熔断在介绍熔断机制之前,我们需要了解微服务的雪崩效应。在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可以独...

2020-03-06 20:11:42 271

转载 从原理到实战,彻底搞懂Nginx(高级篇)

配置实例  接 从原理到实战,彻底搞懂Nginx,本文为 Nginx 实操高级篇。通过配置 Nginx 配置文件,实现正向代理、反向代理、负载均衡、Nginx 缓存、动静分离和高可用 Nginx 6种功能,并对 Nginx 的原理作进一步的解析。当需要使用 Nginx 配置文件时,参考本文实例即可,建议收藏。正向代理  正向代理的代理对象是客户端。正向代理就是代理服务器替客户端去访问目标...

2020-03-03 17:58:53 975 2

转载 Zookeeper面试题

目录ZooKeeper是什么?ZooKeeper提供了什么?Zookeeper文件系统ZAB协议?四种类型的数据节点 ZnodeZookeeper Watcher 机制 – 数据变更通知客户端注册Watcher实现服务端处理Watcher实现客户端回调WatcherACL权限控制机制UGO(User/Group/Others)ACL(Access Control List...

2020-03-01 18:40:41 301

转载 拼多多社招面经:Redis是重点,https是怎么做到安全的?

1、简单做一下自我介绍把,为什么这么快就想换工作。简单说下你简历中的项目。2、看你在项目中用了redis,我们先聊聊redis吧,常用的数据结构有哪几种,在你的项目中用过哪几种,以及在业务中使用的场景,redis的hash怎么实现的,rehash过程讲一下和JavaHashMap的rehash有什么区别?redis cluster有没有了解过,怎么做到高可用的?3redis集群和哨兵机制有什...

2020-02-29 00:16:55 479

转载 架构师的选择,Kafka还是Rabbit MQ

介绍作为处理许多基于微服务的系统的软件架构师,我经常遇到一个不断重复的问题:“我应该使用RabbitMQ还是Kafka?” 由于某些原因,许多开发人员认为这些技术是可互换的。 尽管在某些情况下确实如此,但这些平台之间存在各种潜在的差异。结果,不同的方案需要不同的解决方案,选择错误的方案可能会严重影响您设计,开发和维护软件解决方案的能力。本文的目的是首先介绍基本的异步消息传递模式。 然后,它将...

2020-02-29 00:09:21 367

转载 SpringCloud面试常见问题

1.SpringCloud和DubboSpringCloud和Dubbo都是现在主流的微服务架构SpringCloud是Apache旗下的Spring体系下的微服务解决方案Dubbo是阿里系的分布式服务治理框架从技术维度上,其实SpringCloud远远的超过Dubbo,Dubbo本身只是实现了服务治理,而SpringCloud现在以及有21个子项目以后还会更多所以其实很多人都会说Dub...

2020-02-28 16:08:36 616

转载 Nginx+Keepalived高可用集群

1.Keepalived高可用软件Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redu...

2020-02-23 21:06:43 135

空空如也

空空如也

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

TA关注的人

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