接下来我们重写原Abp的部分实现,来驳接手机号相关业务。
改造User类
重写PhoneNumber使得电话号码为必填项,和中国大陆手机号11位长度
public new const int MaxPhoneNumberLength = 11;
[Required]
[StringLength(
前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读。
首先来编写发送验证码函数, 登录,绑定,解绑的业务都需要发送验证码功能,通过currentVerifyingType 来区别当前验证码种类。也就是在服务端的Purpose目的。
匿名函数 闭包
匿名函数
顾名思义,就是没有名字的函数。。。
func(){
fmt.Println("我就是匿名函数")
}
匿名函数的两种执行方法
将匿名函数赋给一个变量
定义后立即执行匿名函数
// 讲匿名函数赋给一个变量
tmp := func(){
fmt.Prin
chatGPT正式发布已经有段时间了,这段时间我也深度体验了chatGPT的魅力。
OpenAI除了提供网页版的chatGPT,还通过api的形式提供了很多其它服务,包括文字纠错、图片生成、音频转换等等。
作为程序员,即使有现成的openai库,但还是免不了想自己造轮子,所以就有这个openai库
原文链接:> https://www.zhoubotong.site/post/95.html
某些业务场景可能需要实现两个或者多个map 的交差并集,一下举个简单的demo, 思路其实并不复杂:
package main
import "fmt"
// 并集
func union(
最近的项目用到了 RxGo ,因为之前从没有接触过,特意去学了学,特此记录下。文章很多内容是复制了参考资料或者官方文档。如果涉及侵权,请联系删除,谢谢。
1、RxGo简介
1.1 基础介绍
RxGo是一个基于Go语言的响应式编程库,它提供了一种简单而强大的方式来处理异步事件流和数据流。RxGo
1.更改代理(方便步骤3)
方法一:
go env -w GOPROXY="https://goproxy.cn"
方法二:(非永久性,该方法对我有效)
$env:GOPROXY="https://goproxy.cn"
注: http://mirrors.aliyun.c
夜莺初探三·Categraf采集器
前言
github仓库文档中对Categraf有很详细的介绍,简单重复一下就是:支持多种数据格式的remote_write;All-in-one的设计理念,指标采集只需要一个agent完成,也计划支持日志和调用链路的数据采集;Go编写,依赖少,容易分发和安装;内
高质量编程简介及编码规范
高质量:
各种边界条件考虑完备
异常情况处理,稳定性
易读易维护
编程原则
简单性
可读性
生产力
编码规范
公共符号始终要注释
例外:实现接口的方法不需要注释
格式化
使用gofmt(官方工具)自动格式化
注释
代码作用(适合公共符号)
代
异常处理
panic 异常处理
如果出现了panic异常,那么会停止当前函数的运行,然后会找recover()方法,如果没有的话,就会报错退出程序,如果有就会执行recover的方法体中的方法
我们可以使用defer延迟处理函数来捕获panic异常,用recover()来从错误场景中恢复,
@目录创建页面布局创建手势控件创建影子控件唱盘拨动交互唱盘和唱针动画项目地址
用过网易云音乐App的同学应该都比较熟悉它播放界面。
这是一个良好的交互设计,留声机的界面隐喻准确地向人们传达产品概念和使用方法:当手指左右滑动时,便模拟了更换唱盘从而导向切换歌曲的交互功能。
今天在 .NET MAUI
1、FSM简介
1.1 有限状态机的定义
有限状态机(Finite State Machine,FSM)是一种数学模型,用于描述系统在不同状态下的行为和转移条件。
状态机有三个组成部分:状态(State)、事件(Event)、动作(Action),事件(转移条件)触发状态的转移和动作的执行。动作的
泛型
问题解决
一个计算sum的函数
func sum(slice []int) int {
var res int
for _, value := range slice {
res += value
}
return res
}
如果需要提供对int,float64,stri
播放控制服务
IMusicControlService:
播放控制类,用于当前平台播放器对象的操作,对当前所播放曲目的暂停/播放,下一首/上一首,快进快退(寻迹),随机、单曲模式等功能的控制。
播放控制类包含一个平台特定的播放器,由于要制作通用的播放控制类,IMusicControlService
协程
进程和线程
进程
当运行一个应用程序的时候,操作系统会为这个应用程序启动一个进程。可以将这个进程看作一个包含了应用程序在运行中需要用到和维护的各种资源的容器。这些资源包括但不限于内存地址空间、文件和设备的句柄以及线程
线程
一个线程是一个执行空间,这个空间会被操作系统调度来运行函数中
1. 简介
在go中,slice是一种动态数组类型,其底层实现中使用了数组。slice有以下特点:
*slice本身并不是数组,它只是一个引用类型,包含了一个指向底层数组的指针,以及长度和容量。
*slice的长度可以动态扩展或缩减,通过append和copy操作可以增加或删除slice中的元素。
本文讲解的是golang.org/x/sync这个包中的errgroup
1、errgroup 的基础介绍
学习过 Go 的朋友都知道 Go 实现并发编程是比较容易的事情,只需要使用go关键字就可以开启一个 goroutine。那对于并发场景中,如何实现goroutine的协调控制呢?常见的一
go中 for循环的坑
在使用for循环修改结构体切片中的值时,发现并没有修改成功。
type Dog struct {
name string
}
func (d *Dog) setNewName(name string) {
d.name = name
}
func main() {
一. 前言
了解 sync.WaitGroup的用法都知道
一个 goroutine 需要等待多个 goroutine 完成和多个 goroutine 等待一个 goroutine 干活时都可以解决问题
WaitGroup 的确是一个很强大的工具,但是使用它相对来说还是有一点小麻烦,
一方面我
先直接上代码
r := gin.Default()
// 注册中间件,使body可以重复读取
r.Use(func(context *gin.Context) {
all, err := context.GetRawData() // 读取body的内容
if err != nil