Shi Hai's Blog

随遇而安

图数据库

一、图数据库 1.1 图数据库存在的意义 关系模型的设计目标之一是能快速执行数据的按行访问,但当遇到多表关联查询时就会变得非常复杂。和关系型数据库相比,图数据库模型能更好的直接映射至面向对象的应用程序,并且对对象关联关系查询的速度更快。 1.2 各类图数据库 各类图数据库的排名可以参考此链接,评分由网上的各类讨论计算得出。github上的图数据库主题的关注趋势可以点此链接查看。 二、neo4...

golang 结构体指针使用

一、指针 1.1 基本概念 go语言中指针定义和c语言中的指针定义和使用没有太大区别,一个有效的go语言指针定义: var ip *int var fp *float32 1.2 在结构体中使用指针 type Employee struct { FirstName *string Salary *int } func (e Employee) Set...

Linux终端基础命令

一、tmux 新建会话:tmux new -s 使用会话:tmux attach -t Ctrl+b d:脱离当前会话 Ctrl+b ?:进入tmux帮助文档 跨pane进行复制黏贴:用Ctrl+b [进入拷贝模式,按住space然后配合方向键进行文本拷贝,按enter建完成拷贝,到目标面板,按Ctrl+b ]完成复制输出 杀死会话:tmux kill-session -t 刷新tm...

CloudNative Pack项目典型实现代码走读

Pack代码仓地址:https://github.com/buildpacks/pack 过程性内容走读流水账记录,慢慢看,慢慢学,慢慢进步 一、整体逻辑 TODO 1.1 client初始化 Client是Pack项目中所有构建任务的集成对象,相关命令行的触发最后均有Client实例进行,而传递的行为则由PackClient接口进行设计和约束,代码实现目录在pkg/client。 设计...

Terraform Provider如何解析.tf文件

一、背景介绍 对于一个Terraform文件(.tf),相关providers是如何对资源Resource结构进行管理、资源映射到代码和最终应用?如下方的k8s provider创建kubernetes_cluster_role的实例,是如何解析k8s资源信息? resource "kubernetes_cluster_role" "example" ...

2022年软件工程洞察

兼听则明,偏信则暗。 一、背景介绍 对google、amazon、microsoft等大厂软件工程能力的发展洞察看看是否有最新的理论、技术创新。 二、洞察内容 2.1 零信任架构(Zero trust architecture, ZTA) 企业过度依赖“安全”的网络边界会导致安全性收到严重损害。一旦外部边界被攻破,内部系统就会变得欠缺保护。 零信任是一种设计安全防护架构的方法,它的核心思...

Terraform format介绍

一、背景介绍 Terraform使用文本文件描述基础设施和设置变量,这些文件被称为Terraform配置文件。Terraform配置文件主要有两种格式:Terraform格式(.tf)和JSON格式(.tf.json)。Terraform配置文件主要由Providers、Resources、Data Sources和Variables组成。 二、格式介绍 2.1 Providers、Reso...

《社会心理学》阅读随笔

对自己有用的观点: 自视甚高(根本原因了解自己胜过他人) 过于乐观 简单易得性倾向 基本归因错误(自己对外部环境做判断,对他人评价看不见他人面对的外部环境) 人类思考有限性 第二章 社会中的自我 自我服务偏差:个体倾向于有利于自身的方式来进行自我知觉。 对积极和消极事件的解释:把成功归结为自己的才能和努力,却把失败归咎于诸如“运气不佳”,“问题本身就无法解决”等这样的外部因素。进行自...

python set用法解析

一、Set介绍 Set是一个没有重复元素的无序集合。 二、创建Set集合的若干方式 2.1 通过大括号创建Set 通过大括号可以创建出一个set实例,但要注意的是如果没有集合元素,则my_set = {}是一个空的字典实例。 my_set = {'a', 'b', 'c'} my_set = {c for c in 'abracadabra' if c not in 'abc'} 2.2 ...

多线程调用sqlalchemy内存占用高

一、问题背景 服务组件中有多线程对数据库进行查询操作,当数据表数据规模超过10K+以上,会发现多线程通过sqlalchemy进行查询结束后的服务进程内存占用一直较高无法对使用内存进行回收。 二、问题分析及定位 2.1 问题触发代码和执行 能触发多线程调用sqlalchemy内存占用持续走高的代码如下所示,数据库表可以连接自己的数据库服务,为了更好观测内存占比走高的情况,表内数据建议超过10K...