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

go语言语法基础

文章目录

  • 前言
  • 一、输入和输出
    • 常用的字符串格式化符号
  • 二、注释
  • 三、Go常用基本语言数据类型
    • 数字类型
    • 布尔类型
    • 字符类型
    • 变量与常量
    • 数组和切片
      • 数组
      • 切片
    • map类型
      • 创建map
      • 特别提醒
    • 指针
  • 四、运算符
  • 五、条件判断语句
    • if系列
    • switch
    • 六、循环语句
      • for循环标准写法
      • 死循环
      • while循环
      • do while
      • 类似python的for循环
      • 特别说明
  • 七、break和continue
  • 八、函数
    • 无参数无返回值
    • 有参数无返回值
    • 有多个参数的函数
    • 不定长参数的函数
    • 没有返回值的函数
    • 有返回值的函数
    • 有多个返回值的函数(注意)
    • 在返回值里定义变量(注意)
    • 闭包函数(匿名函数)
    • 将函数作为参数进行传递(注意)
    • 值传递与引用传递
    • 变量作用域
      • 特别说明
  • 九、类型转换
    • 数字之间转换
    • 字符型与数字类型之间的转换
      • 将string-->int
      • 将int-->string
      • 将string-->float
      • 将float-->string
  • 总结


前言

考完研了,最近在学校安排的培训机构实习(懂得都懂),培训机构有几个方向,我选了go语言后端(本人java很烂,尚硅谷200个小时的视频我是真看不下去),本文记录一下go语言的语法基础。
还有就是,本博文的学习资料来源是菜鸟教程和枫枫知道的博文,后面会附上链接。
他们就相当于字典,面面俱到,本博文就相当于笔记,写一些注意事项,适合有其他语言基础的快速熟悉go语言,我主要是写一些需要注意的地方,这是我与他们不一样的地方
菜鸟教程-go语言

枫枫知道博客

枫枫知道B站go语言教程


一、输入和输出

换行输出

fmt.Println()

格式化输出

fmt.Printf()

常用的字符串格式化符号

%v 按值的本来值输出
%#v 输出GO语言语法格式的值
%T 输出GO语言语法格式的类型和值
%b 整型以二进制方式显示
%o 整型以八进制方式显示
%d 整型以十进制方式显示
%x 整型以十六进制方式显示
%X 整型以十六进制、字母大写方式显示
%f 浮点数
%p 指针,十六进制方式显示
%c 该值对应的unicode码值

输入

var a int//首先定义一个变量
fmt.Scan(&a)//然后写输入函数,记得带指针

二、注释

单行注释
//
多行注释
/*
*/

三、Go常用基本语言数据类型

数字类型

数字类型分为整型和浮点型,这个在其他语言里面也有,不再说了。
这里只想强调几点

1.我上面写的所有数据类型,请分别看成是一种数据类型,就是int是int,int8是int8,他们不是等价的
在这里插入图片描述
2.没有特殊需求,整数用int其实就行了。
3.uint是无符号整数,具体什么是无符号整数,百度或gpt吧,要是详细说都能写篇写小作文了。

布尔类型

其他语言也有布尔类型,这里依然只想强调1点

在go语言,1不能代表true,0不能代表false
在这里插入图片描述
在这里插入图片描述

字符类型

go语言里面跟很多语言也是一样的,分为byte和string类型,
在这个基础上,go语言还有个rune类型。
然后就是强调环节
go语言不像python,对于byte类型和string类型区别不明显。

在go语言里面,byte必须用 ‘’,也就是单引号给引起来
string类型使用双引号给引起来,如果需要输入很多文字,使用反单引号给引起来,也就是1左边的那个符号

var a byte = 'a'fmt.Printf("%c %d\n", a, a)var a1 uint8 = 97fmt.Printf("%c %d\n", a1, a1)

go语言里面的源码
在这里插入图片描述
rune这种数据类型跟byte的作用差不多,用来转换对应的码

var z rune = '中'
fmt.Printf("%c %d\n", z, z)

还有就是默认值问题,在go语言里面,如果你声明了一个变量,但是没有赋值,那么这个变量的值就是对应变量的零值
int就是0, bool就是false,字符串就是""

	var n stringvar age intvar sex boolfmt.Printf("%#v\n", n)fmt.Printf("%#v\n", age)fmt.Printf("%#v\n", sex)

变量与常量

这里想说的是,
常量使用const来声明,必须在声明的时候就初始化,且一但初始化后就不能修改。

还有就是变量的声明,go语言的类型是在写后面,如果你之前写过java,刚开始应该是不太适应,写多了慢慢就适应了。

变量的声明有多种写法,选一个你喜欢的写就行了。这里也会写一些几种变量的声明。

//指定变量的类型
var a string = "hello world"
var b int = 1
var c, d int = 1, 2
//自行推断类型
var a = 1
a := 50 //先声明变量,后初始化
var a int
a = 1

注:后面的数组,切片,map等还可以使用make初始化

数组和切片

数组

数组类型就很像java里面的静态数组,确定大小后就不能改了,
想要扩大就要写代码来扩大数组,限制比较多。然后这个数组类型也支持索引,但是不支持逆向索引(就是从后面往前面数是,-1,-2,-3,…),下面写一个代码就行了

还有就是要注意边界值!!!

var nameList [3]string = [3]string{"ss", "aa", "bb"}fmt.Println(nameList)//索引,go语言没有逆向索引fmt.Println(nameList[0])fmt.Println(nameList[2])fmt.Println(nameList[len(nameList)-1])

这里想说的就是,go语言里面初始化数据类型的方式比较多,选一个自己喜欢的写法就行了。

切片

切片类型(Slice)就很像python里面的list,也就是动态数组
关于切片需要注意两个问题
1.长度和容量问题
在go语言里面长度指的是这个切片里面有多少个元素,容量是指底层里面可以装多少个元素。
我个人理解是,就相当于水杯,长度就是水杯里面有多少水,容量就是,这个杯子最大可以装多少水。
然后就是,切片类型当然支持自动扩容。

2.引用问题
切片是引用类型,切片是引用类型,多个切片可以引用同一个底层数组。修改一个切片的元素可能会影响其他引用了同一底层数组的切片。

关于切片就说这么多,这个需要多练,才能掌握。

map类型

map类型就是python里面的字典

创建map

这里还是要说一下,创建map依然有好几个写法,选一个自己喜欢的写就行了

var usermap  = map[int]string{1: "枫枫",2: "张三",4: "",}fmt.Println(usermap)

fmt.Println(usermap)//增加usermap[5] = "你好"fmt.Println(usermap)

在这里插入图片描述

delete(usermap, 4)fmt.Println(usermap)

在这里插入图片描述

	usermap[1] = "枫枫知道"fmt.Println(usermap)

在这里插入图片描述

fmt.Println(usermap[1])

在这里插入图片描述

特别提醒

map必须初始化才能使用

	var amap map[string]stringamap["name"] = "枫枫"fmt.Println(amap)

在这里插入图片描述

指针

我是觉得跟c语言里面的指针是一模一样,请看下面这段代码

var ip *int       var a int
fmt.Scan(&a)func deliver2(num *int) int {*num += 1return *num
}

跟c语言是不是一模一样

四、运算符

关于运算符,go语言里面该有的都有,这里依然只强调几点

1.go语言里面只有右++,没有左++,减减也是一样的(说说实话,我是觉得左右加加减减是不利于代码维护以及阅读,这样只有一个反而好一点,就那个左右加加减减的面试题,现在让我做我也不一定做的对)

2.记不住优先级就加括号
在这里插入图片描述
在这里插入图片描述

五、条件判断语句

这里只想写个写法,跟其他有没有除了写法没有其他区别

if系列

如果你学过其他语言,稍微看一下就行了


if 布尔表达式 {//是的,条件这里没有括号/* 在布尔表达式为 true 时执行 */
}if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
} else {/* 在布尔表达式为 false 时执行 */
}
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
} else if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
} else {/* 在布尔表达式为 false 时执行 */
}//中断式 谓语句if age <= 0 {fmt.Println("未出生")return}if age <= 18 {fmt.Println("未成年")return}if age <= 35 {fmt.Println("青少年")return}fmt.Println("中年")
//嵌入式写法if age <= 18 {if age <= 0 {fmt.Println("未出生")} else {fmt.Println("未成年")}} else {if age <= 35 {fmt.Println("青年")} else {fmt.Println("中年")}}

switch

这里要注意
1.go语言里面的switch case 默认case后面自带break(是的,不会出现java里面没写break,然后执行到其他case的情况)

2.go语言里面的case可以写判断条件(我记得java里面就是只能写个数字)
下面两段代码,看一下就行了

func main() {fmt.Println("请输入你的年龄:")var age intfmt.Scan(&age)switch {case age <= 0:fmt.Println("未出生")case age <= 18:fmt.Println("未成年")case age <= 35:fmt.Println("青年")default:fmt.Println("中年")}
}
func main() {fmt.Println("请输入星期数字:")var week intfmt.Scan(&week)switch week {case 1:fmt.Println("周一")case 2:fmt.Println("周二")case 3:fmt.Println("周三")case 4:fmt.Println("周四")case 5:fmt.Println("周五")case 6, 7:fmt.Println("周末")default:fmt.Println("错误")}
}

六、循环语句

go语言里面的循环语句只有for语句,没有while语句。

go语言的理念里,认为for循环也可以实现while循环,所以就没有while循环

还有就是go语言里面也没有do while语句,但是也可以使用for循环来实现。

下面就是代码

for循环标准写法

//求100以内的和
//跟java,c是不是很像
//但我不知道为什么go语言不喜欢写括号
sum := 0for i := 0; i <= 100; i++ {fmt.Println(i)sum += i}fmt.Println(sum)

死循环

	//死循环for i := 0; true; i++ {}//这样写死循环也是可以的for true{}for {}

while循环

//go语言没有while循环,下面是go语言里面的while模式var sum intvar i int = 1for i <= 100 {sum += ii++}fmt.Println(sum)

do while

	//do while 模式sum := 0var i int = 1for {sum += ii++if i == 101 {break}}fmt.Println(sum)

类似python的for循环

//类似python一样的for循环var list = []string{"枫枫", "知道"}for index, item := range list {fmt.Println(index, item)}

特别说明

go语言认为变量定义了就要使用,不然就会报错,你不使用这个变量就不要定义。但是我们必须要接收两个变量该怎么办呢?
可以使用下划线来代替这个变量,这个在go语言里面就可以理解为占位用的。比如下面这段代码

var list = []string{"枫枫", "知道"}for _, item := range list {fmt.Println(index, item)}

在这段代码中,假如我不需要index,就可以写成下划线。

七、break和continue

跟其他语言里面的作用是一模一样,没有要补充的

八、函数

go语言里面的函数,我愿称之为抽象,在这里插入图片描述我是真没见过如此抽象的东西,我都不知道这里能不能写清楚。

我在之前说go语言里面 if 和 for 循环不知道为什么不喜欢写括号,现在你会函数里面疯狂写括号在这里插入图片描述
先来简单一点

无参数无返回值

func sayHello() {fmt.Println("hello")
}

有参数无返回值

func param1(id string) {fmt.Println(id)
}

有多个参数的函数

func param2(id string, userName string) {fmt.Println(id, userName)
}// 当多个参数的数据类型相同的时候,写一个就行了
func param3(id, userName string) {fmt.Println(id, userName)
}

不定长参数的函数

类比python里面的不定长参数

// 没有确定长度的参数
func add(numerList ...int) {var sum intfor _, i2 := range numerList {sum += i2}fmt.Println(sum)
}

没有返回值的函数

// 没有返回值的函数
func r1() {// 没有返回值return
}

有返回值的函数

func r2() bool {return false
}

有多个返回值的函数(注意)

友友们,注意了,第一个括号来了,如果你想返回多个值,要加个括号。这里算是go语言的特性,我记得java基础里面函数是只能返回一个数据,python里面,虽然return可以返回多个变量,但是python会自动给你转成tuple类型,但是这里就真的是多个变量,你接收的时候也需要多个变量

// 有多个返回值的函数
func r3() (string, bool) {return "", false
}
func main() {a, b := r3()fmt.Printf("%#v,%#v", a, b)}

在返回值里定义变量(注意)

友友们还记得上面我们说的默认值吗?这里可以说是go语言的特性。
在返回值里定义了参数,然后直接写个return就会默认返回定义在返回值里面的数,我们也可以对返回值里的变量进行修改,那么,最后返回的时候,就是我们修改过的返回的变量。

func r4() (val string, ok bool) {if true {val = "12"return}return
}func main() {a, b := r4()fmt.Printf("%#v,%#v", a, b)}

闭包函数(匿名函数)

 // 定义一个匿名函数并将其赋值给变量addadd := func(a, b int) int {return a + b}// 调用匿名函数result := add(3, 5)fmt.Println("3 + 5 =", result)

将函数作为参数进行传递(注意)

go语言里面还可以将函数作为参数来进行传递。
注意,go语言里面不能写函数嵌套,但是我们可以将函数作为参数进行传递,来实现嵌套(其实还是匿名函数)

func awaitAdd(awaitSecond int) func(...int) int {return func(numberList ...int) (sum int) {for _, i2 := range numberList {sum += i2}return sum}
}func getSequence() func() int {i:=0return func() int {i+=1return i  }
}

值传递与引用传递

一句话就是,值传递相当于传递了变量的副本,函数内部是对变量的副本进行修改,不会对变量本身产生任何影响,引用传递就是把变量的指针给传递过去,这样函数内部的任何变化也会引起外部变量的修改。写法跟c语言是一模一样

package mainimport "fmt"func deliver(num int) int {num += 1return num
}func deliver2(num *int) int {*num += 1return *num
}func main() {num := 1fmt.Println("没有传递给deliver之前的值:", num)fmt.Println("经过deliver之后的值", deliver(num))fmt.Println("外面的值", num)//&是取地址,*是解引用,去这个地址指向的值fmt.Println("没有传递给deliver2之前的值:", num)fmt.Println("经过deliver之后的值", deliver2(&num))fmt.Println("外面的值", num)}

变量作用域

看代码吧,简单说就是定义在任何函数之外的变量。

package main
//全局变量
var a int = 1
func main() {
//局部变量和
var b int = 1
}

特别说明

在全局变量里面,使用const定义的常量 ,大写开头可以被其他go语言文件访问到,但是小写开头不行。

package versionconst Version = "1.1.1.1"

九、类型转换

说明一下,go语言不支持隐式转换类型,必须要写怎么转

数字之间转换

var a int = 10
var b float64 = float64(a)

字符型与数字类型之间的转换

将string–>int

var str string = "10"
var num int
num, _ = strconv.Atoi(str)

将int–>string

 num := 123str := strconv.Itoa(num)fmt.Printf("整数 %d  转换为字符串为:'%s'\n", num, str)

将string–>float

  str := "3.14"num, err := strconv.ParseFloat(str, 64)if err != nil {fmt.Println("转换错误:", err)} else {fmt.Printf("字符串 '%s' 转为浮点型为:%f\n", str, num)}

将float–>string

 num := 3.14str := strconv.FormatFloat(num, 'f', 2, 64)fmt.Printf("浮点数 %f 转为字符串为:'%s'\n", num, str)

总结

到这里,go语言基础部分讲的差不多了,剩下的就是go语言的类似面向对象的东西(结构体,接口),异常处理,I/O操作,反射,泛型,协程,channel(特性)等东西了。后面我还会再写,今天再放在一起就太多了。然后,有什么问题可以提出来,博主看到后会马上修改。谢谢。
记得点个赞和收藏

相关文章:

go语言语法基础

文章目录 前言一、输入和输出常用的字符串格式化符号 二、注释三、Go常用基本语言数据类型数字类型布尔类型字符类型变量与常量数组和切片数组切片 map类型创建map增删改查特别提醒 指针 四、运算符五、条件判断语句if系列switch六、循环语句for循环标准写法死循环while循环do …...

eclipse 和java环境的安装教程

安装 Eclipse 和配置 Java 环境是一个多步骤的过程&#xff0c;涉及到安装 Java Development Kit (JDK) 和 Eclipse IDE。以下是基本步骤&#xff1a; 安装 Java Development Kit (JDK) 下载 JDK&#xff1a; 访问 Oracle 官方网站&#xff08;Oracle JDK&#xff09;或者选择…...

Win11系统的优化方法参考文档(彻底优化策略)

目录 一、个性化-应用-关闭防火墙等的设置 二、任务栏优化设置 三、Win11开始菜单更改为Win10经典菜单 四、将Micresoft Store 从固定任务栏取消 五、电源性能优化 六、解决卡顿 七、卸载系统自带软件 八、任务管理器开机启动项的禁用 九、调整为最佳性能 十…...

Leetcode13-解密消息(2325)

1、题目 给你字符串 key 和 message &#xff0c;分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下&#xff1a; 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。 将替换表与普通英文字母表对齐&#xff0c;形成对照表。 按照对照表 …...

二进制安装包安装Prometheus插件安装(mysql_exporter)

简介 mysql_exporter是用来收集MysQL或者Mariadb数据库相关指标的&#xff0c;mysql_exporter需要连接到数据库并有相关权限。既可以用二进制安装部署&#xff0c;也可以通过容器形式部署&#xff0c;但为了数据收集的准确性&#xff0c;推荐二进制安装。 一&#xff0c;下载安…...

原生微信小程序如何动态修改svg图片颜色及尺寸、宽高(封装svgIcon组件)

最终效果 前言 动态设置Svg图片颜色就是修改Svg源码的path中的fill属性&#xff0c; 通过wx.getFileSystemManager().readFile读取.xlsx文件 把文件转成base64 封装svg-icon组件 1、在项目的components下新建svg-icon文件夹&#xff0c;新增base64.js文件 class Base64 {cons…...

Python从入门到网络爬虫(面向对象详解)

前言 Python从设计之初就已经是一门面向对象的语言&#xff0c;正因为如此&#xff0c;在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以前没有接触过面向对象的编程语言&#xff0c;那你可能需要先了解一些面向对象语言的一些基本…...

NPDP产品经理含金量高吗?难考吗?

NPDP的中文翻译为产品经理国际资格认证。NPDP考试起源于美国&#xff0c;由美国产品开发与管理协会&#xff08;PDMA&#xff09;发起。NPDP认证是集理论、方法与实践为一体的全方位知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。&#xff0…...

目标检测 YOLOv5 - 推理时的数据增强

目标检测 YOLOv5 - 推理时的数据增强 flyfish 版本 YOLOv5 6.2 参考地址 https://github.com/ultralytics/yolov5/issues/303在训练时可以使用数据增强&#xff0c;在推理阶段也可以使用数据增强 在测试使用数据增强有个名字叫做Test-Time Augmentation (TTA) 实际使用中使…...

篇二:springboot2.7 OAuth2 server使用jdbc存储RegisteredClient

上一篇 <<springboot 2.7 oauth server配置源码走读一>>中简单描述了oauth2 server的配置&#xff0c;其中使用了内存保存 RegisteredClient&#xff0c;本篇改用mysql存储。 db存储需要创建表&#xff0c;表结构应该是什么样的呢&#xff0c;从spring给我们封装好…...

卷积神经网络|导入图片

在学习卷积神经网络时&#xff0c;我们通常使用的就是公开的数据集&#xff0c;这里&#xff0c;我们不使用公开数据集&#xff0c;直接导入自己的图片数据&#xff0c;下面&#xff0c;就简单写个程序实现批量图片的导入。 import osfrom PIL import Imageimport numpy as np…...

关于unity的组件VerticalLayoutGroup刷新显示不正常的问题

先说明一下我是如何用到&#xff0c;有哪些处理的 用到这个组件基本上都是将列表进行排版操作的&#xff0c;竖着&#xff0c;或者横着&#xff0c;横着用HorizontalLayoutGroup 还有一个和这个组件搭配的组件叫ContentSizeFitter 先说我是怎么发现这个组件不好用的 //本地读取…...

wait 和 notify 这个为什么要在synchronized 代码块中?

一个工作七年的小伙伴&#xff0c;竟然不知道” wait”和“notify”为什么要在 Synchronized 代码块中 。 好吧&#xff0c;如果屏幕前的你也不知道&#xff0c;请在公屏上刷”不知道“。 对于这个问题&#xff0c;我们来看看普通人和高手的回答。 一、问题解析 1. wait 和 n…...

大白话说区块链和通证

1 区块链 简单地说&#xff0c;区块链其实就像是一个不可篡改的分布式数据库&#xff0c;该分布式数据库记录了一系列交易或事件。区块链运行在至少1个以上的节点上&#xff0c;每个节点都有自己的一个分布式数据库&#xff0c;也就是分布式账本。正常情况下&#xff0c;每个节…...

Jvm之垃圾收集器(个人见解仅供参考)

问&#xff1a;什么是垃圾收集算法中的分代收集理论&#xff1f; 答&#xff1a;分代收集理论是垃圾收集算法的一种思想&#xff0c;根据对象存活周期的不同将内存分为几块&#xff0c;一般将java堆分为新生代和老年代。这种理论使得我们可以根据各个年代的特点选择合适的垃圾收…...

Minitab 21软件安装包下载及安装教程

Minitab 21下载链接&#xff1a;https://docs.qq.com/doc/DUkNHZVhwTXhtTFla 1.选中下载好的安装包&#xff0c;鼠标右键解压到”Minitab 21“文件夹 2.选中”Setup.exe“&#xff0c;鼠标右击选择“以管理员身份运行” 3.点击“下一步” 4.点击“是” 5.点击“下一步” 6.勾选…...

Java版商城:Spring Cloud+SpringBoot b2b2c电子商务平台,多商家入驻、直播带货及免 费 小程序商城搭建

​随着互联网的快速发展&#xff0c;越来越多的企业开始注重数字化转型&#xff0c;以提升自身的竞争力和运营效率。在这个背景下&#xff0c;鸿鹄云商SAAS云产品应运而生&#xff0c;为企业提供了一种简单、高效、安全的数字化解决方案。 鸿鹄云商SAAS云产品是一种基于云计算的…...

阿里云被拉入黑洞模式怎么办?该怎么换ip-速盾网络

被拉入黑洞模式&#xff08;BGP黑洞路由&#xff09;意味着所有进入目标IP的流量都会被丢弃&#xff0c;从而导致目标IP对外完全不可访问。这种情况通常发生在面对大规模DDoS攻击时&#xff0c;为了防止攻击流量对其他网络造成影响。如果你使用的是阿里云服务并遭受到这种攻击&…...

Android 13.0 recovery竖屏界面旋转为横屏

1.概述 在13.0系统项目定制化开发中,由于平板固定横屏显示,而如果recovery界面竖屏显示就觉得怪怪的,所以需要recovery页面横屏显示的功能, 所以今天就来解决这个问题 2.实现功能相关分析 Android的Recovery中,利用 bootable\recovery下的minui库作为基础,采用的是直接…...

异地环控设备如何远程维护?贝锐蒲公英解决远程互联难题

青岛某企业致力于孵化设备、养禽设备和养猪设备的研发、生产和服务&#xff0c;历经三十多年发展&#xff0c;目前已成长为行业主要的养殖装备及工程服务提供商&#xff0c;产品覆盖养殖产业链中绝大多数环节&#xff0c;涉及自动化设备、环控设备、整体解决方案等。 在实际应用…...

flutter 判断是否是web环境

代码如下 import package:flutter/foundation.dart show kIsWeb;void main() {if (kIsWeb) {print(Running on the web!);} else {print(Not running on the web!);} } 如果是使用 Platform.isAndroid 会报错 所以使用上面的方式...

视频智能分析/云存储平台EasyCVR接入海康SDK,通道名称未自动更新该如何解决?

视频监控GB28181平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#xff0c;也能…...

后端开发——JDBC的学习(三)

本篇继续对JDBC进行总结&#xff1a; ①通过Service层与Dao层实现转账的练习&#xff1b; ②重点&#xff1a;由于每次使用连接就手动创建连接&#xff0c;用完后就销毁&#xff0c;这样会导致资源浪费&#xff0c;因此引入连接池&#xff0c;练习连接池的使用&#xff1b; …...

Redis 生产环境查找无过期时间的 key

在项目中,Redis 不应该被当作传统数据库来使用;储存大量没有过期时间的数据。如果储存大量无过期时间,而且无效的key的话;再加上 Redis 本身的过期策略没有被正确设置,就会大量占用内存。这样就会导致再多的内存资源也不够用。 情况大致是这样,项目中采用 Redis 二级存储…...

Visual Studio 2017编译Python3.8.18源码

一直纠结Python的开发环境没有升级到最新版3.8.18。这是当前的最新版&#xff0c;正在用的版本3.8.10。他是官方制作出安装包的最新版。 1、准备Visual C 2017的开发环境包括但不限于使用C的桌面开发x64 2、在Python官网下载Python3.8.18的源码。 3、解压缩源码 4、进入控制…...

【mujoco】Ubuntu20.04中解决mujoco报错raise error.MujocoDependencyError

【mujoco】Ubuntu20.04中解决mujoco报错raise error.MujocoDependencyError 文章目录 【mujoco】Ubuntu20.04中解决mujoco报错raise error.MujocoDependencyError1. 报错的具体情况2. 解决过程3. 其他问题3.1 ModuleNotFoundError: No module named OpenGL3.2 ModuleNotFoundEr…...

机器学习的三个方面

1 机器学习的三个方面 1.1 数据 包括数据采集、增强和质量管理&#xff0c;相当于给人工智能模型学习什么样的知识 第一、什么专业的知识&#xff1b; 第二、知识是否有体系&#xff0c;也就是说样本之间是否存在某种关联、差异等&#xff0c;这个涉及到样本选择等问题&#x…...

关于一名资深Java程序员在移动端的进阶之路

今天呢&#xff0c;就借此机会&#xff0c;跟大家聊一聊我的个人职业经历吧&#xff01; 那年刚毕业 刚毕业时候&#xff0c;入职的第一家公司&#xff0c;进去后&#xff0c;说实话&#xff0c;没有太大成长吧&#xff01;基本就是让我做一些可有可无的边缘性的工作&#xff…...

clickonce excel 插件发布安装的原理

ClickOnce 是一种由 Microsoft 提供的部署技术&#xff0c;用于简化和加速Windows应用程序的部署。ClickOnce 可以用于部署各种类型的应用程序&#xff0c;包括 Excel 插件。 以下是 ClickOnce Excel 插件发布和安装的一般原理&#xff1a; 1. 发布应用程序&#xff1a; -…...

关于MySQL Cluster

目录 1.MySQL Cluster2.MySQL Cluster架构3.MySQL Cluster 与 MySQL 主从架构有什么区别4.参考 MySQL Cluster是MySQL的一个高可用性&#xff0c;高性能的分布式数据库解决方案。它结合了内存数据库和共享无状态架构的技术&#xff0c;提供了99.999%的可用性&#xff0c;满足严…...

网站制作公司知道万维科技/网站一级域名和二级域名

Android之路 – 3步完成多语言支持 转自&#xff1a; http://www.cnblogs.com/JamesL/archive/2011/06/08/2075763.htmlGoogle不愧是跨国企业&#xff0c;连开发出的系统都能轻松支持多语言支持。 以英文和简体中文两种语言为例&#xff0c;3步完成&#xff1a; 1. 新建项目后…...

网站开发的外文文献/拓客渠道有哪些

入门案例测试数据表结构介绍导入测试数据按照日期统计订单总额/总数量&#xff08;Hive方式&#xff09;按照日期统计订单总额/总数量&#xff08;Kylin方式&#xff09;创建项目&#xff08;Project&#xff09;创建数据源&#xff08;DataSource&#xff09;创建模型&#xf…...

如何向百度提交网站/制作一个简单的html网页

一&#xff1a;关于设置window版找到设置很轻松&#xff0c;突然改用mac版死活找不到在哪里。2018.3版的mac webstorm setting换名字子了&#xff0c;叫preferences。在左上角苹果标志旁边&#xff0c;Webstorm目录下。点击就调出了window版那个setting界面了。二&#xff1a;第…...

网站 错误代码/百度推广点击一次多少钱

1.网络管理概念 网络接口和名称 &#xff1a;网卡 ip地址 网关 主机名称 路由 2.管理工具 net-tools: #安装包 ifconfig netstat 准备要废掉了。 ​ iproute: #安装包 ip #提供ip命令 3.临时设置网络 lo网卡 :本地回环网卡&#xff0c;本机上的服务自己访问自己…...

服装网站模块方案/广州seo优化公司

随便指定一个目录&#xff0c;判断它是否是一个合法的JDK目录(by quqi99) 作者&#xff1a;张华 发表于&#xff1a;2006-11-01 版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。 http://blog.csdn.net/quqi99…...

怎么在网站里添加cnzz统计/超级外链

1.在开发过程中&#xff0c;我们都会接触到token&#xff0c;token的作用是什么呢&#xff1f;主要的作用就是为了安全&#xff0c;用户登陆时&#xff0c;服务器会随机生成一个有时效性的token,用户的每一次请求都需要携带上token&#xff0c;证明其请求的合法性&#xff0c;服…...