首页 文章 精选 留言 我的

精选列表

搜索[大模型API],共10000篇文章
优秀的个人博客,低调大师

又一大波新功能已到达,总有一项值得你深爱!

具体AssetBundle使用情况 包括总体使用数量走势、每帧/场景中AssetBundle的具体使用情况、AssetBundle的资源加载数量等。具体功能如下: 1)AssetBundle文件在内存中的驻留情况,从而查看是否存在AssetBundle“泄露”的问题,进而让用户直接看到AssetBundle的使用是否合理。 下图的AssetBundle使用数量在不断上升,很可能存在AssetBundle资源泄露问题。 2)具体AssetBundle信息展示,包括具体的AssetBundle名称、存放的位置、加载方式、内存中的驻留时长和由该AB加载出的资源数量。 通过查看驻留帧数,用户可以快速看到哪些AssetBundle在游戏运行时使用较多,而哪些使用较少。同时通过加载的“资源数量”,可以查看是否存在AssetBundle被加载,实际上却没有起到作用的情况。(还占内存呢!) 点击每个AssetBundle文件,则可以查看其在项目运行时的具体调用情况,这样,配合项目截图则可以快速定位哪些AssetBundle的加载是否过于频繁、是否合理。 目前,以上模块仅支持Android移动设备。 其他新功能更新日志 一、粒子系统资源查看 1)总粒子系统数量 下图中,蓝色曲线为每一时刻的总体粒子系统数量,紫色曲线为每一时刻的Active粒子系统数量。所以需要建议用户在观察总体使用量时,也要特别注意真正运行的粒子系统比例。如果比例很低(<20%),那么需要考虑一下内存中是否加载了过多的粒子系统。 2)每帧实际Active的粒子数量 下图表格中Active数量峰值为0的,表示在全部检测时间内,我们并未检测到该粒子系统被使用过,因此,对于此类情况,研发团队需特别关注。 二、 设备内存 在“硬件参数解析”模块,添加了“设备内存”的显示。对于安卓平台,我们显示了PSS(Proportional Set Size)值,Private Dirty值,以及Unity中的Reserved Total值作为对照,供研发团队参考。 目前,该参数仅支持Android移动设备。 三、报表日期对照功能,方便对比之前的报告数据 该想法源自于UWA使用者,虽然看似微不足道但非常贴心方便!在此,小编感谢这些使用者的建议,毕竟在吐槽之余没有放弃拯救我们的审美设计能力。如果可以,让吐槽来得更猛烈些吧,我们海纳百川、从善如流! 原文出处:侑虎科技 本文作者:admin 转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

优秀的个人博客,低调大师

【开发者的2018】GAN、AutoML、统一框架、语音等十大趋势

GAN与造假 虽然生成对抗网络几年前就出现了,我对它是相当怀疑的。几年过去了,即使看到GAN在生成64x64分辨率的图像方面取得了巨大的进步,我对它仍是怀疑的。在阅读了一些数学文章之后,我更加怀疑了,因为这些文章说GAN并没有真正了解分布。但在2017年,事情有所改变。首先,一些新的有趣的架构(例如CycleGAN)和数学上改进的架构(例如Wasserstein GAN)让我实践了一些GAN网络,它们的表现一般,但在完成这两个程序之后,我确信我们可以,并且应该使用GAN来生成东西。 首先,我非常喜欢NVIDIA的一篇关于生成全高清图像的研究论文,生成的图像看起来非常真实(与一年前的64x64分辨率的令人毛骨悚然的人脸相比): 还有很多GAN在游戏行业的应用,例如用GAN生成游戏场景,英雄乃至整个世界。而且我认为我们必须意识到全新的造假水

优秀的个人博客,低调大师

Android Day06四大组件之Activity多页面跳转和数据传递

1.什么是Activity 官方文档是这么说的:AnActivityis an application component that provides a screen withwhich users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface. The window typically fills the screen, but may be smaller than the screen and float on top of other windows. 大致意思是说:Activity是一个应用程序组件,给用户提供一个屏幕让用户可以与之交互做一些事 情。 2.Activity的生命周期 下面这张图是官方文档提供的Activity的生命周期的图: ·onCreate 方法 当Activity启动的是调用 ·onDestroy方法 当Activity销毁的时候调用 ·onStart 方法 当Activity可见的时候调用 ·onStop 方法 当Activity 不可见的时候调用 ·onResume 方法 当Activity上的按钮 获得焦点 可以被点击的时候调用 ·onPause方法 当Activity 上的按钮 失去焦点 按钮不可以被点击的时候调用 ·onRestart 方法 当界面被重新加载的时候调用 注意这个方法 ■手机按键对应的Activity生命周期的回调方法 如果点击BACK键,会调用Activity的onPause()、onStop()、onDestroy()方法,Activity 会注销掉。 如果点击HOME键,会调用Activity的onPause()、onStop()方法,但不会执行onDestroy() 方法,程序会运行在后台。如果应用程序没有被系统杀死,那么再点击应用程序图标会调用Activity的onRestart()、onStart()、OnResume()方法。 ■特殊的回调方法组合 如果打开第一个Activity之后,不关闭它,开启另外一个Activity(非透明的),会调用第一个Activity的onPause()、onStop()方法。 如果打开第一个Activity之后,不关闭它,开启另外一个Activity(透明的),会调用第一个 Activity的onPause()方法,而不会去调用onStop()方法,因为第一个Activity还是可见的。如果关 闭透明的Activity,第一个Activity只会回调onResume()方法。 ■切屏对应的Activity生命周期的回调方法 手机在切屏的时候,会先销毁,再创建.走onPause()、onStop()、onDestroy()方法,再走onCreate ()、onStart()、onResume()方法。这一过程就相当于关闭并重新进入应用一样,那么如何防止手机 在切屏时生命周期发生改变呢? 第一种方式:把Activity页面的朝向写死,通过这个属性 android:screenOrientation="portrait"portrait代表竖屏 landscape代表横屏 朝向写死,在手机上方向是不能改变的,但是在AVD上仍可以切屏,只是生命周期没有变化。 第二种方式:android:configChanges="orientation|keyboardHidden|screenSize" 3.Activity的清单配置 如果想让Activity成为应用程序的入口,需要将activity的意图过滤器配置如下: 1 2 3 4 < intent-filter > < action android:name = "android.intent.action.MAIN" /> < category android:name = "android.intent.category.LAUNCHER" /> </ intent-filter > Android允许程序有多个activity作为应用程序的入口,只要activity配置了以上的意图过滤器,就会在手机桌面上创建多个应用程序图标,点击图标会进入对应的activity界面。 如果activity节点没有设置自己的label和icon,会默认使用application节点的label和icon。 4.Activity的页面跳转及数据传递 拓展:话说android Activity之间数据传递 http://blog.csdn.net/maylian7700/article/details/7323993 注意的问题,序列化的类中还有自定义的类,则这个类也要序列化,否则会出错. ■启动Activity传数据和取数据 本Activity:传数据,通过Intent对象的setData()和putExtra()方法封装数据至Intent对象。 被调用的的Activity:取数据,通过Activity类的getIntent()方法先得到开启这个Activity的 Intent对象,也就是本Activity里传数据用到的Intent对象,然后通过 Intent对象的getXxxExtra()方法得到数据。 ■启动Activity的2种方式 第一种:不需要被启动的Activity返回数据 startActivity(intent); 第二种:需要被启动的Activity返回数据 startActivityForResult(intent, int类型的请求码); 对于第二种Activity的启动方式,需要思考的两个问题? 1)被调用的Activity怎么返回数据? 首先,调用者Activity启动被调用的Activity的方式是 startActivityForResult(intent,int类型的请求码); 其次,在被调用的Activity里面,创建Intent对象,将要返回的数据封装进Intent对 象,调用Activity类的setResult(int resultCode,Intentdata)方法返回Intent对象。 如: 1 2 3 4 //将数据返回 Intentintent= new Intent(); intent.putExtra( "phone" ,phone); setResult( 10 ,intent); 2)调用者Activity怎么获取被调用的Activity所返回的数据? 通过复写Activity的onActivityResult方法可以得到其它的一个或多个Activity返 回的数据. 如: 上面的截图是Android官方文档的截图,利用了双重判断确定是哪个对象返回的数据,这样显 得更加严密. 返回的数据就存储在方法中的参数data中,调用Intent对象的方法取出即可. 5.应用1_短信大全 需求:将一些好的短信显示到ListView上,点击某一条短信,就跳到手机的短信发送页面,并把 ListView选中条目的内容添加到短信发送页面的短信内容中. 分析:这个需求首先涉及到ListView的使用,然后跳到手机短信发送页面,涉及到隐式意图启动系 统应用,并且要将本应用的数据传递到系统应用里,涉及到页面跳转和数据传递. 效果图: 假如我点击了ListView短信列表的第2条短信,然后就跳转到短信发送页面 核心代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public void onItemClick(AdapterView<?>parent,Viewview, int position, long id){ //得到点击的item对应的数据 Stringmsg=objects[position]; //利用隐式意图,跳转到短信发送页面。 //怎么写过滤条件,查源码。。。。 /*<intent-filter> <actionandroid:name="android.intent.action.SEND"/> <categoryandroid:name="android.intent.category.DEFAULT"/> <dataandroid:mimeType="text/plain"/> </intent-filter>*/ Intentintent=newIntent(); //设置意图对象的过滤条件 intent.setAction("android.intent.action.SEND"); intent.addCategory("android.intent.category.DEFAULT"); intent.setType("text/plain"); //传递数据给短信发送器 intent.putExtra("sms_body",msg); /* *不小心用了setDataAndType(Uri.parse(msg),"text/plain");结果短信发送器的联系人处是data,发送内容什么也没有。 **/ startActivity(intent); } 那么问题来了,上面意图对象的过滤条件及传递数据格式我是怎么知道的呢? 1)先打开Logcat,然后打开手机短信发送页面,会看到Locat上打印这样一行信息(如果没有 打印任何信息,先安装一个自己的应用,然后重新打开系统的短信发送页面。): 2)然后去系统应用源码里找到短信发送应用Sms,在清单文件里找到ComposeMessageActivity 的配置 短信发送页面有很多的过滤器,都是用于发现不同格式数据的(用mimetype属性来约束), 我们这里就只需要文本类型的数据,就选择mimetype为text/plain的进行过滤了。 知道了意图对象的过滤器,那么就可以为意图对象设置过滤信息 3)但是,怎么给intent传递数据呢?那么就得看短信发送页面的Activity是如何获取调用 它的Intent的数据的? 通过在ComposeMessageActivity.java里搜索getStringExtra可以得到短信发送器是根据 sms_body键名来获取短信内容的。 所以Intent在putExtra时采用的键名是“sms_body”。 6.应用2_短信发送器 需求:做一个如下图所示的短信发送器,布局采用混合线性布局。 功能1:在主UI界面中点击“添加联系人”那个+号按钮,就弹出一个窗体列出联系人(是 模拟数据,学到内容提供者即可获取手机真正的联系人),选择一个联系人后关闭 选择联系人页面,并将选择的联系人电话返回显示到主UI界面的文本框中。 功能2:在主UI界面中点击“插入模板”按钮,就弹出一个窗体列出一些短信,选择一条 短信后关闭短信大全页面,将将选择的短信返回显示到主UI界面的短信内容文本框 分析:上面的需求,也涉及到页面跳转和数据传递,不同的是被调用的页面在关闭的同时还要 向调用者(主UI界面)返回选择的数据。那么,这个应用要求的技术有以下几点: 1)主UI界面在启动其它Activity的时候,应当使用startActivityForResult的方式,并 复写Activity的onActivityResult方法。 2)两个返回数据的ListView都要设置item点击事件,在事件中返回数据并关闭页面。 3)发送短信的功能 核心代码: 1)短信模板页面 因为ListView只需显示单列数据,适配器就直接使用ArrayAdapter了。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 //模拟数据 final String[]objects={短信内容,为节省空间就不写了。}; //得到listview ListViewlv_templates=(ListView)findViewById(R.id.lv_templates); //绑定lv的适配器,用ArrayAdapter。 lv_templates.setAdapter( new ArrayAdapter<String>( this ,R.layout.item_activity_sms_template,R.id.item,objects)); //注册lv的item点击事件 //要实现的逻辑:获取数据,返回数据,关闭当前activity lv_templates.setOnItemClickListener( new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?>parent,Viewview, int position, long id){ //得到数据 Stringcontent=objects[position]; //通过intent返回数据 Intentintent= new Intent(); intent.putExtra( "content" ,content); setResult( 20 ,intent); //关闭当前activity finish(); } }); 2)选择联系人页面 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 //模拟数据 final List<Map<String,String>>lists= new ArrayList<Map<String,String>>(); for ( int i= 0 ;i< 20 ;i++) { Map<String,String>map= new HashMap<String,String>(); map.put( "name" , "联系人" +i); map.put( "phone" , new Random().nextInt( 252523 )+ "" ); lists.add(map); } //得到listview ListViewlv_contacts=(ListView)findViewById(R.id.lv_contacts); //绑定lv的适配器,用SimpleAdapter,可以添加多个textview。 lv_contacts.setAdapter( new SimpleAdapter( this ,lists,R.layout.item_activity_contacts, new String[]{ "name" , "phone" }, new int []{R.id.tv_name,R.id.tv_phone})); //注册lv的item点击事件 //要实现的逻辑:获取数据,返回数据,关闭当前activity lv_contacts.setOnItemClickListener( new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?>parent,Viewview, int position, long id){ //拿到相应item的数据,通过lists集合,只要电话号码。 Stringphone=lists.get(position).get( "phone" ); //将数据返回 Intentintent= new Intent(); intent.putExtra( "phone" ,phone); setResult( 10 ,intent); //关闭当前activity finish(); } }); 3)主UI页面 获取模板页面和联系页面数据并显示 1 2 3 4 5 6 7 8 9 10 protected void onActivityResult( int requestCode, int resultCode,Intentdata){ //通过resultCode来区别不同的activity返回的intent对象 if (resultCode== 10 ) { et_name.setText(data.getStringExtra( "phone" )); } else if (resultCode== 20 ){ et_content.setText(data.getStringExtra( "content" )); } } 发送短信 通过SmsManager这个类,注意它的获取方式是通过SmsManager.getDefault方法 与打电话不同,打电话是通过隐式意图来调用的。 记得要在清单文件里加上权限: <uses-permission android:name="android.permission.SEND_SMS"/> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public void send() { //TODO短信发送 //得到联系人和发送内容 Stringname=et_name.getText().toString().trim(); Stringcontent=et_content.getText().toString().trim(); //利用一个类SmsManager来发送短信 注意不要用过时的SmsManager SmsManagersmsManager=SmsManager.getDefault(); //短信内容过长,就得切割之后再一条条发送。 ArrayList<String>divideMessage=smsManager.divideMessage(content); for (Stringmsg:divideMessage) { smsManager.sendTextMessage(name, null ,msg, null , null ); } } 7.Android中的任务栈 栈 :先进后出 队列 先进先出 任务栈 :是用来维护Activity的 ,| Activity是用来维护用户的操作体验的 打开一Activity 叫 进栈 关闭一个Activity 出栈 我们用户操作的Activity 永远是栈顶的Activity 说我们应用程序退出了 实际上是任务栈清空了 一般情况下 一个应用程序对应一个任务栈 8.Android中4种启动模式 1.android:launchMode="standard"(默认) 2.singletop 单一顶部模式 在activity的配置文件中设置android:launchMode="singleTop" 如果任务栈的栈顶存在这个要开启的activity,不会重新的创建activity,而是复用已经存在 的activity。保证栈顶Activity如果存在,不会重复创建。 应用场景:浏览器的书签 3. singetask 单一任务栈,在当前任务栈里面只能有一个实例存在 当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,如果有实例存在就复用 这个已经存在的activity,并且把这个activity上面的所有的别的activity都清空,复用这个已经 存在的activity。保证整个任务栈里面一个Activity只有一个实例存在 应用场景:浏览器的activity 如果一个activity的创建需要占用大量的系统资源(cpu,内存)一般配置这个activity为 singletask的启动模式。webkit内核 c代码 4.singleInstance启动模式非常特殊, activity会运行在自己的任务栈里面,并且这个任务栈里面 只有一个实例存在 如果你要保证一个activity在整个手机操作系统里面只有一个实例存在,使用singleInstance 应用场景: 来电页面有道词典 和Activity相关的其它技术点: 1.当 Activity 以全屏模式运行时,如何允许 Android 系统状态栏在顶层出现,而不迫使 Activity 重新布局让 出空间? http://www.zhihu.com/question/19760889 本文转自屠夫章哥 51CTO博客,原文链接:http://blog.51cto.com/4259297/1678564,如需转载请自行联系原作者

优秀的个人博客,低调大师

作为开发者,视频的生产、分发和消费三大环节,你该在意什么?

一段视频,从摄像头采集信号,直至在显示器播放,中间需要经历很多环节的处理,作为开发者,相信你一定遇到过这些问题: 用户自己拍出来的视频清晰度不够高,观感不佳,怎么办?各平台生产视频越来越快,如何提升编辑和转码效率,赶超对手? 视频内容越来越多,人工鉴黄根本忙不过来,无解了吗?我的视频的良心巨制,怎么能360度无死角覆盖海内外用户?如何保护版权内容,提升视频传输过程中的安全性?全平台上线视频能力,老板让我2周内搞定,怎么办?用户和带宽增长迅速,我们的业务是否有足够的扩展性?............ 那么作为开发者,在视频处理的每个环节中,我们如何聚焦核心业务指标,运用解决方案来规避以上问题呢? 在刚刚过去的云栖大会视频多媒体分论坛之上,阿里云资深技术专家李彬进行了《轻松构建视频全链路,实现商业变现》为题的主题演讲,向在场的开发者阐述了视频

优秀的个人博客,低调大师

研发效能主题专场五大亮点抢先看

随着云计算、大数据、AI智能等前沿科技的发展,传统的研发模式,越来越难满足企业快速发展的需求。研发效能也成了继商业模式、技术突破之后的另一核心竞争力。为了让更多企业掌握研发效能体系快速升级之道,阿里云云效在2017杭州云栖大会期间,从研发效能峰会、企业高效研发实践分论坛、代码规约和DevOps挑战赛等方面,全面提供研发效能理念和技术指导,让用户全程感受研发效能的技术魅力! 看点一:阿里巴巴Java规约插件全球首发 为了帮助开发者更好提高编码效率,基于《阿里巴巴Java开发手册》内容, 阿里巴巴独立研发一套自动化IDE检测插件,该插件将于10月14日上午9:00在研发效能峰会场(B-2)进行全球首发。 目前官方透露出的首发嘉宾阵容强大,包括阿里巴巴研究员毕玄、玄难、索尼、孤尽(代码规约作者)、多隆(淘宝代码第一人)、晗光(代码规约英文

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册