- 博客(45)
- 收藏
- 关注
原创 数据库优化相关记录
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
原创 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
原创 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
原创 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关注的人