InnoDB

文末送书 | WAF 那些事

雨燕双飞 提交于 2021-02-13 02:25:23
Hi!,我是小小,这是小小本周的最后一篇,本篇将会介绍WAF的事情,本篇将会文末送书。在此小小举出小手,相当欢迎各位快点快点快点参加。 什么是WAF WAF是一种产品,一种web应用防火墙,通过执行一定的策如,实现保护Web应用程序。 WAF分类 软件型WAF 软件型WAF是以软件的形式保护服务器上的文件内容,由于安装在服务器上,所以可以随时解除到服务器上的文件,直接检测到服务器上是否由webshell的创建,是否由木马,等。 硬件型WAF 以硬件的形式部署在链路中,支持多种部署方式,可以拦截恶意流量,可以监听拦截的记录, 云WAF 一般以反向代理的形式工作,通过配置NS记录或CNAME记录,使对网站的请求报文优先经过WAF主机,经过WAF主机过滤后,将认为无害的请求报文再发送给实际网站服务器进行请求,可以说是带防护功能的CDN。 网站系统内置的WAF 此时分为以下的几种 输入参数的强置类型转换 输入参数合法性校验。 关键函数执行的检测。 对输入流程的数据进行相关的过滤,再执行。 识别网站WAF的类型 SQLMap python sqlmap.py -u "http://xxx.com/se/" --identify-waf --batch 使用SQLMap自带的WAF模块可以识别出WAF种类,输入SQL命令可以看到相应的识别的结果 可以看到识别出WAF的类型为XXX Web

【值得收藏】一份非常完整的Mysql规范

◇◆丶佛笑我妖孽 提交于 2021-02-12 22:41:04
做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开! 本文从芋道源码转载,在原有内容基础上结合阿里巴巴Java开发手册中Mysql数据库章节的介绍,加上自己的理解和说明,整理而成。涉及的内容较多,建议收藏后仔细阅读! 一、数据库命名规范 数据库的表名、字段名必须使用 小写字母或数字 (不要使用驼峰哦),并禁止出现数字开头,禁止两个下划线中间只出现数字。 正例:aliyun _ admin , rdc _ config , level 3_ name 反例:AliyunAdmin , rdcConfig , level _3_ name 所有数据库对象名称 禁止使用mysql保留关键字 (如果表名中包含关键字查询时,需要将其用单引号括起来) mysql5.7 关键字 官方文档地址: https://dev.mysql.com/doc/refman/5.7/en/keywords.html 设计时多查一查,下面只是列举了一部分,全部关键字查看官方文档内容。如下: ACCESSIBLE (R) ACCOUNT [ a] ACTION ADD (R) AFTER AGAINST AGGREGATE ALGORITHM ALL (R) ALTER (R) ALWAYS [ b] ANALYSE ANALYZE (R) AND (R) ANY AS (R) ASC (R

MySQL字符集与排序规则总结

可紊 提交于 2021-02-12 22:39:53
字符集与排序规则概念 在数据库当中都有字符集和排序规则的概念, 很多开发人员甚至包括有些 DBA 都会将这个混淆,当然这个情况也有一些情有可原的原因。一来两者本来就是相辅相成,相互依赖关联; 另外一方面, 有些数据库并没有清晰的区分开两者。例如, SQL Server 中字符集和排序规则就是合在一起的,创建一个新的数据库,只有一个 Collation 给你选择,并没有字符集选项概念,实际上你在选择一个 Collatin 时,就选定了数据库的字符集和排序规则,例如 Chinese_PRC_CI_AS 。在 MySQL 中,字符集和排序规则是区分开来的,你需要单独设置字符集和排序规则。当然 MySQL 字符集和排序规则也是相关联的。除非特殊需求,只要设置其一即可。设置字符集,即设置了 默认的排序规则。 我们先来搞清楚字符、字符集与字符编码的概念。相信很多人都在这些概念上犯过迷糊。什么是字符呢? 什么是字符集呢,什么有是字符编码呢? 字符( Charcter )是文字与符号的总称,包括文字、图形符号、数学符号等。 26 个英文字母属于字符,每个汉字也属于一个字符。 字符集是一组抽象的字符( Charcter )组合的集合。举一个例子,所有的汉字就算一个 “ 字符集合 ” , 所有的英语字母也算一个 “ 字符集合 ” 。 注意,我这里说它们是字符集合,而且还有双引号

Mysql4种方式避免重复插入数据!

≡放荡痞女 提交于 2021-02-12 12:04:58
作者:小小猿爱嘻嘻 wukong.com/question/6749061190594330891/ 最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下: 这里为了方便演示,我新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引: 01 insert ignore into 即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据: 02 on duplicate key update 即插入数据时,如果数据存在,则执行更新操作,前提条件同上,也是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则执行update更新操作,如果不存在,则直接插入: 03 replace into 即插入数据时,如果数据存在,则删除再插入,前提条件同上

mysql 按年度、季度、月度、周、日SQL统计查询

旧城冷巷雨未停 提交于 2021-02-12 02:03:55
表结构: 表中数据总条数:2926 1. 统计每天的单数 SELECT COUNT(*),DATE_FORMAT(t.create_time,'%Y-%m-%d') from t_call_record t GROUP BY DATE_FORMAT(t.create_time,'%Y-%m-%d') (执行时间:0.003s) SELECT count(*),DATE_FORMAT(t.create_time,'%Y-%m-%d') from t_call_record t GROUP BY TO_DAYS(t.create_time) (执行时间:0.002s) 第二种优于第一种,会列出所有的单子 1.2 统计上个月的天数据 SELECT count(*),DATE_FORMAT(t.create_time,'%Y-%m-%d') from t_call_record t where YEAR(t.create_time) = '2018' GROUP BY DAY(t.create_time) (执行时间:0.001s)按天统计从上个月最后一天向前推的31天数据 1.3 按周统计数据 SELECT count(*),WEEK(t.create_time),MONTH(t.create_time) from t_call_record t where YEAR(t.create

面试命中率90%的点——MySQL锁

醉酒当歌 提交于 2021-02-11 20:31:24
一、对MySQL的锁的了解 当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制来保证访问的次序,锁机制就是这样的一个机制。 就像酒店的房间,如果大家随意进出,就会出现多人抢夺同一个房间的情况,而在房间上装上锁,申请到钥匙的人才可以入住并且将房间锁起来,其他人只有等他使用完毕才可以再次使用。 二、隔离级别与锁的关系 在Read Uncommitted级别下,读取数据不需要加共享锁,这样就不会跟被修改的数据上的排他锁冲突 在Read Committed级别下,读操作需要加共享锁,但是在语句执行完以后释放共享锁。 在Repeatable Read级别下,读操作需要加共享锁,但是在事务提交之前并不释放共享锁,也就是必须等待事务执行完毕以后才释放共享锁。 SERIALIZABLE 是限制性最强的隔离级别,因为该级别锁定整个范围的键,并一直持有锁,直到事务完成。 三、按照锁的粒度分数据库锁有哪些? 锁机制与InnoDB锁算法 在关系型数据库中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。 MyISAM和InnoDB存储引擎使用的锁: MyISAM采用表级锁(table-level locking)。 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁。 行级锁,表级锁和页级锁对比

InnoDB / MySQL - new transaction uses old data on SELECT instead of returning updated data

情到浓时终转凉″ 提交于 2021-02-11 17:57:47
问题 Begin transaction Tx1 Tx1 performs a SELECT Commit Tx1 Begin transaction Tx2 in a different session, using a different connection Tx2 performs a SELECT Update rows in Tx2 Commit Tx2 Begin a new transaction, Tx1 Perform select - get results from step 2(??) Commit Tx1 Begin transaction Tx1 Perform select - get CORRECT results, i.e. the committed updates from Tx2 Very confused... How can this happen? It is happening reliably and consistently. 回答1: Turns out this can happen if the transaction

InnoDB / MySQL - new transaction uses old data on SELECT instead of returning updated data

别来无恙 提交于 2021-02-11 17:57:13
问题 Begin transaction Tx1 Tx1 performs a SELECT Commit Tx1 Begin transaction Tx2 in a different session, using a different connection Tx2 performs a SELECT Update rows in Tx2 Commit Tx2 Begin a new transaction, Tx1 Perform select - get results from step 2(??) Commit Tx1 Begin transaction Tx1 Perform select - get CORRECT results, i.e. the committed updates from Tx2 Very confused... How can this happen? It is happening reliably and consistently. 回答1: Turns out this can happen if the transaction

Dynamic form field creation and saving in database php mysql

喜你入骨 提交于 2021-02-11 16:55:08
问题 I am making a medical software and I am stuck at a point. I have to make a report section where user will fill up the reports for the patient. The main catch is since the fields/column is variable(less/more). Say if I fill up form in blood test, columns option are different and for X-ray columns is different. I have made a database so it will store option values for that test id and patient id CREATE TABLE IF NOT EXISTS `mp_tests_options` ( `test_optn_id` int(11) NOT NULL AUTO_INCREMENT,

Java工程师必备书单

会有一股神秘感。 提交于 2021-02-11 13:54:45
本文出自我的公众号:程序员江湖。 江湖路险,你我同行。 Java开发工程师一般负责后端开发,当然也有专门做Java Web的工程师,但是随着前后端的分离,越来越多的Java工程师需要往大后端方向发展。 今天我们就来介绍一下Java后端开发者的书单。 首先要感谢一下江南白衣大大的后端书架,让我在初学阶段读到了很多好书,直到现在都印象深刻。 我在两年的学习历程中看了很多的书,其中不乏XXX入门到精通,XXX王者归来,XXX指南什么的。 虽然这类书确实毛病很多,但是作为非科班的我来说,当时还是看的津津有味。直到后来我看到一些优秀的书籍,以及白衣哥的书架,我才逐渐认识到看一些精品书籍的好处。 所以我们今天就从这些精品书籍中挑选一些优秀书籍来推荐给大家,当然其中有一些书我自己也没有时间看完。 接下来我们按照后端技术栈各个部分的内容来推荐书籍。 网络 1 TCP/IP卷一 这本其实我刚开始没看太懂,可能是当时太水的原因,但是一般是大牛力荐的书。 2 计算机网络:自顶向下 这本从应用层讲到物理层,感觉这种方式学起来更轻松,我比较推荐小白看这本。 3 图解HTTP和图解TCP/IP 相较于前两本大厚书,这两本书更加亲民,小白可以买来看看,还是很适合入门的。 4 计算机网络 没错,就是这本教材,作为非科班选手自己看这本书,那叫一个欲仙欲死啊,看完就忘记了。 操作系统 1 深入理解计算机系统