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

Go实现http同步文件操作 - 增删改查

http同步文件操作 - 增删改查

  • http同步文件操作 - 增删改查
  • 1. 前置要求
    • 1.1. 构建结构体 文件名 + 文件内容
      • 1.1.1. 页面结构体
      • 1.1.2. 为`Page`结构体绑定方法:`Save`
      • 1.1.3. 对`Page`结构体支持页面内容查看方法,同时提供页面文件是否存在的方法
    • 1.2. 简单验证上面的结构体是否可以直接改变值
  • 使用HTTP来完成对页面的增删改查
    • 1. 增加对页面文件保存的操作
      • 增加mian方法,进行测试
    • 2. 增加对页面文件进行查看内容的操作
      • 增加mian方法,进行测试
    • 3. 增加对页面文件删除操作
      • 增加mian方法,进行测试
    • 4. 增加对页面文件内容更新的操作
      • 增加mian方法,进行测试
      • 增删改查的操作保存在一个文件里,内容如下
  • other

http同步文件操作 - 增删改查

1. 前置要求

1.1. 构建结构体 文件名 + 文件内容

1.1.1. 页面结构体

type Page struct {Title string `json:"title"`Body  string `json:"body"`
}
// ``符号为结构体的标准,可忽略

1.1.2. 为Page结构体绑定方法:Save

// SavePage 页面文件保存方法,保存到数据库,这里保存到页面文件中
// 使用bufio操作文件
// notice: 延时关闭 flush
// 绑定Page指针变量
func (page *Page) SavePage(title string, body string) (err error) {title += ".txt"// todo 1. 拿到页面文件句柄file, err := os.OpenFile(title, os.O_CREATE|os.O_RDWR, fs.ModePerm)// todo final stepdefer func() { _ = file.Close() }()if err != nil {fmt.Println("无法获取到页面文件,error:", err)return err}// todo 2. 打开页面文件writer := bufio.NewWriter(file)// todo 3. 往页面文件写入内容nByteNum, err := writer.Write([]byte(body))if err != nil {fmt.Println("页面文件保存失败,error:", err)return err}// todo 4. 刷写数据出去_ = writer.Flush()fmt.Println("写入的内容大小为:", nByteNum, "字节")return nil
}
  1. 内容添加文件后缀,固定为.txt

  2. 使用bufio操作文件,可以更换其它方式

  3. *指针变量

  4. 注意事项:

    1. 延时关闭

      defer func() { _ = file.Close() }()

    2. 数据刷写

      _ = writer.Flush()

1.1.3. 对Page结构体支持页面内容查看方法,同时提供页面文件是否存在的方法


// 判断是否存在该页面文件名,不需要加后缀!已经手动添加;也可以优化,多加入参数表示后缀即可
func ExistFile(fileName string) bool {if _, err := os.Stat(fileName + ".txt"); err != nil {if os.IsNotExist(err) {return false}}return true
}// 查看指定的页面文件内容
// 使用os操作文件
func ViewPage(title string) (page *Page) {page = &Page{}page.Title = titleif ExistFile(title) {fileContent, err := os.ReadFile(title + ".txt")if err != nil {fmt.Println("读取页面文件出错, error is :", err)} else {page.Body = string(fileContent)}}return page
}
  • 上面内容为一个文件,该entity/entity.go文件的全部代码为:
package entityimport ("bufio""fmt""io/fs""os"
)type Page struct {Title string `json:"title"`Body  string `json:"body"`
}// SavePage 页面文件保存方法,保存到数据库,这里保存到页面文件中
// 使用bufio操作文件
// notice: 延时关闭 flush
func (page *Page) SavePage(title string, body string) (err error) {title += ".txt"// todo 1. 拿到页面文件句柄file, err := os.OpenFile(title, os.O_CREATE|os.O_RDWR, fs.ModePerm)// todo final stepdefer func() { _ = file.Close() }()if err != nil {fmt.Println("无法获取到页面文件,error:", err)return err}// todo 2. 打开页面文件writer := bufio.NewWriter(file)// todo 3. 往页面文件写入内容nByteNum, err := writer.Write([]byte(body))if err != nil {fmt.Println("页面文件保存失败,error:", err)return err}// todo 4. 刷写数据出去_ = writer.Flush()fmt.Println("写入的内容大小为:", nByteNum, "字节")return nil
}// 判断是否存在该页面文件名,不需要加后缀!
func ExistFile(fileName string) bool {if _, err := os.Stat(fileName + ".txt"); err != nil {if os.IsNotExist(err) {return false}}return true
}// 查看指定的页面文件内容
// 使用os操作文件
func ViewPage(title string) (page *Page) {page = &Page{}page.Title = titleif ExistFile(title) {fileContent, err := os.ReadFile(title + ".txt")if err != nil {fmt.Println("读取页面文件出错, error is :", err)} else {page.Body = string(fileContent)}}return page
}

1.2. 简单验证上面的结构体是否可以直接改变值

func main() {// 验证你的结构体是否发生改变 - 指针变量page := entity.ViewPage("TestPage")fmt.Println(page)page.Body = "change"fmt.Println(page)
}

使用HTTP来完成对页面的增删改查

1. 增加对页面文件保存的操作

// http方式保存page
// 默认从请求体中获取内容作为body传入文件
// 直接调用/savePage的body默认值为:this is a default value
// 更新操作也会调用该方法,body值为 上传的请求体内容
func saveHandler(responseWriter http.ResponseWriter, request *http.Request) {// todo 1. 在url中获取 page的title值title := request.URL.Path[len("/savePage/"):]// todo 2. 填充 body内容page := &entity.Page{}// important 本人在后面update会遇到坑,默认从请求体中获取body// todo 2.1. 优先考虑从请求体获取bodybody := request.FormValue("body")// todo 2.2. 请求体为空串,则赋值默认值if body == "" {body = "this is a default value"}// todo 3. 将body值写入到页面文件err := page.SavePage(title, body)// todo 3.1. 展示写入结果if err != nil {_, _ = responseWriter.Write([]byte("页面文件保存不成功"))fmt.Println("页面文件保存不成功,error is :", err)return} else {message := "页面文件保存成功"_, _ = responseWriter.Write([]byte(message))fmt.Println(message)}
}

增加mian方法,进行测试

func main() {// url路径要对应,当然你也可以更改;// 若修改viewPage,上面的viewHandler方法也要对应改变http.HandleFunc("/savePage/", saveHandler)err := http.ListenAndServe(":8989", nil)if err != nil {fmt.Println("端口异常")}
}
  • 运行程序,然后到浏览器访问:localhost:8989/viewPage/myFirst2

    • 结果会展示

      • 在这里插入图片描述

      • 页面也会展示成功的提示

    • 项目目录下会生成myFirst2.txt文件,内容为:

      this is a default value
      

2. 增加对页面文件进行查看内容的操作

// http 方式查看特定的page内容
// 使用硬编码页面
func viewHandler(responseWriter http.ResponseWriter, request *http.Request) {// todo 1. 在url中获取 page的title值title := request.URL.Path[len("/viewPage/"):]// todo 2. 判断是否已经存在该页面文件if !entity.ExistFile(title) {// todo 2.1. 不存在该页面文件就结束fmt.Printf("不存在%v页面文件", title)_, _ = responseWriter.Write([]byte("不存在该页面文件"))return}// todo 2.2. 获取该页面的内容page := entity.ViewPage(title)body := []byte(page.Body)// todo 3. 页面展示内容_, _ = responseWriter.Write(body)
}

增加mian方法,进行测试

func main() {// url路径要对应,当然你也可以更改;// 若修改viewPage,上面的viewHandler方法也要对应改变http.HandleFunc("/savePage/", saveHandler)http.HandleFunc("/viewPage/", viewHandler)err := http.ListenAndServe(":8989", nil)if err != nil {fmt.Println("端口异常")}
}
  • 运行程序,到浏览器输入 localhost:8989/viewPage/myFirst2

    • 会查看当前项目下是否存在myFirst2.txt文件,如果存在,则会返回页面文件内容。反之会展示不存在该页面文件内容

      • 我们前面生成了myFirst2.txt文件,效果为:

        • 在这里插入图片描述

        • 页面展示的内容为文件的内容

      • 我们访问没有对应的文件url:localhost:8989/viewPage/myFirst3

        • 效果为:

          在这里插入图片描述

        • 即页面展示不存在该文件。你也可以再利用savePage来生成一个myFirst3.txt文件

3. 增加对页面文件删除操作

// http方式删除页面文件
func deleteHandler(responseWriter http.ResponseWriter, request *http.Request) {// todo 1. 在url中获取 page的title值title := request.URL.Path[len("/deletePage/"):]// todo 2. 判断是否存在该页面文件if !entity.ExistFile(title) {_, _ = responseWriter.Write([]byte("页面文件不存在,无法删除"))return} else {// todo 3. 移除页面文件err := os.Remove(title + ".txt")if err != nil {_, _ = responseWriter.Write([]byte("页面文件删除异常,请检查你的权限,或者联系管理员"))return}_, _ = responseWriter.Write([]byte("页面文件删除成功"))}
}

增加mian方法,进行测试

func main() {// url路径要对应,当然你也可以更改;// 若修改viewPage,上面的viewHandler方法也要对应改变http.HandleFunc("/savePage/", saveHandler)http.HandleFunc("/viewPage/", viewHandler)http.HandleFunc("/deletePage/", deleteHandler)err := http.ListenAndServe(":8989", nil)if err != nil {fmt.Println("端口异常")}
}
  • 运行程序,到浏览器输入 localhost:8989/deletePage/myFirst2

    • 程序会删除myFirst2文件,效果为:

      在这里插入图片描述

      • 项目下的文件已经被删除,若此时再次执行则会提示无法删除

        在这里插入图片描述

4. 增加对页面文件内容更新的操作

// http方式更新页面文件
func updateHandler(responseWriter http.ResponseWriter, request *http.Request) {// todo 1. 在url中获取 page的title值title := request.URL.Path[len("/updatePage/"):]// todo 2. 查看该页面文件page := entity.ViewPage(title)// todo 3. 填充html页面,硬编码fmt.Fprintf(responseWriter, "<h1>Editing %s</h1>"+// 直接调用了 saveHandler// todo 4. 再次保存该页面文件"<form action=\"/savePage/%s\" method=\"POST\">"+"<textarea name=\"body\">%s</textarea><br>"+"<input type=\"submit\" value=\"Save\">"+"</form>",page.Title, page.Title, page.Body)
}
  • notice :todo的第四步,保存后会出发/savePage的访问动作

增加mian方法,进行测试

func main() {// url路径要对应,当然你也可以更改;// 若修改viewPage,上面的viewHandler方法也要对应改变http.HandleFunc("/savePage/", saveHandler)http.HandleFunc("/viewPage/", viewHandler)http.HandleFunc("/deletePage/", deleteHandler)http.HandleFunc("/updatePage/", updateHandler)err := http.ListenAndServe(":8989", nil)if err != nil {fmt.Println("端口异常")}
}
  • 运行程序,到浏览器输入 localhost:8989/updatePage/myFirst2

    • 页面会返回一个html页面,效果为:

      在这里插入图片描述

      • 尝试在文本框输入内容,这里输入hello,java页 可乐 唱跳rap,然后点击Save进行保存。

        • 然后页面会进行跳转到保存页面,效果图为:

          在这里插入图片描述

增删改查的操作保存在一个文件里,内容如下

package mainimport ("fmt""goland-setting/test/webapp/entity""net/http""os"
)// http 方式查看特定的page
// 使用硬编码页面
func viewHandler(responseWriter http.ResponseWriter, request *http.Request) {// todo 1. 在url中获取 page的title值title := request.URL.Path[len("/viewPage/"):]// todo 2. 判断是否已经存在该页面文件if !entity.ExistFile(title) {// todo 2.1. 不存在该页面文件就结束fmt.Printf("不存在%v页面文件", title)_, _ = responseWriter.Write([]byte("不存在该页面文件"))return}// todo 2.2. 获取该页面的内容page := entity.ViewPage(title)body := []byte(page.Body)// todo 3. 页面展示内容_, _ = responseWriter.Write(body)
}// http方式保存page
// 默认从请求体中获取body
// 直接调用/savePage的body默认值为:this is a default value
// 更新操作也会调用该方法,body值为 上传的请求体内容
func saveHandler(responseWriter http.ResponseWriter, request *http.Request) {// todo 1. 在url中获取 page的title值title := request.URL.Path[len("/savePage/"):]// todo 2. 填充 body内容page := &entity.Page{}// important 本人在后面update会遇到坑,默认从请求体中获取body// todo 2.1. 优先考虑从请求体获取bodybody := request.FormValue("body")// todo 2.2. 请求体为空串,则赋值默认值if body == "" {body = "this is a default value"}// todo 3. 将body值写入到页面文件err := page.SavePage(title, body)// todo 3.1. 展示写入结果if err != nil {_, _ = responseWriter.Write([]byte("页面文件保存不成功"))fmt.Println("页面文件保存不成功,error is :", err)return} else {message := "页面文件保存成功"_, _ = responseWriter.Write([]byte(message))fmt.Println(message)}
}// http方式删除页面文件
func deleteHandler(responseWriter http.ResponseWriter, request *http.Request) {// todo 1. 在url中获取 page的title值title := request.URL.Path[len("/deletePage/"):]// todo 2. 判断是否存在该页面文件if !entity.ExistFile(title) {_, _ = responseWriter.Write([]byte("页面文件不存在,无法删除"))return} else {// todo 3. 移除页面文件err := os.Remove(title + ".txt")if err != nil {_, _ = responseWriter.Write([]byte("页面文件删除异常,请检查你的权限,或者联系管理员"))return}_, _ = responseWriter.Write([]byte("页面文件删除成功"))}
}// http方式更新页面文件
func updateHandler(responseWriter http.ResponseWriter, request *http.Request) {// todo 1. 在url中获取 page的title值title := request.URL.Path[len("/updatePage/"):]// todo 2. 查看该页面文件page := entity.ViewPage(title)// todo 3. 填充html页面fmt.Fprintf(responseWriter, "<h1>Editing %s</h1>"+// 直接调用了 saveHandler// todo 4. 再次保存该页面文件"<form action=\"/savePage/%s\" method=\"POST\">"+"<textarea name=\"body\">%s</textarea><br>"+"<input type=\"submit\" value=\"Save\">"+"</form>",page.Title, page.Title, page.Body)
}func main() {http.HandleFunc("/savePage/", saveHandler)http.HandleFunc("/deletePage/", deleteHandler)http.HandleFunc("/updatePage/", updateHandler)http.HandleFunc("/viewPage/", viewHandler)err := http.ListenAndServe(":8989", nil)if err != nil {fmt.Println("端口异常")}
}

一个简单的webApp就完成了。

other

  • 对于更新操作,服务器硬编码html太难了,可以使用html/template来渲染,这样会好很多。

相关文章:

Go实现http同步文件操作 - 增删改查

http同步文件操作 - 增删改查 http同步文件操作 - 增删改查1. 前置要求1.1. 构建结构体 文件名 文件内容1.1.1. 页面结构体1.1.2. 为Page结构体绑定方法&#xff1a;Save1.1.3. 对Page结构体支持页面内容查看方法&#xff0c;同时提供页面文件是否存在的方法 1.2. 简单验证上面…...

Spring Boot整合 Spring Security

Spring Boot整合 1、RBAC 权限模型 RBAC模型&#xff08;Role-Based Access Control&#xff1a;基于角色的访问控制&#xff09; 在RBAC模型里面&#xff0c;有3个基础组成部分&#xff0c;分别是&#xff1a;用户、角色和权限&#xff0c;它们之间的关系如下图所示 SELECT…...

浅谈低代码

低代码开发是近年来迅速崛起的软件开发方法&#xff0c;让编写应用程序变得更快、更简单。有人说它是美味的膳食&#xff0c;让开发过程高效而满足&#xff0c;但也有人质疑它是垃圾食品&#xff0c;缺乏定制性与深度。你认为低代码到底是美以下方向仅供参考。味的膳食还是垃圾…...

Innodb-ruby深入探索Innodb存储结构

达在之前已经分享过Innodb数据存储结构知识&#xff0c;但是都是基于理论原理知识理解&#xff0c;今天利用Innodb文件解析工具ruby进行探索Innodb真实的存储结构。 索引原理过程&#xff1a;【Mysql】 InnoDB引擎深入 - 数据页 | 聚集索引_innodb的聚集索引的数据插入_Surviv…...

Echarts的使用 笔记

1.数据可视化前言 1.1.什么是数据可视化 数据可视化&#xff1a; 就是把数据以更加直观的方式进行呈现. 1.2.数据可视化的好处 清晰有效地传达与沟通信息更容易洞察隐藏在数据中的信息 2.ECharts的基本使用 2.1.ECharts官网 ECharts是百度公司开源的一个使用 JavaScript 实…...

信息系统工程的基本概念

系统是由相互作用和相互依赖的若干部分&#xff0c;按一定规律结合成的、具有特定功能的有机整体。系统有下述特性&#xff1a; &#xff08;1&#xff09;集合性。系统是由许多元素有机地组成的整体。每个元素服从整体&#xff0c;追求全局最优。 &#xff08;2&#xff09;相…...

SAP UI5 walkthrough step10 Descriptor for Applications

在这一步&#xff0c;我们将会把所有的应用相关的描述性的文件独立放到manifest.json 新建一个manifest.json文件 webapp/manifest.json (New) {"_version": "1.58.0","sap.app": {"id": "ui5.walkthrough","i18n&q…...

打造专属小程序,乔拓云模板平台助力商家抢占先机

打造专属小程序&#xff0c;乔拓云模板平台助力商家抢占先机&#xff01;该平台涵盖全行业小程序模板&#xff0c;一键复制即可上线。 想要快速创建高效实用的小程序&#xff0c;乔拓云小程序模板开发平台为您提供了解决方案&#xff01;我们为您提供一系列精心设计的小程序模板…...

Vue2学习(组件的使用)

Vue中使用组件的三个步骤&#xff1a; 一、定义组件(或者叫创建组件) 使用Vue.extend(options)创建&#xff0c;其中options和new Vue(options)时传入的那个options几乎一样&#xff0c;但也有点区别&#xff1b; 区别如下&#xff1a; 1.el不要写&#xff0c;为什么&#x…...

基于Spring、SpringMVC、MyBatis开发的游乐场管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring、SpringMVC、MyBatis开发的游…...

数据清洗、特征工程和数据可视化、数据挖掘与建模的应用场景

1.5 数据清洗、特征工程和数据可视化、挖掘建模的应用场景 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.5节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应…...

Qt简介、工程文件分离、创建Qt工程、Qt的帮助文档

QT 简介 core&#xff1a;核心模块&#xff0c;非图形的接口类&#xff0c;为其它模块提供支持 gui&#xff1a;图形用户接口&#xff0c;qt5之前 widgets&#xff1a;图形界面相关的类模块 qt5之后的 database&#xff1a;数据库模块 network&#xff1a;网络模块 QT 特性 开…...

机器学习与低代码开发:创新驱动的双剑合璧

引言 随着科技的日新月异&#xff0c;机器学习和低代码开发已经成为引领技术行业变革的两大重要趋势。机器学习通过模拟人类的学习方式&#xff0c;让计算机具备了自我学习和预测的能力&#xff0c;打破了传统计算机程序的局限性。而低代码开发则以简化软件开发过程为目标&…...

企业博客SEO:优化SOP,助您提升搜索引擎可见性

企业博客是互联网时代企业与用户沟通的重要渠道之一&#xff0c;引流成本也比较低。然而&#xff0c;依然有企业会处在3种状态&#xff1a; 1. 有博客&#xff0c;但内容更新不积极或搁置 2. 有博客&#xff0c;但内容散乱 3. 根本就没有博客 如果是这几种状态&#xff0c;…...

[HITCON 2017]SSRFme perl语言的 GET open file 造成rce

这里记录学习一下 perl的open缺陷 这里首先本地测试一下 发现这里使用open打开 的时候 如果通过管道符 就会实现命令执行 然后这里注意的是 perl 中的get 调用了 open的参数 所以其实我们可以通过管道符实现命令执行 然后这里如果file可控那么就继续可以实现命令执行 这里就…...

华为配置Smart Link主备备份示例

定义 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个接口作为另一个的备份。Smart Link常用于双上行组网&#xff0c;提供可靠高效的备份和快速的切换机制。 Monitor Link是一种接口联动方案&#xff0c;它通过监控设备的上行接口…...

harmonyOS开发技巧(一)——封装hilog日志

1. 创建sharedLibrary共享hsp包commonLib&#xff1a;功能工具类。 import hilog from ohos.hilog;class Logger {private DOMAIN: number 0x0000;private APP_NAME: string Myapplication;public info(tag: string, ...args: string[]) {hilog.info(this.DOMAIN, [${this.A…...

npm、yarn常用命令

1、设置npm路径 #全局安装路径 npm config set prefix "D:\Program Files\nodejs\node_global" #缓存路径 npm config set cache "D:\Program Files\nodejs\node_cache"2、设置镜像 #1,淘宝镜像源 npm config set registry https://registry.npmmirror.…...

编译和使用WPS-ghrsst-to-intermediate生成SST

一、下载 V1.0 https://github.com/bbrashers/WPS-ghrsst-to-intermediate/tree/masterV1.5&#xff08;使用过程报错&#xff0c;原因不详&#xff0c;能正常使用的麻烦告知一下方法&#xff09; https://github.com/dmitryale/WPS-ghrsst-to-intermediate二、修改makefile…...

通过静态HTTP实现负载均衡

在当今的互联网环境中&#xff0c;随着用户数量的不断增加和业务需求的不断扩大&#xff0c;单台服务器往往无法承受所有的访问压力。为了确保网站的可用性和性能&#xff0c;负载均衡成为了一种常见的解决方案。本文将探讨如何通过静态HTTP实现负载均衡&#xff0c;以提升网站…...

Python开发运维:Python常见异常类型

目录 一、理论 1.异常 一、理论 1.异常 &#xff08;1&#xff09;概念 异常是程序因为某种原因无法正常工作了&#xff0c;比如缩进错误、缺少软件包、环境 错误、连接超时等都会引发异常。 一个健壮的程序应该把所能预知的异常都应做相应的处理&#xff0c;保障程序长期运…...

HarmonyOS学习 第1节 DevEco Studio配置

俗话说的好&#xff0c;工欲善其事,必先利其器。我们先下载官方的开发工具DevEco Studio. 下载完成后&#xff0c;进行安装。 双击DevEco Studio&#xff0c;点击Next按照指引完成安装 重新启动DevEco&#xff0c;点击 Agree 进入环境配置&#xff0c;安装Node.js和ohpm 点击Ne…...

WordPress 注册/重置密码/更改密码钩子

wordpress在提供邮件提醒的地方都留了hook&#xff0c;方便让开发者自定义。最新在添加第三方登录时遇到虚拟邮箱发信问题&#xff0c;为了防止给指定邮件地址后缀发信&#xff0c;可以利用如下wordpress提供的钩子来实现。 //https://www.wwttl.com/101.html //禁止用户注册时…...

LabVIEW开发远程结构健康监测系统

LabVIEW开发远程结构健康监测系统 工程师依赖于振动监测来评估建筑物、桥梁和其他大型结构的完整性。传统的振动监测工具在数据收集上存在限制&#xff0c;无法长时间收集高保真波形。随着内存存储、处理器速度和宽带无线通信技术的进步&#xff0c;出现了对能够长时间收集并实…...

多段图问题-动态规划解法

一、多段图问题 问题描述&#xff1a;设图G(V, E)是一个带权有向图&#xff0c;如果把顶点集合V划分成k个互不相交的子集Vi (2≤k≤n, 1≤i≤k)&#xff0c;使得对于E中的任何一条边(u, v)&#xff0c;必有u∈Vi&#xff0c;v∈Vim (1≤i≤k, 1&#xff1c;im≤k)&#xff0c;…...

Android实验:绑定service实验

目录 实验目的实验内容实验要求项目结构代码实现代码解释结果展示 实验目的 充分理解Service的作用&#xff0c;与Activity之间的区别&#xff0c;掌握Service的生命周期以及对应函数&#xff0c;了解Service的主线程性质&#xff1b;掌握主线程的界面刷新的设计原则&#xff…...

K8S集群优化的可执行优化

目录 前期环境优化 1.永久关闭交换分区 2.#加载 ip_vs 模块 3.调整内核参数 4.#使用Systemd管理的Cgroup来进行资源控制与管理 5.开机自启kubelet 6.内核参数优化方案 7.etcd优化 默认etcd空间配额大小为 2G&#xff0c;超过 2G 将不再写入数据。通过给etcd配置 --quo…...

Remix IDE 快速开始Starknet

文章目录 一、Remix 项目二、基于Web的开发环境Remix 在线 IDE三、Starknet Remix 插件如何使用使用 Remix【重要】通过 Starknet by Example 学习一、Remix 项目 Remix 项目网站 在以太坊合约开发领域,Remix 项目享有很高的声誉,为各个级别的开发人员提供功能丰富的工具集…...

SQL中limit与分页的结合

select * from test limit 2,10; 这条语句的含义&#xff1a;从第3条语句开始查询&#xff0c;共显示10条语句。 select * from test limit a,b; a0,第一条记录。 a1,第二条记录。 a2,第三条记录。 这条语句的含义&#xff1a;从第a1条语句开始查询&#xff0c;共显示b条…...

KALI LINUX信息收集

预计更新 第一章 入门 1.1 什么是Kali Linux&#xff1f; 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 …...

联想电脑重装系统Win10步骤和详细教程

联想电脑拥有强大的性能&#xff0c;很多用户办公都喜欢用联想电脑。有使用联想电脑的用户反映系统出现问题了&#xff0c;想重新安装一个正常的系统&#xff0c;但是不知道重新系统的具体步骤。接下来小编详细介绍给联想电脑重新安装Win10系统系统的方法步骤。 推荐下载 系统之…...

PET(Point-Query Quadtree for Crowd Counting, Localization, and More)

PET&#xff08;Point-Query Quadtree for Crowd Counting, Localization, and More&#xff09; 介绍实验记录训练阶段推断阶段 介绍 论文&#xff1a;Point-Query Quadtree for Crowd Counting, Localization, and More 实验记录 训练阶段 TODO 推断阶段 下面是以一张输…...

NgRx中dynamic reducer的原理和用法?

在 Angular 应用中&#xff0c;使用 NgRx 状态管理库时&#xff0c;动态 reducer 的概念通常是指在运行时动态添加或移除 reducer。这样的需求可能源于一些特殊的场景&#xff0c;比如按需加载模块时&#xff0c;你可能需要添加相应的 reducer。 以下是动态 reducer 的一般原理…...

麒麟V10服务器安装Apache+PHP

安装PHP yum install php yum install php-curl php-gd php-json php-mbstring php-exif php-mysqlnd php-pgsql php-pdo php-xml 配置文件 /etc/php.ini 修改参数 date.timezone Asia/Shanghai max_execution_time 60 memory_limit 1280M post_max_size 200M file_upload…...

DOS 批处理 (一)

DOS 批处理 1. 批处理是什么&#xff1f;2. DOS和MS-DOS3. 各种操作系统shell的区别Shell 介绍图形用户界面&#xff08;GUI&#xff09;shell命令行界面&#xff08;CLI&#xff09;的 shell命令区别 1. 批处理是什么&#xff1f; 批处理(Batch)&#xff0c;也称为批处理脚本…...

P1047 [NOIP2005 普及组] 校门外的树题解

题目 某校大门外长度为 l 的马路上有一排树&#xff0c;每两棵相邻的树之间的间隔都是1 米。我们可以把马路看成一个数轴&#xff0c;马路的一端在数轴 00 的位置&#xff0c;另一端在l 的位置&#xff1b;数轴上的每个整数点&#xff0c;即0,1,2,…,l&#xff0c;都种有一棵树…...

pip的常用命令

安装、卸载、更新包&#xff1a;pip install [package-name]&#xff0c;pip uninstall [package-name]&#xff0c;pip install --upgrade [package-name]。升级pip&#xff1a;pip install --upgrade pip。查看已安装的包&#xff1a;pip list&#xff0c;pip list --outdate…...

力扣面试题 08.12. 八皇后(java回溯解法)

Problem: 面试题 08.12. 八皇后 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 八皇后问题的性质可以利用回溯来解决&#xff0c;将大问题具体分解成如下待解决问题&#xff1a; 1.以棋盘的每一行为回溯的决策阶段&#xff0c;判断当前棋盘位置能否放置棋子 2.如何判…...

2023年第十二届数学建模国际赛小美赛A题太阳黑子预测求解分析

2023年第十二届数学建模国际赛小美赛 A题 太阳黑子预测 原题再现&#xff1a; 太阳黑子是太阳光球上的一种现象&#xff0c;表现为比周围区域暗的暂时斑点。它们是由抑制对流的磁通量浓度引起的表面温度降低区域。太阳黑子出现在活跃区域内&#xff0c;通常成对出现&#xff…...

jsp 分页查询展示,实现按 上一页或下一页实现用ajax刷新内容

要实现按上一页或下一页使用 Ajax 刷新内容&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 在前端页面中添加两个按钮&#xff0c;分别为“上一页”和“下一页”。当用户点击按钮时&#xff0c;触发 Ajax 请求。 2. 在后端控制器中接收 Ajax 请求&#xff0c;并根据传…...

基于ssm在线云音乐系统的设计与实现论文

摘 要 随着移动互联网时代的发展&#xff0c;网络的使用越来越普及&#xff0c;用户在获取和存储信息方面也会有激动人心的时刻。音乐也将慢慢融入人们的生活中。影响和改变我们的生活。随着当今各种流行音乐的流行&#xff0c;人们在日常生活中经常会用到的就是在线云音乐系统…...

简谈PostgreSQL的wal_level=logic

一、PostgreSQL的wal_levellogic的简介 wal_levellogic 是 PostgreSQL 中的一个配置选项&#xff0c;用于启用逻辑复制&#xff08;logical replication&#xff09;功能。逻辑复制是一种高级的数据复制技术&#xff0c;它允许您将变更&#xff08;例如插入、更新和删除&#…...

自动化巡检实现方法 (一)------- 思路概述

一、自动化巡检需要会的技能 1、因为巡检要求一天24小时全天在线&#xff0c;因此巡检程序程序一定会放在服务器上跑&#xff0c;所以要对linux操作熟悉哦 2、巡检的代码要在git上管理&#xff0c;所以git的基本操作要熟悉 3、为了更方便不会代码的同学操作&#xff0c;所以整个…...

mysql获取时间异常

1.查看系统时间 时区是上海&#xff0c;本地时间正常 [roottest etc]# timedatectlLocal time: 一 2023-12-04 17:00:35 CSTUniversal time: 一 2023-12-04 09:00:35 UTCRTC time: 一 2023-12-04 09:00:34Time zone: Asia/Shanghai (CST, 0800)NTP enabled: no NTP synchroni…...

维基百科文章爬虫和聚类:高级聚类和可视化

一、说明 维基百科是丰富的信息和知识来源。它可以方便地构建为带有类别和其他文章链接的文章&#xff0c;还形成了相关文档的网络。我的 NLP 项目下载、处理和应用维基百科文章上的机器学习算法。 在我的上一篇文章中&#xff0c;KMeans 聚类应用于一组大约 300 篇维基百科文…...

springboot智慧导诊系统源码:根据患者症状匹配挂号科室

一、系统概述 医院智慧导诊系统是在医疗中使用的引导患者自助就诊挂号&#xff0c;在就诊的过程中有许多患者不知道需要挂什么号&#xff0c;要看什么病&#xff0c;通过智慧导诊系统&#xff0c;可输入自身疾病的症状表现&#xff0c;或选择身体部位&#xff0c;在经由智慧导诊…...

Shell脚本如何使用 for 循环、while 循环、break 跳出循环和 continue 结束本次循环

Shell脚本如何使用 for 循环、while 循环、break 跳出循环和 continue 结束本次循环 下面是一个简单的 Shell 脚本示例&#xff0c;演示了如何使用 for 循环、while 循环、break 跳出循环和 continue 结束本次循环。 #!/bin/bash# For循环 echo "For循环示例&#xff1a;…...

n个人排成一圈,数数123离队

#include<stdio.h> int main() { int i, n100,k0,j0,a[1000]{0};//k&#xff1a;数数123的变量&#xff0c;j记录离开队列人数的变量scanf("%d",&n);for(int ii0; ii<n; ii){ for( i0; i<n; i){// printf("wei%d ",i);if((a[i]0)&&…...

深度学习基础回顾

深度学习基础 浅层网络 VS 深层网络深度学习常用的激活函数Sigmoid 函数ReLU 函数Softplus 函数tanh函数 归纳偏置CNN适用数据归纳偏置 RNN适用数据归纳偏置 浅层网络 VS 深层网络 浅层神经网络参数过多&#xff0c;导致模型的复杂度和计算量很高&#xff0c;难以训练。而深层…...

【Vue】修改组件样式并动态添加样式

文章目录 目标修改样式动态添加/删除样式样式不生效 注意&#xff1a;类似效果el-step也可以实现&#xff0c;可以不用手动实现。这里只是练习。 目标 使用组件库中的组件&#xff0c;修改它的样式并动态添加/删除样式。 修改样式 组件中的一些类可能添加样式无法生效。如Ele…...