V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  timethinker  ›  全部回复第 1 页 / 共 16 页
回复总数  320
1  2  3  4  5  6  7  8  9  10 ... 16  
插件有多个,这也就意味着它是一个列表形式的存在,你应该在某一个时机调用所有插件的某一个方法,这个方法签名是你定义的,类似接口一样的东西。比如里面有一个方法叫做 onRequest(Request),插件负责实现这个方法,然后把插件实例注册到你的插件列表中,这样你就可以在合适的时机遍历插件列表进行调用。
12 天前
回复了 professionaler 创建的主题 分享创造 安卓开源冒险岛服务端+客户端
@cocalrush 基本上可以 100%的跟官服一样,游戏开发主要的大头就是那些配置和资源数据,服务端就是要适配这些数据让游戏运作起来,修改爆率这些只是常规操作。
13 天前
回复了 professionaler 创建的主题 分享创造 安卓开源冒险岛服务端+客户端
@cocalrush 官方的是 C++的,java 的一般是根据逆向通讯消息做的私服版本,以前没有开源客户端的时候,只能修改正版客户端的二进制文件来链接伪造的私服服务端。
日志分为写和读两个步骤,这两个步骤完全是分离的。日常开发还是写入到文件,存储到磁盘,说白了日志就是一个文本文件,在写的阶段什么顺手用什么。

日志的处理就比较庞大了,包括收集日志文件、存储、索引和查询,每一个步骤都有很多开源的选择,这部分更偏向于运维,跟开发关系就不大了。
小聪明引发的大智慧。

不过近几年苹果在国内的服务是越来越差了,感觉招聘的那些个员工跟我活在两个世界,你永远没有办法跟他们沟通,他们的回答也永远只会是千篇一律机械的话术。以上评价来自于个人经历。
26 天前
回复了 abcfreedom 创建的主题 旅行 走错机场,损失惨重,心态有点崩
我有一次本来在虹桥,结果我跑去浦东了,打车花了 150 ,万幸是赶上了,已经在念我的名字了,一路狂奔,下飞机才缓过来。
39 天前
回复了 jeffson 创建的主题 大家有做过参加考试的噩梦吗?
我经常梦到这么大一把年纪了还回去复读初中,而且复读了好几年,每当毕业后,第二年开始又重新开始从一年级开始复读
132 天前
回复了 tnhmcm 创建的主题 Java Spring 里怎样正确处理 InterruptedException?
https://www.baeldung.com/java-interrupted-exception

这个链接的 3.1 说到: The purpose of the interrupt system is to provide a well-defined framework for allowing threads to interrupt tasks (potentially time-consuming ones) in other threads. A good way to think about interruption is that it doesn’t actually interrupt a running thread — it just requests that the thread interrupt itself at the next convenient opportunity.

我个人理解中断是一种协调机制,一般用来优雅关闭某种耗时操作,当这个异常被抛出来的时候,一般是线程的 Thread.interrupt()方法被调用了,证明有人想要中断当前所进行的任务。处理中断异常有两种选择,一种是恢复中断,不理外界想要中断的意图,继续埋头干活,只需要调用 Thread.interrupted()将线程的中断标记清除掉。另一种就是响应这个中断请求,结束任务并清理相关的资源,或者继续向上传播中断异常。
很好奇是通过什么来判断做某一件事需要花费多少时间的,而且什么情况下算是做完了?究竟是哪些因素造成了时间不确定的?完成的质量和速度是否维持在一个比较好的平衡点上?
148 天前
回复了 James369 创建的主题 程序员 现在前端对比较实时的场景能否胜任?
100ms 也就是 10fps ,轻轻松松呀,你看看 three.js 的效果,3D 都能搞,更别说只是 2D 了,很多图表的库都用 canvas 来做,webgl 渲染很快的。不过对于数据实时性要求高的肯定还是要网络支持,比如基于 udp 的 http3 。
149 天前
回复了 chenliangngng 创建的主题 Chrome 谷歌浏览器居然是隐私做的最好的
你可以 Google 一下指纹浏览器,就是为了解决被追踪问题的
支持一下
172 天前
回复了 smallpampan 创建的主题 职场话题 失业一个月,我经历了什么(二)
主动离职 5 个月了,每天钓钓鱼,看看书。
审核和存储是独立的,这个存储跟网盘一个性质,只要文件/对象类型能被识别,就会被内部扫描机制所读取并检查是否违规。
记录一下最后同步时间,注意这里的时间最好是一个逻辑序号,每同步一次在服务端就自增一次。

客户端拿到这个序号以后,在本地的任何操作,具体表现在存储上都关联上这个序号,这样当你下次同步的时候,就可以查询出所有跟这个序号相关联的数据变动,然后把这些数据+序号提交到服务器。

当不同的终端/客户端开始进行同步时,服务端就能够取出这个序号,比较一下当前最后同步序号,这样就能知道不同客户端在同步上的先后顺序。

在技术上有很多种方法来做,上面的序号是一种,还有一种就是写日志,通过快照+重放来实现同步。当然技术只是一方面,如何实现同步的逻辑流程取决于具体的场景,更重要的是你如何处理复杂的边界情况。
为什么会看到乱码呢,浏览器 JS 环境一般使用的就是 UTF-8 编码,那么如果二进制数据不是这个编码,然后又使用 UTF-8 的字符串变量来进行展示,显示出来就会是乱码。换句话来说,首先拿到手的就是一堆二进制数据,但是这个二进制数据拿来当作什么用途,就需要对其进行解码,如果编码和解码匹配不上,就会出现问题。

所以如果你拿到手的已经是一个通过 UTF-8 解码表示二进制数据的字符串了(也就是你说的 response.text() ),首先应该把它转回二进制,然后再使用正确的解码器来对其进行解码操作。但是当然更好的办法是可以直接拿到 response.arrayBuffer()
```javascript

const utf8String = "\xC4\xE3\xBA\xC3";
console.log(utf8String); // 输出: ÄãºÃ
const decoder = new TextDecoder('gb2312');
const result = decoder.decode(Buffer.from(utf8String, 'binary'));
console.log(result); // 输出: 你好

```
1  2  3  4  5  6  7  8  9  10 ... 16  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1133 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 18:30 · PVG 02:30 · LAX 11:30 · JFK 14:30
Developed with CodeLauncher
♥ Do have faith in what you're doing.