自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(187)
  • 问答 (3)
  • 收藏
  • 关注

翻译 301、302、303、307 和 308:这个重定向的状态码都用来干啥的?

HTTP重定向是引导访问者(用户或者爬虫机器人)从一个URL到另一个URL的方。重定向的使用场景一般有以下几项:URL变更:当内容迁移到新的地址时,你仍然想访问者可以通过旧的链接自动的重定向到新的地址,而不是返回404页面。HTTP转HTTPS:为了保证数据安全性,你需要让使HTTP的访问重定向至更安全的HTTPS。地理位置定位:你想根据用户的地理位置(根据IP地址判断)或浏览器语言设置,将用户重定向至本地的页面。设备区分:你想对于使用智能手机或者平板电脑的用户,重定向至对移动端设备更友好的移动版

2021-04-28 20:49:57 2799

原创 第四章 集成

寻找理想的服务间的集成技术指导原则:避免破坏性修改保证API的技术无关性使服务更便于消费方使用隐藏服务内部的实现细节服务的集成时,调用的同步异步问题:同步方式:可以知道调用结果,但是耗时较长异步方式:对于运行时间较长的任务比较友好,但是对于请求结果需要额外处理才能获取到跨服务调用业务流程问题:编排方式:依赖于某个中心大脑来指导并驱动整个流程,其缺点是中心大脑承担了过多职责,周边服务又过于简单协同方式:通过异步时间的方式,来触发多个服务一同协同完成某项复杂的流程常见的集成方式

2021-04-27 20:36:47 290

原创 第三章 如何建模服务

什么样的服务是好服务?松耦合:尽可能的减少与其他服务的关联,同时限制服务之间不同的调用方式的数量高内聚:尽可能的将相关的行为放在一起,将不相关的放在别处,而确定相关性的关键在于找到服务的边界什么是 界限上线文(bounded context)?一个由显式边界限定的特定职责界限上线问的创建:思考组织界限上下文时,不应该从共享数据的角度来考虑,而应该从这些上下文能够提供的功能来考虑。首先要问自己,这个上下文是做什么用的,然后再考虑他需要什么样的数据...

2021-04-12 20:38:39 281

原创 第二章 演化式架构师

一个演化式架构师应该承担的责任:愿景:确保在系统级有一个经过充分沟通的技术愿景,这个愿景应该可以帮助你满足客户和组织的需求。同理心:理解你所做的决定对客户和同事带来的影响。合作:和尽量多的同事进行沟通,从而更好的对愿景进行定义、修订及执行。适应性:确保你在客户和组织需要的时候调整技术愿景。自治性:在标准化和团队自治之间寻找一个正确的平衡点。治理:确保系统按照技术愿景的要求实现。由于本章的内容涉及的是与架构师职责相关的内容,由于我里架构师还有好长的路要走,对内容不是很理解,故简单摘抄本章小

2021-03-22 23:59:53 154 1

原创 第一章 微服务

什么是微服务?微服务就是一些协同工作的小而自治的系统。微服务有哪些特点?很小,专注于做好一件事:保证代码的内聚性,遵循单一职责原则。到底要小到多小没有确定的定论,大佬认为,通常一个微服务要小到可以两周内完全重写。如何确定足够小了:自己不再感觉代码库过大:不要一味追求小,而应该根据自己的感觉,如果你认为代码库不过于大了,那就够小了和团队结构相匹配:如果巨大的代码库由一个小团队维护,显然是无法正常维护的,此时就需要对其进行拆分,拆分到和团队结构相匹配为止。自治性:微服务之间应该保持独立

2021-03-21 10:40:14 189 1

原创 新版 MongoDB Client安装

问题在连接MongoDB的时候出现如下错误:2021-03-12T17:04:17.867+0800 warning: No primary detected for set2021-03-12T17:04:17.867+0800 All nodes for set are down. This has happened for 1 checks in a row. Polling will stop after 29 more failed checks2021-03-12T17:04:17.8

2021-03-12 18:23:17 1814

原创 小米平板1刷lineageOS 16.0 教程

本文只针对于小米平板1升级 lineageOS 16.0,其他版本可参考:https://www.jianshu.com/p/71aa0f22b466刷机文件下载下载地址:百度网盘:链接: https://pan.baidu.com/s/19jRRlYPdHOBsDp9wFoC9YA 提取码: ukcw文件说明:lineage-16.0-20200419-UNOFFICIAL-mocha.zip: lineageOS 系统文件,原版下载地址:lineage-16.0-20200419-UNO.

2021-01-03 12:08:37 24996 34

原创 etcd数据迁移实战

因为服务器过保要下线,需要将etcd迁移到新的机器上,下面是我的踩坑记录:迁移流程1. 执行数据备份备份 v2:$ etcdctl --endpoints <endpoints> --ca-file <ca-file> --cert-file <cert-file> --key-file <key-file> backup --data-dir <data-dir> --backup-dir <back-dir>Exampl

2020-09-28 18:46:00 2997

原创 ETCD 开启Basic认证并授权

1. 添加角色并授权可以通过如下命令来查看etcd所拥有的角色:$ ./etcdctl --endpoints http://127.0.0.1:4001 role listroot我们可以看到,etcd默认有root这个角色,我们可以通过以下命令查看角色所对应的权限信息:$ ./etcdctl --endpoints http://127.0.0.1:4001 role get rootRole: rootKV Read: /*KV Write: /*其实还有个默认的角色gues

2020-07-20 19:25:01 2548

转载 Go 语言标准库 text/template 包深入浅出

模板什么是模板?官方定义:Package template implements data-driven templates for generating textual output.template 包是数据驱动的文本输出模板,其实就是在写好的模板中填充数据。下面是一个简单的模板示例:// 模板定义tepl := "My name is {{ . }}"// 解析.

2020-07-05 19:14:39 649

原创 kubernetes部署安装

软硬件要求硬件要求如下:CUP:Master: 至少2核,推荐4核及以上Node:至少4核内存:Master:至少4GBNode:至少4GB,推荐16G以上系统要求操作系统基于x86_64版本的Linux发行版,内核版本3.10及以上,推荐 RHEL 7/ CentOS 7关闭交换分区先临时关闭[root@localhost ~]# swapoff -a删除系统对swap的加载打开/etc/fstab, 注释掉 /dev/mapper/centos-s

2020-07-05 18:56:02 463

原创 ETCD 部署并启用证书认证

证书生成证书生成的方式非常多,同类的文档也很容易找到,这里推荐此篇文章:https://coreos.com/os/docs/latest/generate-self-signed-certificates.html,但是由于etcd的特殊性,server端配置的证书,也会被用于去进行客户端认证,因此需要在 server 的 usages 里面加上:client auth选项,否则会出现此种问题:certificate specifies an incompatible key usage下面是完整的c

2020-06-29 09:23:07 4385

原创 ETCD出现:certificate specifies an incompatible key usage 解决方案

问题描述:在安装etcd 3.3.22 版本的时候,需要启用证书认证,于是我按此教程:Generate self-signed certificates 来生成自签名证书,用于etcd 各节点间、etcd server 与 client间的认证当我按教程生成证书,配置etcd,启动服务后,etcd服务端则报出如下警告:WARNING: 2020/06/28 15:58:05 grpc: addrConn.createTransport failed to connect to {0.0.0.0:50

2020-06-28 20:26:36 4113 1

原创 Gin请求参数校验

gin参数校验使用的是 validator库,因此本文的内容同样适用于使用validator来做参数校验的地方校验规则完整的校验规则可参考 https://godoc.org/github.com/go-playground/validator,下面分享常用的校验规则规则:数字值限制注:如果限制之间存在冲突,如 eq=10,ne=10,则会根据先后顺序,后面的会覆盖前面的定义,已后面定义的为准,eq=10,ne=10定义方式,只会生效ne=10限制范围max=10 # 最大值为1.

2020-06-10 07:35:26 13230 1

转载 Go的CSP并发模型

Go实现了两种并发形式。第一种是大家普遍认知的:多线程共享内存。其实就是Java或者C++等语言中的多线程开发。另外一种是Go语言特有的,也是Go语言推荐的:CSP(communicating sequential processes)并发模型。CSP 是 Communicating Sequential Process 的简称,中文可以叫做通信顺序进程,是一种并发编程模型,由 Tony Hoare 于 1977 年提出。简单来说,CSP 模型由并发执行的实体(线程或者进程)所组成,实体之间通过发送消息进

2020-05-27 08:13:17 464

原创 Nginx中realip获取

我们都知道,在Nginx中,想获取来源的IP,我们可以通过$remote_addr 来获取,但是很多时候,请求会经过多个中间代理或CDN,从而导致我们根本无法准确的获取客户端的真实IP, 为解决这种问题,Nginx提供了realip模块来实现客户端IP的获取,详细信息参见:ngx_http_realip_module此模块提供了三个指令:set_real_ip_from, real_ip_header,real_ip_recursive,其功能如下:set_real_ip_from:指定IP的来源信息

2020-05-20 18:19:24 1036

原创 gitbook转PDF或epub

1. 安装Nodejs由于gitbook依赖于nodejs来实现的,所以需要首先安装nodejs,才能使用gitbook关于Nodejs的安装参见:https://www.runoob.com/nodejs/nodejs-install-setup.html2. 安装gitbooknpm install gitbook -gnpm install gitbook-cli -g执行如下...

2020-05-01 13:08:25 2985

原创 Golang反射入门

什么是反射?反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。应用能够通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。其含义就是我们可以通过语言提供的反射功能,在程序运行过程中动态的调用方法、获...

2020-04-27 11:49:14 261

原创 Go reflect包中Type接口函数全解析

Align / FieldAlign函数描述:Align:获取变量在内存中的对的字节齐值(通用)FieldAlign:获取Struct在内存中的字节对齐值(针对结构体)关于Go的内存对齐可以参考:https://studygolang.com/articles/19663使用示例:func HelloWorld() string { return "hello world"}...

2020-04-21 20:07:35 1629

原创 python打开https出现certificate verify failed解决方案

今天遇到一个奇怪的问题,在用urllib打开一个https链接的时候,出现了一下报错信息:IOError: [Errno socket error] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727),报错问题就是证书验证失败,这种情况出现在网站使用的是自签名证书或系统根证书存在问题的时候。原因:Pyt...

2020-04-08 20:52:11 15536

原创 Python DNS解析之pydns/py3dns使用文档

由于工作中需要解析大量域名,获取DNS解析记录信息,于是找到了pydns库,此第三方库支持DNS解析,但是发现缺乏相关文档,特此整理了pydns/py3dns的使用文档。前提在此之前,你可能需要回顾下DNS有关基础知识,特别是域名相关解析记录类型,如下:A记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录CNAME记录: 如果将域名指向一个域名,...

2020-03-31 08:17:59 4347

原创 mongodb副本集安装

前置工作下载mongomongodb 官方下载页面连接:https://www.mongodb.com/download-center/community版本可以根据自己需要选择,由于我要使用 mongo事务的特性,只能选择 4.0 之后的版本,这里我选择 4.0.14OS根据自己的系统选择,我的系统是 centos 7,选择 RHEL 7.0 Linux 64-bit x64 即可下载...

2019-12-24 20:00:31 310

原创 mongodb启用认证后出现RECOVERING 与 not reachable/healthy

问题描述在部署副本集模式的mongodb的时候,当启用认证后,执行rs.status()后,变成了如下状态:{ "set" : "mytest", "date" : ISODate("2019-12-24T02:24:30.510Z"), "myState" : 3, "term" : NumberLong(6), "syncingTo" : "", "syncSourceHost...

2019-12-24 19:56:54 4084 1

原创 关于Go语言中的go:linkname

在阅读time包源码的时候,遇到了一个特别奇怪的函数定义,类似于C语言中的函数声明一样,只有函数定义,没有函数体,代码如下:func startTimer(*runtimeTimer)func stopTimer(*runtimeTimer) bool我当时非常惊讶,以为自己学的是假的go语法,当问了万能的谷歌之后,我得到的答案是如下,参见 go中的定时器timerAfterFunc...

2019-12-18 07:41:11 1554

原创 系统线程和goroutine的区别

从栈空间上,goroutine的栈空间更加动态灵活。每个OS的线程都有一个固定大小的栈内存,通常是2MB,栈内存用于保存线程执行期间的局部变量,且大小是固定不变的,在多变的场景下,这样固定大小的栈,既太大,又太小,往往不能满足多变的场景。2MB固定大小的栈,对于执行简单操作的goroutine来说,是一种巨大的浪费;但对于执行高度复杂的goroutine来说,又太过于小了。为了适应不同场景,g...

2019-09-04 08:20:40 376

原创 arc (Arcanist) 源码安装教程

由于公司开发机我只有rd权限,许多软件只能通过源码来安装,今天就和大家分享一下代码review工具arcanist的源码安装过程。源码安装curlcurl的源码下载地址为:https://curl.haxx.se/download.html,下载最新的源码即可,这里我们下载curl-7.65.3 这个版本下载curl源码:$ wget --no-check-certificate http...

2019-08-18 16:38:24 1470

原创 Python rstrip函数踩坑记录

问题背景从许多中文的参考文献上,rstrip() 函数的功能被简单描述为 :删除字符串末尾的指定字符(默认为空格),我的理解是,直接去掉末尾指定的字符序列,如我传入的是d,则会去掉末尾的字符d(如果存在),如果传入了字符ad,则去掉末尾的字符ad(如果存在),直到我们开发的服务遇到了一个非常奇怪的bug之后,下面是奇怪问题的复现过程:>>> s = 'hello_world'...

2019-08-11 00:09:08 1504 2

原创 Python安装第三方库,出现‘PyThreadState’ has no member named ‘exc_type’解决方法

最近由于工作需要,要从hbase中读取数据,然后处理过后,展示给用户,在网上搜通过Python的happybase模块可以进行简单快捷的读取,但是在安装happybase,让我非常不开心,具体错误如下:Collecting happybase Using cached https://files.pythonhosted.org/packages/8d/a4/9c1202ad4276d4e8...

2018-09-27 08:27:17 10600 1

转载 深刻理解Python中的元类(metaclass)

类也是对象在理解元类之前,你需要先掌握Python中的类。Python中类的概念借鉴于Smalltalk,这显得有些奇特。在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立:&gt;&gt;&gt; class ObjectCreator(object):… pass…&gt;&gt;&gt; my_object = Obj...

2018-02-23 20:53:34 615

原创 Zookeeper详解

Zookeeper简介zookeeper是一个为分布式应用所设计的开源协调服务,提供同步,配置管理,分组和命名服务。 设计目标:简单化 zookeeper允许分布式的进程通过共享体系内的命名空间来进行协调,其组织与标准的文件系统非常相似,是由一些数据寄存器组成,在zookeeper中,这些寄存器称之为znode。zookeeper的数据存放在内存当中,因此其具有高吞吐量和低延迟。健壮性 z

2017-08-21 09:47:47 3110

转载 Supervisor配置文件详解

[unix_http_server]            file=/tmp/supervisor.sock   ; socket文件的路径,supervisorctl用XML_RPC和supervisord通信就是通过它进行                              的。如果不设置的话,supervisorctl也就不能用了

2017-08-08 16:45:28 1710

原创 初识HBase

HBase是一个开源的,分布式的,多版本的,面向列的存储模型。面向列:简单来说,就是指在存储数据库中的数据时,以列为单位来存储,把一列的数据串在一起存储起来,而非把一行的数据作为一个单元存储起来。 HBase的特点:HBase是构建在HDFS上的列式存储系统基于Google的BigTable模型开发,典型的key/value系统逻辑上,HBase将数据按照表,行和列进行存储HBase主要

2017-08-07 09:38:13 616

转载 行式数据库与列式数据库

开发用了很久的Vertica,知道它是“列式数据库”但一直没有去研究过列式数据库的一些特性,现在来总结一下。列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于小批量的数据处理,常用于联机事务型数据处理。数据库以行、列的二维表的形式存储数据,但是却以一维字符串的方式存储,例如以下的一个表:E

2017-08-02 09:16:32 1824

原创 初识Hive

Hive是什么Hive是一个基于Hadoop文件系统的数据仓库,提供了对数据进行ETL(抽取,转换,加载)的工具、数据存储管理和大型数据集的查询分析能力。Hive提供了类SQL语言-HiveQL,可使用关系数据库提供的的SQL语句来操作Hive。Hive擅长做什么?Hive擅长在不变的、大规模的数据集上执行的批量操作。Hive具有良好的扩展性,因为其建立在HDFS上,可自动适应机器数目和数据量的

2017-07-31 21:54:07 484

原创 Hadoop分布式集群搭建

前面分享了hadoop伪分布式的搭建方法,这次来分享一下分布式方式的搭建方法。 主机安装或虚拟机安装这里就不再赘述,下面直接进入正题:1.下面是网络配置,全部为静态:master : 192.168.80.128slave-1 : 192.168.80.129slave-2 : 192.168.80.130slave-3 : 192.168.80.131slave-4 : 192.168.

2017-07-14 18:50:05 681

原创 HDFS的架构设计

HDFS为是Apache Hadoop Core项目的一部分,是Hadoop的核心项目,今天我们就来讨论以下关于HDFS架构设计问题。分布式既然HDFS标榜为一个分布式文件系统,那首要解决的就是分布式的问题。分布式,简单来说就是分布在各个节点,这些节点可能在不同的主机上,也可能在不同的数据中心,甚至还可能跨地区,跨国度。各节点之间通过网络来进行信息交互。DHFS通过Namenode和Datanode

2017-07-14 14:04:55 644

原创 Hadoop学习笔记之--Hadoop的安装

由于没有集群环境,只能在一台电脑上进行Hadoop的搭建,因此只能以伪分布式的方式进行搭建。准备工作操作系统:CentOS 7 JDK版本:1.8.0_131 Hadoop版本:2.8.0操作系统安装系统最好为Linux,推荐CentOS,关于系统安装,这里不赘述。JAVA环境配置1.下载jdk$ wget http://download.oracle.c

2017-07-12 20:03:19 620

原创 fork源码简析

好久没写博客了,正好最近老师布置了看linux源码的任务,于是决定写一篇关于看fork源码的相关博客,废话少说,进入正题\准备工作首先,你需要一份linux的源代码,我下载的是linux-3.10.108版本的代码,下载链接:linux-3.10.108 其次,你需要一个优秀的IDE,来助力你更好的看源码,我推荐CLion,下载链接:https://www.jetbrains.com/

2017-06-27 16:03:17 946

转载 更新GitHub上自己 Fork 的代码与原作者的项目进度一致

在GitHub上我们会去fork别人的一个项目,这就在自己的Github上生成了一个与原作者项目互不影响的副本,自己可以将自己Github上的这个项目再clone到本地进行修改,修改后再push,只有自己Github上的项目会发生改变,而原作者项目并不会受影响,避免了原作者项目被污染。但经过一段时间, 有可能作者原来的代码变化很大, 你想接着在他最新的代码上修改, 这时你需要合并原作者的最新代码过来

2017-06-13 10:40:53 772

原创 CMCC-EDU一个帐号,多设备共享解决方案

用过CMCC-EDU的同鞋都清楚,CMCC-EDU一般情况下只能一个设备连接登陆认证上网,但是如果你只有一个帐号,但是有多个设备,且都对网速要求不是很高的话,你可以选择使用下面方法实现一个帐号,多设备功用所需硬件设备:闲置无线路由器一台下面是步骤:无线路由器接上电源,重置路由器(一般在路由器背面,有RESET标志,长按即可,视路由器而定)连接上路由器WIFI,打开浏览器,输

2017-06-02 20:37:56 7569

空空如也

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

TA关注的人

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