V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  assiadamo  ›  全部回复第 7 页 / 共 23 页
回复总数  442
1 ... 3  4  5  6  7  8  9  10  11  12 ... 23  
285 天前
回复了 linuxgo 创建的主题 问与答 现在有什么便宜好用的 jc 推荐?
jc 女子初中生,我有罪
只在打电话的时候和别人说到过一个词,从来没用 app 搜过,隔天京东就给我推那个词了,监听是 97%存在的
290 天前
回复了 NeverBelieveMe 创建的主题 Python [ 咨询 ] 好友聊天功能如何实现
社交做下去就要各种审核屏蔽字,准备好了吗
292 天前
回复了 LIPiston 创建的主题 问与答 有什么手游推荐吗
nikke
292 天前
回复了 mokevip 创建的主题 职场话题 前公司希望我回去应该如何处理
被迫切需要的感觉真好
MySQL Workbench
@b1t 宅家和被限制自由的感受不一样
296 天前
回复了 magic3584 创建的主题 游戏 求推荐手机上的游戏
原神 nikke 碧蓝档案。对我是冒油肥宅
三傻大闹宝莱坞的校长,每天午睡的时候男仆帮修胡子
297 天前
回复了 foshouapp 创建的主题 职场话题 35+ 的 C++程序员,失业 4 个月
月薪这么高,是不是早财富自由了,羡慕
298 天前
回复了 random1221 创建的主题 iPhone 你对 iPhone 15 有什么期待吗?
安卓爱疯都好,希望无前摄或屏下摄像,无刘海和下巴的全面屏
维稳大量解决就业,哈哈
@zzzkkk
在这种情况下,`<-closer` 将会阻塞,直到从 `closer` 通道接收到一个值。

在 `make(chan struct{}, 2)` 中,我们创建了一个带有缓冲大小为 2 的无缓冲通道。这意味着可以向 `closer` 通道发送两个值,而不会立即阻塞。只有当 `closer` 通道的缓冲区已满时,发送操作才会阻塞。

在 `closer <- struct{}{}` 这一行中,我们向 `closer` 通道发送一个值。如果缓冲区仍有空间,该操作会成功并立即返回。如果缓冲区已满,发送操作将会阻塞,直到有空间可用。

在 `<-closer` 这一行中,我们从 `closer` 通道接收一个值。如果通道中有值可用,该操作会成功并立即返回。如果通道为空,接收操作将会阻塞,直到有值可用。

因此,在你提供的代码中,`<-closer` 将会阻塞,直到从 `closer` 通道接收到一个值。这可以用于等待某些操作完成或信号传递。

希望这解答了你的疑问。如果还有进一步的问题,请随时提问。
golang 随便抄了一个,就这么简单、
```
package main

import (
"flag"
"fmt"
"io"
"log"
"net"
)

var localAddr *string = flag.String("l", "localhost:9999", "local address")
var remoteAddr *string = flag.String("r", "localhost:80", "remote address")

func main() {
flag.Parse()
fmt.Printf("Listening: %v\nProxying: %v\n\n", *localAddr, *remoteAddr)

listener, err := net.Listen("tcp", *localAddr)
if err != nil {
panic(err)
}
for {
conn, err := listener.Accept()
log.Println("New connection", conn.RemoteAddr())
if err != nil {
log.Println("error accepting connection", err)
continue
}
go func() {
defer conn.Close()
conn2, err := net.Dial("tcp", *remoteAddr)
if err != nil {
log.Println("error dialing remote addr", err)
return
}
defer conn2.Close()
closer := make(chan struct{}, 2)
go copy(closer, conn2, conn)
go copy(closer, conn, conn2)
<-closer
log.Println("Connection complete", conn.RemoteAddr())
}()
}
}

func copy(closer chan struct{}, dst io.Writer, src io.Reader) {
_, _ = io.Copy(dst, src)
closer <- struct{}{} // connection is closed, send signal to stop proxy
}
```
netty 自带 proxy 的例子看看行不行
https://github.com/netty/netty/tree/4.1/example/src/main/java/io/netty/example/proxy
这种小功能感觉用 java 太重,可以用 golang 试试
润去其他地区的微软
@chenfcheng 游戏体量小的时候和 web 服务体量小的时候并无区别,单机很正常,如果你的愿景够大,也可以一开始在做的时候就设计出来很多个服,分布式、主从、微服务任你选择。
你不能要求羊了个羊要按魔兽世界那样的服务器规模来对不对。
@awanganddong 一堆日本小二次与手游是 http 的,表现和玩法都是客户端做,服务器就存下数据和做一下敏感的业务,比如抽卡,氪金啥的。所以不用担心,想转就转。
比较高端的是状态同步需要服务器实时计算的游戏,用 tcp 长连接的,但都有现成的框架,大多数时候也都是堆业务,和 curd 没啥区别。只是游戏服务器技术比较封闭,不像互联网各种高端的方案和中间件,总的来说,没有什么特别要求的地方,只需要理解业务。
真的想补八股的话,就操作系统和计算机网络的知识,以及一些游戏中常特有的名词,https://gpp.tkchu.me/ 参考这个电子书,去想一想平时玩的游戏,一些效果是怎样实现的,就行了。
@awanganddong 具体是什么呢,web 调用游戏的 api ?游戏自己提供 web 服务?
几年游戏行业程序小兵路过,也挺烦的最近,主要是同期的同事选择其他行业已经成行业大佬了,我还在吃屎
1 ... 3  4  5  6  7  8  9  10  11  12 ... 23  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1212 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 17:58 · PVG 01:58 · LAX 10:58 · JFK 13:58
Developed with CodeLauncher
♥ Do have faith in what you're doing.