获得徽章 1
#青训营笔记创作活动#
2月19日 day11
阅读本文我对缓存的各个方面进行了一个简单的阐述与了解,也可以看出缓存对于一个软件系统的重要价值。
2月19日 day11
阅读本文我对缓存的各个方面进行了一个简单的阐述与了解,也可以看出缓存对于一个软件系统的重要价值。
评论
点赞
#青训营笔记创作活动#
2月27日day10
什么是Kafka?
1.消息系统2.存储系统3.流式处理平台
其持久化层本质上是一个"按照分布式事务日志架构的大规模发布/订阅消息队列"
2月27日day10
什么是Kafka?
1.消息系统2.存储系统3.流式处理平台
其持久化层本质上是一个"按照分布式事务日志架构的大规模发布/订阅消息队列"
展开
评论
点赞
#青训营笔记创作活动#
2月16日day9
跨域三种情况:协议不同,如 http 和 https;域名不同;端口不同。
解决跨域问题:
使用 @CrossOrigin 注解实现跨域;
通过配置文件实现跨域;
通过 CorsFilter 对象实现跨域;
通过 Response 对象实现跨域;
通过实现 ResponseBodyAdvice 实现跨域。
2月16日day9
跨域三种情况:协议不同,如 http 和 https;域名不同;端口不同。
解决跨域问题:
使用 @CrossOrigin 注解实现跨域;
通过配置文件实现跨域;
通过 CorsFilter 对象实现跨域;
通过 Response 对象实现跨域;
通过实现 ResponseBodyAdvice 实现跨域。
展开
评论
点赞
#青训营笔记创作活动#
2月25日day8
尽可能使用哈希表(hash 数据结构) :Redis 在储存小于100个字段的Hash结构上,其存储效率是非常高的。所以在不需要集合(set)操作或 list 的push/pop 操作的时候,尽可能使用 hash 结构。
2月25日day8
尽可能使用哈希表(hash 数据结构) :Redis 在储存小于100个字段的Hash结构上,其存储效率是非常高的。所以在不需要集合(set)操作或 list 的push/pop 操作的时候,尽可能使用 hash 结构。
展开
评论
点赞
#青训营笔记创作活动#
2月14日day8 new和make的区别
new:作用是初始化一个指向类型的指针 (*T) 。返回值是指向这个新分配的零值的指针。
make:作用是为 slice,map 或 chan 初始化并返回引用 (T)。返回值是一个类型。
2月14日day8 new和make的区别
new:作用是初始化一个指向类型的指针 (*T) 。返回值是指向这个新分配的零值的指针。
make:作用是为 slice,map 或 chan 初始化并返回引用 (T)。返回值是一个类型。
展开
评论
点赞
#青训营笔记创作活动#
2月13日 day6
允许对值为 nil 的 slice 添加元素,但对值为 nil 的 map 添加元素,则会造成运行时 panic。
错误示范:
var m map[string]int
m["one"] = 1
2月13日 day6
允许对值为 nil 的 slice 添加元素,但对值为 nil 的 map 添加元素,则会造成运行时 panic。
错误示范:
var m map[string]int
m["one"] = 1
展开
评论
点赞
#青训营笔记创作活动#
2月12日 day5
复习一下git
git reset是将之前的提交记录全部抹去,将 HEAD 指向自己重置的提交记录,对应的提交记录都不复存在;
git revert 操作是将选择的某一次提交记录 重做,若之后又有提交,提交记录还存在,只是将指定提交的代码给清除掉。
2月12日 day5
复习一下git
git reset是将之前的提交记录全部抹去,将 HEAD 指向自己重置的提交记录,对应的提交记录都不复存在;
git revert 操作是将选择的某一次提交记录 重做,若之后又有提交,提交记录还存在,只是将指定提交的代码给清除掉。
展开
评论
点赞
#青训营笔记创作活动#
2月11日 day4
通过阅读本文我了解到了 原文^(p*q) mod N = 原文 => 原文^(p) mod N = 密文 , 密文^(q) mod N = 原文
2月11日 day4
通过阅读本文我了解到了 原文^(p*q) mod N = 原文 => 原文^(p) mod N = 密文 , 密文^(q) mod N = 原文
评论
点赞
#青训营笔记创作活动#
2月10日 day3
了解了秒杀场景下是读多写少和预扣库存概念,以及一些可以不仅仅通过后端优化的思路,开发的时候可以尝试多一些产品思维
2月10日 day3
了解了秒杀场景下是读多写少和预扣库存概念,以及一些可以不仅仅通过后端优化的思路,开发的时候可以尝试多一些产品思维
评论
点赞
#青训营笔记创作活动#
2月9日day2
Mysql 的表数据是以页的形式存放的,页在磁盘中不一定是连续的。
页的空间是 16K, 并不是所有的空间都是用来存放数据的,会有一些固定的信息,如,页头,页尾,页码,校验码等等。
2月9日day2
Mysql 的表数据是以页的形式存放的,页在磁盘中不一定是连续的。
页的空间是 16K, 并不是所有的空间都是用来存放数据的,会有一些固定的信息,如,页头,页尾,页码,校验码等等。
展开
评论
点赞
#青训营笔记创作活动#
2月9日day26
Mysql 的表数据是以页的形式存放的,页在磁盘中不一定是连续的。
页的空间是 16K, 并不是所有的空间都是用来存放数据的,会有一些固定的信息,如,页头,页尾,页码,校验码等等。
2月9日day26
Mysql 的表数据是以页的形式存放的,页在磁盘中不一定是连续的。
页的空间是 16K, 并不是所有的空间都是用来存放数据的,会有一些固定的信息,如,页头,页尾,页码,校验码等等。
展开
评论
点赞
#青训营笔记创作活动#
2月7日day25
zerolog配置日志
var loggers = make(map[string]zerolog.Logger)
func Zerolog(names ...string) {
_, f, _, _ := runtime.Caller(0)
split := strings.Split(f, "conf")
for _, name := range names {
logName := name + ".log"
openFile, err := os.OpenFile(filepath.Join(split[0], "logs", logName), os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModeAppend|os.ModePerm)
if err != nil {
log.Err(err).Send()
}
loggers[name] = zerolog.New(openFile).With().Timestamp().Logger()
}
}
func Logger(name string) *zerolog.Logger {
instance := loggers[name]
return &instance
}
2月7日day25
zerolog配置日志
var loggers = make(map[string]zerolog.Logger)
func Zerolog(names ...string) {
_, f, _, _ := runtime.Caller(0)
split := strings.Split(f, "conf")
for _, name := range names {
logName := name + ".log"
openFile, err := os.OpenFile(filepath.Join(split[0], "logs", logName), os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModeAppend|os.ModePerm)
if err != nil {
log.Err(err).Send()
}
loggers[name] = zerolog.New(openFile).With().Timestamp().Logger()
}
}
func Logger(name string) *zerolog.Logger {
instance := loggers[name]
return &instance
}
展开
评论
点赞
#青训营笔记创作活动#
2月6日day24
断点设置相关经验:
1.只有满足某些条件才会进入断点
2.Debug断点只生效一次,同时不阻塞系统
3.静态断点,只是想看程序会不会运行到这里来(类似于动态日志)
调试相关经验
1.中断后续执行链路
2.调试Strem流
3.断点的时候运行一些额外代码
2月6日day24
断点设置相关经验:
1.只有满足某些条件才会进入断点
2.Debug断点只生效一次,同时不阻塞系统
3.静态断点,只是想看程序会不会运行到这里来(类似于动态日志)
调试相关经验
1.中断后续执行链路
2.调试Strem流
3.断点的时候运行一些额外代码
展开
评论
点赞
#青训营笔记创作活动#
2月5日day23
1.注释尽可能全面,写有意义的方法注释
2.项目拆分合理的目录结构
3. 不在循环里远程调用、或者数据库操作,优先考虑批量进行。
4. 封装方法形参
5. 封装通用模板
6. 封装复杂的逻辑判断条件
2月5日day23
1.注释尽可能全面,写有意义的方法注释
2.项目拆分合理的目录结构
3. 不在循环里远程调用、或者数据库操作,优先考虑批量进行。
4. 封装方法形参
5. 封装通用模板
6. 封装复杂的逻辑判断条件
展开
评论
点赞
#青训营笔记创作活动#
2月4日day22
HTTP首部字段结构
例如,在 HTTP 首部中以 Content-Type 这个字段来表示报文主体的对象类型。
HTTP 首部字段根据实际用途被分为以下 4 种类型。
通用首部字段(General Header Fields): 请求报文和响应报文两方都会使用的首部。
请求首部字段(Request Header Fields):从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信信息、响应内容相关优先级等信息。
响应首部字段(Response Header Fields):从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部字段(Entity Header Fields):针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
2月4日day22
HTTP首部字段结构
例如,在 HTTP 首部中以 Content-Type 这个字段来表示报文主体的对象类型。
HTTP 首部字段根据实际用途被分为以下 4 种类型。
通用首部字段(General Header Fields): 请求报文和响应报文两方都会使用的首部。
请求首部字段(Request Header Fields):从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信信息、响应内容相关优先级等信息。
响应首部字段(Response Header Fields):从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部字段(Entity Header Fields):针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
展开
评论
点赞
#青训营笔记创作活动#
2月2日day21
1、console.log 用于输出普通信息
2、console.info 用于输出提示性信息
3、console.error用于输出错误信息
4、console.warn用于输出警示信息
5、console.debug用于输出调试信息
2月2日day21
1、console.log 用于输出普通信息
2、console.info 用于输出提示性信息
3、console.error用于输出错误信息
4、console.warn用于输出警示信息
5、console.debug用于输出调试信息
展开
评论
点赞