自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

田园园野的博客

每一个你不满意的现在,都有一个你没有努力的曾经。

  • 博客(201)
  • 收藏
  • 关注

原创 画格子

题目描述Donald Trump当选了美国总统,他的一个小粉丝很一颗赛艇,于是就画了一些小格子,如下所示:MAKEAMERICA AKEAMERICAG KEAMERICAGR EAMERICAGRE AMERICAGREA MERICAGREAT ERICAGREATA RICAGREATAG ICAGREATAGA CAGREATAGAI AGREATAGAIN现在如果从开头

2020-01-02 12:57:56 1272

原创 k8s部署Traefik

Ingress:ingress是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL的路由信息,路由信息得的刷新由Ingress controller来提供。Ingress Controller 实质上可以理解为是个监视器,Ingress Controlle...

2019-06-02 00:16:14 8614

原创 Kubernetes利用CNI-bridge插件打通网络

使用CNI插件时,需要如下配置1、将需要用到的cni组件(二进制可执行文件)放到/opt/cni/bin目录下2、在/etc/cni/net.d中增加cni的配置文件,配置文件中可以指定需要使用的cni组件及参数3、kubelet启动参数中networkPlugin设置为cni4、创建网桥5、添加本机网络端口到网桥中具体操作流程:1、下载CNI插件https://github.co...

2019-06-02 00:00:02 6237 2

原创 kube-proxy ipvs模式详解

一、kube-proxy 开启 ipvs1、环境准备:测试环境为kubernetes集群,一台master节点,一台node节点。集群网络使用flanneld搭建。注意:master节点上也需要进行kubelet配置。因为ipvs在有些情况下是依赖iptables的,iptables中KUBE-POSTROUTING,KUBE-MARK-MASQ, KUBE-MARK-DROP这三条链是被 ...

2019-06-01 23:42:20 37498 6

原创 kubernetes的Kube-proxy的iptables转发规则

概念kube-proxy 实际上并不起一个 proxy 的作用,而是 watch 变更并更新 iptables,也就是说,client 的请求直接通过 iptables 路由。如果kube-proxy通过iptables 转发。会修改filter和nat表filter表filter表通过OUTPUT链规定所有的出报文都要经过KUBE-SERVICES,如果一个Service没有对应的end...

2019-06-01 23:30:34 10206 2

转载 golang pprof使用

pprof 简介golang 的性能分析库在 runtime/pprof 里,主要提供下面几个接口// 堆栈分析func WriteHeapProfile(w io.Writer) error// cpu分析func StartCPUProfile(w io.Writer) errorfunc StopCPUProfile()使用上面比较简单,只需要将文件指针传给对应的函数即...

2018-08-19 17:11:29 1903

原创 linux 内核同步介绍

一、造成并发执行的原因:1.中断   2.软中断和tasklet   3.内核抢占     4.睡眠与用户空间的同步。5.两个或多个处理器可以同时执行代码。二、预防死锁:1、按顺序加锁。可以防止指明拥抱类型的死锁2、防止发生饥饿,如果A不发生,B要一直等待下去吗?3、不要重复请求同一个锁。4、设计应简单。三、在编写代码时,要考虑如下:1、这个数据是不是全局的,除了当...

2018-07-30 17:55:47 713

原创 linux 中断和中断处理

一、概念内核需要管理连接到计算机上的硬件设备,如硬盘,蓝光碟机,键盘,鼠标,3D处理器,以及无线电等。内核提供一种机制,让硬件在需要的时候再向内核发出信号。这就是中断机制。从物理学角度看,中断是一种电信号,中断是硬件发出,送入中断控制器的输入引脚中,中断控制器是个简单的电子芯片,其作用是将多路中断管线,采用复用技术只通过一个和处理器连接的管线与处理器通信。当接受到一个中断后,中断控制器会给...

2018-07-30 15:47:16 1363

原创 linux 进程调度

一、调度策略1、I/O消耗型:图型界面程序。处理器消耗型:执行大量数学计算的程序。2、进程优先级:①nice值:值越大,优先级越低。nice值代表时间片的比例②实时优先级:越高的实时优先级数值意味着进程优先级越高。3、时间片:它表示进程在被抢占前所能持续运行的时间。linux中使用新的CFS调度器,其抢占时机取决于新的可运行程序消耗了多少处理器使用比,如果消耗的使用比比...

2018-07-30 10:30:48 216

原创 linux 进程,线程

一、概念进程包含很多资源,如打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程。用来存放全局变量的数据段等。内核需要管理所有的细节。线程,是在进程中活动的对象,每个线程都拥有一个独立的程序计数器,进程栈和一组进程寄存器。进程描述符(task_struct)是任务队列(双向循环链表中)的类型。二、进程的五种状态:运行态:或者...

2018-07-30 08:51:55 335

原创 select,poll,epoll

一、io 多路复用技术 select 和pollselect:IO复用模型是多了一个select函数,select函数有一个参数是文件描述符集合,意思就是对这些的文件描述符进行循环监听,当某个文件描述符就绪的时候,就对这个文件描述符进行处理。多个的进程的IO可以注册到一个复用器(select)上,然后用一个进程调用该select, select会监听所有注册进来的IO; 如果s...

2018-07-29 18:28:01 238

原创 五种网络io模型

1 阻塞式IO模型在阻塞狀態下,程序是不會浪費CPU的,cpu只是不执行io操作了,还会去做别的。当发现有数据的时候会把数据读到用户指定的缓冲区。但是如果这个时候读到的数据量比较少,比参数中指定的长度要小,read并不会一直等待下去,而是立刻返回。read的原则是数据在不超过指定的长度的时候有多少读多少,没有数据就会一直等待。所以一般情况下我们读取数据都需要采用循环读的方式读取数据,一...

2018-07-29 17:46:56 333

原创 数据库高并发常见方案

一、想办法减小查询次数1,页面静态化- 用户可以直接获取页面,不用走那么多流程,比较适用于页面不频繁更新。2,使用缓存- 第一次获取数据从数据库准提取,然后保存在缓存中,以后就可以直接从缓存提取数据。不过需要有机制维持缓存和数据库的一致性。3,使用储存过程-那些处理一次请求需要多次访问数据库的操作,可以把操作整合到储存过程,这样只要一次数据库访问就可以了。4,批量读取 - 高并发情...

2018-07-29 13:26:44 506

原创 mysql数据库查询好慢解决方法

一、慢查询:MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句1,slow_query_log这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。2,long_query_time当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。3,slow_query_log_file记录日志的文件名。4,log_queries_not_using...

2018-07-29 13:12:48 8534

原创 golang 深入剖析,初始化,编译器,目标文件,链接器

一、go程序初始化顺序在 main 包中的 go 文件默认总是会被执行 同包下的不同 go 文件,按照文件名“从小到大”排序顺序执行 其他的包只有被 main 包 import 才会执行,按照 import 的先后顺序执行 被递归 import 的包的初始化顺序与 import 顺序相反,例如:导入顺序 main –> A –> B –> C,则初始化顺序为 C –&g...

2018-07-28 14:32:52 1852

原创 ip、tcp、udp、arp

一、IP:差错检验 IP数据报只检验IP数据报的首部 首部格式 版本,首部长度,区分服务,总长度,标志,片偏移,生存时间,协议,首部检验和 二、UDP:作用 复用和分用的功能,以及差错检验功能的实现 差错检验 把首部和数据部分一起检验,只能检验到达的数据是否有错。 首部格式 (源ip地址,目标ip地址检验的时候有)源端口,目的端口,udp长度,...

2018-07-22 19:43:39 1005

原创 HTTP1.0、HTTP1.1、HTTP2.0的关系和区别

一、汇总对比HTTP1.0 无状态、无连接 HTTP1.1 持久连接 请求管道化 增加缓存处理(新的字段如cache-control) 增加Host字段、支持断点传输等(把文件分成几部分) HTTP2.0 二进制分帧 多路复用(或连接共享) 头部压缩 服务器推送 二、H...

2018-07-22 17:15:50 14099 1

原创 TCP 三次握手,四次挥手

一、Tcp建立连接1、建立连接过程中要解决的问题:①要使每一方能够确知对方的存在②要允许双方协商一些参数:如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量等。③能够对运输实体资源:如缓存大小,连接表中的项目等进行分配2、三次握手3、为什么A还要再一次确认?防止已经失效的连接请求报文段突然又传送到B,而产生错误例如:A发送的第一个超时的请求连接的报文,...

2018-07-22 16:17:44 239

原创 mysql 分表分区

一、分表1、垂直分割:就是将一个表按照字段来分,每张表保证有相同的主键就好。一般来说,将常用字段和大字段分表来放。                      优势:比没有分表来说,提高了查询速度,降低了查询结果所用内存;劣势:没有解决大量记录的问题,对于单表来说随着记录增多,性能还是下降很快;2、水平分割:水平分割是企业最常用到的,水平拆分就是大表按照记录分为很多子表:  ...

2018-07-22 11:49:25 982

原创 mysql 知识总结

一、主键,外键,超键,候选键;超键 在关系中能唯一标识元组的属性集,里面可能包含很多能唯一标识元组的属性 候选键 不含有多余属性的超键,即它里面的属性一旦去掉任何一个,它就不是超键 主键 用户选作元组标识的一个候选键 外键 该列为另一表的主键; 二、数据库范式1NF 每一列都是不可分割的基本数据项,同一列无二值;无重复的域; ...

2018-07-22 11:19:58 214

原创 mysql 索引

数据库索引是存储到磁盘的而我们又一般以使用磁盘I/O次数来评价索引结构的优劣。先从B-Tree分析,根据B-Tree的定义,可知检索一次最多需要访问h-1个节点(根节点常驻内存)。数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入。为了达到这个目的,在实际实现B-Tree还需要使用如下技巧:每次新建节点时,直接申请一个页的空间,这样...

2018-07-22 09:35:32 239

原创 golang 读取配置文件

beego config模块,可以解析文件,目前支持解析的文件格式有 ini、json、xml、yaml简单例子:import ( "fmt" "github.com/astaxie/beego/config")func main() { //首先初始化一个解析器对象 conf, err := config.NewConfig("ini", "E:\\golang\\go_...

2018-07-20 21:50:26 3009

原创 tailf日志组件使用

当tail的文件中有信息变动时,就会tail到变动的地方。例子:func main() { //filename := "E:/golang/go_work/src/go_dev/day11/tail/my.log" filename := "C:\\Users\\TCY\\Desktop\\logs\\my.log" tails, err := tail.TailFile(fil...

2018-07-20 21:34:57 1014

原创 golang context包

一、介绍go中有Context 包,专门用来简化 对于处理单个请求的多个 goroutine 之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。你可以通过 go get golang.org/x/net/context 命令获取这个包。例如:在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启...

2018-07-20 20:17:12 5352

原创 向elasticSearch中存数据

type Tweet struct { User string Message string}func main() { client, err := elastic.NewClient(elastic.SetSniff(false), elastic.SetURL("http://192.168.31.177:9200/")) if err != nil { fmt.P...

2018-07-20 10:06:40 1103

原创 区块链

一、区块链种类私有链:开发节点,测试节点是指存在一定的中心化控制的区块链。仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。参与的节点只有用户自己,数据的访问和使用有严格的权限管理。联盟链由于存在一定的中心化控制,所以也可以认为是属于私有链范畴。特点:由于全是用户说了算,里面的数据没有无法更改的特性,对于第三...

2018-07-18 20:34:27 684

原创 B树,B+树,红黑树应用场景笔记

一、B树的应用1、B树大量应用在数据库和文件系统当中。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数。B树算法减少定位记录时所经历的中间过程,从而加快存取速度。假定一个节点可以容纳100个值,那么3层的B树可以容纳100万个数据,如果换成二叉查找树,则需要20层!假定操作系统一次读取一个节点,并且根节点保留在内存中,那么B树在100万个数据中查找目标值...

2018-07-18 13:01:51 23222

转载 linux 进程通信-信号

首先,先说一下什么是信号。信号本质上是在软件层次上对中断机制的一种模拟,其主要有以下几种来源:程序错误:除零,非法内存访问…外部信号:终端Ctrl-C产生SGINT信号,定时器到期产生SIGALRM…显式请求:kill函数允许进程发送任何信号给其他进程或进程组。在Linux下,可以通过以下命令查看系统所有的信号:kill -l可以通过类似下面的命令显式的给一个进程发送一个信号:kill -2 pi...

2018-07-16 09:59:16 168

原创 linux 磁盘分区 挂载 卸载 常用命令

一、挂载的概念和作用:这个概念这位博主写的很好:https://blog.csdn.net/qq_39521554/article/details/795017141.Windows下,mount挂载,就是给磁盘分区提供一个盘符(C,D,E,...)。比如插入U盘后系统自动分配给了它I:盘符其实就是挂载,退优盘的时候进行安全弹出,其实就是卸载unmount。2.Linux下,不像Windows可以...

2018-07-15 17:18:15 6455

原创 linux 目录 及其 作用

/bin: 存放着系统必备执行命令,/bin下存放一些普通的基本命令,如ls,chmod等,这些命令在Linux系统里的配置文件脚本里经常用到。/bin下的命令管理员和一般的用户都可以使用。cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等执行命令。/sbin:s是Super User的意思,这里存放的是系统管理员使用的系统...

2018-07-15 16:29:20 177

原创 linux与Windows的区别

 一、 Linux特点:  Linux里面一切皆是文件,Linux里面可以没有后缀名,也可以有。任何一个文件都可以有或没有扩展名。对于打开文件操作,没有扩展名的文件需要选择程序去打开它,有扩展名的文件会自动用设置好的程序(如有)去尝试打开(是“尝试打开”,而不是“打开”的原因参看下面的第2个误区),文件扩展名是一个常规文件的构成部分,但一个文件并不一定需要一个扩展名。  ...

2018-07-15 11:45:39 553

原创 etcd使用笔记1

1、启动服务端2、 设置版本set ETCDCTL_API=33、使用客户端命令操作:etcdctl put key1 value1               成功返回OK4、代码操作1、向etcd中put,setfunc main() { SetLogConfToEtcd() //EtcdExmaple()}func EtcdExmaple() {...

2018-07-05 09:16:44 603

原创 kafka笔记1

1、zookeeper默认端口:21812、kafka默认端口:90923、运行Zookeeper进入zookeeper-3.4.9\bin目录,双击zkServer.cmd如果打印以下信息则表示zookeeper已经安装成功并运行在2181端口4、运行kafka:  .\bin\windows\kafka-server-start.bat .\config\server.pr...

2018-07-03 11:01:46 354

原创 简单背包问题

1、简单背包问题:递归:var flag boolvar W = make([]int,40)func dfs(s int,n int)(bool){ if s==0 { return true } if s<0 || (s>0 && n<1){ return false } if dfs(s-W[n],n-1) { fmt.Print...

2018-06-26 11:30:52 192

原创 redis API

key:string value:以下五种类型1、Stringset key value:    不管key是否存在,都设置setnx key value:    key不存在,才设置setex key seconds  value:    将值value关联到key,并将key的过期值设为seconds(以秒为单位),在设置缓存时候特别有用。PSETEX key millis...

2018-06-25 21:27:20 434

原创 动态规划

1、剪绳子给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1,m>1), 每段绳子的长度记为 k[0], k[1], k[2], …, k[m]。 请问 k[0] * k[1] * k[2] * … * k[m] 可能的最大乘积是多少? 例如,当绳子的长度为8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。解法一:动态规划func max(a int...

2018-06-25 13:20:09 192

原创 Docker下redis的主从配置

1、拉取redis镜像[tcy@tcy1 ~]$ docker pull daocloud.io/library/redis:latest2、启动3个redis容器服务,分别使用到6379、6380、6381端口docker run --name redis-6379 -p 6379:6379 -d daocloud.io/library/redisdocker run --name redis-...

2018-06-24 21:00:24 4149 4

原创 docker 基础教程

docker run -it alpine shdocker run : 运行-it:输入输出重定向alpine:镜像名字sh/bash:[root@tcy1 tcy]# docker run -d -p 80:80 nginx-d:不退出,在后台一直运行。-p 80:80 端口重定向,把容器中的80端口映射到物理机器上的80端口。...

2018-06-24 19:18:31 253

原创 docker 端口映射与容器互联

在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的,要让外部访问这些应用时,可以通过-P和-p参数来指定端口映射。当使用-P(大写的)标记时,docker会随机映射一个49000~49900的端口到内部容器开放的网络端口,-p(小p)可以指定到要映射的端口。一、随机映射:端口不会冲突。-P(大P)[root@tcy1 tcy]# docker run -...

2018-06-24 18:52:52 2518

原创 golang 算法-递归

1、汉诺塔问题:

2018-06-24 10:42:20 876

空空如也

空空如也

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

TA关注的人

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