- 博客(297)
- 资源 (9)
- 收藏
- 关注
原创 【运维篇】阿里云SLS日志服务
选择project,建立logstore建立了ps-pro配置logtail,接入pod数据日志格式非常多,我们选择docker标准输出配置如下{ "inputs": [ { "detail": { "Stderr": true, "IncludeLabel": { "io.kubernetes.container.name": "you_p
2021-07-19 16:02:56 4271 2
原创 【Go】Golang内存管理篇 ⑤
一. 内存管理内存分配器堆和栈区别1.空间分配区别:栈:由操作系统(编译器)自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构中的栈。堆:一般由代码分配释放,若代码没有显式释放,程序结束时可能由OS回收,分配方式类似链表。2.缓存方式区别:栈:使用的是一级缓存,通常都是被调用时处于存储空间中,调用完毕立即释放。堆:存放在二级缓存中,生命周期由垃圾回收算法来决定。3.数据结构区别:栈:先进后出的线性结构。堆:类似于一颗树。1.1 go内存分配
2021-07-16 15:19:18 1019
原创 【数据库篇】Redis知识点
2.1 redis 特性redis为什么这么快1.基于内存Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。2.单线程上下文切换线程只需要保存线程的上下文(相关寄存器状态和栈的信息)Redis采用了单线程的模型,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU。3.IO多路复用技术redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。多路-指的是多个socket
2021-07-14 15:45:02 3084 1
原创 【运维篇】kubernetes面试相关总结
简述 Kubernetes 中什么是静态 Pod?静态 pod 是由 kubelet 进行管理的仅存在于特定 Node 的 Pod 上,他们不能通过 API Server 进行管理,无法与 ReplicationController、Deployment 或者 DaemonSet 进行关联,并且 kubelet 无法对他们进行健康检查。静态 Pod 总是由 kubelet 进行创建,并且总是在 kubelet 所在的 Node 上运行。简述 Kubernetes 中 Pod 可能位于的状态?Pendi
2021-06-26 18:20:20 699
原创 【面试篇】牛客网面试总结
运维etcd 如何保持高可用性只有当集群中多数节点正常的情况下,才可以进行运行时的配置管理。如果集群多数节点损坏,集群就失去了写入数据的能力。官方推荐3,5,7为etcd cluster数目,其中7可以满足大部分情况通常情况下,如果是Follower节点宕机,如果剩余可用节点数量超过半数,集群可以几乎没有影响的正常工作。如果是Leader节点宕机,那么Follower就收不到心跳而超时,发起竞选获得投票,成为新一轮term的Leader,继续为集群提供服务。灾难恢复当集群超过半数的节点都失效时,就
2021-05-12 00:08:26 1641 2
原创 【微服务】Go进阶四 日志&指标&链路追踪
日志级别https://github.com/golang/glog,是 google 提供的一个不维护的日志库,glog 有其他语言的一些版本,对我当时使用 log 库有很大的影响。它包含如下日志级别:InfoWarningErrorFatal(会中断程序执行)还有类似 log4go,loggo,zap 等其他第三方日志库,他们还提供了设置日志级别的可见行,一般提供日志级别:TraceDebugInfoWarningErrorCriticalFatal记录消息后,直接调
2021-04-24 23:34:08 738
原创 【计算机基础】计算机网络①
1.网络编程互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。主要协议分为:Socket接口抽象层TCP / UDP面向连接(可靠) / 无连接(不可靠)HTTP1.1 / HTTP2 / QUIC(HTTP3)超文本传输协议...
2021-04-19 12:12:43 1968 1
原创 【微服务】Go进阶② 微服务可用性设计
微服务可用性设计隔离隔离,本质上是对系统或资源进行分割,从而实现当系统发生故障时能限定传播范围和影响范围,即发生故障后只有出问题的服务不可用,保证其他服务仍然可用。服务隔离动静分离、读写分离轻重隔离核心、快慢、热点物理隔离线程、进程、集群、机房读写分离:主从、Replicaset、CQRS。核心隔离业务按照 Level 进行资源池划分(L0/L1/L2)。核心/非核心的故障域的差异隔离(机器资源、依赖资源)。多集群,通过冗余资源来提升吞吐和容灾能力。快慢隔离我们可以把
2021-04-16 00:20:53 1169
原创 【微服务】【GO训练营总结】Go进阶① 微服务概览
01 第一周:微服务(微服务概览与治理)可用性&兼容性设计API Gateway (网关)Microservice划分Microservice安全
2021-04-11 17:57:39 1501
原创 【Go】微服务框架总结
Go-Mirco框架go-zero微服务框架1. zRPC使用参考go-zero 文档查看server注册ETCDCTL_API=3 etcdctl get hello.rpc --prefix显示服务已经注册2. 接口限流 periodlimit2.1 滑动窗口限流接口限流实现 redis + lua而在一个分布式系统中,存在多个微服务提供服务。所以当瞬间的流量同时访问同一个资源,如何让计数器在分布式系统中正常计数?同时在计算资源访问时,可能会涉及多个计算,如何保证计算的原子性?
2021-03-07 22:12:52 3385 1
原创 【计算机基础】计算机网络知识点②
TCP UDPTCPTCP/IPTCP/IP是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。 TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。 通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。TCP三次握手① A 的 TCP
2021-03-07 00:01:11 541
原创 【Go】Golang runtime调度③
文章目录调度-GMP调度模型1. GMP支撑了 Go 的高并发2. GMP定义3.Goroutine vs OS thread 有什么区别?抢占1.go协程阻塞时如何进行调度?1. 只G阻塞,M,P可用的2. G,M都被阻塞,P可用系统调用(open file) system call2.GO的调度过程:2.5 PMG模型中状态汇总G状态P的状态M的状态如果Goroutine 一直占用资源怎么办,PMG模型怎 么解决的这个问题?1,如果某个M陷入阻塞呢?2,如果有的M较忙,有的M较闲呢?3,如果一个G运行时
2021-02-09 10:31:37 1131 1
原创 【微服务】微服务治理:熔断、链路追踪
熔断器有三种状态:关闭状态:服务正常,并维护一个失败率统计,当失败率达到阀值时,转到开启状态开启状态:服务异常,调用 fallback 函数,一段时间之后,进入半开启状态半开启装态:尝试恢复服务,失败率高于阀值,进入开启状态,低于阀值,进入关闭状态github.com/afex/hystrix-go,提供了 go 熔断器实现,使用上面也很方便,首先创建一个熔断器hystrix.ConfigureCommand( "addservice", // 熔断器名字,可以用服务名称命名,一个名字对应
2021-02-03 22:11:10 830
原创 【Go】Go-Micro微服务框架
简单案例 https://github.com/why19970628/micro-serviceService实现如下接口的,都是Servicetype Service interface { Init(...Option) Options() Options Client() client.Client Server() server.Server Run() error String() string}如 service := micro.NewService()返回的是mic
2021-02-02 22:55:24 224
原创 操作系统知识点
系统调用什么是系统调用?Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。用户可以通过系统调用命令在自己的应用程序中调用它们。从某种角度来看,系统调用和普通的函数调用非常相似。区别仅仅在于,系统调用由操作系统核心提供,运行于内核态;而普通的函数调用由函数库或用户自己提供,运行于用户态。随Linux核心还提供了一些C语言函数库,这些库对系统调用进行了一些包装和扩展,因为这些库函数与系统调用的关系非常紧密,所以习惯上把这些函数也称为系统调用。为什么要用系统调用?实际上,很多已经被我
2021-01-30 00:20:48 829
原创 【Go】面试篇 ②
showmebug2 6年经验1.多核cpu cache怎么保持不冲突和一致MESI解决方案 把cache 设置为四个状态,是两个bit来表示,四种状态:修改、独占、共享、失效状态更新:把内存的一块数据加载到cache中,某一个内核对这个数据进行修改,这时就是修改状态,独占的状态。有另外一个相同的数据资源修改时,这时会检测到,将独占状态变为共享状态,之前读取的数据会变成失效的状态,新的内存里面加载到cache里面,还有一些不同的情况:当一个数据处于共享状态,比如两个内核都加载同一份数据,到内核ca
2021-01-23 23:49:53 547
原创 【运维篇】运维知识点
容器容器和虚拟机的区别1.容器技术简介对于容器,它首先是一个相对独立的运行环境,在这一点有点类似于虚拟机,但是不像虚拟机那样彻底。在容器内,应该最小化其对外界的影响,比如不能在容器内把宿主机上的资源全部消耗,这就是资源控制。容器可以看成一个装好了一组特定应用的虚拟机,它直接利用了宿主机的内核,抽象层比虚拟机更少,更加轻量化,启动速度极快。可以做到秒级,甚至毫秒级启动相比于虚拟机,容器拥有更高的资源使用效率,因为它并不需要为每个应用分配单独的操作系统——实例规模更小、创建和迁移速度也更快。.
2021-01-18 10:59:53 591 1
原创 【数据库篇】MySQL基础知识
IO多路复用技术redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。多路-指的是多个socket连接,复用-指的是复用一个线程。多路复用主要有三种技术:select,poll,epoll。epoll是最新的也是目前最好的多路复用技术。这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),且Redis在内存中操作数据的速度非常快(内存内的操作不会成为这里的性能瓶颈),主要以上两点
2021-01-10 16:48:42 491 1
原创 【Go】Go语言面试②
文章目录1.11.22.12.2京东make new的区别数组和切片的区别Go线程安全?PythonPython3 GIL(Global Interpreter Lock) 下 多线程与多进程1.1Go语言中Select用法如何通俗理解docker?集装箱、Docker容器提供的是虚拟化的运行环境集群、微服务与分布式的理解分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中在一起,实现同一业务。 分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。简单说
2021-01-10 16:46:02 525
原创 分布式锁的总结(redis)
方法一:使用setnx + set参数,一步搞定://使用set 参数实现分布式锁func DoSet(conn redis.Conn,commandName string, args... interface{}){ lock.Lock() defer lock.Unlock() res,err := conn.Do("set","dirlock","true","EX",10,"NX") if err != nil{ fmt.Println("redi
2020-11-10 23:46:57 490
原创 阿里云Codeup云效使用flow+k8s部署go语言项目
codeup云效flow制作DockerfileFROM golang:alpine AS builderADD ./ /data/app/WORKDIR /data/app/ENV GO111MODULE=on \ CGO_ENABLED=0 \ GOOS=linux \ GOARCH=amd64 \ GOPROXY=https://goproxy.io,directEXPOSE 8888RUN CGO_ENABLED=0 GOOS=linux GOAR
2020-11-09 20:32:50 3404 2
原创 【数据库篇】Elasticsearch知识总结
在公司需要用到es,这里做下知识点的记录吧一、基础工具阿里云es提供查询工具,包括kibana集群信息 推荐es-head 用Chrome插件 或者 GitHub查询index结构GET user_login_log/message/_mapping二、简单查询ES 读取过程分为GET和Search两种操作。GET/MGET(批量GET): 需要指定_index、_type、_id。也就是根据id从正排索引中获取内容。Search: Search不指定_id,根据关键词从哪个倒排索
2020-10-29 11:15:30 1510 1
原创 【后端】消息队列--RocketMQ篇
rabbitmqpackage mainimport ( "fmt" "log" "strconv" "github.com/streadway/amqp")func failOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, err) }}func main() { conn, err := amqp.Dial("amqp://admin:admin@localhost:
2020-09-18 23:29:17 1985 1
原创 【后端】黑马头条v5.0(Python3-Flask)
12_雪花算法id生成与redis连接的配置import timeimport loggingclass InvalidSystemClock(Exception): """ 时钟回拨异常 """ pass# 64位ID的划分WORKER_ID_BITS = 5DATACENTER_ID_BITS = 5SEQUENCE_BITS = 12# 最大取值计算MAX_WORKER_ID = -1 ^ (-1 << WORKER_ID_BITS
2020-09-10 00:56:21 1788 8
原创 【Go】Go读书社区web开发与高性能架构优化 (beego+redis+es)
ES 操作es router //搜索 beego.Router("/search", &controllers.ElasticsearchController{}, "get:Search") beego.Router("/search/result", &controllers.ElasticsearchController{}, "get:Result")ElasticsearchControllerpackage controllersimport ( "fmt.
2020-08-22 19:16:35 1283 1
原创 加密策略
PythonGogin_resaurant//用户登录func (ms *MemberService) Login(name string, password string) *model.Member { //1、使用用户名 + 密码 查询用户信息 如果存在用户 直接返回 md := dao.MemberDao{tool.DbEngine} member := md.Query(name, password) if member.Id != 0 { return member }
2020-08-14 15:03:36 746
原创 【Go】Go-Iris框架实战之电商秒杀系统②核心优化
文章目录第9章 系统分析&前端优化【核心优化方案落地9-2 秒杀分布式架构设计页面静态化的几种方式9-9 CDN原理和作用第10章 服务端性能优化之实现cookie验证后端优化思路基础架构与优化的的架构对比突破Session限制(Cookie代替)cookie与session的区别第11章 服务端性能优化之分布式验证实现11-1 分布式概念第12章 服务端性能优化解决超卖&引入消息队列第14章 课程总结第9章 系统分析&前端优化【核心优化方案落地9-2 秒杀分布式架构设计页面
2020-08-13 00:41:57 984
原创 go语言基于Casbin实现角色的权限控制
实战一般运用到项目后台的管理权限中初始化数据库初始化环境后,系统会在你选择的数据库自动生成一个casbin_rule的数据库表用户权限的增删改查tips:这些接口,需要放在截器中间件前面, 不然空表无法添加数据 //使用自定义拦截器中间件 r.Use(Authorize())//增加policy r.POST("/api/v1/add", func(c *gin.Context) { fmt.Println("增加Policy") if ok, _ := Enforcer.A.
2020-08-09 03:45:27 3310
原创 秒杀系统总结
文章目录一、问题二、解决思路1. 高并发Redis集群2. 超卖服务单一职责:一、问题高并发超卖二、解决思路1. 高并发分布式服务Nginx负载均衡、轮询(ip黑名单)分布式服务器(服务单一职责,)Redis 高可用 (集群,主从同步、读写分离,哨兵机制,开启持久化)Mysql高可用(集群、读写分离)静态页面消息队列(MQ,Redis等消息队列)限流 降级前端 : 按钮时间、链接等(后端、秒杀次数Redis缓存库存预热Redis集
2020-08-04 22:35:08 871
原创 【Go】Gin框架实战之云餐厅外卖
文章目录Gin入门基础01.Gin简介02.HTTP请求和参数解析创建Engine处理HTTP请求RouterGroup04. 多数据格式返回请求结果05. 中间件的编写和使用Next()的作用07.Gin访问和使用数据库云餐厅项目项目简介项目简介Gin入门基础01.Gin简介02.HTTP请求和参数解析创建Engine处理HTTP请求RouterGroup04. 多数据格式返回请求结果05. 中间件的编写和使用Next()的作用07.Gin访问和使用数据库增删改 使用E
2020-08-02 18:57:21 1340 2
原创 elementui小项目案例
搭建环境sudo cnpm install webpack -gsudo vue init webpack userselement文档
2020-08-02 01:55:40 2575
原创 React学习与项目的搭建总结
创建一个react-app项目搭建脚手架这里就直接使用create-react-app 脚手架了。安装脚手架npm install -g create-react-app创建项目create-react-app address_searchDocker 打包镜像根目录下面新建一个Dockerfile文件# 使用node版本alpineFROM node:alpine# 代表生产环境ENV PROJECT_ENV production# 许多 package 会根据此环境变量,
2020-07-30 15:20:21 201
原创 CI/CD持续集成与持续部署
服务器使用Gitlab的服务器GitLab Runner安装下载 # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash # For RHEL/CentOS/Fedora curl -L https://packages.gitlab.com/install/repositories/run
2020-07-29 22:27:10 954
ROSTCM6.zip
2019-08-24
Pandas_exercises-master.rar
2019-05-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人