11 2021 档案

摘要:golang slice传参陷阱 起因 package main func SliceRise(s []int) { s = append(s, 0) for i := range s { s[i]++ } } func main() { s1 := []int{1, 2} s2 := s1 s2 阅读全文
posted @ 2021-11-24 18:03 Dawnlight-_- 阅读(361) 评论(0) 推荐(0)
摘要:defer原理 defer1.12 defer延迟和倒序的机制 延迟 在go语言中,我们可以很方便的用defer关闭一个打开的文件、释放一个Redis连接,或者解锁一个Mutex。而且Go语言在设计上保证,即使发生panic,所有的defer调用也能够被执行。不过多个defer函数是按照定义顺序倒序 阅读全文
posted @ 2021-11-24 17:49 Dawnlight-_- 阅读(210) 评论(0) 推荐(0)
摘要:为npm安装淘宝镜像加速时使用以下命令: npm install -g cnpm --registry=https://registry.npm.taobao.org 但是当安装完成以后出现以下错误: 原因是系统找不到cnpm.cmd这个命令在哪里,我在网上看了很多篇博客的解决办法都不行。后面发现我 阅读全文
posted @ 2021-11-21 19:03 Dawnlight-_- 阅读(864) 评论(0) 推荐(0)
摘要:golang 闭包 实例引入 先来看一段代码,下面的addr函数的返回值是另一个函数,被返回的这个函数中,又对addr函数中的变量进行了累加,然后返回。 在main函数中,使用变量pos接收addr()函数返回的函数对象,然后在for循环中调用5次。 package main import "fmt 阅读全文
posted @ 2021-11-16 20:40 Dawnlight-_- 阅读(680) 评论(0) 推荐(0)
摘要:golang函数调用栈 如果在一个函数中调用另一个函数,编译器就会对应生成一条call指令,程序执行到这条指令时,就会跳转到被调用函数入口处开始执行,而每个函数的最后都有一条ret指令,负责在函数结束后跳回到调用处,继续执行。 函数栈帧 函数执行时需要有足够的内存空间,供它存放局部变量、参数等数据, 阅读全文
posted @ 2021-11-15 22:42 Dawnlight-_- 阅读(363) 评论(0) 推荐(0)
摘要:golang内存对齐 什么是内存对齐 为保证程序顺利高效的运行,编译器会把各种类型的数据安排到合适的地址,并占用合适的长度,这就是内存对齐。 每种类型的对齐值就是它的对齐边界,内存对齐要求数据存储地址以及占用的字节数都要是它的对齐边界的倍数。所以下述的int32要错开两个字节,从4开始存,却不能紧接 阅读全文
posted @ 2021-11-15 20:38 Dawnlight-_- 阅读(261) 评论(0) 推荐(0)
摘要:一、概念 类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。通过公有继承,派生类得到了基类中除构造函数、析构函数之外的所有成员。这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。 再来看一下派生类中从基类中继承而来的成员和新增成员的关系 阅读全文
posted @ 2021-11-11 16:40 Dawnlight-_- 阅读(346) 评论(0) 推荐(0)
摘要:slice内存模型 我的go源码版本是:go1.17.2 slice的源码在Go_SDK\go1.17.2\src\runtime\slice.go中。 和map.go在同一个目录下。 首先我们来看一下slice的结构: type slice struct { array unsafe.Pointe 阅读全文
posted @ 2021-11-11 16:29 Dawnlight-_- 阅读(149) 评论(0) 推荐(0)
摘要:"..." 其实是golang的一种语法糖。 它的第一个用法主要是用于函数有多个不定参数的情况,可以接受多个不确定数量的参数。 第二个用法是slice可以被打散进行传递。 用法一:函数的不定参数 package main import "fmt" func test1(args ...string) 阅读全文
posted @ 2021-11-11 14:38 Dawnlight-_- 阅读(99) 评论(0) 推荐(0)
摘要:总体来说golang的map是hashmap,是使用数组+链表的形式实现的,使用拉链法消除hash冲突。 map的内存模型 我的go源码版本是:go1.17.2 map的源码在Go_SDK\go1.17.2\src\runtime\map.go中。 首先我们来看一下map最重要的两个结构: hmap 阅读全文
posted @ 2021-11-10 23:04 Dawnlight-_- 阅读(944) 评论(0) 推荐(0)
摘要:package mainimport ( "fmt" "sync" "time")var ( x,y int wg sync.Wai... 阅读全文
posted @ 2021-11-10 00:05 Dawnlight-_- 阅读(76) 评论(0) 推荐(0)
摘要:面向对象设计六大原则 文章目录 面向对象设计六大原则1、单一职责原则(SRP)2、开闭原则(OCP)3、里氏替换原则(LSP)4、... 阅读全文
posted @ 2021-11-09 23:29 Dawnlight-_- 阅读(94) 评论(0) 推荐(0)
摘要:context上下文 1. context简介 Go1.7加入了一个新的标准库context,它定义了Context类型,专门用来简化对于处理单个请求的多个 goroutine 之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。 对服务器传入的请求应该创建上下文, 阅读全文
posted @ 2021-11-09 22:47 Dawnlight-_- 阅读(182) 评论(0) 推荐(0)
摘要:Java逃逸分析 文章目录 Java逃逸分析1. JIT2. 逃逸分析2.1 主要依据2.2 举例 3. 基于逃逸分析的优化3... 阅读全文
posted @ 2021-11-08 20:33 Dawnlight-_- 阅读(540) 评论(0) 推荐(0)
摘要:golang逃逸分析 1.栈和堆 在golang中,应用程序的内存载体,可以简单的分为栈和堆。 栈的内存是由编译器自动进行分配和释放,栈区往往存储着函数参数、局部变量和调用函数帧,它们随着函数的创建而分配,函数的退出而销毁。 与栈不同的是,应用程序在运行时只会存在一个堆。狭隘地说,内存管理只是针对堆 阅读全文
posted @ 2021-11-08 14:55 Dawnlight-_- 阅读(345) 评论(0) 推荐(0)
摘要:Gin框架笔记 1. GO标准库之http/template 在一些前后端不分离的Web架构中,我们通常需要在后端将一些数据渲染到HTML文档中,从而实现动态的网页(网页的布局和样式大致一样,但展示的内容并不一样)效果。 我们这里说的模板可以理解为事先定义好的HTML文档文件,模板渲染的作用机制可以 阅读全文
posted @ 2021-11-04 20:35 Dawnlight-_- 阅读(154) 评论(0) 推荐(0)
摘要:1.Linux环境部署kafka 2.Win10环境部署kafka 3.docker部署kafka 4.kafka的简单使用 5.kafka消息的细节 6.kafka主题和分区的概念 7.kafka集群操作 8.kafka生产者实现细节 9.kafka消费者实现细节 10.kafka集群中的cont 阅读全文
posted @ 2021-11-01 21:54 Dawnlight-_- 阅读(35) 评论(0) 推荐(0)
摘要:1.准备 (1) 去kafka-eagle的官网下载压缩包: http://download.kafka-eagle.org/ (2) 利用xftp传输到虚拟机中 2.安装 先解压压缩包: tar -xvf kafka-eagle-bin-2.0.8.tar.gz 改名: mv kafka-eagl 阅读全文
posted @ 2021-11-01 21:46 Dawnlight-_- 阅读(166) 评论(0) 推荐(0)
摘要:Kafka的简单使用 1.kafka常用命令 Linux //启动zookeeper ./zookeeper-server-start.sh ../config/zookeeper.properties //启动kafka ./kafka-server-start.sh ../config/serv 阅读全文
posted @ 2021-11-01 20:23 Dawnlight-_- 阅读(201) 评论(0) 推荐(0)
摘要:1.如何防止消息丢失 ⽣产者: (1)使⽤同步发送。 (2)把ack设成1或者all,并且设置同步的分区数>=2。 消费者: 把⾃动提交改成⼿动提交。 2.如何防止重复消费 在防⽌消息丢失的⽅案中,如果⽣产者发送完消息后,因为⽹络抖动,没有收到ack,但实际上broker已经收到了。 此时⽣产者会进 阅读全文
posted @ 2021-11-01 17:09 Dawnlight-_- 阅读(70) 评论(0) 推荐(0)
摘要:controller 每个broker启动时会向zk创建⼀个临时序号节点,获得的序号最⼩的那个broker将会作为集群中的controller,负责这么⼏件事: 当集群中有⼀个副本的leader挂掉,需要在集群中选举出⼀个新的leader,选举的规则是从isr集合中最左边获得。 当集群中有broke 阅读全文
posted @ 2021-11-01 16:48 Dawnlight-_- 阅读(76) 评论(0) 推荐(0)
摘要:消费者的java实现 import java.util.Arrays; import java.util.Properties; public class MySimpleConsumer { private final static String TOPIC_NAME = "my-replicat 阅读全文
posted @ 2021-11-01 15:55 Dawnlight-_- 阅读(147) 评论(0) 推荐(0)
摘要:生产者的基本实现 引入依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.4.1</version> </dependency> 具体实现 pack 阅读全文
posted @ 2021-11-01 14:26 Dawnlight-_- 阅读(95) 评论(0) 推荐(0)