东风草堂blog

公众号:来风说


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

日常开发工具

发表于 2023-04-19 | 更新于: 2023-04-27 |
在 CentOS 系统上安装 Google Chrome 浏览器,可以按照以下步骤进行: 添加 Google Chrome 的 YUM 源在终端中输入以下命令: sudo tee /etc/yum.repos.d/google-chrome.repo <<-‘EOF’[google-chrome]name=google-chrome - $basearchbaseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearchenabled=1gpgcheck=1gpgkey=https://dl.google.com/linux/linux_signing_key.pubEOF安装 Google Chrome输入以下命令进行安装: sudo yum install google-chrome-stable启动 Google Chrome在终端中输入以下命令启动 Google Chrome 浏览器: google-chrome这样就可以在 CentOS 系统上安装和使用 Google Chrome 浏览器了。
阅读全文 »

go服务器与vue客户端的sse实现

发表于 2023-03-31 | 更新于: 2023-04-02 |
go server1data: something happend!\n\n 第二个 \n 表示这个 event 结束,可以发给客户端了。第一个 \n 主要是为了有时要传输多行数据时,例如传个 json:123data: {\ndata: "foo": "bar"\ndata: }\n\n 上面都属于 message 这个类型,如果想发送别的类型可以通过 event 字段自定义:12event: close\ndata: play enough\n\n 注意仍然需要带上 data 字段。 123456789101112131415161718192021222324252627282930313233343536package mainimport ( "fmt" "log" "net/http" "time")func handleSSE(w http.ResponseWriter, r *http.Request) { appId := r.URL.Query()["appId"] page := r.URL.Q ...
阅读全文 »

docker部署问题

发表于 2023-03-30 | 更新于: 2023-04-02 |
网络模式docker的默认网络模式的bridge,有个问题,docker内部无法直接与另外的docker内的端口进行通信,改为host模式即可。如果不改网络模式的话,要么不走http,改为走uds通信就可以。123services: nginx: network_mode: "host" 镜像推送1234docker build . -t REPOSITORY:TAGdocker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)docker logindocker push nephen2023/chatgpt-next-web
阅读全文 »

thrift源码分析

发表于 2023-03-29 | 更新于: 2023-04-06 |
+——————————————-+| Server || (single-threaded, event-driven etc) |+——————————————-+| Processor || (compiler generated) |+——————————————-+| Protocol || (JSON, compact etc) |+——————————————-+| Transport || (raw TCP, HTTP etc) |+——————————————-+ TransportTransport传输层为从网络读取/向网络写入提供了一个简单的抽象。这使 Thrift ...
阅读全文 »

midjourney

发表于 2023-03-29 | 更新于: 2023-04-02 |
https://docs.midjourney.com/docs/invite-the-bot,可以将机器人拉入到自己的群中,这样消息不会被淹没。 api下载mj生成的图片:https://medium.com/@neonforge/how-to-create-a-discord-bot-to-download-midjourney-images-automatically-python-step-by-step-guide-3e76d3282871api自动发送mj消息:https://medium.com/@neonforge/how-to-automate-midjourney-image-generation-with-python-and-gui-automation-ac9ca5f747ae discord生成应用:https://discord.com/developers/applicationsdiscord开发手册:https://discord.com/developers/docs/interactions/application-commands
阅读全文 »

网站seo优化

发表于 2023-03-29 | 更新于: 2023-04-02 |
网页重定向网页迟迟没有被google收录,进入https://search.google.com/发现: 在 Nuxt.js 中,您可以通过设置 generate.subFolders 选项来控制生成的文件是否应该包含子目录。默认情况下,该选项的值为 true,这意味着生成的文件将被放置在相应的路由目录中。 如果您不想要生成的文件包含子目录,并直接生成 HTML 文件,您可以将 generate.subFolders 设置为 false。您可以在 nuxt.config.js 文件中添加以下配置:12345export default { generate: { subFolders: false }} 然后运行 nuxt generate 命令重新生成静态文件,重新部署网站。 修改nginx配置,try_files $uri $uri.html $uri/ /index.html;,重启nginx。 使用https://httpstatus.io/检测状态为200,不再包含301即可。
阅读全文 »

ThreadManager实现

发表于 2023-03-28 | 更新于: 2023-04-06 |
服务器TNonblockingServerrpc请求生成task放入到任务队列中,这个任务是Runnable的,但没有依附于某个thread,等于是封装了个run函数,供线程池工作线程调用时运行的。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465void addTask(stdcxx::shared_ptr<Runnable> task) { threadManager_->add(task, 0LL, taskExpireTime_);}stdcxx::shared_ptr<Runnable> task = stdcxx::shared_ptr<Runnable>( new Task(processor_, inputProtocol_, outputProtocol_, this));server_-> ...
阅读全文 »

thrift协议

发表于 2023-03-28 | 更新于: 2023-04-02 |
thrift编解码过程Thrift是一种用于定义RPC服务和数据交换格式的框架,其中编解码过程是其重要的组成部分。下面简单介绍一下Thrift的编解码过程: 定义IDL接口:使用Thrift的IDL语言进行服务接口定义,包括服务方法、参数和返回值的类型及名称等信息。 生成代码:使用Thrift提供的代码生成器根据IDL文件生成各语言环境下可用的客户端和服务端代码。 编写客户端和服务端:使用生成的代码进行客户端和服务端的开发。 序列化请求:客户端将请求参数序列化为二进制格式,以便在网络上传输。 发送请求:客户端通过网络发送请求消息。 接收请求:服务端接收请求消息。 反序列化请求:服务端将接收到的二进制数据反序列化为具体的参数类型。 处理请求:服务端根据请求消息调用对应的服务方法,并返回处理结果。 序列化响应:服务端将返回结果序列化为二进制格式,以便在网络上传输。 发送响应:服务端通过网络发送响应消息。 接收响应:客户端接收响应消息。 反序列化响应:客户端将接收到的二进制数据反序列化为具体的返回值类型。 序列化过程Thrift的序列化过程可以分为两个步骤:写入(Write)和读取(Re ...
阅读全文 »

go语言学习笔记-语言详解

发表于 2023-03-27 | 更新于: 2023-04-27 |
概述简介在函数内部,可以省略var关键字,使用更简单的定义模式。1234fun main() { x := 100 fmt.Println(x)} 流程控制可以省略条件判断:12345678switch {case x > 0: println("x")case x < 0: println("-x")default: println("0")} for x < 5相当于while(x < 5),for相当于while(true)。在迭代遍历时,for i, n := range x可以返回索引。 函数是第一类型,可以作为参数或返回值。12345func test(x int) func() { // 返回函数类型 return func() { // 匿名函数 println(x) // 闭包 }} 结构体可以匿名嵌入其它类型:123456789type user struct { name string ...
阅读全文 »

理解go语言编程-进阶话题

发表于 2023-03-27 | 更新于: 2023-04-02 |
Go语言的反射实现了反射的大部分功能,但没有像Java语言那样内置类型工厂,故而无法做到像Java那样通过类型字符串创建对象实例。反射是把双刃剑,功能强大但代码可读性并不理想。若非必要,我们并不推荐使用反射。 Type为io.Reader,Value为MyReader{“a.txt”}。顾名思义,Type主要表达的是被反射的这个变量本身的类型信息,而Value则为该变量实例本身的信息。12345678type MyReader struct { Name string}func (r MyReader)Read(p []byte) (n int, err error) { // 实现自己的Read方法}var reader io.Readerreader = &MyReader{"a.txt"} 直接传递一个float到函数时,函数不能对外部的这个float变量有任何影响,要想有影响的话,可以传入该float变量的指针.123456789var x float64 = 3.4p := reflect.Val ...
阅读全文 »
12…16
nephen

nephen

153 日志
16 分类
64 标签
GitHub E-Mail
友情链接
  • 新建留言板
  • 订阅号留言板(旧)
  • 订阅号留言板(新)
  • 山楂岛秘密花园
  • 代发短信
© 2016 — 2023 nephen
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
粤ICP备2022125614号-1
本站访客数 人次 本站总访问量 次