(Golang) 牛客 在线编程 Go语言入门
文章目录
- 前言
- Go的学习资料链接
- AC代码
- 01 输出打印
- GP1 go的第一个程序
- 02 变量
- GP2 小明信息
- GP3 个人信息
- 03 常量
- GP4 国家名称
- 04 指针
- GP5 值和指针
- 05 字符串
- GP6 拼接字符串
- GP7 字符数量
- GP8 回文数
- 06 类型转换
- GP9 格式化字符串
- GP10 字符求和
- 07 运算符
- GP11 长方形的周长
- GP12 温度转换
- GP13 工程时间
- GP14 器材采购
- GP15 逻辑运算
- GP16 位运算
- GP17 联谊活动
- 08 数组
- GP18 保龄球
- 09 切片
- GP19 创建切片
- GP20 切片复制
- GP21 出队
- GP22 评委打分
- GP23 调整顺序
- GP24 判断两个切片是否有相同的元素
- GP25 合并有序数组
- GP26 置衣柜
- 10 map
- GP27 成绩表
- GP28 单词字符
- GP29 字符串构成
- GP30 不重复的数
- 11 条件语句
- GP31 年龄分段
- GP32 成绩判定
- GP33 游乐园门票
- GP34 推箱子
- 12 循环语句
- GP35 乘法口诀表
- GP36 坐标转换
- GP37 质量检查
- GP38 团队闯关
- 13 函数
- GP39 数字的阶乘
- GP40 绝对值
- GP41 加减乘除
- 14 结构体
- GP42 学生信息II
- GP43 学生信息III
- 15 接口
- GP44 动物和老虎
- 16 错误
- GP45 网络延迟
- GP46 体温异常
- END
前言
本文为牛客的在线编程的GO语言入门题集的个人解析
链接:牛客网在线编程_语法篇_GO语言入门
本人主语言C/C++ 来这边刷一下GO的入门语法题,这个题库很基础很入门真的就是纯考GO语法
本文虽然是展示AC代码,但实际是为了记录GO的各种基础语法,便于以后遗忘了可以查看
牛客的环境是版本:Go 1.14
Go的学习资料链接
相关资料链接:
Go 语言教程 | 菜鸟教程 (runoob.com)
《Go 入门指南》 | Go 技术论坛 (learnku.com)
Go by Example 中文版 (gobyexample-cn.github.io)
7天用Go从零实现分布式缓存GeeCache | 极客兔兔 (geektutu.com)
Go 语言设计与实现 | Go 语言设计与实现 (draveness.me)
AC代码
01 输出打印
GP1 go的第一个程序
package mainimport ("fmt"
)func main() {fmt.Println("Hello World!")
}
02 变量
GP2 小明信息
package mainimport ("fmt"
)type Person struct {name stringage intsex bool
}func main() {man := Person{"小明", 23, true}fmt.Printf("%s\n%d\n%v\n", man.name, man.age, man.sex)
}
GP3 个人信息
package mainimport "fmt"func main() {num, b := 0, falsefmt.Printf("\n%d\n%v\n", num, b)
}
03 常量
GP4 国家名称
package mainimport "fmt"func main() {const (China = "中国"English = "英国"America = "美国")fmt.Println(China)fmt.Println(English)fmt.Println(America)
}
04 指针
go 里的指针,有时用起来更像引用
GP5 值和指针
package mainfunc equal( a int , b int ) []bool {return []bool{&a == &b, a == b}
}
05 字符串
GP6 拼接字符串
package main
// import "fmt"func join( s []string ) string {var str string// _ 占位符,不会报错for _, ss := range s {str += ss}return str
}
GP7 字符数量
package main
// import "fmt"func count( s string ) int {runes := []rune(s) return len(runes)
}
GP8 回文数
package main
import "strconv"func isPalindrome( x int ) bool {str := strconv.Itoa(x)i, j := 0, len(str) - 1for ; i < j && str[i] == str[j]; i, j = i + 1, j - 1 {}return i >= j
}
06 类型转换
GP9 格式化字符串
知识点:
Go 使用 import 关键字来导入包
Go 可以使用 fmt.Sprintf 来格式化字符串,fmt.Sprintf(格式化样式, 参数列表…),格式化样式如下:
%v 按值的本来值输出
%+v 在 %v 基础上,对结构体字段名和值进行展开
%#v 输出 Go 语言语法格式的值
%T 输出 Go 语言语法格式的类型和值
%% 输出 % 本体
%b 整型以二进制方式显示
%o 整型以八进制方式显示
%d 整型以十进制方式显示
%x 整型以十六进制方式显示
%X 整型以十六进制、字母大写方式显示
%U Unicode 字符
%f 浮点数
%p 指针,十六进制方式显示
package main
import "strconv"func formatstr( num int ) string {return strconv.Itoa(num)
}
GP10 字符求和
知识点:
golang strconv.ParseInt 是将字符串转换为数字的函数,参数1 数字的字符串形式,参数2 数字字符串的进制 比如二进制 八进制 十进制 十六进制,参数3 返回结果的bit大小 也就是int8 int16 int32 int64
package main
import "strconv"func sum( a string , b string ) string {anum, _ := strconv.Atoi(a)bnum, _ :=strconv.Atoi(b)return strconv.Itoa(anum + bnum)
}
07 运算符
GP11 长方形的周长
package main
// import "fmt"func perimeter( a int , b int ) int {return 2 * (a + b)
}
GP12 温度转换
package main
// import "fmt"func temperature( f float64 ) float64 {return (f - 32.0) / 1.8
}
GP13 工程时间
package mainimport ("fmt"
)
func main() {const Day = 97fmt.Println(Day / 7)fmt.Println(Day % 7)
}
GP14 器材采购
package main
import "sort"func compare( x int , y int , z int ) int {nums := []int{x, y, z}sort.Ints(nums)return nums[len(nums) - 1] - nums[0]
}
GP15 逻辑运算
package main
// import "fmt"func logicalOperation( a bool , b bool ) []bool {return []bool {a && b, a || b, !a, !b}
}
GP16 位运算
package main
// import "fmt"func bitOperate( a int , b int ) []int {return []int {a & b, a | b, a ^ b}
}
GP17 联谊活动
package main
// import "fmt"func odevity( x int ) bool {return (x & 1) == 0
}
08 数组
GP18 保龄球
package mainimport "fmt"func main() {// ... 可加可不加arr := [...]int{2, 5, 4, 6, 5}fmt.Println(arr)
}
09 切片
GP19 创建切片
package main
// import "fmt"func makeslice( length int , capacity int ) []int {// 类似于vector 的长度和容量arr := make([]int, length, capacity)// for i := 0; i < length; i += 1 {for i, _ := range arr {arr[i] = i}return arr
}
GP20 切片复制
知识点:
copy :函数 copy 在两个 slice 间复制数据,复制长度以 len 小的为准。
两个 slice 可指向同一底层数组,允许元素区间重叠。
package main
// import "fmt"/* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param src int整型一维数组 源切片* @param des int整型一维数组 目的切片* @return int整型一维数组
*/
func sliceCopy( src []int , des []int ) []int {// 可以省略第三个参数des = make([]int, len(src), cap(src))// 有一个拷贝到前一个copy(des, src)return des
}
GP21 出队
知识点:
s|n| 切片s中索引位置为n的项
s|:| 从切片s的索引位置0到len(s)-1 处所获得的切片
s|low:| 从切片s的索引位置 low 到len(s)-1 处所获得的切片
s|:high| 从切片s的索引位置 0到high 处所获得的切片,len=high
s|low: high| 从切片s的素引位置 Iow 到high 处所获得的切片,len-high-low
s|low: high:max| 从切片s的素引位置 low 到high 处所获得的切片,len-high-low, cap=max-low
package main
// import "fmt"func deleteElement( s []int , index int ) []int {return append(s[:index], s[index + 1:]...)
}
GP22 评委打分
知识点:
goalng, int64最大值,最小值, 大小比较,多返回值
golang中有符号的最大值为math.MaxInt64,最小值为math.MinInt64
切片的遍历有两种方式,for循环和for range循环
package main
import "sort"func minAndMax( s []int ) []int {sort.Ints(s)return []int{s[0], s[len(s) - 1]}
}
GP23 调整顺序
知识点:
len(slice)求一个切片的长度
for循环遍历切片
golang提供了多重赋值的特性可以轻松实现变量的交换,变量一,变量二 := 变量二,变量一
package main
// import "fmt"func convert( s []int ) []int {n := len(s)for i := 0; i < n / 2; i += 1 {s[i], s[n - 1 - i] = s[n - 1 - i], s[i]}return s
}
GP24 判断两个切片是否有相同的元素
package main
// import "fmt"func equal( s1 []int , s2 []int ) bool {var n, m = len(s1), len(s2)if n != m {return false}for i := 0; i < n; i += 1 {if s1[i] != s2[i] {return false}}return true
}
package main
import "reflect"func equal( s1 []int , s2 []int ) bool {return reflect.DeepEqual(s1, s2)
}
GP25 合并有序数组
package main
// import "fmt"func merge( nums1 []int , m int , nums2 []int , n int ) []int {if m == 0 {return nums2} else if n == 0 {return nums1}i, j := m - 1, n - 1for k := m + n - 1; i != 0 || j != 0; k += -1 {// else 不准另起一行if i == 0 {nums1[k] = nums2[j]j += -1} else if j == 0 {nums1[k] = nums1[i]i += -1} else {if nums1[i] > nums2[j] {nums1[k] = nums1[i]i += -1} else {nums1[k] = nums2[j]j += -1}}}return nums1
}
GP26 置衣柜
package mainimport "fmt"func main() {fmt.Println([]string{"帽子", "围巾", "衣服", "裤子", "袜子"})
}
10 map
GP27 成绩表
package mainimport ("fmt"
)func main() {mp := map[string]int{"小明": 60, "小王": 70, "张三": 95, "张伟": 88, "李四": 98, "王五": 100}fmt.Println(mp)
}
package mainimport ("fmt"
)func main() {// 多行map最后一个键值对后面也必须加逗号mp := map[string]int{"小明": 60, "小王": 70, "张三": 95, "张伟": 88, "李四": 98, "王五": 100,}fmt.Println(mp)
}
GP28 单词字符
遍历字符串的每个字符
- range(0, n - 1)
- string -> []byte
package main
// import "fmt"func character( s string ) byte {cnt := map[byte]int{}var ans bytek := 0for _, b := range ([]byte)(s) {cnt[b] += 1if k < cnt[b] {k = cnt[b]ans = b}}return ans
}
GP29 字符串构成
package main
// import "fmt"func canConstruct( des string , src string ) bool {vis := map[byte]int{}for _, b := range ([]byte)(src) {vis[b] += 1}for _, b := range ([]byte)(des) {vis[b] += -1if vis[b] < 0 {return false}}return true
}
GP30 不重复的数
知识点:
1,map用make方式进行初始化
2,切片可以用[]int{}的方式进行初始化
3,for range遍历切片
4,_,ok :=map[key]的方式判断m中的key是否存在
5,切片用append方式进行追加
package main
import "sort"func getNoRepeat( s []int ) []int {cnt := map[int]int{}for _, x := range(s) {cnt[x] += 1}ans := make([]int, 0)for k, v := range cnt {if v == 1 {ans = append(ans, k)}}sort.Ints(ans)return ans
}
11 条件语句
GP31 年龄分段
package main
// import "fmt"func getAge( age int ) string {if age >= 0 && age < 1 {return "婴儿"} else if age >= 1 && age <= 4 {return "幼儿"} else if age >= 5 && age <= 11 {return "儿童"} else if age >= 12 && age <= 18 {return "少年"} else if age >= 19 && age <= 35 {return "青年"} else if age >= 36 && age <= 59 {return "中年"} else {return "老年"}
}
package mainfunc getAge(age int) string {// switch不会穿透,不是return也不会执行下一个caseswitch {case age > 59:return "老年"case age > 35:return "中年"case age > 18:return "青年"case age > 11:return "少年"case age > 4:return "儿童"default:return "幼儿"}
}
GP32 成绩判定
package main
// import "fmt"func judgeScore( score int ) string {switch {case score < 60:return "不及格"case score < 80:return "中等"case score < 90:return "良好"default:return "优秀"}
}
GP33 游乐园门票
package main
// import "fmt"func ispay( hight float64 ) bool {if hight < 160.0 {return false} return true
}
GP34 推箱子
package main
// import "fmt"func pushBox( forwards string ) bool {x, y := 0, 0for _, b := range forwards {// 单引号表示字符switch b {case 'U':y += 1case 'D':y += -1case 'R':x += -1case 'L':x += 1}}return x == 0 && y == 0
}
12 循环语句
GP35 乘法口诀表
package mainimport "fmt"func main() {for i := 1; i <= 9; i += 1 {for j := 1; j <= i; j += 1 {fmt.Printf("%d*%d=%-3d", j, i, i * j)}fmt.Printf("\n")}
}
GP36 坐标转换
package main
// import "fmt"func transform( array [][]int ) []int {ans := []int{}n, m := len(array), len(array[0])// 遍历二维数组for i := 0; i < n; i += 1 {for j := 0; j < m; j += 1 {ans = append(ans, array[i][j])}}return ans
}
package main
// import "fmt"func transform( array [][]int ) []int {ans := []int{}n:= len(array)// 将一维数组展开for i := 0; i < n; i += 1 {ans = append(ans, array[i]...)}return ans
}
GP37 质量检查
package main
// import "fmt"func check( material []int , standard int ) []int {ans := []int{}for _, x := range material {if x >= standard {ans = append(ans, x)}}return ans
}
GP38 团队闯关
package mainfunc canPass( score []int , target int ) bool {for _, x := range score {if x > target {return true}}return false
}
13 函数
GP39 数字的阶乘
package main
// import "fmt"func factorial( i int ) int {if i == 0 {return 1}return i * factorial(i - 1)
}
GP40 绝对值
package main
import "math"func absfunc( x int ) int {// 入参,反参都是 floatreturn int(math.Abs(float64(x)))
}
GP41 加减乘除
package main
// import "fmt"func operate( a int , b int ) []int {return []int{a + b, a - b, a * b, a / b, a % b}
}
14 结构体
GP42 学生信息II
package mainimport ("fmt"
)type Student struct {name stringsex boolage intscore int
}func main() {xiaoming := Student{"小明", true, 23, 88}fmt.Println(xiaoming.name)fmt.Println(xiaoming.sex)fmt.Println(xiaoming.age)fmt.Println(xiaoming.score)
}
GP43 学生信息III
package mainimport ("fmt"
)type City struct {province stringcity string
}type Student struct {name stringsex boolage intscore intcity City
}func main() {city := City{"湖南省", "长沙市"}xiaoming := Student{name: "小明", sex: true, age: 23, score: 88, city: city}fmt.Println(xiaoming.name)fmt.Println(xiaoming.sex)fmt.Println(xiaoming.age)fmt.Println(xiaoming.score)fmt.Println(xiaoming.city.province)fmt.Println(xiaoming.city.city)
}
15 接口
GP44 动物和老虎
package mainimport ("fmt"
)type Animal interface {sleep() stringeat() string
}type Tiger struct {
}func (t Tiger) sleep() string {return "sleep"
}func (t Tiger) eat() string {return "eat"
}func main() {tiger := Tiger{}fmt.Println(tiger.sleep())fmt.Println(tiger.eat())
}
16 错误
注意:错误,异常这块我只是骗ac的
GP45 网络延迟
package main// 使用golang标准库包errors 来定义错误。
import "errors"func defineerr( ping int ) string {if ping > 100 {return errors.New("网络延迟").Error()}return ""
}
GP46 体温异常
package main
import "errors"func temperature( t float64 ) string {if t > 37.5 {return errors.New("体温异常").Error()}return ""
}
END
相关文章:
(Golang) 牛客 在线编程 Go语言入门
文章目录 前言Go的学习资料链接 AC代码01 输出打印GP1 go的第一个程序 02 变量GP2 小明信息GP3 个人信息 03 常量GP4 国家名称 04 指针GP5 值和指针 05 字符串GP6 拼接字符串GP7 字符数量GP8 回文数 06 类型转换GP9 格式化字符串GP10 字符求和 07 运算符GP11 长方形的周长GP12 …...

2.6 PE结构:导出表详细解析
导出表(Export Table)是Windows可执行文件中的一个结构,记录了可执行文件中某些函数或变量的名称和地址,这些名称和地址可以供其他程序调用或使用。当PE文件执行时Windows装载器将文件装入内存并将导入表中登记的DLL文件一并装入&…...

SpringMvc进阶
SpringMvc进阶 SpringMVC引言一、常用注解二、参数传递三、返回值 SpringMVC引言 在Web应用程序开发中,Spring MVC是一种常用的框架,它基于MVC(Model-View-Controller)模式,提供了一种结构化的方式来构建可维护和可扩…...

SpringCloud Alibaba 入门到精通 - Nacos
SpringCloud Alibaba 常用组件 一、基础结构搭建1.父工程创建2.子工程创建 二、Nacos:注册中心1.服务端搭建2.注册中心-客户端搭建3.注册中心-管理页面4.注册中心-常用配置5.注册中心-核心功能总结 三、Nacos注册中心集成Load Balancer 、OpenFeign1.Nacos客户端集成…...
new/delete, malloc/free
区别: 首先new/delete是运算符,malloc/free是库函数。malloc/free只开辟内存不初始化;new/delete及开辟内存也初始化。抛出异常的方式:new/delete开辟失败使用抛出bad_alloc;malloc/free通过返回值判断。malloc和new区…...

oracle将一个用户的表复制到另一个用户
注:scott用户和scott用户下的源表(EMP)本身就有,无需另行创建。 GRANT SELECT ON SCOTT.emp TO BI_ODSCREATE TABLE ODS_EMP AS SELECT * FROM SCOTT.emphttp://www.bxcqd.com/news/77615.html SQL语句查询要修改密码的用户…...
C#知识点、常见面试题
相关源码 https://github.com/JackYan666/CSharpCode/blob/main/CSharpCode.cs 0.简要概括 1.For循环删除集合元素可能漏删:从后面往前删除 2.Foreach不能直接修改集合元素:用递归的思想,删除完了的集合重新遍历 3.闭包问题:for循环存在闭包,可以通过使用临时变量解决…...

【STM32】锁存器
问题背景 在学习FSMC控制外部NOR存储器时,看到在NOR复用接口模式下,AD信号[15:0]是复用的。也就是说,若不使用锁存器:当NADV为低时,ADx(x0…15)上出现地址信号Ax,当NADV变高时,ADx上出现数据信号Dx。若使用…...

DGIOT-Modbus-RTU控制指令05、06的配置与下发
[小 迪 导 读]:伴随工业物联网在实际应用中普及,Modbus-RTU作为行业内的标准化通讯协议。在为物联网起到采集作用的同时,设备的控制也是一个密不可分的环节。 场景解析:在使用Modbus对设备进行采集后,可以通过自动控制…...

机器学习实战-系列教程8:SVM分类实战3非线性SVM(鸢尾花数据集/软间隔/线性SVM/非线性SVM/scikit-learn框架)项目实战、代码解读
🌈🌈🌈机器学习 实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 SVM分类实战1之简单SVM分类 SVM分类实战2线性SVM SVM分类实战3非线性SVM 4、非线性SVM 4.1 创建非线性数据 from sklearn.data…...

计算机网络-谢希任第八版学习笔记总结
一.计算机网络概述 21世纪三个特点 数字化 信息化 智能化,其中主要是围绕智能化。 网络的常见分类: 电话网络 有线电视网络 计算机网络 互联网:Internet 由数量极大的计算机网络相连接 特点: 共享性 连通性 互联网&…...

手写Spring:第5章-注入属性和依赖对象
文章目录 一、目标:注入属性和依赖对象二、设计:注入属性和依赖对象三、实现:注入属性和依赖对象3.0 引入依赖3.1 工程结构3.2 注入属性和依赖对象类图3.3 定义属性值和属性集合3.3.1 定义属性值3.3.2 定义属性集合 3.4 Bean定义补全3.5 Bean…...
初识集合框架 -Java
目录 一、集合框架的概念 二、集合框架的重要性 三、涉及的数据结构和算法 3.1 什么是数据结构 3.2 集合框架(容器)背后对应的数据结构 3.3 相关的Java知识 3.4 什么是算法 3.5 如何学好数据结构和算法 一、集合框架的概念 Java 集合框架,…...

目标检测笔记(十五): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
文章目录 一、目标检测介绍二、YOLOX介绍三、源码获取四、环境搭建4.1 环境检测 五、数据集准备六、模型训练七、模型验证八、模型测试 一、目标检测介绍 目标检测(Object Detection)是计算机视觉领域的一项重要技术,旨在识别图像或视频中的…...

深眸科技自研轻辙视觉引擎,以AI机器视觉赋能杆号牌识别与分拣
电线杆号牌作为电力行业标识的一种,相当于电线杆的“身份证”,担负着宣传电力知识、安全警示的作用,用于户外使用标记输电线路电压等级、线路名称、杆塔编号等,能够清晰地记录电力线路杆的信息,并为电力线路的更改以及…...

Shell命令管理进程
Shell命令管理进程 列出进程 ps命令 top命令 管理后台进程 启动后台进程 查看后台进程 jobs和ps的区别 停止进程 Linux除了是一种多用户操作系统之外,还是一种多任务系统。多任务意味着可以同时运行多个程序。Linux 提供了相关的工具来列出运行中的进程,监视…...

python创建exe文件
1、搭建环境 pip install pyinstaller 2、准备测试代码 exe_test.py import timeprint("hello") print("hello") print("hello") print("hello")time.sleep(5) 注:添加sleep以便在执行exe文件的时候能看到结果 3、生…...

【数据结构】AVL树的插入与验证
文章目录 一、基本概念1.发展背景2.性质 二、实现原理①插入操作1.平衡因子1.1平衡因子的更新1.1.1树的高度变化1.1.2树的高度不变 2. 旋转2.1左旋2.2右旋2.3右左双旋2.4 左右双旋 ②验证1.求二叉树高度2. 判断是否为AVL树 源码总结 一、基本概念 1.发展背景 普通的二叉搜索树…...

9.3.3网络原理(网络层IP)
一.报文: 1.4位版本号:IPv4和IPv6(其它可能是实验室版本). 2.4位首部长度:和TCP一样,可变长,带选项,单位是4字节. 3.8位服务类型 4.16位总长度:IP报头 IP载荷 传输层是不知道载荷长度的,需要网络层来计算. IP报文 - IP报头 IP载荷 TCP报文 TCP载荷 IP载荷(TCP报文) …...
代码随想录算法训练营第四十八天| LeetCode121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III
121. 买卖股票的最佳时机 题目描述: 121. 买卖股票的最佳时机. 解法 dp class Solution(object):def maxProfit(self, prices):if not prices:return 0dp0 0# 0表示不持有股票,1表示持有股票dp1 0-prices[0]for i in range(1,len(prices)):# 当前没有股票# 两…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...