人的血液7年会全部替换一遍,鱼的记忆只有7秒。
博主最近也在跟风,在网上找一些AI绘图的工具,国外国内基本都了解了一下,工具很多热门的不多,DALL·E,Midjourney,Stable Diffusion,文心一格,通义万象等。映象最深的应该还是这两个,Midjourney,Stable Diffusion,论画质,普遍Midjourney都要高一些,更加逼真,Stable Diffusion更偏向艺术和创作,当然真正的高手创作出来的图也有比Midjourney更震撼,上限很高,不喜勿喷只是个人感觉,毕竟我不是专业的。作为一个白嫖党,外加喜欢研究的我来说,Stable Diffusion才是香。网上看了一些资料,也有很多教程,然后我跟着网上的工具本地搭了一个(教程有很多),用了一些简单的模型和描述生成了一些图,总体来说,很不错,如果是设计专业的来弄,画图面应该更加好看,网上也有各种已经训练好的模型供大家使用,有兴趣的朋友可以尝试一下,主要是免费,随便造,原创。下面就分享一下网友和我生成的图,图片来自互联网和我生成的,如有涉及侵权请及时告知我删除。
查看详情今天在用shell执行PHP文件,需要读取PHP数组中的一些值的时候。遇到了问题,找了很多资料,最后问了AI。经常一翻和AI的纠缠。终于给了我正确的答案,整理如下。事实证明AI真强大。PHP文件中的数组:web_data.php<?php $web_data = [ "port"=>"10764", "secret"=>"LU2DuzNpi94Ff8jastAscGvv2HbGK2UJ", "mainDoain"=>"lxl.petuu.shop", "domain"=>"", 'mysqlUser' => "userName", 'mysqlPassword' => "gehrht1646", ]; return $web_data;shell脚本中写法:projectName=$(php -r 'include "web_data.php"; echo $web_data["mainDoain"];') echo $projectName搞定
查看详情centos下composer两种安装办法,一般用第一种就可以了。第一种#下载composer.phar文件 curl -sS https://getcomposer.org/installer | php #将composer.phar移动到环境变量中并且更名为composer mv composer.phar /usr/local/bin/composer #使用国内镜像 composer config -g repo.packagist composer https://packagist.phpcomposer.com #查看版本 composer --version第二种wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer chmod a x /usr/local/bin/composer
查看详情一般的平台通常都能通过自身的一个包管理工具去安装 git 的各个版本(包括当前官方最新版本),但是红帽系列通过 yum 安装却无法安装最新版本,而且都是很旧的版本,这种版本对许多新的命令以及特性都不支持,例如 switch 命令是 2.23 版本才发布的,在此之前的版本都没有,所以官方推荐像 CentOS 通过下载 git 源码包的方式去安装我们去阿里云下载git,找到版本,直接wget https://mirrors.edge.kernel.org/pub/software/scm/git/ 注意:直接 copy 下载地址,使用 wget 进行下载的时候,需要加上选项 --no-check-certificatewget --no-check-certificate https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz 接下来我们按照步骤进行安装就可以#安装前首先得安装依赖环境 yum install -y perl-devel #解压 tar -zxf git-2.9.5.tar.gz cd git-2.9.5 # 检查环境,配置安装路径 #编译安装 ./configure --prefix=/usr/local/git make && make install #添加到系统环境变量 vim ~/.bashrc #添加这一行 export PATH="/usr/local/git/bin:$PATH" #重载配置 source ~/.bashrc #查看版本 git version 就安装好了。
查看详情因为工作要用到shell自动部署一个项目,所以今天我们先来研究一下shell的基础命令。#!/bin/bash # 上面这个shell脚本的头,每门语言都有自己的头字符串echo "hello" echo "hi" # 变量 num="我是变量" echo $num num1=10 num2=50 #env env是读取环境变量 # 读取进程 echo "进程号:$0" echo "进程号:$$" # ``这个符号执行变量 echo `date` # 转义字符 加上-e才行 echo -e "你好啊\n成都"判断和if条件语句# 判断 test $num1 -eq $num2 echo "相等:$?" # 条件判断 if [ $num1 = 10 ]; then echo "这是等于10" else echo "默认" fi文件夹和文件基础创建# 创建文件夹,文件系列 dirName="aaa" if [ -e $dirName ]; then echo "文件夹存在,即将进入文件夹" cd $dirName echo "创建一个文件名字叫 a.txt" touch a.txt else echo "文件夹不存在,创建该文件夹" mkdir $dirName echo "进入文件夹,然后创建文件a.txt" cd $dirName touch a.txt fi用户交互# 读取键盘输入的内容,用户交互 read -p "请输入文件夹的名字:" dirFileName if [ -e $dirFileName ]; then echo "存在该文件夹" else mkdir $dirFileName fi # 命令选择 read -p "请输入y创建文件夹,n直接退出:" yes if [ $yes = "y" ]; then mkdir haaha elif [ $yes = "n" ]; then echo "退出了" ficase语句# case语句 read -p "请输入yes/no:" choice case $choice in yes | y* | Y*) echo "输入了yes" ;; no | n* | N*) echo "输入了no" ;; *) echo "输入了其他" ;; esacfor循环# for循环 declare -i sum=0 declare -i i=0 for (( i=0; i<=100; i++ )) do sum=$sum+$i; done echo "sum=$sum" for i in 1 2 3 4 5 do sum=$sum+$i; done echo "sum=$sum" # 扫描文件 for fileName in `ls` do if [ -d $fileName ]; then echo "$fileName是文件夹" elif [ -f $fileName ]; then echo "$fileName是文件" fi done函数# 函数 function getMax() { if [ $1 -gt $2 ]; then return $1 else return $2 fi } read -p "请输入数值1:" data1 read -p "请输入数值2:" data2 # 函数调用 getMax $data1 $data2 echo "$data1和$data2的最大值为:$?"
查看详情区别:RSA加密:RSA密码体制是一种公钥密码体制,加密算法公开,以分配的密钥作为加密解密的关键。RSA签名:签名就是在这份资料后面增加一段强而有力的证明,以此证明这段信息的发布者和这段信息的有效性完整性。在使用RSA进行通讯的时候,一般是两者结合,即:加密>签名>解密>验签公钥加密、私钥解密、私钥签名、公钥验签。加密是可逆的,而签名是不可逆的我们可以对一份资料用公钥加密,再用私钥解密,但我们对这份资料进行签名则是不可逆的,因为哈希本身是不可逆的。加密和签名都涉及到了使用公钥加密,前者加密了信息,后者加密了信息的hash加密和签名都是为了安全性考虑,但略有不同。加密是为了防止信息被泄露,而签名是为了防止信息被篡改。为什么签名是对信息hash之后加密,而不是加密一些特定的字符?这是因为防止中间人尝试向私钥拥有者反复发送一些特定的字符,得到加密后的信息,达到破解或者伪造之类的目的。所以用私钥随便加密信息是不安全的。RSA的签名与加密一般用在需要非常安全的环境下,例如支付总结:签名的本质其实就是加密,但是由于签名无需还原成明文,因此可以在加密前进行哈希处理。所以签名其实就是哈希+加密,而验签就是哈希+解密+比较。签名过程:对明文做哈希,拼接头信息,用私钥进行加密,得到签名。验签过程:用公钥解密签名,然后去除头信息,对明文做哈希,比较2段哈希值是否相同,相同则验签成功。
查看详情(从 0-1 搭建你的Gin框架后台系统)go版本>=1.11一、什么是module?go中包管理工具二、使用module和不使用的区别使用环境变量中的GO111MODULE控制是否使用mod1.开启mod:go env -w GO111MODULE=on,会将包下载到gopath下的pkg下的mod文件夹中2.关闭mod:go env -w GO111MODULE=off,会将包下载到gopath下的src下3.go env GO111MODULE=auto,只有当当前目录在GOPATH/src目录之外而且当前目录包含go.mod文件或者其子目录包含go.mod文件才会启用。项目可以不用建在src下了,任何非中文路径下都可以,建议有个统一的代码路径三、go.mod文件的语法介绍go help go.mod 查看帮助示例:module my/thing go 1.13.4 require ( new/thing v2.3.4 old/thing v1.2.3 ) 1.module:指明根目录2.go 后面跟版本号是指定go的版本2.require是个动作指令,对依赖包起作用,比如require(依赖),还有exclude(排除),replace(替代),相同动作的可以放在一个动词+括号组成的结构中,如下:require ( new/thing v2.3.4 old/thing v1.2.3 ) require new/thing v2.3.4 require old/thing v1.2.3 // 排除 exclude old/thing v1.2.3 // 替换,使用箭头后的替换前面的 replace bad/thing v1.4.5 => good/thing v1.4.5 注意:exclude和replace仅适用于主的go.mod文件中,其他的依赖中会被忽略、可以使用replace替换无法获取的库,3.注释:使用//,没有/* xxx */这种块注释四、go mod 命令go mod help 查看帮助download 下载模块到本地缓存,go env中的GOCACHE路径,可以通过go clean -cache清空缓存 多个项目可以共享缓存的包 edit 在工具或脚本中编辑go.mod文件 graph 打印模块需求图 init 在当前目录下初始化新的模块 go mod init 【项目名】 默认使用当前路径的项目名称 tidy 添加缺失的模块以及移除无用的模块,生成go.sum文件 vendor 会自动下载项目中依赖的包到项目根目录下的vendor文件夹下,并写入go.mod文件,同时生成 modules.txt文件 go mod vender -v verify 检查当前模块的依赖是否全部下载下来,是否下载下来被修改过 why 解释为什么需要包或模块 注意:-v参数可以查看执行的详细信息 已经完成的项目可以这样操作来使用mod项目路径下执行go mod init然后再执行go mod vendor(或者直接运行项目)项目中可以是这样的执行顺序:init初始化 --> tidy 增删模块--> verify 校验模块-->vendor注意:项目中引入该项目下的任何路径都要是绝对路径,也就是以改项目名开头的路径使用mod的步骤:1.开启mod:go111module=on2.进入项目,执行go mod init (在项目根目录生成go.mod文件)3.启动项目(go.mod添加依赖的包)
查看详情(从 0-1 搭建你的Gin框架后台系统)我们先新建一个文件,gin_demo,然后初始化一个go项目,我们用go mod来管理包,之后我们讲一下什么是modgo mod init gin_demo接下来新建main.go文件,引入Gin,开始第一个项目package main import "github.com/gin-gonic/gin" func main() { // g:=gin.New() g := gin.Default() g.GET("/", func(c *gin.Context) { c.String(200, "hello world") }) g.Run(":9000") }运行项目:go run main我们的第一个Gin项目就可以了。运行原理一、router:=gin.Default()初始化一个引擎,是gin.New()的升级二、router.GET1.RESTFUL风格的请求方法(method)2.有两个参数:relativePath:路由,string类型HandlerFunc:执行的函数3.可以使用router.Handle代替,多了个的method参数(字符串),method参数必须是大写的,如:GET三、执行的函数1.必须有个参数是gin.Context指针类型的注意:context是gin的一个重要组成部分。用来在中间层传递数据流。2.函数是个参数,不能调用四、router.Run启动http监听,有个address参数,字符串类型的,可以指定host和port注意:addr的host和port是用冒号分隔的只指定port,port前面必须要有冒号指定了host和port,host和port中间有冒号不能只指定hostg.Run(":9000")
查看详情(从 0-1 搭建你的Gin框架后台系统)一、gin框架介绍Gin 是一个用 Go (Golang) 编写的 web 框架。它是一个类似于 martini 但拥有更好性能的 API 框架,由于 httprouter,速度提高了近 40 倍,简单易用,是一个轻量级框架。如果你是性能和高效的追求者,你会爱上 Gin。二、为什么选择gin1.运行响应非常快2.快速开发3.文档齐全4.社区活跃三、特性1.快速:基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。2.支持中间件:传入的 HTTP 请求可以由一系列中间件和最终操作来处理。 例如:Logger,Authorization,GZIP,最终操作 DB。3.Crash 处理:Gin 可以 catch 一个发生在 HTTP 请求中的 panic 并 recover 它。这样,你的服务器将始终可用。例如,你可以向 Sentry 报告这个 panic!4.JSON 验证:Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。5.路由组:更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。6.错误管理:Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。7.内置渲染:Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。8.可扩展性:新建一个中间件非常简单gin环境搭建注意:go1.9版本以上,很快将不再支持go1.7或go1.8。一、go环境安装1.go安装下载地址: https://go.dev/dl/这里选择你需要下载的版本,现在最新版是1.20.5,可以自己选择需要的版本。windows,和linux的安装方法稍有差异,不过大同小异,网上有很多方法,不过多介绍,可以多参考网上。这里我们直接安装windows版本(go1.19.4)。然后,我们安装windows软件一样,傻瓜式操作,直接下一步,下一步到底。2.环境配置:变量名:GOPATH 变量值:E:\go\workspace 你的工作路径变量名:GOROOT 变量值:E:\go\install go的安装路径变量名:Path 增加值:%GOROOT%\bin;%GOPATH%\bin;注意:删除自动添加的gopath和goroot注意添加完GOPATH,GOROOT两个变量值,还需要添加他们下面的bin执行目录。3.检查配置是否成功go env 查看GOPATH和GOROOT是否正确然后就可以看到安装的目录和版本是否正确,当显示下面截图,我们就安装成功了。二、工程管理:工作目录下新建三个文件夹1.src:用于以代码包的形式组织并保存go源码文件,2.pkg:用于存放经由go install命令构建的安装后的代码包,不需要手动创建3.bin:与pkg目录类似,在通过go install命令完成安装后,保存由go命令源码间生成的可执行文件三、安装gingin的安装就很简单了,直接命令拉取。go get -u github.com/gin-gonic/gin五、安装编辑工具(goland,vscode等都可以,看自己喜欢)第一节我们就到这里结束了,接下来我们就开始gin框架吧。hello world
查看详情人的血液7年会全部替换一遍,鱼的记忆只有7秒。