自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 dynamodb

在DynamoDB之中,同一个用户可以在不同地区创建多张同名表。只要在一个地区中保持表名唯一即可。在DynamoDB执行createTable是一个异步操作,当接收到CreateTable请求时,DynamoDB实时返回一个处理响应,同时将其标记为CREATING状态。只有当表真正建完之后,DynamoDB才会将表状态更改为ACTIVE状态。用户只能在ACTIVE状态的表中进行读写操作。用户可以在创建表时,同时在表中创建二级索引。如果用户想在多张表中都创建二级索引,那么目前来说只能顺序创建,DynamoD

2022-01-14 15:44:21 441

原创 docker的cmd命令与entrypoint命令详解

cmd:cmd给出的是一个容器的默认的可执行体。也就是容器启动以后,默认的执行的命令。重点就是这个“默认”。意味着,如果docker run没有指定任何的执行命令或者dockerfile里面也没有entrypoint,那么,就会使用cmd指定的默认的执行命令执行。同时也从侧面说明了entrypoint的含义,它才是真正的容器启动以后要执行命令。总共有三种用法:The CMD instruction has three forms: CMD ["executable","param1","param

2022-01-10 23:22:57 10339

原创 Docker笔记

1、Docker介绍Docker是基于Go语言开发的!开源项目官网官方文档Docker文档是超详细的仓库地址2、虚拟化技术和容器化技术对比2.1 虚拟化技术的缺点资源占用十分多冗余步骤多启动很慢2.2容器化技术比较Docker和虚拟化技术的不同传统虚拟机, 虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件容器内的应用直接运行在宿主机的内部,容器是没有自己的内核的,也没有虚拟硬件,所以轻便每个容器间是相互隔离的,每个容器内都有一个

2022-01-09 19:52:06 4057

原创 ubuntu安装docker

使用 apt-get 进行安装step 1: 安装必要的一些系统工具sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common step 2:安装GPG证书curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - St

2022-01-08 18:58:31 513

原创 Fastdfs与nginx

介绍一、FastDFS简要介绍1.是什么FastDFS就是一种轻量级的、常用的分布式文件系统,通常用作图片服务器。2.两个部分都是干什么的FastDFS分为两个部分,Tracker和Storage。Tracker作为协调者,用户上传和下载文件都要通过tracker。Storage是存储节点,主要用来存储文件。storage可以分成多个组,每个组有若干个节点,这些节点放的文件都是一样的。各个组存放的文件都是不一样的。所以,如果想扩充FastDFS的容量,非常方便,直接添加组就行了。3.用户上传

2022-01-08 15:29:59 2672

原创 fastdfs安装配置方法

FastDFS安装安装FastDFS依赖包解压缩libfastcommon-master.zip进入到libfastcommon-master的目录中执行./make.shsudo apt-get install make执行sudo ./make.sh install安装FastDFS解压缩fastdfs-master.zip进入到 fastdfs-master目录中执行 ./make.sh执行 sudo ./make.sh install配置跟踪服务器tracker1、

2022-01-08 15:17:39 138

原创 windows内置ubuntu访问windows文件

Ubuntu访问Windows文件Ubuntu本身挂载了Windows的磁盘,所以可以通过访问Ubuntu下的/mnt文件夹访问Windows文件;

2022-01-08 12:04:41 1705

原创 ubuntu安装yum

1、查询版本号lsb_release -a2、查询对应的清华镜像源https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/修改镜像源配置文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.backupsudo vim /etc/apt/sources.list将查询到的镜像源复制到sources.list中并在第一行插入deb http://archive.ubuntu.com/ubuntu/

2022-01-08 11:41:27 1042

原创 修改ubuntu的安装源

备份默认源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak修改成阿里云sudo vim /etc/apt/sources.list:%s/archive.ubuntu.com/mirrors.aliyun.com/g改前deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiversedeb-src http://archive.ubu

2022-01-08 10:20:29 924

原创 行转列与列转行

行转列的需求如下,可以发现,行转列时其实是先group by,然后将每个组中的行转为列,使用case-when + 聚合函数,每个由行转为列的列,都要使用case-when或when-case语句。case-when是怎么作用的呢?组中的每行都经过case-when,如果组中有N行,那通过case-when就产生N个值,再使用聚合函数,变为一个单一值,即新列的值。行转列例如:把图1转换成图2结果展示图1图2CREATE TABLE TEST_TB_GRADE (ID int(10) NO

2022-01-07 16:42:02 195

原创 进程,线程,协程总结

现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来。python中有协程库gevent,py web框架tornado中也用了gevent封装好的协程。本文主要介绍进程、线程和协程三者之间的区别。一、概念1、进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定

2022-01-05 15:38:18 75

转载 redis集群搭建方法

https://blog.csdn.net/xch_yang/article/details/104019552

2022-01-05 15:36:39 67

原创 mysql外键

外键外键:foreign key,外面的键(键不在自己表中),如果一张表中有一个字段(非主键)指向另外一张表中的主键,那么该字段称之为外键.增加外键1.外键可以在创建表的时候或者创建表之后增加(但是要考虑数据的问题) 一张表可以有多个外键2.创建表的时候增加外键:在所有的表字段之后,使用foreign key(外键字段)references 外部表(主键字段)外键要求字段本身必须是一个索引(普通索引),如果字段本身没有索引,外键会先创建一个索引,然后才会创建外键本身在新增表之后增加外键:修改

2022-01-05 11:16:02 486

原创 SQL执行顺序

一、sql执行顺序fromonjoinwheregroup by(开始使用select中的别名,后面的语句中都可以使用)avg,sum…havingselectdistinctorder bylimit从这个顺序中我们不难发现,所有的 查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。第一步:首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表 vt1(选择相对小的表做基础表)。第二步:接下来

2022-01-05 11:00:14 125

原创 curl命令解析

-X/–request 参数  指定什么命令,如 GET、POST。例:curl -X GET http://localhost:8080/search?data=123 # -X GET是可选的curl -X POST -d "data=123&key=456" http://localhost:8080/search# JSON数据以 请求体(body) 方请求curl -H "Content-Type:application/json" -X POST --data '{"m

2022-01-04 20:12:23 843

原创 微服务gomicro搭建

1 安装go(已安装的略过)1、从https://gomirrors.org/ 下载安装包(也可翻墙从官网下载);下载Golang2、Windows下直接安装;3、设置系统环境变量:GOROOT=[安装目录]GOPATH=[程序目录]——安装程序已自动在用户环境变量中添加了GOPATH=C:UsersAdministratorgo 可以改成自己的;——安装程序已自动在系统环境变量Path中添加了[安装目录]bin 可以不理会。4、在%GOPATH%目录(上一步的程序目录)下创建三个目录:

2021-12-30 23:16:28 764

原创 go build与go install

1.作用go build:用于测试编译包,在项目目录下生成可执行文件(有main包)。go install:主要用来生成库和工具。一是编译包文件(无main包),将编译后的包文件放到 pkg 目录下($GOPATH/pkg)。二是编译生成可执行文件(有main包),将可执行文件放到 bin 目录($GOPATH/bin)。2. 相同点都能生成可执行文件3. 不同点go build 不能生成包文件, go install 可以生成包文件go build 生成可执行文件在当前目录下, go ins

2021-12-29 16:11:10 1146

原创 linux的复杂命令

awk命令awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,1表示第一个域,1表示第一个域,1表示第一个域,n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。F指定分隔符awk -F ‘:’ ‘BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i

2021-12-27 11:24:25 553

原创 linux查看磁盘io命令

五种方法top命令、vmstat命令、iostat命令、iotop命令、pt-ioprofile命令一、 top命令top - 11:41:22 up 51 min, 2 users, load average: 0.01, 0.04, 0.01Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombieCpu(s): 0.2%us, 0.1%sy, 0.0%ni, 99.2%id, 0.4%wa, 0.0%hi, 0.0%si, 0

2021-12-27 11:00:57 6326

原创 mysql优化explain详解

EXPLAIN简述:explain为mysql提供语句的执行计划信息。可以应用在select、delete、insert、update和place语句上。explain的执行计划,只是作为语句执行过程的一个参考,实际执行的过程不一定和计划完全一致,但是执行计划中透露出的讯息却可以帮助选择更好的索引和写出更优化的查询语句。EXPLAIN输出项(来源于mysql5.7文档)备注:当使用FORMAT=JSON, 返回的数据为json结构时,JSON Name为null的不显示。Column JSON N

2021-12-26 23:12:55 1145

原创 redis问题集合

缓存雪崩,缓存穿透与缓存击穿一、缓存雪崩缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。解决方案:缓存数据的过期时间设置随记,放置用一时间大量数据过期现象发生。给每一个缓存数据增加响应的缓存标记,记录缓存是否失效,如果缓存标记失效,则更新数据缓存。耗费cpu比较大缓存预热,系统初启动,不对外服务,先查数据,加载数据到缓存互斥锁,锁一个方法或者锁一个key,第一个获取锁,查到数据后,数据加载到缓存,然后剩余的都到缓存中取数据。二

2021-12-26 23:11:44 923

原创 RabbitMQ 相关概念和方法详解

RabbitMQ 相关概念和方法详解 https://www.cnblogs.com/yxhblogs/p/10739137.html名词解释ConnectionFactory: 与 RabbitMQ 服务器连接的管理器。Connection: 与 RabbitMQ 服务器的连接。Channel: 与 Exchange 的连接。Exchange: 接收生产者的消息,并根据消息的 RoutingKey 和 Exchange 绑定的 BindingKey 分配消息。Queue: 存储消费者的消息。

2021-12-23 19:57:05 181

原创 reids笔记

网络io多路复用实际上是使用一个进程来监控多个准备读写的io,当有需要读写的io时,进程就会工作。这样就避免了每个io都建立一个链接导致io链接过多问题。布隆过滤器布隆过滤器是为了判断一个值是否存在的一种方法,布隆过滤器实际上是一个数据的多个哈希函数结果以位的形式存储在一个bit数组上。如果使用hashmap,当数据过多时会导致内存不足。布隆过滤器数据结构布隆过滤器是一个 bit 向量或者说 bit 数组,长这样:00000000如果我们要映射一个值到布隆过滤器中,我们需要使用多个不同的哈希函

2021-12-22 10:32:11 58

原创 redis线程池

reis线程池参数的作用:(1)建立数据库连接池对象(服务器启动)。 (2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。 (3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。 (4)存取数据库。 (5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。 (6)释放数据库连接池对象(服务器停

2021-12-22 10:31:35 518

原创 redis基础命令

选择数据库:select查看所有的key:keys my 模糊查询符合模式的key删除key:del key查看key是否存在:exists key设置key的过期时间:expire key secondsstring:设置字符串 set key value获取字符串 get key获取多个字符串 mget key1 key2设置多个字符串 mset key1 value1 key2 value2hash:查看hash中所有的field 和value hgetall key删除h

2021-12-22 10:30:04 72

转载 redis面试指南

https://zhuanlan.zhihu.com/p/91539644

2021-12-12 21:57:42 83

原创 redis面试

redis 简介简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。为什么要用 redis /为什么要用缓存主要从“高性能”和“高并发”这两点来看待这个问题。高性能:假如用户第一次访问数据库中的某些数据。这个过程会比较慢

2021-12-12 21:53:23 112

原创 redis与mysql的数据一致性

如何保证缓存和数据库一致性,这其实是一个老生常谈的话题了。但很少人能真正把这个问题讲明白,例如:到底是更新缓存还是删缓存?到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库?为什么要引在这里插入代码片入消息队列保证一致性?延迟双删到底什么?会有什么问题?到底要不要用?…下面我们就来把这些问题「彻底」讲清楚。内容稍微有点长,但干货很多,希望你可以耐心读完。引入缓存提高性能我们从最简单的场景开始讲起。如果你的业务处于起步阶段,流量非常小,那无论是读请求还是写请求,直接操作数据库即可

2021-12-12 20:09:32 201

原创 TCP的三次握手的四次握手

1、三次握手(1)三次握手的详述首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。(A、B关闭状态CLOSED——B收听状态LISTEN——A同步已发送状态SYN-SENT——B同步收到状态SYN-RCVD——A、B连接已建立状态ESTABLISHED)B的TCP服务器

2021-12-12 11:14:54 85

原创 mysql问题合集

mysql 常见面试题附录:https://mp.weixin.qq.com/s/pC0_Y7M7BkoUmlRwneZZdA一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWI

2021-12-12 10:45:14 132

原创 go程序的执行顺序

在一个 go 程序中通常包含:包、常量、变量、init()、main()等元素,如果同时存在多个包,包之间存在依赖关系,每个包中存在多个 init 函数,每个文件中存在多个 init 函数,那么问题来了,他们之间的执行顺序是什么样的?通过本文我们来对它们之间的执行顺序做尽可能详尽的说明。如有不正之处,欢迎批评指正。包的执行顺序在 main 包中的 go 文件默认总是会被执行同包下的不同 go 文件,按照文件名“从小到大”排序顺序执行其他的包只有被 main 包 import 才会执行,按照 impo

2021-12-11 17:43:00 805

原创 一,mysql索引的概述

索引使用数据结构为数据建立了目录,可以根据索引快速的定位到数据在硬盘上存放的位置索引存放的位置:c:/programdata/mysqlInnoDB存储的表,将索引和数据存放在同一个文件内 。.idbMyISAM存储的表,将索引和数据存分开两个文件存储。索引:.MYI *.MYD索引的分类:主键索引:主键自带索引效果,通过主键来查询表内的数据是非常好的普通索引:为普通列创建索引格式:create index 索引名称 on 表名(列名)例:create index idx_name on e

2021-12-03 19:49:08 1260

原创 海量通讯系统--day1

server端main包里面有main函数,main函数建立listen监听端口,接收到链接后,协程调用process函数,函数建立processor结构体并传入连接,调用process的process2函数,建立工具包的结构体,使用工具包中读取函数,返回一个mes对象,,将数据再传入serverProcessMes,serverProcessMes对数据的type进行判断,建立UserProcess结构体,使用结构体中的ServerProcessLogin对用户登录的行为进行处理。...

2021-12-02 22:41:21 87

原创 go语言基础,切片的append原理

Go 切片的 append 操作总结预备切片是对其底层数组的某一段的引用。切片有 len 和 cap 两个属性,代表切片的引用长度和切片的容量(从切片的引用起点位置到其底层数组最末端的长度。因为其底层数组的长度是固定的,这也就是意味着容量是指切片可引用的最大宽度)。append 函数slice2 := append(slice1, 23, 15)以上对切片 slice1 进行 append 操作。该操作遵循以下原则:append 函数对一个切片 slice1 进行追加操作,并返回另一个长度为

2021-11-01 14:38:58 2495

原创 sass平台项目day3

用户认证API与SDK的区别:API:提供url,你去访问这些url并根据提示传参数 【所有第三方工具都有】request.get(“http://www.xx.xxx/”,json{…}),请求使用SDK:模块:下载安装模块,基于模块完成功能下载写好的sms.py,我们install sms然后import sms,最后调用sms.func()redis安装,链接方法https://pythonav.com/wiki/detail/10/82/一、实现注册(1)展示注册页面建立web的应

2021-07-30 22:00:05 201

原创 sass平台项目day2

今日概要(1)腾讯发送短信(2)Django的ModelForm组件(3)redis(4)注册逻辑设计(5)开发(6)讲解虚拟环境补充:虚拟环境版本清单输出 pip freeze > requirements.txt新环境安装模块 pip install -r requirtments.txt1、腾讯发短信2、Django的modelform(1)自动生成标签3、下一步思路:1、点击获取验证码(1)获取手机号(2)向后台发送ajax:参数为手机号,tpl=registe

2021-07-28 21:31:27 114

原创 sass平台项目day1

相关知识点(1)虚拟环境,电脑上创建多个python环境,对多个不同版本进行维护。(2)local_settings.py本地配置通过引入local_settings.py重置覆盖原来setting文件中的配置项开发:链接数据库需要在django的setting中设置,链接数据库ip:1.1.1.1测试:链接数据库需要在django的setting中设置,链接数据库ip:1.1.1.2除了local_settings.py,其他给测试,测试自己写local_settings.py,就可以将自己的

2021-07-25 18:13:37 221

原创 博客项目第四天

留言功能-1dict.setfault(keyname, value):keyname必需。您要从中返回值的项目的键名。value可选。如果键存在,则此参数无效。如果键不存在,则此值将成为键的值。默认值 None。 常用于如果键不存在,则设置为value,如果存在,则不改变。massageapp使用parent_message =models.IntegerField(verbose_name=‘回复的留言id’)来与回复的留言相关联massage使用publisher = models.Fore

2021-07-23 15:36:46 64

原创 博客项目第四天

celery发送验证码时出现发送请求容联云无法响应,整个sms_view会卡住,整个页面无法返回。服务器许多请求都在等待容联云返回,一直占用资源,导致服务器崩溃。解决方法:redis生产者消费者模型,celery是一个简单,领过且可靠的,处理大量消息的分布式系统,它是专注于实时处理的任务队列,同时也支持任务调度,降低主营业务阻塞的问题。缺陷:无法保证实时反馈。适用于异步场景。名词解释:(1)broker-消息传输的中间件,生产者一旦有消息发送,将发至broker,【RQ,redis】(2)bac

2021-07-18 22:56:59 86

原创 博客项目第三天

验证码功能1、前端页面点击“”“免费获取验证码”,发送Ajax请求到后端2、后端接到请求后:①生成随机验证码。②存储验证码。③发送验证码3、注册时,需要提交验证码,并在注册逻辑中对比验证码是否正确(1)前端使用ajax将手机号传到后端,随后将手机号和验证码作为参数传入到第三方发送短信接口中(2)使用缓存将验证码存储在redis缓存中配置django缓存,setting中的CACHES的配置CACHES = {“default”: {“BACKEND”: “django_redis.cach

2021-07-17 10:01:04 63

空空如也

空空如也

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

TA关注的人

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