elasticsearch基础操作
一 初识elasticsearch
1.什么是elasticsearch?
elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。
elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。
elasticsearch是elastic stack(ELK)的核心,负责存储、搜索分析数据。
2.elasticsearch的发展
Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。
官网地址:https://lucene.apache.org/
Lucene的优势:
易拓展
高性能(基于倒排索引)
Lucene的缺点:
只限于Java语言开发
学习曲线陡峭
不支持水平拓展
2004年Shay Banon基于Lucene开发了Compass
2010年Shay Banon重写了Compass,取名为Elasticsearch。官网地址: https://www.elast ...
RabbitMQ基础操作
一 同步通信
1.同步通信的问题
微服务间基于Feign的调用就属于同步方式,存在一些问题
耦合度高:每次加入新的需求,都需要修改原来党的代码
性能下降:调用者需要等待服务提供者响应,如果调用链过长则响应时间等于每次调用的时间之和
资源浪费:调用链中的每个服务在等待响应的过程中,不能释放请求占用的资源,高并发场景下会极度浪费资源
级联失败:如果服务提供者出现问题,所有调用方法都会跟着出问题,如同多米诺骨牌一样,迅速导致整个微服务群故障
2.同步调用的优点
时效性强,可以立即得到结果
二 异步调用
异步调用常见实现就是事件驱动模式
1.异步通信的优点
服务解耦
性能提升,吞吐量提高
服务没有强依赖,不担心级联失败问题
流量削峰
2.异步通信的缺点
依赖于Broker的可靠性、安全性、吞吐能力
架构复杂了,业务没有明显的流程线,不好追踪管理
三 RabbitMQ 快速入门
1.什么是MQ?
MQ(MessageQueue)中文是消息队列,字面看来就是存放消息的队列。也就是事件驱动架构中的Broker。
属性
RabbitMQ
ActiveMQ
RocketMQ
K ...
Docker使用基础
一 项目部署的问题
大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题:
依赖关系复杂,容易出现兼容性问题
开发、测试、生产环境有差异
简单来说:Docker是一个快速交付应用、运行应用的技术
可以将程序及依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
运行时利用沙箱机制形成隔离容器,各个应用互不干扰
启动、移除都可以通过一行命令完成,方便快捷
二 什么是Docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。(From 百度百科)
三 Docker如何解决依赖兼容性问题?
将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
将每个应用放到一个隔离容器去运行,避免相互干扰
四 Docker如何解决不同系统环境的问题?
Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
Docker运行到不同操作系统时,直接基于打包的函 ...
每日编程(20220607)
最长公共前缀II
题目: 已知某二叉树的先序序列和中序序列,编程计算并输出该二叉树的后序序列。
输入格式:
1字符串数组
输出格式:
1前缀字符串
输入样例:
1["flower","flow","flight"]
输出样例:
1"fl"
思路:
用一个变量来保存最长的前缀,将第一个数组字符串作为基串,逐个匹配后面元素的字符串。
代码:
12345678910111213141516171819202122232425262728293031323334353637383940414243#include <bits/stdc++.h> using namespace std;class Solution{ public: string longestCommonPrefix(vector<string> &strs){ if(strs.empty() || strs.size() == 0) return &qu ...
每日编程(20220602)
盛最多水的容器 I
题目: 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明:你不能倾斜容器,且 n 的值至少为 2。
输入格式:
1由方括号包裹以逗号分隔的整型数组
输出格式:
1整型数字
输入样例:
1[1,8,6,2,5,4,8,3,7]
输出样例:
149
思路:
双重循环暴力破解
代码:
1234567891011121314151617181920212223242526272829303132#include <bits/stdc++.h>using namespace std;int main(void) { char s; int res = 0; vector<int> nums; // 解析输入的字符串 while(cin >> s) { if( ...
百度面试总结
和CSS相关求字体的大小 主要问css的权重
12345678910111213141516171819202122232425262728<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> #a { font-size: 12px; } /* ...这里还有一部分,具体的记不清楚了,和c没关 */ div.c { ...
防抖和节流
函数节流(throttle)
节流: 让函数有节制地执行,而不是毫无节制的触发一次就执行一次。什么叫有节制呢?就是在一段时间内,只执行一次
代码:
123456789101112131415161718192021/** * 节流函数 * @param {Function} fun 需要节流的函数 * @param {Number} delay 间隔触发的时间 * @returns */ function throttle(fun, delay) { let flag = true, timer = null return function (...args) { let context = this if (!flag) { return } flag = false clearTimeout(timer) timer = setTimeout(() => { fun.apply(context, args) fla ...
CSS实现水平垂直居中的几种方式
实现水平垂直居中的几种方式
基本页面代码
代码:
12345678910111213141516171819202122232425262728293031323334353637383940<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> *{ padding: 0; margin: 0; } .parent ...
嵌套数组的扁平化处理
JavaScript 实现数组的扁平化处理
什么是数组的扁平化处理
数组的扁平化处理指将一个多维数组变成一维数组
1[1, [2, 3, [4, 5]]] ---> [ 1, 2, 3, 4, 5 ]
Mode One (方式一) ES6 的 flat()
ES6 提供了数组方法 flat(depth) 对数组进行扁平化处理。
参数:
depth 被扁平化的数组的层级,默认值为 1 可以为 Infinity ,表示完全扁平化
返回值:
一个扁平化处理后的新数组
1234const arr = [1, [2, 3, [4, 5]]]const newArr = arr.flat(Infinity)console.log(newArr) // [ 1, 2, 3, 4, 5 ]
Mode Two (方式二) ES6 的 拓展运算符
...[] 能用于拓展数组,将一个数组转为用逗号分隔的参数序列。
思想: 通过arr.some()判断数组是否还嵌套数组,嵌套就对嵌套在最外层的数组进行拓展运算。
12345678910111213141516const arr = [1, [2, 3 ...
vue的双向绑定原理
Vue 的双向绑定原理
主页面
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <div id="app"> <h1>{& ...




