自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 如何选择 `VARCHAR` 和 `CHAR` 类型

类型需要额外的字节来存储长度信息,可能会导致查询性能稍微降低。类型的长度是固定的,所以在进行查询时可以更快地定位到数据,因为每个字段都位于固定的位置。如果您知道字段的值长度是固定的,或者长度较短,使用。类型的长度是固定的,因此如果存储的值长度超过指定的长度,则会被截断或填充。综上所述,如果您知道字段的值长度是固定的,并且存储空间是一个重要的考虑因素,那么使用。如果字段的值长度可变,并且节省存储空间不是首要考虑因素,那么使用。但是,如果字段的值长度是可变的,或者长度较长,使用。类型更适合存储长度可变的数据。

2023-10-28 00:00:51 188

原创 Golang 使用 ProtoBuf Any类型的教程

函数 getMessageTypeFromTypeURL 中,首先解析TypeUrl获取typeName,然后在全局类型注册表中通过typeName查找对应的反射类型,并生成消息对象实例。简介:这篇教程介绍了如何在 Golang 中通过 Protobuf 的 Any 类型打包和解包不同类型的消息,并进行类型断言处理。注意:MessageA和MessageB需提前定义,并通过protoc生成对应的Go代码。

2023-10-22 15:07:07 1711

原创 解决Golang Windows服务停止错误:The requested control is not valid for this service.

在以上代码中,我们使用了http.Server的Shutdown方法来关闭服务器,并且设置了超时,若在5秒内无法关闭全部连接,那么将强制关闭并返回错误。否则,只有在所有连接全部关闭后,Shutdown函数才会返回,保证了服务的正确关闭,避免了”The requested control is not valid for this service”的错误。方法只会立即关闭监听器,对于已经运行的连接不会等待其处理完成。需要特别注意的是,关闭http服务的方式。两个方法来关闭服务。方法来优雅地关闭服务器。

2023-10-19 09:19:34 231

原创 使用Golang创建ZIP压缩文件

函数会创建一个新的ZIP文件,打开源文件,并获取源文件的信息以设置压缩文件的元数据(例如,文件名和修改时间)。然后它会创建一个新的文件头,并将文件头添加到ZIP文件中。最后,它会将源文件的内容复制到压缩文件中。然后,你可以创建一个函数来压缩文件。这个函数会接受一个源文件路径和一个目标ZIP文件路径作为参数。库来创建ZIP压缩文件。以下是一段简单的示例代码,用于创建一个ZIP文件并将一个文件添加到其中。现在你可以使用这个函数来压缩文件了。首先,你需要在你的Go代码中导入。在Go语言中,我们可以使用。

2023-09-15 13:45:35 299

原创 快速上手Go语言的plugin

Go plugin支持将Go包编译为共享库(.so)的形式单独发布。主程序可以在运行时动态加载这些编译为动态共享库文件的Go插件,从中提取导出(exported)变量或函数的符号并在主程序的包中使用。Go插件的这种特性为Go开发人员提供了更多的灵活性,我们可以使用它来实现支持热插拔的插件系统。

2023-08-24 16:33:40 371

原创 Gin框架参数验证错误提示信息设置中文

Gin框架验证错误多语言支持

2023-05-24 17:07:36 646

原创 Golang http包实现文件上传

【代码】Golang http包实现文件上传。

2023-04-07 16:59:33 513

原创 Gin框架使用validator进行数据校验及自定义翻译器

Gin框架使用validator进行数据校验及自定义翻译器安装:go get github.com/go-playground/validator/v10 一、概述validator包一个比较强大的校验工具包。下面是一些学习总结,详细内容可以查看validator 。二、操作符说明标记标记说明,多操作符分割|或操作-跳过字段验证三、常用标记说明标记标记说明例required必填Field或Struct validate:"

2022-05-01 22:06:59 3308

原创 go学习笔记 - 通过singleflight防止缓存击穿

缓存击穿指的是缓存中没有但数据库中有的数据(一般是缓存过期),这时由于并发用户多,同时读缓存数据都没读到,又都去数据库读取,导致数据库压力瞬间增大,造成巨大压力。安装singleflightgo get -u golang.org/x/sync/singleflight基本使用package mainimport ( "fmt" "golang.org/x/sync/singleflight" "log" "sync")var singleHandle singleflig.

2022-04-28 21:32:35 579 1

原创 go学习笔记 - 1.18支持泛型

go1.18新增的泛型

2022-04-15 20:42:43 121

原创 go学习笔记 - GORM json类型存储及查询

func (c *communityIds) Value() (driver.Value, error) { b, err := json.Marshal(c) return string(b), err}

2022-04-13 23:56:49 6371

原创 在Kubernetes中部署应用

创建Deploymet创建nginx-deployment.yaml文件:apiVersion: apps/v1 # 指定api版本,此值必须在kubectl api-versionskind: Deployment # 指定创建资源的角色或类型metadata: # 资源的元数据或属性 name: nginx-deployment # 资源的名字,在一个namespace下必须唯一 labels: # 设定资源的标签 app: nginxspec: # 资源规范字段 sele

2022-04-07 11:23:21 2469

原创 go学习笔记-go mod

更新依赖 go get [包地址@v],go mod tidy将旧项目迁到go mod:go mod init,gobuild ./…

2022-02-23 21:52:48 845

原创 go学习笔记-切片实现队列

type Queue []intfunc (q *Queue) IsEmpty() bool { return len(*q) == 0}func (q *Queue) Push(ele int) { *q = append(*q, ele)}func (q *Queue) Pop() { *q = (*q)[1:]}

2022-02-23 20:26:55 187

原创 go学习笔记-struct重写方式

组合方式重写type MyTreeNode struct { node *tree.Node}// 后序遍历func (n *MyTreeNode) postOrder() { if n == nil || n.node == nil { return } left := MyTreeNode{n.node.Left} left.postOrder() right := MyTreeNode{n.node.Right} right.postOrder() n.node.Pr.

2022-02-23 20:24:43 311

原创 初级算法——删除排序数组中的重复项

一个有序数组 nums ,原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。func removeDuplicates(nums []int) int { left:=0 length:=len(nums) if length==0||nums==nil{ return 0 } for right:=1;right<length;right++{ if nums[left]!=nums[right]{

2021-11-23 23:27:40 175

原创 使用 Interface 接口来写高质量的 PHP 代码

概述在编码中,有一个重要的事情是确保你的代码是可读的、可维护的、可扩展的、易于测试的。我们可以改善这些问题的方法之一就是使用接口(interface)。什么是接口基本上,接口描述了一个类「该做什么」。接口被用于确保实现接口的任何类中都包含接口规定的公共方法。接口可以:用于定义类中的公共方法。用于定义类中的常量。接口不可以:单独实例化。用于定义类中的私有(private)或保护(protected)方法。用于定义类中的属性。接口口用于定义一个类中应该包括的公共方法。需要记住的是,

2021-11-08 15:06:23 210

原创 使用Laravel Passport身份验证创建REST API

1. 创建一个laravel项目composer create-project --prefer-dist laravel/laravel passport2. 安装passport包composer require laravel/passport3. 在 config/app.php添加服务提供者'providers' => [ .... Laravel\Passport\PassportServiceProvider::class,]4. 迁移和安装在.en

2021-09-17 16:56:56 168

原创 laravel-excel导出并写入图片

<?phpnamespace App\Exports;use Illuminate\Contracts\View\View;use Maatwebsite\Excel\Concerns\FromArray;use Maatwebsite\Excel\Concerns\WithEvents;use Maatwebsite\Excel\Concerns\WithHeadings;use Maatwebsite\Excel\Events\AfterSheet;class ProjectA

2021-09-14 21:20:38 887

原创 ant design pro 可编辑表格

import React, {useRef,} from 'react';import {PageHeaderWrapper} from '@ant-design/pro-layout';import {ProColumns, ActionType, TableDropdown} from '@ant-design/pro-table';import ProTable from '@ant-design/pro-table';import {index} from './service';typ

2021-09-08 18:04:52 1033

原创 ubuntu安装字体

ubuntu安装字体字体有.ttf格式(truetype font)和.otf格式(opentype font)字体,在Ubantu上安装相应的字体。把字体拷贝到/usr/share/fonts/,如果是ttf格式创建truetype目录,如果是otf格式创建opentype目录。sudo mkfontscale (创建字体的fonts.scale文件,它用来控制字体旋转缩放)sudo mkfontdir(创建字体的fonts.dir文件,它用来控制字体粗斜体产生)sudo fc-cache -

2021-09-07 21:06:54 3037

转载 laravel安装barryvdh/laravel-snappy

一、下载 wkhtmltopdf下载地址:https://wkhtmltopdf.org/downloads.html选择和自己服务器版本匹配的包root@8c109bb0ca68:/usr/local/bin# cat /etc/issueDebian GNU/Linux 10 \n \l安装.deb 格式包dpkg -X wkhtmltox_0.12.6-1.stretch_amd64.deb /usr/如果提示缺少库的话,安装对应的库apt-get install libXrende

2021-09-06 18:39:40 431

原创 Lumen补全阉割的 php artisan命令

安装flipbox/lumen-generator包composer require flipbox/lumen-generator在 bootstrap/app.php 注册服务提供者:$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);

2021-08-03 19:17:09 191

原创 Nginx-全局异常兜底数据返回

任何接⼝都是可能出错,4xx、5xx等如果业务没有做好统⼀的错误管理,直接暴露给⽤户,⽆疑是看不懂所以假如后端某个业务出错,nginx层也需要进⾏转换让前端知道Http响应是200,其实是将错误的状态码定向⾄200,返回了全局兜底数据server{ listen 80; root /var/www; index index.php; location / { proxy_pass http://lbs; proxy_redir

2021-07-25 22:49:18 485 2

原创 在Ubuntu 20.04下安装PHP 8.0和PHP 8扩展

系统更新#通过运行以下命令,将所有系统软件包更新为最新版本:sudo apt updatesudo apt -y upgrade# 升级Ubuntu 20.04/18.04后重新启动建议:sudo systemctl reboot添加ondrej PPA存储库 # 最新的PHP软件包可在ondrej PPA存储库中获得,运行下面共享的命令以将此存储库添加到Ubuntu 20.04系统中: sudo apt update sudo apt install.

2021-07-25 22:43:06 4458

原创 PHP依赖注入

<?php/** * Class A */class A{ protected B $b; /** * A constructor. * @param B $b */ public function __construct(B $b) { $this->b = $b; } public function aMethod(): void { echo "我是A的方法

2021-07-25 22:34:41 48

原创 Mac不修改hosts文件使用127.0.0.2的方法

sudo ifconfig lo0 alias 127.0.0.2 netmask 0xFFFFFFFF

2021-07-13 23:15:19 407

原创 react ant desing pro联动及优雅的同步执行

type dataType = [{ label: string; value: number;}]; const [areaData, setAreaData] = useState<dataType>([{label: 'default', value: 0}]); const [cityData, setCityData] = useState<dataType>([{label: '请先选择地区', value: 0}]); useEffect(() =>

2021-06-30 10:38:27 260

原创 PHP常用设计模式——简单工厂模式

简单工厂模式一. 简单工厂定义提供一个创建对象实例的功能,而无需关心其具体实现,被创建的对象类型可以是接口、抽象类,也可以是具体的类。二. 简单工厂的结构Api:客户端所需要的功能接口Impl:具体实现API的类,可能会有多个Factory:工厂,选择合适的实现类来创建API接口对象Client:客户端,通过Factory来获取API接口对象,然后面向API接口编程// 接口的...

2019-10-09 13:31:12 164

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除