获得徽章 1
- #青训营笔记创作活动#
2月7日 打卡day22
今日学习
1. 应对高并发场景的办法
🎆 页面静态化
🎆 CDN加速
🎆 负载均衡
🎆 防重
🎆 缓存
🎆 异步
🎆 熔断、限流
🎆 分布式锁🏫 总结:分层过滤,分而治之
展开评论点赞 - #青训营笔记创作活动#
2月6日 打卡day21
今日学习
1. 允许对值为 nil 的 slice 添加元素,但对值为 nil 的 map 添加元素,则会造成运行时 panic。
2. 当访问 map 中不存在的 key 时,Go 则会返回元素对应数据类型的零值,比如 nil、’’ 、false 和 0,取值操作总有值返回,故不能通过取出来的值,来判断 key 是不是在 map 中。
检查 key 是否存在可以用 map 直接访问,检查返回的第二个参数即可。
3. String 类型的值不能直接修改,可以转为字节数组再修改
4. switch 强制从一个 case 走到下一个 case ,用 fallthrough
5. defer:关闭HTTP的响应体
6. 如何关闭 http 连接
🤠 设置请求变量的 Close 值为 true,设置 Header 请求头部选项 Connection: close,然后服务器返回的响应头部也会有这个选项,此时 HTTP 标准库会主动断开连接
🤠 可以创建一个自定义配置的 HTTP transport 客户端,用来取消 HTTP 全局的复用连接。
7. 解析 JSON 数据时,默认将数值当作 float64 处理
8. 简短声明的变量
🤠 只能再函数内部使用
🤠 struct 的变量字段不能使用 := 来赋值
🤠 不能用简短声明方式来单独为一个变量重复声明, := 左侧至少有一个新变量,才允许多变量的重复声明
9. range 迭代 map 是无序
10. recover 必须在 defer 函数中直接调用才有效展开评论点赞 - #青训营笔记创作活动#
2月5日 打卡day20
今日学习
🤠 Key Promoter X
Key Promoter X 是一款帮助你快速学习IDEA快捷键的插件,当你在IDEA中用鼠标点击某些功能时,它会自动提示你使用该功能的快捷键。它能让你更轻松地摆脱使用鼠标功能,从而只使用键盘来开发,这大概是刚开始使用IDEA的程序员最需要的插件了。
🤠 Lombok
Lombok目前已经是开发Java应用的标配了,不仅SpringBoot默认支持它,连IDEA也内置了Lombok插件,无需安装即可使用。Lombok是一款Java代码功能增强库,通过Lombok的注解,你可以不用再写getter、setter、equals等方法,Lombok将在编译时为你自动生成。展开评论点赞 - #青训营笔记创作活动#
2月4日 打卡day19
一、 redis 是一款缓存中间件,是一个开源的、键值对型的数据存储系统。
二、Redis 的优缺点
🤠 优点
完全基于内存操作,性能极高,读写速度快,Redis 能够支持超过 100KB/s 的读写速率
支持高并发,支持10万级别的并发读写
支持主从模式,支持读写分离与分布式
具有丰富的数据类型与丰富的特性(发布订阅模式)
支持持久化操作,不会丢失数据
🤠 缺点
数据库容量受到物理内存的限制,不能实现海量数据的高性能读写
相比关系型数据库,不支持复杂逻辑查询,且存储结构相对简单
虽然提供持久化能力,但实际更多是一个 disk-backed 功能,与传统意义上的持久化有所区别
三、Memcache 与 Redis 的区别
🤠 数据类型:Memcache 仅支持字符串类型,Redis 支持 5 种不同的数据类型
🤠 数据持久化:Memcache 不支持持久化,Redis 支持两种持久化策略,RDB 快照 和 AOF 日志
🤠 分布式:Memcache 不支持分布式,只能在客户端使用一致性哈希的方式来实现分布式存储,Redis3.0 之后可在服务端构建分布式存储,Redis集群没有中心节点,各个节点地位平等,具有线性可伸缩的功能。
🤠 内存管理机制:Memcache数据量不能超出系统内存,但可以调整内存大小,淘汰策略采用LRU算法。Redis增加了 VM 特性,实现了物理内存的限制,它们之间底层实现方式以及客户端之间通信的应用协议不一样。
🤠 数据大小限制:Memcache 单个 key-value 大小有限制,一个Value最大容量为 1MB,Redis 最大容量为512 MB展开评论点赞 - #青训营笔记创作活动#
2月3日 打卡day18
今日学习
🤠 凡事有利必有弊
🤠 索引的优点
①整个数据库中,数据表的查询速度直线提升,数据量越大时效果越明显。
②通过创建唯一索引,可以确保数据表中的数据唯一性,无需额外建立唯一约束。
③在使用分组和排序时,同样可以显著减少SQL查询的分组和排序的时间。
④连表查询时,基于主外键字段上建立索引,可以带来十分明显的性能提升。
⑤索引默认是B+Tree有序结构,基于索引字段做范围查询时,效率会明显提高。
⑥从MySQL整体架构而言,减少了查询SQL的执行时间,提高了数据库整体吞吐量。
🤠 缺点
①建立索引会生成本地磁盘文件,需要额外的空间存储索引数据,磁盘占用率会变高。
②写入数据时,需要额外维护索引结构,增、删、改数据时,都需要额外操作索引。
③写入数据时维护索引需要额外的时间开销,执行写SQL时效率会降低,性能会下降。展开评论点赞 - #青训营笔记创作活动#
2月2日 打卡day17
今日学习
1. SQL 的诞生
🥞 相关的ORM框架自动生成(大部分)
🥞 开发者自己手动编写
2. 连接池
🥞 MySQL 连接池(工作线程):实现复用线程的目的
🥞 客户端连接池(网络连接):实现复用数据库连接的目的展开评论点赞 - #青训营笔记创作活动#
2月1日 打卡day16
今日学习天不生我MySql,编程万古如长夜
1. 层次结构连接层:主要是数据库连接池,会负责处理所有客户端接入的工作
服务层:主要包含 SQL 接口、解析器、优化器以及缓冲缓存区四块区域
存储引擎层:主要指 MySQL 支持的各大存储引擎,如 InnoDB、MyISAM 等
客户端
2. 网络连接层MySQL 连接一般基于 TCP/IP 协议进行建立网络连接
工作模式:
① 全双工:双方可在同一时间内,接受、发送数据
② 半双工:同一时刻,要么只能发送数据,要么只能接受数据
③ 单工:当前连接只能发送数据或只能接收数据(单类型通道)展开评论点赞 - #青训营笔记创作活动#
1月31日 打卡day15
今日学习
1. Git 分为四个区
✨ 工作区(workspace):值在本地仓库中的全部代码区域
✨ 暂存区(index):指在本地仓库中通过 git add 后的代码区域
✨ 本地仓库(repository):指在本地仓库中 git commit 后的代码区域
✨ 远程仓库(remote):指托管代码的服务器
2. 常用指令
✨ git clone:用于将存储库克隆到本地
✨ git init:用于在目录中创建新的 Git 仓库
✨ git remote:用于管理和跟踪远程仓库
✨ git checkout:用于切换分支
✨ git branch:用于查看、创建、删除分支
✨ git tag:用于创建、删除、查看标签
✨ git add:用于将本地文件添加到暂存区
✨ git commit:用于将暂存区内容添加到本地仓库
✨ git push:用于将本地分支推送到远程仓库
✨ git pull:用于从远程仓库拉取代码并合并到本地当前分支
✨ git fetch:用于从远程获取代码库
✨ git cherry-pick:用于获取指定的 commit ,可以将分支 a 上 的 commit 1,复制到分支 b 上
✨ git merge:用于合并分支,将其他分支的内容合并到当前分支中
✨ git rebase:用于分支变基
✨ git reset:用于回退版本,可以指定退回某一次提交的版本
✨ git revert:用于回滚提交,可以回滚某一次提交记录
✨ git stash:用于暂存文件、
✨ git reflog:记录了所有的 commit 操作记录,便于错误操作后返回
✨ git rm:用于从 git 仓库删除指定的文件或目录
✨ git log:用于查看 git commit 记录展开评论点赞 - #青训营笔记创作活动#
1月10日 打卡day14
今日学习
1. console.log
🐷 变量输出(多变量格式化)
2. cosole.warn
🐷 输出警告信息
3. console.error
🐷 输出错误信息
4. console.time 和 console.tineEnd
🐷 一般配合使用,计算代码段的执行时间
5. console.assert
🐷 用于判空和false逻辑
6. console.dir
🐷 输出 DOM 节点对应的 json 对象反射
6. console.table
🐷 可以将数组或类数组的对象打印成一个表格
7. console.$i🏫 需要扩展程序 Console Importer 作为辅助工具‘
🐷 可以让我们在 dectool 开发者工具 直接使用 npm 包展开评论点赞 - #青训营笔记创作活动#
1月29日 打卡day13
今日学习
1. position : sticky
✨ 实现顶部标题栏(导航栏)的固定
2. : empty 选择器 (注意冒号)
✨ 选中内容为空的容器
3. gap
✨ 间隙
4. background-clip: text
✨ 带背景的文字效果
5. user-select
✨ 光标选中展开评论点赞