0

0

Golang实现小型任务提醒工具实例

P粉602998670

P粉602998670

发布时间:2025-09-18 17:16:02

|

214人浏览过

|

来源于php中文网

原创

答案:使用Go语言实现一个命令行任务提醒工具,通过Task结构体定义任务属性,JSON文件持久化存储,time.AfterFunc实现定时提醒,程序启动时加载任务并调度,支持添加、查看、完成和删除任务。

golang实现小型任务提醒工具实例

写一个小型任务提醒工具,用Golang实现,其实并不复杂,核心在于任务的定义、存储以及一个简单的调度机制。你可以把它想象成一个命令行下的迷你版日程助理,帮你记住那些不容错过的小事。

解决方案

要实现这样一个工具,我们可以从几个关键点入手:首先是任务的数据结构,它决定了我们能记录哪些信息;接着是任务的存储,确保数据不会随着程序关闭而丢失;最后,也是最关键的,是任务的调度和提醒,让程序能在正确的时间“叫醒”你。

我的思路是,用一个Go结构体来定义任务,包含ID、标题、描述、提醒时间以及完成状态。为了简化,存储部分可以考虑使用JSON文件,读写方便,对小型数据量非常友好。至于提醒,Go的

time.AfterFunc
配合goroutine就能优雅地实现单次提醒,而如果需要更复杂的周期性提醒,可以考虑引入像
robfig/cron
这样的库,不过对于“小型”工具,我们先聚焦在基础功能上。

程序启动时,会从文件加载所有未完成的任务,然后为每个任务设置一个

time.AfterFunc
,当时间到达时,就打印提醒信息。用户可以通过命令行指令添加、查看、完成任务。这样,一个基本的任务提醒工具就有了雏形。

立即学习go语言免费学习笔记(深入)”;

如何设计一个简洁高效的任务数据结构?

设计任务的数据结构,就像在给你的“备忘录”定规矩,得想清楚它需要记录什么。对我来说,一个任务至少得有几个基本属性:一个独一无二的标识符,方便操作;一个标题,一眼就知道是啥事;一个详细描述,记录更多上下文;当然,最重要的是提醒时间,这是提醒工具的灵魂;最后,一个状态,比如“已完成”或“待办”,管理起来才清晰。

我们可以在Golang中这样定义它:

package main

import (
    "fmt"
    "time"
)

// Task 定义了任务的数据结构
type Task struct {
    ID          string    `json:"id"`           // 任务唯一标识符
    Title       string    `json:"title"`        // 任务标题
    Description string    `json:"description"`  // 任务详细描述
    DueTime     time.Time `json:"due_time"`     // 提醒时间
    IsCompleted bool      `json:"is_completed"` // 任务是否已完成
}

// String 方法让Task在打印时更具可读性
func (t Task) String() string {
    status := "待办"
    if t.IsCompleted {
        status = "已完成"
    }
    return fmt.Sprintf("ID: %s\n标题: %s\n描述: %s\n提醒时间: %s\n状态: %s\n",
        t.ID, t.Title, t.Description, t.DueTime.Format("2006-01-02 15:04:05"), status)
}

这里我用了

json:"..."
的tag,这在后续进行JSON序列化和反序列化时非常有用,能让字段名在JSON中更规范。
DueTime
使用
time.Time
类型是关键,它提供了强大的时间处理能力,比如格式化、比较等。
String()
方法则是一个小小的便利,让
fmt.Println(task)
时输出更友好,而不是一堆内存地址。ID用
string
类型,可以考虑使用
uuid
库生成,确保唯一性。

Golang中如何实现任务的持久化存储?

任务的持久化存储,对于一个提醒工具来说是必不可少的。总不能每次程序重启,任务就全没了,对吧?对于小型应用,我通常会选择JSON文件作为存储介质,它简单、直观,并且Go标准库提供了非常完善的

encoding/json
包来处理。

核心思路是:将内存中的

[]Task
切片编码成JSON格式的字符串,然后写入文件;反过来,从文件读取JSON字符串,解码成
[]Task
切片。

千图设计室AI海报
千图设计室AI海报

千图网旗下的智能海报在线设计平台

下载
package main

import (
    "encoding/json"
    "io/ioutil"
    "os"
    "path/filepath"
)

const dataFile = "tasks.json"

// saveTasks 将任务列表保存到JSON文件
func saveTasks(tasks []Task) error {
    data, err := json.MarshalIndent(tasks, "", "  ") // 使用MarshalIndent让JSON文件更易读
    if err != nil {
        return fmt.Errorf("序列化任务失败: %w", err)
    }

    // 确保数据文件所在的目录存在
    dir := filepath.Dir(dataFile)
    if dir != "" && dir != "." { // 如果dataFile不是在当前目录,需要创建目录
        if _, err := os.Stat(dir); os.IsNotExist(err) {
            if err := os.MkdirAll(dir, 0755); err != nil {
                return fmt.Errorf("创建数据目录失败: %w", err)
            }
        }
    }

    err = ioutil.WriteFile(dataFile, data, 0644)
    if err != nil {
        return fmt.Errorf("写入任务文件失败: %w", err)
    }
    return nil
}

// loadTasks 从JSON文件加载任务列表
func loadTasks() ([]Task, error) {
    if _, err := os.Stat(dataFile); os.IsNotExist(err) {
        // 文件不存在,返回空列表而不是错误
        return []Task{}, nil
    }

    data, err := ioutil.ReadFile(dataFile)
    if err != nil {
        return nil, fmt.Errorf("读取任务文件失败: %w", err)
    }

    var tasks []Task
    err = json.Unmarshal(data, &tasks)
    if err != nil {
        return nil, fmt.Errorf("反序列化任务失败: %w", err)
    }
    return tasks, nil
}

这里我用了

json.MarshalIndent
而不是
json.Marshal
,只是为了让输出的JSON文件带缩进,更方便人类阅读和调试。
ioutil.WriteFile
ioutil.ReadFile
是读写文件的便捷函数。在
loadTasks
时,特意检查了文件是否存在,如果不存在就返回一个空的任务列表,这样程序启动时就不会因为文件不存在而报错,用户体验会更好。

如何构建一个可靠的任务调度和提醒机制?

任务调度和提醒是这个工具的核心功能,也是最需要一点“魔法”的地方。在Golang里,实现一个简单的调度机制,其实比想象中要直接。我们主要利用

time.AfterFunc
这个函数,它可以在指定延迟后执行一个函数,非常适合单次提醒的场景。

关键在于,程序启动后,我们需要遍历所有未完成的任务,为每个任务计算出距离提醒时间还有多久,然后设置一个

time.AfterFunc
。由于
time.AfterFunc
是非阻塞的(它会在一个新的goroutine中执行你的函数),所以可以同时调度多个任务。

package main

import (
    "sync"
    "time"
)

// scheduler 用于管理所有任务的调度
type Scheduler struct {
    tasks      []Task
    mu         sync.Mutex // 保护tasks切片的并发访问
    stopChans  map[string]chan struct{} // 存储每个任务的停止信号通道
}

func NewScheduler(initialTasks []Task) *Scheduler {
    s := &Scheduler{
        tasks:      initialTasks,
        stopChans:  make(map[string]chan struct{}),
    }
    return s
}

// ScheduleTask 为单个任务设置提醒
func (s *Scheduler) ScheduleTask(task Task) {
    if task.IsCompleted {
        return // 已完成的任务无需调度
    }

    now := time.Now()
    if task.DueTime.Before(now) {
        // 提醒时间已过,可以直接触发提醒或标记为过期
        fmt.Printf("【过期提醒】任务 '%s' (ID: %s) 提醒时间已过: %s\n", task.Title, task.ID, task.DueTime.Format("15:04:05"))
        return
    }

    duration := task.DueTime.Sub(now)
    if duration <= 0 { // 避免负数或零导致time.AfterFunc立即执行
        duration = time.Millisecond // 至少等待一毫秒
    }

    stopChan := make(chan struct{})
    s.mu.Lock()
    s.stopChans[task.ID] = stopChan // 记录停止通道,以便取消
    s.mu.Unlock()

    fmt.Printf("【调度】任务 '%s' (ID: %s) 将在 %s 后提醒。\n", task.Title, task.ID, duration.String())

    go func(t Task, sc chan struct{}) {
        select {
        case <-time.After(duration):
            fmt.Printf("\n? 【任务提醒】时间到了!\n%s\n", t.String())
            // 提醒后,可以考虑自动标记为已完成或需要用户手动确认
            // 这里为了简化,我们只打印提醒
        case <-sc:
            fmt.Printf("【取消调度】任务 '%s' (ID: %s) 的提醒已被取消。\n", t.Title, t.ID)
        }
        s.mu.Lock()
        delete(s.stopChans, t.ID) // 任务完成后从调度器中移除
        s.mu.Unlock()
    }(task, stopChan)
}

// CancelTask 取消一个任务的提醒
func (s *Scheduler) CancelTask(taskID string) {
    s.mu.Lock()
    defer s.mu.Unlock()
    if ch, ok := s.stopChans[taskID]; ok {
        close(ch) // 发送停止信号
        delete(s.stopChans, taskID)
    }
}

// StartAllTasksScheduler 启动所有任务的调度
func (s *Scheduler) StartAllTasksScheduler() {
    s.mu.Lock()
    defer s.mu.Unlock()
    for _, task := range s.tasks {
        s.ScheduleTask(task)
    }
}

// AddTaskToScheduler 添加新任务并调度
func (s *Scheduler) AddTaskToScheduler(task Task) {
    s.mu.Lock()
    s.tasks = append(s.tasks, task)
    s.mu.Unlock()
    s.ScheduleTask(task)
}

这里我引入了一个

Scheduler
结构体来管理所有任务的调度,包括一个
sync.Mutex
来保证并发安全,以及一个
stopChans
映射来存储每个任务的停止信号通道,这在需要取消某个任务的提醒时非常有用。
select
语句结合
time.After
stopChan
,可以优雅地实现定时提醒或提前取消提醒。

需要注意的是,

time.AfterFunc
创建的定时器,如果程序退出,这些定时器也会随之消失。所以,一个真正“可靠”的提醒工具,在生产环境中,可能需要一个长期运行的后台进程,或者结合操作系统的计划任务(如Linux的cronjob,Windows的任务计划程序)来确保即使程序意外退出,也能在下次启动时重新加载并调度任务。但对于我们这个小型工具,当前这种内存调度方案已经足够演示核心概念了。

命令行交互与任务管理

一个没有用户界面的工具是孤独的。虽然是命令行,但我们仍然需要一些指令来与它互动,比如添加任务、查看任务列表、标记任务完成,或者干脆删除一个任务。这部分,通常会用到Go的

flag
包或者更高级的命令行解析库如
spf13/cobra

我们可以设计几个简单的命令:

  • go run main.go add -t "买菜" -d "晚上做饭用" -time "2023-10-27 18:00:00"
    :添加一个新任务。
  • go run main.go list
    :列出所有任务。
  • go run main.go complete -id 
    :标记任务完成。
  • go run main.go delete -id 
    :删除任务。

这需要我们在

main
函数中解析命令行参数,并根据参数执行相应的逻辑。例如,
main
函数可能长这样:

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
    "time"

    "github.com/google/uuid" // 引入uuid库生成唯一ID
)

var scheduler *Scheduler
var tasks []Task // 全局的任务列表

func main() {
    // 加载现有任务
    loadedTasks, err := loadTasks()
    if err != nil {
        fmt.Printf("加载任务失败: %v\n", err)
        os.Exit(1)
    }
    tasks = loadedTasks
    scheduler = NewScheduler(tasks)
    scheduler.StartAllTasksScheduler() // 启动所有任务的调度

    fmt.Println("任务提醒工具已启动。输入 'help' 查看命令。")
    reader := bufio.NewReader(os.Stdin)

    for {
        fmt.Print("> ")
        input, _ := reader.ReadString('\n')
        input = strings.TrimSpace(input)

        parts := strings.Fields(input)
        if len(parts) == 0 {
            continue
        }

        command := parts[0]
        args := parts[1:]

        switch command {
        case "add":
            handleAddCommand(args)
        case "list":
            handleListCommand()
        case "complete":
            handleCompleteCommand(args)
        case "delete":
            handleDeleteCommand(args)
        case "help":
            printHelp()
        case "exit":
            fmt.Println("退出任务提醒工具。")
            // 在退出前保存所有任务
            if err := saveTasks(tasks); err != nil {
                fmt.Printf("保存任务失败: %v\n", err)
            }
            return
        default:
            fmt.Println("未知命令。输入 'help' 查看命令。")
        }
    }
}

func printHelp() {
    fmt.Println(`
可用命令:
  add  <description> <due_time>  - 添加新任务 (due_time格式: "2006-01-02 15:04:05")
  list                                  - 列出所有任务
  complete <task_id>                    - 标记任务为已完成
  delete <task_id>                      - 删除任务
  help                                  - 显示帮助信息
  exit                                  - 退出程序
`)
}

func handleAddCommand(args []string) {
    if len(args) < 3 {
        fmt.Println("用法: add <title> <description> <due_time>")
        return
    }
    title := args[0]
    description := args[1]
    dueTimeStr := strings.Join(args[2:], " ") // due_time可能包含空格

    dueTime, err := time.Parse("2006-01-02 15:04:05", dueTimeStr)
    if err != nil {
        fmt.Printf("时间格式错误,请使用 'YYYY-MM-DD HH:MM:SS' 格式: %v\n", err)
        return
    }

    newTask := Task{
        ID:          uuid.New().String(),
        Title:       title,
        Description: description,
        DueTime:     dueTime,
        IsCompleted: false,
    }

    tasks = append(tasks, newTask)
    scheduler.AddTaskToScheduler(newTask) // 添加到调度器
    if err := saveTasks(tasks); err != nil {
        fmt.Printf("保存任务失败: %v\n", err)
    }
    fmt.Printf("任务 '%s' 已添加,ID: %s\n", newTask.Title, newTask.ID)
}

func handleListCommand() {
    if len(tasks) == 0 {
        fmt.Println("当前没有任务。")
        return
    }
    fmt.Println("--- 任务列表 ---")
    for _, task := range tasks {
        fmt.Println(task.String())
    }
    fmt.Println("----------------")
}

func handleCompleteCommand(args []string) {
    if len(args) < 1 {
        fmt.Println("用法: complete <task_id>")
        return
    }
    taskID := args[0]

    found := false
    for i := range tasks {
        if tasks[i].ID == taskID {
            tasks[i].IsCompleted = true
            scheduler.CancelTask(taskID) // 任务完成,取消调度
            found = true
            break
        }
    }

    if found {
        if err := saveTasks(tasks); err != nil {
            fmt.Printf("保存任务失败: %v\n", err)
        }
        fmt.Printf("任务 '%s' 已标记为完成。\n", taskID)
    } else {
        fmt.Printf("未找到ID为 '%s' 的任务。\n", taskID)
    }
}

func handleDeleteCommand(args []string) {
    if len(args) < 1 {
        fmt.Println("用法: delete <task_id>")
        return
    }
    taskID := args[0]

    newTasks := []Task{}
    found := false
    for _, task := range tasks {
        if task.ID == taskID {
            found = true
            scheduler.CancelTask(taskID) // 删除任务,取消调度
        } else {
            newTasks = append(newTasks, task)
        }
    }

    if found {
        tasks = newTasks
        if err := saveTasks(tasks); err != nil {
            fmt.Printf("保存任务失败: %v\n", err)
        }
        fmt.Printf("任务 '%s' 已删除。\n", taskID)
    } else {
        fmt.Printf("未找到ID为 '%s' 的任务。\n", taskID)
    }
}</pre><p>我这里直接用了一个简单的<pre class="brush:php;toolbar:false;">bufio.NewReader(os.Stdin)</pre>来读取用户输入,并通过<pre class="brush:php;toolbar:false;">strings.Fields</pre>来分割命令和参数。这种方式虽然不如<pre class="brush:php;toolbar:false;">cobra</pre>等库强大,但对于一个“小型”且注重示例的工具来说,足够了。它能让你清晰地看到命令解析和逻辑执行的整个流程,并且在退出时,别忘了保存任务,这是持久化的最后一步。</p>					</div>
					<div class="artmoreart ">
													<div class="artdp artptit"><span></span>
								<p>相关文章</p>
							</div>
							<div class="artmores flexColumn">
																	<a class="artmrlis flexRow" href="/faq/1909896.html" title="如何在 Go 程序中安全检测是否以管理员(root)权限运行"><b></b>
										<p class="overflowclass">如何在 Go 程序中安全检测是否以管理员(root)权限运行</p>
									</a>
																	<a class="artmrlis flexRow" href="/faq/1909310.html" title="Docker libcontainer 网络模块构建失败的跨平台兼容性问题解析"><b></b>
										<p class="overflowclass">Docker libcontainer 网络模块构建失败的跨平台兼容性问题解析</p>
									</a>
																	<a class="artmrlis flexRow" href="/faq/1909043.html" title="Docker libcontainer 网络模块构建失败的跨平台兼容性解决方案"><b></b>
										<p class="overflowclass">Docker libcontainer 网络模块构建失败的跨平台兼容性解决方案</p>
									</a>
																	<a class="artmrlis flexRow" href="/faq/1908005.html" title="如何使用Golang实现抽象工厂产品族扩展_使用Abstract Factory生成对象"><b></b>
										<p class="overflowclass">如何使用Golang实现抽象工厂产品族扩展_使用Abstract Factory生成对象</p>
									</a>
																	<a class="artmrlis flexRow" href="/faq/1907013.html" title="如何使用Homebrew安装管理Golang_Golang Homebrew安装流程"><b></b>
										<p class="overflowclass">如何使用Homebrew安装管理Golang_Golang Homebrew安装流程</p>
									</a>
															</div>
													<div class="artmoretabs flexRow">
								<p>相关标签:</p>
								<div class="mtbs flexRow">
									<a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/15718.html" target="_blank">linux</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/15802.html" target="_blank">js</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/15841.html" target="_blank">git</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/15848.html" target="_blank">json</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/15863.html" target="_blank">go</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/15970.html" target="_blank">windows</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/15997.html" target="_blank">github</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/16009.html" target="_blank">golang</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/16016.html" target="_blank">操作系统</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/16043.html" target="_blank">go语言</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/16108.html" target="_blank">编码</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/zt/16186.html" target="_blank">app</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=golang" target="_blank">golang</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=json" target="_blank">json</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=String" target="_blank">String</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=select" target="_blank">select</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=标识符" target="_blank">标识符</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=字符串" target="_blank">字符串</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=结构体" target="_blank">结构体</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=命令行参数" target="_blank">命令行参数</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=数据结构" target="_blank">数据结构</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=堆" target="_blank">堆</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=Go语言" target="_blank">Go语言</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=切片" target="_blank">切片</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=delete" target="_blank">delete</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=并发" target="_blank">并发</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=windows" target="_blank">windows</a> <a class="mtbsa flexRow" onclick="hits_log(2,'www',this);" href-data="/search?q=linux" target="_blank">linux</a>								</div>
							</div>
						
						<p class="statement">本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn</p>
						<div class="lastanext flexRow">
													<a class="lastart flexRow" href="/faq/1530980.html" title="Golang文件读写缓冲与性能提升方法"><span>上一篇:</span>Golang文件读写缓冲与性能提升方法</a>
													<a class="nextart flexRow" href="/faq/1531019.html" title="Go App Engine 本地开发服务器启动:解决找不到Go文件异常"><span>下一篇:</span>Go App Engine 本地开发服务器启动:解决找不到Go文件异常</a>
												</div>
					</div>

					<div class="artlef-down ">
													<div class="authormore ">
								<div class="rightdTitle flexRow">
									<div class="title-left flexRow"> <b></b>
										<p>作者最新文章</p>
									</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910919.html" title="如何在Golang中发送POST请求_Golang net/http POST请求方法"><b></b>
												<p class="overflowclass">如何在Golang中发送POST请求_Golang net/http POST请求方法</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:33</p>
											</div>
										</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910924.html" title="css绝对定位元素偏移不正确怎么办_通过设置父元素relative解决"><b></b>
												<p class="overflowclass">css绝对定位元素偏移不正确怎么办_通过设置父元素relative解决</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:33</p>
											</div>
										</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910926.html" title="在Java环境中如何管理第三方依赖_依赖管理工具使用解析"><b></b>
												<p class="overflowclass">在Java环境中如何管理第三方依赖_依赖管理工具使用解析</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:34</p>
											</div>
										</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910929.html" title="如何使用Golang构建Web服务器_搭建高性能HTTP服务"><b></b>
												<p class="overflowclass">如何使用Golang构建Web服务器_搭建高性能HTTP服务</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:35</p>
											</div>
										</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910932.html" title="在Java中如何理解多继承接口与实现类_多继承核心概念分享"><b></b>
												<p class="overflowclass">在Java中如何理解多继承接口与实现类_多继承核心概念分享</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:35</p>
											</div>
										</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910934.html" title="Win11怎么设置开机自启应用_Windows11启动项开关管理"><b></b>
												<p class="overflowclass">Win11怎么设置开机自启应用_Windows11启动项开关管理</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:36</p>
											</div>
										</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910936.html" title="Java里return关键字的作用是什么_Java方法返回值说明"><b></b>
												<p class="overflowclass">Java里return关键字的作用是什么_Java方法返回值说明</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:37</p>
											</div>
										</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910950.html" title="在Java中如何使用CountDownLatch_CountDownLatch常见应用场景说明"><b></b>
												<p class="overflowclass">在Java中如何使用CountDownLatch_CountDownLatch常见应用场景说明</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:39</p>
											</div>
										</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910951.html" title="如何在Golang中处理HTTP请求_Golang HTTP请求解析与响应示例"><b></b>
												<p class="overflowclass">如何在Golang中处理HTTP请求_Golang HTTP请求解析与响应示例</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:39</p>
											</div>
										</div>
								</div>
																	<div class="authlist flexColumn">
										<div class="autharts flexRow">
											<a class="autharta flexRow " href="/faq/1910954.html" title="豆包AI小说推文创作指南 豆包AI网文写作技巧"><b></b>
												<p class="overflowclass">豆包AI小说推文创作指南 豆包AI网文写作技巧</p>
											</a>
											<div class="authtime flexRow"><b></b>
												<p>2025-12-30 17:40</p>
											</div>
										</div>
								</div>
															</div>
						
						<div class="moreAi ">
							<div class="rightdTitle flexRow">
								<div class="title-left flexRow"> <b></b>
									<p>热门AI工具</p>
								</div>
								<a target="_blank" class="rititle-more flexRow" href="/ai" title="热门AI工具"><span>更多</span><b></b></a>
							</div>

							<div class="moreailist flexRow">
																	<div class="aidcons flexRow  check ">
										<a target="_blank" href="/ai/723" title="DeepSeek" class="aibtns flexRow">
											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679963982777.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="DeepSeek" class="aibtnimg"
												onerror="this.src='/static/lhimages/moren/morentu.png'">
											<div class="aibtn-right flexColumn">
												<p class="overflowclass abripone">DeepSeek</p>
												<p class="overflowclass abriptwo">幻方量化公司旗下的开源大模型平台</p>
																									<div class="aidconstab flexRow">
																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
																													<p href="/ai/tag/code/open-plat" title="开放平台" class="aidcontbp flexRow flexcenter">开放平台</p>
																											</div>
																							</div>
										</a>
									</div>
																	<div class="aidcons flexRow  check ">
										<a target="_blank" href="/ai/726" title="豆包大模型" class="aibtns flexRow">
											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175680204067325.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="豆包大模型" class="aibtnimg"
												onerror="this.src='/static/lhimages/moren/morentu.png'">
											<div class="aibtn-right flexColumn">
												<p class="overflowclass abripone">豆包大模型</p>
												<p class="overflowclass abriptwo">字节跳动自主研发的一系列大型语言模型</p>
																									<div class="aidconstab flexRow">
																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
																											</div>
																							</div>
										</a>
									</div>
																	<div class="aidcons flexRow  check ">
										<a target="_blank" href="/ai/725" title="通义千问" class="aibtns flexRow">
											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679974228210.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="通义千问" class="aibtnimg"
												onerror="this.src='/static/lhimages/moren/morentu.png'">
											<div class="aibtn-right flexColumn">
												<p class="overflowclass abripone">通义千问</p>
												<p class="overflowclass abriptwo">阿里巴巴推出的全能AI助手</p>
																									<div class="aidconstab flexRow">
																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
																											</div>
																							</div>
										</a>
									</div>
																	<div class="aidcons flexRow  check ">
										<a target="_blank" href="/ai/854" title="腾讯元宝" class="aibtns flexRow">
											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679978251103.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="腾讯元宝" class="aibtnimg"
												onerror="this.src='/static/lhimages/moren/morentu.png'">
											<div class="aibtn-right flexColumn">
												<p class="overflowclass abripone">腾讯元宝</p>
												<p class="overflowclass abriptwo">腾讯混元平台推出的AI助手</p>
																									<div class="aidconstab flexRow">
																												<p href="/ai/tag/office/docs" title="文档处理" class="aidcontbp flexRow flexcenter">文档处理</p>
																													<p href="/ai/tag/office/excel" title="Excel 表格" class="aidcontbp flexRow flexcenter">Excel 表格</p>
																											</div>
																							</div>
										</a>
									</div>
																	<div class="aidcons flexRow  check ">
										<a target="_blank" href="/ai/724" title="文心一言" class="aibtns flexRow">
											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679974557049.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="文心一言" class="aibtnimg"
												onerror="this.src='/static/lhimages/moren/morentu.png'">
											<div class="aibtn-right flexColumn">
												<p class="overflowclass abripone">文心一言</p>
												<p class="overflowclass abriptwo">文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。</p>
																									<div class="aidconstab flexRow">
																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
																													<p href="/ai/tag/text/chinese-writing" title="中文写作" class="aidcontbp flexRow flexcenter">中文写作</p>
																											</div>
																							</div>
										</a>
									</div>
																	<div class="aidcons flexRow  check ">
										<a target="_blank" href="/ai/1507" title="讯飞写作" class="aibtns flexRow">
											<img src="https://img.php.cn/upload/ai_manual/000/969/633/68b7a4153cd86671.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="讯飞写作" class="aibtnimg"
												onerror="this.src='/static/lhimages/moren/morentu.png'">
											<div class="aibtn-right flexColumn">
												<p class="overflowclass abripone">讯飞写作</p>
												<p class="overflowclass abriptwo">基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿</p>
																									<div class="aidconstab flexRow">
																												<p href="/ai/tag/text/chinese-writing" title="中文写作" class="aidcontbp flexRow flexcenter">中文写作</p>
																													<p href="/ai/tag/text/write" title="写作工具" class="aidcontbp flexRow flexcenter">写作工具</p>
																											</div>
																							</div>
										</a>
									</div>
																	<div class="aidcons flexRow  check ">
										<a target="_blank" href="/ai/1115" title="即梦AI" class="aibtns flexRow">
											<img src="https://img.php.cn/upload/ai_manual/001/246/273/68b6d8f7c530c315.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="即梦AI" class="aibtnimg"
												onerror="this.src='/static/lhimages/moren/morentu.png'">
											<div class="aibtn-right flexColumn">
												<p class="overflowclass abripone">即梦AI</p>
												<p class="overflowclass abriptwo">一站式AI创作平台,免费AI图片和视频生成。</p>
																									<div class="aidconstab flexRow">
																												<p href="/ai/tag/image/image-titching" title="图片拼接" class="aidcontbp flexRow flexcenter">图片拼接</p>
																													<p href="/ai/tag/image/image-create" title="图画生成" class="aidcontbp flexRow flexcenter">图画生成</p>
																											</div>
																							</div>
										</a>
									</div>
																	<div class="aidcons flexRow  check ">
										<a target="_blank" href="/ai/808" title="ChatGPT" class="aibtns flexRow">
											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679970194596.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="ChatGPT" class="aibtnimg"
												onerror="this.src='/static/lhimages/moren/morentu.png'">
											<div class="aibtn-right flexColumn">
												<p class="overflowclass abripone">ChatGPT</p>
												<p class="overflowclass abriptwo">最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。</p>
																									<div class="aidconstab flexRow">
																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
																													<p href="/ai/tag/text/chinese-writing" title="中文写作" class="aidcontbp flexRow flexcenter">中文写作</p>
																											</div>
																							</div>
										</a>
									</div>
																	<div class="aidcons flexRow  check ">
										<a target="_blank" href="/ai/821" title="智谱清言 - 免费全能的AI助手" class="aibtns flexRow">
											<img src="https://img.php.cn/upload/ai_manual/000/000/000/175679976181507.png?x-oss-process=image/resize,m_mfit,h_70,w_70,limit_0" alt="智谱清言 - 免费全能的AI助手" class="aibtnimg"
												onerror="this.src='/static/lhimages/moren/morentu.png'">
											<div class="aibtn-right flexColumn">
												<p class="overflowclass abripone">智谱清言 - 免费全能的AI助手</p>
												<p class="overflowclass abriptwo">智谱清言 - 免费全能的AI助手</p>
																									<div class="aidconstab flexRow">
																												<p href="/ai/tag/code/large-model" title="AI大模型" class="aidcontbp flexRow flexcenter">AI大模型</p>
																													<p href="/ai/tag/office/pdf" title="PDF 文档" class="aidcontbp flexRow flexcenter">PDF 文档</p>
																											</div>
																							</div>
										</a>
									</div>
															</div>




						</div>

					</div>


				</div>


			</div>
			<div class="conRight artdtilRight ">
				<div class="artrig-adv ">
                    <script type="text/javascript" src="https://teacher.php.cn/php/MDM3MTk1MGYxYjI5ODJmNTE0ZWVkZTA3NmJhYzhmMjI6Og=="></script>
                </div>
				<div class="hotzt artdtzt">
					<div class="rightdTitle flexRow">
						<div class="title-left flexRow"> <b></b>
							<p>相关专题</p>
						</div>
						<a target="_blank" class="rititle-more flexRow" href="/faq/zt" title="相关专题"><span>更多</span><b></b></a>
					</div>
					<div class="hotztuls flexColumn">
													<div class="hotztlls flexRow">
								<a target="_blank" href="/faq/golangrhdybl" class="aClass flexRow hotzta" title="golang如何定义变量"><img
										src="https://img.php.cn/upload/subject/202401/27/2024012711462553414.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="golang如何定义变量" class="hotztaimg"
										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
								<div class="hotztright flexColumn">
									<a target="_blank" href="/faq/golangrhdybl" class="aClass flexRow hotztra overflowclass" title="golang如何定义变量">golang如何定义变量</a>
									<p class="aClass flexRow hotztrp overflowclass">golang定义变量的方法:1、声明变量并赋予初始值“var age int =值”;2、声明变量但不赋初始值“var age int”;3、使用短变量声明“age :=值”等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。</p>
									<div class="hotztrdown flexRow">
										<div class="htztdsee flexRow"> <b></b>
											<p class="">174</p>
										</div>
										<div class="htztdTime flexRow"> <b></b>
											<p>2024.02.23</p>
										</div>
									</div>
								</div>
							</div>
													<div class="hotztlls flexRow">
								<a target="_blank" href="/faq/golangynxsjzh" class="aClass flexRow hotzta" title="golang有哪些数据转换方法"><img
										src="https://img.php.cn/upload/subject/202401/27/2024012711552254696.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="golang有哪些数据转换方法" class="hotztaimg"
										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
								<div class="hotztright flexColumn">
									<a target="_blank" href="/faq/golangynxsjzh" class="aClass flexRow hotztra overflowclass" title="golang有哪些数据转换方法">golang有哪些数据转换方法</a>
									<p class="aClass flexRow hotztrp overflowclass">golang数据转换方法:1、类型转换操作符;2、类型断言;3、字符串和数字之间的转换;4、JSON序列化和反序列化;5、使用标准库进行数据转换;6、使用第三方库进行数据转换;7、自定义数据转换函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。</p>
									<div class="hotztrdown flexRow">
										<div class="htztdsee flexRow"> <b></b>
											<p class="">225</p>
										</div>
										<div class="htztdTime flexRow"> <b></b>
											<p>2024.02.23</p>
										</div>
									</div>
								</div>
							</div>
													<div class="hotztlls flexRow">
								<a target="_blank" href="/faq/golangcykynx" class="aClass flexRow hotzta" title="golang常用库有哪些"><img
										src="https://img.php.cn/upload/subject/202402/06/2024020614491669087.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="golang常用库有哪些" class="hotztaimg"
										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
								<div class="hotztright flexColumn">
									<a target="_blank" href="/faq/golangcykynx" class="aClass flexRow hotztra overflowclass" title="golang常用库有哪些">golang常用库有哪些</a>
									<p class="aClass flexRow hotztrp overflowclass">golang常用库有:1、标准库;2、字符串处理库;3、网络库;4、加密库;5、压缩库;6、xml和json解析库;7、日期和时间库;8、数据库操作库;9、文件操作库;10、图像处理库。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。</p>
									<div class="hotztrdown flexRow">
										<div class="htztdsee flexRow"> <b></b>
											<p class="">335</p>
										</div>
										<div class="htztdTime flexRow"> <b></b>
											<p>2024.02.23</p>
										</div>
									</div>
								</div>
							</div>
													<div class="hotztlls flexRow">
								<a target="_blank" href="/faq/golanggolangd" class="aClass flexRow hotzta" title="golang和python的区别是什么"><img
										src="https://img.php.cn/upload/subject/202403/05/2024030517354684603.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="golang和python的区别是什么" class="hotztaimg"
										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
								<div class="hotztright flexColumn">
									<a target="_blank" href="/faq/golanggolangd" class="aClass flexRow hotztra overflowclass" title="golang和python的区别是什么">golang和python的区别是什么</a>
									<p class="aClass flexRow hotztrp overflowclass">golang和python的区别是:1、golang是一种编译型语言,而python是一种解释型语言;2、golang天生支持并发编程,而python对并发与并行的支持相对较弱等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。</p>
									<div class="hotztrdown flexRow">
										<div class="htztdsee flexRow"> <b></b>
											<p class="">206</p>
										</div>
										<div class="htztdTime flexRow"> <b></b>
											<p>2024.03.05</p>
										</div>
									</div>
								</div>
							</div>
													<div class="hotztlls flexRow">
								<a target="_blank" href="/faq/golangsmfdm" class="aClass flexRow hotzta" title="golang是免费的吗"><img
										src="https://img.php.cn/upload/subject/202405/21/2024052115135391298.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="golang是免费的吗" class="hotztaimg"
										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
								<div class="hotztright flexColumn">
									<a target="_blank" href="/faq/golangsmfdm" class="aClass flexRow hotztra overflowclass" title="golang是免费的吗">golang是免费的吗</a>
									<p class="aClass flexRow hotztrp overflowclass">golang是免费的。golang是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言,采用bsd开源协议。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。</p>
									<div class="hotztrdown flexRow">
										<div class="htztdsee flexRow"> <b></b>
											<p class="">388</p>
										</div>
										<div class="htztdTime flexRow"> <b></b>
											<p>2024.05.21</p>
										</div>
									</div>
								</div>
							</div>
													<div class="hotztlls flexRow">
								<a target="_blank" href="/faq/golangjgtdq" class="aClass flexRow hotzta" title="golang结构体相关大全"><img
										src="https://img.php.cn/upload/subject/202506/09/2025060915221559704.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="golang结构体相关大全" class="hotztaimg"
										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
								<div class="hotztright flexColumn">
									<a target="_blank" href="/faq/golangjgtdq" class="aClass flexRow hotztra overflowclass" title="golang结构体相关大全">golang结构体相关大全</a>
									<p class="aClass flexRow hotztrp overflowclass">本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。</p>
									<div class="hotztrdown flexRow">
										<div class="htztdsee flexRow"> <b></b>
											<p class="">193</p>
										</div>
										<div class="htztdTime flexRow"> <b></b>
											<p>2025.06.09</p>
										</div>
									</div>
								</div>
							</div>
													<div class="hotztlls flexRow">
								<a target="_blank" href="/faq/golangpdffdq" class="aClass flexRow hotzta" title="golang相关判断方法"><img
										src="https://img.php.cn/upload/subject/202506/10/2025061017002841902.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="golang相关判断方法" class="hotztaimg"
										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
								<div class="hotztright flexColumn">
									<a target="_blank" href="/faq/golangpdffdq" class="aClass flexRow hotztra overflowclass" title="golang相关判断方法">golang相关判断方法</a>
									<p class="aClass flexRow hotztrp overflowclass">本专题整合了golang相关判断方法,想了解更详细的相关内容,请阅读下面的文章。</p>
									<div class="hotztrdown flexRow">
										<div class="htztdsee flexRow"> <b></b>
											<p class="">188</p>
										</div>
										<div class="htztdTime flexRow"> <b></b>
											<p>2025.06.10</p>
										</div>
									</div>
								</div>
							</div>
													<div class="hotztlls flexRow">
								<a target="_blank" href="/faq/golangszsyff" class="aClass flexRow hotzta" title="golang数组使用方法"><img
										src="https://img.php.cn/upload/subject/202506/17/2025061715093054115.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="golang数组使用方法" class="hotztaimg"
										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
								<div class="hotztright flexColumn">
									<a target="_blank" href="/faq/golangszsyff" class="aClass flexRow hotztra overflowclass" title="golang数组使用方法">golang数组使用方法</a>
									<p class="aClass flexRow hotztrp overflowclass">本专题整合了golang数组用法,想了解更多的相关内容,请阅读专题下面的文章。</p>
									<div class="hotztrdown flexRow">
										<div class="htztdsee flexRow"> <b></b>
											<p class="">191</p>
										</div>
										<div class="htztdTime flexRow"> <b></b>
											<p>2025.06.17</p>
										</div>
									</div>
								</div>
							</div>
													<div class="hotztlls flexRow">
								<a target="_blank" href="/faq/phpymazjcdq" class="aClass flexRow hotzta" title="php源码安装教程大全"><img
										src="https://img.php.cn/upload/subject/202512/31/2025123115154686243.jpg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="php源码安装教程大全" class="hotztaimg"
										onerror="this.src='/static/lhimages/moren/morentu.png'"></a>
								<div class="hotztright flexColumn">
									<a target="_blank" href="/faq/phpymazjcdq" class="aClass flexRow hotztra overflowclass" title="php源码安装教程大全">php源码安装教程大全</a>
									<p class="aClass flexRow hotztrp overflowclass">本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。</p>
									<div class="hotztrdown flexRow">
										<div class="htztdsee flexRow"> <b></b>
											<p class="">65</p>
										</div>
										<div class="htztdTime flexRow"> <b></b>
											<p>2025.12.31</p>
										</div>
									</div>
								</div>
							</div>
											</div>
				</div>

				<div class="hotdownload ">
					<div class="rightdTitle flexRow">
						<div class="title-left flexRow"> <b></b>
							<p>热门下载</p>
						</div>
						<a target="_blank" class="rititle-more flexRow" href="/xiazai" title="热门下载"><span>更多</span><b></b></a>
					</div>
					<div class="hotdownTab">
						<div class="hdTabs flexRow">
							<div class="check" data-id="onef">网站特效 <b></b> </div> /
							<div class="" data-id="twof">网站源码 <b></b></div> /
							<div class="" data-id="threef">网站素材 <b></b></div> /
							<div class="" data-id="fourf">前端模板 <b></b></div>
						</div>
						<ul class="onef">
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="简洁的创新科技图文介绍ui布局" href="/xiazai/js/8217"><span>[窗口特效]</span><span>简洁的创新科技图文介绍ui布局</span></a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="js会员注册表单验证代码" href="/xiazai/js/8216"><span>[表单按钮]</span><span>js会员注册表单验证代码</span></a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="酷炫的英文CSS3动画特效" href="/xiazai/js/8215"><span>[文字特效]</span><span>酷炫的英文CSS3动画特效</span></a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="js导航菜单设置当前频道高亮导航条" href="/xiazai/js/8214"><span>[菜单导航]</span><span>js导航菜单设置当前频道高亮导航条</span></a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="jQuery表格table内容添加删除特效" href="/xiazai/js/8213"><span>[窗口特效]</span><span>jQuery表格table内容添加删除特效</span></a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="jQuery问卷调查表单编辑代码" href="/xiazai/js/8212"><span>[表单按钮]</span><span>jQuery问卷调查表单编辑代码</span></a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="jQuery百叶窗文字背景动画" href="/xiazai/js/8211"><span>[文字特效]</span><span>jQuery百叶窗文字背景动画</span></a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="jQuery拖拽图片上传表单代码" href="/xiazai/js/8210"><span>[表单按钮]</span><span>jQuery拖拽图片上传表单代码</span></a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="jQuery颜色选取调色板实例" href="/xiazai/js/8209"><span>[窗口特效]</span><span>jQuery颜色选取调色板实例</span></a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" title="纯CSS3消失和递进文字特效" href="/xiazai/js/8208"><span>[文字特效]</span><span>纯CSS3消失和递进文字特效</span></a>
									</div>
								</li>
													</ul>
						<ul class="twof" style="display:none;">
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11353" title="雅龙智能装备工业设备类WordPress主题1.0"><span>[企业站源码]</span><span>雅龙智能装备工业设备类WordPress主题1.0</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11352" title="威发卡自动发卡系统"><span>[电商源码]</span><span>威发卡自动发卡系统</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11351" title="卡密分发系统"><span>[电商源码]</span><span>卡密分发系统</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11350" title="中华陶瓷网"><span>[电商源码]</span><span>中华陶瓷网</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11349" title="简洁粉色食品公司网站"><span>[电商源码]</span><span>简洁粉色食品公司网站</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11348" title="极速网店系统"><span>[电商源码]</span><span>极速网店系统</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11347" title="淘宝妈妈_淘客推广系统"><span>[电商源码]</span><span>淘宝妈妈_淘客推广系统</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11346" title="积客B2SCMS商城系统"><span>[电商源码]</span><span>积客B2SCMS商城系统</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11345" title="CODEC2I 众筹系统"><span>[电商源码]</span><span>CODEC2I 众筹系统</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/11344" title="ieshop超级网店系统"><span>[电商源码]</span><span>ieshop超级网店系统</span> </a>
									</div>
								</li>
													</ul>
						<ul class="threef" style="display:none;">
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4146" title="唯美冬季雪景森林小屋矢量背景"><span>[网站素材]</span><span>唯美冬季雪景森林小屋矢量背景</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4145" title="2026新年派对庆祝矢量素材"><span>[网站素材]</span><span>2026新年派对庆祝矢量素材</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4144" title="美味冰激凌宣传卡模板设计下载"><span>[网站素材]</span><span>美味冰激凌宣传卡模板设计下载</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4143" title="2026新年加载进度条矢量图片"><span>[网站素材]</span><span>2026新年加载进度条矢量图片</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4142" title="创意工作室营业海报设计素材下载"><span>[网站素材]</span><span>创意工作室营业海报设计素材下载</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4141" title="国潮中式锦鲤荷塘矢量背景"><span>[网站素材]</span><span>国潮中式锦鲤荷塘矢量背景</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4140" title="复古红色咖啡促销海报矢量模板"><span>[网站素材]</span><span>复古红色咖啡促销海报矢量模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4139" title="2026新年快乐竖版海报PSD模板设计下载"><span>[网站素材]</span><span>2026新年快乐竖版海报PSD模板设计下载</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4138" title="孟菲斯几何2026新年贺卡矢量"><span>[网站素材]</span><span>孟菲斯几何2026新年贺卡矢量</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/sucai/4137" title="珠宝饰品折扣感谢卡ps素材下载"><span>[网站素材]</span><span>珠宝饰品折扣感谢卡ps素材下载</span> </a>
									</div>
								</li>
													</ul>
						<ul class="fourf" style="display:none;">
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8590"  title="驾照考试驾校HTML5网站模板"><span>[前端模板]</span><span>驾照考试驾校HTML5网站模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8589"  title="驾照培训服务机构宣传网站模板"><span>[前端模板]</span><span>驾照培训服务机构宣传网站模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8588"  title="HTML5房地产公司宣传网站模板"><span>[前端模板]</span><span>HTML5房地产公司宣传网站模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8587"  title="新鲜有机肉类宣传网站模板"><span>[前端模板]</span><span>新鲜有机肉类宣传网站模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8586"  title="响应式天气预报宣传网站模板"><span>[前端模板]</span><span>响应式天气预报宣传网站模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8585"  title="房屋建筑维修公司网站CSS模板"><span>[前端模板]</span><span>房屋建筑维修公司网站CSS模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8584"  title="响应式志愿者服务网站模板"><span>[前端模板]</span><span>响应式志愿者服务网站模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8583"  title="创意T恤打印店网站HTML5模板"><span>[前端模板]</span><span>创意T恤打印店网站HTML5模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8582"  title="网页开发岗位简历作品展示网页模板"><span>[前端模板]</span><span>网页开发岗位简历作品展示网页模板</span> </a>
									</div>
								</li>
															<li>
									<div class="wzrfourli flexRow">
										<b></b>
										<a target="_blank" href="/xiazai/code/8581"  title="响应式人力资源机构宣传网站模板"><span>[前端模板]</span><span>响应式人力资源机构宣传网站模板</span> </a>
									</div>
								</li>
													</ul>
					</div>
					<script>
						$('.hdTabs>div').click(function (e) {
							$('.hdTabs>div').removeClass('check')
							$(this).addClass('check')
							$('.hotdownTab>ul').css('display', 'none')
							$('.' + e.currentTarget.dataset.id).show()
						})
					</script>

				</div>

				<div class="artrig-adv ">
					<script type="text/javascript" src="https://teacher.php.cn/php/MDM3MTk1MGYxYjI5ODJmNTE0ZWVkZTA3NmJhYzhmMjI6Og=="></script>
                </div>



				<div class="xgarts ">
					<div class="rightdTitle flexRow">
						<div class="title-left flexRow"> <b></b>
							<p>相关下载</p>
						</div>
						<a target="_blank" class="rititle-more flexRow" href="/xiazai" title="相关下载"><span>更多</span><b></b></a>
					</div>
					<div class="xgwzlist ">
											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="php商城系统" href="/xiazai/code/11178">php商城系统</a></div>
											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="淘源码商城PHP淘宝查信誉" href="/xiazai/code/11177">淘源码商城PHP淘宝查信誉</a></div>
											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="PHP房产程序[BBWPS]" href="/xiazai/code/11165">PHP房产程序[BBWPS]</a></div>
											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="PHP简约自动发卡平台个人版" href="/xiazai/code/11128">PHP简约自动发卡平台个人版</a></div>
											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="ERMEB域名PHP离线网络授权系统" href="/xiazai/code/11040">ERMEB域名PHP离线网络授权系统</a></div>
											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="Difeye-敏捷的轻量级PHP框架" href="/xiazai/code/11037">Difeye-敏捷的轻量级PHP框架</a></div>
											<div class="xgwzlid flexRow"><b></b><a target="_blank" title="大泉州汽车网PHP整站程序" href="/xiazai/code/10963">大泉州汽车网PHP整站程序</a></div>
										</div>

				</div>

				<div class="jpkc">
					<div class="rightdTitle flexRow">
						<div class="title-left flexRow"> <b></b>
							<p>精品课程</p>
						</div>
						<a class="rititle-more flexRow" target="_blank" href="/course/sort_new.html" title="精品课程"><span>更多</span><b></b></a>
					</div>
					<div class=" jpkcTab">
						<div class=" jpkcTabs flexRow">
							<div class="check" data-id="onefd">相关推荐 <b></b> </div> /
							<div class="" data-id="twofd">热门推荐 <b></b></div> /
							<div class="" data-id="threefd">最新课程 <b></b></div>
						</div>
						<div class="onefd jpktabd">
													<div  class="ristyA flexRow " >
								<a target="_blank" href="/course/1691.html" title="PostgreSQL 教程">
									<img src="https://img.php.cn/upload/course/000/000/090/68a707263dce2298.jpeg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="PostgreSQL 教程" class="ristyAimg"
										onerror="this.src='/static/mobimages/moren/morentu.png'">
								</a>
								<div class="ristyaRight flexColumn">
									<a target="_blank" href="/course/1691.html" title="PostgreSQL 教程"
										class="rirightp overflowclass">PostgreSQL 教程</a>

									<div class="risrdown flexRow">
										<p>共48课时 | 6.4万人学习</p>
									</div>
								</div>
							</div>
													<div  class="ristyA flexRow " >
								<a target="_blank" href="/course/1689.html" title="Git 教程">
									<img src="https://img.php.cn/upload/course/000/000/090/68a702c53c8ed154.jpeg?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="Git 教程" class="ristyAimg"
										onerror="this.src='/static/mobimages/moren/morentu.png'">
								</a>
								<div class="ristyaRight flexColumn">
									<a target="_blank" href="/course/1689.html" title="Git 教程"
										class="rirightp overflowclass">Git 教程</a>

									<div class="risrdown flexRow">
										<p>共21课时 | 2.3万人学习</p>
									</div>
								</div>
							</div>
													<div  class="ristyA flexRow " >
								<a target="_blank" href="/course/1577.html" title="Linux运维网站架构,知识点全面总结">
									<img src="https://img.php.cn/upload/course/000/000/067/64ab970dc6e8e558.png?x-oss-process=image/resize,m_mfit,h_75,w_120,limit_0" alt="Linux运维网站架构,知识点全面总结" class="ristyAimg"
										onerror="this.src='/static/mobimages/moren/morentu.png'">
								</a>
								<div class="ristyaRight flexColumn">
									<a target="_blank" href="/course/1577.html" title="Linux运维网站架构,知识点全面总结"
										class="rirightp overflowclass">Linux运维网站架构,知识点全面总结</a>

									<div class="risrdown flexRow">
										<p>共16课时 | 0.9万人学习</p>
									</div>
								</div>
							</div>
												</div>

						<div class="twofd jpktabd" style="display:none;">
															<div  class="ristyA flexRow " >
									<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学">
										<img src="https://img.php.cn/upload/course/000/000/081/6862652adafef801.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="JavaScript ES5基础线上课程教学" class="ristyAimg"
											onerror="this.src='/static/mobimages/moren/morentu.png'">
									</a>
									<div class="ristyaRight flexColumn">
										<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学"
											class="rirightp overflowclass">JavaScript ES5基础线上课程教学</a>

										<div class="risrdown flexRow">
											<p>共6课时 | 6.9万人学习</p>
										</div>
									</div>
								</div>
															<div  class="ristyA flexRow " >
									<a target="_blank" href="/course/812.html" title="最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)">
										<img src="https://img.php.cn/upload/course/000/000/041/620debc3eab3f377.jpg?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)" class="ristyAimg"
											onerror="this.src='/static/mobimages/moren/morentu.png'">
									</a>
									<div class="ristyaRight flexColumn">
										<a target="_blank" href="/course/812.html" title="最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)"
											class="rirightp overflowclass">最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)</a>

										<div class="risrdown flexRow">
											<p>共79课时 | 150.7万人学习</p>
										</div>
									</div>
								</div>
															<div  class="ristyA flexRow " >
									<a target="_blank" href="/course/639.html" title="phpStudy极速入门视频教程">
										<img src="https://img.php.cn/upload/course/000/000/068/62611ef88fcec821.jpg?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="phpStudy极速入门视频教程" class="ristyAimg"
											onerror="this.src='/static/mobimages/moren/morentu.png'">
									</a>
									<div class="ristyaRight flexColumn">
										<a target="_blank" href="/course/639.html" title="phpStudy极速入门视频教程"
											class="rirightp overflowclass">phpStudy极速入门视频教程</a>

										<div class="risrdown flexRow">
											<p>共6课时 | 53.3万人学习</p>
										</div>
									</div>
								</div>
													</div>

						<div class="threefd jpktabd" style="display:none;">
															<div  class="ristyA flexRow " >
										<a target="_blank" href="/course/1696.html" title="最新Python教程 从入门到精通">
											<img src="https://img.php.cn/upload/course/000/000/081/68c135bb72783194.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="最新Python教程 从入门到精通" class="ristyAimg"
												onerror="this.src='/static/mobimages/moren/morentu.png'">
										</a>
										<div class="ristyaRight flexColumn">
											<a target="_blank" href="/course/1696.html" title="最新Python教程 从入门到精通"
												class="rirightp overflowclass">最新Python教程 从入门到精通</a>

											<div class="risrdown flexRow">
												<p>共4课时 | 0.6万人学习</p>
											</div>
										</div>
									</div>
																<div  class="ristyA flexRow " >
										<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学">
											<img src="https://img.php.cn/upload/course/000/000/081/6862652adafef801.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="JavaScript ES5基础线上课程教学" class="ristyAimg"
												onerror="this.src='/static/mobimages/moren/morentu.png'">
										</a>
										<div class="ristyaRight flexColumn">
											<a target="_blank" href="/course/1656.html" title="JavaScript ES5基础线上课程教学"
												class="rirightp overflowclass">JavaScript ES5基础线上课程教学</a>

											<div class="risrdown flexRow">
												<p>共6课时 | 6.9万人学习</p>
											</div>
										</div>
									</div>
																<div  class="ristyA flexRow " >
										<a target="_blank" href="/course/1655.html" title="PHP新手语法线上课程教学">
											<img src="https://img.php.cn/upload/course/000/000/081/684a8c23d811b293.png?x-oss-process=image/resize,m_mfit,h_86,w_140,limit_0" alt="PHP新手语法线上课程教学" class="ristyAimg"
												onerror="this.src='/static/mobimages/moren/morentu.png'">
										</a>
										<div class="ristyaRight flexColumn">
											<a target="_blank" href="/course/1655.html" title="PHP新手语法线上课程教学"
												class="rirightp overflowclass">PHP新手语法线上课程教学</a>

											<div class="risrdown flexRow">
												<p>共13课时 | 0.8万人学习</p>
											</div>
										</div>
									</div>
														</div>
						<script>
							$('.jpkcTabs>div').click(function (e) {
								$('.jpkcTabs>div').removeClass('check')
								$(this).addClass('check')
								$('.jpkcTab .jpktabd').css('display', 'none')
								$('.' + e.currentTarget.dataset.id).show()
							})
						</script>

					</div>
				</div>

				<div class="zxarts ">
					<div class="rightdTitle flexRow">
						<div class="title-left flexRow"> <b></b>
							<p>最新文章</p>
						</div>
						<a class="rititle-more flexRow" href="" title="最新文章" target="_blank"><span>更多</span><b></b></a>
					</div>
					<div class="xgwzlist ">
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何在Golang中写入JSON文件_保存结构体数据到文件" href="/faq/1919526.html">如何在Golang中写入JSON文件_保存结构体数据到文件</a></div>
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何在Golang中实现并发消息队列消费者_Golang channel消息消费实践" href="/faq/1919491.html">如何在Golang中实现并发消息队列消费者_Golang channel消息消费实践</a></div>
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="Go 中 defer 语句在 goroutine 内部不返回时不会执行" href="/faq/1919458.html">Go 中 defer 语句在 goroutine 内部不返回时不会执行</a></div>
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何使用Golang编写单元测试_创建Test函数验证业务逻辑" href="/faq/1919451.html">如何使用Golang编写单元测试_创建Test函数验证业务逻辑</a></div>
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="Go 语言标准库为何不提供泛型 Contains 方法:设计哲学与类型系统约束" href="/faq/1919443.html">Go 语言标准库为何不提供泛型 Contains 方法:设计哲学与类型系统约束</a></div>
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何使用Golang实现文件加密_Golang crypto 文件加密示例" href="/faq/1919422.html">如何使用Golang实现文件加密_Golang crypto 文件加密示例</a></div>
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="Go 语言标准库为何不提供泛型切片的 Contains 方法?" href="/faq/1919412.html">Go 语言标准库为何不提供泛型切片的 Contains 方法?</a></div>
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何使用Golang实现命令模式_Golang命令模式操作封装方法" href="/faq/1919399.html">如何使用Golang实现命令模式_Golang命令模式操作封装方法</a></div>
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何提升Golang JSON序列化性能_Golang JSON编码效率优化方法" href="/faq/1919395.html">如何提升Golang JSON序列化性能_Golang JSON编码效率优化方法</a></div>
													<div class="xgwzlid flexRow"><b></b><a target="_blank" title="如何使用Golang指针与结构体结合_修改结构体内部字段" href="/faq/1919389.html">如何使用Golang指针与结构体结合_修改结构体内部字段</a></div>
											</div>

				</div>






			</div>



		</div>

	</div>
	<!--底部-->
	<div class="phpFoot">
    <div class="phpFootIn">
        <div class="phpFootCont">
            <div class="phpFootLeft">
                <dl>
                    <dt>
                        <a target="_blank"  href="/about/us.html" rel="nofollow"  title="关于我们" class="cBlack">关于我们</a>
                        <a target="_blank"  href="/about/disclaimer.html" rel="nofollow"  title="免责申明" class="cBlack">免责申明</a>
                        <a target="_blank"  href="/about/jbzx.html" rel="nofollow"  title="举报中心" class="cBlack">举报中心</a>
                        <a   href="javascript:;" rel="nofollow" onclick="advice_data(99999999,'意见反馈')"   title="意见反馈" class="cBlack">意见反馈</a>
                        <a target="_blank"  href="https://www.php.cn/teacher.html" rel="nofollow"   title="讲师合作" class="cBlack">讲师合作</a>
                        <a  target="_blank" href="https://www.php.cn/blog/detail/20304.html" rel="nofollow"  title="广告合作" class="cBlack">广告合作</a>
                        <a  target="_blank" href="/new/"    title="最新文章列表" class="cBlack">最新更新</a>
                                                <div class="clear"></div>
                    </dt>
                    <dd class="cont1">php中文网:公益在线php培训,帮助PHP学习者快速成长!</dd>
                    <dd class="cont2">
                      <span class="ylwTopBox">
                        <a   href="javascript:;"  class="cBlack"><b class="icon1"></b>关注服务号</a>
                        <em style="display:none;" class="ylwTopSub">
                          <p>微信扫码<br/>关注PHP中文网服务号</p>
                          <img src="/static/images/examples/text16.png"/>
                        </em>
                      </span>
                        <span class="ylwTopBox">
                        <a   href="tencent://message/?uin=27220243&Site=www.php.cn&Menu=yes"  class="cBlack"><b class="icon2"></b>技术交流群</a>
                        <em style="display:none;" class="ylwTopSub">
                          <p>QQ扫码<br/>加入技术交流群</p>
                          <img src="/static/images/examples/text18.png"/>
                        </em>
                      </span>
                        <div class="clear"></div>
                    </dd>
                </dl>
                
            </div>
            <div class="phpFootRight">
                <div class="phpFootMsg">
                    <span><img src="/static/images/examples/text17.png"/></span>
                    <dl>
                        <dt>PHP中文网订阅号</dt>
                        <dd>每天精选资源文章推送</dd>
                    </dl>
                </div>
            </div>
        </div>
    </div>
    <div class="phpFootCode">
        <div class="phpFootCodeIn"><p>Copyright 2014-2026 <a   href="https://www.php.cn/" >https://www.php.cn/</a> All Rights Reserved | php.cn | <a   href="https://beian.miit.gov.cn/" rel="nofollow" >湘ICP备2023035733号</a></p><a   href="http://www.beian.gov.cn/portal/index.do" rel="nofollow" ><b></b></a></div>
    </div>
</div>
<input type="hidden" id="verifycode" value="/captcha.html">
<script>
    var _hmt = _hmt || [];
    (function() {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?c0e685c8743351838d2a7db1c49abd56";
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();
</script>
<script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script>

<span class="layui-hide"><script type="text/javascript" src="https://s4.cnzz.com/z_stat.php?id=1280886301&web_id=1280886301"></script></span>

<script src="/static/js/cdn.js?v=1.0.1"></script>



	<!--底部 end-->
	<!-- content -->
	<!--
    <div class="phpFudong">
        <div class="phpFudongIn">
            <div class="phpFudongImg"></div>
            <div class="phpFudongXue">登录PHP中文网,和优秀的人一起学习!</div>
            <div class="phpFudongQuan">全站<span>2000+</span>教程免费学</div>
            <div class="phpFudongCode"><a   href="javascript:;" id="login" title="微信扫码登录">微信扫码登录</a></div>
            <div class="phpGuanbi" onclick="$('.phpFudong').hide();"></div>
            <div class="clear"></div>
        </div>
    </div>
-->	<!--底部浮动层 end-->
	<!--侧导航-->
	<style>
    .layui-fixbar{display: none;}
</style>
<div class="phpSdhBox" style="height:240px !important;">
    <li>
        <div class="phpSdhIn">
            <div class="phpSdhTitle">
                <a   href="/k24.html"  class="hover" title="PHP学习">
                    <b class="icon1"></b>
                    <p>PHP学习</p>
                </a>
            </div>
        </div>
    </li>
    <li>
        <div class="phpSdhIn">
            <div class="phpSdhTitle">
                <a   href="https://www.php.cn/blog/detail/1047189.html" >
                    <b class="icon2"></b>
                    <p>技术支持</p>
                </a>
            </div>
        </div>
    </li>
    <li>
        <div class="phpSdhIn">
            <div class="phpSdhTitle">
                <a   href="#">
                    <b class="icon6"></b>
                    <p>返回顶部</p>
                </a>
            </div>
        </div>
    </li>
</div>
	</body>

</html>

<script type="text/javascript" src="/hitsUp?type=article&id=1530997&time=1767266094">
</script>
<script src="/static/ueditor/third-party/SyntaxHighlighter/shCore.js?1767266094"></script>
<script>
	article_status = "969633";
</script>
<input type="hidden" id="verifycode" value="/captcha.html">
<script type="text/javascript" src="/static/js/global.min.js?5.5.33"></script>
<link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' />
<script type='text/javascript' src='/static/js/viewer.min.js?1'></script>
<script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script>
<script type="text/javascript" src="/static/js/jquery.cookie.js"></script>
<script>var _hmt = _hmt || [];(function(){var hm = document.createElement("script");hm.src="//hm.baidu.com/hm.js?c0e685c8743351838d2a7db1c49abd56";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);})();(function(){var bp = document.createElement('script');var curProtocol = window.location.protocol.split(':')[0];if(curProtocol === 'https'){bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';}else{bp.src = 'http://push.zhanzhang.baidu.com/push.js';};var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(bp, s);})();</script>
	

<script>
	function setCookie(name, value, iDay) { //name相当于键,value相当于值,iDay为要设置的过期时间(天)
		var oDate = new Date();
		oDate.setDate(oDate.getDate() + iDay);
		document.cookie = name + '=' + value + ';path=/;domain=.php.cn;expires=' + oDate;
	}

	function getCookie(name) {
		var cookieArr = document.cookie.split(";");
		for (var i = 0; i < cookieArr.length; i++) {
			var cookiePair = cookieArr[i].split("=");
			if (name == cookiePair[0].trim()) {
				return decodeURIComponent(cookiePair[1]);
			}
		}
		return null;
	}
</script>


<!-- Matomo -->
<script>
	var _paq = window._paq = window._paq || [];
	/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
	_paq.push(['trackPageView']);
	_paq.push(['enableLinkTracking']);
	(function () {
		var u = "https://tongji.php.cn/";
		_paq.push(['setTrackerUrl', u + 'matomo.php']);
		_paq.push(['setSiteId', '11']);
		var d = document,
			g = d.createElement('script'),
			s = d.getElementsByTagName('script')[0];
		g.async = true;
		g.src = u + 'matomo.js';
		s.parentNode.insertBefore(g, s);
	})();
</script>
<!-- End Matomo Code -->

<script>
	setCookie('is_article', 1, 1);
</script>

<script>
	var is_login = "0";
        var show = 0;
        var ceng = getCookie('ceng');
        //未登录复制显示登录按钮
        if(is_login == 0 && false){
            $(".code").hover(function(){
                $(this).find('.contentsignin').show();
            },function(){
                $(this).find('.contentsignin').hide();
            });
            //不给复制
            $('.code').bind("cut copy paste",function(e) {
                e.preventDefault();
            });
            $('.code .contentsignin').click(function(){
                $(document).trigger("api.loginpopbox");
            })
        }else{
            // 获取所有的 <pre> 元素
            var preElements = document.querySelectorAll('pre');
            preElements.forEach(function(preElement) {
                // 创建复制按钮
                var copyButton = document.createElement('button');
                copyButton.className = 'copy-button';
                copyButton.textContent = '复制';
                // 添加点击事件处理程序
                copyButton.addEventListener('click', function() {
                    // 获取当前按钮所属的 <pre> 元素中的文本内容
                    var textContent = preElement.textContent.trim();
                    // 创建一个临时 textarea 元素并设置其值为 <pre> 中的文本内容
                    var tempTextarea = document.createElement('textarea');
                    tempTextarea.value = textContent;
                    // 将临时 textarea 添加到文档中
                    document.body.appendChild(tempTextarea);
                    // 选中临时 textarea 中的文本内容并执行复制操作
                    tempTextarea.select();
                    document.execCommand('copy');
                    // 移除临时 textarea 元素
                    document.body.removeChild(tempTextarea);
                    // 更新按钮文本为 "已复制"
                    this.textContent = '已复制';
                });

                // 创建AI写代码按钮
                var aiButton = document.createElement('button');
                aiButton.className = 'copy-button';
                aiButton.textContent = 'AI写代码';
                aiButton.style.marginLeft = '5px';
                aiButton.style.marginRight = '5px';
                // 添加点击事件处理程序
                aiButton.addEventListener('click', function() {
                // Generate a random number between 0 and 1
                        var randomChance = Math.random();

                    // If the random number is less than 0.5, open the first URL, else open the second
                    if (randomChance < 0.5) {
                        window.open('https://www.doubao.com/chat/coding?channel=php&source=hw_db_php', '_blank');
                    } else {
                        window.open('https://click.aliyun.com/m/1000402709/', '_blank');
                    }
                });

                // 将按钮添加到 <pre> 元素前面
                preElement.parentNode.insertBefore(copyButton, preElement);
                preElement.parentNode.insertBefore(aiButton, preElement);
        });
        }
</script>