java技术圈 为您找到相关结果 17

GO语言中封装,继承,和多态

##封装 go中的封装和java的不太一样,在go里面是没有java中的class,不过可以把struct看成一个类,封装可以简单地看作对struct的封装,如下 type obj1 struct { valte1 string } type obj2 struct { valte2 string } ##继承 把struct看做类,struct中可以包含其他的struct,继承内部struct的方法和变量,同时可以重写,代码如下 package main import "fmt" type oo struct { inner ss1 string ss2 int ss3 bool } type inner struct { ss4 string } func (i *inner) test...阅读全文

博文 2019-04-04 09:49:29 www.allocmem.com

golang中new和make简析

引言: 目前简单梳理了golang的知识点,进行查漏补缺,这里简要记录下golang中的make和new,由于个人能力有限,如有错误,欢迎指正。 正文: 1. make 分配了一个有初始值(非零)的T类型(我这里打印的为空,个人理解为空值)返回值 当slice cap无法满足需要,则在初始大小cap(即第三个参数,这里为6),成倍增长 2. new 分配了零值填充的T类型的内存空间,并返回其地址(指针) 当slice cap无法满足需要,则以16为基数,成倍增长 测试代码如下: “` package main import "fmt" //make 分配了一个有初始值(非零)的T类型(我这里打印的为空,个人理解为空值)返回值 当slice cap无法满足需要,则在初始大小cap(即第三个参数...阅读全文

博文 2019-04-04 09:53:58 www.allocmem.com

golang的slice详解

切片的长度和容量不同,长度表示左指针至右指针之间的距离,容量表示左指针至底层数组末尾的距离。 切片的扩容机制,append的时候,如果长度增加后超过容量,则将容量增加2倍,同时变换了底层数组。 切片append机制,是把slice后边数据逐个覆盖写入。 切片copy机制,按其中较小的那个数组切片的元素个数进行复制。 --------------------- 作者:Shower稻草人 来源:CSDN 原文:https://blog.csdn.net/u013474436/article/details/88770501 版权声明:本文为博主原创文章,转载请附上博文链接! ...阅读全文

GO语言中封装,继承,和多态

##封装 go中的封装和java的不太一样,在go里面是没有java中的class,不过可以把struct看成一个类,封装可以简单地看作对struct的封装,如下 ``` type obj1 struct { valte1 string } type obj2 struct { valte2 string } ``` ##继承 把struct看做类,struct中可以包含其他的struct,继承内部struct的方法和变量,同时可以重写,代码如下 ``` package main import "fmt" type oo struct { inner ss1 string ss2 int ss3 bool } type inn...阅读全文

理解 Go make 和 new 的区别

new 和 make 都可以用来分配空间,初始化类型,但是它们确有不同。 new(T) 返回的是 T 的指针new(T) 为一个 T 类型新值分配空间并将此空间初始化为 T 的零值,返回的是新值的地址,也就是 T 类型的指针 *T,该指针指向 T 的新分配的零值。 123456789p1 := new(int)fmt.Printf("p1 --> %#v \n ", p1) //(*int)(0xc42000e250) fmt.Printf("p1 point to --> %#v \n ", *p1) //0var p2 *inti := 0p2 = &ifmt.Printf("p2 --> %#v \n ", p2) //(*int)(0xc42000e278) fmt.Printf("...阅读全文

博文 2019-05-15 11:18:54 三月沙

Golang map 的底层实现

在开发过程中,map是必不可少的数据结构,在Golang中,使用map或多或少会遇到与其他语言不一样的体验,比如访问不存在的元素会返回其类型的空值、map的大小究竟是多少,为什么会报"cannot take the address of"错误,遍历map的随机性等等。 本文希望通过研究map的底层实现,以解答这些疑惑。 基于Golang 1.8.3 1. 数据结构及内存管理 hashmap的定义位于 src/runtime/hashmap.go 中,首先我们看下hashmap和bucket的定义: type hmap struct { count int // 元素的个数 flags uint8 // 状态标志 B uint8 // 可以最多容纳 6.5 * 2 ^ B 个元素,6.5为装载...阅读全文

博文 2019-05-16 09:40:27 简书

【Go】深入剖析slice和array

array 和 slice 看似相似,却有着极大的不同,但他们之间还有着千次万缕的联系 slice 是引用类型、是 array 的引用,相当于动态数组,这些都是 slice 的特性,但是 slice 底层如何表现,内存中是如何分配的,特别是在程序中大量使用 slice 的情况下,怎样可以高效使用 slice?今天借助 Go 的 unsafe 包来探索 array 和 slice 的各种奥妙。 数组slice 是在 array 的基础上实现的,需要先详细了解一下数组。 ** 维基上如此介绍数组:** 在计算机科学中,数组数据结构(英语:array data structure),简称数组(英语:Array),是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储,...阅读全文

博文 2020-03-11 02:52:57 thinkeridea博客

Go语言黑魔法

今天我要教大家一些无用技能,也可以叫它奇技淫巧或者黑魔法。用得好可以提升性能,用得不好就会招来恶魔,嘿嘿。黑魔法导论为了让大家在学习了基础黑魔法之后能有所悟,在必要的时候能创造出本文传授之外的属于自己的魔法,这里需要先给大家打好基础。学习Go语言黑魔法之前,需要先看清Go世界的本质,你才能获得像Neo一样的能力。在Go语言中,Slice本质是什么呢?是一个reflect.SliceHeader结构体和这个结构体中Data字段所指向的内存。String本质是什么呢?是一个reflect.StringHeader结构体和这个结构体所指向的内存。在Go语言中,指针的本质是什么呢?是unsafe.Pointer和uintptr。当你清楚了它们的本质之后,你就可以随意的玩弄它们,嘿嘿嘿。第一式 - 获...阅读全文

博文 2019-09-16 08:41:50 知乎

golang拾遗:为什么我们需要泛型 - apocelipes

从golang诞生起是否应该添加泛型支持就是一个热度未曾消减的议题。泛型的支持者们认为没有泛型的语言是不完整的,而泛型的反对者们则认为接口足以取代泛型,增加泛型只会徒增语言的复杂度。双方各执己见,争执不下,直到官方最终确定泛型是go2的发展路线中的重中之重。 今天我们就来看看为什么我们需要泛型,没有泛型时我们在做什么,泛型会带来哪些影响,泛型能拯救我们吗? 本文索引 没有泛型的世界 暴力穷举 依靠通用引用类型 动态类型语言的特例 动静结合 使用interface模拟泛型 interface会进行严格的类型检查 内置类型何去何从 性能陷阱 复合类型的迷思 最后也是最重要的 泛型带来的影响,以及拯救 彻底从没有泛型的泥沼中解放 泛型的代价 没有泛型的世界 泛型最常见也是最简单的需求就是创建一组操...阅读全文

博文 2021-08-18 06:24:27 博客园

如何优雅的全量读取Elasticsearch索引里面的数据_三劫散仙

(一)scroll的介绍 有时候我们可能想要读取整个es索引的数据或者其中的大部分数据,来重建索引或者加工数据,相信大多数人都会说这很简单啊直接用from+size就能搞定,但实际情况是from+size的分页方法不适合用于这种全量数据的抽取,越到后面这种方法的性能就越低,这也是es里面为什么限制了单次查询结果的数据不能超过1万条数据的原因。 es里面提供了scroll的方式来全量读取索引数据其与数据库里面的游标(cursor)的概念非常类似,使用scroll读取数据的时候,只需要发送一次查询请求,然后es服务端会生成一个当前请求索引的快照数据集,接着我们每次通过scrollId来读取指定大小的批次数据,直到把整个索引的数据读取完毕。 这里面需要注意,当索引快照集生成的时候,其实在es内部维...阅读全文

博文 2020-11-19 09:11:59 CSDN博客

[Golang]两个对象的指针相同,一定是同一个对象吗?

开门见山 今天发现一个十分有趣的case,如下: package main import "fmt" func main() { n1 := make ([] int, 0,5) n2 := n1[:2] fmt.Println(n1) fmt.Println(n2) // 思考 n1和n2打印出的指针地址是否相同? fmt.Printf("address of n1:%p\n",n1) fmt.Printf("address of n2:%p\n",n2) } n1不是指针类型,是make的一个[]int slice的引用类型,可能多数人会有这样的思考: 两个对象的指针地址相同,那么这两个对象存储的内容是相同的,即使slice的底层数组结构SliceHeader的Data字段域(数组),在...阅读全文

博文 2020-03-11 02:54:56 blog.allocmem.com

Go语言实战笔记(五)| Go 切片

《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org,第一时间看后续笔记。 切片也是一种数据结构,它和数组非常相似,因为他是围绕动态数组的概念设计的,可以按需自动改变大小,使用这种结构,可以更方便的管理和使用数据集合。 内部实现 切片是基于数组实现的,它的底层是数组,它自己本身非常小,可以理解为对底层数组的抽象。因为机遇数组实现,所以它的底层的内存是连续非配的,效率非常高,还可以通过索引获得数据,可以迭代以及垃圾回收优化的好处。 切片对象非常小,是因为它是只有3个字段的数据结构:一个是指向底层数组的指针,一个是切片的长度,一个是切片的容量。这3个字段,就是Go语言操作底层数组的元数据,有了它们,我们就可以任意的操作切片了。 声明和初始化 切片创建的方式有好几种,我们先...阅读全文

博文 2020-03-11 02:53:47 飞雪无情的博客

Netty之ByteBuf零拷贝

Netty之ByteBuf零拷贝我们先来看下Zero-copy的定义: "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another. This is frequently used to save CPU cycles and memory bandwidth when transmitting a file over a network. 所谓的 Zero-copy, 就是在操作数据时, 不需要将数据 buffer 从一个内存区域拷贝到另一个内存区域. 少了一次内存的拷贝, 减少了cpu...阅读全文

博文 2021-08-28 11:10:37 简书

干货 | Elasticsearch Reindex性能提升10倍+实战_铭毅天下的博客

Elasticsearch 最少必要知识实战教程直播回放 #1、reindex的速率极慢,是否有办法改善? 以下问题来自社区:https://elasticsearch.cn/question/3782 问题1:reindex和snapshot的速率极慢,是否有办法改善? reindex和snapshot的速率比用filebeat或者kafka到es的写入速率慢好几个数量级(集群写入性能不存在瓶颈),reindex/snapshot的时候CPU还是IO使用率都很低,是不是集群受什么参数限制了reindex和snapshot的速率? reindex不管是跨集群还是同集群上都很慢,大约3~5M/s的索引速率,会是什么原因导致的? 问题2:数据量几十个G的场景下,elasticsearch rei...阅读全文

博文 2022-04-02 10:12:57 CSDN博客_es reindex速度

Mongodb 数据库安装之单机版_51CTO博客_mongodb数据库安装

一、安装前准备工作 1、关闭SELINUX、防火墙 [root@localhost ~]# setenforce 0 [root@localhost ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config [root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld 2、设置时间同步 [root@localhost ~]# yum -y install ntp [root@localhost ~]# \cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime [ro...阅读全文

博文 2023-01-04 02:59:42 blog.51cto.com

首个基于Transformer的分割检测+视觉大模型视频课程(23年新课+源码+课件)

学习资料地址1:https://pan.baidu.com/s/1mpYHRFi68lzNuA8neYI15w 提取码:pwjd 学习资料地址2:https://share.weiyun.com/tnVNHGMD 密码:3fj7iy 自动驾驶是高安全型应用,需要高性能和高可靠的深度学习模型,Vision Transformer是理想的选摔。现在主流的自动驾驶感知算法基本都使用了Vision Transformer相关技术,比如分割、2D/3D检测,以及最近大火的大模型 (如SAM),Vision Transformer在自动驾驶领域的落地方面遍地开花。5一方面,在自动驾驶或图像处理相关算法岗位的面试题中,Vision Transformer是必考题,需要对其理论知识有深入理解,并且在项目中真...阅读全文

博文 2023-11-27 11:15:42 kaidnxhd2023

[15章]AI人人必修-提示词工程+大模型多场景实战(丰富资料)

![12.png](http://static.itsharecircle.com/231116/3e234a7b1f885155c27e1dcff3801cc7.png) AI时代下,只要掌握提示词工程技能,每个人都能驾驭AI,实现大幅提升工作效能和质量,拓宽职业发展,获得更多的机会和优势。《[15章]AI人人必修-提示词工程+大模型多场景实战(丰富资料)》为你提供一套实用的、系统的提示词工程基础、原则、应用场景和实践方法。带你从提示词工程的市场需求和职业发展出发,逐步深入并融合大模型提升商业化思维,打通职场、副业的求职、创作、教学、绘图、编程等多场景应用实战,轻松驾驭AI,大幅提升你的效能和质量。 首先,提示词工程是什么 提示词工程就是给大模型应用做出合适的提示,来让大模型有更好的生成效...阅读全文

博文 2023-11-16 11:26:40 kaidnxhd2023