我刚刚发现我的手机是在对称的udp防火墙后面,这意味着udp流量是不可能的.我的3g提供商是t-mobile,这是我国最大的提供商之一.我怀疑更多的移动3g提供商有udp限制.
我正计划开发一款实时游戏.udb似乎是快速移动的正确解决方案,但我不能使用udp因为那时我失去了灵活性(在任何地方玩,很多地方没有wifi)和大量观众(3g提供商阻止udp).
像umts和3g这样的移动网络具有高延迟,因此tcp(重发丢失数据包和排队)并不是理想的解决方案.
有替代方案吗?或者应该放弃超过3g的实时游戏的想法?
如何从纬度经度位置获取国家/地区代码?
我知道有很多可用的地理编码服务,但它们没有考虑我的要求,因为我的应用程序在它上线几小时后被阻止(许多地理编码请求).
大多数地理编码服务也提供商业服务,但它们还不是一个选项,因为该项目是它的起点.
我做了一些研究,并认为我找到了一种方法:获取包含所有国家(多边形)边界的形状文件(或其他数据文件).接下来只查看lat/lng位置的多边形.最后从特定多边形中读取元数据.
有谁知道我在哪里可以获得包含显示世界上所有国家边界的多边形(或仅仅是线条)的形状文件(或其他格式)?
或者有没有更简单的方法来解决这个问题?
我正在使用guice在我的构造函数中动态注入类.例如:
@Inject
public PublisherFrame(EventBus eventBus, MyPublisherService publishService)
Run Code Online (Sandbox Code Playgroud)
在我的guice模块中:
bind(EventBus.class).in(Singleton.class);
bind(MyPublisherService.class).in(Singleton.class);
Run Code Online (Sandbox Code Playgroud)
工作没有问题.
当我创建一个具有在java代码中构造的参数的对象时,问题就开始了:
public LoginController(EventBus eventBus, MyPublisherService publisherService, LoginDialog dlg)
Run Code Online (Sandbox Code Playgroud)
这里的LoginDialog是java代码创建的java类.为了解决这个问题,我使用了@assist和:
install(new FactoryModuleBuilder().implement(ILoginController.class, LoginController.class).build(GuiceLoginControllerFactory.class));
Run Code Online (Sandbox Code Playgroud)
工作也很好.但现在我必须创建2个额外的java文件:
有没有更简单的方法来注入一个在构造函数中有自定义参数的变量?(没有创建2个额外的"guice"帮助文件)
我正在寻找一种通过2点绘制无限线(无线的线,也称为射线)的方法.我可以用Line2D在2点之间划一条线,这里没问题.
接下来,无限部分需要一看.用我简单的思维思考,让我们将第二个点的x和y坐标乘以100并重新绘制线条.这有效,但仅限于简单情况.
例如,这里是一个生成不同角度的线的情况:
g.setColor(Color.red);
g2.setStroke(new BasicStroke(4.0f));
g2.draw(new Line2D.Double(0, 61.632653061218946, 944, 217.25510204080692));
g.setColor(Color.blue);
g2.setStroke(new BasicStroke(1.0f));
g2.draw(new Line2D.Double(0, 61.632653061218946, 944*10, 217.25510204080692*10));
Run Code Online (Sandbox Code Playgroud)
这将首先绘制一条胖红线,接下来它将绘制一条蓝色细线.
与红线相比,蓝线具有不同的角度.这是一个截图来说明这种效果:

有人知道解决这个问题的方法吗,或者更好的方法是通过2分画出无限线?