深入理解SQL注入与预编译
前言
SQL注入是Web安全界地位很高的一个漏洞,它把矛头对准网站最为重要的数据库,利用成本低而危害巨大。若说一个普通开发人员有那么点儿安全意识,那一定和SQL注入有关。如今随着Web安全逐渐被重视,大家安全意识提升,同时各种预编译框架、ORM层出不穷,SQL注入已不像10年前那么泛滥,那么SQL注入的前世今生是怎样的?在这个预编译时代,SQL注入为何仍未销声匿迹?而预编译的底层又有哪些细节需要安全工程师知晓?这将是本文所重点探究之处。
SQL注入是Web安全界地位很高的一个漏洞,它把矛头对准网站最为重要的数据库,利用成本低而危害巨大。若说一个普通开发人员有那么点儿安全意识,那一定和SQL注入有关。如今随着Web安全逐渐被重视,大家安全意识提升,同时各种预编译框架、ORM层出不穷,SQL注入已不像10年前那么泛滥,那么SQL注入的前世今生是怎样的?在这个预编译时代,SQL注入为何仍未销声匿迹?而预编译的底层又有哪些细节需要安全工程师知晓?这将是本文所重点探究之处。
需求:统计表中连续超过3天都提交了任务的用户名SELECT rn AS '连续提交任务天数', submit_creator AS '提交人' FROM
(
SELECT
@rn:= CASE
-- 当前记录的用户名等于上一条记录的用户名 AND 当前记录的日期与上一条记录的日期之差为1
WHEN @pre_submit_creator=creator AND DATEDIFF(@pre_submit_date,submit_date) = 1
THEN @rn + 1
ELSE 1 END AS rn,
@pre_submit_date:=submit_date AS submit_date,
@pre_submit_creator:=creator AS submit_creator
FROM
(
-- 日期降序并去重
SELECT DISTINCT DATE(gmt_create) AS submit_date, creator FROM task_log
ORDER BY DATE(gmt_create) DESC
) AS log,
(SELECT @rn=0, @submit_creator=null, @submit_date=null) AS b
) log
where rn >= 3;
OK,如果你还在为并发(concurrency)和并行(parallelism)这两个词的区别而感到困扰,那么这篇文章就是写给你看的。搞这种词语辨析到底有什么意义?其实没什么意义,但是有太多人在混用错用这两个词(比如遇到的某门课的老师)。不论中文圈还是英文圈,即使已经有数不清的文章在讨论并行 vs 并发,却极少有能讲清楚的。让一个讲不清楚的人来解释,比不解释更可怕。比如我随便找了个网上的解释:
前者是逻辑上的同时发生(simultaneous),而后者是物理上的同时发生.
并发性 (concurrency),又称共行性,是指能处理多个同时性活动的能力,并发事件之间不一定要同一时刻发生。
并行 (parallelism) 是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行。
来个比喻:并发和并行的区别就是一个人同时吃三个馒头和三个人同时吃三个馒头。
看了之后,你懂了么?不懂,更晕了。写出这类解释的人,自己也是一知半解,却又把自己脑子里模糊的影像拿出来写成文章,让读者阅毕反而更加疑惑。当然也有可能他确实懂了,但是写出这种文字也不能算负责。至于本文,请相信,一定是准确的,我也尽量做到讲解清晰。
OK,下面进入正题,concurrency vs parallelism
本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。
要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程。本文将以一个网上超市应用为例来说明这一过程。
Flexbox 布局 已是目前最为流行的 Web 布局方式之一,它给 Web 开发者在完成页面或组件的 UI 布局带来了极大的灵活性和便利性。但也是因为它有极大的灵活性,里面隐藏了一些不为人知的细节,如果不是对 Flexbox 极为熟悉或者对其规范极为了解的话,其中有很多细节将会被遗漏,而这些细节又会让你在使用的感到困惑,甚至是带来一定的麻烦。
这次在优化 imgcook 的 Flexbox 布局时,重新阅读了一次 Flexbox 的规范,发现自己曾忽略了部分重要信息。为此在这篇文章中,将 Flexbox 布局,CSS 的书写模式,逻辑属性,对齐方式结合在一起整理了一篇笔记,希望对于想了解或使用 Flexbox 碰到痛楚的同学有所帮助。