2021.11-12月 SQL、前端、Java文章学习及资源记录
2021.11-12月 SQL、前端、Java文章学习及资源记录
一、前言
可能是最近忙着写bug,没怎么腾出空来去学某一件新东西。自己也挤不出来一些内容,但是最近也是代码上手的机会多了,很多以前会的不熟悉的,不会的都得到了一个重识它们的机会。实践很锻炼人,并且很容易找出自己不足的地方。个人觉得实践的理解比较深,所以我感觉学一个新东西就应该照着入门文档自己去实现一遍这比看文档来的实在。
这一两个月,平时虽然没有学新东西,但是至少自己还是有点收获的,毕竟温故而知新,其实平时也有很多点去记录,但是最后发现,这些小点就打在自己的云笔记上比较方便,博客的话还是以一段时间的总结为主。
(真希望学Python、人工智能、大数据的人越来越多,然后忽略java,hahahaha,开个玩笑)
如果你现在正在看这篇记录,希望你也更加积极乐观,找寻更美好的事物,学有所成!
二、总结(个人)
在这记录一次,打个标记,虽然云笔记也很好,但有的东西总有它的作用范围,博客的话,首先自己可以全揽一遍自己最近所学,而且也更好给别人分享。
关于SQL
1、SQL教程
W3cschool上的教程还是比较简洁明了的
2、MyBatis动态SQL
文档首页:https://mybatis.org/mybatis-3/zh/index.html ,还是比较经典吧!
【参考性文章】
微信公众号推文:MyBatis 动态 SQL(认真看看, 以后写 SQL 就爽多了)
简书:强大的动态SQL
CSDN:MyBatis——动态SQL的四个常用标签(<if>、<where>、<foreach>、<sql>)
(虽然CSDN是烂,但感觉想程序届的百度吧,资源还是挺多的,就是不太尊重原创)
3、MyBatis-Plus条件构造器
也是发现前天网站改样式了,感觉还是很不错的阅读体验
4、为什么要用小表驱动大表
1、驱动表的定义
当进行多表连接查询时, [驱动表] 的定义为:
i)指定了联接条件时,满足查询条件的记录行数少的表为[驱动表]
ii)未指定联接条件时,行数少的表为[驱动表](Important!)
忠告:如果你搞不清楚该让谁做驱动表、谁 join 谁,请让 MySQL 运行时自行判断
既然“未指定联接条件时,行数少的表为[驱动表]”了,而且你也对自己写出的复杂的 Nested Loop Join 不太有把握(如下面的实例所示),就别指定谁 left/right join 谁了,请交给 MySQL优化器 运行时决定吧。
如果您对自己特别有信心
2、mysql关联查询的概念:
MySQL 表关联的算法是 Nest Loop Join,是通过驱动表的结果集作为循环基础数据,然后一条一条地通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。
例: user表10000条数据,class表20条数据
select * from user u left join class c u.userid=c.userid
这样则需要用user表循环10000次才能查询出来,而如果用class表驱动user表则只需要循环20次就能查询出来
例:
select * from class c left join user u c.userid=u.userid
小结果集驱动大结果集
de.cel 在2012年总结说,不管是你,还是 MySQL,优化的目标是尽可能减少JOIN中Nested Loop的循环次数。
以此保证:永远用小结果集驱动大结果集(Important)
小点:
1、left join选择小表作为驱动表(这部分基本是大家的共识)
2、如果左表比较大,并且业务要求驱动表必须是左表,那么我们可以通过where条件语句,使得左表被过滤的小一些,主要原理和第一条类似
3、关联字段给索引,因为在mysql的嵌套循环算法中,是通过关联字段进行关联,并查询的,所以给关联字段索引很必要
4、如果sql里面有排序,请给排序字段加上索引,不然会造成排序使用全表扫描
参考:https://www.oschina.net/question/930697_2190172
5、如果where条件中含有右表的非空条件(除开is null),则left join语句等同于join语句,可直接改写成join语句。
6、根据文档,MySQL能更高效地在声明具有相同类型和尺寸的列上使用索引。所以把表与表之间的关联字段给上encoding和collation(决定字符比较的规则)全部改成统一的类型
7、右表的条件列一定要加上索引(主键、唯一索引、前缀索引等),最好能够使type达到range及以上(ref,eq_ref,const,system)
5、SQL优化
【参考性文章】
CSDN:SQL中的三种去重方法
微信公众号推文:
搞懂 MySQL Explain 命令之前不要说自己会SQL优化
纳尼?MySQL 中 count(*) 比 count(1) 快?
博客园:SQL语句性能优化
博客园:写一手好SQL很有必要
这里给大家总结一下SQL优化的套路:
查看执行计划 explain sql
如果有告警信息,查看告警信息 show warnings;
查看SQL涉及的表结构和索引信息
根据执行计划,思考可能的优化点
按照可能的优化点执行表结构变更、增加索引、SQL改写等操作
查看优化后的执行时间和执行计划
如果优化效果不明显,重复第四步操作
CSDN一篇SQL获取日期的操作:sql 语句查询今天、昨天、近7天、近30天、一个月内、上一月 数据
腾讯云:各类SQL日期时间的处理方法
想法:SQL和Java真的是后端吃饭的饭碗,这两个东西是真的要好好学习一下,感觉自己还是跟个小菜鸡一样在门外徘徊。
关于Java
1、大佬博客
2、Stream
3、List集合
4、一些看过的文章
【参考性文章】
jenkins流水线实操:水哥公众号的文章是真不“水”,很补“水”
深入理解final:前两天入驻了51CTO,然后看到的一篇文章
你管这破玩意叫Token:微信公众号的推文
接口性能优化的11个小技巧,这也太实用了叭! :来自“苏三说技术”微信公众号
- PV/UV
PV(page view,页面浏览量)
用户每打开1个网站页面,记录1个PV。用户多次打开同一页面,PV值累计多次。主要用来衡量网站用户访问的网页数量。是评价网站流量最常用的指标之一。
UV( unique visitor,网站独立访客)
通过互联网访问、流量网站的自然人。1天内相同访客多次访问网站,只计算为1个独立访客。该概念的引入,是从用户个体的角度对访问数据进行划分。
IP(独立IP)
1天之内(00:00~24:00),访问网站的不重复的IP数。拥有特定唯一IP的计算机访问网站的次数,因为这种统计方式比较容易实现,具有较高的真实性。
VV(video view,视频播放量)
一个统计周期内,视频被打开的次数。
CV(Content Views,内容播放数)
一个统计周期内,视频被打开,且视频正片内容(除广告)被成功播放的次数。
这些概念都是在数据分析中使用,用于数据统计和用户分析。VV和CV属于播放类指标,PV、UV、IP属于浏览类指标。
针对不同行业和不同产品形态,都可以参考以上概念进行特定行业内数据设定和统计,对数据统计和用户分析具有重要意义。
P.S.
*Cover Photo by Litost-leona on Lofter
本系列由 @西禅 原创发布,转载请注明出处,谢谢。
关于前端
【参考性文章】
1、前端鉴权的兄弟们:cookie、session、token、jwt、单点登录
GitHub小工具
1、开源项目CAJ转PDF Python
2、kexue上网
3、构建文档型网站
网站资源
1、导航类
2、编程工具类
JSON格式化 :和上面时间戳那个网站差不多类型,就是平时用的较多
WRITE-Bug :这个类似github,网站目前在测试阶段,而且免费,不知道后期会不会收费,里面的代码做个课设足够了。
3、分享类
最后
前天注册的个人51CTO博客主页:https://blog.51cto.com/yuyueq
可能有时候也会在上面记录,不过大部分都是博客园迁移过去的
改日再见,“人生得意须尽欢,莫使金樽空对月”
分享张高清图,总共4.66MB
警言: 无论人生上到哪一层台阶,阶下有人在仰望你,阶上亦有人在俯视你。你抬头自卑,低头自得,唯有平视,才能看见真实的自己。
转载请注明原文链接:https://www.cnblogs.com/yuyueq/p/15702744.html
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢你的支持!