自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rei的博客

Later on, it was going to slow by slowly.

  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 【Rust】一文讲透Rust中的PartialEq和Eq

本文将围绕对象:PartialEq和Eq,以及PartialOrd和Ord,即四个Rust中重点的**Compare Trait**进行讨论并解释其中的细节,内容涵盖理论以及代码实现。

2023-03-03 16:28:20 1445 2

原创 【智能合约】智能合约开发指南

智能合约开发指南

2023-02-27 22:51:18 2259

原创 【智能合约】以太坊合约执行分析

关键字:EVM执行引擎、汇编指令、操作码、字节码

2023-02-27 22:27:21 1129

原创 【Rust】在mac上交叉编译linux和windows程序(包含Docker实现)

Rust在mac上交叉编译

2022-10-22 13:08:08 4375

翻译 【MySQL · Innodb架构简析】三、Innodb Indexes

1. Innodb聚簇索引和二级索引每个Innodb表都有一个特殊的索引叫做聚簇索引,它存储了全部的行数据。一般来说,聚簇索引就等同于主键,所以一张表只能有一个聚簇索引。设计聚簇索引的目的是优化表的增删改查操作,所以理解其中原理很重要。当你给表定义一个主键的时候,Innodb就会用它作为聚簇索引。如果你没有定义主键,Innodb会使用第一个unique非null索引列作为聚簇索引如果你没有定义任何索引,Innodb就会生成一个隐藏的叫做GEN_CLUST_INDEX的聚簇索引,它由隐藏的6-byt

2021-09-15 16:25:34 558

翻译 【MySQL · Innodb架构简析】二、Innodb Tables

1. 普通建表CREATE TABLE t1 (a INT, b CHAR (20), PRIMARY KEY (a)) ENGINE=InnoDB;这是一条最基础的建表SQL,这里需要注意的是尾部的ENGINE=InnoDB 一般来说可以省略,因为大部分mysql实例的默认engine都是innodb,但在较大且复杂的mysql集群环境中工作时,建议加上,因为同样的sql在不同实例上执行结果可能不同(由于settings不完全一样)。如何查看默认engine:mysql> SELECT @@

2021-09-10 17:21:55 535

翻译 【MySQL · Innodb架构简析】一、内存架构

1. Innodb架构图(MySQLv5.7 取自官网)说明:上图包含了Innodb内存架构和磁盘架构,各自在后面作详细介绍。1.1 Innodb内存架构主要分一下几个要点Buffer Pool(buffer池)Change Buffer(更改buffer)Adaptive Hash Index(自适应hash索引)Log Buffer(日志buffer)注:一般不对buffer作翻译1.2 Buffer Pool注意:为了编写方便,下文以bp代指Buffer PoolBuffe

2021-08-23 17:43:02 360

原创 2020-11-15

2020 随想2017-2020 开始了,失去了,得到了未来,在自己的领域做出成绩,汇聚顶峰,才能跃迁,才达到真正的开始,否则永远跳不出当前的 “桎梏”,思维局限,圈子局限,地位低下,等级低下,高等牢笼,终其一生;你应该::认识高于你水平的人,并和他们“打成一片”::除了工作尽职以外,业余时间你应该提升自己;看重职责而不是薪资::向他们证明你自己?做一个敢于“表现”的人,认识属于你的伯乐,发展你的追随者::用书中的知识灌溉自己::发展业余爱好,除了原来的牢笼,别给自己加设“.

2020-11-15 13:58:15 160

原创 【分布式系统篇】链路追踪之Jaeger安装&使用入门

目录1. 前世2. Jaeger与Zipkin3. 安装1. 前世在介绍Jaeger之前,有一些背景我们应该知道。Jaeger的实现遵循的是OpenTracing规范,什么是OpenTracing规范?OpenTracing制定了一套平台无关、厂商无关的Trace协议,使得开发人员能够方便的添加或更换分布式追踪系统的实现,早在近十年前就已经制定;与它相关的还有谷歌的OpenCensus,还有两者合并后的OpenTelemetry;由于本文主要讲Jaeger,更多你应该了解的前世请参考这篇阿里云写的文

2020-08-06 21:06:14 9739 7

原创 读【微服务设计】(八)总结

1. 微服务的原则围绕业务概念建模,经验表明,围绕业务的限界上下文定义的接口,比围绕技术概念定义的接口更稳定。 拥抱自动化文化,微服务包含太多复杂性的东西,比如我们不得不管理大量的服务。所以最好的方式是在前期花费一定的时间构建支持微服务的工具;还有自动化的测试,部署脚本等等,能够帮我们做大多数耗时间的事情。 隐藏内部实现细节,为了使一个服务独立于其他服务,最大化独自演化的能力。限界上下文建模在这方面可以提供帮助。服务还应该隐藏它们的数据库,以避免陷入数据耦合。在可能的情况下选择支持通用技术的API,

2020-07-01 09:45:55 3847

原创 读【微服务设计】(七)规模化微服务

1. 故障无处不在从统计学上来说,规模化后故障会成为必然事件。所以我们在设计实现微服务系统时只需要尽可能把多的可能故障的因素考虑进去,就可以尽可能保证系统的可用性。2. 功能降级微服务系统是由多个服务协同在一起工作的,当某个服务宕机时,我们需要考虑系统的对外表现是怎样的,比如商城系统的购物车服务挂掉了,这时候我们是选择让用户可以继续浏览商品还是将商城主页设置为“系统维护中”呢?这需要结合业务上下文来做决策,通常一个服务挂掉后,我们不会将整个系统设置为不可用,而是适当的处理,部分功能仍然可用,

2020-06-30 16:47:50 251

原创 读【微服务设计】(六)安全

1. 身份验证与授权当谈到与系统交互的人和事时,身份验证和授权是核心概念。我们一般把要进行身份验证的人或物成为主体。对于单块系统来说,app本身会处理身份验证和授权。比如Django提供现成的用户管理功能。但是在分布式系统领域,我们希望用户仍然使用一套用户名密码来使用整个系统,也就是单点登录(Single Sign-On)。当主体尝试访问一个资源时,会被定向到一个身份提供者那里进行身份验证,这个主体必须提供用户名密码进行验证,一旦身份提供者确认主体可以通过验证,它会发消息给服务提供者,让后者决定

2020-06-28 17:56:11 5277 1

原创 读【微服务设计】(五)部署

1. CI(持续集成)CI技术已经出现很多年了(出书年是2015),因为在微服务之间的映射、构建以及代码库版本管理等方面,不同的考虑会有不同的选择。CI能够保证新提交的代码与已有代码进行集成,从而让所有人保持同步。CI服务器会检测到代码并检出(check-out),然后花些时间来验证代码是否通过编译以及测试能否通过。CI的好处有很多。通过它,我们能够得到关于代码质量的某种程度的快速反馈。CI可以自动化生成二进制文件,并且使用的代码都会归纳到版本控制,所以CI可以很方便的完成更新、测试、回滚的高度

2020-06-28 12:20:41 1011

原创 读【微服务设计】(四)分解单块系统

1. 识别出接缝处(限界上下文)单块系统不具备高内聚、低耦合的特点,所以分解的第一步需要很谨慎,首先就是要识别出接缝的位置,我们可以从接缝处抽取相对独立的一部分代码,修改这部分不会影响系统的其他部分,并且能够清理代码库以及成为服务的边界。很多编程语言都有命名空间的概念,帮助我们把相似代码组织到一起,如Python/JAVA/Go等都有package概念,当我们识别出限界上下文后就可以通过pkg将它们分开维护。2. 更有效率的分解如果要分解一个较大的单块系统,那需要对分解的代码做一些优先级划分

2020-06-27 12:20:01 217

原创 读【微服务设计】(三)如何建模服务

1. 好的微服务架构都具备什么特点应该具备两个核心特点,松耦合、高内聚。这两个核心特点应该是一种仅次于SOA概念层级的概念,不遵循(或不具备)这两个核心特点的话,讨论更多的细节都没有什么意义了,更不可能建设出一个优秀的微服务架构实践了。2. 松耦合如果做到了服务之间的松耦合,那么修改A服务就不需要修改B服务。使用微服务最重要的一点是,能够独立修改及部署单个服务而不需要修改系统的其他部分,这是非常重要的。一个松耦合的服务,应该尽可能地少知道与之协作的那些服务的信息,一个小的实践就是接口需要的参

2020-06-04 11:38:21 237

原创 读【微服务设计】(二)领导者要考虑的事

1. 监控能够清晰的描绘出跨服务系统的健康状态非常重要,这必须在系统级别而非单个服务级别进行考虑。往往在需要诊断一个跨服务的问题或者想要了解更大的趋势时,你才需要知道每个服务的健康状态。简单起见,作者建议确保所有服务都是用相同的方式报告健康状态及其它监控相关的指标数据。2. 统一服务接口技术选择少数几种(甚至一种)明确的接口技术有助于新消费者的集成。3. 架构安全性一个运行异常的服务可能毁了整个系统,我们需要保证每个服务能够应对上游服务的错误响应。这通常需要引入一个断路器,而断路

2020-06-04 10:07:14 188

原创 读【微服务设计】(一)微服务介绍

1. 什么是微服务?是一些协同工作的小而自治的服务。2. 为什么会有微服务架构?传统的单体应用架构在开发大型项目时的缺点是突出且严重的:一个庞大的代码库,以至于时间久了想要知道该在什么地方修改都很困难 相似的功能代码随处可见,修复bug难上加难 严重的耦合性问题,代码牵一发而动全身,代码结构的修改(重构)成本极高 一个小的修改就得对整个应用重新部署上线,上线成本高使得上线周期长,难以同步快速变化的需求 心智负担3. 微服务的特点- 优点根据业务特点拆分多个服务进行部署,服务

2020-06-01 22:45:25 277

原创 【通俗说设计模式】九、桥接模式 & Python示例

专业介绍:将 "抽象" 与 "实现" 分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。通俗介绍:桥接模式的定义看似清晰,实则模糊,因为桥接模式是几十种设计模式中最复杂的模式之一!所以首先思维不能乱。开始解释: 上面定义中的 "抽象" (abstraction)不再指的之前的抽象类中的抽象概念了,"实现...

2019-12-05 19:31:07 251

原创 【通俗说设计模式】八、适配器模式 & Python示例

专业介绍:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。通俗介绍:其实就是在现有组件基础上做适配工作。使用者习惯了/一直/只能调用某一个类A来完成所需要的大部分功能,忽然有个新功能是类A不具备的,但是类B具备,而使用者又因为各种原因(降低使用者的复杂度,或成本问题)不想直接调用类B。如果能直接通过类A使用新功能是最好的。...

2019-12-04 14:11:29 237

原创 【通俗说设计模式】七、代理模式 & Python示例 (结构型模式开篇)

专业介绍:为其他对象提供一个代理以控制对这个对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。通俗介绍:有些情况下,使用者(客户端)不能直接访问某个对象,可能是因为以下几点原因: 1. 需要保护这个对象不被某些客户端/使用者更改。 2. 想要扩展或剪去这个对象的某些功能,但不能/不便于直接修改此对...

2019-12-03 15:04:45 186

原创 【通俗说设计模式】六、建造者模式 & Python示例

专业介绍:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。通俗介绍:开发过程中有时需要创建一个比较复杂的对象,这个复杂对象由多种子部件(属性/对象)组合而成,然后这些子部件还不止一种选择,在使用时根据需要选择不同的部件组合出这个复杂对象。例如,创建一个计算机对象,其子部件由CPU/内存/硬盘/显卡/主板...多个部分组成,我们暂且简化场景,设定最终...

2019-12-03 11:54:23 323

原创 【通俗说设计模式】三、抽象工厂模式 & Python示例

专业介绍:抽象工厂模式提供一个 "创建一系列相关或相互依赖对象" 的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。通俗介绍:它是工厂方法模式的升级版。工厂方法是一个具体工厂只生产一个种产品,如果要扩展产品,就必须扩展具体工厂。但有时候我们需要一个工厂生产多种产品,这多种产品是属于一个产品族的,比如Wear工厂生产Clothes,Shoe,P...

2019-12-02 19:00:10 312

原创 【通俗说设计模式】五、单例模式 & Python示例

专业介绍:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。通俗介绍:一个类,我们可以反复创建它的实例,但是,创建N次最终得到的也是同一个实例,占用的资源大小是固定的,这就叫单例模式。例如Windows上很多对象都是单例模式,比如winows的任务管理器,回收站,文件系统,线程池等待,如果他们可以被创建出多个实例,系统肯定满地bug。代码:# 单例模式...

2019-12-02 17:42:46 169

原创 【通俗说设计模式】四、原型模式 & Python示例

专业介绍:用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。通俗介绍:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。这个模式很简单,没有什么需要过多解释的,上代码。# 原型模式import copyclass World: def __init__(self, *args): s...

2019-12-02 17:05:00 151

原创 【通俗说设计模式】二、工厂方法模式(Factory Method Pattern)& Python实现

专业介绍 工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。引用自--维基百科 核心结构:有四个角色,分别是抽...

2019-12-02 15:42:01 261

原创 【架构思考】IM架构

本文将总结关于如何构建一个IM架构相关的知识。1. 将【接入服务】与【业务处理服务】独立拆分理由有二,一是任务分工不同,接入服务负责建立并保持与客户端的连接、消息的编解码、协议解析等一些IM前台服务(也可以叫做网关),是最接近用户的服务,而且要在流量高峰期进行快速的性能扩展;而业务处理服务则是整个IM架构的核心,经常会随着业务需求不断变化而进行频繁的版本迭代,服务升级就意味着需要重启,...

2019-11-29 18:22:20 828

原创 【通俗说设计模式】一、简单工厂模式 & Python示例(创建型模式开篇)

专业介绍: 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同于工厂模式的一个特殊实现。引用自-百度百科关键词:一个工厂、简单实用通俗介绍: ...

2019-10-29 11:29:13 400 4

原创 【爬虫】巧用 js2py (附带bug解决)

项目地址:https://github.com/PiotrDabkowski/Js2Py项目介绍:(根据github)此项目完全用Python编写,支持Python2/3。可以在Python中执行JS代码,并获取JS对象值。目前支持ES5,ES6仍在测试中。一句话解释:一个纯Python的JS解释器。推荐指数:四颗星 (博主用过其他的库如execjs, pyv8,多多少少都没有...

2019-08-29 18:25:22 2985 1

原创 [面试] Golang 面试题

本文章收录于:后端工程师面试题目总结(提供参考答案)目录1.make与new的区别2.简要描述go中的main和init函数的区别3.下面的代码输出什么,若会报错报什么错?4. 这段代码会输出什么?5、简述channel和mutex锁机制的原理异同与使用场景6、sync.WaitGroup的使用场景?7、写一段闭包代码,阐述其作用8、执行这段代码会发生什...

2019-08-27 23:30:31 9073 2

原创 【Web安全】文件上传漏洞

前言上网过程中,我们经常会将一些如图片、压缩包之类的文件上传至文件服务器进行保存。而文件上传攻击指的是攻击者利用一些站点没有对文件的类型做很好的校验,上传了可执行的文件或脚本,并且通过脚本获得服务器上相应的权限,或者是通过诱导外部用户访问下载上传的病毒或木马,达到攻击的目的。除了上述危害,我们还需防止用户将文件服务器当成免费的网盘无限制上传文件。解决方案文件类型白名单校验(仅允许部...

2019-08-25 22:38:19 722

原创 【Web安全】SQL注入攻击

前言引用书中介绍,SQL注入就是通过把SQL命令伪装成正常的HTTP请求参数传递到服务器,欺骗服务器最终执行恶意的SQL命令,达到入侵目的。达到的危害有:查询非授权信息 修改数据库数据 改变表结构甚至删除表 获取服务器root权限注入原理某网站的登录请求如下:url: http://api.adbc.com/user/loginmethod: postbody: {"...

2019-08-25 20:29:25 1046

原创 【Web安全】CSRF 攻击 (最新解决方案)

前言全称跨站请求伪造(Cross site request forgery), 尽管它听起来与XSS(跨站脚本攻击),但它与XSS非常不同。然而事实是,CSRF与XSS具有很大的相似性和关联性。一句话来说,就是可以利用某站点存在的XSS漏洞来进行CSRF攻击。CSRF的核心过程:攻击者利用站点B的XSS漏洞上传了恶意脚本,用户进入站点B时脚本执行,脚本内容是:向用户经常浏览的网...

2019-08-24 12:53:59 1190

原创 【Web安全】XSS攻击

XSS攻击 全称跨站脚本攻击(Cross Site Scripting),为了不跟层叠样式表(CSS)重名,所以叫XSS;它是Web攻击中最常见的攻击手段之一!危害 攻击者在网站中嵌入恶意脚本(代码),当用户打开该网页时,脚本自动执行,它可以盗取用户cookie、用户名密码 下载病毒木马 强行跳转页面 其他可怕的事。原理 假设页面上有个需要用户填写...

2019-07-22 00:22:04 3558 1

原创 【读Go语言并发之道】第3章 Go语言并发组件

✎说明: 本文章收录于我的博客专栏读Go语言并发之道 前言本文档是读《Go语言并发之道》一书之后的总结,按照章节进行记录。任何地方有误,请读者不吝赐教。ℬℯℓℓℯℜ life to you~目录前言1. Goroutine2. sync包3. sync.WaitGroup4. sync.Mutex / sync.RWMutex5. sync.Cond6. sync.Once7....

2019-06-10 15:03:52 1125 2

原创 【读Go语言并发之道】第1,2章 并发概述以及CSP(顺序通信进程)

本文章收录于我的博客专栏读Go语言并发之道前言:本文档是读《Go语言并发之道》一书之后的总结,按照章节进行记录。目录第一章 并发概述第二章 对你的代码建模:顺序通信进程(CSP)第一章 并发概述 1.1 竞争条件 永远不要用time.Sleep来保证你程序运行的逻辑性,这不是一种优雅的方式,更不是一种正确的方式,还可能会给你的程序留下可能潜伏许久的难以调试的bug。...

2019-06-10 09:14:06 835 1

原创 [面试] 5. 操作系统相关

本文章收录于:后端工程师面试题目总结(提供参考答案)目录1. 进程与线程的区别?(资源、调度、开销、通信 4个方面对比)2. 进程间通信(python如何实现的)3. 线程间通信4. Linux常用的监控资源使用率的命令?(top,free)5. Linux其他常用命令6. 了解协程么,轻量体现在哪儿?7.结合OSI七层模型解释一下数据从一台计算机到另一台计算机的...

2019-05-24 10:43:06 422

原创 [面试] 4. 网络协议相关

本文章收录于:后端工程师面试题目总结(提供参考答案)目录1. GET和POST区别是什么,HTTP状态码了解哪些?2. Session和Cookie的区别?Session如何管理?3. HTTPS的解释?为什么要有HTTPS?4. 简述HTTPS密钥协商过程?5. 简述跨域产生背景以及常见解决方案?6. 解释一下socket长连接?和Websocket协议的区别?...

2019-05-24 10:43:00 701

原创 [面试] 3. 关于mongodb和redis的面试题

本文章收录于:后端工程师面试题目总结(提供参考答案)#MongoDB相关#1、mongo的适用场景和不适用的场景 适用场景: 1. 存储大量的非结构化和半结构化数据 2. 需要能够迅速水平扩展容量的db 3. 高性能的实时数据插入/更新 不适用: 1. 需要事务控制的场景,比如银行和会计系统 ...

2019-05-24 10:42:54 2004

原创 [面试] 2. 关于MySQL的面试题

本文章收录于:后端工程师面试题目总结(提供参考答案)目录1. 谈谈mysql字符集和排序规则?2. varchar 与 char 的区别?3. primary key 和 unique key区别?4. 外键有什么用,是否该用外键?外键一定需要索引吗?5. myisam与innodb的区别?innodb的两阶段锁定协议是什么情况?6. 索引有什么用,大致原理是什么?设...

2019-05-24 10:42:49 1112

原创 [面试] 1. 关于Python的基础知识

本文章收录于:后端工程师面试题目总结(提供参考答案)目录1. 可变与不可变类型2. 谈谈浅拷贝与深拷贝3. __new__和__init__的区别4. 谈谈设计模式5. 列表推导式和生成器的优劣6. 什么是装饰器,想在函数之后进行装饰,怎么做?7. 使用装饰器的单例模式和其他方法(如new方法,或者单文件实现的单例)相比,有何区别?8. 谈谈线程与进程的区别...

2019-05-24 10:42:43 908 1

在centos6.5上安装icinga 2

在centos6.5上安装icinga 2

2017-07-13

空空如也

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

TA关注的人

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