有没有那个网站可以看

首页--百度百家
国内优酷土豆、乐视、爱奇艺等各大视频网站学习借鉴的主要对象Netflix——它的发展历程,它的自制剧模式又是如何运作?
Netflix CEO里德·哈斯廷斯曾说:网络流媒体终将会取代有线电视。虽然视频网站和电视台看起来是竞争关系,但这些视频网站也明白,只有像电...
在子超看来传统的广播电台本身是可以进行自我进化的,不需要颠覆
成都这座来了就不想走的城市,对于很多互联网创业者而言既熟悉又陌生。
在河南第N线的小县城,也能被互联网+撞了一下腰了
为了在2016年实现盈利,特斯拉将推出更接地气的Model 3车型,并投入15亿美元用来建设线下销售商店、充电设备等领域,用来满足日益增长的用户市场需求...
这是百度首席科学家、Coursera主席、创始人之一、斯坦福大学教师Andrew Ng在Quora机器学习 Sessions上的全部回答,来看看Andrew Ng对人工...
无人驾驶有不可思议的野心,但技术并不能独自带来繁荣。
大数据对于营销非常重要,信息的多寡甚至已经成为决定企业竞争力的核心要素,但大数据也不能盲目迷信,甚至都不能太过乐观。在大数据的应用上,商家与...
据外媒报谷歌Android操作系统已经创造了310亿美元营收,220亿美元利润,利润率达70%!虽然谷歌认为这些数字不应该被公布于众,因为甲...
随着资本市场的变动,一些曾经高飞的科技公司,也都正在回落地面。并且,整体不景气的市场情况也正在影响到音乐科技公司的融资与IPO。
爱奇艺对外表示:要约将帮助爱奇艺更好地获得国内资本市场支持,给下一阶段在内容、技术等方面的投入储备资源,为公司长远发展创造更大的空间。
倘若iphone真的进军智能电视领域,那么国内市场小米、乐视互联网电视品牌又有何良策御敌那?
VR/AR将颠覆哪些行业?围绕VR、AR的硬件创业机会在哪?
2015下半年《大圣归来》实现国产逆袭,进口电影却票房走低。
这篇文章就是试图解答:腐文化从何而来,未来如何?为何腐文化的受众是腐女,她们又有什么特点,这些特点如何成为了商业化的根本阻碍?腐女和资本又该...
虽然短期迅速回到王者地位的可能不大,但在激烈竞争的市场中拥有一席之地是完全可能的。
烧钱的爱奇艺已经影响了百度财报,偏偏还在百度从搜索到O2O的发展战略中处于边缘位置。把爱奇艺剥离出来独立上市是百度航母计划的具体实施,有一石...
为2016年的外卖O2O发展,敲个警钟——别忙着编织什么生态、平台化或者是布局那些高大上的故事,做好用户最迫切的配送需求,才是活下来的根本条件。
《张亚勤:微软“失去多年”是最大遗憾》一文分析了移动互联网时代微软转型的难题——张亚勤认为,“都不是技术的问题,就像爱因斯坦所说的,除了有好...
文章排行TOP ARTICLES
一场没有硝烟的战役,谁是真正赢家
杨国英观察
HOT COMMENT
七日活跃作家ACTIVE WRITER
专栏作家、商业模式批评人
银库金融副总裁
源自麻省理工学院
百家号说明
百家号是什么
百家是百度新闻的原创内容类平台。每日发布的优质内容将会在百度新闻的网页版、移动端呈现,并被百度搜索和百度其他产品线收录。我们致力于将优秀写作者推荐给海量的用户,同时引入了百度联盟的广告分成模式,期望给予作者更公平的回报。百家号注册正式对外开放,现阶段主要针对科技领域的个人、机构和媒体。
加入百家号的好处
如何加入百家号
百度新闻客户端
百度新闻客户端
扫描二维码下载
订阅 "百家" 频道
观看更多百家精彩新闻深圳公交车有没有软件可以查看什么时候到站?
深圳公交车有没有软件可以查看什么时候到站?
不区分大小写匿名
酷米客公交查询软件挺好用的,选择已安装智能公交系统的路线,迅速定位当前站点,即刻便能同时查看离你最近的公交车,什么时候到站,还有几分钟,几公里。精确在1分钟内。最多还可同时查看4辆车的到站信息。还可根据需求更换当前站点。
酷米客公交查询软件可以啊,而且现已覆盖深圳市1/3的路线,东部公交的全部线路都可以查询到车辆到站信息。其他路线正在完善中,敬请期待。&
有的,酷米客公交,这个软件可以根据到站时间和到站距离来提醒你,例如,提前3分钟到站提醒或200米到站提醒。好不好啊?
可以用智能公交查询软件——酷米客公交啊,可以为你的候车带来便利。
现已覆盖深圳市1/3的路线,最多还可同时查看4辆车的到站信息。
给你推荐一个最好用的
酷米客公交,
朋友们一直用,省钱。&
深圳是有的,毕竟科技发展了啊,
酷米客公交,最好的一个软件,可以帮你换乘查询和候车提醒。&
@酷米客公交,功能非常完善,
@而且非常准确,真的很完美
@你可以下载用一用的。&
------------------------------------------------
深圳有,我一直都在用,酷米客公交,
准时,为我合理安排行程立下了汗马
------------------------------------------------
酷米客公交可以!
相关知识等待您来回答
交通/驾驶领域专家
& &SOGOU - 京ICP证050897号请问R大 有没有什么工具可以查看正在运行的类的c/汇编代码 - 讨论 - 高级语言虚拟机 - ITeye群组
& 上一页 1
比如《Effective Java》这本书的第232页
引用import java.util.concurrent.*;
public class StopThread {
private static boolean stopR
public static void main(String[] args) throws Exception {
Thread t = new Thread(new Runnable() {
public void run() {
int i = 0;
while (!stopRequested)
t.start();
TimeUnit.SECONDS.sleep(1);
stopRequested =
当使用 java -server (Hotspot Server VM)启动时会发生”代码提升“ 造成活性失败,书上的解释是:
while (!stopRequested)
}
被提升为
if (!stopRequested) {
while (true)
想具体看看是不是这样的。麻烦指点下
我不是R大,我不会武功~~~~~=================华丽丽的分割线======================打印编译信息的参数是-XX:+PrintCompilation,但不包括编译后的代码。若要看编译后的代码,需要加参数-XX:+PrintAssembly,再加上HSDIS插件(组内分享就有)。其他还有一些参数和插件使用信息,参见。坐等R大补充。
caoxudong818 写道我不是R大,我不会武功~~~~~
=================华丽丽的分割线======================
打印编译信息的参数是-XX:+PrintCompilation,但不包括编译后的代码。若要看编译后的代码,需要加参数-XX:+PrintAssembly,再加上HSDIS插件(组内分享就有)。
其他还有一些参数和插件使用信息,参见。
坐等R大补充。
哈哈哈,好 我试试&& 好久木见你活动了
jinnianshilongnian 写道caoxudong818 写道我不是R大,我不会武功~~~~~
=================华丽丽的分割线======================
打印编译信息的参数是-XX:+PrintCompilation,但不包括编译后的代码。若要看编译后的代码,需要加参数-XX:+PrintAssembly,再加上HSDIS插件(组内分享就有)。
其他还有一些参数和插件使用信息,参见。
坐等R大补充。
哈哈哈,好 我试试&& 好久木见你活动了
老了,岁月不饶人啊。
下载了java version "1.6.0_25-ea-fastdebug汇编出来了,不过看的头大,再补补汇编知识现在两种情况(hotspot vm& -server)
while(!stopRequested) { //无限循环&&&&&&&&&&&&&&&&&&& i++;&&&&&&& }
while(!stopRequested) {//在我的机器上循环到4000多over&&&&&&&&&&&&&&&&&&& i++;&&&&&&&&&&&&&&&&&&& System.out.println(i);&&&&&&& }回去仔细看下汇编 争取搞懂
看汇编的办法上面老曹说的就对了。在这个群组里之前有过好几帖问过这个的,其中我在这边有回复:
我现在手上有的、自己用的hsdis插件有hsdis-i386.dll、hsdis-i386.so、hsdis-amd64.so。本来想把Windows/x64的也build一个出来,但弄起来真麻烦,我在Ubuntu上装MinGW/x64的cross compiler总是不成功,总之就是怪怪的。
如果真的有人要hsdis-amd64.dll的话我可以去找找看有没有同事有现成的…
========================== 正题分界线 ==========================
为了回答您的问题翻出了《Effective Java, Second Edition》,原文版。这上下文是Item 66对吧?我这边看到的页码是260-261
这种技术文翻译成中文之后为啥就这么别扭呢…你引用的那段话都没错,原文就是那个意思。而且HotSpot Server Compiler确实做了书中所描述的那种优化。
如果是我要调查那个静态变量的读有没有被当作循环不变量提升到循环之外,我不会先从PrintAssembly看汇编来着手,而是会用更直接的方式去看C2(HotSpot Server Compiler)到底做了什么。
如果是我想验证某个优化是否真的在起作用,可能会找个fastdebug版的HotSpot VM,用 -XX:PrintIdealGraphLevel=2 -XX:PrintIdealGraphFile=ideal.xml 这样的参数来获取C2编译方法时内部数据结构的状态,然后用将输出可视化,观察某些优化是否发生了。
另外,-XX:+PrintOptoAssembly所输出的近似汇编的日志也比真的汇编包含更多上层信息,更便于理解。
实际操作了一下,结果贴在Github了:
包括-XX:PrintIdealGraphLevel=2输出的Ideal graph记录,以及-XX:+PrintOptoAssembly输出的日志。请参考。
请从前面的链接下载IdealGraphVisualizer,用它来打开我。可以看到这个日志记录了C2在编译StopThread$1.run()过程中若干个阶段的状态:
双击这个菜单里的阶段名就会在IGV的主界面显示出C2编译到这个阶段时的的图。C2所采用的IR是一种名为“Ideal”的形式的。它的设计理念虽然很简单,但实际编译过程中产生的图相当复杂,这边就不详细说了,大家有兴趣的话可以慢慢探索。
---------------------------------------------------------
如何探索呢?继续前面的例子,
先打开“After Parsing”这个阶段的图。C2编译一个Java方法时,需要先把字节码解析(parse)为C2的IR,然后才可以继续做分析和优化,最终生成代码。“After Parsing”就是C2刚完成parse过程,把这个方法完整的IR图建立好的时候;这个状态代表了C2对要编译的方法的初步认识。
从IGV右边的工具栏里勾选上“C2 Only Control Flow”:
这样可以把图里的数据流节点暂时过滤掉,只看控制流节点。通过控制流图我们可以比较轻松的把图里的各个与原本的Java代码对应起来,方便后续的理解。
每个节点代表一个“值”。节点上方的是输入,下方的是输出。
打开“C2 Basic Coloring”,可以看到紫色的边是数据依赖边,红色的是控制依赖边;有种特殊的数据依赖边被标记为绿色,那些是“memory”依赖。
这样在主界面里看到的图是:
(点击看大图)
这个控制流图里,每个大的浅蓝色方块就是一个“基本块”,每个方块的左上角注有IGV为它编的号(B1、B2那些就是)。
在同一个基本块内的节点之间只有数据依赖关系,或者说这些节点的控制依赖相同。
(插点题外话:前面也提到了,C2的Ideal graph是一种PDG,控制流图和数据流图是融合在同一层次上的。在这种图里其实没有显式的基本块,只有Region节点来充当基本块的头。IGV所画出来的基本块是从Ideal graph里重新计算出来的,而不是Ideal graph自身就显式记录的,这点需要明确一下。
大家有可能会发现IGV显示的图里,同一个方法的同一个基本块在不同阶段可能被标上了不同的编号。这正是因为IGV对每个阶段的图都重新计算了基本块的范围及编号。)
如果带上-XX:+PrintCompilation来跑这测试,会看到:
StopThread$1::run @ 2 (15 bytes)
这行日志里的百分号说明了这是一个OSR(on-stack replacement)编译。关于PrintCompilation日志格式的说明可以参考。近期内我会把这个笔记搬到上去。
这里我是用JDK 6 update 25 fastdebug版来跑的。请参考文档里对应版本的部分。
C2对OSR编译会有些特殊处理,例如说:编译出来的代码的入口点是在OSR入口点而不是原本方法最开头的地方;被编译的方法在OSR入口点之前的部分会被完全忽略掉,不进行编译,等等。
相应的,在这个例子里我们可以看到:
·B3是这次编译的实质入口,也就是OSR入口点,同时包含了循环条件判断的一份拷贝;
·B3有两个后继基本块,B2和B4。如果B3末尾的循环条件满足那么会跳到B2,否则跳到B4;
·B4是方法的末尾,也就是负责返回的那块;
·B2是一个用来标记循环起点的loop predicate的块,跟-XX:+UseLoopPredicate涉及的优化相关,这里可以先不管它的具体内容;
·B1的唯一前趋基本块就是B2,实际上也是跟loop predicate相关的优化,也暂时不管;
·B5是我们所关注的循环的主体,循环条件融合在了B5的末尾。
如果读了上面的文字觉得晕头转向,那改为用伪代码表示的话,就是:
B3:
// OSR入口点要调用的一个辅助函数
OSR_migration_end();
// 循环条件:
if stopRequested then
goto B4 // 结束
goto B2 // 进入循环
// loop predicate相关
if loop predicate成立 then
// loop predicate失败,请求退回到解释器里继续执行,并且未来可能重新编译
// 具体内容省略
// 这是循环的主体
// 循环条件:
if stopRequested then
goto B4 // 结束
goto B5 // 继续循环
return
这样写容易理解些了不?
从IGV右侧工具栏的“Control Flow”一栏可以看到更抽象的控制流图:
留意到这图的B5右边有个“奇怪”的箭头。实际上这是一个从自己出发、指向自己的回环边,也就表现了B5包含有自己到自己的循环。
控制流弄清楚之后可以把“C2 Only Control Flow”的过滤去掉,重新观察完整的图来了解细节。
对细节感兴趣的同学可以在IGV的搜索框里搜“LoadUB”,
这是用来从内存读一个unsigned byte的节点,把它们提取出来:
就可以看到分别位于B3和B5的循环条件中对stopRequested的访问了。
通过观察“After Parsing”时的Ideal graph,我们可以知道编译至此循环体里还保留这那个循环条件。也就是说条件尚未被看作循环不变量提升到循环之外。
---------------------------------------------------------
然后我们再打开“After Parsing”之后的一个阶段,“Iter GVN 1”。
在这个图里搜“LoadUB”,会发现只有一个结果了:
留下的这个LoadUB是在B3里的;B5此时就变成只有:
B5:
// 这里是循环的主体
goto B5
也就是说此时C2已经把原本B5里对stopRequested的访问看作是跟B3的那个等价,于是就把B5的那个去除了。
在IGV里用图的diff也可以很方便的发现B5里的LoadUB被消除掉了。假设当前在看的图是“After Parsing”,那么在左侧的Outline窗口里:
选择“Differnce to current graph”,可以看到图之间的“差异”,像这样:
图里红色的节点就是被消除了的节点,虚线的边也是已不复存在的边。
B5里的LoadUB是在Iterative GVN()阶段被削除的。由PhaseIterGVN::optimize()输出的:
&
& 95 LoadUB === _ _ _
49 LoadUB === _
@precise klass StopThread: 0xc4968:Constant:exact+600 *, name=stopRequested, idx=4; #bool !orig=[95] !jvms: StopThread::access$000 @ bci:0 StopThread$1::run @ bci:2
这里第一行是已经被削除的节点的信息,第二行是替换它的节点的信息。
一个节点被削除的时候输入和输出边都会被切断,所以被削除的这个编号为95的LoadUB节点的输入变成了_ _ _(也就是3个输入边都是NULL),输出也空了;在被削除前95这个节点本来是:
95
LoadUB === _
[[ 97 ]]
正好在做IterativeGVN过程中,节点76被削除然后替换为节点7了:
&
& 76 Phi === _ _ _
7 Parm ===
83 ]] Memory
Memory: @BotPTR *+bot, idx=B !orig=[76] !jvms: StopThread$1::run @ bci:2
然后节点95就变成了:
95
LoadUB === _
[[ 97 ]]
这个节点的输入就跟节点49完全一样了。所以节点95接下来也就被GVN(全局值标号)看作跟节点49重复而削除掉了。
到此,无限循环就已经形成了。
---------------------------------------------------------
后面还有些进一步优化。最终生成的代码可以参考:
010
B1: # B3 B2 &- BLOCK HEAD IS JUNK
rsp, #48 # Create frame
nop # nop for patch_verified_entry
RBX, [RDX] # int
RCX, RDX # spill
call_leaf,runtime
OSR_migration_end
No JVM State Info
R10, precise klass StopThread: 0xfb9698:Constant:exact * # ptr
R11, [R10 + #600 (32-bit)] # ubyte ! Field StopThread.stopRequested
P=0.000000 C=
B2: # B2 &- B1 B2
top-of-loop Freq: 1e-035
rax, [rip + #offset_to_poll_page] # Safepoint: poll for GC
# StopThread$1::run @ bci:11
L[0]=_ L[1]=RBX
# OopMap{off=65}
B3: # N50 &- B1
Freq: 5e-007
addq rsp, 48 # Destroy frame
testl rax, [rip + #offset_to_poll_page] # Safepoint: poll for GC
054
这里的基本块跟“After Parsing”时IGV标记出来的基本块的对应关系是:
After Parsing
PrintOptoAssembly
用伪代码来表示PrintOptoAssembly的输出:
B1:
create_stack_frame()
OSR_migration_end()
if stopRequested then
safepoint_poll()
destroy_stack_frame()
safepoint_poll()
return
B2就是那个无限循环的本体了。
========================== 正题分界线 ==========================
例子就写到这里。还有人对细节感兴趣的话我再看看要不要补充点啥。
从汇编来看, 还真 hoisting, 这...真危险..
(哈哈, 对楼下R大的回复..哈哈...sorry, 我不是有意占楼的)
xiaoyu 写道从跟汇编上来, 还真 hoisting, 这...真危险..
啊我还没回复完你就回复了…
嗯,是真有hoisting。所以必要的同步要自己注意好。
while(!stopRequested) { //无限循环& 说明这种提升了。
&&& i++;
}
while(!stopRequested) {//在我的机器上循环到4000多结束& 说明这种没有提升。
&&& i++;
&&& System.out.println(i);
}
不管哪种情况,都得考虑同步/volatile
我晚上回去先看看 IGV的文档。
官网资料下载较慢 我把它传到我们服务器了,方便下载。
R大,有个问题,请问你的IdealGraphVisualizer是如何配置的?我显示的node就一个光秃秃的名称,比如AddP什么,没有下面的详细信息。
看到选项里有个Node Text,请问这里应如何配置,谢谢了。
& 上一页 1有没有什么app可以看环太平洋?最好可以缓存的!_百度知道
有没有什么app可以看环太平洋?最好可以缓存的!
提问者采纳
我去下载看看
可以用给好评,多谢!
没有啊,都是些预告片
在高清影院中动作片那栏
高清影院?是播放器?
只有14分钟的特辑
有的,你用电脑?
就在动作片里
pps我试过了
去91助手下
下载91助手?
嗯,在91助手里找pps
提问者评价
太给力了,你的回答完美解决了我的问题!
其他类似问题
为您推荐:
环太平洋的相关知识
其他3条回答
无敌播放器
画面太暗了,看不下去
浏览器里就可以看的
其实就是机器人打小怪兽
也不可以呢
这个我知道,但是画面太暗了,看不下去
哔哩哔哩动画
搜索栏啊直接打电影名
果断快播呀!
我知道,可是画面太暗,没法看
那百度影音嘞
那试试360影视
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁有没有谁有哪个可以看啪啪啪都网站
有没有谁有哪个可以看啪啪啪都网站

我要回帖

更多关于 有没有那个网址 的文章

 

随机推荐