首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

国内首个深度学习开发SDK发布:深鉴科技对标英伟达TensorRT

本文来自AI新媒体量子位(QbitAI) AI芯片厂商开始意识到,AI芯片的计算性能再好,失去完备的软件包工具链的支持,也将丧失优势、举步维艰。 此种情况下,抢滩软件生态至关重要。 芯片业巨头英伟达率先推出深度学习软件包TensorRT。它相对简单易用,在深度学习算法推理阶段能将GPU的计算能力更大程度释放出来。得益于软件包的助力,GPU的应用范围从图像视频领域扩展到金融行业,最后扩展到计算需求量大的AI、深度学习领域。 如果说英伟达的GPU是个性能强大的火箭,那么TensorRT就是送它到深度学习的助推器,软件包对AI芯片的重要性不言而喻。 成立一年半的深鉴科技开始也没想到,自主研发的DNNDK一不小心就对标了英伟达的TensorRT。 这套面向AI异构计算平台DPU(Deep-learning Processor Unit,深度学习处理器

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

张高兴的 Xamarin.Forms 开发笔记:Android 快捷方式 Shortcut 应用

一、Shortcut 简介 Shortcut 是 Android 7.1 (API Level 25) 的新特性,类似于苹果的 3D Touch ,但并不是压力感应,只是一种长按菜单。Shortcut 是受启动器限制的,也就是说国内大厂的定制系统大多数是不支持的,那些所谓的可以 pin 在桌面上的应用功能的快捷启动图标本质上就是 Shortcut 。 二、Shortcut 在 Xamarin.Forms 中的实现分析 本文讨论的是动态 Shortcut 实现。 实现方式无非两种思路,一种 Native to Forms ,另一种 Forms to Native 。博主最开始考虑的是 Forms to Native ,但没成功。在设置 ShortcutInfo 时需要一个 Intent ,其中一个构造函数为 public Intent(Context packageContext, Type type); 看着很容易,只要传入一个 Content 以及 把对应的页面 typeof 一下即可,但会抛出异常。原因是传入的 Forms Page 类并不是 Java 的原生类型。查阅 Xamarin.Android 的相关文档发现,这个 Type 是必须继承 Activity 类的。那么,所有的 Forms 页面均不可传入,Forms to Native 这条路也就不能走了。 Native to Forms 呢? 既然是需要依赖 Activity 的,那就通过新建一个 Android Activity 去调用 Forms 页面。 三、代码实现 下面新建一个空的 Cross-Platform 项目 ShortcutDemo ,使用 Shared Project 共享代码。(GitHub:https://github.com/ZhangGaoxing/xamarin-forms-demo/tree/master/ShortcutDemo) 修改 Shared Project 添加两个 ContentPage 用作测试。 修改 Xamarin.Android 添加两个活动,ShortcutContainerActivity.cs 与 FormsActivity.cs 。 ShortcutContainerActivity.cs ShortcutContainerActivity.cs 用来作为展示 Forms 页面的跳板,因此将其继承的 Activity 改成 global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 。同时把 OnCreate 的代码改成如下所示 protected override void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); Intent intent = Intent; // 获取传进来的页面名称 string pageName = intent.GetStringExtra("PageName"); var app = new App(); // 设置显示的页面 switch (pageName) { case "Page1": app.MainPage = new ShortcutDemo.Views.Page1(); break; case "Page2": app.MainPage = new ShortcutDemo.Views.Page2(); break; default: break; } LoadApplication(app); } 要注意的是,顶部的 Activity 特性标签要改动,除了 MainLauncher 要改为 false 以外,其他的全部要和 MainActivity.cs 里的一样,不然会抛出异常,可能是主题不统一的原因。 [Activity(Label = "ShortcutDemo", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = false, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] FormsActivity.cs FormsActivity.cs 作为正常启动应用的活动,只是将其从 MainActivity.cs 中剥离开来。代码如下: [Activity(Label = "ShortcutDemo", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = false, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] public class FormsActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App()); } } MainActivity.cs MainActivity.cs 作为应用程序的入口,由于 Forms 的初始化以及加载已被剥离至 FormsActivity.cs 中,可将 MainActivity.cs 的继承改为 Activity 类。 在其中添加一个 SetShortcut() 方法用于设置 Shortcut 。首先添加一个 List 用于存放 ShortcutInfo,以备最后动态设置 Shortcut 作为参数传入。 List<ShortcutInfo> shortcutInfoList = new List<ShortcutInfo>(); 接下来实例化一个 Intent 。其中 SetClass 将跳板活动 ShortcutContainerActivity 传入;SetAction 是必须设置的,要不然报错都不知道怎么回事;PutExtra 用于向下一个活动传递参数,我们这里传入的名称用于在跳板活动里设置 MainPage 。 Intent page1 = new Intent(); page1.SetClass(this, typeof(ShortcutContainerActivity)); page1.SetAction(Intent.ActionMain); page1.PutExtra("PageName", "Page1"); 下面实例化 ShortcutInfo 。SetRank 为设置排序序号,最多显示5个 Shortcut ,也就是 0-4 ;SetIcon 为设置图标;SetShortLabel 与 SetLongLabel 则是设置长名称与段名称;SetIntent 则把上一步实例化的 Intent 传入;最后将其加入 List 。 ShortcutInfo page1Info = new ShortcutInfo.Builder(this, "Page1") .SetRank(0) .SetIcon(Icon.CreateWithResource(this, Resource.Drawable.Page1)) .SetShortLabel("Page1") .SetLongLabel("Page1") .SetIntent(page1) .Build(); shortcutInfoList.Add(page1Info); 最后获取 ShortcutManager 进行动态设置 Shortcut ShortcutManager shortcutManager = (ShortcutManager)GetSystemService(Context.ShortcutService); shortcutManager.SetDynamicShortcuts(shortcutInfoList); 因此全部的 MainActivity.cs 的代码如下: [Activity(Label = "ShortcutDemo", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] public class MainActivity : Activity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetShortcut(); StartActivity(typeof(FormsActivity)); } private void SetShortcut() { List<ShortcutInfo> shortcutInfoList = new List<ShortcutInfo>(); Intent page1 = new Intent(); page1.SetClass(this, typeof(ShortcutContainerActivity)); page1.SetAction(Intent.ActionMain); page1.PutExtra("PageName", "Page1"); ShortcutInfo page1Info = new ShortcutInfo.Builder(this, "Page1") .SetRank(0) .SetIcon(Icon.CreateWithResource(this, Resource.Drawable.Page1)) .SetShortLabel("Page1") .SetLongLabel("Page1") .SetIntent(page1) .Build(); shortcutInfoList.Add(page1Info); Intent page2 = new Intent(); page2.SetClass(this, typeof(ShortcutContainerActivity)); page2.SetAction(Intent.ActionMain); page2.PutExtra("PageName", "Page2"); ShortcutInfo page2 = new ShortcutInfo.Builder(this, "Page2") .SetRank(1) .SetIcon(Icon.CreateWithResource(this, Resource.Drawable.Page2)) .SetShortLabel("Page2") .SetLongLabel("Page2") .SetIntent(page2) .Build(); shortcutInfoList.Add(page2); ShortcutManager shortcutManager = (ShortcutManager)GetSystemService(Context.ShortcutService); shortcutManager.SetDynamicShortcuts(shortcutInfoList); } } 四、效果图

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

Tech Insight携阿里云Link物联网平台助力实现“IoT全栈开发

12月19日上午9点,Tech Insight·北京峰会,在2017北京云栖大会国家会议中心准时拉开帷幕。作为年内压轴技术论坛,吸引了大量技术决策者,和一线的工程师、运维工程师等前来交流学习。继10月10日杭州Tech Insight后,北京各场再次爆满。而首次登录Tech Insight的物联网,更是坐无虚席。 万物互联,物联网快速掘起。设备数量爆发式增长,应用数量呈粉末化状态,市场研究公司Gartner称,2017年全球物联网设备数量将达到84亿,2020年物联网设备数量将达到204亿。预计到2020年中国物联网市场的产业规模将达到2万亿。 要实现这样的互联互通,物联网设备需采用物联网操作系统。物联网操作系统首要解决的是把传统的物连接到云上并支持物与物的连接,但当物被连接起来后,连接安全,数据安全,系统安全显得至

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

Android GIS开发系列-- 入门季(5) FeatureLayer加载本地shp文件与要素查询

FeatureLayer是要素图层,也是Arcgis的主要图层。用这个图层可以加载本地的shp文件。下面我们看怎样加载shp文件到MapView中。查看ArcGis API可知FeatureLayer的构造方法要传一个FeatureTable,而FeatureTable可用子类ShapefileFeatureTable来实现。代码如下,其中shpPath为shp文件的本地路径。\ privatevoidinitLayer(){ try{ featureLayer=newFeatureLayer(newShapefileFeatureTable( shpPath)); featureLayer.setRenderer(newSimpleRenderer(newSimpleFillSymbol( Color.GREEN))); mapView.addLayer(featureLayer); }catch(Exceptione){ e.printStackTrace(); } } 效果图如下。 这样就可以很简单地加载shp文件了。下面我们来学习一下FeatureLayer的查询。 一、FeatureLayer点击查询主要用到的方法是featureLayer.getFeatureIDs(float x, float y, int tolerance),方法与上一讲GraphicsLayer的查询差不多。可以获取每个要素的属性属性值。 privatevoidhandleSingleTap(floatx,floaty){ long[]featureIds=featureLayer.getFeatureIDs(x,y,8); if(featureIds!=null&&featureIds.length>0){ for(longid:featureIds){ com.esri.core.map.Featurefeature=featureLayer.getFeature(id); Map<String,Object>attrs=feature.getAttributes(); Set<Entry<String,Object>>setEntry=attrs.entrySet(); for(Entry<String,Object>entryItem:setEntry){ Log.e(TAG, entryItem.getKey()+"===="+entryItem.getValue()); } } } } 二、利用FeatureTable查询,这是FeatureLayer特别的地方。比如在一个shp文件中,有多个要素,我们知道有每个要素中有name这个属性,怎样快速查询name为shanghai的要素呢?要用到FeatureTable的queryFeatures(QueryParametersquery,CallbackListener<FeatureResult> callback)方法或者是queryIds(QueryParametersquery,CallbackListener<long[]> callback)这个方法。 privatevoidqueryTable(){ FeatureTablefeatureTable=featureLayer.getFeatureTable(); QueryParametersparameters=newQueryParameters(); //查询条件,有点像数据库中的查询 parameters.setWhere("name='shanghai'");<spanstyle="white-space:pre"></span>Future<long[]>queryIds=featureTable.queryIds(parameters,newCallbackListener<long[]>(){ @Override publicvoidonError(Throwablearg0){ //TODOAuto-generatedmethodstub } @Override publicvoidonCallback(long[]arg0){ //TODOAuto-generatedmethodstub } }); try{ long[]Ids=queryIds.get(); if(Ids!=null&&Ids.length>0){ for(inti=0;i<Ids.length;i++){ Featurefeature=featureLayer.getFeature(Ids[i]); Log.i(TAG,feature.getAttributes().get("name")+""); } } }catch(InterruptedExceptione){ e.printStackTrace(); }catch(ExecutionExceptione){ e.printStackTrace(); } 这样就可以快速查询到某个具体的要素。 Code for all 没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。 本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7751880.html ,如需转载请自行联系原作者

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

ASP.NET企业开发框架IsLine FrameWork系列之三--七种武器

接上文 IsLine FrameWork Provider介绍 其中IsLine.Data、IsLine.AppLog是我要重点介绍的,不过现在先来简单说说各个Provider的作用。 DataProvider 与其他框架一样,DataProvider为项目提供了与数据库交互的能力,它的优点在这里不再阐述,这里只说一下它与其他框架的数据访问层不同的地方。 DataProvider同时兼容SQL SERVER与ORACLE两种数据库,并开放IDBOperater接口,用户只要实现IDBOperater接口工厂,就可以为DataProvider提供实例,从而实现使用第三种数据库,而无须修改数据库调用关键字。除此之外,DataProvider提供了静态访问与实例访问两种方式,针对不同的ADO.NET容器,用户可以选择不同的方式,而且提供统一的Dispose()方法,用户只需一次调用,即可关闭所有的Reader;而静态调用则不需对其做任何资源释放操作。静态访问与实例化访问是根据面向连接与非连接的工作方式区分的。 DataProvider还为用户提供了RecordProvider,通过它,用户可以方便 操作.config文件、文本文件、xml文件等。 DataProvider附带了数据容器选项:ContainerDefiner.cs,利用这个类的实例,用户可以直接调用各种ADO对象,并且容器对一些较大的数据对象进行缓存、压缩等优化,这些优化在存储时遵循“空间换时间”原则,在传输时遵循 “时间换空间”原则,前台业务性能会得到本质的提升! AppLogProvider AppLogProvider为用户提供了强大的日志记录功能,用户可以为程序中的每个“日志实例”提供单独的配置,每种配置有可以有不同的“Render”,每种Render代表可以使用不同的“Appender”,由Appender决定日志实例的重要等级、记录介质、记录格式、布局等属性。这一切用户可以通过配置完成,不许更改任何代码。换句话说,如果你原来的系统日志全都记录在文本文件中,现在希望将日志记录至SQL或ORACLE数据库,那么你唯一要做的事情就是更改配置,如果你非要把日志输出至电视机,那么你需要实现AppLogProvider派发的IappLogProvider接口即可实现。 如果你用过Log4Net,那么AppLogProvider你一定会很熟悉,只是AppLogProvider提供了更加灵活的配置方式。 ExceptionProcessProvider ExceptionProcessProvider为用户提供异常控制功能,它主要分为异常记录与异常显示两个模块。 异常记录模块是基于AppLogProvider的,用户可以通过传递Exception实例达到记录异常的目的;同时ExceptionProcessProvider支持用户自定义异常模型,这个模型可以与整个软件模型一起建立,通过实体异常模型(须继承自Exception)处理事件,并实现ExceptionProcessProvider派发的接口,从而实现异常记录的功能。异常显示模块是指异常发生时,对用户展示的通知信息,这些通知的形式在ExceptionProcessProvider被分为10种,用户仅通过配置就可以实现在这10种Style之间切换。 HttpContentProvider HttpContentProvider为用户提供了Cookie、Session、Cache的访问方法,用户通过配置文件,就可以控制这些状态量的属性,例如Cookie作用域、滑动时间,Cache的依赖方式(仅SQL SERVER)等。用户通过这些方法,可以方便建立、查询、删除、更新这些状态量。 IsLineFrameWork IsLineFrameWork是整体IsLine架构的核心,在架构被加载之前,IsLine.dll会对整个架构进行配置,完成定制任务。 SecurityProvider SecurityProvider为用户提供了加密与解密、强加密与解密的方法。这些加密措施为加密配置文件中的密码提供依据。 TaskQueueProvider TaskQueueProvider是一个服务队列,用户可以用它来注册已有的服务,TaskQueueProvider将根据服务节点元素,返回实例供用户使用,从而搭建企业应用的“场”模型。(什么是企业应用场?请参考企业应用系统(场)构建方案(上)和企业应用系统(场)构建方案(下)两篇文章) 图3.3 项目组成示意图 这里重点说明一下DataProvider和AppLogProvider,因为本论文中大量的应用到这两个Provider。 本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2009/12/18/1626862.html,如需转载请自行联系原作者

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

iOS开发那些事-iOS应用本地化-资源文件本地化

资源文件包括:图片文件、音频文件以及前文提到的Localizable.strings等文件,它们的特点是都是随着应用一起打包发布。但就本地化而言无论是图片文件还是音频文件都必须实现的步骤都是类似的,因此我们重点介绍图片文件的本地化。 资源文件的本地化,也是需要准备好几个本地化版本的文件。图片需要本地化,就是要创建几个版本的本地化文件。例如,我们要实现一个游戏的控制画面,画面中有控制关闭或者打开背景音乐的按钮和音效按钮,它们是图片按钮,上面的文字是图片上的文字,因此需要图片的本地化的。 首先,英文版图片也要添加到工程中,在故事板MainStoryboard.storyboard文件中正常添加两个UIImageView选择对应的图片。然后为故事板添加本地化支持,这个过程请参考上一节内容。下面对图片进行本地化,选择背景按钮图片music_background.png文件,打开文件显示检查器,点击Localization中的“Make localized”按钮,在弹的对话框中选择英文,这样music_background.png文件就被移动到en.lproj目录下面了。 添加简体中文版还需要在文件显示检查器,点击Localization中勾选“Chinese”选项才可以,当勾选完成时候又复制music_background.png文件到zh-Hans.lproj目录下面了。 这样我们就可以运行一下看看效果了,但是有的时候在IB打开的故事板设计画面,往往出现中文版本和英文版本混乱情况,这是由于故事板加载的问题,其实没有什么问题,我们也可以重新打开工程。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1228680,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

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部分的功能。

用户登录
用户注册