V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  awanganddong  ›  全部回复第 6 页 / 共 26 页
回复总数  516
1 ... 2  3  4  5  6  7  8  9  10  11 ... 26  
这是架构师之路的大概介绍。
https://cloud.tencent.com/developer/article/1553360

技术层面就是对现有的组建进行性能分析。
比如我们语言是 php

一台服务器 256 个 php-fpm 进程, 每个 fpm 进程 1s 支持 3 个响应。那就是 256 * 3 就是单台 qps 上限。再乘以总服务器数。这个就是单台服务器能承载的 qps

还有就是对 mysql 的压测。mysql 理论上读+缓存。 写的话最好压测下 mysql 的极限。比如使用 mysql 压力工具。或者使用 update 手动压测。从 mysql 开始变慢算起。得到一个 mysql 写的 qps 。 读的话,一般从 mysql 连接数上入手。 一般 mysql 支持 2000-5000 左右的链接。 每次请求就打开一个 mysql 链接。 这块我现在还不太明晰,正实践中。
2023-01-17 16:02:19 +08:00
回复了 isno 创建的主题 程序员 聊聊技术以及我个人的一些看法
@julyclyde 对,现在问题我没定位到。
2023-01-17 11:32:27 +08:00
回复了 isno 创建的主题 程序员 聊聊技术以及我个人的一些看法
其实我觉得问这些问题没有问题,首先先了解,然后与项目相结合。但是绝大多数人仅仅是停留在了解层面,包括我。
比如我现在项目中就出现了这个。
2023/01/15 11:10:20 http: panic serving 127.0.0.1:36786: write tcp 127.0.0.1:8000->127.0.0.1:36786: write: broken pipe

网上搜索的教程绝大多数是增加 ulimit
但是造成这个问题更深层的问题,我不知道。连基础都不懂,是没办法更进一步了。
2023-01-15 16:41:17 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 go 协程请求数据
我修改后的 demo 发下

package main

import (
"fmt"
"time"
)

type CRes struct {
ChannelType int
Res interface{}
}

func main() {
var ch = make(chan CRes)
go test1(ch)
go test2(ch)
for i := 0; i < 2; i++ {
select {
case <-time.After(time.Second * 5):
fmt.Println("超时操作")
break
case resp := <-ch:
if resp.ChannelType == 1 {
fmt.Printf("这是 1 的数据")
}
if resp.ChannelType == 2 {
fmt.Printf("这是 2 的数据")
}
break
default:
fmt.Println("资源已满,请稍后再试")
}
}
}
func test1(ch chan CRes) {
res := CRes{
ChannelType: 1,
Res: nil,
}
ch <- res
}

func test2(ch chan CRes) {
res := CRes{
ChannelType: 2,
Res: nil,
}
ch <- res
}
2023-01-15 11:34:48 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 go 协程请求数据
明白了,谢谢你。
2023-01-13 10:21:18 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
找到问题了,supervisorctl 配置 killasgroup=true ;默认为 false ,向进程组发送 kill 信号,包括子进程
2023-01-13 09:55:20 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
现在发现每次启动 supervisor 启动了两个进程。supervisor 只杀了其中一个 go 进程。还有一个没有关闭。所以非常奇怪
2023-01-12 11:37:17 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
从结构中删除字段或将其隐藏在 JSON 响应中
这个文章比较好

https://cloud.tencent.com/developer/ask/sof/76384
2023-01-12 10:41:44 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
找到个好东西

json to go
https://mholt.github.io/json-to-go/
2023-01-12 10:15:59 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
我设置成 1s,随后启动了 go 服务,然后通过 lsof -i:8000 查看 pid
执行 kill -Hup pid
这时候程序退出了,但是 8000 端口依然被监听。
代码中监听了一下信号
signal.Notify(quit, os.Interrupt, syscall.SIGQUIT, syscall.SIGHUP)
2023-01-12 09:50:37 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
@yaott2020 这块是 gin 的官方 demo ,我直接搬过来了
2023-01-11 22:42:46 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
@MidGap 再请教个问题,
我是通过 supervisor 来守护 go
我通过 supervisorctl stop program 关闭程序
然后再重启的时候,报接口被占用的错误
2023/01/11 22:38:38 listen: listen tcp :8000: bind: address already in use

我已经配置了优化退出,还是出问题。

package main

import (
"context"
"log"
"net/http"
"os"
"os/signal"
"time"

"github.com/gin-gonic/gin"
)

func main() {
router := gin.Default()
router.GET("/", func(c *gin.Context) {
time.Sleep(5 * time.Second)
c.String( http.StatusOK, "Welcome Gin Server")
})

srv := &http.Server{
Addr: ":8080",
Handler: router,
}

go func() {
// 服务连接
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("listen: %s\n", err)
}
}()

// 等待中断信号以优雅地关闭服务器(设置 5 秒的超时时间)
quit := make(chan os.Signal)
signal.Notify(quit, os.Interrupt)
<-quit
log.Println("Shutdown Server ...")

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
log.Fatal("Server Shutdown:", err)
}
log.Println("Server exiting")
}
2023-01-11 21:44:16 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
@MidGap 我明白你的意思了,谢谢大家了。
2023-01-11 21:30:15 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
@MidGap 我按你的方式写,我不知道怎么给 Nobility 这个 struct 赋值了。

类似于 4 楼的问题
2023-01-11 21:22:37 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
@polythene 比如我返回的值是下边的 json

```
{
"code": 200,
"data": [
{
"id": 1,
"nobility": {
"name": "",
"image": "",
"desc": ""
},
"time": 0,
"is_goddess": false
},

],
"msg": "ok"
}
```
我想要的效果是如果 nobility 任何一项为空,则就是空对象

```
{
"code": 200,
"data": [
{
"id": 1,
"nobility": {}, //上边的转化成这样
"time": 0,
"is_goddess": false
},

],
"msg": "ok"
}
```
2023-01-11 20:10:24 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
我代码是这样的
2023-01-11 20:10:15 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
```
type Im struct{

Nobility T `json:"nobility"`
Time int `json:"time"`
IsGoddess bool `json:"is_goddess"`
}
type T struct {
Nobility struct {
Name string `json:"name"`
Image string `json:"image"`
Desc string `json:"desc"`
} `json:"nobility"`
}
```
2023-01-11 20:02:10 +08:00
回复了 awanganddong 创建的主题 Go 编程语言 请教下 go 怎么定义范型的
@MidGap
```
nobilityInfo T.Nobility
money := getMoney(val.Id, val.Gender)
for _, value := range nobility {
if money >= value.StartCoin && money <= value.EndCoin {
nobilityInfo = T.Nobility{
value.Name,
pkg.AppSetting.QiniuUrl + value.Image,
value.Desc,
}
break
}
}
if val.Gender == 2 && val.NobilityClose == 2 {
nobilityInfo = struct {}{}
}
```
类似于这种我该怎么赋值
上边报错了
2023-01-11 10:10:33 +08:00
回复了 awanganddong 创建的主题 程序员 请教下 lua 怎么转发接口
@eason1874 我刚才测试了下,一个问题是没有加 http/https 。还有一个问题,ngx.redirect 好像是 get 跳转,并且没有携带任何参数。
2023-01-11 09:58:15 +08:00
回复了 awanganddong 创建的主题 程序员 请教下 lua 怎么转发接口
刚用 nginx 转发正常,就想知道为啥 lua 转发失败。
1 ... 2  3  4  5  6  7  8  9  10  11 ... 26  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   849 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 16ms · UTC 20:18 · PVG 04:18 · LAX 12:18 · JFK 15:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.