我的问题是:是否有可能(以任何方式)在运行时分析和修改调用堆栈(帧内容和堆栈内容)?
我正在寻找任何可能性 - 低级,不安全或内部API,编写C扩展的可能性等.只有约束:它应该可以在标准运行时使用,无需调试或分析模式.这就是我正在研究"它有可能吗?",而不是"这是好主意吗?".
我想从一个框架中收集所有本地数据,将其存储在某个地方,然后从堆栈中删除该框架,以后可以恢复它.实际上,它为我们提供了JVM的延续,它们将允许快速异步框架(如来自python的gevents)和生成器结构(如python中的那些).
这可能看起来像重复的问题,但我只发现了用"使用Thread.currentThread().getStackTrace()"或"应该用调试工具完成"的问题.我有类似的问题,但它只是在询问人们想要做什么(处理异步计算)的背景下回答,而我需要更一般的(面向Java堆栈)答案.这个问题也是类似的,但和以前一样,它专注于并行化,答案也集中于此.
我再说一遍:这是提出新语言功能提案的研究步骤.我不想冒险破坏JVM中的任何东西 - 我正在寻找可能性,然后我将分析可能的风险并留意它们.我知道手工操作堆栈是丑陋的,但是通过省略的consrtuctor创建实例也是如此 - 它是客观化的基础.肮脏的黑客可能很脏,但它们可能有助于引入一些很酷的东西.
PS.我知道Quasar和Lightwolf存在,但是,如上所述,那些是以并发为中心的框架.
编辑
澄清一点:我正在寻找与未来JVM和库版本兼容的东西.我们最好谈论一些被认为是稳定的公共API的东西,但如果解决方案存在于内部,但几乎是标准的,或者在内部(如sun.misc.Unsafe)之后成为标准的东西 - 这也会做.如果C-extension只使用C JVM API可行 - 那没关系.如果这对于字节码操作是可行的 - 那也没关系(我认为可以使用ASM).
我有一个Wildfly 8.2.0.Final应用服务器使用full-ha配置文件在域模式下运行集群.该集群由两个wildfly,master和slave实例组成,每个实例都在自己的虚拟机上运行.
我的项目在应用程序服务器上部署为war-file.出于测试目的,我的负载均衡器使用循环法分配请求.
匿名用户可以使用按钮来使用此项目提供的服务,该按钮将首先调用两个步骤然后登录.登录将使用在注册阶段创建的会话,提供在注册调用期间创建的凭据.
登录端点是请求范围的CDI bean,其中包含保存用户信息的成员.用户信息是SessionScopped EJB Bean,它在会话实例化期间创建,并注入到登录端点CDI bean中.用户信息应该在集群成员之间分配.
现在有趣的部分:
所以,我一直在阅读这篇文章,并了解了如何向生成器发送值.
而现在我有点困惑.产量是陈述还是表达?它不像函数一样使用括号语法,所以它看起来像语句.但它返回值,所以它就像表达式.
就在不久前,我已经开始讨论"为什么python没有'如果x = foo():( ...)'?" (为什么我们不能在if语句条件中分配).我说,语句是原子的,所以赋值语句和if语句应该分开.现在,我不知道该怎么想.
==编辑==
我做了我公平的阅读.
http://docs.python.org/2/reference/expressions.html#generator.send - "value参数成为当前yield表达式的结果."
因此,产生HAS值.我明白了,所有的文档都说这是一个陈述,但如果陈述可能有价值,那么表达和陈述之间的差异到底是什么?
另外,我知道什么是生成器,协同程序等等.我需要元语义或文档的语义:D
==最终答案==
这是我想解决的问题:
有一个N(
N1≤≤4)福克森守着一个宝贵的宝藏,你喜欢亲自动手.问题是,Foxen肯定不会允许 - 至少,不是在他们醒着的时候.幸运的是,通过仔细观察,你已经看到每个狐狸都有一个规律的睡眠周期.特别是,
i狐狸保持清醒Ai(1≤≤23Ai)小时,然后睡眠Si(Si1≤≤23)小时,无限期地重复这种模式(Ai + Si2≤≤24).在你的宝藏尝试开始时,i福克斯正好Oi(0≤Oi<Ai + Si)小时进入它的周期.如上所述存在
T(1≤≤20T)场景.对于每一个,你想确定所有的狐狸会在多长时间内同时睡着,让你抓住他们的宝藏,或者如果这根本不会发生.输入
Run Code Online (Sandbox Code Playgroud)Line 1: 1 integer, T For each scenario: Line 1: 1 integer, N Next N lines: 3 integers, Ai, Si, and Oi, for i = 1..N产量
Run Code Online (Sandbox Code Playgroud)For each scenario: Line 1: 1 integer, the minimum number of hours after the start …
我正在努力以我期望的方式处理Rx错误.
当我有一个Observable(例如,来自点击流)并且发生异常时我想抓住它但继续.我试过的所有解决方案都会捕获错误然后结束Observable.有没有办法捕捉和继续?
例如,下面的Observable将发出"1",然后是"Error",但从不发出"3".
var range = Rx.Observable.range(1,3)
.map(function(i){
if(i === 2){
throw "Error";
} else {
return i;
}
})
.catch(function(e){
return Rx.Observable.return(e)
});
range.subscribe(function(i){
console.log(i)
});
Run Code Online (Sandbox Code Playgroud) TL; DR:查找粗体文本以查看没有上下文的问题.
当一些不好(或好,但这是一个残酷的世界)发生时,FB有一个功能来改变你的个人资料图片 - 当美国合法化同性婚姻你可能在你的照片上有一个彩虹旗,当SW7出来时,你可以有添加了光剑等
我想为社交活动做类似的事情,并开始为此编写应用程序.我认为它应该是可能的,就像星球大战一样,它似乎是由私人公司(迪士尼)管理,而不是FB本身.
我的计划是:
不幸的是,(4)中引用的答案似乎不再适用.
我的问题是:这还有可能吗?如果是 - 如何?如果没有 - 我还有其他选择吗?
我也试过搞清楚如何在webview中创建链接"Make Profile Picture".看起来像:
https://www.facebook.com/photo.php?fbid=<<picture id>&set=a.<<similiar, but not the same as picture id>>.<<not a clue>>.<<seems to be profile id>>&type=3&makeprofile=1&profile_id=<<profile id, duh>>&pp_source=photo_view
Run Code Online (Sandbox Code Playgroud)
如果有人知道以下部分是什么意思,我的问题可能会解决:
<<similiar, but not the same as picture id>><<not a clue>><<seems to be profile id>>我也尝试搞清楚ProfilePictureSource,但抽象本身并没有在任何地方描述(或者我找不到它)并且根据所需的权限判断,这似乎不是我需要的(为什么我需要任何页面,组,我只想更新个人资料照片时的邮箱或业务权限?).如果是这样,我就失去了它,请告诉我如何使用它.
回答这个问题的另一种方法是提出将横幅放在个人资料图片上的替代方法.
为了记录,我正在使用带有facebook-sdk包装器的Python ,但仅用于快速原型设计 - 我可以使用带有Spring Social的Java,带有手动HTTP调用的DLang,无论如何 - 技术不是问题,我需要一个通用在这里.
所以,我正在尝试使用 Webflux 并且我有一个场景“检查对象是否存在;如果存在,请执行操作,否则 - 指示错误”。
这可以在反应堆中写成:
public Mono<Void> handleObjectWithSomeId(Mono<IdType> id){
return id.
flatMap(repository::exists). //repository.exists returns Mono<Boolean>
flatMap(e -> e ? e : Mono.error(new DoesntExistException())).
then(
//can be replaced with just(someBusinessLogic())
Mono.fromCallable(this::someBusinessLogic)
);
}
Run Code Online (Sandbox Code Playgroud)
或作为:
public Mono<Void> handleObjectWithSomeId(Mono<IdType> id){
return id.
flatMap(repository::exists). //repository.exists returns Mono<Boolean>
flatMap(e -> e ? e : Mono.error(new DoesntExistException())).
map(e -> this.someBusinessLogic()));
}
Run Code Online (Sandbox Code Playgroud)
假设返回类型 ofsomeBusinessLogic不能改变并且它必须是 simple void,而不是Mono<Void>。
在这两种情况下,如果对象不存在,Mono.error(...)则会生成适当的对象。
虽然我理解这一点then并且flatMap有不同的语义,但实际上我得到了相同的结果。即使在第二种情况下我使用flatMap它的含义,我也可以跳过flatMap并fromCallable支持简单map …
java ×2
python ×2
expression ×1
facebook ×1
javascript ×1
jvm ×1
python-2.7 ×1
reactor ×1
rest ×1
rxjs ×1
session ×1
stack-trace ×1
weld ×1
wildfly ×1
yield ×1