浅谈 Redis 中间件 本博客主要是总结自己学习 Redis 中间件的经验,教程来源于 b站狂神说 Java 的 Redis 教程 Redis 概念1、Redis 是基于计算机内存的数据库,一般称为缓存数据库,由于没有固定的表结构与关系,也叫 NoSQL(Not Only SQL)数据库。 2、为什么要使用 Redis: 数据的爆发增长 没有固定关系的数据 3、最新的版本中,官方不建议直接在 win 上直接使用 2022-03-18 middleware #redis
开源的思考 本人曾经的职业规划是,在读研后学习 NLP、CV 等领域的算法论文,而后向着算法工程师的方向进行努力。而近几年的考研难度以及行业的形式导致自己的期待与期望成了泡沫: 不读 985/211,算法工程师基本做不了考研热门程度异常火爆,为什么考研的想法越来越困扰自己所以说,在二战也未能达到名校的分数线后,自己毅然决定,不调剂,投入社会进行学习与工作。 但是困扰自己的问题出现了,学习什么样的技术 2022-03-16 go #Go #open-source
2022 年 11 周总结 上一周没怎么写博客,第一个是杂事比较多,理论方向的学习偏少;第二是跟大佬交流,发现自己存在找原因性的思维方式,需要转变自己的思维。因此,一段时间写一次总结性的博客是很有必要的。 关于求职大佬提醒我,要建立模板化、模块化的求职思路,如面试之前需要搜集相关的资料,主要关注以下四点: 1、公司的名称 2、公司的核心产品 3、公司产品的主要受众人群 4、公司招聘的岗位职责、经营状况、真实业务需求 2022-03-14 summary #2022
Go 语言中的 sync.Mutex 学习 极客时间专栏,鸟窝大佬的 Go 并发编程课程,由于大佬的课程十分精彩,领悟需要时间与精力!所以再次本文仅仅只能作为知识总结,相应具体内容与源码分析请去极客时间上购买大佬相应的课程! MutexGo 语言中的 sync 包的 mutex 的设计,有四个演变阶段。 1、初版的 Mutex 采用一个 flag 表示锁是否被持有,实现比较简单 2、之后为了照顾新来的 Goroutine(下文简称 G 2022-03-06 go #Go #sync
Go 学习方向 通过几次面试,来总结一些现在阶段,对于自己的职业规划的发展与思考! 经历了三四次面试,收获挺大的。面试不是目的,只是一种过程,要在不断的面试中,找到适合自己发展的领域才是面试的目的! 现阶段发展的方向首先,Go 语言的云原生跟云中间件发展是非常迅速的,而且 Go 语言社区中,讨论最多的也是云计算的发展,docker、K8S集群、普罗米修斯,都是云中间件的代表,所以去学习其中设计的思想、源码的思 2022-03-04 go #Go #Direction
Golang 垃圾回收机制 学习 Go 语言中的各个版本的垃圾回收的机制。 Go V1.3 版本之前的标记清除(mark and sweep)此版本的垃圾回收机制,一般分为以下四步: 1、暂停程序业务逻辑,找出不可达的对象以及可达的对象 2、开始标记,程序找出其所有可达的对象,并进行标记 3、标记完之后,开始清除未标记的对象 4、继续运行程序。循环以上的过程,直到程序的生命周期终止为止 但是相应的,V1.3 版本中的 2022-03-01 go #Go #GC
GMP 模型分析 关于 GMP 模型的一些理解,G 为 goroutine, M 为 thread(内核级线程)、P 为 Processor(处理器)。 Golang 早期调度器的由来在讲述早期调度器之前,让我们先聊一下早期的操作系统。 在没有多核 CPU 之前,操作系统以单进程的任务执行,计算机只能一个任务一个任务地完整执行。在此情况下,操作系统不仅存在工作效率低下的问题,而且一旦正在执行的任务被阻塞时,CPU 2022-02-24 go #Go #GMP
Go web 的相关知识复习 开始动手学习一些框架的基本样例,抛开学习底层的设计不谈,主要还是参考文档进行相应的组件开发。参考文档见文末 Beego 与 gin首先学习框架之前,需要我们理解一个道理,学习框架的目的首先是适应业务场景的需要,其次是分为两种大类:一种是为了开发效率,另一种是为了追求运行的性能。 追求运行性能的框架包含的东西挺多,比如 GIN,另一种追求开发效率的框架封装得非常好,即是 Beego 框架。 路由 2022-02-22 go #Go #gin
MySQL 与 SQL 复习 轻量化复盘一下 sql 操作,以及 MySQL SELECT 语句数据查询是关系运算理论在 SQL 语言中的主要体现。SQL 的数据查询只有一条 SELECT 语句,其使用最广泛。一个完整的 SELECT 语句包含了六个子句,前两个子句是必备的,其他子句可以省略 12345678910111213SELECT 完整格式:SELECT [DISTINCT] 目标列名序列 ------ 查看的列 2022-02-19 middleware #middleware #mysql #sql
Go 基础知识点自我总结 tips: 总结知识点一定要自己动手,这样知识点才能牢记! 比如开源社区有雨痕大佬的 Go 语言笔记,但是光看几个用法,而不进行代码的编写,代码能力提升不明显,能看懂,但是做不到,形成一种眼高手低的习惯。更何况,以后的工作本来就是写需求的代码,所以,各种基础知识点,快速过完! 保留字与预定义字1234567891011121314151617181920//保留字有 25 个break co 2022-02-13 go #Go #go basic
Go 面试复盘 先上总结: 面经光看没用,只有自己不断的面试,然后总结,自己理解性的进行描述才有意义,否则只是像八股文一样去背记,从而未能理解真正的含义。那么,可能下一次面试的时候,上一次面试的问题依然处于一种遗留的状态,这样就无法在技术的关键节点进行成长。 尤其是算法题,如果一两个月不复盘算法问题,那么算法思维存在,但是代码熟练度会下降,从而导致写算法的时间变长,以及相应的心态焦虑。至于算法的时间复杂度与空 2022-02-12 go #Go #interview
Zinx 框架的学习 开始学习 Go 语言实现的 zinx 框架,项目地址为:https://github.com/chaggle/zinx-study 使用 go mod 管理,初始化为 go mod init github.com/chaggle/zinx-study并部署代码到 github.com 以及使用 go get 同步到本地 Gopath 的 github 包下! V0.1 基础 2022-01-10 go #Go #zinx
Go语言实现的轻量级IM项目 使用 go 实现的微型服务器项目地址:https://github.com/chaggle/go-im V0.1:建立基础的 main.go、server.go,相应功能如下 main 功能主要为创建服务器以及启动服务器 server 功能有: 1、创建 server 对象 2、启动 Server 服务(TCP socket 套接字) 3、处理连接的业务 V0.2:用户上线功能 user 功能新 2022-01-04 go #Instant Messaging #Go
Centos 8.2 中 Git 安装 安装依赖包12# 系统为 centos8.2 版本,可能会出现系统版本不兼容等问题!sudo yum -y install make autoconf automake cmake perl-CPAN libcurl-devel libtool gcc gcc-c++ glibc-headers zlib-devel git-lfs telnet ctags lrzsz jq expat-deve 2021-10-15 middleware #middleware #git #centos
GCC 与 GDB 的学习 gcc 是 GNU Compiler Collection 的缩写,支持多种语言的编译,比如 C、C++、Java、Pascal 等。 GCC 的编译过程 预处理(pre-processing)E:插入头文件,替换宏 编译(Compiling)S:编译成汇编 汇编(Assembling)c:编译成目标文件 链接(Linking):链接到库中,变成 2021-10-06 middleware #middleware #gcc #gdb
属于二战的一些个人的思考 今天想写一下二战考研的一些想法。因为自己的大学基础走得并不扎实,好好的个人综合素质被自己用得叫做一塌糊涂,自己本科时候做的项目与竞赛没得一个能拿得出手的,自己大学也就做出了一个重要的决定,就是能在大一的时候转了专业。 自己可惜在大学的时候没能多想一些,多行动一些,这样自己也能够学得更多,学得更加扎实一些。 偶然看到的一段话如下: 做任何选择都要做到”退可以守,进可以攻。” 本科理应先把基础打 2021-10-01 summary #Thinking #2021
unordered_map 的使用 本文主要写法参考 C++ STL 函数库std::unordered_map(C++11) unordered_map 是一个关联容器,内部采用的是 hash 表结构,拥有快速检索的功能。 特性 关联性:通过 key 去检索 value,而不是通过绝对地址(和顺序容器不同) 无序性:使用 hash 表存储,内部无序 Map:每个值对应一个键值 键唯一性:不存在两个元素的键一样 动态内存管理:使 2021-01-08 cpp #STL #C++ #unordered_map
unordered_set 的使用方法 本文主要写法参考 C++ STL 函数库std::unordered_set(C++11) unordered_set 是一种关联容器。set 和 map 内部实现是基于红黑树(RedBlackTree),unordered_set 和 unordered_map 是基于哈希表(Hashtable)。红黑树有序,而哈希表无序。 特性 不再以键值对的形式存储数据,而是直接存储数据的值(只有一个值 2021-01-07 cpp #STL #C++ #unordered_set
CPP Map container 学习 本文主要写法参考 C++ STL 函数库 map 简介map 是 STL(Standard Template Library,标准模板库)的一个关联容器。 可以将任何基本类型映射到任何基本类型。如 int array[100] 事实上就是定义了一个 int 型到 int 型的映射。 map 提供一对一的数据处理,key-value 键值对,其类型可以自己定义,第一个称为关键字,第二个为关键 2020-10-11 cpp #STL #map #C++
Go GET 代理 Windows 下在安装 github 上的东西时,一般来说建议使用修改 git 配置,使用代理连接 github。 即为打开 C:\Users\Lenovo 下的 .gitconfig 文件,加上如下图所示的相关配置: 如果是 socks5 连接,把 http: 改为 socks5: 即可,127.0.0.1 为本地回环地址,7890 是端口号,端口号以你的代理工具使用的端口号为准。 go g 2020-04-26 go #Go