- 博客(75)
- 资源 (2)
- 收藏
- 关注
原创 MongoDB索引结构,到底是B-Tree还是B+Tree,请看这里!!
MongoDB从3.2版本开始默认采用了WiredTiger存储引擎,网上很多说法是此引擎是B+Tree的索引结构,甚至有图有真相。但是认为MongoDB一直是B-Tree。网上关于MongoDB的索引结构到底是b树,还是b+树的争论有很多,无法统一结论。MongoDB是B-Tree!
2023-07-26 17:19:26
459
原创 Elasticsearch安装配置与使用
Es作为elastic stack家族中举足亲重的一员的原因在于:它的搜索功能非常强大,实际上它就是一个分布式的搜索引擎。安装本文的安装基于ubuntu20.04TLS虚拟机,并采用.tar.gz的模式,<点击下载Linux x86_64位tar.gz>使用tar -xzf命令解压下载的文件后,找到配置文件:elasticsearch.yml将节点名称打开:node.name: node-1 前面的#删掉network.host: 0.0.0.0 也可以配置成自己的ip地址,默认是l
2021-11-11 12:38:03
2282
原创 google trends token的获取
google trends不像google ads一样公开了api文档。我们要想使用google trends的api就需要手动去分析google trends的规范。为了方便后来人,这里直接贴出获取api token的接口。https://trends.google.com/trends/api/explore查询参数(除了req里面的内容,其他都是固定的):hl: zh-CNtz: -480req: {"comparisonItem":[{"keyword":"mac","geo":"US
2021-10-27 17:16:56
1444
原创 Ubuntu server虚拟机配置静态IP
Ubuntu中的ip配置文件在/etc/netplan底下的yaml文件中。编辑该文件:sudo vi /etc/netplan/00-installer-config.yamlethernets下面的网卡可能有多个,从你自己的ifconfig中看,你当前需要更改哪一个。改完保存后,执行:sudo netplan apply...
2021-10-08 14:21:25
398
原创 vim查找、跳转(显示行数)
查找在vim中算是一个相对常用的功能了,俗话说的好,好记性不如烂笔头,本文就简单介绍下vim查找的简单实用方法。在命令行模式下,直接输入 / 外加你需要查找的内容,斜杠后面支持正则表达式。如:/a //查找内容a可以输入n 或者N向下或向上搜索(记得输入n之前要按enter确认!)1.有些时候,我们可能不清楚某个单词是否是大写或者小写,这个时候,我们可以在搜索之前设置忽略大小写::set ignorecase还原需要大小写::set noignorecase2.可能整个vim文件中存
2021-10-08 12:18:47
7668
原创 配置ssh登录时,出现Permission denied, please try again
一般出现该问题的原因是sshd_config文件中的PermitRootLogin参数没有设置为yes。步骤:1.vi /etc/ssh/sshd_config2.找到PermitRootLogin设置为yes3.重启sshd服务:/etc/init.d/ssh restart注意:如果sshd_config文件中没有PermitRootLogin,在输入密码失败后,使用su - 再试一次。...
2021-10-05 22:07:15
4798
原创 windows10安装docker desktop出现The WSL 2 Linux kernel is now installed
如果出现这个问题的时候,首先确保勾选此选项:如有勾选,并且wsl确实有下载,那么尝试更新wsl:1.以管理员的方式启动powershell2. 执行:wsl --update
2021-09-23 11:59:45
9689
2
原创 没有公钥,无法验证下列签名: NO_PUBKEY FCAE110B1118213C异常
今天在ubuntu上执行:sudo apt-get update && apt-get upgrade提示下面的异常:错误:8 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu focal InRelease由于没有公钥,无法验证下列签名: NO_PUBKEY FCAE110B1118213C正在读取软件包列表… 完成W: GPG 错误:http://ppa.launchpad.net/graphics-drivers/pp
2021-09-14 13:43:08
588
原创 Minikube踩坑实录(血泪记录)!
本文主要介绍作者在执行minikube start时产生的各种错误!前言我还记得初次看到在minikube官网上对minikube如此简单明了的安装步骤感到高兴时的心情。特别是经过按照官网的步骤进行下载安装完美成功之后尤其兴奋。安装:curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64sudo install minikube-linux-amd64 /usr/local/bin/
2021-09-09 09:54:08
9199
4
原创 docker-compose配置mongodb复制集
本文使用单机配置mongodb复制集,也即是一个docker-compose文件中运行三个mongod服务。配置要点docker-compose配置复制集只要注意几点:1.command执行命令时需要指定 --keyFile跟 --replSet两个属性。keyFile是为了添加复制集时的验证处理,拥有同样的keyFile文件的节点才可以被添加到复制集中。2.docker-compose配置复制集需要指定–replSet属性值,否则直接配置直接失败。生成keyFile:openssl rand
2021-08-30 17:34:59
1188
原创 Golang报错:Mixture of fields: value and value initializers
出现这个错误的原因在于初始化时,设置值的方式错误!请看举例:type Animal struct{ Eyes int Kind}type Kind struct{ Gender int}在初始化时,可能随手就写成:animal := Animal{ Eyes: 2, Gender: 1,}这样的写法将产生Mixture of fields: value and value initializers错误,原因在于上面使用了key:value的形
2021-08-20 11:14:58
1542
原创 docker配置Mysql主从同步
容器让开发更为简单!在正式写之前,我们首先要清楚:容器中的mysql配置文件跟数据库文件要放在宿主机。本文使用的是docker-compose来实例化两个mysql服务。先贴代码:version: "3.8"services: adminer: image: adminer:4.8.1-standalone ports: - 8080:8080 depends_on: - mysql1 - mysql2 networks:
2021-07-29 17:27:08
290
原创 ubuntu mysql主从库同步出现1236错误:Could not find first log file name in binary log index file
如题,出现该问题的原因在于log文件不同步,解决该问题的很简单只要重新同步log文件就可以。1.暂停主从服务在从库执行:stop slave;2.主库查看最新log信息//先刷出日志flush logs;//再查看show master status;获取到日志文件信息后重新设置log文件名称跟偏移量pos:CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=156;3.重新启动主从start s
2021-07-29 17:01:56
505
原创 Gin框架内部概览
gin是一款小巧高性能的web服务器框架,本文就gin的一些工作流程做一些介绍!我们在使用Gin框架的时候,大致流程为:这里我们先预设几个问题:Gin是怎么接管Golang的http服务的?初始化Gin的时候初始化了什么内容?我们创建的中间件最Gin内部是怎么存储怎么使用的?创建的接口是怎么存储跟怎么使用的?如何调用?问题1:Gin是怎么接管Golang的http服务的?记得我们是如何使用Gin的吗?如下:server := &http.Server{ Addr:
2021-07-27 15:39:43
581
原创 Golang redis中无序集合的操作
本文使用的redis客户端为go-redis准备步骤客户端的连接:导入go-redis包:github.com/go-redis/redis/v8创建客户端:client := redis.NewClient(&redis.Options{ Addr: "192.168.7.4:6379", Password: "", DB: 0, })使用注解:集合中可以插入任意类型的数值,不需要整个集合为同一种类型。1.插入数据注解:在插入数据到时候,如果不
2021-07-26 15:18:10
327
原创 docker-compose配置mongodb系统日志
如题:mongodb的系统日志默认是不开启的,需要自己主动打开!下面介绍在docker-compose里面的MongoDB如何使用配置文件打开系统日志,并将日志映射到宿主机中。配置docker-compose的注意点主要在于三处:需要将宿主机中的配置文件通过volumes映射到mongo容器中。将容器中的日志存放路径通过volumes映射到宿主机中。使用command将配置文件生效下面贴出mongod.conf配置文件跟部分docker-compose文件:mogodb版本<4.2.8
2021-07-08 16:12:44
1503
1
原创 Git日常使用
Git 保存的不是文件的变化或者差异,而是一系列不同时刻的 快照!在Git中文件在本地有三个阶段:没有被track的,放在暂存中的,提交的:当一个文件没有使用git add时,它就是untrack的,当使用git add之后,文件被track且被放入暂存。一:配置当安装完Git工具后,最先做的工作应该就是进行配置工作了。1.1查看配置git config --list --show-origin git config --list1.2配置全局用户信息安装完Git之后的第一步操作就是
2021-07-07 10:04:55
144
原创 Golang RabbitMQ练习二
练习二是关于topic交换方面内容知识概览RabbitMQ中的topic exchange是个很强大的功能,在消费端的队列绑定的时候,可以通过 “ # * ” 这两个符号进行模糊匹配接收。#表示可以匹配0个或多个(如:#.a可以匹配a跟q.a或b.c.q.a等前面只少有一个的路由键)*表示可以匹配一个(如:*. a只可以匹配前面带有一个的类似q.a b.a等,只有一个a不能匹配,因为*表示存在一个)路由键是一个单词列表,用“ . ” 分割,# *匹配符号代表的是每个点位。路由键大小为:最
2021-06-29 10:27:51
134
原创 Golang之RabbitMQ练习一
从现在开始开始练习消息队列RabbitMQ自己练习消息队列的时候,可以使用真机安装RabbitMQ,也可以使用容器安装RabbitMQ,这里使用docker容器。环境docker 容器中的RabbitMQ,端口映射5673一:编程第一步,hello world该案例是一个简单的只有两端:发送-接收概览发送方步骤有:连接队列服务器Dial(“amqp://guest:guest@localhost:5673”)队列声明QueueDeclare消息发送Publish接收方步骤有:
2021-06-26 15:35:40
200
2
原创 docker-compose编排实战
文章目录前言一、概览二、docker-compose文件介绍为了更好的解释直接贴上完整实例:2.nginx配置总结前言项目中如果使用到了容器,那么合理的编排手段是必不可少的!一、概览在使用docker-compose过程中,我们想要有什么样的功能及效果呢?对于我来说它最好能够:同一个服务器中可能存在多个不同的项目,所以我需要能够关联nginx以便我可以进行反代操作能够顺序启动不同的模块,db模块,队列模块等能够在运行docker-compose的时候就指定参数,如数据库的登录能够让.
2021-06-26 13:54:42
388
原创 MongoDB查询之exists
注:由于mongodb中我们可以很方便的在插入数据的时候动态创建文档中的字段,所以有些时候同一个集合中的文档,有些存在如:A字段,有些可能就没有,这个时候我们想知道集合里面,哪些文档存在某些字段以及不存在某些字段,我们可以使用exists语法来查询。关键字$exists语法定义Syntax: { field: { $exists: <boolean> } }其中boolean的值可以是true或者false,同时也可以使用数字:0或者其它任意值代替,0和false表示不存在该字段,t
2021-06-20 18:32:39
3813
1
原创 docker RabbitMQ启用延迟队列插件
首先去下载rabbitmq延迟插件:rabbitmq_delayed_message_exchange-3.8.0.ez下载地址一:查看RabbitMQ容器ID二:将延迟插件拷贝进容器的plugins目录sudo docker cp rabbitmq_delayed_message_exchange-3.8.0.ez container id:/plugins三:激活插件1.进入容器中的plugins目录docker exec -it 容器id /bin/bashcd plugins2.
2021-06-14 11:43:23
266
原创 docker alpine镜像中遇到 sh: xxx: not found
如题,在docker-compose 编排Go应用的时候alphine容器出现可执行文件不存在的问题。猜测:一:难道文件在容器中没有执行权限?针对这个操作,我在command命令中加入了chmod 700运行结果:not found …二:由于可执行文件是通过volume映射过去的,莫非哪里出了问题导致容器中不存在该文件?为了验证上面的想法于是在command命令中加上了ls -l,运行结果显示是存在该文件的。三:莫非是alphine的问题??于是我直接将整个alphine镜像换成的gola
2021-06-14 10:53:24
7463
6
原创 MongoDb聚合操作之replaceRoot
replaceRoot语法固定语法结构如下:{ $replaceRoot: { newRoot: <replacementDocument> } }其中表达式中的replacementDocument可以是任何可以解析为文档的表达式!因为在mongodb中的文档为json对象,所以正确的文档对象应该是以键值对的形式存在的,如:{"key":"value"}replaceRoot可以将结果提取出来看下面的这个官方案例:原始数据db.collection.insertMany(
2021-06-11 16:31:13
2626
3
原创 MongoDB中updateOne的正常使用
db.collection.updateOne(filter,update,options)顾名思义,通过这行声明,我们大概可以猜到这三个参数大概的作用:filter 用作在更新之前筛选符合条件的documentupdate 具体更新document中哪些字段options 附加可选的额外操作整体updateOne语句的语法如下:db.collection.updateOne( <filter>, <update>, { upsert: &
2021-06-10 22:20:56
14905
原创 unbuntu本地hosts映射不能通过域名访问
出现该问题的原因可能是由于路由器没有配置dns server,通过将本机ip跟自定义域名加入dns服务器可以解决此类问题
2021-06-10 10:15:26
375
原创 Golang 结构体作为Map的Key
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数..
2021-05-28 11:21:29
3691
原创 go build: -i flag is deprecated
官方解释:The -i flag installs the dependencies of the named packages as well. The -i flag is deprecated. Compiled packages are cached automatically.大意是以后,编译APP时不需要增加-i参数,sdk自动帮我们处理。
2021-05-18 16:04:46
3612
4
原创 ubuntu创建android studio并配置图标
版本:ubuntu 20文章目录一、安装jdk二、解压下载好的AS三、创建图标文件3.1创建软链,将studio.sh链接到/usr/bin目录中。3.2创建启动图标文件一、安装jdksudo apt-get install openjdk-8-jdk//安装完后检测是否成功java -version查找jdk默认的安装路径1.which java--提示:/usr/bin/java根据软连接查找下一级ls -l /usr/bin/java--提示/usr/bin/java
2021-05-18 14:54:38
959
2
原创 Nginx设置SSL证书
注:本配置nginx版本号在:1.15.0以上一,上传证书将申请好的ssl证书crt跟私钥key上传到nginx配置文件所在目录,(要是找不到可以看这篇文章的末尾:nginx.conf位置在文章末尾)二,编辑nginx.confhttp { server { listen 443 ssl; server_name *******; ssl_certificate 1_****.cool_bundle.crt; ssl_certificate_key
2021-05-14 14:57:47
216
1
原创 超简单Centos 7在线安装Nginx方法
跟着官网步骤一步一步来,安装步骤简单快速没毛病!一、安装yum-utils工具sudo yum install yum-utils二、创建nginx.repo文件设置yum仓库repo文件地址需要创建在:/etc/yum.repos.d/nginx.repo创建完成后,将如下内容填充进去:[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/
2021-05-14 14:41:12
412
原创 Golang 平滑重启之优雅关机
前言作为一个web服务,升级操作是一个必不可少的过程,但是在升级之前还有个操作,那就是:退出服务(关机),当然我们可以暴力的终止程序然后启动新服务,但是这是基于业务不敏感的情况下,正常我们需要让用户的一次请求完成之后才终止程序,幸运的是Go在1.8+上面增加shutdown方法可以很简单的实现此过程。一、shutdown机制先说明一下Shutdown工作的机制:当程序检测到中断信号时,我们调用http.server种的shutdown方法,该方法将阻止新的请求进来,同时保持当前的连接,知道当前连接完
2021-04-30 16:37:32
830
1
原创 MySQL自增序列与删除操作之坑(delete,truncate)
文章目录一,delete与truncate区别二,delete操作一,delete与truncate区别在Mysql中,id使用auto_increment参数之后,表示自增。在使用删除操作delete之后,主键id值不会重置,最大值任然是之前的。但是如果使用的是truncate操作,id值将会重置。delete删除操作为逐行删除,效率较低;而truncate操作类似于drop table + create table,速度较快。二,delete操作新建一张表:mysql> show
2021-04-26 10:34:41
2031
原创 Flutter NestedScrollView中body被头部遮挡问题
问题描述:在flutter NestedScrollView中,body部分的内容会跑到headerSliverBuilder底下去。我们一般使用NestedScrollView的时候,类似于:NestedScrollView( //配置可折叠的头布局 headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { return buildSliverAppBar()];
2021-04-25 11:37:29
1835
原创 svn提交出现Checksum mismatch for问题
当svn提交出现以下问题:Working copy text base is corruptsvn: Checksum mismatch for ‘…java.svn-base’; expected:‘034cc715af69023210115a590ee58626’, actual: ‘f7dc345dfe879c63a463899d70b905b4’解决办法:先保存出问题的文件然后:右键svn中delete -> update -> 再将文件移进去,重新add commit!.
2021-04-13 11:35:10
2659
原创 四则混合运算之逆波兰表达式
目录一、什么是逆波兰表达式?1.1用途1.2中缀表达式(普通表达式)跟逆波兰表达式对比二、转换2.1中缀表达式转逆波兰2.2开始转换2.3Java代码转换一、什么是逆波兰表达式?逆波兰表达式又叫做后缀表达式,(我们日常写的a+b形式的称为中缀表达式)。逆波兰表示法是波兰逻辑学家J・卢卡西维兹(J・ Lukasewicz)于1929年首先提出的一种表达式的表示方法 。后来,人们就把用这种表示法写出的表达式称作“逆波兰表达式”。逆波兰表达式把运算量写在前面,把算符写在后面。1.1用途由于人们正常书
2021-01-27 10:21:05
1220
1
原创 Android Shape设置任意个数圆角
Android Resource中有个shape类型得xml可以设置控件得形状,shape文件定义在drawable目录中,且shape标签必须为root element.官方推荐得标准写法为:<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval"
2021-01-21 11:08:24
374
1
原创 Golang sort排序
在程序开发中,不可避免的需要给数据集进行排序,如果在语言级别不提供支持的话,我们则需要自己写算法进行数据的处理,麻烦还不一定高效。幸好Golang在标准包中,官方有提供sort包中Sort()函数提供排序功能。并且天然支持[]int,[]float64,[]string切片的排序查找功能,并且也能够实现对自定义类型集合的排序。下面我们先来看下golang中Sort函数的结构是什么样的。func Sort(data Interface) { n := data.Len() quickSort(dat
2021-01-21 11:05:39
1112
原创 Golang 自带log包的简单使用
俗话说的好,流水的代码,铁打的日志。日志是我们在程序出错时能够快速定位错误位置的有力保证!所以说工欲善其事必先利其器!Go语言自带了一个小小的简便日志包:log,虽说功能不多,但是对于一些不大的项目来说,其实也够用了,与其导入一个功能繁多,但是很多功能用不上的log包,不如使用自带的功能,稳定且不会增加编译后的文件大小。并且log包是线程安全的,也就是说你完全可以放心的在多个goroutine中使用,而不用有任何的担心。使用log包打印日志有两种开启方式:1.直接使用log包为我们封装好的方法2.初
2021-01-21 10:59:01
1259
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人