MySQL 定时备份数据库
在操作数据过程中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库。
mysqldumpmysqldump 是 MySQL 自带的逻辑备份工具。
它的备份原理是通过协议连接到MySQL数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语句,当我们需要还原这些数据时,只要执行这些 insert语句,即可将对应的数据还原。首先简单了解一下mysqldump命令格式:
mysqldump [选项] 数据库名 [表名] > 脚本名
或
mysqldump [选项] --数据库名 [选项 表名] > 脚本名
或
mysqldump [选项] --all-databases [选项] > 脚本名
可选项属性如下:
可选项
缩写
含义
–host
-h
服务器IP地址
–port
-P
服务器端口号
–user
-u
MySQL 用户名
–pasword
-p
MySQL 密码
–databases
指定要备份的数据库
–all-databases
备份mysql服务器上的所有数据库
–comp ...
Linux CPU使用率与负载过高解决思路
查看系统CPU负载及使用率命令分别有:
# 查看进程级别的cpu使用情况top# 查看系统级别的cpu使用情况vmstat
top 命令可以查看进程的CPU、内存等资源的使用情况
在top命令运行过程中可以通过top的内部命令做显示方式的控制:
命 令
描 述
1
开启或关闭显示所有cpu使用详细情况
l
关闭或开启第一部分第一行 top 信息的表示
t
关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m
关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N
以 PID 的大小的顺序排列表示进程列表(第三部分后述)
P
以 CPU 占用率大小的顺序排列进程列表 (第三部分后述)
M
以内存占用率大小的顺序排列进程列表 (第三部分后述)
h
显示帮助
n
设置在进程列表所显示进程的数量
q
退出 top
s
改变画面更新频率(输入数字)
vmstat命令可以查看系统整体的cpu,内存的使用情况
属 性
描 述
r
表示系统中 CPU 等待处理的线程。由于 CPU 每 ...
Apifox自动化测试一体化协作平台
Apifox 介绍
Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,定位 Postman + Swagger + Mock + JMeter。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、API 自动化测试就可以直接使用,无需再次定义;API 文档和 API 开发调试使用同一个工具,API 调试完成后即可保证和 API 文档定义完全一致。高效、及时、准确!
接口管理现状 常用解决方案 使用 Swagger 管理 API 文档 使用 Postman 调试 API 使用 RAP 等工具 Mock API 数据 使用 JMeter 做 API 自动化测试 存在的问题 维护不同工具之间数据一致性非常困难、低效。并且这里不仅仅是工作量的问题,更大的问题是多个系统之间数据不一致,导致协作低效、频繁出问题,开发测试人员痛苦不堪。 开发人员在 Swagger 定义好文档后,接口调试的时候还需要去 Postman 再定义一遍。 前端开发 Mock 数据的时候又要去 RAP ...
经纬度的Geohash算法与两点距离算法
获取经纬度百度地图提供了web开发、Android开发、IOS开发和服务端接口方面的对接方案,在此讲述服务端接口中的Web服务API。
Web服务API为开发者提供http/https接口,即开发者通过http/https形式发起检索请求,获取返回json或xml格式的检索数据。可以基于JavaScript、C#、C++、Java等语言的地图应用开发。
获取密钥
传送门:百度地图开放平台
登录百度地图开放平台在左侧导航栏中,点击”获取密钥”
登录并获得激活邮件后,点击邮件中的跳转链接,来到如下界面,点击"申请密钥"
来到”创建应用”界面,如下所述做配置后,按”提交”
点击复制密钥,供程序代码使用
注:百度地图api个人认证AK(免费),日配额限制6000个。使用达到上限需要第二天再用,或者更换AK(即密钥)。
示例代码一:地址获取用户可通过将结构化地址(省/市/区/街道/门牌号)解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。如:北京市海淀区上地十街十号。
传送门:接口参数文档、错误码对照表 ...
什么是进制?
进制也就是进位计数制,是人为定义的带进位的计数方法。对于任何一种进制如:X进制,就表示每一位上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。
十进制十进制编码几乎就是数值本身。数值本身是一个数学上的抽象概念。经过长期的演化、融合、选择、淘汰,系统简便、功能全面的十进制计数法成为人类文化中主流的计数方法。十进制数的书写可以不加标注,或加后缀D,其中D是英文十进制Decimal的首字母D。
十进制的基数为10,数码由0-9组成,计数规律逢十进一。
二进制
二进制由两个数码0,1组成,运算规律是逢二进一。
二进制数的书写通常在数的右下方注上基数2,或在后缀加B表示,其中B是英文二进制Binary的首字母。如:二进制数10110011可以写成(10110011)2,或写成10110011 ...
Excel导入导出注解通用版
日常开发中常会遇到Excel导入导出的需求,得空写个前后端通用版的Excel导入导出demo,供之后开发效率事半功倍
功能实现数据表初始数据
CREATE TABLE `student` ( `sno` varchar(10) NOT NULL, `sname` varchar(20) DEFAULT NULL, `sage` varchar(11) DEFAULT NULL, `ssex` varchar(5) DEFAULT NULL, PRIMARY KEY (`sno`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
注:字段全为字符类型,避免解析数据保存到数据库表时需过多的数据类型转换逻辑
依赖文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/200 ...
Keycloak认证授权框架
在学习Oauth2的时候,需要通过写代码来实现认证授权服务。最近发现一款可视化的安全框架Keycloak,只需几个命令就可以快速搭建认证授权服务,无需自行开发。原生支持SpringBoot,使用起来非常简单!
简介Keycloak是一款开源的认证授权平台,在Github上已有9.4k+Star。Keycloak功能众多,可实现用户注册、社会化登录、单点登录、双重认证、LDAP集成等功能。
Keycloak官方文档:https://www.keycloak.org/documentation
安装
使用Docker搭建Keycloak服务非常简单,两个命令就完事了,我们将采用此种方式。
首先下载Keycloak的Docker镜像,注意使用jboss的镜像,官方镜像不在DockerHub中;docker pull jboss/keycloak:14.0.0
使用如下命令运行Keycloak服务:docker run -p 8080:8080 --name keycloak \-e KEYCLOAK_USER=admin \-e KEYCLOAK_PASSWORD=admin \ ...
数据库存IP地址,用什么数据类型?
MySQL数据库在看高性能MySQL第3版(4.1.7节)时,作者建议当存储IPv4地址时,应该使用32位的无符号整数(UNSIGNED INT)来存储IP地址,而不是使用字符串。
相对字符串存储,使用无符号整数来存储有如下的好处:
节省空间,不管是数据存储空间,还是索引存储空间
便于使用范围查询(BETWEEN…AND),且效率更高
通常,在保存IPv4地址时,一个IPv4最小需要7个字符,最大需要15个字符,所以,使用VARCHAR(15)即可。
MySQL在保存变长的字符串时,还需要额外的一个字节来保存此字符串的长度。而如果使用无符号整数来存储,只需要4个字节即可。
另外还可以使用4个字段分别存储IPv4中的各部分,但是通常这不管是存储空间和查询效率应该都不是很高(可能有的场景适合使用这种方式存储)。
使用无符号整数来存储也有缺点:
不便于阅读
需要手动转换
对于转换来说,MySQL提供了相应的函数来把字符串格式的IP转换成整数的INET_ATON,以及把整数格式的IP转换成字符串的INET_NTOA。如下所示:
INET_ATONmysql> sel ...
Erupt全栈类框架
一个管理系统,往往需要后端+前端一起实现。单表CRUD操作往往都差不多,我们可以使用代码生成器来实现。有时候我们的管理系统只需要一些简单的CRUD页面,有没有什么框架能做到不写前端代码,纯Java撸个管理系统呢?这里推荐一个全栈类框架Erupt,希望对大家有所帮助!
Erupt简介Erupt是一个低代码全栈类框架,它使用Java注解动态生成页面以及增、删、改、查、权限控制等后台功能。零前端代码、零CURD、自动建表,仅需一个类文件 + 简洁的注解配置,快速开发企业级后台管理系统。
官方文档:传送门
SpringBoot整合Erupt我们首先来波实战,以商品品牌管理为例,来熟悉下Erupt结合SpringBoot的基本使用!
由于Erupt原生支持SpringBoot,所以整合还是很方便的!
为了方便管理Erupt版本,我们先在pom.xml中添加Erupt的版本属性;
<properties> <erupt.version>1.6.13</erupt.version></properties>
之后在pom.xml中 ...
Java中那18把"金刚"锁
乐观锁和悲观锁悲观锁悲观锁对应于生活中悲观的人,悲观的人总是想着事情往坏的方向发展。
举个生活中的例子,假设厕所只有一个坑位了,悲观锁上厕所会第一时间把门反锁上,这样其他人上厕所只能在门外等候,这种状态就是「阻塞」了。
回到代码世界中,一个共享数据加了悲观锁,那线程每次想操作这个数据前都会假设其他线程也可能会操作这个数据,所以每次操作前都会上锁,这样其他线程想操作这个数据拿不到锁只能阻塞了。
在Java语言中synchronized和ReentrantLock等就是典型的悲观锁,还有一些使用了synchronized关键字的容器类如HashTable等也是悲观锁的应用。
乐观锁乐观锁对应于生活中乐观的人,乐观的人总是想着事情往好的方向发展。
举个生活中的例子,假设厕所只有一个坑位了,乐观锁认为:这荒郊野外的,又没有什么人,不会有人抢我坑位的,每次关门上锁多浪费时间,还是不加锁好了。你看乐观锁就是天生乐观!
回到代码世界中,乐观锁操作数据时不会上锁,在更新的时候会判断一下在此期间是否有其他线程去更新这个数据。
乐观锁可以使用版本号机制和CAS算法实现。在 Java 语言 ...