自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 golang中携程的坑

其中()中的会被先计算值导致死锁。

2023-09-19 20:55:21 111

原创 go获取内存监控

golang运行时程序分析

2023-02-01 16:38:12 825

原创 数据库优化相关记录

1. 大表拆分,拆分后可使用union all进行连接查询如:SELECT * FROM `alarm` union all SELECT * FROM alarm_flow_metadata;2. order by 优化,因order by操作过程中会存在排序操作,如果不关注分组后顺序问题可使用order by null关闭排序操作。如:EXPLAIN SELECT eventId, COUNT(*) AS sumid...

2021-12-21 11:09:19 555

原创 两个有序列表合并排序

问题:现在存在两个有序列表将其合并后排序def mergeList(list1, list2): tempList = list() while len(list1)>0 and len(list2)>0: if list1[0] < list2[0]: tempList.append(list1[0]) del list1[0] else: tempList.ap

2021-12-21 11:07:49 358

原创 gorm处理动态结果问题

今天我们使用gorm有某场景需要动态拼接sql语句,获取结果title为动态修改。事情背景:此前我们使用beego开发使用beego自带orm,处理此类问题可定义接收变量为([]orm.Params)例如var maps []orm.Paramsif _, err := o.Raw(sql).Values(&maps);err!=nil { return }现在项目重构使用gin+gorm+redigo+iview结构在处理此...

2021-07-13 20:32:36 912

原创 redis哨兵+golang代码测试

前边我们已经完成了redis的主从搭建,这里考虑到容灾的自动切换,如下图:我们利用哨兵(sentinel)来对各节点进行监控【主从配置】首先看一下redis.conf 配置文件中的各个参数,详解如下# redis进程是否以守护进程的方式运行,yes为是,no为否(不以守护进程的方式运行会占用一个终端)。 daemonize no # 指定redis进程的PID文件存放位置 pidfile /var/run/redis.pid # redis进程的端口号 port 6379

2021-04-06 14:32:50 876

原创 使用mysql自带mysqlslap进行数据库压力测试

mysqlslap是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况。1. 简单自动测试mysqlslap –user=root –password=用户密码 –auto-generate-sql–auto-generate-sql作用是自动生成测试SQL结果各项含义:Average number of … // 运行所有语句平均秒数Minimum number of … // 运行所有语句最小秒...

2021-03-28 19:48:11 383 1

原创 mysql互为主从配置

1. 首先准备两台可ping通的服务器2. 分别安装mysql数据库【主服务器配置】1.修改mysql配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,这部分一定要配置在[mysqld]后面,配置完成如下(因我们配置为互为主从故DB配置中也包含从配置项)2. 重启数据库:命令行中输入 /etc/init.d/mysql restart3. 登录主库mysql -u root -p //然后输入密码登录4.进入数据库之后给主数据库授权一个可..

2021-03-26 14:29:56 2596

原创 mysql主从及HMA集群配置

数据库服务器5台192.168.4.51到192.168.4.55恢复为独立的数据库服务器,只保留系统默认的4个库其他的全部删除把mha-soft-student目录下的所有软件分别拷贝到5台数据库服务器上再准备一台服务器192.168.4.56做管理集群的主机不需要运行mysql数据库服务。也拷贝mha-soft-student目录下的所有软件主机192.168.4.50做客户端,不需要运行mysql数据库服务。也不需要拷贝软件。+++++++++++++++++++++...

2021-03-24 18:48:38 474

原创 JMeter安装

jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi

2021-03-24 14:40:03 101

原创 golang的GC

三色标记:首先所有对象都是白色,1. 从root开始将所有可达对象标记为灰色2. 从灰色集合中取出,将其引用的对象标记为灰色,自己标记为黑色3. 重复上边的操作,直到灰色集合为空4. 标记结束后不可达白色集合即为垃圾,回收白色对象5. 重置GC状态写屏障的意义:三色标记需要维护不变性条件,黑色对象不能引用无法被灰色对象可达的白色对象。并发标记时,如果没有做正确性保障措施,可能会导致漏标记对象,导致实际上可达的对象被清扫掉。为了解决这个问题,go使用了写屏障,写屏障是在写入指针前执.

2020-11-25 22:07:56 195

原创 golang知识点

1. golang中安全读写共享变量 通过Channel进行安全读写共享变量 通过Mutex加锁处理 对于Map可以使用sync.Map 针对读多写少情况可以使用sync.RWMutex 2. channel是否同步问题channel无缓冲时,发送阻塞直到数据被接收,接收阻塞直到读取到数据 channel有缓冲时,当缓冲满时发送阻塞,当缓冲空时接收阻塞3. go语言并发机制以及它所使用的CSP并发模型CSP模型是上个世纪七十年代提出的,不同于传统的多线程通

2020-11-25 15:05:08 475

原创 redis模拟kafka功能思路分析

分析 :Redis 发布订阅 :publish指令 subscribe指令1. 单发布者生产者极限本机约8w2. 发布者根据chanel发布msg3. 订阅者根据chanel订阅msg4. 如果发布者发布了但没有订阅者正在监听则数据丢失Redis 生产者消费者: LPUSH命令(Producer) BRPOP命令(Consumer)1. 单生产者或者消费者极限本机约8w2. 生产者利用LPUSH命令将msg以key-value形式推入队列中3. 消费者使...

2020-11-14 15:01:06 614

原创 golang 锁使用注意事项

运行时离开当前逻辑就释放锁。 锁的粒度越小越好,加锁后尽快释放锁。 尽量不用 defer 释放锁。 读锁不要嵌套。

2020-11-14 14:58:03 525

原创 终端出现END怎么退出

神技

2020-09-16 21:46:46 2362 2

原创 Mac下载安装brew特别慢的问题解决

1.用safari打开“https://raw.githubusercontent.com/Homebrew/install/master/install.sh”,把里面的文本复制下来,在桌面创建文本文件“brew_install”,粘贴.2.搜索:BREW_REPO="https://github.com/Homebrew/brew"替换成:BREW_REPO="https://mirrors.ustc.edu.cn/brew.git"保存.3.打开termin..

2020-09-15 21:29:56 1583

原创 Redis实现分布式锁,及Golang代码展示分析

一、使用分布式锁要满足的几个条件:系统是一个分布式系统 共享资源 同步访问二、应用场景:从redis取值N,对数值进行修改然后将N写回redis中,这种应用场景是很常见的,像秒杀,全场递增ID,IP访问限制等。以IP访问限制来说,而已攻击者可能发起无限次访问,并大量比较大,分布式环境下对N的检测修改就不可靠了,因为从redis读取的N可能已经是脏数据了。传统的加锁做法也没用,因为这是分布式环境,在这种情况下就需要分布式锁出场了。分布式锁可以基于很多种方式实现,比如zookeeper

2020-09-09 22:22:51 313

原创 golang中值类型和引用类型

值类型包括:int、float、bool、string、数组、结构体值类型变量声明后,不管是否已经赋值,编译器为其分配内存,此时该值储存于栈上,j=i 时候修改某变量的值不会影响另一个引用类型包括:指针、slice切片、map、chan、interface变量直接存放的就是一个内存地址值,这个地址值指向的空间存的才是值。所以修改器中一个,另外一个也会修改。需要注意的是引用类型必须申请内存才可以使用,make()是给引用类型申请内存空间...

2020-08-20 16:12:26 218

原创 Windows下docker踩坑记录(持续更新)

windows下powershell > 不能使用问题: 在我们使用powershell操作docker时总会遇到>不能使用的问题,这时候我们可以用单引号包起来的方式使用如 '>' windows下导入导出镜像异常报错: 在我们使用powershell导出镜像时候,再导入会发生如下异常提醒:Error response from daemon: Error processing tar file(exit status 1): a...

2020-08-19 16:52:11 1037

原创 Docker下载特别慢怎么办

http://get.daocloud.io/点进去有惊喜

2020-08-19 15:35:10 239

原创 golang中的反射

Golang中的反射是通过refect实现的,我们今天就来看看他的使用和注意事项。import "reflect"//reflect包实现了运行时反射,允许程序操作任意类型的对象。//典型用法是用静态类型interface{}保存一个值,通过调用TypeOf获取其动态类型信息,//该函数返回一个Type类型值。调用ValueOf函数返回一个Value类型值,//该值代表运行时的数据。Zero接受一个Type类型参数并返回一个代表该类型零值的Value类型值。 首先我们来查看...

2020-08-19 11:33:51 811

原创 常见的排序算法golang实现

常见排序算法包括冒泡、选择、插入、快排、归并、等,其中快排为官方包sort的默认排序方式,那我们先来看一下官方快拍实现方式吧:func quickSort(data Interface, a, b, maxDepth int) { for b-a > 12 { // Use ShellSort for slices <= 12 elements if maxDepth == 0 { heapSort(data, a, b) return } maxDepth--

2020-08-17 17:23:57 240

原创 gorm中json时间格式化方法

package modelimport ( "database/sql/driver" "fmt" "time")type TimeNormal struct { // 内嵌方式(推荐) time.Time}func (t TimeNormal) MarshalJSON() ([]byte, error) { // tune := fmt.Sprintf(`"%s"`, t.Format("2006-01-02 15:04:05")) tune := t.Format(`"20.

2020-08-10 17:00:41 2014

原创 Go get 因被墙下载gin失败

现在我们的目标是下载gin,首先查阅文档,发现安装及其简单,官方给的文档简洁明了。第一步下载安装:$ go get -u github.com/gin-gonic/gin第二????步导入:import "github.com/gin-gonic/gin"然后我们就来了,咦为什么安装过程中各种404呢。思索一下,被墙了,然后去找国内镜像云。国内镜像云配置方法如下。其中有四个分别是官方/七牛/其他/阿里。这里一看这里有官方啊,那我们用官方。# 启用 Go Modules

2020-08-05 17:25:52 2833 3

原创 Golang的错误捕获及恢复

从Python转golang一直对于golang的try...catch耿耿于怀,因为开始没有找到一篇合理的两种方式对比的文章,在golang官方文档中讲解是用的panic()及recover()两个方法实现的,但是看完后对于这个概念还是很迷糊,我认为这个是对于新手来讲比较挠头的事情,所以在这里为大家简单阐述一下两种方式的对比。方便新来的同学们认识golang的异常捕获机制。 首先我们来看一下Python中的异常捕获,在Python中异常捕获书写方式跟Java及node等常用语言都类似,采...

2020-08-05 11:39:09 1170 2

原创 scrapy随便写

  在家无聊数日,消磨时间无非是打游戏扯淡。今日无事写点东西给自己看。  做爬虫也有一段时间了,但是对于爬虫一直没有一个没有一个系统的整理和分析,今日来随便写点关于scrapy的东西。  首先爬虫常用的模块有,requests,lxml,re等。对于基础的东西后边会写,这里先来分析一下scrapy这个框架,这也是实际爬虫工作中最常用的一个工具。  关于scrapy框架其最初是为了页面抓取所涉及的,...

2018-03-19 13:53:12 269

原创 关于Mysql储存1366和1406错误

首先在爬虫存储处理过程通过查看日志发现了错误信息,Mysql错误信息1406 查找后得知1406错误就是数据信息过长超过了原本设置的text属性值的最大值。这里说一下关于text属性的最大值关于1406错误text类型是可变长度的字符串,最多65535个字符; 可以把字段类型改成MEDIUMTEXT(最多存放16777215个字符)或者LONGTEXT(最多存放4294967295个字符)

2018-01-25 11:01:54 8949 2

原创 selenium 安装与 chromedriver安装

直接使用pip安装1 pip install selenium用 Chrome 浏览器来测试1 from selenium import webdriver2 3 browser = webdriver.Chrome()4 browser.get('http://www.baidu.com/')运行这段代码,会自动打开浏览器,然后访问百

2018-01-11 23:54:11 18588 1

原创 创建Python虚拟环境

virtualenv是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。  安装pip install virtualenv  基本使用为一个工程创建一个虚拟环境:$ cd my_project_dir$ virtualenv venv  #venv为虚拟环境

2018-01-11 23:51:24 7330 1

原创 web返回状态码常见错误解析

当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出:① 客户方错误100  继续101  交换协议② 成功200  OK201  已创建202  接收203  非认证信息204  无内容205  重置内容206  部分内容③ 重定向300  多路选择301  永

2018-01-09 01:51:46 1446

转载 Redis基础

redis 基础一 redis数据类型redis支持5种类型的数据类型,它描述如下的:1. 字符串  Redis字符串是字节序列。Redis字符串是二进制安全的,这意味着他们有一个已知的长度没有任何特殊字符终止,所以你可以存储任何东西,512兆为上限。2. 哈希  Redis的哈希是键值对的集合。 Redis的哈希值是字符串字段和字符串值之间的映射,因此

2018-01-07 17:15:35 245

原创 redis搭建集群

集群的需要:上一篇我们已经说到了主从的概念其实已经又花了我们对于资源和redis的利用,但如果同事的访问量过大(1000w),主服务就会挂掉。集群的概念集群是一组相互独立的、通过高速网络互联网的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器,集群配置是用于提高可用性和可缩放性。当请求到来首先由负载均衡服务器处理,把请求转发到另外

2018-01-05 23:42:49 577 1

原创 搭建主从--Redis

主从的概念一个master可以拥有多个slave,一个Slave又可以拥有多个Slave,如此下去,形成了强大的多级服务器集群机构Master用来写数据,slave用来读取数据,通过主从配置实现读写分离master和salve都是一个Redis实例主从配置查看当前主机IP地址      ifconfig修改 etc/redis/redis.conf 文件   sudo 

2018-01-05 22:46:11 184

原创 Python列表快排

代码很简单,方法类似于二分法,就是随机取值然后进行比较比他大的放右边,小的放左边,然后进行递归操作,直到所有的数组中都只有一个数值为止,此时所有的数组左边都是比它小的,右边都是比他大的。代码实现如下import randomdef qsort(nums):if len(nums)return  numscur = random.choice(nums)left = [i 

2018-01-05 18:09:33 397

原创 Redis数据库和Python的交互

Redis数据库的安装1 .pip  install redis         2.easy_install  redis   3.源码安装wget https://github.com/andymccurdy/redis-py/archive/master.zipunzip master.zip    cd redis-py-master       sudo python

2018-01-05 17:31:34 302

原创 Redis简单命令

String类型保存设置键值   set  key value                   例 set  name  sky设置键值及其过期时间(以秒为单位)     setx key seconds value  例   setex name 3 sky设置多个键值   mset key1 value1  key2 value2,,,   例   mset name sk

2018-01-05 02:33:20 365

原创 ubuntu下Redis环境的搭建

下载链接:http://download.redis.io/releases/redis-3.2.8.tar.gz终端下载:wget http://download.redis.io/releases/redis-3.2.8.tar.gz解压:tar zxvf redis-3.2.8.tar.gz复制到usr/local目录下:sudo mv ./redis-3.2.8   /usr/

2018-01-05 01:56:29 249

原创 Redis数据库特点的简单介绍

首先介绍一下Redis,Redis是一个高性能的Key-value数据库,它属于NoSQL数据库。关于NoSQL数据库我们在这里也做一下简单的介绍,数据库分为关系型数据库比如MySQL和非关系型数据库如今天我们说道的Redis数据库,和新式的数据库(结合两种数据库衍生出来的新式数据库),他们两个的区别在这里我们先不做详细解释,这里只是简单的介绍一下吧:对于NoSQL数据库他是全称(not

2018-01-05 01:16:47 3683

转载 Ubuntu下更改用户名和主机名

Ubuntu下更改用户名和主机名   很多时候,我们不满意安装时起的用户名与主机名,但是由于已经在这个用户上做了好多配置,所以只能在原来的基础上改用户名和主机名了。   但是改这些文件的时候,一定要小心,因为一不小心就会造成重启后无法登陆的情况。我自己也因为这个,浪费了好多时间:   这里写下我的经验,安全的修改用户名,避免出现修改后无法登陆的情况,希望对大家有所帮助,让各位少走弯路   1. 首先

2017-12-28 14:52:28 5491 3

原创 Python中ubuntu下的mongodb的安装和使用

首先来为大家介绍一下数据库,数据库分关系型数据库和非关系型数据库,而今天我们要说的就是非关系型数据中用的比较多的mongodb的安装和使用,他支持的数据结构耦合度底,是类似于json的bson格式,因此可以储存比较复杂的数据类型。而且他的查询语句强大,其语法有些类似于面向对象的查询语句,几乎可以实现类似关系型数据库单表查询的绝大多数功能,而且还支持对数据建立索引。1. MongoDB的安装还是很

2017-12-21 21:29:24 660

空空如也

空空如也

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

TA关注的人

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