我有一个HTML5用户界面和一个Java后端,并希望避免在普通的java中重建HTML ui,所以我的想法是运行本地网络服务器并使用webview在"本机"窗口中呈现它.解决方案似乎是使用可以嵌入摇摆的JavaFX WebView.在纸上听起来很棒(特别是因为他们声称使用的是WebKit,它在Chrome/Safari中的UI性能明显更好).
它有效,但是:性能难以置信.在Chrome,Safari(甚至是速度较慢的Firefox)中,数量级比同样的速度慢.它几乎无法使用(我的UI大量使用JQuery/JS).顺便说一句,我正在使用这篇文章中的代码.
问题是:
任何人都可以介绍我的经验吗?我只是做错了什么或者这是由JavaFX引起的,因此"正常"?
更好的想法如何实现这一目标?我目前只是简单地启动系统浏览器,但它不是很好(看起来不像集成).
我知道Container Engine目前处于alpha状态,尚未完成.
从文档我假设没有pod的自动缩放(例如,取决于CPU负载),但是,对吗?我希望能够配置复制控制器,以便在平均CPU负载达到定义的阈值时自动添加pod(和VM实例).
这是在不久的将来的路线图吗?
或者是否可以使用计算引擎自动调节器?(如果是这样,怎么样?)
我正在实现一个从远程计算机播放流的媒体播放器.通过我的应用程序,我可以控制远程机器(例如寻求秒).像魅力一样,但是:Android Media Player缓冲一些疯狂的10-15秒(!!),这意味着每次点击('搜索')需要10-15秒才能生效,即使它不到一秒钟直到新的数据到了.
我的问题:有没有办法控制(限制)缓存?或者我只是做错了什么?我是唯一有此问题的人吗?
我的代码非常简单:
player = new MediaPlayer()
player.setDataSource(url);
player.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
player.prepareAsync();
Run Code Online (Sandbox Code Playgroud)
更新:我使用本地自建的迷你HTTP服务器将我的字节流连接到Androids媒体播放器.在这种情况下,似乎Android DRM正在延迟/缓存.仍然不太清楚为什么(如果我连接到托管文件的IIS,为什么不).也不知道如何解决这个问题.
欢迎投入!
谢谢!丹尼尔
我偶然发现了这个奇怪的错误.似乎Collections.sort()不会修改排序列表,以便在同时迭代同一列表时检测并发修改.示例代码:
List<Integer> my_list = new ArrayList<Integer>();
my_list.add(2);
my_list.add(1);
for (Integer num : my_list) {
/*
* print list
*/
StringBuilder sb = new StringBuilder();
for (Integer i : my_list)
sb.append(i).append(",");
System.out.println("List: " + sb.toString());
/*
* sort list
*/
System.out.println("CurrentElement: " + num);
Collections.sort(my_list);
}
Run Code Online (Sandbox Code Playgroud)
输出
List: 2,1,
CurrentElement: 2
List: 1,2,
CurrentElement: 2
Run Code Online (Sandbox Code Playgroud)
人们会期望a ConcurrentModificationException,但它没有被提升,代码可以工作,尽管它不应该.
我正在构建一个分布式系统,该系统可能包含数百万个客户端,这些客户端都需要保持开放(优选HTTP)连接以等待来自服务器的命令(在其他地方运行).消息/命令的负载不会很高,可能是一个消息/秒/ 1000个客户端,这意味着它将是1000个消息/秒@ 100万个客户端.=>它基本上是关于并发连接.
要求也很简单.单向消息传递(服务器 - >客户端),每个"通道"只有一个客户端.
我在技术方面非常开放(xmpp/websockets/comet/...).我使用Google App Engine作为服务器,但不幸的是它们的"渠道"对我不起作用(配额太低,没有Java客户端).XMPP是一种选择,但相当昂贵.到目前为止,我使用的是URL Fetch和pubnub,但他们刚刚开始为连接收费(很长时间).
所以:
有没有人知道那里能以实惠的方式为我做的服务?大多数我发现限制或大量充电连接.
有自己实施这样一个服务器的经验吗?我实际上已经完成了它并且它运行得很好(基于Tomcat和NIO)但我还没有时间实际设置一个大的负载测试环境(部分因为这仍然是一个后备解决方案,我更喜欢战斗硬化的msg服务器).您对每GB有多少用户的体验?任何硬限制?
我的架构也允许对msg服务器进行分段,但我想最大化并发连接,因为msg处理CPU开销很小.
我在Java中构建了一个自定义消息服务器,它接收消息流并将每条消息传递给它的客户端(1:1,如果没有连接则丢弃消息 - 非常简单).我在Win7x64和Java 7上运行Tomcat 7并使用NIO连接器(实现了Comet servlet).它运行良好,但我现在正在考虑扩展该野兽,目前我看到为每个连接的客户端分配了大约85kb的RAM.10,000个客户端@ 900MB以下并线性扩展.(我还没有做任何其他事情,只是保持连接)这是我的意见,所以我想知道是否有一些调整使Tomcat或Java用他们的NIO impl节省更多内存.到目前为止我尝试的所有Tomcat设置都没有影响到这一点.
有没有人有经验如何将Java或Tomcat放在关于套接字连接的记忆节食上?
更新:通过修剪套接字缓冲区和其他一些tomcat内部,我现在已经低于70kb /连接.不确定这现在如何影响吞吐量.我也尝试过在32位/ 64位linux上使用相同的结果.
假设我们在支持蓝牙的设备上安装了根Android操作系统.我们可以构建一个通过蓝牙A2DP宣传自己为蓝牙音箱的应用吗?
如果可以,那么任何其他设备都可以配对/连接到我们的蓝牙服务器应用程序并传输任何音乐/声音.然后,此服务器应用程序可以获取音乐流并在本地播放,甚至可以通过Wi-Fi将其发送到其他设备.这理论上可以实现多房间蓝牙解决方案.
知道怎么做到这一点?我从哪里开始?
我正在尝试通过networksetup命令 (OSX)连接到安全 Wifi ,而无需重新输入 WPA2 密码(假设用户之前已输入并保存了密码)。
我基本上想暂时切换到另一个(已知的)Wifi,然后在不询问用户密码的情况下连接回上一个。
networksetup -getairportnetwork en0 返回当前网络(所以我知道从哪里连接回来)
networksetup -setairportnetwork en0 WIFI_SSID_I_WANT_TO_JOIN听起来像我的朋友,但需要密码。不指定密码会导致在没有密码的情况下尝试连接失败。
networksetup -listpreferredwirelessnetworks en0 返回 OSX 可以自动连接到的所有存储网络的列表。
我似乎找不到重新连接到现有网络的方法(来自首选无线网络列表)。有没有办法做到这一点?
如何在运行时参数化 SpringData ElasticSearch 索引?
例如,数据模型:
@Document(indexName = "myIndex")
public class Asset {
@Id
public String id;
// ...
}
Run Code Online (Sandbox Code Playgroud)
和存储库:
public interface AssetRepository extends ElasticsearchCrudRepository<Asset, String> {
Asset getAssetById(String assetId);
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以myIndex用一个参数替换,但该参数将在实例化/启动期间解决。我们为多个客户/租户提供相同的资产结构,它们有自己的索引。我需要的是这样的:
public interface AssetRepository extends ElasticsearchCrudRepository<Asset, String> {
Asset getAssetByIdFromIndex(String assetId, String index);
}
Run Code Online (Sandbox Code Playgroud)
或这个
repoInstance.forIndex("myOtherIndex").getAssetById("123");
Run Code Online (Sandbox Code Playgroud)
我知道这不是开箱即用的,但是有没有办法以编程方式“破解”它?
进入或退出“暂停”功能时,如何调试Kotlin代码?(请参见下面的示例)。
fun mainFunction() = runBlocking {
println("before suspend call")
anotherFunction()
println("after suspend call")
}
suspend fun anotherFunction() {
// do something
}
Run Code Online (Sandbox Code Playgroud)
我知道Kotlin协同例程在执行暂挂函数时会发挥很多魔力,并且那一刻执行可能会切换线程。因此,当退出“ anotherFunction()”时,我只能遍历协程框架代码,而无法回到“ mainFunction()”。
但是,我想知道是否有可能像没有参与协程那样调试它。是否有启用此功能的工具或库?可能在共同例程支持的路线图上吗?
像禁用联合例程魔术的编译器标志这样简单的功能已经走了很长一段路,但是我什么也找不到。
我发现的唯一有用的东西是:-ea JVM参数还激活了kotlin调试模式,该模式将至少“修复”堆栈跟踪以查找异常。
AppEngine在其日志中有一个名为的成员cpm_usd.据我了解,这是以美元计算的1000个此类请求的大致费用.
自2012年8月16日起,我的应用程序(我没有更改我的应用程序)这些数字显着缩小(因子500).我想知道这是关于什么的?
Google是否改变了计算这些费用的方式?
是否包含前端小时,或者仅包括对数据存储区等服务的调用?
我唯一的答案是他们停止在计算中包括前端小时(我目前仍处于开发模式,因此积累了大量空闲时间,可能会扭曲原始/旧结果).
java ×3
android ×2
a2dp ×1
bluetooth ×1
caching ×1
collections ×1
debugging ×1
javafx ×1
kotlin ×1
kubernetes ×1
macos ×1
memory ×1
messaging ×1
performance ×1
server-push ×1
sockets ×1
sorting ×1
spring-data ×1
swing ×1
terminal ×1
tomcat ×1
websocket ×1
webview ×1
wifi ×1
xmpp ×1