11 2021 档案

摘要:bubble清单 一个基于gin+gorm开发的练手小项目,通过该项目可初识go web开发该有的姿势。 前端页面基于vue和ElementUI开发,对前端不熟悉的童鞋可直接下载templates和static文件夹下的内容使用。 使用指南 下载 git clone https://github.c 阅读全文
posted @ 2021-11-30 23:11 RandySun 阅读(168) 评论(0) 推荐(0)
摘要:GORM模型删除 一、删除记录 package main import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) type UsersUpdate struct { gorm.Model //Name *string `gorm:"type:va 阅读全文
posted @ 2021-11-30 22:52 RandySun 阅读(232) 评论(0) 推荐(0)
摘要:GORM模型更新 一、更新所有字段 Save()默认会更新该对象的所有字段,即使你没有赋值。 package main import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) type UsersUpdate struct { gorm.Mode 阅读全文
posted @ 2021-11-30 22:51 RandySun 阅读(722) 评论(0) 推荐(0)
摘要:GORM模型查询 model type CreditCard struct { gorm.Model Number string UserID uint } type CreateUsers struct { gorm.Model Name string Email *string Age uint 阅读全文
posted @ 2021-11-30 22:50 RandySun 阅读(427) 评论(0) 推荐(0)
摘要:GORM模型(Model)创建 一、定义模型 type CreateUsers struct { gorm.Model Name string Email *string Age uint8 Birthday *time.Time MemberNumber sql.NullString Activa 阅读全文
posted @ 2021-11-30 22:48 RandySun 阅读(1421) 评论(0) 推荐(0)
摘要:GORM模型(Model)定义 在使用ORM工具时,通常我们需要在代码中定义模型(Models)与数据库中的数据表进行映射,在GORM中模型(Models)通常是正常定义的结构体、基本的go类型或它们的指针。 同时也支持sql.Scanner及driver.Valuer接口(interfaces)。 阅读全文
posted @ 2021-11-30 22:33 RandySun 阅读(3996) 评论(0) 推荐(1)
摘要:GORM基本实例 注意: 本文以MySQL数据库为例,讲解GORM各项功能的主要使用方法。 往下阅读本文前,你需要有一个能够成功连接上的MySQL数据库实例。 Docker快速创建MySQL实例 很多同学如果不会安装MySQL或者懒得安装MySQL,可以使用一下命令快速运行一个MySQL8.0.19 阅读全文
posted @ 2021-11-30 22:32 RandySun 阅读(364) 评论(0) 推荐(0)
摘要:GORM安装 Github GORM The fantastic ORM library for Golang aims to be developer friendly. 特性 全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承 阅读全文
posted @ 2021-11-30 22:31 RandySun 阅读(1038) 评论(0) 推荐(0)
摘要:Gin框架中间件 Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。 一、定义中间件 Gin中的中间件必须是一个gin.HandlerFunc类型。例如我们像下 阅读全文
posted @ 2021-11-30 22:29 RandySun 阅读(921) 评论(0) 推荐(0)
摘要:Gin框架路由 一、普通路由 r.GET("/index", func(c *gin.Context) {...}) r.GET("/login", func(c *gin.Context) {...}) r.POST("/login", func(c *gin.Context) {...}) pa 阅读全文
posted @ 2021-11-30 22:22 RandySun 阅读(318) 评论(0) 推荐(0)
摘要:Gin框架重定向 一、HTTP重定向 HTTP 重定向很容易。 内部、外部重定向均支持。 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() // http重定向 阅读全文
posted @ 2021-11-30 22:20 RandySun 阅读(275) 评论(0) 推荐(0)
摘要:Gin框架文件上传 一、单个文件上传 文件上传前端页面代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>fileUpload</title> </head> <body> <form action="/ 阅读全文
posted @ 2021-11-30 22:17 RandySun 阅读(508) 评论(0) 推荐(0)
摘要:Gin框架参数绑定 参数绑定 为了能够更方便的获取请求相关参数,提高开发效率,我们可以基于请求的Content-Type识别请求数据类型并利用反射机制自动提取请求中QueryString、form表单、JSON、XML等参数到结构体中。 下面的示例代码演示了.ShouldBind()强大的功能,它能 阅读全文
posted @ 2021-11-30 22:15 RandySun 阅读(384) 评论(0) 推荐(0)
摘要:Gin框架获取path参数 一、获取path参数 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() // 获取请求path URL 参数 // 注意URL的匹配 阅读全文
posted @ 2021-11-30 22:11 RandySun 阅读(1234) 评论(0) 推荐(0)
摘要:Gin框架获取form参数 登录界面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>login</title> </head> <body> <form action="/login" method="po 阅读全文
posted @ 2021-11-30 22:08 RandySun 阅读(1102) 评论(0) 推荐(0)
摘要:Gin框架获取query参数 一、Query方式 package main import ( "fmt" "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() // GET请求 url ?后面是queryst 阅读全文
posted @ 2021-11-30 22:05 RandySun 阅读(1448) 评论(0) 推荐(0)
摘要:Gin框架JSON渲染 一、map渲染JSON package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() r.GET("/jsonMap", func(c *gin.C 阅读全文
posted @ 2021-11-30 22:02 RandySun 阅读(196) 评论(0) 推荐(0)
摘要:Gin框架静态文件处理 一、静态文件处理 当我们渲染的HTML文件中引用了静态文件时,我们只需要按照以下方式在渲染页面前调用gin.Static方法即可。 func main() { r := gin.Default() r.Static("/static", "./static") r.LoadH 阅读全文
posted @ 2021-11-30 22:01 RandySun 阅读(2005) 评论(0) 推荐(0)
摘要:Gin框架Gin渲染 一、HTML渲染 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() // 解析模板 r.LoadHTMLFiles("./template 阅读全文
posted @ 2021-11-30 21:59 RandySun 阅读(272) 评论(0) 推荐(0)
摘要:Gin框架简单使用 Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。 如果你是性能和高效的追求者, 你会爱上Gin。 一、Gin框架介绍 Go世界里最流行的Web框架,Github上有52.8K+s 阅读全文
posted @ 2021-11-30 21:50 RandySun 阅读(367) 评论(0) 推荐(0)
摘要:text与html模板的区别 html/template针对的是需要返回HTML内容的场景,在模板渲染过程中会对一些有风险的内容进行转义,以此来防范跨站脚本攻击。 一、text/template package main import ( "fmt" "net/http" "text/templat 阅读全文
posted @ 2021-11-29 23:16 RandySun 阅读(387) 评论(0) 推荐(0)
摘要:自定义标识符语法 一、修改默认的标识符 Go标准库的模板引擎使用的花括号{{和}}作为标识,而许多前端框架(如Vue和 AngularJS)也使用{{和}}作为标识符,所以当我们同时使用Go语言模板引擎和以上前端框架时就会出现冲突,这个时候我们需要修改标识符,修改前端的或者修改Go语言的。这里演示如 阅读全文
posted @ 2021-11-29 23:15 RandySun 阅读(334) 评论(0) 推荐(0)
摘要:模板继承 一、block {{block "name" pipeline}} T1 {{end}} block是定义模板{{define "name"}} T1 {{end}}和执行{{template "name" pipeline}}缩写,典型的用法是定义一组根模板,然后通过在其中重新定义块模板 阅读全文
posted @ 2021-11-29 23:14 RandySun 阅读(121) 评论(0) 推荐(0)
摘要:自定义函数和模板嵌套 一、自定义函数 Go的模板支持自定义函数。 package main import ( "fmt" "net/http" "text/template" ) type UserInfo struct { Name string Age int Gender string } / 阅读全文
posted @ 2021-11-29 23:12 RandySun 阅读(228) 评论(0) 推荐(0)
摘要:模板语法 一、{{.}} 模板语法都包含在{{和}}中间,其中{{.}}中的点表示当前对象。 当我们传入一个结构体对象时,我们可以根据.来访问结构体的对应字段。例如: package main import ( "fmt" "net/http" "text/template" ) // 传入多对象 阅读全文
posted @ 2021-11-29 23:07 RandySun 阅读(329) 评论(0) 推荐(0)
摘要:http-template模板初识 html/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用html/template这个包。 一、模板与渲染 在一些前后端不分离的Web架构中 阅读全文
posted @ 2021-11-29 22:45 RandySun 阅读(505) 评论(0) 推荐(0)
摘要:简单web 一、hello web package main import ( "fmt" "net/http" ) /* @author RandySun @create 2021-11-08-22:42 */ func sayHello(w http.ResponseWriter, r *htt 阅读全文
posted @ 2021-11-29 22:43 RandySun 阅读(143) 评论(0) 推荐(0)
摘要:Gin框架 第一篇 web初识 [01] 简单web [02] http-template模板初识 [03] 模板语法 [04] 自定义函数和模板嵌套 [05] 模板继承 [06] 自定义标识符语法 [07] text与html模板的区别 第二篇 Gin框架入门 [01] Gin框架简单使用 [02 阅读全文
posted @ 2021-11-29 22:33 RandySun 阅读(352) 评论(0) 推荐(0)
摘要:kubectl get cs # 查看集群状态 kubectl get pods --show-labels # 产看pods标签 kubectl get nodes -o wide # 产看pod信息 kubectl get pods # 获取pods kubectl get nodes # 获取 阅读全文
posted @ 2021-11-23 22:47 RandySun 阅读(120) 评论(0) 推荐(0)
摘要:找不到 raw.githubusercontent.com 的服务器 IP 地址 raw.GitHub的ip经常更换,所以我们先去查一下该网址IP,点击IP查询然后输入 raw.githubusercontent.com 1 在2020/06/28 查询得 199.232.68.133 1 修改ho 阅读全文
posted @ 2021-11-23 22:46 RandySun 阅读(596) 评论(0) 推荐(0)
摘要:四、 Kubernetes 基础 1、 kubernetes 基础使用篇 1.1、 kubernetes 带来的变革 1.1.1、对于开发人员 由于公司业务多,开发环境、测试环境、预生产环境和生产环境都是隔离的,而且除了生产环境,为了节省 成本,其他环境可能是没有日志收集的,在没有用 k8s 的时候 阅读全文
posted @ 2021-11-23 22:45 RandySun 阅读(138) 评论(0) 推荐(0)
摘要:Kubernetes 进阶教程 一、 服务探针 对线上业务来说,保证服务的正常稳定是重中之重,对故障服务的及时处理避免影响业务以及快速恢复一直 是开发运维的难点。Kubernetes 提供了健康检查服务,对于检测到故障服务会被及时自动下线,以及通过重启服 务的方式使服务自动恢复。 1、 存活性探测( 阅读全文
posted @ 2021-11-23 22:45 RandySun 阅读(660) 评论(0) 推荐(0)
摘要:集群证书 kubernetes 组件众多,这些组件之间通过 HTTP/GRPC 相互通信,以协同完成集群中应用的部署和管理工 作。尤其是 master 节点,更是掌握着整个集群的操作。其安全就变得尤为重要了,在目前世面上最安全的,使 用最广泛的就是数字证书。kubernetes 正是使用这种认证方式 阅读全文
posted @ 2021-11-23 22:44 RandySun 阅读(220) 评论(0) 推荐(0)
摘要:一、 kubeadm 部署篇 Kubernetes 有两种方式,第一种是二进制的方式,可定制但是部署复杂容易出错;第二种是 kubeadm 工具 安装,部署简单,不可定制化。本次我们部署 kubeadm 版。 1、 部署系统版本 1、 部署系统版本 软件 版本 CentOS CentOS Linux 阅读全文
posted @ 2021-11-23 22:41 RandySun 阅读(264) 评论(0) 推荐(0)
摘要:docker&&k8s基础 第一篇 Go介绍与开发环境搭建 [01] Go语言介绍 [02] Go安装 [03] Go语言集成开发环境之GoLand安装使用 [04] Go语言集成开发环境之VS Code安装使用 第二篇 Go包管理 [01] Go项目结构 [02] Go包管理 [03] Go语言之 阅读全文
posted @ 2021-11-23 22:38 RandySun 阅读(105) 评论(0) 推荐(0)
摘要:Kafka Apache Kafka由著名职业社交公司LinkedIn开发,最初是被设计⽤来解决LinkedIn公司内部海量⽇志传 输等问题。Kafka使⽤Scala语⾔编写,于2011年开源并进⼊Apache孵化器,2012年10⽉正式毕业,现 在为Apache顶级项⽬。 介绍 Kafka是⼀个分 阅读全文
posted @ 2021-11-07 23:01 RandySun 阅读(196) 评论(0) 推荐(0)
摘要:⽇志收集 项⽬背景 每个业务系统都有⽇志,当系统出现问题时,需要通过⽇志信息定位和解决问题。 当系统机器⽐较少 时,登陆到服务器上查看即可满⾜ 当系统机器规模巨⼤,登陆到机器上查看⼏乎不现实(分布式的系 统,⼀个系统部署在⼗⼏台机器上) 解决⽅案 把机器上的⽇志实时收集,统⼀的存储到中⼼系统。 在对 阅读全文
posted @ 2021-11-07 22:48 RandySun 阅读(194) 评论(0) 推荐(0)
摘要:Go语言基础之WebSocket编程 webSocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据 在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就 阅读全文
posted @ 2021-11-07 22:32 RandySun 阅读(1501) 评论(1) 推荐(0)
摘要:Go语言基础之HTTP编程 web工作流程 Web服务器的工作原理可以简单地归纳为 客户机通过TCP/IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档 服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解 阅读全文
posted @ 2021-11-07 22:30 RandySun 阅读(286) 评论(0) 推荐(0)
摘要:Go语言基础之TCP黏包 黏包示例 服务端: package main import ( "bufio" "fmt" "io" "net" ) func Process2(conn net.Conn) { defer conn.Close() reader := bufio.NewReader(co 阅读全文
posted @ 2021-11-07 22:29 RandySun 阅读(234) 评论(0) 推荐(0)
摘要:Go语言基础之TCP编程 TCP协议 TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数 阅读全文
posted @ 2021-11-07 22:26 RandySun 阅读(300) 评论(0) 推荐(0)
摘要:Go语言基础之UDP编程 UDP协议 UDP协议(User Datagram Protocol)中文名称是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,不需要建立连接就能直接进行数据发送和接收,属于不可靠的、没有时 阅读全文
posted @ 2021-11-07 22:24 RandySun 阅读(388) 评论(0) 推荐(0)
摘要:Go语言基础之socket编程 Socket是BSD UNIX的进程通信机制,通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。Socket可以理解为TCP/IP网络的API,它定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。电脑上运行的应用程序通常通过”套 阅读全文
posted @ 2021-11-07 22:22 RandySun 阅读(1052) 评论(0) 推荐(0)
摘要:Go语言基础之互联网协议介绍 互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。我们理解了这些协议,就理解了互联网的原理。由于这些协议太过庞大和复杂,没有办法在这里一概而全,只能介绍一下我们日常开发中接触较多的几 阅读全文
posted @ 2021-11-07 22:20 RandySun 阅读(258) 评论(0) 推荐(0)
摘要:Go语言基础之GMP原理与调度 一、Golang “调度器” 的由来? (1) 单进程时代不需要调度器 我们知道,一切的软件都是跑在操作系统上,真正用来干活 (计算) 的是 CPU。早期的操作系统每个程序就是一个进程,知道一个程序运行完,才能进行下一个进程,就是 “单进程时代” 一切的程序只能串行发 阅读全文
posted @ 2021-11-07 15:30 RandySun 阅读(366) 评论(0) 推荐(0)
摘要:Go语言基础之原子操作(atomic包) 原子操作 代码中的加锁操作因为涉及内核态的上下文切换会比较耗时、代价比较高。针对基本数据类型我们还可以使用原子操作来保证并发安全,因为原子操作是Go语言提供的方法它在用户态就可以完成,因此性能比加锁操作更好。Go语言中原子操作由内置的标准库sync/atom 阅读全文
posted @ 2021-11-07 15:28 RandySun 阅读(493) 评论(0) 推荐(0)
摘要:Go语言基础之Sync rsync.WaitGroup 在代码中生硬的使用time.Sleep肯定是不合适的,Go语言中可以使用sync.WaitGroup来实现并发任务的同步。 sync.WaitGroup有以下几个方法: 方法名 功能 (wg * WaitGroup) Add(delta int 阅读全文
posted @ 2021-11-07 15:28 RandySun 阅读(513) 评论(0) 推荐(0)
摘要:Go语言基础之并发安全和锁 有时候在Go代码中可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞态)。类比现实生活中的例子有十字路口被各个方向的的汽车竞争;还有火车上的卫生间被车厢里的人竞争。 举个例子: var x int64 var wg sync.Wai 阅读全文
posted @ 2021-11-07 15:27 RandySun 阅读(169) 评论(0) 推荐(0)
摘要:Go语言基础之select select多路复用 在某些场景下我们需要同时从多个通道接收数据。通道在接收数据时,如果没有数据可以接收将会发生阻塞。你也许会写出如下代码使用遍历的方式来实现: for{ // 尝试从ch1接收值 data, ok :=<-ch1 // 尝试从ch2接收值 data, o 阅读全文
posted @ 2021-11-07 15:26 RandySun 阅读(318) 评论(0) 推荐(0)
摘要:Go语言基础之goroutine池 简易的work pool func worker(id int, jobs<-chan int, results chan<- int) { for j := range jobs { fmt.Printf("worker:%d start job:%d\n", 阅读全文
posted @ 2021-11-07 15:25 RandySun 阅读(190) 评论(0) 推荐(0)
摘要:Go语言基础之channel(信道) 什么是信道? 信道可以想像成 **Go 协程之间通信的管道。**如同管道中的水会从一端流到另一端,通过使用信道,数据也可以从一端发送,在另一端接收 信道的定义,就是一个变量(特殊),两个协程之间通信,传递什么类型(int,bool) 单纯地将函数并发执行是没有意 阅读全文
posted @ 2021-11-07 15:23 RandySun 阅读(553) 评论(0) 推荐(0)
摘要:Go语言基础之runtime包 runtime.Gosched() 让出CPU时间片,重新等待安排任务(大概意思就是本来计划的好好的周末出去烧烤,但是你妈让你去相亲,两种情况第一就是你相亲速度非常快,见面就黄不耽误你继续烧烤,第二种情况就是你相亲速度特别慢,见面就是你侬我侬的,耽误了烧烤,但是还馋就 阅读全文
posted @ 2021-11-07 15:09 RandySun 阅读(412) 评论(0) 推荐(0)
摘要:Go语言基础之Goroutine 在java/c++中我们要实现并发编程的时候,我们通常需要自己维护一个线程池,并且需要自己去包装一个又一个的任务,同时需要自己去调度线程执行任务并维护上下文切换,这一切通常会耗费程序员大量的心智。那么能不能有一种机制,程序员只需要定义很多个任务,让系统去帮助我们把这 阅读全文
posted @ 2021-11-07 15:07 RandySun 阅读(419) 评论(0) 推荐(0)
摘要:Go语言基础之并发介绍 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。 B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 C.一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行,多 阅读全文
posted @ 2021-11-07 15:06 RandySun 阅读(135) 评论(0) 推荐(0)
摘要:Go语言基础之包 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的。本文介绍了Go语言中如何定义包、如何导出包的内容及如何导入其他包。 一、Go语言的包(package) 包介绍 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们 阅读全文
posted @ 2021-11-06 22:10 RandySun 阅读(159) 评论(0) 推荐(0)
摘要:Go语言基础之结构体练习 一、创建目录结构 二、实现功能 // studeng.go文件 package main import "fmt" /* @author RandySun @create 2021-11-03-8:00 */ type Student struct { id int nam 阅读全文
posted @ 2021-11-06 20:45 RandySun 阅读(158) 评论(0) 推荐(0)
摘要:flask快速入门 第一篇 flask入门 [01] flask-wsgiref [02] falsk使用 [03] request请求与响用 [04] 闪现 [05] 请求和响应的周期执行顺序与异常和过滤器和模板语法 [06] 自定义中间件 [07] local对象 [08] 偏导函数 [09] 阅读全文
posted @ 2021-11-06 20:37 RandySun 阅读(125) 评论(0) 推荐(1)
摘要:多对多表操作 一、创建表 多对多的第三张表flask不能自动产生第三张表,需要自己手动创建第三张表,并设置表之间的关系 # model.py import datetime from sqlalchemy import create_engine from sqlalchemy.ext.declar 阅读全文
posted @ 2021-11-06 20:36 RandySun 阅读(109) 评论(0) 推荐(0)
摘要:一对多表操作 一、创建建表 # model.py import datetime from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy 阅读全文
posted @ 2021-11-06 20:35 RandySun 阅读(113) 评论(0) 推荐(0)
摘要:单表操作 一、创建表 # model.py import datetime from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy imp 阅读全文
posted @ 2021-11-06 20:34 RandySun 阅读(83) 评论(0) 推荐(0)
摘要:flask中orm增删改查操作 一、创建表 # model.py import datetime from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sql 阅读全文
posted @ 2021-11-06 20:33 RandySun 阅读(542) 评论(0) 推荐(0)
摘要:一、基于scoped_session实现线程安全 from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session from m 阅读全文
posted @ 2021-11-06 20:32 RandySun 阅读(369) 评论(0) 推荐(0)
摘要:SQLAlchemy 一、介绍 SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。 pip3 install sqlalchemy 组成部分: E 阅读全文
posted @ 2021-11-06 20:30 RandySun 阅读(64) 评论(0) 推荐(0)
摘要:wtforms 表单使用 **安装:**pip3 install wtforms 一、简单登录验证 1.1 logn.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </ 阅读全文
posted @ 2021-11-06 20:28 RandySun 阅读(313) 评论(0) 推荐(1)
摘要:manage自定义命令 安装: pip3 install flask-script 一、使用命令启动项目 from flask import Flask from flask_script import Manager app = Flask(__name__) # 注册项目 manager = M 阅读全文
posted @ 2021-11-06 20:26 RandySun 阅读(131) 评论(0) 推荐(0)
摘要:flask-session 一、flask-session使用 作用:将默认保存的签名cookie中的值 保存到 redis/memcached/file/Mongodb/SQLAlchemy 安装:pip3 install flask-session from flask import Flask 阅读全文
posted @ 2021-11-06 20:24 RandySun 阅读(76) 评论(0) 推荐(0)
摘要:信号 Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为 安装:pip3 install blinker 内置信号: request_started = _signals.signal('request-started') # 请求到来前执行 re 阅读全文
posted @ 2021-11-06 20:23 RandySun 阅读(183) 评论(0) 推荐(0)
摘要:g对象 一、g对象 作用: 当请求一个函数时候,可以设置一个变量,提供给全局使用 二、使用方式一 from flask import g, Flask, send_file app = Flask(__name__) @app.before_request def request_before(): 阅读全文
posted @ 2021-11-06 20:22 RandySun 阅读(73) 评论(0) 推荐(0)
摘要:flask项目目录结构 一、蓝图使用 from flask import Blueprint from flask import render_template,url_for from flask import request account = Blueprint('acc', __name__ 阅读全文
posted @ 2021-11-06 20:17 RandySun 阅读(595) 评论(0) 推荐(0)
摘要:一、flask源码分析 # 创建一个flask项目 from flask import Flask app = Flask(__name__) if __name__ == '__main__': # app.__call__() app.run() 1.查看app.run()中run方法 首先进入 阅读全文
posted @ 2021-11-06 20:14 RandySun 阅读(349) 评论(0) 推荐(0)
摘要:一、偏导函数 from functools import partial def test(a, b, c, d): return a + b + c + d # 事先进行占位,重新产生了一个新的函数地址,可以直接加括号直接运行 tes = partial(test, a=1, b=2) print 阅读全文
posted @ 2021-11-06 20:09 RandySun 阅读(285) 评论(0) 推荐(0)
摘要:一、local对象 1.1不使用local # 不用local from threading import Thread import time cxw = -1 def task(arg): global cxw cxw = arg time.sleep(2) print(cxw) for i i 阅读全文
posted @ 2021-11-06 20:08 RandySun 阅读(80) 评论(0) 推荐(0)
摘要:一、自定义中间件 """ @author RansySun @create 2019-12-16-19:08 """ from flask import Flask, flash, get_flashed_messages, request app = Flask(__name__) class M 阅读全文
posted @ 2021-11-06 20:07 RandySun 阅读(81) 评论(0) 推荐(0)
摘要:一、请求和响应的周期执行顺序与异常和过滤器和模板语法 from flask import Flask, request, render_template app = Flask(__name__) ''' 可以多个请求之前的函数 执行顺序是谁在前面谁先执行 如果前面的before_request有r 阅读全文
posted @ 2021-11-06 20:06 RandySun 阅读(148) 评论(0) 推荐(0)
摘要:一、闪现 闪现:闪现解决的问题,假设在a页面操作出错,c页面(操作了多少页面我都不管),跳转到b页面,在b页面显示a页面错误信息; Flask 提供了一个非常简单的方法来使用闪现系统向用户反馈信息。闪现系统使得在一个请求结束的时候记录一个信息,然后在且仅仅在下一个请求中访问这个数据,强调flask闪 阅读全文
posted @ 2021-11-06 20:05 RandySun 阅读(324) 评论(0) 推荐(0)
摘要:一、request请求与响用 from flask import Flask, request, make_response, render_template app = Flask(__name__) @app.route('/login.html', methods=['GET', "POST" 阅读全文
posted @ 2021-11-06 20:04 RandySun 阅读(70) 评论(0) 推荐(0)
摘要:falsk使用 一、配置文件使用debug flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为: { 'DEBUG': get_debug_flag(default=False), 是否开启Debug模式 'TESTING': False, 是否开启测试模 阅读全文
posted @ 2021-11-06 20:02 RandySun 阅读(274) 评论(0) 推荐(0)
摘要:flask-wsgiref 一、wsgiref """ @author RansySun @create 2019-12-13-17:02 """ from wsgiref.simple_server import make_server # 请求处理函数 def mya(environ, star 阅读全文
posted @ 2021-11-06 20:00 RandySun 阅读(106) 评论(0) 推荐(0)
摘要:Django-WebSocket 一.channles模块安装 pip3 install -U channels 二.django中channles配置apps */settings.py INSTALLED_APPS = ( 'django.contrib.auth', 'django.contr 阅读全文
posted @ 2021-11-06 17:58 RandySun 阅读(225) 评论(0) 推荐(0)
摘要:Python实现WebSocket 一、WebSocket建立连接 1. 握手环节 **目的:**验证服务端是否支持Websocket协议 流程: 客户端浏览器第一次访问服务器的时候,浏览器内部会自动生成一个随机字符串,将该随机字符串发送给服务端(基于http)协议)浏览器也保留随机生成的字符串(在 阅读全文
posted @ 2021-11-06 17:52 RandySun 阅读(7671) 评论(0) 推荐(0)
摘要:WebSocket内部原理 websocket(主流浏览器和框架都支持),它也是一个网络协议,并且基于该协议传输数据,数据是加密处理的, WebSocket 与 HTTP WebSocket 的最大特点就是:服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是全 双工通信。 TTP 阅读全文
posted @ 2021-11-06 17:49 RandySun 阅读(607) 评论(0) 推荐(0)
摘要:基于流(Comet Streaming) 1. 基于 Iframe 及 htmlfile 的流(Iframe Streaming) iframe 流方式是在页面中插入一个隐藏的 iframe,利用其 src 属性在服务器和客户端之间创建一条长链接,服务器向 iframe 传输数据(通常是 HTML, 阅读全文
posted @ 2021-11-06 17:42 RandySun 阅读(212) 评论(0) 推荐(0)
摘要:长短轮询 长轮询 Long polling 阶段(Comet Long polling) 原理:服务端给每个客户端建立队列,让浏览器通过ajax向后端偷偷的发送请求,去各自对应的队列中获取数据,如果没有数据会阻塞,但是不会一直阻塞,会通过timeout参数及异常处理的方式限制阻塞事件,比如30s后返 阅读全文
posted @ 2021-11-06 17:40 RandySun 阅读(277) 评论(0) 推荐(1)
摘要:短轮询 短轮询 Polling 阶段 **原理:**让浏览器每隔几秒钟通过ajax朝服务端发送请求来获取数据,eg:每隔5s中朝服务端发送一次请求 这种方式下,是不适合获取实时信息的,客户端和服务器之间会一直进行连接,每隔一段时间就询问一次。客户端会轮询,有没有新消息。这种方式连接数会很多,一个接受 阅读全文
posted @ 2021-11-06 17:36 RandySun 阅读(195) 评论(0) 推荐(0)
摘要:全双工通信的 WebSocket 一.WebSocket 是什么? WebSocket 是一种网络通信协议。在 2009 年诞生,于 2011 年被 IETF 定为标准 RFC 6455 通信标准。并由 RFC7936 补充规范。WebSocket API 也被 W3C 定为标准。 WebSocke 阅读全文
posted @ 2021-11-06 17:24 RandySun 阅读(173) 评论(0) 推荐(0)
摘要:WebSocket 一、服务向客户端推送消息 1.1 轮询 **原理:**让浏览器每隔几秒钟通过ajax朝服务端发送请求来获取数据,eg:每隔5s中朝服务端发送一次请求 优缺点: 消息延迟太高 消耗资源较多 请求次数较多 1.2 长轮询 原理:服务端给每个客户端建立队列,让浏览器通过ajax向后端偷 阅读全文
posted @ 2021-11-06 17:20 RandySun 阅读(202) 评论(0) 推荐(0)
摘要:Go语言基础之接口断言 空接口可以存储任意类型的值,那我们如何获取其存储的具体数据呢? 一、接口类型的值 对于像Go语言这种静态类型的语言,一个变量的类型与具体的值是分开的概念,每个变量都有且只有一个类型,在编译时就已经确定不会发生改变,因此Go语言的变量的类型也称之为静态类型,比如 int、str 阅读全文
posted @ 2021-11-02 09:02 RandySun 阅读(345) 评论(0) 推荐(0)
摘要:Go语言基础之接口多实现,嵌套,空接口 一、类型与接口的关系 一个类型实现多个接口 **一个类型可以同时实现多个接口,而接口间彼此独立,**不知道对方的实现。 例如,狗可以叫,也可以动。我们就分别定义Sayer接口和Mover接口,如下: Mover接口。 // Sayer 接口 type Saye 阅读全文
posted @ 2021-11-01 22:54 RandySun 阅读(179) 评论(0) 推荐(0)
摘要:值接收者和指针接收者实现接口的区别 使用值接收者实现接口和使用指针接收者实现接口有什么区别呢?接下来我们通过一个例子看一下其中的区别。 我们有一个Mover接口和一个dog结构体。 type Mover interface { move() } type dog struct {} 一、 值接收者实 阅读全文
posted @ 2021-11-01 22:31 RandySun 阅读(301) 评论(0) 推荐(0)
摘要:Go语言基础之接口定义 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 一、接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型,引用类型。 interface是一组method的集合,是duck-type programm 阅读全文
posted @ 2021-11-01 22:17 RandySun 阅读(858) 评论(0) 推荐(0)
摘要:【Github】remote: Support for password authentication was removed 今天在上传代码的时候一直报错 remote: Support for password authentication was removed on August 13, 2 阅读全文
posted @ 2021-11-01 21:33 RandySun 阅读(266) 评论(0) 推荐(0)