Beego 使用教程 5:页面视图

news2024/11/26 5:42:52

beego 是一个用于Go编程语言的开源、高性能的 web 框架

beego 被用于在Go语言中企业应用程序的快速开发,包括RESTful API、web应用程序和后端服务。它的灵感来源于Tornado, Sinatra 和 Flask

beego 官网:http://beego.gocn.vip/

上面的 beego 官网如果访问不到,看这篇文章《beego 官网文档本地环境搭建》

注意:本文的 beego 文档使用的就是本地环境搭建的文档,因为官网文档已经不可用了

beego 官方 github 仓库:https://github.com/beego/beego

上一讲,讲了 beego 过滤器部分内容,需要的朋友可以查看《Beego 使用教程 4:过滤器》

这一讲,讲解 页面视图

代码使用上一讲的代码

目录

1、返回页面

2、模板数据

2.1、返回字符串

2.2、返回结构体

2.3、返回 map

2.4、返回切片

3、模板函数

3.1、格式化时间函数

3.2、html 和字符串转换函数

3.3、自定义模板函数

3.4、其他模板函数

4、静态文件

5、Layout 设计


1、返回页面

在 controller 目录下新建 page.go,在 page.go 中添加下面代码

package controller

import (
	"github.com/beego/beego/v2/server/web"
)

type PageController struct {
	web.Controller
}

func (p *PageController) Index() {
	//返回页面
	p.TplName = "index.html"
}

Beego 默认情况下支持 tpl 和 html 后缀名的模板文件,如果你的后缀名不是这两种,请进行如下设置

web.AddTemplateExt("你文件的后缀名")

在项目根目录下新建 views 目录,Beego 中默认的模板目录是 views,可以通过配置 web.BConfig.WebConfig.ViewsPath = "pages" 修改默认的模版目录名称,笔者使用默认的模版目录

在 views 目录下新建 index.html,index.html 内容如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>灵种传闻出越裳,何人提挈上蛮航。他年我若修花史,列作人间第一香</h1>
</body>
</html>

修改 main.go 为下面代码

package main

import (
	"beego-demo/controller"
	"beego-demo/filter"
	"fmt"
	"github.com/beego/beego/v2/core/config"
	"github.com/beego/beego/v2/server/web"
)

func main() {
	//通过config获取自定义配置
	workername, _ := config.String("workername")
	fmt.Println(workername)

	//执行定时任务
	//go job.DemoTask()

	//注册自动路由
	//web.AutoPrefix("api", &controller.UserController{})
	web.CtrlGet("/name", (*controller.UserController).Name)
	web.CtrlGet("/get/:id", (*controller.UserController).GetUserById)
	web.CtrlGet("/get/:id/:num", (*controller.UserController).GetUserByIdAndNum)
	//返回页面
	web.CtrlGet("/page/index", (*controller.PageController).Index)

	//注册函数式路由
	controller.RegisterFunctionalRoutes()
	//web命名空间
	controller.RegisterNamespaceRoutes()

	//过滤器
	filter.RegisterFilters()

	//开启 Admin 管理后台
	web.BConfig.Listen.EnableAdmin = true
	web.BConfig.Listen.AdminAddr = "localhost"
	web.BConfig.Listen.AdminPort = 8088

	//查看已注册路由
	tree := web.PrintTree()
	methods := tree["Data"].(web.M)
	for k, v := range methods {
		fmt.Printf("%s => %v\n", k, v)
	}

	web.Run()
}

运行效果

浏览器请求:http://localhost:9090/page/index

修改 页面模版文件位置,在main.go 中添加下面代码

web.BConfig.WebConfig.ViewsPath = "pages"

在项目根目录下新建 pages 目录,在pages 目录下新建 index.tpl 文件

index.tpl 内容如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>灵种传闻出越裳,何人提挈上蛮航。他年我若修花史,列作人间第一香</h1>
</body>
</html>

修改 page.go 为下面代码

package controller

import (
	"github.com/beego/beego/v2/server/web"
)

type PageController struct {
	web.Controller
}

func (p *PageController) Index() {
	//返回页面
	//p.TplName = "index.html"
	p.TplName = "index.tpl"
}

main.go

package main

import (
	"beego-demo/controller"
	"beego-demo/filter"
	"fmt"
	"github.com/beego/beego/v2/core/config"
	"github.com/beego/beego/v2/server/web"
)

func main() {
	//通过config获取自定义配置
	workername, _ := config.String("workername")
	fmt.Println(workername)

	//执行定时任务
	//go job.DemoTask()

	//注册自动路由
	//web.AutoPrefix("api", &controller.UserController{})
	web.CtrlGet("/name", (*controller.UserController).Name)
	web.CtrlGet("/get/:id", (*controller.UserController).GetUserById)
	web.CtrlGet("/get/:id/:num", (*controller.UserController).GetUserByIdAndNum)
	//返回页面
	web.CtrlGet("/page/index", (*controller.PageController).Index)

	//注册函数式路由
	controller.RegisterFunctionalRoutes()
	//web命名空间
	controller.RegisterNamespaceRoutes()

	//过滤器
	filter.RegisterFilters()

	//开启 Admin 管理后台
	web.BConfig.Listen.EnableAdmin = true
	web.BConfig.Listen.AdminAddr = "localhost"
	web.BConfig.Listen.AdminPort = 8088

	web.BConfig.WebConfig.ViewsPath = "pages"

	//查看已注册路由
	tree := web.PrintTree()
	methods := tree["Data"].(web.M)
	for k, v := range methods {
		fmt.Printf("%s => %v\n", k, v)
	}

	web.Run()
}

运行效果

2、模板数据

下面的代码笔者使用 views 下的模板文件

2.1、返回字符串

修改 page.go 为下面内容

package controller

import (
	"github.com/beego/beego/v2/server/web"
)

type PageController struct {
	web.Controller
}

func (p *PageController) Index() {
	p.Data["content"] = "如许闲宵似广寒,翠丛倒影浸冰团。梅花宜冷君宜热,一样香魂两样看"
	//返回页面
	p.TplName = "index.html"
	//p.TplName = "index.tpl"
}

修改 index.html 为下面内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>灵种传闻出越裳,何人提挈上蛮航。他年我若修花史,列作人间第一香</h1>
    <p>{{.content}}</p>
</body>
</html>

运行效果

2.2、返回结构体

修改  page.go 为下面内容

package controller

import (
	"github.com/beego/beego/v2/server/web"
)

type PageController struct {
	web.Controller
}

type Poetry struct {
	Name    string
	Author  string
	Content string
}

func (p *PageController) Index() {
	//p.Data["content"] = "如许闲宵似广寒,翠丛倒影浸冰团。梅花宜冷君宜热,一样香魂两样看"

	poetry := Poetry{
		Name:    "茉莉花",
		Author:  "许景迂",
		Content: "自是天上冰雪种,占尽人间富贵香。不烦鼻观偷馥郁,解使心俱清凉。南船卖客俱到岸,东道主人容寄廊",
	}
	p.Data["poetry"] = &poetry
	//返回页面
	p.TplName = "index.html"
	//p.TplName = "index.tpl"
}

修改 index.html 为下面内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>灵种传闻出越裳,何人提挈上蛮航。他年我若修花史,列作人间第一香</h1>
    <p>{{.poetry.Name}}</p>
    <p>{{.poetry.Author}}</p>
    <p>{{.poetry.Content}}</p>
</body>
</html>

重启后运行效果

2.3、返回 map

修改  page.go 为下面内容

package controller

import (
	"github.com/beego/beego/v2/server/web"
)

type PageController struct {
	web.Controller
}

type Poetry struct {
	Name    string
	Author  string
	Content string
}

func (p *PageController) Index() {
	//p.Data["content"] = "如许闲宵似广寒,翠丛倒影浸冰团。梅花宜冷君宜热,一样香魂两样看"

	//poetry := Poetry{
	//	Name:    "茉莉花",
	//	Author:  "许景迂",
	//	Content: "自是天上冰雪种,占尽人间富贵香。不烦鼻观偷馥郁,解使心俱清凉。南船卖客俱到岸,东道主人容寄廊",
	//}
	//p.Data["poetry"] = &poetry

	mp := make(map[string]string)
	mp["name"] = "茉莉花"
	mp["author"] = "江奎"
	mp["content"] = "虽无艳态惊群目,幸有清香压九秋。应是仙娥宴归去,醉来掉下玉搔头"
	p.Data["mp"] = mp

	//返回页面
	p.TplName = "index.html"
	//p.TplName = "index.tpl"
}

修改 index.html 为下面内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>灵种传闻出越裳,何人提挈上蛮航。他年我若修花史,列作人间第一香</h1>
    <p>{{.mp.name}}</p>
    <p>{{.mp.author}}</p>
    <p>{{.mp.content}}</p>
</body>
</html>

运行效果

2.4、返回切片

修改 page.go 为下面内容

package controller

import (
	"github.com/beego/beego/v2/server/web"
)

type PageController struct {
	web.Controller
}

type Poetry struct {
	Name    string
	Author  string
	Content string
}

func (p *PageController) Index() {
	//p.Data["content"] = "如许闲宵似广寒,翠丛倒影浸冰团。梅花宜冷君宜热,一样香魂两样看"

	//poetry := Poetry{
	//	Name:    "茉莉花",
	//	Author:  "许景迂",
	//	Content: "自是天上冰雪种,占尽人间富贵香。不烦鼻观偷馥郁,解使心俱清凉。南船卖客俱到岸,东道主人容寄廊",
	//}
	//p.Data["poetry"] = &poetry

	//mp := make(map[string]string)
	//mp["name"] = "茉莉花"
	//mp["author"] = "江奎"
	//mp["content"] = "虽无艳态惊群目,幸有清香压九秋。应是仙娥宴归去,醉来掉下玉搔头"
	//p.Data["mp"] = mp

	flowers := []string{"梅", "兰", "竹", "菊"}
	p.Data["flowers"] = flowers

	//返回页面
	p.TplName = "index.html"
	//p.TplName = "index.tpl"
}

修改 index.html 为下面内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>灵种传闻出越裳,何人提挈上蛮航。他年我若修花史,列作人间第一香</h1>
    {{range $key, $val := .flowers}} {{$key}} {{$val}} {{end}}
</body>
</html>

运行效果

3、模板函数

3.1、格式化时间函数

在  page.go  中添加 F 函数

package controller

import (
	"github.com/beego/beego/v2/server/web"
	"time"
)

type PageController struct {
	web.Controller
}

type Poetry struct {
	Name    string
	Author  string
	Content string
}

func (p *PageController) Index() {
	//p.Data["content"] = "如许闲宵似广寒,翠丛倒影浸冰团。梅花宜冷君宜热,一样香魂两样看"

	//poetry := Poetry{
	//	Name:    "茉莉花",
	//	Author:  "许景迂",
	//	Content: "自是天上冰雪种,占尽人间富贵香。不烦鼻观偷馥郁,解使心俱清凉。南船卖客俱到岸,东道主人容寄廊",
	//}
	//p.Data["poetry"] = &poetry

	//mp := make(map[string]string)
	//mp["name"] = "茉莉花"
	//mp["author"] = "江奎"
	//mp["content"] = "虽无艳态惊群目,幸有清香压九秋。应是仙娥宴归去,醉来掉下玉搔头"
	//p.Data["mp"] = mp

	flowers := []string{"梅", "兰", "竹", "菊"}
	p.Data["flowers"] = flowers

	//返回页面
	p.TplName = "index.html"
	//p.TplName = "index.tpl"
}

func (p *PageController) F() {
	p.Data["date"] = time.Now()
	p.TplName = "f.html"
}

在 views 下新建 f.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>{{ dateformat .date "2006-01-02 15:04:05" }}</p>

    <p>{{date .date "Y-m-d H:i:s"}}</p>
</body>
</html>

修改 main.go 为下面内容

package main

import (
	"beego-demo/controller"
	"beego-demo/filter"
	"fmt"
	"github.com/beego/beego/v2/core/config"
	"github.com/beego/beego/v2/server/web"
)

func main() {
	//通过config获取自定义配置
	workername, _ := config.String("workername")
	fmt.Println(workername)

	//执行定时任务
	//go job.DemoTask()

	//注册自动路由
	//web.AutoPrefix("api", &controller.UserController{})
	web.CtrlGet("/name", (*controller.UserController).Name)
	web.CtrlGet("/get/:id", (*controller.UserController).GetUserById)
	web.CtrlGet("/get/:id/:num", (*controller.UserController).GetUserByIdAndNum)
	//返回页面
	web.CtrlGet("/page/index", (*controller.PageController).Index)
	web.CtrlGet("/page/f", (*controller.PageController).F)

	//注册函数式路由
	controller.RegisterFunctionalRoutes()
	//web命名空间
	controller.RegisterNamespaceRoutes()

	//过滤器
	filter.RegisterFilters()

	//开启 Admin 管理后台
	web.BConfig.Listen.EnableAdmin = true
	web.BConfig.Listen.AdminAddr = "localhost"
	web.BConfig.Listen.AdminPort = 8088

	//web.BConfig.WebConfig.ViewsPath = "pages"

	//查看已注册路由
	tree := web.PrintTree()
	methods := tree["Data"].(web.M)
	for k, v := range methods {
		fmt.Printf("%s => %v\n", k, v)
	}

	web.Run()
}

运行效果

3.2、html 和字符串转换函数

html2str 函数,实现了把 html 转化为字符串,剔除一些 script、css 之类的元素,返回纯文本信息

str2html 函数,实现了把相应的字符串当作 HTML 来输出,不转义

修改 page.go 为下面内容

package controller

import (
	"github.com/beego/beego/v2/server/web"
)

type PageController struct {
	web.Controller
}

type Poetry struct {
	Name    string
	Author  string
	Content string
}

func (p *PageController) Index() {
	//p.Data["content"] = "如许闲宵似广寒,翠丛倒影浸冰团。梅花宜冷君宜热,一样香魂两样看"

	//poetry := Poetry{
	//	Name:    "茉莉花",
	//	Author:  "许景迂",
	//	Content: "自是天上冰雪种,占尽人间富贵香。不烦鼻观偷馥郁,解使心俱清凉。南船卖客俱到岸,东道主人容寄廊",
	//}
	//p.Data["poetry"] = &poetry

	//mp := make(map[string]string)
	//mp["name"] = "茉莉花"
	//mp["author"] = "江奎"
	//mp["content"] = "虽无艳态惊群目,幸有清香压九秋。应是仙娥宴归去,醉来掉下玉搔头"
	//p.Data["mp"] = mp

	flowers := []string{"梅", "兰", "竹", "菊"}
	p.Data["flowers"] = flowers

	//返回页面
	p.TplName = "index.html"
	//p.TplName = "index.tpl"
}

func (p *PageController) F() {
	mp := make(map[string]string)
	mp["str"] = "<p style='color:red'>环佩青衣,盈盈素靥,临风无限清幽<p>"
	mp["html"] = "<p style='color:red'>出尘标格,和月最温柔。堪爱芳怀淡雅,纵离别,未肯衔愁<p>"
	p.Data["mp"] = mp

	p.TplName = "f.html"
}

修改 index.html 为下面内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{.mp.str}}
    <br>
    {{html2str .mp.str}}

    <br>

    {{.mp.html}}
    <br>
    {{str2html .mp.html}}
</body>
</html>

运行效果

3.3、自定义模板函数

Beego 支持用户定义模板函数,但是必须在 web.Run() 调用之前

修改 main.go 为下面代码

package main

import (
	"beego-demo/controller"
	"beego-demo/filter"
	"fmt"
	"github.com/beego/beego/v2/core/config"
	"github.com/beego/beego/v2/server/web"
)

func main() {
	//通过config获取自定义配置
	workername, _ := config.String("workername")
	fmt.Println(workername)

	//执行定时任务
	//go job.DemoTask()

	//注册自动路由
	//web.AutoPrefix("api", &controller.UserController{})
	web.CtrlGet("/name", (*controller.UserController).Name)
	web.CtrlGet("/get/:id", (*controller.UserController).GetUserById)
	web.CtrlGet("/get/:id/:num", (*controller.UserController).GetUserByIdAndNum)
	//返回页面
	web.CtrlGet("/page/index", (*controller.PageController).Index)
	web.CtrlGet("/page/f", (*controller.PageController).F)

	//注册函数式路由
	controller.RegisterFunctionalRoutes()
	//web命名空间
	controller.RegisterNamespaceRoutes()

	//过滤器
	filter.RegisterFilters()

	//开启 Admin 管理后台
	web.BConfig.Listen.EnableAdmin = true
	web.BConfig.Listen.AdminAddr = "localhost"
	web.BConfig.Listen.AdminPort = 8088

	//web.BConfig.WebConfig.ViewsPath = "pages"

	//查看已注册路由
	tree := web.PrintTree()
	methods := tree["Data"].(web.M)
	for k, v := range methods {
		fmt.Printf("%s => %v\n", k, v)
	}

	//自定义模板函数
	web.AddFuncMap("bookName", bookName)

	web.Run()
}

// 自定义模板函数添加书名号
func bookName(in string) (out string) {
	out = "《" + in + "》"
	return
}

添加一个生成书名号的模板函数

修改 index.html 为下面内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{.name | bookName}}
</body>
</html>

运行效果

3.4、其他模板函数

更多的模版函数可以参考 Beego 文档

4、静态文件

Beego 默认会将项目根目录下的 static 目录作为静态资源的存目录,请求静态资源默认添加前缀 /static,这个官方文档没有说,可以通过查看 Beego 项目源代码中的注释知道

自定义静态资源目录可以通过 web.SetStaticPath 函数添加

如下代码将目录 public 作为静态目录,请求前缀是 staticfile

web.SetStaticPath("/staticfile", "public")

在项目根目录下新建 static 目录,在statc 目录下新建 index.js 和 index.css 文件

index.css

.poetry {
    background: aqua;
}

index.js

function test(){
    var content = "咏院中丛竹"
    alert(content)
}

修改 index.html 为下面代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="/static/index.css" type="text/css" rel="stylesheet" />
    <script src="/static/index.js"></script>
</head>
<body>
    <h1>灵种传闻出越裳,何人提挈上蛮航。他年我若修花史,列作人间第一香</h1>
    <div class="poetry">
        <p>擢擢当轩竹,青青重岁寒。</p>
        <p>心贞徒见赏,箨小未成竿。</p>
    </div>
    <button onclick="test()">测试</button>
</body>
</html>

重启项目运行测试

5、Layout 设计

Beego 支持 layout 设计,例如你在管理系统中,整个管理界面是固定的,只会变化中间的部分

在 views 目录下新建 main.html,内容如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>main</h1>
<div>{{.Header}}</div>
<div class="container">{{.LayoutContent}}</div>
</body>
</html>

这里面,.Header 是可以随意定义的,笔者表示引入固定的header 部分,.LayoutContent 是Beego 规定的,用来表示页面中间变化的部分

在 views 目录下新建 header.html,代码看下面

<div>
  <h2>头部</h2>
</div>

在 views 目录下新建 login.html,表示页面中间的部分,代码看下面

<div>
    <h2>登录</h2>
</div>

在 page.go 中修改为下面代码

package controller

import (
	"github.com/beego/beego/v2/server/web"
)

type PageController struct {
	web.Controller
}

type Poetry struct {
	Name    string
	Author  string
	Content string
}

func (p *PageController) Index() {
	//p.Data["content"] = "如许闲宵似广寒,翠丛倒影浸冰团。梅花宜冷君宜热,一样香魂两样看"

	//poetry := Poetry{
	//	Name:    "茉莉花",
	//	Author:  "许景迂",
	//	Content: "自是天上冰雪种,占尽人间富贵香。不烦鼻观偷馥郁,解使心俱清凉。南船卖客俱到岸,东道主人容寄廊",
	//}
	//p.Data["poetry"] = &poetry

	//mp := make(map[string]string)
	//mp["name"] = "茉莉花"
	//mp["author"] = "江奎"
	//mp["content"] = "虽无艳态惊群目,幸有清香压九秋。应是仙娥宴归去,醉来掉下玉搔头"
	//p.Data["mp"] = mp

	flowers := []string{"梅", "兰", "竹", "菊"}
	p.Data["flowers"] = flowers

	//返回页面
	p.TplName = "index.html"
	//p.TplName = "index.tpl"
}

func (p *PageController) F() {
	p.Data["name"] = "水浒传"

	p.TplName = "f.html"
}

func (p *PageController) Main() {
	p.LayoutSections = make(map[string]string)
	p.LayoutSections["Header"] = "header.html"

	//模版
	p.Layout = "main.html"
	p.TplName = "login.html"
}

其中 Main 方法,p.Layout = "main.html" 指定模版,p.TplName = "login.html" 指定模版中间的页面,p.LayoutSections["Header"] = "header.html" 指定页面固定的部分

在 main.go 中添加路由,修改 main.go 为下面代码

package main

import (
	"beego-demo/controller"
	"beego-demo/filter"
	"fmt"
	"github.com/beego/beego/v2/core/config"
	"github.com/beego/beego/v2/server/web"
)

func main() {
	//通过config获取自定义配置
	workername, _ := config.String("workername")
	fmt.Println(workername)

	//执行定时任务
	//go job.DemoTask()

	//注册自动路由
	//web.AutoPrefix("api", &controller.UserController{})
	web.CtrlGet("/name", (*controller.UserController).Name)
	web.CtrlGet("/get/:id", (*controller.UserController).GetUserById)
	web.CtrlGet("/get/:id/:num", (*controller.UserController).GetUserByIdAndNum)
	//返回页面
	web.CtrlGet("/page/index", (*controller.PageController).Index)
	web.CtrlGet("/page/f", (*controller.PageController).F)
	web.CtrlGet("/page/main", (*controller.PageController).Main)

	//注册函数式路由
	controller.RegisterFunctionalRoutes()
	//web命名空间
	controller.RegisterNamespaceRoutes()

	//过滤器
	filter.RegisterFilters()

	//开启 Admin 管理后台
	web.BConfig.Listen.EnableAdmin = true
	web.BConfig.Listen.AdminAddr = "localhost"
	web.BConfig.Listen.AdminPort = 8088

	//web.BConfig.WebConfig.ViewsPath = "pages"

	//查看已注册路由
	tree := web.PrintTree()
	methods := tree["Data"].(web.M)
	for k, v := range methods {
		fmt.Printf("%s => %v\n", k, v)
	}

	//自定义模板函数
	web.AddFuncMap("bookName", bookName)

	web.Run()
}

// 自定义模板函数添加书名号
func bookName(in string) (out string) {
	out = "《" + in + "》"
	return
}

运行效果,访问 http://localhost:9090/page/main

下一讲:《Beego 使用教程 6:Web 输入处理》

至此完

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1652279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【笔试训练】day21

1.爱丽丝的人偶 题目意思就是构造一个序列&#xff0c;序列的每个元素要么比左右两个高&#xff0c;要么比左右两个低。 可以看成是一条上下波动的曲线。 我们可以模拟波动的这个过程。 假设有一个数组&#xff0c;里面元素是1-n.遍历每一个位置。用一个指针pos来表示当前检…

短视频矩阵系统源码/saas--总后台端、商户端、代理端、源头开发

短视频矩阵系统源码/saas--总后台端、商户端、代理端、源头开发 搭建短视频矩阵系统源码的交付步骤可以概括为以下几个关键环节&#xff1a; 1. **系统需求分析**&#xff1a;明确系统需要支持的功能&#xff0c;如短视频的上传、存储、播放、分享、评论、点赞等。 2. **技术选…

C++算法题 - 二叉树(2)

TOC 114. 二叉树展开为链表 LeetCode_link 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与…

比亚迪CAN数据实时监控分析应用数字化差异化的决策价值洞察

在当今这个信息化飞速发展的时代&#xff0c;汽车数字化转型已成为企业持续竞争力的关键。中国新能源汽车行业的领军企业——比亚迪&#xff0c;其数字化之旅充分展现了企业的创新精神和对未来的深远洞察。 比亚迪的数字化战略不是简单的技术应用&#xff0c;而是一场深刻的商…

Calendar 366 II for Mac v2.15.5激活版:智能日历管理软件

在繁忙的工作和生活中&#xff0c;如何高效管理日程成为了许多人的难题。Calendar 366 II for Mac&#xff0c;作为一款全方位的日历管理软件&#xff0c;以其独特的功能和优秀的用户体验&#xff0c;成为您的日程好帮手。 Calendar 366 II for Mac支持多种视图模式&#xff0c…

成功解决:Could not install packages due to an OSError

成功解决&#xff1a;Could not install packages due to an OSError: 错误&#xff1a; ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: C:\Users\XIAODA~1\AppData\Local\Temp\pip-install-yeyhod79\opencv-contribpython_fb…

在线音视频下载

https://cobalt.tools/ 支持 bilibili 等网站

STM32F103学习笔记 | 7.使用寄存器点亮LED灯

int main(void) { // 分析指南者硬件原理图得知要实现点亮灯泡需要将PB0设置为低电位&#xff0c; // 查阅STM32F10x中文手册的端口配置低寄存器&#xff0c;得知一个PB有8个配置位&#xff0c;查阅手册找到了PB0的位置是3:2位置&#xff0c; // 插入未知知识&#xff1a;将端…

电脑文件批量重命名不求人:快速操作,高效技巧让你轻松搞定

在数字化时代&#xff0c;电脑文件的管理与整理显得尤为重要。当面对大量需要重命名的文件时&#xff0c;一个个手动修改不仅耗时&#xff0c;还容易出错。那么&#xff0c;有没有一种方法可以快速、高效地完成这一任务呢&#xff1f;答案是肯定的&#xff0c;下面就来介绍几种…

delphi6直连redis服务(用lua脚本redis模块)

一、创建一个exe程序 创建一个exe程序,引用LuaRedis.pas单元(此单元自己封装的代码,目前主要封装了获取key和设置key/value功能),代码如下: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;type…

gitee分支代码推送失败>> error: failed to push some refs to ‘https://gitee.com/xxx/xxx.git‘

错误 将代码推送到gitee时候出现下面的报错&#xff0c;终端输出 remote: Powered by GITEE.COM [GNK-6.4] remote: error: GE007: Your push would publish a private email address. remote: You can make your email public or disable this protection by visiting: remo…

自动驾驶主流芯片及平台架构(三)低算力平台

前面有提到&#xff0c;自动驾驶等级每增加一级&#xff0c;所需要的芯片算力就会呈现十数倍的上升&#xff0c;L2级自动驾驶的算力需求仅要求2-2.5TOPS&#xff0c;但是L3级自动驾驶算力需求就需要20-30TOPS,到L4级需要200TOPS以上&#xff0c;L5级别算力需求则超过2000TOPS。…

Rabbit延迟队列实现---插件实现

自行百度如何安装rabbitmq 点击链接下载rabbitmq插件找到rabbitmq_delayed_message_exchange&#xff0c;点击Releases 找到自己mq版本对应下载 移动到rabbitmq目录下plugins 执行命令rabbitmq-plugins.bat enable rabbitmq_delayed_message_exchange安装插件 此时就会出现x-d…

【mysql】mysql单表查询、多表查询、分组查询、子查询等案例详细解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

红帽发布Red Hat Enterprise Linux AI(RHEL AI)

红帽 2024 峰会正在科罗拉多州丹佛市举行…鉴于当前的时代背景&#xff0c;人工智能&#xff08;AI&#xff09;在此次峰会上占据了重要位置&#xff0c;因此红帽公司&#xff08;Red Hat&#xff09;也不甘人后宣布推出 RHEL AI。 红帽公司今天发布了 Red Hat Enterprise Lin…

Pytorch入门—Tensors张量的学习

Tensors张量的学习 张量是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。在PyTorch中&#xff0c;我们使用张量来编码模型的输入和输出&#xff0c;以及模型的参数。 张量类似于NumPy的ndarrays&#xff0c;只是张量可以在GPU或其他硬件加速器上运行。事实上&#xf…

QT7_视频知识点笔记_2_对话框,布局,按钮,控件(查看帮助文档找功能函数)

第二天&#xff1a; 对话框&#xff0c;布局&#xff0c;按钮 QMainWindow&#xff1a;菜单下拉框添加之后可通过ui->actionXXX&#xff08;自定义的选项名&#xff09;访问&#xff0c;用信号triggered发出信号&#xff0c;槽函数可以使用lambda表达式进行 //菜单栏&am…

JavaEE概述 + Maven

文章目录 一、JavaEE 概述二、工具 --- Maven2.1 Maven功能 仓库 坐标2.2 Maven之项目构建2.3 Maven之依赖管理 三、插件 --- Maven Helper 一、JavaEE 概述 Java SE、JavaEE&#xff1a; Java SE&#xff1a;指Java标准版&#xff0c;适用于各行各业&#xff0c;主要是Java…

【Python】机器学习之Sklearn基础教程大纲

机器学习之Sklearn基础教程大纲 1. 引言 机器学习简介Scikit-learn&#xff08;Sklearn&#xff09;库介绍安装和配置Sklearn 2. 数据预处理 2.1 数据加载与查看 - 加载CSV、Excel等格式的数据- 查看数据的基本信息&#xff08;如形状、数据类型等&#xff09;2.2 数据清洗…

3套Matplotlib主题

分享3套Matplotlib主题&#xff0c;让图表更好看 seaborn默认主题 import seaborn as sns import pandas as pd import matplotlib as mpltips pd.read_csv(./sns_data/tips.csv)sns.relplot(datatips,x"消费金额 ($)",y"小费金额 ($)",hue"客人性…