自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yfy的博客

Stay hungry. Stay foolish

  • 博客(302)
  • 资源 (3)
  • 收藏
  • 关注

原创 Docker中进行redis的集群配置和动态扩缩容

Docker配置redis集群以及动态扩容和缩容

2022-05-30 14:00:57 390 1

原创 Docker中安装mysql主从复制

1)新建主服务器容器实例3307docker run -p 3307:3306 --name mysql-master \-v /mydata/mysql-master/log:/var/log/mysql \-v /mydata/mysql-master/data:/var/lib/mysql \-v /mydata/mysql-master/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.72)进入 /mydata/m

2022-05-28 18:25:54 262

原创 Docker容器数据卷

1.1 踩坑点Docker挂载主机目录访问如果出现 cannot open directory .:Permission denied解决办法:在挂载目录后加一个 --privileged=true参数即可。该命令可以扩大容器的权限解决挂载目录没有权限的问题,也即使用该参数,container内的root拥有root真正的权限,否则,container内的root只是外部的一个普通用户权限。1.2 是什么有点类似于redis的RDB和AOF,将docker容器内的数据保存到宿主机的磁盘中。

2022-05-28 18:22:51 275

原创 Docker镜像讲解

1.1 镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像。只有通过这个镜像文件才能生成Docker容器实例。(类似Java中new出来一个对象)1.2 分层的镜像以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层在下载docker的镜像实际上由一层一层的文件系统组成,叫做UnionFS(

2022-05-27 09:10:41 2200

原创 Docker的常用命令

1.1 帮助启动类命令启动docker: systemctl start docker停止docker: systemctl stop docker重启docker: systemctl restart docker查看docker状态: systemctl status docker开机启动: systemctl enable docker查看docker概要信息: docker info查看docker总体帮助文档: docker --help查看docker命令帮助文档: dock

2022-05-25 23:01:03 1308

原创 RabbitMQ(六)整合SpringBoot

1.1 导入依赖<dependencies> <!--RabbitMQ 依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependenc...

2022-04-08 21:10:40 1460

原创 RabbitMQ(五)死信队列和延迟队列

1.1 概念先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列

2022-04-08 21:07:52 4233

原创 RabbitMQ(四)交换机exchange

5.1.1 概念RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息。是应该把这些消息放到特定队列还是说把他们到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。5.1.2 类型 直接(direct) .

2021-08-21 18:00:12 331

原创 RabbitMQ(三)发布确认

4.1 发布确认原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以设置

2021-08-21 17:56:05 210

原创 RabbitMQ(二)工作队列

工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。3.1 轮询分发消息在这个案例中我们会启动两个工作线程,一个消息发送线程,我们来看看它们两个工作线程是如何工作的。3.1.1 抽取工具类/** * 连接工厂创建信道工具类 */public class RabbitMqUtil.

2021-08-17 20:59:07 190

原创 RabbitMQ(一)helloworld

1.1 MQ的相关概念1.1.1 什么是MQMQ,从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信机制。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。1.1.2 为什么要使用MQ 流量削峰 举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单绰绰有余,但是在高峰期,有两万次下单系统

2021-08-17 20:53:10 235

原创 java常见的内存泄漏

1. 基本理解内存泄漏和内存溢出的关系:1)内存泄漏申请了内存用完了不释放,比如一共有1024M的内存,分配了512M的内存一直不回收,那么可以用的内存只有512M了,仿佛泄漏掉了一部分。2)内存溢出申请内存时,没有足够的内存可以使用。泄漏的分类经常发送:发送内存泄漏的代码会被多次执行,每次执行,泄漏一块内存偶尔发送:在某些特定情况下才会发送一次性:发送内存泄漏的方法只会执行一次隐式泄漏:一直占着内存不释放,直到执行结果;严格的说这个不算内存泄漏,因.

2021-08-07 17:32:57 402

原创 JVM监控-命令行篇

1. 概述性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。Java作为最流行的编程语言之一,其应用性能诊断一直受到业界广泛关注。可能造成Java出现性能问题的因素非常多,例如线程控制、磁盘读写、数据库访问、网络I/O,垃圾收集等。想要定位这些问题,一款优秀的性能诊断工具必不可少。2. jps:查看正在运行的java进程2.1 基本情况jps(Java Process Status):显示指定系统内所有的HotSp

2021-08-07 16:56:39 288

转载 ElasticSearch中文分词器-IK分词器的使用

IK分词器的使用首先我们通过Postman发送GET请求查询分词效果GET http://localhost:9200/_analyze{ "text":"农业银行"}得到如下结果,可以发现es的默认分词器无法识别中文中农业、银行这样的词汇,而是简单的将每个字拆完分为一个词,这显然不符合我们的使用要求。Copy{ "tokens": [ { "token": "农", "start_offset": 0,

2020-12-23 15:22:34 296

原创 docker安装启动nginx详细步骤

1.随便启动一个nginx实例,只是为了复制出配置如果没有对应的nginx版本,会自动去docker仓库下载docker run -p 80:80 --name nginx -d nginx:1.102.将容器内的配置文件拷贝到当前文件。我们将配置文件放到 /mydata/nginx目录下cd /mydata/mkdir nginxdocker container cp nginx:/etc/nginx .mv nginx/ conf/mkdir nginxmv conf/

2020-12-23 15:10:46 8997 3

原创 elasticsearch aggregation的入门案例

1. 数据的准备我们的数据结构为:https://github.com/elastic/elasticsearch/blob/master/docs/src/test/resources/accounts.json{"index":{"_id":"1"}}{"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes La

2020-12-22 20:18:09 282

原创 docker安装elasticsearch和kibana

docker安装elasticsearch下载镜像文件docker pull elasticsearch:7.4.2创建挂载目录文件夹配置elasticsearch.yml可以允许远程访问mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/dataecho "http.host: 0.0.0.0" >>> /mydata/elasticsearch/config/elastics

2020-12-22 14:26:15 350

原创 Spring 使用 JSR303自定义校验注解+分组校验

我们有这样一个需求,想要校验一个int类型的变量,校验它的值必须为我们所指定的值,且在修改状态分组时生效。 @ListValue(vals = {0, 1}, groups = {UpdateStatusGroup.class})1. 导入依赖 <dependency> <groupId>javax.validation</groupId> <artifactId>valida..

2020-12-16 17:33:04 595

原创 Vue路由案例演示

1. 简介Vue.js 路由允许我们通过不同的 URL 访问不同的内容。通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。Vue.js 路由需要载入 vue-router 库中文文档地址:vue-router文档。2. 安装1)直接下载https://unpkg.com/vue-router/dist/vue-router.js2)NPMnpm install vue-router3. 案例演示

2020-12-10 14:30:17 615

原创 vue组件化编程

组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树:1. 使用vue-cli创建模板项目1.1 简介1) vue-cli 是 vue 官方提供的脚手架工具2) github: https://github.com/vuejs/vue-cli3) 作用: 从 https://github.com/vuejs-tem.

2020-12-09 11:06:43 415

转载 VueX(Vue状态管理模式)

一、初识VueX1.1 关于VueXVueX是适用于在Vue项目开发时使用的状态管理工具。试想一下,如果在一个项目开发中频繁的使用组件传参的方式来同步data中的值,一旦项目变得很庞大,管理和维护这些值将是相当棘手的工作。为此,Vue为这些被多个组件频繁使用的值提供了一个统一管理的工具——VueX。在具有VueX的Vue项目中,我们只需要把这些值定义在VueX中,即可在整个Vue项目的组件中使用。1.2 安装由于VueX是在学习VueCli后进行的,所以在下文出现的项目的目录请参照VueCl

2020-12-07 14:32:14 165

原创 vue入门教程(二)

8. 事件处理可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。 <button @click="test1">test1</button> <button @click="test2('abc')">test2</button>​<script> new Vue({ el: '#example', methods: { // 默认事件形参: event ...

2020-12-03 11:16:43 552 1

原创 vue入门教程(一)

1. vue简介1.1 vue是什么官网:https://cn.vuejs.org/Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。1.2 vue的特点1) 遵循 MVVM 模式2) 编码简洁, 体积小, 运行效率高, 适合移动/PC 端开发.

2020-12-03 11:09:12 8381

原创 webpack从入门到精通(四)优化打包配置总结②

1. tree shakingtree-shaking的本质是消除无用的js代码。无用代码消除广泛存在于传统的编程语言编译器中,编译器可以判断出某些代码根本不影响输出,然后消除这些代码,这个称之为DCE(dead code elimination)。Tree-shaking 是 DCE 的一种新的实现,Javascript同传统的编程语言不同的是,javascript绝大多数情况需要通过网络进行加载,然后执行,加载的文件大小越小,整体执行时间更短,所以去除无用代码以减少文件体积,对javascrip

2020-11-27 10:47:59 357

原创 webpack从入门到精通(四)优化打包配置总结①

1.HMRHMR 即模块热替换(hot module replacement)的简称,当你对代码进行修改并保存后,webpack 将对代码重新打包,并将新的模块发送到浏览器端,浏览器通过新的模块替换老的模块,这样在不刷新浏览器的前提下就能够对应用进行更新。一个模块发生变化,只会重新打包这一个模块(而不是打包所有模块), 极大的提升构建速度。1)配置修改基本代码结构为之前博客里使用的webpack开发环境devServer。使用webpack-dev-server,设置 hot 属性为 .

2020-11-26 10:24:59 399 2

原创 Promise和Async-Await的入门教程

1. Promise是什么1.1 理解 抽象表达: Promise 是一门新的技术(ES6 规范) Promise 是 JS 中进行异步编程的新解决方案(旧方案是单纯使用回调函数) 具体表达: 从语法上来说: Promise 是一个构造函数 从功能上来说: promise 对象用来封装一个异步操作并可以获取其成功/失败的结果值 1.2 Promise的状态改变Promise一种有三种状态,为 pending、fulfi

2020-11-25 20:52:08 395

转载 webpack之optimization.runtimeChunk作用

runtimeChunk,直观翻译是运行时的chunk文件,其作用是啥呢,通过调研了解了一波,在此记录下。何为运行时代码?形如import('abc').then(res=>{})这种异步加载的代码,在webpack中即为运行时代码。在VueCli工程中常见的异步加载路由即为runtime代码。{ path: '/about', name: 'About', // route level code-splitting // this generates

2020-11-25 10:55:27 9668 8

原创 webpack从入门到精通(三)生产环境的基本配置

1. 提取css成单独文件1)创建文件index.js中我们引入css文件import '../css/a.css';import '../css/b.css';2)下载plugin包npm install --save-dev mini-css-extract-plugin3)修改配置文件const { resolve } = require('path');const HtmlWebpackPlugin = require('html-webpack-pl.

2020-11-25 10:19:06 339

原创 webpack从入门到精通(二)开发环境的基本配置

1. 打包样式资源1)创建文件文件代码如下:index.less#title { color: #fff;}index.csshtml, body{ margin: 0; padding: 0; height: 100%; background-color: pink;}​index.js// 引入样式资源import './index.css';import './index.less';2)下载安装loader包np...

2020-11-24 20:22:27 202

原创 webpack从入门到精通(一)初体验

1. webpack简介1.1 webpack是什么webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。 在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。 它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)。1.2 webpack的五个核心概念Entry入口(Entry)指示 webpack 以哪个文件为入口起点开始打包,分析构建内部依赖图。O.

2020-11-24 20:13:31 226

原创 ECMAScript6入门教程(二)

ECMAScript入门教程(一)2.11 生成器生成器函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同 function * gen(){ yield '一只没有耳朵'; yield '一只没有尾部'; yield '真奇怪'; }​ let iterator = gen(); console.log(iterator.next());...

2020-11-18 18:09:14 290

原创 ECMAScript6入门教程(一)

1.什么是ECMA1.1 什么是ECMAECMA(European Computer Manufacturers Association)中文名称为欧洲计算机制造商协会,这个组织的目标是评估、开发和认可电信和计算机标准。1994 年后该组织改名为 Ecma 国际。1.2 什么是ECMAScriptECMAScript 是由 Ecma 国际通过 ECMA-262 标准化的脚本程序设计语言。1.3 为什么要学习ES6 ES6 的版本变动内容最多,具有里程碑意义 ES6 加入许

2020-11-18 18:04:09 725

原创 前端实现mac笔记本停靠栏效果

1.代码演示代码如下:<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0; padding: 0;

2020-11-11 20:45:30 327

转载 css中width:100%与width:auto的区别

在布局中,width:100%和width:auto都会经常用到,那么,二者究竟有何区别呢?下面就来探讨下。先上代码<style> * { margin: 0; padding: 0; } .parent { width: 800px; margin: 50px auto; border: 2px solid red; } .child1 { background: orang

2020-11-05 16:03:44 1007

转载 mysql和mongodb替换字段中某字符

1.替换mysql字段中关键字符(将zjy.zyzhjyy.cn域名替换成zjy.zyjyxx.com)。 注意:操作前请先做好数据备份。 1 updatecloud_push_logsetresult_path=replace(result_path,'zjy.zyzhjyy.cn','zjy.zyjyxx.com'); cloud_push_log:指定表名result_path:字段名2.替换mongodb字段...

2020-11-04 15:06:48 1865 1

原创 javascript之DOM总结

1.简介当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 模型被构造为对象的树,这种结构被称为节点树:节点树中的节点彼此拥有层级关系。我们常用父(parent)、子(child)和同胞(sibling)等术语来描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。 在节点树中,顶端节点被称为根(root)。 每个节点都有父节点、除了根(它没有父节点)。 一个节点可拥有任意数量的子节点.

2020-10-27 11:27:27 276

原创 CSS3新增属性详解

1.圆角在 CSS2 中添加圆角棘手。我们不得不在每个角落使用不同的图像。在 CSS3 中,很容易创建圆角。在 CSS3 中 border-radius 属性被用于创建圆角:如果你在 border-radius 属性中只指定一个值,那么将生成 4 个 圆角。但是,如果你要在四个角上一一指定,可以使用以下规则: 四个值: 第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角。 三个值: 第一个值为左上角, 第二个值为右上角和左下角,第三个值为右下角

2020-10-26 15:11:21 2311

原创 Disconf原理和实践

一.概述1.什么是配置应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。配置主要有以下几个特点: 配置是独立于程序的只读变量 配置首先是独立于程序的,同一份程序在不同的配置下会有不同的行为 其次,配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置 配置伴随应用的整个生命周期 配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初

2020-10-26 09:56:26 5999 1

原创 CSS布局相关汇总

1.margin外边距margin 清除周围的(外边框)元素区域。margin 没有背景颜色,是完全透明的。margin 可以单独改变元素的上下左右边距,也可以一次改变所有的属性。属性 描述 margin 简写属性。在一个声明中设置所有外边距属性。 margin-bottom 设置元素的下外边距。 margin-left 设置元素的左外边距。 margin-right 设置元素的右外边距。 margin-top 设置元素的上外边距.

2020-10-23 18:08:51 161

原创 CSS样式相关汇总

1.CSS背景CSS 背景属性用于定义HTML元素的背景。Property 描述 常用属性值 background 简写属性,作用是将背景属性设置在一个声明中 background-attachment 背景图像是否固定或者随着页面的其余部分滚动 scroll、fixed background-color 设置元素的背景颜色 background-image 把图像设置为背景 background-posit...

2020-10-22 19:31:19 222

webpack学习资料

webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。该资料为webpack学习课程的课件及代码资料

2020-11-25

Kafka_Learn.zip

该代码包含kafka的生产者、消费者原理详解,各种参数解析,主题、分区、存储等的代码演示,可用于搭配博客学习

2020-05-27

web_demo.zip

该项目为Jenkins测试项目,用来学习Jenkins持续集成部署的时候可以直接下载,将该项目部署到tomcat中。Jenkinsfile脚本已经写好,稍微改下就能用

2020-05-21

空空如也

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

TA关注的人

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