1.当creator遇上protobufjs|相遇
2.好看的相遇相遇无限流电视剧
3.我的更多文章怎么设置成展现出来
4.金手指代码是什么?
5.七爪源码:在 C++ 中反转字符串的不同方法
6.2011好看的欧美**
当creator遇上protobufjs|相遇
在探索cocos H5开发的最佳实践时,我已离不开nodejs、源码npm和各种脚手架工具。软件首先,相遇相遇从初始化package.json文件开始,源码通过npm init命令创建一个文件,软件鲨源码网用于管理项目中的相遇相遇nodejs第三方模块。
在cocos creator项目中,源码protobufjs的软件使用至关重要。安装步骤如下:通过npm install protobufjs@5 --save命令引入protobufjs 5.x版本,相遇相遇若需要全局使用,源码可以使用npm install -g protobufjs@5。软件这个版本虽然不支持最新的相遇相遇6.x,但其动态编译功能在cocos creator中更为便利。源码
在creator项目中,软件我们以Player.proto文件为例,展示了如何动态编译文件,生成js对象。在静态语言中,我们会使用protoc命令将proto文件编译为c++/java代码,但在javascript中,protobufjs直接提供了动态编译的功能。
然而,当尝试在cocos-jsb环境中运行protobufjs时,可能会遇到问题。这涉及到javascript在浏览器、nodejs和cocos-jsb上的不同文件接口。在cocos-jsb,我们需要处理的是jsb.fileUtils.getStringFromFile接口,这与浏览器和nodejs的文件操作有所不同。
为了解决这个问题,可能需要修改protobufjs源码以适应cocos-jsb。此外,还需注意creator项目中资源路径的管理,通常需要将proto文件放在assets/resources/pb/目录下,并使用cc.url.raw获取正确的资源路径。
尽管通过修改源码可以解决问题,但并不是长久之计。为寻求更稳定的方法,我已创建了一个creator和protobufjs的示例项目,未做任何源码改动,链接如下:[github.com/ShawnZhang...](github.com/ShawnZhang...)。继续关注我的种苗溯源码系列文章《探索cocosH5正确的开发姿势》,以了解更多无需修改源码的解决方案和proto文件预编译的用法。
好看的无限流电视剧
无限流电视剧是一种非常受欢迎的题材,它通常涉及到时间旅行、平行宇宙、多元宇宙等概念。以下是一些好看的无限流电视剧推荐:
1. 《源代码》:这部剧讲述了一名士兵在一次任务中被送入一列火车的时间循环中,他必须不断重复同一段时间,直到找到炸弹的制造者并阻止爆炸。这部剧不仅有紧张刺激的剧情,还探讨了人性和命运的主题。
2. 《黑镜》:这是一部科幻剧集,每一集都是独立的故事,但都涉及到科技对人类社会的影响。其中有一些剧集涉及到无限流的概念,比如《白色圣诞》中的虚拟现实世界和《游戏结束》中的时间旅行。
3. 《西部世界》:这部剧讲述了一个未来的主题公园,其中的机器人能够模拟人类的情感和行为。然而,当这些机器人开始出现故障并展现出超出预期的行为时,故事发生了转折。这部剧不仅有精彩的剧情,还引发了对人工智能和道德的思考。
4. 《迷失》:这部剧讲述了一群幸存者在一座荒岛上的生活。他们不仅要面对自然环境的挑战,还要应对来自其他幸存者的威胁。剧中的时间线非常复杂,涉及到多个时间点和平行宇宙的概念。
5. 《时空恋人》:这部剧讲述了一对情侣在不同时间线的爱情故事。男主和女主分别生活在不同的时间里,但他们通过一本神秘的日记相遇并展开了一段跨越时空的爱情。这部剧不仅有浪漫的情节,还探讨了时间和爱情的关系。
以上是一些好看的无限流电视剧推荐,它们都有着扣人心弦的剧情和深入思考的主题。无论是对科技发展的担忧,还是对人性和命运的思考,这些剧集都能够给观众带来不同的观影体验。如果你对无限流题材感兴趣,不妨尝试一下这些剧集,相信会有意想不到的惊喜。
我的更多文章怎么设置成展现出来
在羽化上加入滚动字幕的Flash动画源码如下:
在网海中,我们的软件源码作用相遇是一种缘分。虽隔着屏幕,但每句问候都无比真挚。朋友的陪伴,让生活充满阳光。拥有朋友,即是拥有了一切,故有朋友,真好!
代码详解如下:
WIDTH: px; HEIGHT: px;
设置背景的宽高,需根据实际大小调整。
background=
指定背景的地址。
WIDTH: px; HEIGHT: px;
定义Flash动画显示区域的宽高,可自行设定。
src=
插入你喜欢的Flash动画地址。
height= width=
调整Flash动画的宽高,可根据需要自由设置。
FONT-SIZE: pt;
调节滚动字体大小,数值越大字体越大。
WIDTH: px; HEIGHT: px;
设定滚动字幕的宽度和高度,需按实际需求调整。
scrollAmount=3;
控制字幕滚动速度,数值越大速度越快。
常用颜色代码如下:
深红 #ff;大红 #ff;粉红 #ffcc;淡红 #ffff;绿色 #ccff;紫蓝 #ffff;** #ffff;金红 #cc;天蓝 #ffff;草绿 #cc;深蓝 #ff;橙色 #ff;深绿 #;白色 #ffffff;黑色 #;深褐 #。
具体操作步骤如下:
点击“发表文章”,进入文章发布界面,在标题栏输入目录,选中“显示源代码”选项,将上述代码粘贴至空白面板中,最后点击“发表文章”完成操作。
金手指代码是什么?
《口袋妖怪》:圣灰金手指代码大全如下:技能机器:
只要把所在位置上或全部改为,即可拥有每种技巧机个!
所在位置AA--A,一共个!
训练机序号 名称 获得场所 威力 PP
技巧训练机爆裂拳 在丹巴市(唐巴城)的道场主人那里得到。
技巧训练机头撞 在姥目森林(哈威森林)中获得,黄金市百货的5F也可以买到。
技巧训练机诅咒 由位于玉虫市的公寓中获得。 --
技巧训练机滚动 位于号道路的左侧。
技巧训练机吼叫 从在号道路的男子手上获得。 --
技巧训练机剧毒 由石竹市的道场主人杏子那里获得。 --
技巧训练机电磁炮 解决发电厂事件后,由所长那里得到。
技巧训练机岩碎 在第号道路获得,雷霆传说源码黄金市百货的5F也可以买到。
技巧训练机自我催眠 把No.从黄版传到金银版,把它身上的物品卸下, 便是了。 --
技巧训练机觉醒力量 在愤怒湖或是玉虫市的百货2F得到。 --
技巧训练机日本晴 黄金市广播塔解放后可以得到,也可以在玉虫市的百货得到。 -- 5
技巧训练机香甜气息 在姥目森林(哈威森林)北边的关卡,与右边的女人谈话。 --
技巧训练机鼾声 第号道路获得。
技巧训练机暴风雪 黄金市游戏中心枚交换。
技巧训练机破坏光线 玉虫市游戏中心枚交换。
技巧训练机冰结之风 从丁香镇(丁字镇)的道场主人手中得到。
技巧训练机守护 玉虫市百货的2楼元购买。--
技巧训练机祈雨 呆呆兽井的地下或在玉虫市百货2楼买到。-- 5
技巧训练机百万威力吸取 由玉虫市道场主人获得。
技巧训练机忍耐 烧毁的塔(宝塔)地下。 5
技巧训练机撒气 星期日在黄金市百货5楼获得。--
技巧训练机太阳光线 号道路下方。
技巧训练机钢之尾 由浅黄市道场主人得到。
技巧训练机龙之息吹 由熏烟市道场主人得到。
技巧训练机闪电 黄金市游戏中心枚交换。
技巧训练机地震 冠军道路。
技巧训练机报恩 星期日在黄金市百货5层获得。--
技巧训练机挖洞 在自然公园左下方。
技巧训练机精神干扰 玉虫市游戏中心得到或山吹市的超能力老人那里。
技巧训练机影子球 由槐树市道场主人得到。
技巧训练机扔泥 由桔梗市(归侨城)道场主人得到。
技巧训练机影分身 在玉虫市游戏中心枚交换。--
技巧训练机冷冻拳 黄金市百货5层元购买。
技巧训练机虚张声势 浅黄市(浅木市)灯塔5层中得到。--
技巧训练机梦话 黄金市百货地下二层。--
技巧训练机泥爆弹 号道路的关卡获得。
技巧训练机沙尘暴 号道路的民家或玉虫市百货2楼。--
技巧训练机大字火 黄金市游戏中心枚交换。
技巧训练机流星 连接道路的洞穴地下1层。
技巧训练机变圆 研钵山(巴奇山)中央入口进去后位于大瀑布洞穴中。--
技巧训练机闪电拳 黄金市百货5层元购买。
技巧训练机食梦 和睡在常磬市(时而镇)左侧的人交谈。
技巧训练机看穿 愤怒湖的左上方。-- 5
技巧训练机睡眠 冰之通道(冰天地)B2F。--
技巧训练机着迷 黄金市(黄金城)道场主人获得。凤凰源码分享--
技巧训练机盗窃 火箭队老巢的B2F。
技巧训练机钢之翼 号道路上的民家中。
技巧训练机火焰拳 黄金市百货5层元购买。
技巧训练机连续切 柏树镇道场主人得到。
技巧训练机恶梦 将号道路的警卫的信件送到号道路的胖子那里即可得到。--
秘传机器:
只要把秘传机所在位置改为即可!
所在位置AC--A,一共7个!(其实是个,只不过游戏程序不叫我们用那五个,招式太厉害了,破坏游戏平衡性!)
秘传机 序号 名称 获得场所 威力 PP
秘传训练机砍树 姥目森林(哈威森林)帮助寻找大葱鸭得到。
秘传训练机飞行 打败丹巴市(唐巴城)道场主人后与道场前的女子谈话。
秘传训练机冲浪 将槐树市五位使用不同伊贝的少女击败,与观众席上的男子交谈。
秘传训练机怪力 浅黄市(浅木市)民家获得。
秘传训练机闪光 花苞之塔(马丹蕾塔)长老处获得。--
秘传训练机漩涡 摧毁火箭队老巢后,小渡会给你。
秘传训练机攀瀑 冰之通道(冰天地)1层。
精灵球以及取得方法:
名字 颜色 功能 取得地点
精灵球 红 捕获率% 商店/道路
超级球 蓝 捕获率% 商店/道路/洞窟/不可思议的礼物
高级球 金黄 捕获率% 商店/道路/洞窟
大师球 绿 捕获率% 打完8个道馆,找空木博士拿/中头奖
A0 诱饵球 蓝 容易抓钓竿钓到的,把青色种子给工匠。
9F 等级球 浅咖啡 容易抓等级比自己高的,把红色种子给工匠。
A5 月亮球 灰 容易抓用月亮之石进化的,把色种子给工匠。
A4 友谊球 浅咖啡 抓到的怪兽容易亲近,把绿色种子给工匠。
9D 重量球 灰 容易抓比自己重量重的,把黑色种子给工匠。
A6 异性球 橙 容易抓姓别跟自己不同的,把桃色种子给工匠。
A1 速度球 蓝 容易抓速度快的,把白色种子给工匠。
B1 昆虫球 灰 抓虫大会用的,抓虫大会时会给你。
种子和具体位置:
名字 用途 取得地点
白色种子 可作为速度球的材料 哈威城的树。
红色种子 可作为等级球的材料 号道路的树。
青色种子 可作为诱饵球的材料 号道路的树。
黑色种子 可作为重量球的材料 号道路的树。
桃色种子 可作为异性球的材料 号道路的树。
5D 绿色种子 可作为友谊球的材料 号道路的树。
5C **种子 可作为月亮球的材料 号道路的树。
进化道具及位置:
物品名称 进化的pokemon 取得地点
8F 金属外套:飞天螳螂/大岩蛇(通信交换)
1.亚速亚号事件结束后
2.野生的小磁怪身上可能带有
龙之鳞片:海刺龙(通信交换)
1.研钵山2层
2.野生的墨海马/海刺龙/迷你龙身上可能带有
AC 升级卡:3D龙(通信交换)
山吹市
王者之印:呆呆兽/蚊香蝌蚪(通信交换)
1.呆呆兽之井(洞穴深处的那个人给的)
2.野生的呆呆兽/呆河马/蚊香蛙可能带有
火之石:六尾/卡蒂狗/伊布
拿六尾给正辉的爷爷看
水之石:蚊香蛙/大舌贝/海星星/伊布
拿海星星给正辉的爷爷看
雷之石:皮卡丘/伊布
拿皮丘给正辉的爷爷看
草之石:臭臭花/口呆花/蛋蛋
拿行路草给正辉的爷爷看
月亮之石:皮皮/胖丁/尼多力诺/尼多娜
1.妈妈会买给你
2.塔上瀑布
3.星期一晚月见山里的皮皮仪式
A9 太阳石:臭臭花/太阳种子
捉虫大赛第一名
其他道具:
道具前面是它的源代码,比如 就是有一个(就是)精灵球(就是),从A以后就是道具位置,注意,不要修改得超出道具栏了!
代码—正式名称—用途—中文版翻译名称
光粉 降低对手命中率. (装备) 海子球
自行车 旅行速度X2. 单车
月石 进化一些Pokemon 月石
中毒剂 治愈中毒的Pokemon 解毒
0A 烧伤剂 治愈烧伤的Pokemon 治烧伤
0B 冰冻剂 治愈冰冻的Pokemon 解冻
0C 催醒剂 把睡着的Pokemon叫醒 唤醒
0D 麻痹剂 治愈麻痹的Pokemon 解痹
0E 恢复药 恢复所有HP并治愈异常状态 恢复药
0F 最大补血剂 补满Pokemon的HP 金丹
超级补血剂 回复Pokemon的HP. 银丹
高级补血剂 回复的Pokemon的HP 红丹
补血剂 回复的Pokemon的HP 白丹
逃跑绳 在山洞中逃跑用 大年
除虫剂 走步不会遇到Pokemon 皮皮
完全PP回复 回复一个Pokemon的所有PP 表皮
火石 进化一些Pokemon 火焰石
雷石 进化一些Pokemon 雷之石
水石 进化一些Pokemon 水石
1A HP提升 提升一个Pokemon的HP 比秋
1B 蛋白质 提高Pokemon的攻击 牛磺
1C 铁 提高Pokemon的防守 挨汛
1D 碳水化合物 提高Pokemon的速度 沙波
1E 幸运拳套 提高幸运蛋命中要害的机率 其
1F 钙 提高Pokemon的特攻特防 卡思
神奇涛淦鼷 提高Pokemon一级 玛胡
X命中率 战斗中提高命中率 X爱
草石 进化一些Pokemon
金属粉 提高百变怪的防守(装备) 本参
金矿 纯金卖好价钱。 金块
皮皮娃娃 从野生Pokemon逃走 精灵垛
全治愈 治愈所有异常情况 福愈
复活 复活一个Pokemon并回复1/2 HP. 雷胡
精神草 完全复活一个Pokemon
守卫符 防止技能指数受敌人影响 沙事
2A 超级除虫剂 步不遇到Pokemon 拓者
2B 最大除虫剂 步不遇到Pokemon 大皮皮
2C 命中装置 战斗中提高命中要害机率 第雷
2E 新鲜水 回复HP 橙汁
2F 苏打水 回复HP 汁子
柠檬汁 回复HP 椰汁
X攻击 战斗中提高攻击 X击
X防守 战斗中提高防守 X防
X速度 战斗中提高速度 X速
X特殊 战斗中提高特攻特防 X力
硬币盒 可装枚硬币 吉姆
探测器 寻找看不见的物品
EXP分享器 分享经验值(装备) 学习装置
3A 旧钓竿 钓水系Pokemon用 竹杆钩
3B 好钓竿 较好的抓水系Pokemon用的钓竿 木杆钩
3C 银色羽毛 奇怪的银色羽毛 银叶子
3D 超级钓竿 最好钓水系Pokemon用的钓竿 铜杆钩
3E 提高PP 提高一个招式的最大PP
3F 回复PP2 回复一个招式的个PP
完全回复PP2 完全回复一个招式的所有PP 井尖
回复PP3 回复所有招式个PP 尖在
红色鳞片 红色暴鲤龙掉下的鳞片
全能药 治疗好任何Pokemon(剧情道具)
船票 乘船用 船票
神秘的蛋 从精灵爷爷那儿得到的蛋
透明铃铛 捕捉凤凰必带道具 比秋
银翅膀 发亮的银色翅膀 热牛奶
牛奶 回复HP 雪瓜汁
先制之爪 提高速度(装备) 灼灼灼
4A 防毒果实 治愈中毒(装备) 解毒果
4D 金色树叶 奇怪的金色树叶 金叶
4C 软沙子 提高地面系绝招威力(装备) 柔沙
4D 尖利的鸟嘴 提高飞行系绝招威力(装备) 尖啄
4E 防麻果实 治愈麻痹(装备) 解痹
4F 烧过的果实 治愈冰冻(装备) 烧果
冰过的果实 治愈烧伤(装备) 冰果
毒针 提高毒系绝招威力(装备) 仿毒
王者之印 可能惊吓对手(装备) 王印
苦果实 治愈混乱(装备) 苦果
清醒果实 治愈被催眠(装备) 薄果
红栗子 红栗子
小蘑菇 卖不了高价钱
大蘑菇 卖高价
银粉 提高虫系绝招威力(装备) 银粉
蓝栗子 蓝栗子
5B 钱戒指 双倍获得金钱(装备)
5C 黄栗子 黄栗子
5D 绿栗子 绿栗子
5E 避敌丸 装备后就难和Pokemon相遇了 凡票
5F 神秘的水滴 提高水系绝招威力(装备) 神滴
勺子 提高超能系绝招威力(装备) 白栗
白栗子 白栗子
黑腰带 提高格斗系绝招威力(装备) 黑栗
黑栗子 黑栗子
粉红栗子 粉红栗子
墨镜 提高邪恶系绝招威力(装备) 美尾
呆呆兽的尾巴 卖高价 粉带
粉红缎带 提高常规系绝招威力(装备) 长葱
短棍 卖低价 烟弹
6A 烟雾球 从野生Pokemon逃走(装备) 寒冰
6B 千年寒冰 提高冰系绝招威力(装备) 磁石
6C 磁铁 提高电系绝招威力(装备) 奇果
6D 奇迹果 治愈所有异常情况(装备) 小珠
6E 珍珠 卖低价
6F 大珍珠 卖高价
不变石 停止进化(装备) 身符
幽灵标签 提高鬼系绝招威力(装备) 护身符
愤怒湖馒头 回复HP 芝世
济符球 让人不可思议(游戏上是这么显示的) 世革
蓝色的卡 参加电台抽奖用的
奇异种子 提高草系绝招威力(装备) 攻芭
骨头 一种骨头,卖低价 芭凶
毅力缎带 可能防止死(装备) 凶区
能量粉 回复HP
7A 能量根 回复HP
7B 治愈粉 治愈所有异常情况
7C 复活药 复活Pokemon
7D 硬石头 提高岩石系绝招威力(装备) 炙弱
7E 幸运蛋 领取额外的经验值(装备)
7F 卡片钥匙 广播塔百叶窗的钥匙
机器零件 发电场被偷的零件
贸易券 好象是贸易中心用的
掉了的物品 金黄市模仿女孩掉了的娃娃
星尘 红色,卖高价。
星星碎片 卖非常高的价
地下室钥匙 打开门 他砂
车票 乘火车用。 砂仙
8A 木炭 提高火系绝招威力(装备) 贡字
8B 果汁 回复HP.
8C 瞄准镜 提高命中要害机率(装备)
8F 金属外套 提高钢铁类型绝招威力(装备) 顺晨
龙牙 提高龙系绝招威力(装备) 晨或
剩饭 在战斗中回复HP(装备)
神秘果实 回复PP
龙的鳞片 一种珍贵的龙类物品
超梦的遗传因子 提高攻击但会混乱
9C 圣灰 复活所有Pokemon
9E 鲜花邮件 印有鲜花(装备) 晨虎球
A3 心之水滴 提高特攻的奇怪球体(装备) 顺迪
A7 常规箱子 打开看看里面有啥
A8 神秘魔盒 打开看看里面有啥
A9 太阳石 进化一些Pokemon
AA 粉红缎带 提高常规系绝招的威力(装备) 汪及
AC 升级盒 Silph Co.制造的神秘箱子 闪轴
AD 树木果实 一种补血物品(HP,装备)
AE 黄金果实 一种补血物品(HP,装备)
AF 杰尼龟水壶 用来浇树用
B2 彩虹羽毛 彩虹颜色的神秘羽毛 外量
B4 砖型碎片 一种珍贵的碎片 少友
B5 冲浪邮件 邮件上印有乘龙(装备) 友泊
B6 淡蓝色邮件 上面印有迷你龙(装备) 泊宵
B7 肖像邮件 上面印有携带信件精灵 宵欠
B8 可爱邮件 印有心(装备) 欠左
B9 永世邮件 印有伊布(装备) 左电
BA 变形邮件 印有百变怪(装备) 电恨
BB 蓝天邮件 印有蓝天(装备)
BC 音乐邮件 印有超能鸟(装备) 于慢
BD 雾气信件 全则
七爪源码:在 C++ 中反转字符串的不同方法
在C++中反转字符串的方法有很多种,以下列举几种:
方法1:首先取出给定字符串中的最后一个字符,然后将其添加到新字符串中,以此类推,直至所有字符都添加完毕。这种方法简单易懂,时间复杂度为O(N),空间复杂度也为O(N)。
方法2:使用算法头文件中的内置函数进行反转,节省编程时间。同样为O(N)时间复杂度,但空间复杂度仅需O(1),比方法1更优。
方法3:使用双指针技巧。分配一个从字符串开始的指针l和一个从末尾开始的指针r,交换指针指向的字符,并向中心移动,直至两个指针相遇。时间为O(N)。
方法4:通过堆栈数据结构实现反转。将字符逐个压入堆栈,然后从堆栈中弹出并打印,以实现反转。时间复杂度O(N),空间复杂度为O(N)。
方法5:仅以相反的顺序打印字符串,而不改变其实体内容。从字符串的末尾开始打印至开始,实现此功能。若需真正反转字符串,则需用其他方法。
总结以上方法,无论是哪种实现方式,在C++中反转字符串,其核心思想都是通过迭代或借助数据结构实现字符的顺序颠倒。对于不同的编程需求,可能选择不同方法,但最终都会达到反转字符串的效果。
好看的欧美
**好看的欧美**在年有很多,以下是一些备受好评的推荐:
首先,我们不能错过《X战警:第一战》。这部**是《X战警》系列的前传,讲述了年轻时的X教授和万磁王如何结下深仇大恨的故事。影片中的特效和动作场面令人目不暇接,同时深入探讨了人性的复杂性和超能力对个体及社会的影响。
其次,《源代码》也是一部非常出色的**。影片讲述了一名军官通过特殊程序重复体验火车爆炸事件的最后八分钟,试图找出爆炸原因并阻止下一次爆炸的故事。这部**节奏紧凑,剧情扣人心弦,同时引发了观众对于时间、命运和自由的深刻思考。
另外,《午夜巴黎》是一部充满浪漫和幻想的**。影片讲述了一名年轻作家在巴黎度假时,意外穿越到一个神秘的时代,与历史上的文学巨匠和艺术家们相遇的故事。这部**画面美丽,情节独特,让人仿佛置身于一个梦幻的巴黎之夜。
最后,《帮助》是一部根据同名小说改编的**,讲述了世纪年代美国南方密西西比州一位年轻女子斯基特,携手两位黑人女性友人,共同发起了一场反种族歧视的“帮助”行动的故事。这部**以女性视角切入,展现了女性在种族歧视和社会压迫中所扮演的重要角色,同时呼吁观众关注社会公正和平等。
总之,年有很多好看的欧美**,这些**不仅让观众享受到了视觉和听觉的盛宴,同时也引发了观众对于人性、社会、历史等问题的深入思考。这些**不仅具有娱乐性,同时也具有深刻的思想内涵和文化价值。
**<源代码>讲的什么意思,没看懂。
现实中,主角本来的身体就只剩下了半截,靠维生设备维持着脑波之类的东西。那个瘸子科学家就用这点仅存的脑波进行试验。在火车上的是另外一个人,可能他们的脑波频率等很多特征都接近,就借用了他的身体去解除炸弹。由于平行理论,火车上的人在另外一个平行空间还活着。当主角的半截身体还活着时,主角的思维已经在火车上那个人身上了,切断维持半截身体的供给,半截身体死亡,主角的灵魂或思维就寄存在了火车上那个人身上了,以那个人的身份生活下去了。
扩展资料影片《源代码》是由邓肯·琼斯执导,杰克·吉伦哈尔、维拉·法米加、米歇尔·莫娜汉等人联袂出演。影片于年4月1日在美国上映。
影片讲述了一位在阿富汗执行任务的美国空军飞行员柯尔特·史蒂文斯,醒来时发现自己正处在一辆前往芝加哥的火车上,并就此经历的一系列惊心动魄的事件。
“咚,咚”“呼,呼”,急促的心跳声和喘息声震耳欲聋。一切都开始模糊,继而扭曲变形。然后,一阵尖锐的火车汽笛声,将柯尔特·斯蒂文斯上尉(杰克·吉伦哈尔 饰演)拉回了现实。窗外,是疾驰倒退的绿地。坐在他对面的女子(米歇尔·莫娜汉 饰演)疑惑地看着走神的他,又继续着话题,柯尔特突然觉得头皮发麻。
柯尔特意识到只有一种方法可以证明真相。他冲向洗手间,直愣愣地盯着里面的镜子,出现在镜子里的人,是一个身着呢子大衣、蓝色衬衫,眼中带着几分惊恐的中年男子。不是他自己,至少不是他印象中的自己。还没等他惊魂落定,一股强大的爆炸气流袭来,整列列车在烈火中被炸成碎片。猛然睁开双眼,柯尔特惊疑地看着四周,他发现自己身处一个独立的空间里,穿着本就属于他的军服。
参考资料源代码(美国年杰克·吉伦哈尔主演科幻片)百度百科
Tensorflow 编译加速器 XLA 源码深入解读
XLA是Tensorflow内置的编译器,用于加速计算过程。然而,不熟悉其工作机制的开发者在实践中可能无法获得预期的加速效果,甚至有时会导致性能下降。本文旨在通过深入解读XLA的源码,帮助读者理解其内部机制,以便更好地利用XLA的性能优化功能。
XLA的源码主要分布在github.com/tensorflow/tensorflow的多个目录下,对应不同的模块。使用XLA时,可以采用JIT(Just-In-Time)或AOT( Ahead-Of-Time)两种编译方式。JIT方式更为普遍,对用户负担较小,只需开启一个开关即可享受到加速效果。本文将专注于JIT的实现与理解。
JIT通过在Tensorflow运行时,从Graph中选择特定子图进行XLA编译与运行,实现了对计算图的加速。Tensorflow提供了一种名为JIT的使用方式,它通过向Tensorflow注册多个优化PASS来实现这一功能。这些优化PASS的执行顺序决定了加速效果。
核心的优化PASS包括但不限于EncapsulateXlaComputationsPass、MarkForCompilationPass、EncapsulateSubgraphsPass、BuildXlaOpsPass等。EncapsulateXlaComputationsPass负责将具有相同_xla_compile_id属性的算子融合为一个XlaLaunch,而XlaLaunch在运行时将子图编译并执行。
AutoClustering则自动寻找适合编译的子图,将其作为Cluster进行优化。XlaCompileOp承载了Cluster的所有输入和子图信息,在运行时通过编译得到XlaExecutableClosure,最终由XlaRunOp执行。
在JIT部分,关键在于理解和实现XlaCompilationCache::CompileStrict中的编译逻辑。此过程包括两步,最终结果封装在XlaCompilationResult和LocalExecutable中,供后续使用。
tf2xla模块负责将Tensorflow Graph转化为XlaCompilationResult(HloModuleProto),实现从Tensorflow到XLA的转换。在tf2xla中定义的XlaOpKernel用于封装计算过程,并在GraphCompiler::Compile中实现每个Kernel的计算,即执行每个XlaOpKernel的Compile。
xla/client模块提供了核心接口,用于构建计算图并将其转换为HloModuleProto。XlaBuilder构建计算图的结构,而XlaOpKernel通过使用这些基本原语描述计算过程,最终通过xla_builder的Build方法生成HloComputationProto。
xla/service模块负责将HloModuleProto编译为可执行的Executable。该过程涉及多个步骤,包括LLVMCompiler的编译和优化,最终生成适合特定目标架构的可执行代码。此模块通过一系列的优化pass,如RunHloPasses和RunBackend,对HloModule进行优化和转换,最终编译为目标代码。
本文旨在提供XLA源码的深度解读,帮助开发者理解其工作机制和实现细节。如有问题或疑问,欢迎指正与交流,共同探讨和学习。期待与您在下一篇文章中再次相遇。