自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(390)
  • 资源 (2)
  • 收藏
  • 关注

原创 mysql查询limit offset size和limit size速度一样快吗

比如我们的建表sql是这样的只需要知道id是主键,并且在user_name建了个非主键索引就够了,其他都不重要。为了实现分页。很容易联想到下面这样的sql语句。select*frompageorderbyidlimitoffset,size;比如一页有10条数据。user表数据库原始状态第一页就是下面这样的sql语句。select*frompageorderbyidlimit0,10;第一百页就是select*from...

2022-05-07 13:12:02 180

原创 既然IP层会分片,为什么TCP层也还要分段

什么是TCP分段和IP分片根据网络分层协议,数据先过传输层,再到网络层。这个行为在传输层和网络层都有可能发生。在传输层(TCP协议)里,叫分段。在网络层(IP层),叫分片。(注意以下提到的IP没有特殊说明的情况下,都是指IPV4)那么不管是分片还是分段,肯定需要按照一定的长度切分。在TCP里,这个长度是MSS。在IP层里,这个长度是MTU。那MSS和MTU是什么关系呢?MSS是什么MSS:Maximum Segment Size。TCP 提交给 IP 层最大分段大小,不包含 TCP.

2022-04-06 20:42:59 272

原创 轻松了解下etcd

etcd 是一个高可用强一致性的键值仓库在很多分布式系统架构中得到了广泛的应用,其最经典的使用场景就是服务发现。作为一个受到 ZooKeeper启发而催生的项目,它除了拥有与之类似的功能外,更专注于以下四点。 简单:易于部署,易使用。基于 HTTP+JSON 的 API 让你用 curl 就可以轻松使用。 安全:可选 SSL 客户认证机制。 快速:每个实例每秒支持一千次写操作。 可信:使用一致性 Raft 算法充分实现了分布式。 etcd 的场景默认处理的数据都是

2022-03-30 21:55:14 347

原创 学会用枚举常量

枚举是由一组常量值组成的数据类型。实现方式就是借用iota。声明一个新的自定义类型——整数类型; 声明相关常量——使用iota; 创建通用行为——给类型一个String函数; 创建额外的行为——给类型一个EnumIndex函数。比如,为工作日创建一个枚举:// Weekday - Custom type to hold value for weekday ranging from 1-7type Weekday int// Declare related constants for

2022-03-22 19:46:04 299

原创 Go的context是线程安全的吗

先说答案,context本身就是线程安全的,所以context携带value也是线程安全的,写个简单例子验证一下:func main() { ctx := context.WithValue(context.Background(), "asong", "test01") go func() { for { _ = context.WithValue(ctx, "asong", "test02") } }() go func() { for { _ = context

2022-03-22 16:30:51 711

原创 mysql主库更新后,读取主库、从库数据存在不一致的情况

我们知道,mysql数据库,为了得到更高性能,一般会读写分离,主库用于写操作,比如用于执行insert,update操作,从库用于读,也就是最常见的select操作。像下面这个图这样。虽然主库一般用于写操作,但也是能读的。那么今天的问题来了。 主库更新后,主库都读到最新值了,从库还有可能读到旧值吗? 主库更新后,从库都读到最新值了,主库还有可能读到旧值吗? 毕竟面试官都这么问了,那当然是有可能的,那至于是为啥,以及怎么做到的,今天我们来好好聊聊。正常的主从更新流程比如

2022-03-21 20:25:44 140

原创 golang设计模式(第二版)

这一版的例子更加浅显易懂。

2022-03-13 01:32:35 492

原创 详解gorm联合查询 && (on conflict do update set)

联合(join)查询的类型:1)内联接(inner join):将两个表中存在联接关系的字段符合联接条件的记录形成记录集;如:Select A.name,B.name from A inner join B on A.id = B.id 和Select A.name,b.name from A,B where A.id = B.id 结果是一样的(内联结的inner关键字可忽略)2)外联接(分为左外联接和右外联接)左联接A、B表,结果包括A的全部记录和符合条件的B的记录;右联结A、B..

2021-10-06 23:09:41 1334

原创 golang设计模式

本文将要介绍设计模式种的5种创建型设计模式,创建型模式的目的是能够提供一个简单的接口,让对象的创建过程与使用者解耦。:单例模式 工厂模式 抽象工厂模式 建造者模式或者创建者模式(因人而异我喜欢叫建造者模式) 原型模式其中,单例模式主要用于保证一个类仅有一个实例,并提供一个它的全局访问点;工厂模式提供一个工厂对象或者工厂方法,为使用者隐藏了对象的创建细节;抽象工厂模式是对工厂模式的优化,通过为工厂对象新增一个抽象层,让工厂对象遵循单一职责原则,也避免了霰弹式修改;原型模式使得对象复制更加简单。

2021-08-31 17:11:35 184

原创 golang进阶之路

golang核心知识点

2021-08-30 01:21:03 412

原创 tmux工具总结

目录1、什么是tmux2、会话、窗口(window)、窗格(pane)的关系3、使用场景4、操作总结4.1 会话操作(session operation)4.2 窗口操作(window operation)4.3 窗格操作(pane operation)1、什么是tmuxtmux来自于OpenBSD,采用BSD授权。使用它最直观的好处就是, 通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机, 还有一个好处就是当

2021-05-07 15:48:14 131

原创 一文了解protobuf

1、什么是protobufProtobuf 即protocol buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。protobuf是以二进制方式存储的,占用空间小,性能和效率大幅度优于JSON、XML等其他的数据格式,缺点是可读性差。Protobuf在 .proto 定义需要处理的结构化数据,可通过protoc工具,将 .proto文件转换为C、Golang、Java、Python等多种语言的代码。2、.proto文件中的关键字:syntax 版本号,..

2021-04-05 22:11:44 675

原创 go mod常用指令

在初始化mod的时候,先执行:go mod init github.com/FreeFlyXiaoma/test备注:github.com/FreeFlyXiaoma是你的github账号,test是依赖的项目路径。go mod tidy 依赖包整理,增加本地缺失的包,删除没用的包 go mod download 下载模块到本地缓存,缓存路径是 $GOPATH/pkg/mod/cache go mod init 初始化模块 go mod edit 命令行编辑go.mod ,例如...

2021-04-04 22:11:19 362

原创 grpc生成 grpc code指令

protoc -I . helloworld.proto --go_out=plugins=grpc:.

2021-04-03 23:59:57 272

原创 golang中常见的语法糖有哪些

语法糖:Syntactic sugar1、函数中的形参不定长,用 ... 代替例如:func test(slist ...string){ # 定义一个打印每个行参的函数 for _,tmp := range slist{ fmt.Println(tmp) }}func main() { test("1","2","3") }2、使用 := 进行简短赋值与初始化略.3、访问结构体成员变量时,使用 ...

2021-02-14 10:15:57 1964

原创 sqlalchemy外键的正向查询与反向查询(一对多)

sqlalchemy数据库外键中的正向引用与反向引用父表:被引用方的表子表:引用父表的表(表中有父表的字段,一般是父表id,并且定义relationship)正向查询:在子表中,查询父表的信息反向查询:通过父表,查询子表的信息定义父表:class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) usern...

2021-01-22 13:35:29 1151 2

原创 python后端总结(django)

目录1、TCP通信的三次握手2、tornado框架如何处理http请求的3、解释一下uWSGI4、解释一下nginx5、re正则表达式5.1 正则表达式中match和search的区别5.2 group 与groups的区别5.3 符号 .* 与 .*? 的区别6、django的并发和多线程7、http与tcp的关系8、Linux日志文件中关键词查找命令8.1 查看日志前n行8.2 查看日志后n行8.3 关键字搜索命令(返回含有关键字的行)9...

2021-01-21 09:01:44 629 3

原创 Redis操作

目录1、字符串操作1.1 插入数据1.2 获取数据1.4 删除数据2、hash操作2.1 插入数据2.2 获取数据2.3 删除数据1、字符串操作1.1 插入数据调用r.set()接口:r.set('key','value',60) # 后面60代表失效时间,单位是秒备注:key中含有冒号的情况,冒号前面代表一个文件夹,查询数据的时候要把key写完整:r.set('hh:mmm','123456',60)# 也可多重文件夹嵌套r.set(

2020-12-25 16:01:50 62

原创 elasticsearch (全)

目录1、索引操作(增、删)1.1 增加一条索引1.2 查看索引下的数据(get接口)1.3删除索引2、数据操作(增、删、改、bulk批量插入)2.1 增加一条数据2.2 修改数据2.3 删除数据2.4 bulk批量插入数据3、数据查询(DSL语句)3.1 match查询3.2 multi_match查询3.3 match_all查询3.1 term过滤3.2 terms过滤3.3 range过滤3.4 exists过滤和missing过滤.

2020-12-24 15:47:39 90

原创 5分钟搞定快速排序

1、原理首先找到数组中的一个基准值(通常是中间值); 遍历数组,如果比基准值小就放到左边,比基准值大放到右边; 以基准值左右两边的子列作为新数列,不断重复第一步和第二步(迭代法);2、实现def quick_sort(arr): if len(arr) <2 :return arr mid =arr[len(arr) // 2] # 基准值 left,right=[],[] # 定义左右两个子列 arr.pop(le

2020-12-18 21:23:11 74 2

原创 Celery进阶

目录1、Celery2、Celery的常用用法2.1 编写装饰器2.2 编写配置文件2.3 命令行启动2.4 任务调用1、CeleryCelery是一个基于分布式消息传输的异步任务队列,支持即插即用,使用异步处理问题(如文件上传、图像、音频处理等比较耗时的任务,注意与apscheduler定时框架的区别)。Celery通过消息进行通信(与中间件的机制类似,如东方通公司的TongLink/Q),主要由三块组成:client(客户端)、Broker(中间人)以及work.

2020-12-17 23:02:09 222 5

原创 Git技术进阶(PyCharm版)

目录1、Git的工作流程2、git工作区、暂存区和版本库3、Git常用命令4、分支操作4.1 建立分支4.2 切换分支4.3 分支合并4.4 删除分支5、代码回滚6、本地删除文件同时同步到仓库1、Git的工作流程2、git工作区、暂存区和版本库工作区:你电脑里能看到的目录; 暂存区:为index或stage,一般放在 .git 目录下的index文件中,暂存区有时也叫做索引(index); 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而

2020-12-14 00:23:37 150

原创 docker从入门到熟练——Dockerfile

目录1、FROM 和 RUN2、COPY 和 ADD3、CMD4、ENV5、EXPOSE6、WORKDIR1、FROM 和 RUNFROM:定制的镜像是基于FROM的镜像; RUN:用于执行后面跟着的命令行命令,有两种格式,一是shell格式(RUN <命令行代码>);二是exec格式(RUN ["可执行文件","参数1","参数2"])2、COPY 和 ADDCOPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径,如 COPY [--ch..

2020-12-12 23:58:41 116

原创 docker从入门到熟练——镜像

1、查看镜像列表docker images备注:同一仓库源可以有多个TAG,代表这个仓库源的不同版本,使用REPOSITORY:TAG来定义不同的镜像2、下载镜像docker pull <镜像名称>:tag2、搜索镜像docker search <镜像名称>3、删除镜像docker rmi <镜像id>4、创建一个镜像有两种方式:从已经创建的容器中更新镜像,并提交镜像 使用Dockerfile创建一个新的镜像..

2020-12-10 17:50:47 54

原创 docker从入门到熟练——容器

目录1、拉取镜像2、查看运行中的容器3、查看所有的容器4、查看镜像5、启动容器5.1 普通方式启动容器5.1 以后台运行方式启动容器6、进入容器内部7、停止一个容器以及删除一个容器7.1 停止容器7.2 删除容器8、导出和导入容器(将容器打包tar)9、示例(运行一个web容器)9.1 首先拉取一个web应用的容器9.2 运行并访问1、拉取镜像如拉取一个ubuntu的镜像:docker pull ubuntu2、查看运行中的容器

2020-12-09 17:45:34 66

原创 docker查看容器的运行位置以及所在位置

使用命令:docker inspect <容器id>在返回的json数据中,查找 Path 和HostPath这两个参数:其中,Path 为容器的运行位置(指令),HostPath 为容器的所在位置。

2020-12-09 03:18:51 10180

原创 elasticsearch practice

1、插入创建索引# 创建索引def create_index(): _index_mappings={ 'mappings':{ 'dynamic':'true', # 设置索引为动态的 'properties':{ 'ExpertID':{ 'type':'long' }, 'filed

2020-12-06 00:48:22 90

原创 Redis概念进阶

1、什么是Redis(Remote Dictionary Server)Redis本质上是一个key-value类型的内存数据库,整个数据库加载在内存中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的key-value DB。Redis支持多种数据结构:String、List、Hash、Set、 Sorted Set,单个value的最大限制是1GB。使用Redis可以用List来做FIF

2020-12-04 20:45:32 70

原创 防火墙

1、查看防火墙状态firewall-cmd --state2、防火墙开放端口firewall-cmd --permanent --add-port=3306/tcp3、重启防火墙service firewalld reload4、启动与关闭service firewalld startservice firewalld stop

2020-12-03 16:13:38 51

原创 MongoDB概念进阶

1、mongodb中的分片分片是将数据水平切分到不同的物理节点。当应用数据越来越大的时候,数据量也会越来越大。当数据量增长时,单台机器可能无法存储数据或可接受的读取吞吐量,利用分片技术可以添加更多的机器来应用数据量增加以及读写操作的要求。2、mongodb支持的数据类型String Integer Double Object Object ID Arrays Datetime Code Regular Expression等3、mongodb中的索引索引用于高效的执行查询,

2020-11-30 20:57:01 65

原创 elasticsearch-head的安装与启动

1. 下载elasticsearch-head(目录是 /usr/local)#在Ubuntu中使用git工具下载git clone git://github.com/mobz/elasticsearch-head.git2. elasticsearch-head基于node.js,所以要安装node.js3. npm设置国内镜像npm install -g cnpm --registry=https://registry.npm.taobao.org4. 进入elasticsea

2020-11-07 13:56:39 1002

原创 elasticsearch的启动

1. elasticsearch5.0之后不允许root用户启动,创建普通用户adduser xiaoma# 输入两次密码--->继续操作2. 将elasticsearch的文件夹权限赋给该用户chown -R xiaoma elasticsearch-7.9.33. 启动elasticsearch# 1. 进入bin文件夹cd bin# 2. 启动(-d 是后台启动)./elasticsearch -d4. 查看端口是否启动ss -lntpd|grep

2020-11-07 11:34:33 1373

原创 对指定字段进行关键词搜索(MongoDB)

备注:MongoDB进行全文检索的原理是进行分词搜索,对于中文而言是词语搜索,英文是单词搜索,所以使用MongoDB进行中文全文检索效果不如英文好。对指定字段关键词搜索:client=pymongo.MongoClient('mongodb://username:pwd@ip_address:27017/')db=client['db_']collection=db['coll']query={'title':{'$regex':'财政厅','$options':'i'}}query_

2020-10-29 08:59:20 1147

原创 shell通过用户名和密码登录MongoDB

1. 启动MongoDB客户端/usr/local/mongdb/bin/mongo2. 切换到admin,并输入用户名和密码> use admin> db.auth("username","password")如果返回1,则登录成功。

2020-10-27 15:01:19 1368 1

原创 maven配置镜像仓库

尝试过可用的: <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror&gt

2020-10-24 10:59:10 249

原创 MongoDB数据库后台启动与停止

启动:mongod --journal -f /usr/local/mongodb/bin/mongodb.conf关闭:mongod --journal --shutdown -f /usr/local/mongodb/bin/mongodb.conf

2020-10-12 18:02:25 400

原创 一次杀死多个进程 & 查看占用端口的进程

1. 查看哪些进程占用了8002的端口:ss -lntpd|grep :8002可以看到进程 18379和 18377占用了端口8002,现在要把这两个进程kill掉。2. 同时kill多个进程kill -9 pid1 pid2 pid3

2020-09-26 09:38:29 395

原创 对一个哈希表(字典)进行排序

例如:对如下的一个字典的value进行降序排序{'如何挂失身份证?': 114, '住房公积金的到账时间?': 320, '失业金': 18, '失业补助金什么时候可以下发到个人?': 1, '失业金领取标准': 1}思路:采用借助lambda和python内置函数 sorted():result=sorted(hash_dic.items(),key=lambda x:x[1])...

2020-09-24 17:32:14 961

原创 Linux查找文件夹的名字

如,查找以mysql开头的文件夹名字:find / mysql* -d查找名字为mysql的文件夹:find / mysql -d

2020-09-15 11:39:26 3207

原创 启动脚本时报错:-bash: ./startup.sh: Permission denied

原因分析:这是因为用户没有权限,而导致无法执行。用命令chmod 修改一下目录下的.sh权限就可以了。chmod u+x *.sh# 这里的u 这里指文件所有者# +x 添加可执行权限# *.sh表示所有的sh文件。...

2020-09-08 15:29:00 577 1

Python学习手册第三版

这是Python学习手册第三版,有需要的同学可以看一下。这本书的风格不同于以往的技术类书籍。它是分模块来讲的:数字、字符串、元组、列表字典、循环、函数等这些不同的模块分别来讲。感兴趣的可以下载。

2019-01-03

Android开发艺术探索PDF

Android开发艺术的PDF扫描版, 你可以下载下来,使用电脑观看 需要一定的Android基础

2018-11-26

空空如也

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

TA关注的人

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