当前位置: 首页 > news >正文

【Go 语言入门专栏】Go 语言的起源与发展

00

前言

Go 语言是当下最为流行的编程语言之一,大约在 2020、2021 年左右开始于国内盛行,许多大厂很早就将部分 Java 项目迁移到了 Go,足可看出其在性能方面的优越性。

相信各位都知道,在爬虫业务中,并发是一个关键的需求,不然仅靠单线程采集数据,只怕公司垮了数据都还没采完。以往编写爬虫脚本,通常会使用 Python 语言,不过,想用 Python 实现较好的并发性能,相对麻烦,并且容易受到服务器或电脑配置的影响。相较之下,Go 语言天然的支持轻量级线程(goroutine)和通道(channel),这使得并发编程变得非常简单,也更为稳定。比之 Python,Go 还有很多优势,并且,时至今日,各开源社区的大佬们也贡献了许多优秀的 Go 语言爬虫库及框架,例如 colly、goquery、requests-go 等等,相关生态越来越好。

现在很多公司要求使用 Go 语言编写爬虫脚本,以往的 Python 程序也会逐步迁移。Boss 直聘上,在一些公司爬虫岗的职位描述里,也要求能够熟练使用 Go 语言:

01

由此看来,Go 语言正在逐步成为日常工具,被广泛运用于后端开发和爬虫中,所以学习 Go 语言是很有必要的,无论目前是否是刚需,都值得储备相关知识。

为此,K哥新开《Go 语言入门专栏》,提供给大伙一个新的学习途径。

简介

Go 语言(也称为 Golang)是一种由 Google 开发的开源编程语言。

过去,许多开发者在使用 C++ 来开发大型的服务端软件时,由于二进制文件一般都非常大,需要耗费大量的时间在编译文件上,同时编程语言的设计思想也已经非常陈旧,这些情况都充分表明了现有的编程语言已不符合时下的生产环境。

学者们坐下来总结出了现在生产环境与软件开发之间的主要矛盾,并尝试设计一门全新的编程语言来解决这些问题。他们讨论得出的对编程语言的设计要求:

  • 能够以更快的速度开发软件
  • 开发出的软件能够很好地在现代的多核计算机上工作
  • 开发出的软件能够很好地在网络环境下工作
  • 使人们能够享受软件开发的过程

Go 语言就在这样的环境下诞生了,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。

Go 语言出现的目的是在编程领域中创造出最实用的方式来进行软件开发。它并不是要用奇怪的语法或晦涩难懂的概念来从根本上推翻已有的编程语言,而是重建并改善了 C、C#、Java 中的许多语法风格。

起源

Go 语言的起源可以追溯到 2007 年。

在 2007 年的时候,谷歌开发工作的规模与正在部署的生产系统规模暴增,需要有个好的解决方案应对这些挑战。

当时 Robert Griesemer、Rob Pike 和 Ken Thompson 都是用的 C++,编译一个分布式集群大概要花费 45 分钟,这个过程让三个人都很难以忍受。

XKCD 中的一幅漫画

2007 年 9 月 20 日星期四下午,在等待编译的时候 Rob Pike 把 Robert Griesemer 和 Ken Thompson 喊到一起决定要做些什么:他们不想永远使用 C++,并且想要很好处理并发的问题。希望创造一个能够摒弃其他语言的缺点的新语言,保持静态类型和运行时效率、具有可读性和可用性、具备高性能网络和并发处理。

Go 这个名字是 Rob Pike 取的,认为它很短、易于输入,非常合适这一新语言的特性。

最初的一周内,他们就讨论出来了很多 Go 语言的风格和特性,并着手开发。

经过两年的努力,于 2009 年 11 月,Google 宣布了 Go 语言的首个公开发布版本,即 Go 1。

大佬三连坐:

Robert Griesemer、Rob Pike 、Ken Thompson(2012年,Google I/O大会)

顶级初创团队:

① Robert Griesemer,参与开发 Java HotSpot 虚拟机,并负责 Chrome 浏览器和 Node.js 使用的 Google V8 JavaScript 引擎的代码生成部分。

② Rob Pike,Go 语言项目总负责人,贝尔实验室 Unix 团队成员,参与的项目包括 Plan 9,Inferno 操作系统和 Limbo 编程语言。

③ Ken Thompson,贝尔实验室 Unix 团队成员,C 语言、Unix 和 Plan 9 的创始人之一,与 Rob Pike 共同开发了 UTF-8 字符集规范。

随着更多有才华的程序员加入到 Go 开发团队中,更多贡献者开始为 Go 语言项目添砖加瓦。使得 Go 在发布的当年就成为了著名编程语言排行榜 TIOBE 的年度最佳编程语言。

Go 发布后就吸引了一些公司,尤其是云计算领域的初创公司成为了 Go 语言的早期接纳者。在经过若干年的磨合后,在这些公司中诞生了不乏像 Docker(容器引擎)、Kubernetes(云原生事实标准平台)、Ethereum(区块链公链以太坊)等“杀手级”或示范性项目,这些项目也让 Go 被誉为云计算基础设施新兴语言或直接称为云计算语言

Go 在近些年云原生领域的广泛应用也让其跻身云原生时代的头部编程语言。

Logo 的诞生

在 Go 立项的时候,Rob Pike 的妻子 Renee French(著名美国插画师、漫画家和作家,以其独特的风格和奇特的创意而闻名)就帮他们画了一个标志,然后这个图标就出现在 Google Code 网站和第一件 Go T 恤上,该 Logo 被用来体现 Go 的速度:

04

2009 年 11 月 10 日 Go 准备开源发布的之前,Rob Pike 的妻子建议,将她在 1999 年左右为新泽西州 WFMU 广播电台年度筹款活动设计的,作为宣传的形象,改编成为 Go 的吉祥物 ------ Gopher(地鼠):

big gopher

发错了,是这个 ~(~ ̄▽ ̄)~:

06

之后,Rob Pike 的妻子又绘制了更多的 Go gopher 形象,代表着 Go 项目和各地的 Go 程序员。这些可爱的形象成为 Go 世界中最受欢迎的事物之一,被世界各地的 Go 程序员广泛使用:

Go Gopher

发展历程

  1. 初期版本(2009 年 - 2012 年):

    初期版本的 Go 语言主要集中于提供简洁、高效的编程体验,以及强大的并发支持。这些特性使其成为了云服务、网络应用和大规模分布式系统开发的理想选择。

  2. Go 1 发布(2012 年):

    Go 1 是 Go 语言的首个稳定版本,也是第一个被广泛用于生产环境的版本。发布 Go 1 的目标是提供稳定的 API 和 ABI,以便未来版本的兼容性。

  3. 生态系统的发展(2012 年 - 至今):

    随着 Go 语言的发展,其生态系统也在不断壮大。包括标准库、第三方库、框架以及工具链在内的生态系统都得到了极大的丰富和改进,使得 Go 语言更加适用于各种类型的应用开发。

  4. Go 语言在工业界的应用(2010 年至今):

    自从 Go 语言发布以来,越来越多的公司和组织开始采用 Go 语言进行开发。一些知名的公司,如 Google、Uber、Dropbox、Docker、Cloudflare、MongoDB 等,都在生产环境中使用 Go 语言开发核心系统。

  5. 版本更新和改进(2012 年至今):

    Go 语言的开发团队持续不断地发布新的版本,以改进语言的性能、稳定性和功能。Go 社区也积极参与到语言的发展中,提出改进建议、修复 bug,并贡献各种开源项目。

TIOBE 指数中的 Go 语言发展曲线

版本迭代

04

官方发布历史:https://go.dev/doc/devel/release

特性

① 简洁易学

Go 语言的语法设计简洁明了,摒弃了一些繁琐的特性和语法元素,使得代码更易于阅读和维护。这使得 Go 语言成为一门学习曲线较为平缓的编程语言,即使是没有编程经验的人也能相对轻松地上手。

② 高并发性能

Go 语言天生支持并发编程,通过 goroutine 和 channel 机制,使得并发编程变得非常简单。

传统编程语言(如 C、C++ 等)的并发实现,实际上就是基于操作系统调度的,即程序负责创建线程(一般通过 pthread 等函数库调用实现),操作系统负责调度。这种传统支持并发的方式主要有两大不足:复杂与难于扩展。

为了解决这些问题,Go 果断放弃了传统的基于操作系统线程的并发模型,而采用了用户层轻量级线程或者说是类协程(coroutine),Go 将之称为 goroutine。

goroutine 占用的资源非常少,Go 语言运行时默认为每个 goroutine 分配的栈空间仅 2KB,会自动在配置的一组逻辑处理器上调度执行 goroutine。每个逻辑处理器绑定到一个操作系统线程上。这让用户的应用程序执行效率更高,而开发工作量显著减少。

goroutine 调度的切换也不用陷入(trap)操作系统内核层完成,代价很低。因此,在一个 Go 程序中可以创建成千上万个并发的 goroutine。所有的 Go 代码都在 goroutine 中执行,哪怕是 Go 的运行时代码也不例外。

而 channel(通道)则提供了不同 goroutine 之间的通信和同步机制,使得编写并发代码变得直观而安全,可以帮助用户避免在其他语言里常见的共享内存访问的问题。

③ 快速编译

Go 语言的编译速度非常快,这得益于其先进的编译器和优化器。快速的编译速度可以大大提高开发效率,特别是在大型项目中。

④ 内存管理

Go 语言拥有自动内存管理功能,也就是垃圾回收机制。这意味着开发者不需要手动管理内存分配和回收,大大减轻了编程的负担,同时也有助于防止内存泄漏。

⑤ 静态类型语言

Go 语言是一门静态类型的编程语言,这意味着在编译期间就能捕获到一些类型相关的错误。静态类型检查有助于提前发现潜在的 Bug,减少在运行时可能出现的错误。

⑥ 跨平台支持

Go 语言的编译器可以在多种平台上运行,可以轻松地将 Go 程序编译成适用于不同操作系统和硬件架构的可执行文件。这使得 Go 语言成为跨平台开发的理想选择。

⑦ 强调并遵循软件工程原则

Go 语言鼓励开发者编写清晰、简洁、可维护的代码。它有一套明确的代码风格规范,并自带了一些工具来帮助开发者保持一致的代码风格。

⑧ 丰富的标准库

Go 语言附带了丰富而强大的标准库,覆盖了网络、文件处理、加密、并发等方面。开发者可以直接使用标准库提供的功能,而无需引入大量的第三方库。

⑨ 工具链

完整的工具链对于日常开发极为重要。Go 在此做得相当不错,无论是编译、格式化、错误检查、帮助文档,还是第三方包下载、更新都有对应的工具。其功能未必完善,但起码算得上简单易用。

内置完整测试框架,其中包括单元测试、性能测试、代码覆盖率、数据竞争,以及用来调优的 pprof,这些都是保障代码能正确而稳定运行的必备利器。

除此之外,还可通过环境变量输出运行时监控信息,尤其是垃圾回收和并发调度跟踪,可进一步帮助我们改进算法,获得更佳的运行期表现。

⑩ 文档资源

Go 语言拥有丰富的官方文档资源,包括语言规范、标准库文档、命令行工具说明等。此外,Go 语言社区中也有许多优秀的教程、博客和论坛,为开发者提供了学习和交流的平台。

Less is exponentially more

性能测评

以下是 Go 语言与其他编程语言的对比测试数据(源于网络资料):

  • 在相同的环境和执行目标的情况下,Go 程序比 Java 或 Scala 应用程序要快上 2 倍,并比这两门语言使用少占用 70% 的内存,执行效率大约比 C++ 慢 20%;
  • Go 的编译速度要比绝大多数语言都要快,比 Java 和 C++ 快 5 至 6 倍,比 Scala 快 10 倍;
  • Go 语言通过垃圾回收器自动管理内存,这在某些情况下可能会引入一些运行时开销。相比之下,C/C++ 需要手动管理内存,这可能会导致内存泄漏和悬挂指针等问题;
  • Go 和 Python 在一般开发的平均水平测试中,Go 要比 Python 3 快 25 倍左右,少占用三分之二的内存,但比 Python 大概多写一倍的代码,毫无疑问,开发效率上,Python 是要技高一筹的;
  • 比较 Go 和 Python 在简单的 web 服务器方面的性能,单位为传输量每秒:
    原生的 Go net/http 包要比 web.py 快 7 至 8 倍,如果使用 web.go 框架则稍微差点,比 web.py 快 6 至 7 倍。如果是使用Python 中的 tornado 异步服务器和框架开发出的Web应用,那么要比传统的 web.py 快很多,此时,Go 大概只比它快 1.2 至 1.5 倍,Go 在 Web 开发的领域比 Python 要快,但目前来看,并非碾压态势。

07

业务方向

  1. 网络编程:

    Go 语言原生支持高效的并发编程,因此非常适合用于构建网络应用程序和分布式系统。

  2. 大数据处理:

    Go 语言具有高效的执行性能和并发处理能力,因此很适合用于处理大量数据。

  3. 云原生开发:

    随着云原生应用的兴起,Go 语言也成为云原生开发的热门选择。Go 的快速启动时间、小内存占用和高并发性能使其非常适合在云环境中构建轻量级容器化应用和无服务器函数。

  4. 微服务:

    Go 语言对于构建微服务和 API 很有优势,因为它的代码结构简单,易于维护,同时具有高效和高并发特性

  5. 数据库和存储系统:

    Go 语言提供了丰富的数据库和存储库,包括 SQL 数据库(如 MySQL、PostgreSQL)、NoSQL 数据库(如 MongoDB、Redis)以及分布式存储系统(如 etcd)。这使得 Go 成为开发高性能、可扩展和可靠的数据存储解决方案的理想语言。

  6. Web 开发:

    Go 语言拥有轻量级的 HTTP 服务器,使其成为构建高性能 Web 应用程序的理想选择。它支持快速开发和部署,并且具有良好的性能和可靠性。很多人使用 Golang 是因为它非常快,而且它可以用来并行运行进程,这样他们就不必互相等待。

    它内置了对并发的支持,并促进了单个进程中线程和处理器之间的并行性。这可以使你的网站更容易快速加载并为你提供最佳的用户体验。

  7. 区块链开发:

    Go 语言在区块链开发领域也得到了广泛应用。许多知名的区块链项目(如 Ethereum)使用 Go 语言作为其主要开发语言,因为 Go 具有高效的并发能力和良好的性能,适合处理区块链交易和智能合约。

来自 Go 语言之父的忠告

Rob Pike 今年已经 68 岁了,大部分时候在澳大利亚生活,现在居住在悉尼新南威尔士州。

在最近的一次采访中,他总结了自己 40 多年开发经验说:避免倦怠的最好方法是在支持你的环境中做你真正喜欢的事情。他认为自己是幸运的,在贝尔实验室和谷歌都是如此。

同时他也提醒我们:如果对工作感到压力,应该随时休息或者改变方向

参考资料推荐

Go 官方文档:https://go.dev/doc/

Go 技术论坛:https://learnku.com/docs/the-way-to-go

Go 语言简明教程:https://geektutu.com/post/quick-golang.html

Go 语言中文网:https://studygolang.com/

C 语言中文网:https://c.biancheng.net/golang/intro/

维基百科:https://en.wikipedia.org/wiki/Go_(programming_language)

菜鸟教程:https://www.runoob.com/go/go-tutorial.html

下期预告:《【Go 语言入门专栏】Go 安装与环境配置》

相关文章:

【Go 语言入门专栏】Go 语言的起源与发展

前言 Go 语言是当下最为流行的编程语言之一,大约在 2020、2021 年左右开始于国内盛行,许多大厂很早就将部分 Java 项目迁移到了 Go,足可看出其在性能方面的优越性。 相信各位都知道,在爬虫业务中,并发是一个关键的需…...

发电机组远程管理,提升管控力,降低运维成本

发电机组是指发电机发动机以及控制系统的总称,用来把发动机提供的动能转化为电能。它通常由动力系统、控制系统、消音系统、减震系统、排气系统组成。发电机组远程管理系统利用物联网技术与PLC远程控制模块集成解决方案,在提高发电机组的运行效率、降低运…...

java将文件压缩打包后进行下载

今天受到一个需求,需要查出文件,然后将文件打包后下载。看了下项目里默认代码有压缩功能,以此修改了下,项目使用了hutool。项目是若依项目 定义zip的数据传输对象,ossId可以是文件表的id Data public class SysOssZi…...

【4/26-4/30】 Arxiv安全类文章速览

4/26 标题: Merchants of Vulnerabilities: How Bug Bounty Programs Benefit Software Vendors 作者: Esther Gal-Or, Muhammad Zia Hydari, Rahul Telang摘要: 软件漏洞允许恶意黑客利用,威胁系统和数据安全。本文研究了激励道德黑客发现并负责任地向软件供应商披…...

活动图与状态图:UML中流程图的精细化表达——专业解析系统动态性与状态变迁

流程图是一种通用的图形表示法,用以展示步骤、决策和循环等流程控制结构。它通常用于描述算法、程序执行流程或业务过程,关注于任务的顺序执行。流程图强调顺序、分支和循环,适用于详细说明具体的处理步骤,图形符号相对基础和通用…...

Easy TCP Analysis提供了四大特性,兼顾了TCP数据包分析入门学习到实战问题排查不同阶段用户对工具的需求

一款兼顾TCP数据包分析入门学习和实战不同阶段用户需求的工具 Easy TCP Analysis是一款在线TCP数据包分析工具,致力于让TCP数据包分析变得跟看聊天记录一样简单! Easy TCP Analysis提供了四大特性,兼顾了从入门学习到实战分析不同阶段用户对…...

【2】STM32·FreeRTOS·任务创建和删除

目录 一、任务创建和删除的API函数 1.1、动态创建任务函数 1.2、静态创建任务函数 1.3、任务删除函数 二、任务创建和删除(动态方法) 三、任务创建和删除(静态方法) 一、任务创建和删除的API函数 任务的创建和删除本质就是…...

日志审计系统在提高网络安全方面具有哪些重要的作用

随着信息技术的飞速发展,我们正处于一个高度互联、数据驱动的网络时代。在这个时代,日志审计系统作为网络安全和信息管理的重要工具,发挥着至关重要的作用。下面德迅云安全就详细介绍下关于日志审计系统在当今网络时代的重要性。 一、什么是日…...

二维泊松方程(Neumann+Direchliet边界条件)有限元Matlab编程求解|程序源码+说明文本

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…...

13_Scala面向对象编程_伴生对象

文章目录 1.伴生对象1.1 scala的一个性质,scala文件中的类都是公共的;1.2 scala使用object关键字也可以声明对象; 3.关于伴生对象和类4.权限修饰符,scala仅有private;5.伴生对象可以访问伴生类中的私有属性;6.案例7.伴…...

RS485空调系统到BACnet江森楼宇系统的高效整合攻略

智慧城市的每一栋建筑都在追求更高的能效与更佳的居住体验,而这一切的实现离不开强大且灵活的楼宇自动化系统。其中,协议转换网关作为连接不同设备的纽带,扮演着至关重要的角色。本文将以一个典型的商业综合体为例,揭秘BACnet协议…...

Springboot集成Redis操作缓存-06

Redis简介 Redis(Remote Dictionary Server),即远程字典服务,是一个开源的、使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 功能特点 数据结构丰富&#…...

【WPF】聊聊WPF中INotifyPropertyChanged [TOC]

聊聊WPF中INotifyPropertyChanged 文章目录 聊聊WPF中INotifyPropertyChanged一、INotifyPropertyChanged接口二、DataContext2.1/DataContext作用2.2/DataContext特性2.3/DataContext实例 三、INotifyPropertyChanged接口的几种实现方式3.1/简单INotifyPropertyChanged绑定3.2…...

SpringBoot Actuator未授权访问漏洞的解决方法

1. 介绍 Spring Boot Actuator 是一个用于监控和管理 Spring Boot 应用程序的功能模块。它提供了一系列生产就绪的功能,帮助你了解应用程序的运行状况,以及在运行时对应用程序进行调整。Actuator 使用了 Spring MVC 来暴露各种 HTTP 或 JMX 端点&#x…...

AI大模型探索之路-训练篇18:大语言模型预训练-微调技术之Prompt Tuning

系列篇章💥 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概…...

Ollamallama

Olllama 直接下载ollama程序,安装后可在cmd里直接运行大模型; llama 3 meta 开源的最新llama大模型; 下载运行 1 ollama ollama run llama3 2 github 下载仓库,需要linux环境,windows可使用wsl; 接…...

苹果Mac用户下载VS Code(Universal、Intel Chip、Apple Silicon)哪个版本?

苹果macOS用户既可以下载通用版(Universal),软件将自动检测用户的处理器并进行适配。 也可以根据型号下载对应CPU的版本: 使用Intel CPU的Mac电脑可下载Intel Chip版本; 使用苹果自研M系列CPU的Mac电脑下载Apple Si…...

Linux(Ubuntu)安装CGAL(非root)

一、安装boost 下载地址:Boost C Libraries - Browse /boost at SourceForge.net 我安装的是1.77.0的版本 ./bootstrap.sh --prefix/usr/local/boost ./b2 ./b2 install 配置环境变量 vim ~/.bashrcexport BOOST_INCLUDE/usr/local/boost/include export BO…...

hadoop学习---基于Hive的教育平台数据仓库分析案例(三)

衔接第一部分,第一部分请点击:基于Hive的教育平台数据仓库分析案例(一) 衔接第二部分,第二部分请点击:基于Hive的教育平台数据仓库分析案例(二) 学生出勤模块(全量分析)&#xff1a…...

RAFT:引领 Llama 在 RAG 中发展

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

上海亚商投顾:沪指缩量调整 合成生物概念股持续爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日缩量震荡调整,深成指、创业板指均跌超1%。细胞免疫治疗概念股大涨,冠昊生物、…...

Maven+Junit5 + Allure +Jenkins 搭建 UI 自动化测试实战

文章目录 效果展示Junit 5Junit 5 介绍Junit 5 与 Junit 4 对比PageFactory 模式编写自动化代码公共方法提取测试用例参数化Jenkins 搭建及配置参数化执行生成 Allure 报告Maven 常用命令介绍POM 文件效果展示 本 chat 介绍 UI 自动化测试框架的搭建: 运用 page factory 模式…...

docker学习笔记(三)搭建NFS服务实验

目录 什么是NFS 简单架构​编辑 一.搭建nfs服务器 二.新建共享目录和网页文件 三.设置共享目录 四:创建使用nfs共享目录的卷 五:创建容器使用nfs-web-1卷 六:测试访问 七:是否同步测试 什么是NFS NFS 服务器:ne…...

super关键字

super关键字 在Java中,super是一个关键字,它用于引用当前对象的父类。在继承的关系中,子类可以通过super关键字来调用父类的构造方法、成员方法和成员变量。 super关键字的主要用途 调用父类的构造方法: 在子类的构造方法中&…...

【经典算法】LeetCode 200. 岛屿数量(Java/C/Python3/Go实现含注释说明,中等)

目录 题目描述思路及实现方式一:深度优先搜索(DFS)思路代码实现Java版本C语言版本Python3版本Golang版本 复杂度分析 方式二: 使用广度优先搜索(BFS)思路代码实现Java实现C实现Python3实现Go实现 总结相似题…...

Hive SQL-DQL-Select查询语句用法详解

HQL Select用法详解 1.基础语法 (1)select_exp (2)ALL、DISTINCT (3)WHERE (4)分区查询、分区裁剪 (5)GROUP BY (6)HAVING &#xff0…...

沙盘Sandboxie v5.56.4

菜鸟高手裸奔工具沙盘Sandboxie是一款国外著名的系统安全工具,它可以让选定程序在安全的隔离环境下运行, 只要在此环境中运行的软件,浏览器或注册表信息等都可以完整的进行清空,不留一点痕迹。同时可以防御些 带有木马或者病毒的…...

Arcpy开发记录

一.GDB数据库相关 1.单独的shape更新时,不会有限制,数据会自动截取 2.在GDB下,使用UpdateCursor更新字段时,填入的数据长度必须与字段长度要求一致,否则报错: 二.Cursor相关 嵌套使用cursor时&#xff0c…...

Android使用itextpdf操作PDF文档

1、导入jar包: itext-asian.jaritextpdf-5.5.8.jar Paragraph 和 Phrase 的区别: 在 iTextPDF 库中,Paragraph 和 Phrase 是用于创建和组织文本内容的两个不同的类。 Paragraph(段落): Paragraph 是一个…...

llama_index微调BGE模型

微调模型是为了让模型在特殊领域表现良好,帮助其学习到专业术语等。 本文采用llama_index框架微调BGE模型,跑通整个流程,并学习模型微调的方法。 已开源:https://github.com/stay-leave/enhance_llm 一、环境准备 Linux环境,GPU L20 48G,Python3.8.10。 pip该库即可。…...

高端网站制作费用/网站软件免费下载

docker-compose.yml version: "2" services:eid-service:# 指定容器名称container_name: xxx-service# 重启机制restart: always# hub地址,image版本image: hub.xxx.cn/xxx-service/xxx-service:latestvolumes:# 本地jar包路径- /opt/service/1.5/xxx-se…...

企业网站写好如何发布/专业网站推广软件

论文题目:Extracting Entities and Events as a Single Task Using a Transition-Based Neural Model 论文来源:IJCAI 2019 武汉大学, 东华大学, 西湖大学 论文链接:https://www.ijcai.org/Proceedings/2019/753 代码链接:http…...

做视频网站 版权怎么解决/南通企业网站制作

简介 虚树,顾名思义就是不真实的树。 它往往出现在一类树形动态规划问题中。 换句话说,虚树实际就是为了解决一类树形动态规划问题而诞生的! 我们从一道经典的虚树题目入手 [SDOI2011]消耗战 链接:https://www.luogu.org/problemn…...

美国主机网站建设/百度95099如何转人工

这里使用的是淘宝的接口 public class AddressUtil{ /** * * param content * 请求的参数 格式为:namexxx&pwdxxx * param encodingString * 服务器端请求编码。如GBK,UTF-8等 * return * throws UnsupportedEncodingException */ public static String getAddr…...

魔方网站建设/关键词优化

目录:一 Web应用的组成二 开发一个Web应用2.1 S端的简单开发与Http协议2.2 结合http协议改进S端2.3 返回Html2.4 jinja2模块三 Web框架的由来3.1 wsgiref模块3.2 简单Web框架实现3.3 简单web框架的使用3.4 三大web框架简介与wsgi协议一 Web应用的组成​ 我们接下来学…...

wordpress计算器插件/宁波seo外包服务

在测试程序里面,我们使用的是一个测试函数,函数体内部可以通过改变YY的值来改变函数的耗时。测试对比是 循环调用XX次函数,和循环XX次函数内部的YY循环。结果发现,在YY足够小,X足够大的情况下,函数调用耗时…...