JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范

这篇具有很好参考价值的文章主要介绍了JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

7、【强制】如果存储的字符串长度几乎相等,使用 char定长字符串类型
8、【强制】varchar是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张
表,用主键来对应,避免影响其它字段索引效率。
9、【强制】表必备三字段:id,create_time,update_time.

说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为1。create_time,update_time的类型均为 datetime 类型。

数据的创建时间和数据的修改时间,分别代表这条数据什么时间创建什么时间修改;id是作为数据库一定遵守设计范式第一范式就是必须有主键代表数据的唯一值。

10、【推荐】表的命名最好是遵循“业务名称_表的作用”

正例:alipay_task/force_project/trade_config

11、【推荐】库名与应用名称尽量一致。
12、【推荐】如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释。
13、【推荐】字段允许适当几余,以提尚直间能,但必须考虑数据一致。

冗余字段应遵循

1)不是频繁修改的字段。

2)不是 varchar 超长字段,更不能是 text 字段。

3)不是唯一索引的字段。

正例:商品类目名称使用频率高,字段长度短,名称基本一不变,可在相关联的表中冗余存储类目名称,避免关联查询。

14、【推荐】单表行数超过 500万行或者单表容量超过 2GB,才推荐进行分库分表说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建
表时就分库分表。
15、【参考】合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。

正例:如下表,其中无符号值可以避免误存负数,且扩大了表示范围。

(二)索引规约

1、【强制】业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引

说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外即使在应用层做了非常完善的校验控制,只要没有唯一索引,根

据墨菲定律,必然有脏数据产生。

2、【强制】超过三个表禁止join。需要join 的字段,数据类型必须绝对一致;多表关联查询时,保证被关联的字段需要有索引。

说明:即使双表join 也要注意表索引、SOL性能。

3、【强制)在 varchar字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据 实际文本区分度决定索引长度即可。

说明:索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为20的索引,区分度会高达 90%以上,可以使用 count(distinct left(列名,索引长

度))/count(*)的区分度来确定。

4、【强制】页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决

说明:索引文件具有 B-Tree 的最左前缀匹配特性,如果左边的值未确定,那么无法使用此索引。

5、【推荐】如果有 order by的场景,请注意利用索引的有序性。order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出
现 file_sort 的情况,影响查询性能。

正例:where a=? and b=? order by c;索引:a_b_c

反例:索引如果存在范围查询,那么索引有序性无法利用,如:WHERE a>10 ORDER BY b;索引a_b无法排序。

6、【推荐】利用覆盖索引来进行查询操作,避免回表。

说明:如果一本书需要知道第 11 章是什么标题,会翻开第 11 章对应的那一页吗?目录浏览一下就好,这个目录就是起到覆盖索引的作用。

正例:能够建立索引的种类分为主键索引、唯一索引、普通索引三种,而覆盖索引只是一种查询的一种效果,用 explain 的结果,extra 列会出现:using index。

7.【推荐】利用延迟关联或者子查询优化超多分页场景。

说明:MySOL并不是跳过offset行,而是取 offset+N行,然后返回放弃前 offset行,返回N行,那当offset 特别大的时候,效率就非常的低下,要么控制返回的总页

数,要么对超过特定阈值的页数进行 SOL改写。

正例:先快速定位需要获取的id 段,然后再关联:

SELECT a.*FROM 表1a,(selectid from 表1 where 条件 LMIT 100000,20)b where a.id=b.id

8、【推荐】SQL性能优化的目标:至少要达到 range 级别,要求是ref级别,如果可以是consts最好。

说明:

  1. consts 单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。
  2. ref 指的是使用普通的索引(normal index)。
  3. range 对索引进行范围检索。

反例:explain 表的结果,type=index,索引物理文件全扫描,速度非常慢,这个index 级别比较 range还低,与全表扫描是小巫见大巫。

9、【推荐】建组合索引的时候,区分度最高的在最左边。

正例:如果 where a=?and b=?,如果a列的几乎接近于唯一值,那么只需要单建 idx_a索引即可。

说明:存在非等号和等号混合时,在建索引时,请把等号条件的列前置。如:where c>?and d=?那么即使c的区分度更高,也必须把d放在索引的最前列,即索引idx_d_c。

10、【推荐】防止因字段类型不同造成的隐式转换,导致索引失效。

(三)sql语句

1、【强制】不要使用 count(列名)或 count(常量)来替代 count(),count()是SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL和非 NULL 无
关。

说明:count(*)会统计值为 NULL的行,而 count(列名)不会统计此列为 NULL 值的行。

2、【强制】count(distinct col)计算该列除 NULL之外的不重复行数,注意 count(distinct col1, co12)如果其中一列全为 NULL,那么即使另一列有不同的值,
也返回为 0。
3、【强制】当某一列的值全是NULL时,count(col)的道回结果为 0sum(col)的返回结果为 NULL,因此使用 sum()时需注意 NPE 问题。

正例:使用如下方式来避免 sum 的 NPE问题:SELECT IFNULL(SUM(column),0) FROM table;NPE:NullPointerException 编程语言中的空指针异常。

4、【强制】使用 ISNULL()来判断是否为 NULL值。

说明:NULL与任何值的直接比较都为 NULL。

1)NULL<>NULL的返回结果是 NULL,而不是 false。

2)NULL=NULL的返回结果是 NULL,而不是 true。

3)NULL<>1 的返回结果是 NULL,而不是 true

5、【强制】代码中写分页查询逻辑时,若count为0应直接返回,避免执行后面的分页语句。
6、【强制】不得使用外键与级联,一切外键概念必须在应用层解决。
7、【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移植性,
8、【强制】数据订正(特别是删除、修改记录操作)时,要先select,避免出现误删除,确认无S误才能执行更新语句。
9、【推荐】in 操作能避免则避免,若实在避免不了需要仔细评估 in 后边的集合元素数量,控制在 1000 个之内。

关于in的使用场景,很多人做了测试,结论大概是,需要where in(xxx),in里的数据量多的时候,推荐用exists代替in。可能是阿里数据一般都很多,数据量少in也

没什么性能损耗索性严格要求exists了。

10、【参考】如果有国际化需要,所有的字符存储与表示,均以 utf-8编码,注意字符统计函数 的区别。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全
JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全
JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全
JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全
JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全
JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全

如何自学黑客&网络安全

黑客零基础入门学习路线&规划

初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全

网络安全工程师企业级学习路线

JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的

视频配套资料&国内外网安书籍、文档&工具

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全
一些笔者自己买的、其他平台白嫖不到的视频教程。
JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范,2024年程序员学习,数据库,java,安全

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算文章来源地址https://www.toymoban.com/news/detail-846302.html

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

到了这里,关于JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL——修改数据库和表的字符编码

    修改编码: ( 1) 先停止服务 ( 2 )修改 my.ini 文件 ( 3 )重新启动服务说明: 如果是在修改 my.ini 之前建的库和表,那么库和表的编码还是原来的 Latin1 ,要么删了重建,要么使用 alter 语句修改编码。 mysql create database 0728 db charset Latin1; Query OK, 1 row affected ( 0.00 sec) mysql use

    2024年02月09日
    浏览(37)
  • 【MySQL】关于数据库字符编码以及字符集排序相关知识

    通过设置表的字符集和排序规则,解决MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题。 关于MySQL查询时不区分字母大小写、插入时不支持特殊字符的问题,只有修改表的字符集和排序规则才能根治,而且事半功倍。utf8mb4支持的最低mysql版本为5.5.3+,若不是,请

    2024年02月12日
    浏览(33)
  • 优雅编码!Java与MongoDB的创新数据库架构

    随着现代应用程序对数据存储和处理需求的不断增加,开发人员需要寻找更具创新性和灵活性的数据库架构来满足这些需求。在这样的背景下,Java与MongoDB的结合为开发人员提供了一种创新的数据库架构,为应用程序带来了无限可能。 下面将探讨Java与MongoDB的创新数据库架构

    2024年02月10日
    浏览(31)
  • 设置 MYSQL 数据库编码为 utf8mb4

        utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,java程序中将报SQL异常:     java.sql.SQLException: Incorrect string value: ‘xF0x9Fx92x94’ for co

    2024年02月02日
    浏览(36)
  • 企业级JAVA、数据库等编程规范之命名风格 —— 超详细准确无误

     🧸欢迎来到dream_ready的博客,📜相信你对这两篇博客也感兴趣o (ˉ▽ˉ;) 📜 表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学 📜 用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方

    2024年02月06日
    浏览(43)
  • 数据库编码 问题 mysql 修改字符集为utf8mb4

    数据库编码 问题 mysql 修改字符集为utf8mb4 问题 ; 当向数据库插入表,或者在表中插入数据时,出现 ERROR 1366 (HY000): Incorrect string value: ‘xBDxF0xD3xB9’ for column ‘name’ at row 1 原因 数据库编码方式 和 表编码方式 以及 插入数据(字符串)的编码方式不同 我们可以查看建表,

    2023年04月08日
    浏览(31)
  • MySQL数据库安全与备份

    ✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:MySQL 🥭本文内容:深入理解Java数据结构里面的树。 MySQL是一个非常受欢迎的开源关系数据库管理系统,广泛应用于各种业务和

    2024年02月06日
    浏览(27)
  • Web安全——数据库mysql学习

    1、Web安全——HTML基础 2、Web安全——DIV CSS基础 3、Web安全——JavaScript基础 4、Web安全——PHP基础 5、Web安全——JavaScript基础(加入案例) 6、靶场搭建——搭建pikachu靶场 D:phpStudyMySQLbin 登陆: 输入 mysql -uroot -p -P3306 -h127.0.0.1 退出的三种方法 语法使用: 数据库的登陆: 这里

    2024年02月12日
    浏览(32)
  • MySQL数据库安全配置:如何防范常见的攻击

    MySQL数据库安全性是在网络环境中运行MySQL数据库的关键问题之一。数据库安全性是确保数据完整性、机密性和可用性的过程。MySQL数据库安全性涉及到数据库系统的安全性、数据安全性和系统安全性等方面。 MySQL数据库安全性的主要问题是数据库攻击。数据库攻击是指通过网

    2024年04月12日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包