首页
统计
关于
Search
1
Sealos3.0离线部署K8s集群
1,082 阅读
2
类的加载
741 阅读
3
Spring Cloud OAuth2.0
726 阅读
4
SpringBoot自动装配原理
691 阅读
5
集合不安全问题
584 阅读
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
登录
Search
标签搜索
Java
CSS
mysql
RabbitMQ
JavaScript
Redis
JVM
Mybatis-Plus
Camunda
多线程
CSS3
Python
Spring Cloud
注解和反射
Activiti
工作流
SpringBoot
Mybatis
Spring
html5
蘇阿細
累计撰写
388
篇文章
累计收到
4
条评论
首页
栏目
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
页面
统计
关于
搜索到
46
篇与
的结果
2020-11-02
数据库事务ACID
事务:要么都成功,要么都失败1、A给B转账 A 1000 -->200 B 2002、B收到A的钱 A 800 --> B 400将sql放在一个批次中去执行事务ACID原则:原子性,一致性,隔离性,持久性原子性(Atomicity)要么都成功,要么都失败一致性(Consistency)事务前后的数据完整性要保持一致(A、B一共有1000块钱,不论A和B怎么转账,最终两人钱的总和是1000块)隔离性(Isolation)多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离持久性(Durability)事务一旦提交则不可逆,事务提交的结果被持久化存储到数据库中隔离所导致的一些问题脏读:指一个事务读取了另一个事务未提交的数据。不可重读:在一个事务内读取表中的某一行数据,多次读取的结果不同。(这个不一定是错误,需具体场景具体分析)虚读(幻读):指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。-- 事务 -- mysql是默认开启事务自动提交的 SET autocommit = 0; /*关闭*/ SET autocommit = 1; /*开启*/ -- 手动处理事务 -- 1、关闭自动提交 SET autocommit = 0; -- 2、事务开启 START TRANSACTION; -- 标记一个事务的开始,从这之后的sql都在同一个事务内 INSERT xx INSERT xxx -- 提交:持久化(成功) COMMIT -- 回滚:返回之前的状态(失败) ROLLBACK -- 3、事务结束 SET autocommit = 1; -- 开启自动提交 SAVEPOINT 保存点名称 -- 设置一个事务的保存点 ROLLBACK TO SAVEPOINT -- 回滚到保存点 RELEASE SAVEPOINT 保存点名称 -- 撤销保存点模拟转账实例-- 转账 CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci; use shop; CREATE TABLE `account`( id int(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, money DECIMAL(9,2) NOT NULL, PRIMARY KEY (id) )ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO account(name,money) VALUES('a',1000.00),('b',500.00); -- 模拟转账:事务 SET autocommit = 0; -- 关闭自动提交 START TRANSACTION -- 开启事务(一组事务) UPDATE account SET money=money-500 where name='a'; -- a减500 UPDATE account SET money=money+500 where name='b'; -- b加500 COMMIT; -- 提交事务,提交之后数据被持久化存储 ROLLBACK; -- 回滚 SET autocommit = 1; -- 恢复默认提交
2020年11月02日
186 阅读
0 评论
0 点赞
2020-11-02
MD5加密算法
MD5:主要增强算法复杂度和不可逆性。-- 测试MD5 CREATE TABLE `testmd5`( id INT(11) NOT NULL, name VARCHAR(20) NOT NULL, pwd VARCHAR(255) NOT NULL )ENGINE=INNODB DEFAULT CHARSET=utf8; -- 明文密码 INSERT INTO testmd5 VALUES(1,'孙笑川','12345'),(2,'刘波','12345'),(3,'Giao哥','12345'); -- 加密 UPDATE testmd5 SET pwd=MD5(pwd) WHERE id=1; -- 插入的时候加密 INSERT INTO testmd5 VALUES(4,'孙笑川',MD5('12345')); -- 如何校验:将用户传递进来的密码,进行加密,然后比对加密后的值 SELECT * FROM testmd5 WHERE name='孙笑川' AND pwd=MD5('12345');
2020年11月02日
71 阅读
0 评论
0 点赞
2020-10-26
Ubuntu 18.04安装MySQL 5.7
1、安装mysql服务sudo apt-get install mysql-server-5.7 2、安装依赖:sudo apt install libmysqlclient-dev 3、检查状态:sudo netstat -tap | grep mysql检查一下mysql服务是否处在监听状态4、设置mysql的密码切换到root用户下再输入mysql5、切换数据库输入use mysql;切换数据库update user set plugin = 'mysql_native_password' where user='root'; update user set authentication_string=PASSWORD('password') where user='root'; 设置完成root密码完成以上步骤先别退出mysql,输入FLUSH PRIVILEGES;刷新权限,再输入quit退出mysql6、重启mysql服务sudo /etc/init.d/mysql restart 或者service mysql restart 8、设置允许root用户远程登录mysql(1)输入命令mysql -uroot -p 输入密码之后正常登录数据库(2)输入use mysql;切换一下数据库(3)为用户授权GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES; 完成以上步骤之后打开Navicat客户端连接服务器里的mysql依然会报2003错误,如下图这时,切换到/etc/mysql/mysql.conf.d/目录下,输入sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf编辑mysql配置文件,找到bind-address = 127.0.0.1这一行,并将其注释掉,完成以上步骤之后,重启mysql服务,同时还需要放行3306端口,输入ufw allow 3306此时回到Navicat客户端,即可连接成功。
2020年10月26日
81 阅读
0 评论
0 点赞
2020-09-07
新增数据时自动添加时间
1、MySql将create_time的类型改为datetime,左下角勾选根据当前时间戳更新,默认值填写为CURRENT_TIMESTAMP2、SpringBoot Jpa(以userinfo表为例)@CreatedDate @Column(name = "createtime",updatable = false,nullable = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createtime; //添加记录时间并且在XXXApplication中添加@EnableJpaAuditing@SpringBootApplication @EnableJpaAuditing public class XXXApplication { public static void main(String[] args) { SpringApplication.run(XXXApplication.class, args); } }
2020年09月07日
57 阅读
0 评论
0 点赞
2020-07-05
MySQL连接问题
以SSM(c3p0连接池)为例在连接池配置中添加如下内容:<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> //检测所有连接的有效性,默认为true(影响性能),这里设置为false <property name="testConnectionOnCheckout" value="false"/> //异步检测连接的有效性 <property name="testConnectionOnCheckin" value="true"/> //每隔3600秒c3p0检测连接的有效性,单位秒 <font color=green><property name="idleConnectionTestPeriod" value="3600"/> </bean>
2020年07月05日
69 阅读
0 评论
0 点赞
2020-06-12
常用聚合函数
-- 聚合函数-- count() 查询有多少条记录-- count(字段) 会忽略所有的null值SELECT COUNT(phone) FROM student;-- count() 不会忽略null值,本质计算行数SELECT COUNT(*) FROM student;-- count(1) 不会忽略所有的null值,本质计算行数SELECT COUNT(1) FROM student;SELECT SUM(studentresult) FROM result; -- 总和 SELECT AVG(studentresult) FROM result; -- 平均分 SELECT MAX(studentresult) FROM result; -- 最高分 SELECT MIN(studentresult) FROM result; -- 最低分-- 分组和过滤-- 查询不同课程的平均分,最高分和最低分,平均分大于80-- 核心:根据不同的课程分组SELECT subjectname,AVG(studentresult) AS 平均分,MAX(studentresult) AS 最高分,MIN(studentresult) AS 最低分 FROM result r INNER JOIN `subject` sub ON r.subjectno = sub.subjectno GROUP BY r.subjectno -- 通过什么字段来分组 HAVING 平均分 > 80;
2020年06月12日
172 阅读
0 评论
0 点赞
2020-06-12
常用函数
-- 常用函数-- 数学运算SELECT ABS(-8); -- 绝对值 SELECT CEILING(9.3); -- 向上取整 SELECT FLOOR(9.6); -- 向下取整 SELECT RAND(); -- 返回一个0-1之间的随机数 SELECT SIGN(-10); -- 判断一个数的符号 附属返回-1,正数返回1-- 字符串SELECT CHAR_LENGTH('str'); -- 字符串长度 SELECT CONCAT('H','e','l','l','o'); -- 拼接字符串 SELECT INSERT('Hello World!',1,2,'HE'); -- 查询 替换(从某个位置开始替换某个长度) SELECT LOWER('STR'); -- 转小写 SELECT UPPER('str'); -- 转小写 SELECT INSTR('Hello','l'); -- 返回第一次出现的子串的索引 SELECT REPLACE('你好,再见!','你好','Hello'); -- 替换出现的指定字符串 SELECT SUBSTR('故乡的樱花开了吗?',4,2); -- 返回指定的子字符串(源字符串,截取位置,截取长度) SELECT REVERSE('故乡的樱花开了吗'); -- 反转字符串-- 查询姓孙的同学,将姓替换为刘SELECT REPLACE(studentname,'孙','刘') FROM student WHERE studentname LIKE '孙%';SELECT CURRENT_DATE(); -- 获取当前日期 SELECT CURDATE(); SELECT NOW(); -- 获取当前时间 SELECT LOCALTIME(); -- 本地时间 SELECT SYSDATE(); -- 系统时间 SELECT YEAR(NOW()); SELECT MONTH(NOW()); SELECT DAY(NOW()); SELECT SECOND(NOW());-- 系统SELECT USER(); SELECT VERSION();
2020年06月12日
149 阅读
0 评论
0 点赞
2020-06-12
子查询
-- 1.查询 数据库结构-1 的所有考试结果(学号,科目编号,成绩)降序排列-- 方式一:连接查询SELECT studentno,r.subjectno,studentresult FROM result r INNER JOIN `subject` sub ON r.subjectno = sub.subjectno WHERE subjectname = '数据库结构-1' ORDER BY studentresult DESC;-- 方式二:子查询(执行顺序:由里及外)SELECT studentno,subjectno,studentresult FROM result WHERE subjectno = ( SELECT subjectno FROM `subject` WHERE subjectname = '数据库结构-1') ORDER BY studentresult DESC;-- 查询课程为高等数学-2 且分数不小于80分的同学信息(学号、姓名)SELECT studentno,studentname FROM student WHERE studentno IN ( SELECT studentno FROM result WHERE studentresult > 80 AND subjectno = ( SELECT subjectno FROM `subject` WHERE subjectname = '高等数学-2') );
2020年06月12日
71 阅读
0 评论
0 点赞
1
...
4
5
6