自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang使用sse事件流调用AI大模型

本次Ai大模型,我们选择清华大学出品的智谱AI大模型,为什么呢?因为chatgpt已经有开源第三方库,可以直接调,但是要科学上网(借助代理也是可是实现的)。只要是公司业务有这方面的需求。。。WebSocket:一种双向通信协议,同时支持服务端和客户端之间的实时交互。WebSocket 是基于 TCP 的长连接,和HTTP 协议相比,它能实现轻量级的、低延迟的数据传输,非常适合实时通信场景,主要用于交互性强的双向通信。SSE(Server-Sent Events)是一种基于 HTTP 协议的推送技术。

2024-04-08 18:08:42 1436 1

原创 以太坊开发学习-solidity(三)函数类型

函数类型solidity官方文档里把函数归到数值类型函数类型是一种表示函数的类型。可以将一个函数赋值给另一个函数类型的变量, 也可以将一个函数作为参数进行传递,还能在函数调用中返回函数类型变量。函数类型有两类:-内部(internal)函数和外部(external)函数:1. 内部函数只能在当前合约内被调用(更具体来说, 在当前代码块内,包括内部库函数和继承的函数中), 因为它们不能在当前合约上下文的外部被执行。

2024-03-18 17:31:28 693 1

原创 以太坊开发学习-solidity(二)值类型

在payable修饰的地址中,send执行失败不会影响当前合约的执行(但是返回false值,需要开发人员检查send返回值)。remix是以太坊官方推荐的智能合约开发IDE(集成开发环境),适合新手,可以在浏览器中快速部署测试智能合约,你不需要在本地安装任何程序。进入remix,我们可以看到最左边的菜单有三个按钮,分别对应文件(写代码的地方),编译(跑代码),部署(部署到链上)。部署成功后,你会在下面看到名为HelloWeb3的合约,点击_string,就能看到我们代码中写的 “Hello Web3!

2024-03-18 17:01:35 1241

原创 以太坊开发学习-solidity(一)环境搭建

以太坊是一个去中心化的,运行智能合约的区块链平台。智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由NickSzabo首次提出。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。简单地说,智能合约可以理解为一个自执行的协议。智能合约可以自动处理协议的履行、管理、以及支付。

2024-03-18 15:32:34 1313

转载 window安装gcc

最近在公司实习,因为涉及到区块链的使用,公司使用的go-ethereum官方包。当时在公司因为环境已经搭建好了,我就直接搞代码。后面在学校这边调试公司代码,发现运行不了,显示以下错误,但是代码在公司电脑就可以运行。看到报错,提示是电脑环境没有配置gcc,估计是go-ethereum需要编译c代码。就着手开始安装gcc。

2024-03-10 18:03:57 86

转载 什么是区块链

区块链是一个共享的、不可篡改的账本,用于促进业务网络中的交易记录和资产跟踪。这种账本可以跟踪有形资产(如房屋、汽车、现金、土地)和无形资产(如知识产权、专利、版权、品牌)。区块链是安全共享的去中心化的数据账本,支持一组特定的参与方共享数据,并结合了分布式数据存储、点对点传输、共识机制、加密算法等计算机技术。狭义区块链是按照时间顺序,将数据区块以顺序相连的方式组合成的链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。

2024-03-09 14:37:55 124

原创 golang实现正向代理和反向代理

正向代理和反向代理都是进行请求和转发的代理方式,但为了区分,后者被称为反向代理。生活中最常见的例子是正向代理类似于卖票的黄牛,而反向代理类似于出租房的二手东。

2024-03-09 11:52:31 1288 2

原创 使用Golang开发以太坊(一)

以太坊是一个区块链,允许开发者创建完全去中心化运行的应用程序,这意味着没有单个实体可以将其删除或修改它。部署到以太坊上的每个应用都由以太坊网络上每个完整客户端执行。

2024-03-07 15:36:58 922

原创 golang服务控制之go-svc

go-svc的启动器Run()接收一个Service接口类型的参数,Run()依次调用Init()、Start(), 然后进入阻塞状态,启动为守护程序;也可接收系统信号作为触发退出行为的可选参数。官方提供一个很好的示例,简要做下笔记//定义一个server类型,通过server类型的方式实现Service接口的行为方法data chan int //普通变量exit chan struct{} //用于传递退出信号的通道wg sync.WaitGroup //goroutine线程同步。

2024-03-05 20:36:38 1061 3

原创 golang给朋友回复微信信息

如果是群聊消息,该方法返回的是群聊对象(需要自己将User转换为Group对象)该方法调用成功的前提是msg.IsRecalled()返回为true。openwechat提供了微信全套emoji表情的支持。emoji表情可以通过发送Text类型的函数发送。remarkname:查询指定备注的好友。nickname:查询指定昵称的好友。results:返回满足条件的好友组。results:返回满足条件的好友组。limit:为限制好友查找的个数。limit:为限制好友查找的个数。2.获取消息的发送者。

2024-03-04 16:15:54 866 1

原创 git clone http/https 报错 10054/443 问题

1.按win键 2 打开设置 3 在网络和Internet找到自己的代理端口(我的是7890)4 然后命令行修改代理。查看git当前代理设置。

2024-03-02 20:49:07 526

原创 Linux下的IO多路复用

首先epoll_create创建epoll实例,它会创建所需要的红黑树,以及就绪链表,以及代表epoll实例的文件句柄,其实就是在内核开辟一块内存空间,所有与服务器连接的socket都会放到这块空间中,这些socket以红黑树的形式存在,同时还会有一块空间存放就绪链表;1.1 优点 select 其实就是把NIO中用户态要遍历的 fd 数组拷贝到了内核态,让内核态来遍历,因为用户态判断socket是否有数据还是要调用内核态的,所有拷贝到内核态后,这样遍历判断的时候就不用一直用户态和内核态频繁切换了。

2024-02-26 16:31:32 1091

原创 微信小程序登录功能实现(前后端)

在注册微信开发者账号后,可以在微信小程序管理后台获取appid和密钥,保存在配置文件或者系统环境中。使用Get请求调用微信服务接口。

2024-02-26 16:00:20 679

原创 SSO和Oauth2的区别

sso多用于多个应用之间的切换,例如百度论坛、百度知道、百度云、百度文库等,在其中一个系统中登录, 切换到另一个系统的时候,不必再次输入用户名密码。,不兼容oauth1.0.允许第三方应用代表用户获得访问权限。可以作为web应用、桌面应用和手机等设备提供专门的认证流程。例如,用qq账号登录豆瓣、美团、大众点评;用支付宝账号登录淘宝、天猫等。:sso和oauth2.0在应用场景上的区别在于,SSO是为了解决一个用户在鉴权服务器登陆过一次以后,可以在任何应用(通常是一个厂家的各个系统)中畅通无阻。

2024-02-26 15:55:00 858 2

原创 Goland设置运行时配置指定配置文件

但是这种方式运行,我就没法在GoLand里面打断点Debug了,然后我就在GoLand里面点击绿色三角运行项目,但是就报错找不到指定的配置文件。我们可以看到goland运行控制台的输出,其实它和我们在命令行手动输入都一样,只是它帮我们自动执行罢了。之后就可以debug了>>>>>>>>>>>>>>>>>>>>>>>然后根据需要修改相应位置的参数,之后点击应用,再次运行就行了。对于上面的问题,我们可以修改goland运行时文件配置。我们看看控制台的输出,发现上面的图片只是输出了。

2023-08-05 17:58:14 1539

原创 go之Context(一)

在本文中,我们介绍了 Go 语言中的Context,它是一个重要的功能,可以用来传递请求截止时间、取消信号、元数据等信息。我们还介绍了和WithValue函数,并展示了如何在不同场景下使用Context。通过了解Context的基础知识和使用方法,我们可以更好地控制 goroutine,提高程序的可靠性和性能。

2023-05-14 15:53:47 775 2

原创 Go 爬虫三种框架的基本使用介绍

Colly 是一个简单而又强大的 Go 爬虫框架,其使用起来非常方便。在 Colly 中,我们可以通过注册回调函数来处理页面中的数据,同时还可以使用 CSS 选择器进行页面元素的定位。Colly 还支持异步请求、代理、Cookie 管理等功能,是一个非常实用的爬虫框架。我们已经成功地使用Go语言的http包和goquery包创建了一个简单的网页爬虫。我们首先使用http包发起了GET请求,接下来使用ioutil包读取响应体的内容,并使用goquery包解析了HTML代码。

2023-05-09 21:13:40 3747

原创 Gin+axios跨域问题详解

跨域问题一直是前端的一大难题Web内容的源由用于访问它的URL 的方案(协议),主机(域名)和端口定义。只有当方案,主机和端口都匹配时,两个对象具有相同的起源。同源不同源一句话就可以判断:就是url中 scheme host port 都相同即为同源。下面认识下url 结构中的这三个部分。

2023-04-02 14:00:54 753

原创 Redis使用单线程以及多路复用机制解析

1.在redis启动初始化的时候,redis会将连接应答处理器跟AE_READABLE事件关联起来,接着如果一个客户端跟redis发起连接,此时会产生一个AE_READABLE事件,然后由连接应答处理器来处理跟客户端建立连接,创建客户端对应的socket,同时将这个socket的AE_READABLE事件跟命令请求处理器关联起来。2.当客户端向redis发起请求的时候(不管是读请求还是写请求,都一样),首先就会在socket产生一个AE_READABLE事件,然后由对应的命令请求处理器来处理。

2023-04-02 10:10:13 1135

原创 docker报错:Error response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the

今天使用wsl2启动docker运行etcd,结果发现docker无法运行。在终端命令行输入docker命令,一直报错。我试了以下,发现我的docker依旧报错,还是同样的错误,最后我突发奇想问了以下chartGPT,没想到竟然解决了。如果显示错误,可能是因为cmd不是用管理员身份运行的,用管理员身份运行cmd,输入以上两个命令就OK了。它告诉我要右键点击docker desktop,用管理员身份运行就可以了。水文一篇,记录常见错误,留作纪念。最后在网上搜了以下解决方案。结果就真的成功了,优秀啊。

2023-03-21 23:15:15 3361 1

原创 Golang闭包问题及并发闭包问题

由于

2023-03-04 15:54:41 922 3

原创 Go低版本调试报错问题:Version of Delve is too old for this version of Go( maximum s supported version 1.13)...

原因是最近直接升级go1.18版本到1.20,当时也没在意。导致调试时才发现原来的调式版本太低,只能支持到1.19,所以就出现了这个问题。调试仍不起作用的话,就直接复制到GoLand的jbr的bin下面,并重命名为Gobindlv.exe。打开goland的debug调试问题,直接崩掉,每次都跳转到proc.go文件中。然后dlv就会出现在你的GoPath目录下的bin目录中。执行以下命令下载最新版调试版本。打开GoLand配置dlv路径。然后就可以愉快的玩耍了》》》》

2023-03-03 20:10:02 1350

原创 termux手机端安装mysql(MariaDB)

mysql与mysqld的区别:mysqld 是服务端程序(即MySQL的服务器)要想使用客户端程序,该程序必须运行,因为客户端通过连接服务器来访问数据库;MariaDB使用这些表来管理特权,角色和插件。或者,使用单词“MySQL”取其进程 ID ,使用命令 grep,然后杀死他们kill -9 [ID],-9 是发送终止信号。不过,上面的启动方法一旦启动,就什么也不能干,只能新开一个会话,连进程什么时候挂了也不知道。初始的 Mysql 包含两个用户,一个是 root, 另一个是 Termux 的用户名。

2023-02-27 22:49:34 3818

原创 nginx报错 - OpenEvent(“Global\ngx_stop_1676“)failed (2: The system cannot find the file specified

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sY6fX6Hr-1676895349570)(C:\Users\25683\AppData\Roaming\Typora\typora-user-images\image-20230220200825710.png)]其实这个报错意思就是你的nginx并未启动成功,那么为什么会出现nginx无法正常启动呢,可能是端口导致的问题,我们可以将80端口改成了其他端口(如:8080端口)可以看出是PID为1172的应用占用了80端口。

2023-02-20 20:17:50 3259 2

原创 go中的值方法和指针方法

golang中在给结构体对象添加方法时,接收者参数类型可以有两种,一种时值类型,另一种是指针类型。

2023-02-18 16:34:41 1003

转载 hexo+butterfly搭建个人博客网站

Hexo是基于NodeJS构建简洁高效的博客框架。使用 Markdown 编写文章内容,几秒内即可利用靓丽的主题生成静态网页。支持丰富的主题与插件,主题用于页面展示效果,插件用于实现博客的特殊功能 如:文章及内容搜索、图片懒加载、一键远程部署等。Butterfly是Hexo的主题之一,也是集成的主题。官方网站也是该主题的演示页面,其教程更加详细,本文为入门级教学,使用该主题不需要对hexo框架有过多了解,遵循butterfly的写作规范开发即可。

2023-02-12 23:34:02 2682

转载 Spring自定义starter依赖以及相关引入依赖无法导入的问题

1.Starter介绍Starter场景启动器是Spring Boot中一种非常重要的机制,它将繁琐的配置统一集成到stater中,我们只需要通过在Maven将starter的依赖导入项目,SpringBoot 就能自动扫描并加载相应的默认配置。starter的出现简化了开发人员的工作量,从繁琐的框架配置中解救出来,让更多的时间专注在业务逻辑的开发,提高了开发效率。2.命名规范SpringBoot 提供的 starter 以 spring-boot-starter-xxx 的形式命名。

2023-01-25 20:33:09 3565

翻译 线程和协程的区别及应用

表面上看协程和线程似乎是同一个东西,能达到的效果也相同,但是在底层的实现上却有着非常大的区别,在服务器端的绝大部分应用中,。通俗易懂的讲,,所以在java程序中每创建一个线程都需要经过深思熟虑的思考,否则很容易把系统资源消耗殆尽。而协程,看起来和线程差不多,但创建一个协程却不用调用操作系统的功能,编程语言自身就能完成这项操作,所以协程也被称作用户态线程。既然协程这么优秀,为什么不彻底替代线程呢?

2023-01-19 21:30:49 324

原创 gin框架基本使用

在go的web项目中,gin相当于java中的springmvc、gorm相当于java中的mybatis、gomod相当于java中的maven。gin的中文文档。

2023-01-19 17:15:17 5340

原创 jvm系列(3)--运行时数据区Runtime

本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区类比一下也就是大厨做饭,我们把大厨后面的东西(切好的菜,刀,调料),比作是运行时数据区。而厨师可以类比于执行引擎,将通过准备的东西进行制作成精美的菜品。

2023-01-16 14:32:36 531

原创 jvm系列(2)--类加载子系统

英文版中文版注意:方法区只有HotSpot虚拟机有,J9,JRockit都没有如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢?类加载器执行引擎System . out . println("你的大恩大德,我下辈子再报!");} }它的加载过程是怎么样的呢?执行 main() 方法(静态方法)就需要先加载main方法所在类 HelloLoader加载成功,则进行链接、初始化等操作。完成后调用 HelloLoader 类中的静态方法 main加载失败则抛出异常。

2023-01-16 14:21:28 411

原创 jvm系列(1)--JVM和Java体系架构

由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。栈的优点:跨平台,指令集小,编译器容易实现,缺点是性能比寄存器差一些。时至今日,尽管嵌入式平台已经不是Java程序的主流运行平台了(准确来说应该是HotSpot VM的宿主环境已经不局限于嵌入式平台了),那么为什么不将架构更换为基于寄存器的架构呢?

2023-01-16 14:10:04 433

原创 juc系列(2)--线程的使用及原理

当 Context Switch 发生时,需要由操作系统保存当前线程的状态(PCB 中),并恢复另一个线程的状态,包括程序计数器、虚拟机栈中每个栈帧的信息,如局部变量、操作数栈、返回地址等。Java 中 main 方法启动的是一个进程也是一个主线程,main 方法里面的其他线程均为子线程,main 线程是这些线程的父线程。说明:当运行的线程都是守护线程,Java 虚拟机将退出,因为普通线程执行完后,JVM 是守护线程,不会继续运行下去。

2023-01-16 10:45:21 491

原创 juc系列(1)---进程,线程,并行,并发

程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360安全卫士等)进程:程序是静止的,程序实体的运行过程就是进程,是系统进行资源分配的基本单位。

2023-01-16 10:32:12 664

原创 java入门到废为止

静态变量只有一个,成员变量是类中的变量,局部变量是方法中的变量Java 语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型byte:short:int:long:float:double:boolean:char:float 与 double:Java 不能隐式执行向下转型,因为这会使得精度降低,但是可以向上转型隐式类型转换:字面量 1 是 int 类型,比 short 类型精度要高,因此不能隐式地将 int 类型向下转型为 short 类型使用 += 或

2023-01-13 20:07:03 1417

原创 使用idea无法推送到gitee,显示head detached(游离分支)

此时并没有切换到tmp分支上去,但是tmp分支上的内容就跟最后提交的一样。执行完之后我们会发现产生了新的ID(956c85b…)注意:这是随机生成的。OK 最后我们只需要push对应的master分支中提交的信息。此时会进入编辑模式,让我们输入提交的描述。按“I”进入编辑模式 此时可以输入。按“wq”保存文件并退出。

2022-12-29 16:08:42 1271

转载 Eureka切换Nacos时发现两个注册中心的解决方法

然后在 “spring-cloud-netflix-eureka-client:***” 上右键“Open Library Settings”如此这般,项目可以启动了,但是打包的时候,需要eureka的包还是会被打进去,需要将打好的包中的eureka依赖删除掉。第一步,找到External Libraries里面eureka的jar包(可用双Shift搜索‘eureka’)需要检查pom文件中的引用,把eureka相关引用删除,重新编译。报错信息大概就是服务注册时,发现了两个注册中心,产生冲突了。

2022-12-29 13:31:35 644 1

转载 WampServer 使用详解以及常见问题

wampserver,这款软件在安装的过程中就已经把Apache、MySQL、PHP继承好了,而且也做好了相应的配置,除此之外,还加上了SQLitemanager和Phpmyadmin,省去了很多复杂的配置过程,让我们能把更多的时间放在程序开发上。更值得高兴地是这款软件也是完全免费的。重要提示:基本上每一步更改配置文件的操作结束之后,均在重启了相应服务之后才会生效,也就是说如果想要修改立即生效的话,必须在修改完毕保存之后重新启动一下相应的服务!

2022-12-28 21:34:11 8085

原创 window安装Docker Desktop for Windows(基于WSL2)

Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。容器更多的用于表示 软件的一个标准化单元。

2022-12-28 17:45:35 8686 3

原创 Redis服务自启动与idea的redis插件使用

Redis是比较常用的一个存储服务,我们直接从官网上下载下来是免安装版的,直接启动exe程序就能用,但是有时候我们不小心把cmd界面关闭了,Redis服务就停了,而且每次用都要手动启动服务很麻烦,本文介绍直接把Redis配置成随系统自启动的配置方法。

2022-12-02 16:14:57 3831

空空如也

空空如也

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

TA关注的人

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