other
文章平均质量分 73
Meiko丶
这个作者很懒,什么都没留下…
展开
-
2022.04.01 END
end原创 2022-04-01 15:43:26 · 483 阅读 · 0 评论 -
几个智力题
1. 只有两个无刻度的水桶,一个可以装6L水,一个可以装5L水,如何在桶里装入3L的水提示:这个问题的本质就是利用两个水桶的已知容量倒来倒去,问题的解法并不唯一。先将5L的桶装满,将5L的桶的水倒入6L的桶中。这时5L的桶是空的,6L的桶中有5L的水 再将5L的桶装满,倒入6L的桶中。这时5L的桶有4L的水,6L的桶是满的 将6L的桶中的水倒掉,5L的桶的水倒入6L的桶中。这时5L的桶是空的,6L的桶中有4L的水 将5L的桶装满,倒入6L的桶中。这时5L的桶还有3L的水,6L的桶是满的。转载 2022-01-19 17:39:13 · 272 阅读 · 0 评论 -
分布式链路追踪(概念)
分布式链路追踪(Distributed Tracing),也叫 分布式链路跟踪,分布式跟踪,分布式追踪 等等。本文使用分布式Trace来简称分布式链路追踪。本篇文章只是从大致的角度来阐述什么是分布式Trace,以及一个分布式Trace系统具备哪些要点和特征。场景先从几个场景来看为什么需要分布式Trace场景1开发A编写了一段代码,代码依赖了很多的接口。一个调用下去没出结果,或者超时了,Debug之后发现是接口M挂了,然后找到这个接口M的负责人B,告知B接口挂了。B拉起自己的调用和De转载 2022-01-14 16:14:19 · 2249 阅读 · 0 评论 -
RESTful理解
什么样才叫真正的 RESTful ?其实网上 RESTful 的文章有挺多的,不过有些讲的糊里糊涂的,而且很大部分都忽略了 HATEOAS。在之前的面试中面试官就问过我,你怎么理解 RESTful 的,英文全称是啥?为什么叫这个名字?当时我人都傻了。面试官不讲武德,针对我这个刚出社会的小伙子。其实有很多人也稀里糊涂的,也包括我自己。就面向资源呗,不加动词咯,还能咋滴,我加动词不也能用吗?而且我之前还特不能理解,为啥这叫架构?我特意搜索了下架构的解释。软件架构是有关软件整转载 2022-01-10 15:38:13 · 139 阅读 · 0 评论 -
linux查日志常用命令
catcat : 由第一行开始显示文件所有内容参数说明cat [-AbEnTv]参数:-A : 相当于-vET 的整合参数,可列出一些特殊字符,而不是空白而已-b :列出行号,仅针对非空白行做行号显示,空白行不标行号-E :将结尾的断行字符$显示出来-n : 打印行号,连同空白行也会有行号,与-b的参数不同复制代码范例demo范例一:查看cattest.txt的内容[root@iZ2zehkwp9rwg4azsvnjbuZ whx]# cat cattest.tx原创 2021-11-29 19:00:48 · 1353 阅读 · 0 评论 -
一图秒懂CDN原理
线上故障:国外访问,页面中图片空白!!前些天,线上灰度了一个功能,下午接到一些业务上报国外用户访问时图片无法显示,但是国内访问都是正常,所以怀疑是国外CDN问题导致。先了说明下现状:图片保存在阿里OSS中 国内使用了阿里云CDN 国外使用Akamai(全球CDN厂商)按理说,CDN都有,图片不应该访问不到。于是,在脑子中根据CDN的原理,先思考下可能的问题CDN原理CDN全称是Content Delivery Network,即内容分发网络,也称为内容传送网络。CDN是构建.转载 2021-11-29 10:26:00 · 1631 阅读 · 0 评论 -
通过PID进程号查找启动程序全路径
1、通过netstat -lntp可以查看到系统正在运行的进程,也是可以看到对应进程的PID号 2、如上图中,如果想知道mysqld进程启动程序的全路径的话,可以通过下面的方法: 截图中mysqld的进程号是1636,进入/proc目录下以该PID命名的目录中3、进入到/proc/1636 目录下后,会看到一个exe的文件, ls -ail就可以查看到程序的全路径 4、如果查看其他程序也是同样的方法...原创 2021-11-19 12:24:14 · 8743 阅读 · 0 评论 -
GIT详细
文章目录Git是什么? Git的相关理论基础 日常开发中,Git的基本常用命令 Git进阶之分支处理 Git进阶之处理冲突 Git进阶之撤销与回退 Git进阶之标签tag Git其他一些经典命令Git是什么在回忆Git是什么的话,我们先来复习这几个概念哈~什么是版本控制?百度百科定义是酱紫的~版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。那些年,我们的毕业论文,其实就是版本变更的真实写照...脑洞一下,转载 2021-10-20 18:08:34 · 190 阅读 · 0 评论 -
TCP协议经典十五问
1. 讲下TCP三次握手流程开始客户端和服务器都处于CLOSED状态,然后服务端开始监听某个端口,进入LISTEN状态第一次握手(SYN=1, seq=x),发送完毕后,客户端进入 SYN_SEND 状态 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1), 发送完毕后,服务器端进入 SYN_RCVD 状态。 第三次握手(ACK=1,ACKnum=y+1),发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLIS.转载 2021-10-13 17:25:12 · 1233 阅读 · 0 评论 -
观察者模式
场景我们接到一个来自气象局的需求:气象局需要我们构建一套系统,这系统有两个公告牌,分别用于显示当前的实时天气和未来几天的天气预报。当气象局发布新的天气数据(WeatherData)后,两个公告牌上显示的天气数据必须实时更新。气象局同时要求我们保证程序拥有足够的可扩展性,因为后期随时可能要新增新的公告牌。概况这套系统中主要包括三个部分:气象站(获取天气数据的物理设备)、WeatherData(追踪来自气象站的数据,并更新公告牌)、公告牌(用于展示天气数据)WeatherData知道如何跟气原创 2021-08-13 16:35:45 · 107 阅读 · 0 评论 -
2.5D和3D
首先是2.5D的摄像机,可以看的出来, 2.5D 的摄像机被限定在了一个圆周上。 除了能拉远拉近, 角度是完全不会变的。2.5D的摄像头看见的图像。不管你怎么转都是以这个角度 对着人物拉近拉远,以及围绕周身旋转。--------------------------------------------------------------分割---------------------------------------------然后是2.8D看摄像机示意图。2.8D在2.5D的基础上 增加了原创 2021-07-29 16:21:58 · 1983 阅读 · 0 评论 -
哈夫曼编码
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。哈夫曼编码,主要目的是根据使用频率来最大化节省字符(编码)的存储空间。简易的理解就是,假如我有A,B,C,D,E五个字符,出现的频率(即权值)分别为5,4,3,2,1,那么我们第一步先取两个最小权值作为左右子树构造一转载 2021-07-20 16:46:04 · 481 阅读 · 0 评论 -
SSL/TLS协议
一、作用不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。(1)窃听风险(eavesdropping):第三方可以获知通信内容。(2)篡改风险(tampering):第三方可以修改通信内容。(3)冒充风险(pretending):第三方可以冒充他人身份参与通信。SSL/TLS协议是为了解决这三大风险而设计的,希望达到:(1) 所有信息都是加密传播,第三方无法窃听。(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。(3) 配...转载 2021-07-20 16:29:03 · 380 阅读 · 0 评论 -
HTTP/2
前言HTTP/2 相比于 HTTP/1.1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何优雅降级应该是国内还不普遍使用的原因之一。虽然 HTTP/2 提高了网页的性能,但是并不代表它已经是完美的了,HTTP/3 就是为了解决 HTTP/2 所存在的一些问题而被推出来的。一、HTTP/1.1发明以来发生了哪些变化?如果仔细观察打开那些最流行的网站首页所需要下载的资源的话,会发现一个非常明显的趋势。近年来加载网站首页需要的下载的数据量原创 2021-07-20 16:14:12 · 129 阅读 · 0 评论 -
MQTT
1. 什么是 MQTT?MQTT (Message Queuing Telemetry Transport,消息队列遥测传输)是一种基于 TCP/IP 协议族的应用层协议。MQTT 协议是专门针对硬件性能低下 & 网络状况不稳定的场景设计的,这使得 MQTT 在物联网和移动应用等受限场景得到广泛应用。1.1 MQTT 协议的发展历史1999 年:Andy Stanfork-Clark (IBM) 和 Arlen Nipper 发布 MQTT 协议,用于通过卫星连接石油管道遥测系统,MQ.原创 2021-07-19 19:24:56 · 2920 阅读 · 0 评论 -
git clone --depth=1
情况一:git clonegit clone https://github.com/labuladong/fucking-algorithm使用git可视化命令git log --graph --oneline --all,查看仓库的所有历史提交记录(我这里用alias取了别名glog)说明:一般仓库文件不大时,我们都可以用这个方法git clone仓库,但问题是有时候,在仓库历史的某次commit时,有人不小心提交了1G的文件,虽然后面的commit中他把这个文件删除了,但是在.git文件夹中仍然原创 2021-07-14 11:36:51 · 393 阅读 · 0 评论 -
git 回滚远程分支
1.用命令行打开git项目路径,git log 命令查看commit记录> git log2.找到你需要回滚的commitId,输入git reset --hard{commitId},将本地文件回滚:git reset --hard 70438034dc4c4551910fe9c39ab65752e3dd7bd93.此时本地文件就已回到了commit 70438034dc4c4551910fe9c39ab65752e3dd7bd9之后的状态,但是远程的仓库里并没改变,需要继.原创 2021-07-14 11:23:45 · 3921 阅读 · 0 评论 -
状态机 java简单实现
介绍有限状态机通常用于模拟序列逻辑,换句话说,就是用于代表和控制执行流程。有限状态机所需条件:一个物体只有固定的几种状态(例如交通灯只有绿灯、黄灯和红灯三个状态)。 有固定的变化顺序(例如交通灯只能绿灯->黄灯->红灯->绿灯循环) 物体同一时间点上只有一种状态。例子这里拿一个空调做例子,图是用了别人的,这里说明下下面三个状态的意思:Off:空调关机FanOnly:空调仅吹风Cool:空调制冷原始的解决办法StateEnum用枚举类定义三种原创 2021-07-06 13:59:37 · 5204 阅读 · 3 评论 -
SpringBoot 集成 Apollo 配置中心
一、基本概念由于 Apollo 概念比较多,刚开始使用比较复杂,最好先过一遍概念再动手实践尝试使用。1、背景随着程序功能的日益复杂,程序的配置日益增多,各种功能的开关、参数的配置、服务器的地址……对程序配置的期望值也越来越高,配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。因此 Apollo 配置中心应运而生!2、简介Apollo(阿波...转载 2021-06-30 14:24:14 · 355 阅读 · 0 评论 -
zookeeper
Zookeeper 运行模式Zookeeper 有两种运行模式,单点模式和集群模式。 单点模式(standalone mode)- Zookeeper 只运行在单个服务器上,常用于开发测试阶段,这种模式比较简单,但是不能保证Zookeeper服务的高可用性和恢复性。 集群模式(replicated mode)- 英文原文这种模式叫做“复制模式”;这个模式下,Zookeeper运行于一个集群上,适合生产环境。 同一个集群下的server节点被称为quorum,翻译过来就是“一个正式会议原创 2021-06-28 18:20:06 · 1936 阅读 · 0 评论 -
mysql、redis、mongodb都是怎么实现 “附近的人” 功能的
米 | 千米 | 英尺 | 英里。WITHDIST:在返回位置对象的同时,将位置对象与中心之间的距离也一并返回。距离的单位和用户给定的范围单位保持一致。 WITHCOORD:将位置对象的经度和维度也一并返回。 WITHHASH:以 52 位有符号整数的形式,返回位置对象经过原始 geohash 编码的有序集合分值。这个选项主要用于底层应用或者调试,实际中的作用并不大。 ASC | DESC:从近到远返回位置对象元素 | 从远到近返回位置对象元素。 COUNT count:选取前N个匹配位置对象.转载 2021-06-24 10:37:48 · 466 阅读 · 0 评论 -
策略模式
策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直原创 2021-06-21 20:59:51 · 105 阅读 · 0 评论 -
OAuth2.0
一、OAuth2.0 为何物OAuth 简单理解就是一种授权机制,它是在客户端和资源所有者之间的授权层,用来分离两种不同的角色。在资源所有者同意并向客户端颁发令牌后,客户端携带令牌可以访问资源所有者的资源。OAuth2.0 是OAuth 协议的一个版本,有2.0版本那就有1.0版本,有意思的是OAuth2.0 却不向下兼容OAuth1.0 ,相当于废弃了1.0版本。举个小栗子解释一下什么是 OAuth 授权?在家肝文章饿了定了一个外卖,外卖小哥30秒火速到达了我家楼下,奈何有门禁进不来,可以转载 2021-06-21 20:21:56 · 228 阅读 · 0 评论 -
一致性hash
在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那么,我们先来描述一下这个经典的分布式缓存的应用场景。场景描述假设,我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为0号、1号、2号,现在,有3万张图片需要缓存,我们希望这些图片被均匀的缓存到这3台服务器上,以便它们能够分摊缓存的压力。也就是说,我们希望每台服务器能够缓存1万张左右的图片,那么,我们应该怎样做呢?如果我们没有任何规转载 2021-06-15 18:01:41 · 70 阅读 · 0 评论 -
CAS单点登录
1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名密码进行登录,让用户从某种意义上觉得只登录了一次。 该方式缺点就是多次传送用户名密码,增加被盗风险,以及不能跨域。同时www.qiandu.com与mail.qiandu.com同时拥有登录逻辑的代码,如果涉及到修改操作,则需要修改两处。2、统...原创 2021-06-15 14:51:58 · 218 阅读 · 0 评论 -
使用进程id查询程序启动路径
1.我们可以从ps命令中得到进程的PID,如23347。2.进入/proc目录下以该PID命名的目录。3.输入ls -ail,结果中exe链接对应的就是可执行文件的全路经详细信息。例子:[root@iZbp16g2h00mfhlkven4lcZ /] cd /proc/23347[root@edu-iZbp16g2h00mfhlkven4lcZ 23347] ls –ail...原创 2021-03-24 19:20:09 · 554 阅读 · 0 评论 -
redis 复制
1、概述Master节点在平时提供服务,另外一个或多个Slave节点在平时不提供服务(或只提供数据读取服务)。当Master节点由于某些原因停止服务后,再人工/自动完成Slave节点到Master节点的切换工作,以便整个Redis集群继续向外提供服务。2、主从复制工作过程Redis的主从复制功能除了支持一个Master节点对应多个Slave节点的同时进行复制外,还支持Slave节点向其它多个Slave节点进行复制。这样使得我们能够灵活组织业务缓存数据的传播,例如使用多个Slave作为数据读取服.原创 2021-03-24 12:26:43 · 63 阅读 · 0 评论 -
Redis的磁盘持久化机制
前言Redis 是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将 Redis 中的数据以数据或命令的形式从内存保存到本地磁盘。当下次 Redis 重启时,利用持久化文件进行数据恢复。Redis 提供了 RDB 和 AOF 两种持久化机制,前者将当前的数据保存到磁盘,后者则是将每次执行的写命令保存到磁盘(类似于 MySQL 的 Binlog)。本文将详细介绍 RDB 和 AOF 两种持久化方案,包括操作方法和持久化的实现原理。正文Redis 是一个基于键值对(转载 2021-03-16 16:40:36 · 433 阅读 · 0 评论 -
redis 配置文件
[root@node18 ~]# vim /apps/redis/etc/redis.confbind 0.0.0.0 #监听地址,可以用空格隔开后多个监听IP protected-mode yes #redis3.2 之后加入的新特性,在没有设置bind IP和密码的时候,redis只允许访问 127.0.0.1:6379,远程访问将提示警告信息并拒绝远程访问port 6379 #监听端口 .原创 2021-03-16 15:25:39 · 224 阅读 · 0 评论 -
redis设置过期时间
1.EXPIRE PEXPIRE EXPIRE接口定义:EXPIRE key "seconds" 接口描述:设置一个key在当前时间"seconds"(秒)之后过期。返回1代表设置成功,返回0代表key不存在或者无法设置过期时间。 PEXPIRE接口定义:PEXPIRE key "milliseconds" 接口描述:设置一个key在当前时间"milliseconds"(毫秒)之后过期。返回1代表设置成功,返回0代表key不存在或者无法设置过期时间。 ...原创 2021-03-16 14:42:16 · 2934 阅读 · 0 评论 -
基于Redis的Stream类型的完美消息队列解决方案
1 概述Redis5.0带来了Stream类型。从字面上看是流类型,但其实从功能上看,应该是Redis对消息队列(MQ,Message Queue)的完善实现。用过Redis做消息队列的都了解,基于Reids的消息队列实现有很多种,例如:PUB/SUB,订阅/发布模式 基于List的 LPUSH+BRPOP 的实现 基于Sorted-Set的实现每一种实现,都有典型的特点和问题,这个在 Redis 实现消息队列一文中有介绍。基于Redis实现消息队列http://www.hellokang.n转载 2021-03-01 16:05:09 · 369 阅读 · 0 评论 -
子网掩码
问题描述内网中192.168.1.199的前三组是网络号,后一组是主机号,子网掩码就是255.255.255.0如果IP同样是192.168.1.199 那么子网掩码可以设成255.255.255.192吗,怎么理解?如果在同一个局域网出现这两种掩码可以相互通讯吗?看过我文章的读者,会知道通信大体有三种方式: 自己与自己的通信 与广播域主机通信 与别的广播域主机通信 假如主机只有IP地址,如何知道要通信的主机IP,是以上哪一种方式?...原创 2021-02-04 16:00:51 · 8342 阅读 · 0 评论 -
tcpdump 命令对容器内的网络请求抓包的方法
记录一种在不进入容器的情况下对容器进行抓包的方法。方法介绍简单来说就是找到容器所用的网卡,然后在 host 机器上对该网卡进行抓包就可以了 :joy操作示例找到这个容器使用的网卡:$ PID=$(docker inspect --format {{.State.Pid}} test2)$ nsenter -n -t $PID ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNO原创 2021-01-19 10:31:47 · 1181 阅读 · 0 评论 -
linux 重定向
相信大家经常能在shell脚本中发现>/dev/null 2>&1这样的语句。以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>&1 >/dev/null,出了一点小问题之后,我才开始去了解这段命令背后的“玄机”。shell重定向介绍就像我们平时写的程序一样,一段程序会处理外部的输入,然后将运算结果输出到指定的位置。在交互式的程序中,输入来自用户的键盘和鼠标,结果输出到用户的屏幕,甚至播放设备中。而对于某些后台运行的程序,转载 2021-06-30 14:25:08 · 177 阅读 · 0 评论 -
Linux中nohup和&的用法和区别
我们用python代码loop_hello.py做示例,代码的作用是循环输出循环次数和hello world!,每次输出后sleep 1秒示例代码如下:import timedef main(): i = 0 while True: i += 1 print('%d: hello world!' %(i)) time.sleep(1)if '__main__' == __name__: main()运行loop转载 2021-01-14 16:59:46 · 120 阅读 · 0 评论 -
linux终端关闭时为什么会导致在其上启动的进程退出?
现象经常在linux下开发的人应该都有这样的经验,就是在终端上启动的程序,在关闭终端时,这个程序的进程也被一起关闭了。看下面这个程序,为了使进程永远运行,在输出helloworld后,循环调用sleep:直接关闭这个终端,在另一个终端上查找该进程,已经找不到了:这个行为看起来似乎是理所当然的,也符合人的第一感觉:”在终端上启动的程序是属于终端的,所以当关闭终端时,这个终端里的一包裹进程都一起被解决掉了”。但这种说法是不能使一个会思考且充满好奇心的人信服的。下面我们就从linux进程管转载 2021-01-14 16:56:08 · 831 阅读 · 0 评论 -
弗洛伊德算法 求最短路径
暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个点之间的最短路径。这个问题这也被称为“多源最短路径”问题。 现在需要一个数据结构来存储图的信息,我们仍然可以用一个4*4的矩阵(二维数组e)来存储。比如1...原创 2020-10-29 19:45:07 · 2926 阅读 · 1 评论 -
postgresql触发器
触发器,Trigger,是一种由事件自动触发执行的特殊的存储过程,这些事件可以是对一个表进行 insert、update、delete 等操作。说的通俗一些,触发器就是一个特殊的函数,它与一系列指定的操作关联,当这些操作发生时,会自动执行触发器的函数。触发器可以作用在表或者视图上。创建触发器时需要指定这个触发器被触发时执行的函数, 这个函数就是触发器函数。触发器函数可以使用系统自带的过程语言(例如 plpgsql、pltcl、plperl、plpython )来写, 也可以使用 C 来写。本文中均以 p转载 2020-08-25 16:58:34 · 1559 阅读 · 0 评论 -
greenplum
greenplum简介GreenPlum是面向数据仓库应用的关系型数据库,基于PostgreSQL开发,跟PostgreSQL的兼容性非常好,大部分PostgreSQL客户端工具及PostgreSQL应用都能运行在GreenPlum平台上。想要学习GreenPlum,可以先看一看PostgreSQL的资料。1.greenplum属于OLAP 数据库系统一般分为两种类型:OLTP、OLAP: OLTP(On-Line Transaction Processing,联机事务处理)系统..转载 2020-08-20 11:56:40 · 219 阅读 · 0 评论 -
git rebase
准备工作 git 客户端安装(只要git bash即可) github上新建一个项目 create project2项目clone到本地3clone完成以后进入该项目文件夹下,准备工作完毕模拟日常开发同学A:执行git log4可以看出此时该项目仅有一次提交记录执行新增文件a.txt,并本地提交一次后再次执行git log5这个时候打开github,刷新该项目的commit记录6发现远程仓库还是只有一次提交记录的,转载 2020-08-18 15:11:53 · 170 阅读 · 0 评论