Redis Source dict.c注释
参考文献
src/dict.c
基于Redis 6.2版本
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 ...
Redis Source - Hash
参考文献
极客时间专栏 <<Redis 源码剖析与实战>> 第三讲 如何实现一个性能优异的Hash表
Hash
源码基于Redis 6.2分支
Redis如何实现链式哈希
什么是哈希冲突?
由于键空间会大于Hash表空间,这就导致在用Hash函数把键映射到Hash表空间时,不可避免地会出现不同的键被映射到数组的同一个位置上.而如果同一个位置只能保存一个键值对,就会导致Hash表保存的数据非常有限,这就是常说的哈希冲突.
如何解决哈希冲突呢?
方案一: 链式哈希
局限: 链式哈希的链不能太长,否则会降低Hash表性能
方案二: 就是当链式哈希的链长达到一定长度时,可以使用rehash
改进方法: 渐进式rehash
结构体
12345678910111213141516171819202122232425262728293031323334353637383940414243444546// src/dict.htypedef struct dict { // 指向 dictType 类型的指针,用于保存字典的类型信息. ...
解决方案-HTML2PDF
参考文献
Flying Saucer
SpringBoot集成文件 - 集成itextpdf之导出PDF
调研历程
首先查阅资料,了解Java中现有PDF的框架
iText:
iText 是一个功能强大的 PDF 处理库,可以用于创建、修改和提取 PDF 文档的内容,支持文本、图像、表格等元素的处理.它提供了丰富的 API,可以满足各种 PDF 处理需求.
Apache PDF Box:
Apache PDF Box 是 Apache 软件基金会的一个开源 Java 库,用于操作 PDF 文档.它支持创建、修改和提取 PDF 文档的内容,以及数字签名和加密等功能.
JFreeReport:
JFreeReport 是一个用于生成报表的 Java 库,它支持创建复杂的、高度定制的报表,包括图表、表格、文本等元素,并且可以将报表输出为 PDF 格式.
PJX:
PJX 是一个用于创建 PDF 文档的 Java 库,它提供了简单易用的 API,可以用来生成包含文本、图像、表格等内容的 PDF 文件.
FOP:
FOP(Formatting Objects P ...
SpringBoot-注解@ConditionalOnXXX
参考文献
@ConditionalOnXXX注解
名称
说明
@ConditionalOnBean
仅仅在当前上下文中存在某个对象,才会实例化一个Bean
@ConditionalOnClass
某个Class位于类路径上,才会实例化一个Bean
@ConditianalOnExpression
当表达式为true的时候,才会实例化一个Bean
@ConditianalOnMissingBean
仅仅在当前上下文不存在某个对象时,才会实例化一个Bean
@ConditianalOnMissingClass
某个Class类路径上不存在的时候,才会实例化一个Bean
@ConditianalOnNotWebApplication
当前项目不是Web应用,才会实例化一个Bean
@ConditianalOnWebApplication
当前项目是一个Web应用,才会实例化一个Bean
@ConditianalOnProperty
当指定的属性有指定的值时,才会实例化一个Bean
@ConditianalOnJava
当JVM版本为指定版本范围是 ...
知识点-网络攻击
参考文献
XSS vs CSRF
Difference between XSS and CSRF
XSS
Cross-site scripting (or XSS) 跨站点脚本
XSS 是 Web 应用程序中发现的计算机安全漏洞,网络犯罪分子可以利用该漏洞将客户端脚本注入用户查看的网页中.网络犯罪分子使受害者的浏览器执行攻击者在访问受信任网站时注入的脚本(主要用 JavaScript 编写).网络犯罪分子可以通过多种方式将 JavaScript 注入受害者信任的网站.它不需要经过身份验证的会话,并且可以在易受攻击的网站不执行验证或转义输入的基本操作时被利用.
CSRF
Cross-site request forgery (or CSRF) 跨站点请求伪造
可以通过多种方式利用它,从在用户不知情的情况下更改用户信息到获得对用户帐户的完全访问权限.网络犯罪分子试图利用现有受害者的上下文(例如 cookie),强迫/诱骗您提出您无意的请求.每次您与网站交互时,其服务器都会检查您随请求发送的 cookie,以便知道是您.
S.No.
XSS
CSRF
1.
XSS ...
Golang
参考文献
https://github.com/gopl-zh/gopl-zh.github.com
命名
Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线.大写字母和小写字母是不同的:heapSort和Heapsort是两个不同的名字.
Go语言中类似if和switch的关键字有25个;关键字不能用于自定义名字,只能在特定语法结构中使用.
12345break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import retu ...
SpringBoot-杂项
参考文献
SpringBoot Jar目录结构
BOOT-INF/classes目录存放应用编译后的class文件
BOOT-INF/lib目录存放应用依赖的JAR包
META-INF/目录存放应用相关的元信息,如MANIFEST.MF文件
org/目录存放SpringBoot相关的class文件
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113.├── BOOT-INF│ ├── classes│ │ ├── application.yaml│ │ └── cn│ │ └── holelin│ │ ├── NiiH ...
Redis-Docker-Cluster模式部署
参考文献
5分钟实现用docker搭建Redis集群模式和哨兵模式
redis.conf配置文件
123456789101112131415161718192021222324252627# 连接端口port 6371# 允许其他机器访问redis服务bind 0.0.0.0# 数据目录dir /data# 日志文件, 默认输出到控制台logfile /logs/nodes-6371.logappendonly yesprotected-mode no# 密码requirepass holelin..# 开启cluster集群模式cluster-enabled yes# 集群配置信息文件名, 记录了每个节点的地址、角色(master/slave)、slot等信息, 由redis自己生成, 位于数据目录下cluster-config-file nodes-6371.conf# 集群节点连接超时时间,每个节点都会检查其它节点是否挂了cluster-node-timeout 5000# 从节点需要配置主节点的密码, 不然主从同步时从节点无法从主节点同步到数据masterauth hole ...
Redis-Docker-Sentinel模式部署
参考文献
配置文件
master配置文件
1234567port 6379bind 0.0.0.0daemonize nopidfile "/var/run/redis_6379.pid"logfile "/usr/local/etc/redis/redis.log"dbfilename "dump_6379.rdb"dir "/usr/local/redis/data"
replication配置文件
1234567891011121314151617port 6380daemonize nopidfile "/var/run/redis.pid"logfile "/usr/local/etc/redis/redis.log"dbfilename "dump.rdb"dir "/usr/local/redis/data"bind 0.0.0.0replicaof 192.168.11.216 6379port 6381daem ...
Redis-Config
参考文献
Redis Config
以下内容拷贝至redis-7.2.4版本的redis.conf
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851 ...