自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 【Redis】Redis分布式锁探索入门

Redis分布式锁入坑分析入坑1(过期时间):入坑2(加锁原子性):入坑3(删除其他线程锁):入坑4(reids集群):Redis官方分布式锁框架入坑1(过期时间):锁没有设置过期时间,程序报错,该锁没有删除,导致锁一致存在,其他线程永远无法获取锁错误方式def redis_lock lock_key = 'redis:nx:key' lock_val = UUID -- 设置锁 redis.setnx(lock_key, lock_val) -- ########## -- 此时这里报

2021-02-21 21:50:39 19

原创 【阿里云日志】查询指南

阿里云日志存储查询一、基本简介二、查询简介一、基本简介阿里云日志的作用?日志服务(Log Service,简称SLS)是针对日志类数据的一站式服务,无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立DT时代海量日志处理能力。如上就是简答的日志如何采集的描述,本片文章主要介绍如何查询日志,所以基础功能就不过多的赘述。我们有了海量的日志,呢么我们该怎么去分析查询这些日志呢?日志服务提供大规模日志的实时查询与分析能力。接下来我们就从简至繁简介一下如何查询并且分析你

2020-12-11 15:45:21 214

原创 【Git】git底层数据存储结构

git存储结构原理Git对象Git对象1.所有的提交都存储在这两个文件夹2.删除hooks便于观察(rm -rf .git/hooks)3.add到暂存区后会生成对应的hash值4.查看add的文件类型为blob5. 输出blob中的内容6. commit之后.git文件下会再次生成两个文件,一个是tree、一个是commit记录7. 三个文件类型如下,文件的内容8. 修改1.txt中的内容再次commit,还会生成一副commit、tree、blobcommit(作者、信息、上一个co

2020-09-22 13:06:14 218 1

原创 【Linux】Linux很卡怎么办?增加交换区大小

出现原因:交换区过小导致系统卡死解决:增加交换区大小一、解决方案1、查看交换区大小:free -m2、进入root用户(非常重要,不然后续会很麻烦)sudo su - root 3、创建一个目录:mkdir /swap4、进入目录cd /swqp5、输入以下命令:dd if=/dev/zero of=swapfile bs=1024 count=10290000 a.可以看到如下内容: 记录了1029000+0 的读入 记录了10290

2020-08-20 13:27:53 155

原创 【Golang】十、基础篇 --- JSON序列化和反序列化

序列化和反序列化一、序列化(1)map 序列化(2)切片 序列化(3)结构体 序列化二、反序列化(1)map 反序列化(2)切片 反序列化(3)结构体 反序列化一、序列化(1)map 序列化 // 初始化map var jsonMap map[string]interface{} jsonMap = make(map[string]interface{}, 2) jsonMap["项目"] = []int{111,2,2,2,2,3,44555} jsonMap["资源"] = []strin

2021-04-18 18:45:38 13

原创 【Golang】九、基础篇 --- 文件操作

文件读取(1)缓冲区读取var filePath string = "文件路径"func main(){ // 1. 打开文件 f, _ := os.Open(filePath) defer f.Close() // 2. 缓冲读取文件 reader := bufio.NewReader(f) for { // ReadString('\n') 表示读到\n结束读取 str, err := reader.ReadString('\n') // io.EOF 表示文件末尾

2021-04-17 16:17:52 14 1

原创 【Golang】八、重点篇 --- 面向对象

面向对象一、封装二、继承1、匿名继承2、具名继承三、多态3-1 接口(引用类型)封装、继承、多态一、封装封装可以使字段不直接暴露,通过自己封装的函数、结构体绑定的方法来初始化、获取或者修改等操作。(类似java中的构造函数、get、set的作用)// 结构体都是小写,其他包无法访问到,所以需要封装一些方法去访问到该结构体type person struct { number string Password string}// 初始化person结构体对象,并且返回该结构体执政func

2021-04-15 20:24:36 1

原创 【Golang】七、基础篇 --- 方法

方法一、方法定义二、方法中的变量传递1、结构体变量传值2、String()方法三、工厂模式的引入四、方法和函数的区别一、方法定义什么是方法?方法是作用于自定义数据类型上的,只可以由该数据类型声明的变量调用!定义:func (type type) funcName(行参列表) (返回列表) { }调用:变量.函数名(实参列表)案例1:自定义结构体绑定的方法type Utils struct { M int N int}func (util Utils) PrintJX() (

2021-04-08 17:09:50 6

原创 【Golang】六、基础篇 -- map和结构体

一、mapmap是引用类型1、定义和初始化make定义// 方式1var mapT1 map[string]stringmapT1 = make(map[string]string, 10)// 方式2var mapT3 = make(map[string]string)// 方式3mapT4 := make(map[string]string)// 赋值mapT4["number1"] = "11111"mapT4["number2"] = "22222"// 输出 =&g

2021-04-06 21:11:54 22

原创 【Golang】五、基础篇 -- 数组和切片

数组和切片一、数组1、定义2、注意3、案例二、切片1、切片定义方式2、append:向切片中动态追加元素一、数组1、定义数组是值类型,存放多个同一类型的数据类型,go中数组是值类型。数组定义过程:声明就开辟了内存空间,之后操作都是给数据各个元素赋值定义定长数组var names [2]string;names[0] = "zhangsan"names[1] = "lisi"类型推导定义var ages = [...]int{1,2,3,4,5,6,7,8}// 或者ages :

2021-04-01 21:50:05 14

原创 【Golang】四、基础篇 -- 函数

golang的函数一、包的引入二、递归三、函数变量四、自定义数据类型五、自定义返回值名称五、可变参数六、init函数(1)执行顺序(2)案例执行顺序:七、匿名函数八、闭包九、defer 延时机制十、系统函数:字符串十一、系统函数:日期十二、错误处理(1)捕获异常(2)自定义异常附:函数细节一、包的引入在环境变量中配置$GOPATH的环境变量,在src路径下建立文件,可以识别到该包。二、递归写一个递归我们需要知道,这个函数的出口在哪?这个函数的规律是什么?才可以写出递归函数斐波那数列(1)数列

2021-03-26 21:48:35 22

原创 【Golang】三、基础篇 -- 流程控制

流程控制一、分支(1)if单分支(2)if多分支(3)switch二、for循环(1)方式1:for i := 0; i < 10; i++{}(2)方式2:for i < 10 {}(3)方式3:for index, val := range str {}(4)循环案例二、跳转(1)break 跳出当前循环(2)continue 跳出本次循环(3)return 跳出所在的方法函数一、分支(1)if单分支func main() { var name string = "11" num,

2021-03-17 20:25:58 5

原创 【Golang】二、基础篇 -- 变量函数常量名和运算符简介

golang约束一、变量名、函数名、常量名二、运算符(1)算数运算符号(2)逻辑运算符(3)赋值运算符一、变量名、函数名、常量名首字母大写,则可以被其他包访问(publish);首字母小写则只能再本包内使用(private)(注:首字母大写表示共有的)model/utils.govar Name string = "super man"mian.goimport ( "fmt" "go_code/package01/model")func main() { fmt.Println

2021-03-14 14:44:04 12

原创 【Golang】一、基础篇 -- 基本数据类型

golang安装MAC环境下安装go,下面所有操作都是针对MAC OS环境构建,本篇文章只有基础教程,无框架介绍!安装

2021-03-13 13:05:41 14 1

原创 【Swagger】一小时掌握Swagger对接SpringBoot

什么是Swagger?

2021-02-16 15:49:19 30

原创 【Mysql】十二、Mysql高级篇 --- 数据库锁

表锁、行锁一、表锁(MyISAM)1、查看加锁的表2、设置加锁3、解锁二、行锁(InnoDB)一、表锁(MyISAM)读锁(READ)会阻塞写,但不会阻塞读;写锁(WRITE)会把写锁和读锁都阻塞读锁阻塞写,写锁阻塞读和写1、查看加锁的表SHOW OPEN TABLES2、设置加锁读锁LOCK TABLE table_name1 READsession1会话对某个表加 READ 锁后,当前会话仅可以读该表。session2(其他session)会话可读该表但不可写,等待sess

2021-02-14 21:52:54 15

原创 【Mysql】十一、Mysql高级篇 --- SQL执行化验单

SHOW PROFILES一、开启SHOW PROFILES二、查看SHOW PROFILESmysql提供用来分析当前SQL执行的资源消耗情况。用于SQL调优一、开启SHOW PROFILESmysql默认是关闭的,可以通过变量开启这个服务,此服务和日志服务一样,只针对本次启动有效,重启恢复默认关闭。查看是否开启SHOW VARIABLES LIKE "profiling";+---------------+-------+| Variable_name | Value |+--

2021-02-13 20:55:30 15

原创 【Mysql】十、Mysql高级篇 --- 日志

日志慢查询日志一、慢查询日志设置查看1. 查看慢查询日志是否开启2. 查看默认慢查询记录时间3. 开启慢查询日志4. 设置慢查询参数5. 查看查询慢的SQL二、日志分析工具mysqldumpslow全局查询日志慢查询日志慢查询日志默认是没有开启的一、慢查询日志设置查看1. 查看慢查询日志是否开启mysql> SHOW VARIABLES LIKE '%slow_query_log%';+---------------------+-----------------------------

2021-02-12 21:45:54 23 1

原创 【Mysql】九、Mysql高级篇 --- 索引

MYSQl索引一、索引简介二、索引数据结构1、mysql数据库的四种索引2、BTREE结构一、索引简介索引优势:相当于书的目录,提高数据库检索效率,降低数据库io操作成本。通过索引对数据库进行排序,降低排序成本,减轻cpu负荷索引劣势:建立索引相当于存储了另一张表记录了索引的模型,所以索引列也需要占用内存空间。索引虽然提高了查询效率,但是同时也降低了增删改的效率,因为每次新增修改删除,都需要每次更新添加索引列字段,降低增删改的时间。二、索引数据结构1、mysql数据库的四种索引B

2021-02-10 19:51:41 38 1

原创 【Mysql】八、Mysql基础篇 --- 存储过程

存储过程篇什么是存储过程?存储过程是一组预先=编译好的sql语句集合,执行过的sql会暂存,之后再次执行该语句不需要重新编译。好处:1.提高代码的复用度;2.简化操作;3.减少和数据库的连接次数。...

2021-01-27 19:08:08 7

原创 【Mysql】七、Mysql基础篇 --- 事务和视图

TCL篇事务1、事务的四大特点(ACID)2、事务的使用步骤视图事务一组sql组成一个执行单元,这些sql要么都执行,要么都不执行;执行中报错了,都不执行,回滚之前的修改内容1、事务的四大特点(ACID)原子性:事务是最小的单元,内部的sql都不可再分割执行,要么都执行成功,要么都执行失败一致性:事务修改之后的数据,保持一致。举例:两个账户转账,执行成功后金额与转账之前的总额保持一致。隔离性:事务之间的是相互隔离,互不干扰持久性:事务一旦提交,不可撤回

2021-01-22 23:48:59 33

原创 【CSS】标签悬浮

标签悬浮所有标签固定位置显示?业务需求:按钮需要固定屏幕右下角显示!下面直接上解决方案.fixed-z-index{ // fixed(固定定位) position: fixed; // 至于图层的最顶端 z-index: 9999; // 相对于浏览器窗口底部的位置 bottom: 20px; // 同上 相对于浏览器窗口右侧的位置 right: 170px; }理解参数的意义positionposition的四个属性值relat

2021-01-18 11:33:30 48 1

原创 【Mysql】六、Mysql基础篇 --- 数据类型和约束

数据类型、约束篇

2021-01-15 17:46:28 27

原创 【Mysql】五、Mysql基础篇 --- 库/表的增删改

DDL篇

2021-01-13 15:06:38 34

原创 【Mysql】四、Mysql基础篇 --- 增删改

增删改篇插入1、插入方式一2、插入方式二修改1、修改单表2、修改多表删除1、删除 -- 数据2、删除 -- 表插入1、插入方式一INSERT INTO TABLE(col1, col2)VALUES(val1, val2)案例1:单行插入INSERT INTO users(username, age, sex)VALUES('张三', 23, NULL)-- 或者 不指定列(列顺序需要和数据一致)INSERT INTO usersVALUES(1, '张三', 23, NULL)案例

2021-01-09 21:39:10 46

原创 【Mysql】三、Mysql基础篇 --- 查询

查询篇子查询分页查询联合查询子查询分页查询联合查询

2021-01-06 21:07:37 20

原创 【Mysql】二、Mysql基础篇 --- 表连接

连接篇一、等值链接二、非等值连接三、自连接四、内连接(INNER JOIN)五、外连接(LEFT JOIN / RIGHT JOIN)一、等值链接相当于将两张表的数据全部链接起来,相等的数据为同一行,组成一个大的表SELECT * FROM users, projectsWHERE users.id = projects.user_id案例1: 没有连接条件users表数据9条,projects表数据3条SELECT * FROM users, projects查询结果共有27条数据

2020-12-30 20:37:29 21

原创 【Mysql】一、Mysql基础篇 --- 函数

1、CONCAT 合并字段值SELECT CONCAT(last_name, " ", first_name) from contacts2、<>与!=有什么区别<>是标准语法.可以移植到其他任何平台.!=是非标准语法.可移植性差.但都是表示不等于的意思,应用中尽量用<>3、安全等于<=>SELECT * FROM table WHERE column <=> null=>等价于SELECT * FROM table WH

2020-12-28 09:50:45 43 2

原创 【RabbitMQ】初识MQ消息队列

RabbitMQ入门教程一、安装以及启动二、管理命令行和管理界面一、安装以及启动安装(mac):brew install rabbitmq 各个版本rabbitmq下载启动方式1:(1)进入目录下:cd /usr/local/Cellar/rabbitmq/3.6.6(2)执行:sbin/rabbitmq-server启动方式2*:(1)终端执行:vi ~/.bashrc vi ~/.zshrc(2)添加环境变量:export PATH=$PATH:/usr/local/sbin

2020-12-13 13:23:13 35

原创 【SHELL】shell脚本入门

一、hello world新建学习文件夹:mkdir shell_test新建文件:

2020-12-11 14:46:15 18

原创 【Oracel】查看数据库索引

如何查看oracel表索引字段:SQL:“select * from user_ind_columns where table_name = '表名'查询结果:字段含义:柱数据类型空值描述INDEX_OWNERVARCHAR2(30)NOT NULL指数所有者INDEX_NAMEVARCHAR2(30)NOT NULL索引名称TABLE_OWNERVARCHAR2(30)NOT NULL表或集群的所有者TABLE_NAMEVARCHAR

2020-11-26 11:43:09 20

原创 【Oracle】SQL查询字段值NULL排序问题

遇到问题:查询时需要按照某一字段进行排序,但是这个字段中可能有空值,在oracle中默认null是最大的,所以null的字段会排在最前面,这样就无法达到我们所预期的效果。如何解决:oracle中为我们提供了很多很好用的分析函数,本次使用的函数是NULLS LAST,这个函数的意思顾名思义,将所有的null的数据排在最后面,这样就很好的可以达到我们所需要的效果,范例如下:SELECT * FROM table ORDER BY column NULLS LAST拓展:nulls first:将nu

2020-11-20 15:23:59 63

原创 【解决】github连接异常 error:“Failed to connect to github.com“

github.com域名经常修改,我们要切换到最新DNS域名,才可以访问github.com,修改hosts文件即可点击:github DSN查询终端打开hosts文件:sudo vim /etc/hosts

2020-11-05 11:09:02 275

原创 【Docker】linux安装docker-compose遇到“权限不够“

安装docker-compose

2020-10-29 09:11:39 415

原创 【Vue】VUE组建防抖

// 防抖 闭包返回方法 // 参数1:触发的方法 // 参数2:等待时间 debounce(fun, time) { let timer return (arges) => { clearInterval(timer) timer = setTimeout(() => { // 触发该方法 fun.call(this, arges) }, time) .

2020-10-26 15:28:50 62

原创 【Docker】Docker简单实战

Docker简单实战一、Redis集群部署一、Redis集群部署实现分片、高可用、负载均衡,三主三从的redis集群redis是个单独的集群,新建redis-net网卡:docker network create redis-net --subnet 172.38.0.0/16新建redis.conf配置文件for port in $(seq 1 6); \do \mkdir -p /mydata/redis/node-${port}/conftouch /mydata/redis

2020-10-24 15:36:39 45

原创 【SQL】合并多个SELECT

UNION ALL

2020-10-21 18:15:55 65

原创 【Vue】父子组建双向数据绑定

https://cn.vuejs.org/v2/guide/components-custom-events.html父组建<myInput :syncdata.sync="data" ></myInput>子组建props: ['syncdata']this.$emit('update:syncdata', true) // 会告诉父组建,syncdata绑定的值data修改为true...

2020-10-10 11:36:22 41 1

原创 【Ngrok】如何让别人访问到你本地的项目?

内网穿透小工具Ngrok进入官网:点击进入官网Ngrok提供了本地WEB外网访问,无需任何配置,下载客户端之后直接一条命令让外网访问您的内网不再是距离。如何使用登陆 -> 隧道管理 -> 开通隧道 -> 选择最后一个免费的选项点击隧道管理查看隧道详情本地vue项目:vue.config.js / webpack.conf.js 中配置module.exports = { devServer: { port: 3000, open: true,

2020-10-03 17:07:55 82

原创 【CSS】浅谈flex弹性布局

flex 设置两端对其.div-new-dialog-footer{display: flex;flex-flow: row nowrap;justify-content: space-between;}.left-div{display:inline}.right-div{display:inline}

2020-09-28 17:32:00 50 1

ruby入门练习题.zip

ruby入门练习体,全面了解ruby的面向对象的思想,针对ruby入门由简入深循序渐进,脚本连接数据库,对于ruby的理解更加深入,会有一个更加清晰的认识

2020-07-17

空空如也

空空如也

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

TA关注的人 TA的粉丝

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