- 博客(15)
- 收藏
- 关注
原创 NSQ源码解析
NSQ源码解析NSQ组件的生命周期nsqd 源码解析nsqd 执行入口nsqd源码nsqd 源码流程图NSQ组件的生命周期Topic:当程序第一次发布消息时就会创建 topicChannels:在消费者第一次订阅时就会创建 channel。Channel 会将消息进行排列,如果没有消费者读取消息,消息首先会在内存中排队,当量太大时就会被保存到磁盘中。Messages:消费者可以选择结束消息,表明它们正在被正常处理,或者重新将他们排队待到后面再进行处理,每个消息包含传递尝试的次数,当消息传递超过一定
2021-09-07 16:08:55
680
原创 NSQ消息队列
NSQ消息队列消息队列的作用NSQ介绍什么是NSQNSQ组件NSQ工具NSQ架构NSQ部署单机部署集群部署消息队列的作用1️⃣ 程序解耦举个栗子:用户注册成功会发送注册成功的短信通知。传统模式下需要将用户信息持久化到数据库后,再调用发送短信接口。当短信平台暂时出现连通性问题,则会导致用户注册失败,也就是数据库存储失败,说明注册模块与短信功能高耦合,违反程序设计原则高内聚低耦合。引用消息队列,将用户注册数据持久化到数据库后,把消息写入消息队列然后返回用户注册成功,短信平台通过从消息队列中获取消息为
2021-08-31 17:44:59
1082
原创 Go语言入门(二)之 函数&指针
Go语言入门(二)之 函数&指针函数进阶指针函数进阶1️⃣ 可变参数可变参数是指函数的参数数量不固定。Go语言中的可变参数通过在参数名后加...来标识。⭐️ 注意:可变参数通常要作为函数的最后一个参数。举个栗子:func intSum2(x ...int) int { fmt.Println(x) //x是一个切片 sum := 0 for _, v := range x { sum = sum + v } return sum}调用上面的函数:ret1 := in
2021-08-25 16:42:42
329
原创 Go语言入门(一)之 结构体
Go语言入门(一)之 结构体类型别名 & 自定义类型结构体类型别名 & 自定义类型自定义类型type MyInt int //将MyInt定义为int类型通过type关键字的定义,MyInt就是一种新的类型,它具有int的特性,但却不是int了。类型别名type byte = uint8 //byte 是uint8 的别名type rune = int32 //rune 是int32 的别名只是换了个名字(换汤不换药),byte 就是 uint8 。结构体
2021-08-24 17:40:28
135
原创 MongoDB 入门 (二)索引
MongoDB 入门 (二)索引索引基本概述索引的类型索引的管理查看索引创建索引索引的移除索引的使用索引基本概述索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。如果查询存在适当的索引,MongoDB可以使用该索引限制必须检查的文档数。索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的
2021-08-12 13:50:46
116
原创 MongoDB 入门 (一)
MongoDB 入门 (一)MongoDB相关概念单机部署使用shell连接MongoDB数据库MongoDB相关概念MongoDB的应用场景高并发(海量用户访问数据库)海量数据的存储,写入操作频繁MongoDB不需要专门设置固定的行列,因此结构具有高扩展性不需要事务及复杂的joinMongoDB简介MongoDB是最像关系型数据库(MySQL)的非关系型数据库,是NoSQL数据库产品中的一种,NoSQL也包含Redis等,下面来看 MySQL 与 MongoDB 之间的对应关系:
2021-08-12 11:30:21
227
原创 WSL 概述 及 安装
WSL 概述 及 安装概述安装概述WSL (Windows Subsystem for Linux),也就是 Windows 系统中自带 Linux 子系统。安装(采用命令行界面安装)1、win+S,搜索 PowerShell,右键管理员身份运行2、输入命令,启用 适用于 Linux 的 Windows 子系统功能dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /nore
2021-08-10 11:10:39
936
原创 Go语言案例(一)音乐播放器
Go语言案例(一)音乐播放器一、GOPATH 与 Go Mod二、常用的标准库(一)ftm三、项目中涉及语法概念(一)结构体(二)接口四、源码附录一、GOPATH 与 Go Mod(小白学习go,可能存在问题,欢迎大家批评指正~)最开始,我的项目结构如下:结果发现,main.go中 import包tool 爆红,明明路径都写对了,为什么还是报错呢?原来是gopath配置的问题,gopath就是用来管理包的。于是,我开始配置gopath。GOPATH官方文档解释是:GOPATH 环境变量指定了你
2021-06-04 11:05:04
3088
原创 Mybatis框架入门学习笔记(二)
1.Mybatis的Dao层实现1.1 传统开发方式1.1.1编写UserDao接口public interface UserDao { List<User> findAll() throws IOException;}1.1.2.编写UserDaoImpl实现public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException {
2021-04-06 16:40:38
280
原创 Mybatis框架入门学习笔记(一)
什么是框架?框架是 软件开发中的 一套解决方案,不同的问题 使用不同的框架框架封装了很多底层的细节,以便程序员可以专注于自己的代码实现,相当于是一个半成品
2021-04-05 16:02:10
302
原创 JUC多线程及高并发(三) 之 LockSupport & AQS
阳哥大厂面试题第三季一、Java基础(一)58同城的Java字符串常量池(二)字节跳动两数求和二、JUC(一)可重入锁(二)LockSupport(三)AQS——AbstractQueuedSychronizer三、Spring一、Java基础(一)58同城的Java字符串常量池面试题代码public class StringPool58Demo { public static void main(String[] args) { String str1 = new Str
2021-03-08 20:24:57
537
1
原创 JUC多线程及高并发(二) 之 CAS与ABA
JUC多线程及高并发(二)一. CAS1. CAS基本概念2. CAS底层原理3. 底层汇编4. 总结5. CAS缺点二. ABA1. 原子类AtomicInteger的ABA问题2. 补充内容基本流程:AtomicInterger→CAS→unsafe→CAS底层思想→ABA→原子引用更新→如何规避ABA问题一. CAS1. CAS基本概念概念:CAS的全称是CompareAndSwap,它是CPU并发原语它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。CA
2021-03-06 19:50:15
226
1
原创 JUC多线程及高并发(一) 之 volatile
JUC多线程及高并发JUC是什么Package java.util.concurrent请谈谈你对volatile的理解volatile是 Java虚拟机提供的 轻量级的 同步机制(synchronism)包含三大特性:保证可见性,不保证原子性,禁止指令重排JMM——Java内存模型,并不真实存在(就像12生肖里面的龙),它描述的是一组规则。通过这组规则,定义了程序中的各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM关于同步的规定:1 . 线程解锁前,必须
2021-03-06 19:42:05
225
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人