首页 文章 精选 留言 我的

精选列表

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

《从零开始学Swift》学习笔记(Day 40)——析构函数

与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程。在析构过程中也会调用一种特殊的方法deinit,称为析构函数。析构函数deinit没有返回值,也没有参数,也不需要参数的小括号,所以不能重载。 下面看看示例代码: 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 class Rectangle{ varwidth:Double varheight:Double init(width:Double,height:Double){ self.width=width self.height=height } init(Wwidth:Double,Hheight:Double){ self.width=width self.height=height } deinit{ //定义了析构函数 print( "调用析构函数..." ) self.width= 0.0 self.height= 0.0 } } varrectc1:Rectangle?=Rectangle(width: 320 ,height: 480 ) //实例rectc1 print( "长方形:\(rectc1!.width)x\(rectc1!.height)" ) rectc1=nil //触发调用析构函数的条件 varrectc2:Rectangle?=Rectangle(W: 320 ,H: 480 ) //实例rectc2 print( "长方形:\(rectc2!.width)x\(rectc2!.height)" ) rectc2=nil //触发调用析构函数的条件 析构函数的调用是在实例被赋值为nil,表示实例需要释放内存,在释放之前先调用析构函数,然后再释放。 运行结果如下: 长方形:320.0 x 480.0 调用析构函数... 长方形:320.0 x 480.0 调用析构函数... 析构函数只适用于类,不能适用于枚举和结构体。类似的方法在C++中也称为析构函数,不同的是,C++中的析构函数常常用来释放不再需要的内存资源。而在Swift中,内存管理采用自动引用计数(ARC),不需要在析构函数释放不需要的实例内存资源,但是还是有一些清除工作需要在这里完成,如关闭文件等处理。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1747011,如需转载请自行联系原作者

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

【Android进阶学习】设置透明效果的三种方法

1.使用Android系统自带的透明效果资源 <android:backgroundandroid:background="@android:color/transparent"/> 2.使用ARGB来控制 半透明 <android:background="#e0000000"/> 透明 <android:backgroundandroid:background="#00000000"/> 3.设置Alpha Viewv=findViewById(R.id.content);//找到你要设透明背景的layout的id v.getBackground().setAlpha(100);//透明度0~255透明度值,值越小越透明 本文转自 lingdududu 51CTO博客,原文链接: http://blog.51cto.com/liangruijun/807956

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

《从零开始学Swift》学习笔记(Day 19)——函数参数传递

函数的语法格式如下: func函数名(参数列表) ->返回值类型{ 语句组 return返回值 } 关键字是func。 多个参数列表之间可以用逗号(,)分隔,也可以没有参数。 使用箭头“->”指示返回值类型。返回值有单个值和多个值。如果函数没有返回值,则“->返回值类型”部分可以省略。 如果函数有返回值,就需要在函数体最后使用return语句;如果没有返回值,则函数体中可以省略return语句。 函数定义示例代码如下: 1 2 3 4 5 6 funcrectangleArea(width:Double,height:Double)->Double{ letarea=width*height return area } print( "320x480的长方形的面积:\(rectangleArea(320,height:480))" ) 传递参数 介绍几种不同形式的参数。 使用外部参数名 为每个参数提供一个可以在函数外部使用的名称,称为外部参数名,修改rectangleArea函数的定义如下: 1 2 3 4 funcrectangleArea(Wwidth:Double,Hheight:Double)->Double{ letarea=width*height return area } 在局部参数名之前给一个“外部参数名”,用空格分隔。定义代码中的W和H就是外部参数名。调用代码如下: 1 2 3 4 print ("320x480 的长方形的面积 :\(rectangleArea(W: 320 ,H: 480 ))") 如果我们提供了外部参数名,那么在函数调用时,必须使用外部参数名,所以W和H不能省略。 省略外部参数名 Swift 2.0提供省略外部参数名可能,在定义函数时,使用下划线(_)表示外部参数名,示例代码如下: 1 2 3 4 funcrectangleArea(width:Double,_height:Double)->Double{ letarea=width*height return area } 这样函数在调用时就可以省略外部参数名,代码如下: 1 2 3 4 print ("320x480 的长方形的面积 :\(rectangleArea( 320 , 480 ))") 在定义函数时第一个参数不需要使用下划线(_),默认第一个参数名是省略的,其他参数名要想省略则需要使用下划线(_)符号。 参数默认值 在定义函数的时候可以为参数设置一个默认值,当调用函数的时候可以忽略该参数。看下面的一个示例: 1 2 3 funcmakecoffee(type:String= "卡布奇诺" )->String{ return "制作一杯\(type)咖啡。" } 在调用的时候,如果调用者没有传递参数,则使用默认值。调用代码如下: 1 2 letcoffee1=makecoffee( "拿铁" ) letcoffee2=makecoffee() 最后输出结果如下: 制作一杯拿铁咖啡。 制作一杯卡布奇诺咖啡。 可变参数 Swift中函数的参数个数可以变A化,它可以接受不确定数量的输入类型参数,它们具有相同的类型。我们可以通过在参数类型名后面加入(...)的方式来指示这是可变参数。 下面看一个示例: 1 2 3 4 5 6 7 funcsum(numbers:Double...)->Double{ vartotal:Double= 0 for numberinnumbers{ total+=number } return total } 下面是两次调用sum函数代码: 1 2 sum( 100.0 , 20 , 30 ) sum( 30 , 80 ) 可以看到每次传递参数的个数是不同的。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1746245,如需转载请自行联系原作者

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

Android学习路径(十)怎么会Action Bar堆放在布局

默认情况下。action bar出如今activity窗体的顶部。稍微降低了activity布局的总空间。 假设你想隐藏或者显示action bar。在这堂用户体验的课程中,你能够通过调用hide()和show()方法来实现。然后这样会导致你的activity基于它的新大小又一次计算和绘制布局。 Figure 1.Gallery's action bar in overlay mode. 为了避免在action bar隐藏或显示时调整你的布局,你能够为你的action bar启用overlay mode。在overlay 模式下,你的activity布局将会使用整个可用空间,就像action bar不存在一样,同一时候系统将action bar绘制在你的activity前面。 这样盖住了顶部的一些布局,可是如今当你的action bar隐藏或显示时。系统不会调整你的布局,而且这个过渡是无缝的。 贴士:假设你想让你的布局在action bar背后部分可见,能够为action bar创建一个半透明的自己定义样式,就像图1显示的那样。 很多其它关于怎样为action bar设置背景样式,请參阅为Action Bar设置风格。 启用Overlay Mode 要为action bar启用overlay mode,你须要创建一个继承自已有的action bar主题的自己定义主题。而且设置android:windowActionBarOverlay属性为true。 Android 3.0及以上版本号 假设你的minSdkVersion被设置为11或者更高,你的自己定义主题须要继承自Theme.Holo主题(或者它的子主题)。比如: <resources> <!-- the theme applied to the application or activity --> <style name="CustomActionBarTheme" parent="@android:style/Theme.Holo"> <item name="android:windowActionBarOverlay">true</item> </style> </resources> Android 2.1及以上版本号 假设你的应用使用Support Library 类兼容执行于低于Android 3.0版本号之下的设备。你的自己定义主题须要继承自Theme.AppCompat主题(或者它的子主题)。比如: <resources> <!-- the theme applied to the application or activity --> <style name="CustomActionBarTheme" parent="@android:style/Theme.AppCompat"> <item name="android:windowActionBarOverlay">true</item> <!-- Support library compatibility --> <item name="windowActionBarOverlay">true</item> </style> </resources> 相同注意这个主题包括两种windowActionBarOverlay样式的定义:一次以android:为前缀。一次不用。以android:为前缀适用于那些系统平台提供对应style的android版本号,没有前缀的适用于那些从Support Library读取样式的老版本号。 指定布局的顶端间距 当action bar在overlay mode下时。它可能挡住了那些须要显示的布局。要确保这样的布局始终处于action bar的下方。使用actionBarSize.的值来制定视图相对顶部的margin或者padding。比如: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="? android:attr/actionBarSize"> ... </RelativeLayout> 假设你使用的是Support Library。你须要移除android:前缀。 比如: <!-- Support library compatibility --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="?attr/actionBarSize"> ... </RelativeLayout> 在这种情况下, 无前缀?attr/actionBarSize的值在所有的版本号是有效的,含有Android 3.0 而更多的在版本号。 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4740075.html,如需转载请自行联系原作者

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

Hadoop HDFS概念学习系列之fsimage metadata(二十二)

想说的是,fsimage 是在磁盘。metadata是在内存。 元数据metadata,内存保存一份,磁盘保存一份。 备份机制思想,就如同在学校图书馆中的书库。为了使得借书运转,要买多本书存库。 我client提货员,向仓库管理员namenode,请求提货,在他同意同时,会将这情况写到editlog,先是将editlog写到磁盘,成功后,再写到内存。 fsimage 载入内存 合并edits | 新的fsimage | namenode ,替换旧的 什么时候checkpoint? 条件一: fs.checkpoint.period 默认是3600秒,每隔一个小时,Secondarynamenode就要下载fsimage和edits,进行数据的同步。 条件二: fs.checkpoint.size edits一直在变大。一旦达到64M或128M,就要进行合并。 只要达到这两个条件的其中一个,都会进行合并。 在hadoop1.*里,就是fsimage。在hadoop2.*里,还加了后缀。 在$HADOOP_HOME/tmp/dfs/data或$HADOOP_HOME/tmp/dfs/name 对于比如hadoop fs -ls /查看到的文件啊。最终还是存放在磁盘上。因为它是Linux文件系统之上的HDFS文件系统。 安装Eclipse版本时,使用Javase,里面不自带插件,麻烦,一般用Javaee。 保证,集群里的jdk,与Eclipse的jdk一致。比如都是1.7即可。不需精确到1.7的具体版本。 RPC-----远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP, 为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 在hadoop-2.2.0源代码里,按 Ctrl + shift + T。 跳进某个方法里,按F5和F6。跳出某个方法里,按F7。 Shift + Alt +S map <k1,v1> <k2,v2> reduce <k2,{v2}> <k3,v3> MR流程: 代码编写 -> 作业配置 -> 提交作业 -> 初始化作业 -> 分配任务 -> 执行任务 -> 更新任务和状态 -> 完成作业 main方法所在的类,传入一个是args0,args1 args0是map阶段前的,输入路径 args1是reduce阶段前的,输出路径 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5598524.html,如需转载请自行联系原作者

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

Spark RDD概念学习系列之细谈RDD的弹性(十六)

细谈RDD的弹性 所谓,弹性,是指在内存不够时可以与磁盘进行交换。 弹性之一:自动的进行内存和磁盘数据存储的切换 弹性之二:基于Lineage(血缘)的高效容错 弹性之三:Task如果失败会自动进行特定次数的重试 弹性之四:Stage如果失败会自动进行特定次数的重试,而且只会计算失败的分片 弹性之五:checkpoint和persist Checkpoint是比较重量级的操作,RDD操作,一般每次都会产生新的RDD,除了最后一个action操作触发作业以外。但是有时候,链条比较长或者计算比较笨重,考虑把数据放到磁盘上,这就是Checkpoint。 Persist是在内存或磁盘里复用。 弹性之六:数据调度弹性:DAG、Task和资源管理无关 弹性之七:数据分片的高度弹性 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5887484.html,如需转载请自行联系原作者

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

Hadoop Hive概念学习系列之hive里的索引(十三)

Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键。 Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapReduce任务中需要读取的数据块的数量。 在可以预见到分区数据非常庞大的情况下,索引常常是优于分区的。 博主我推荐各位博文们通过查阅Hive文档对Hive表的索引进行更深入的了解。 需要时刻记住的是,Hive并不像事物数据库那样针对个别的行来执行查询、更新、删除等操作。这些操作依赖高效的索引来实现高性能。 Hive是一种批处理工具,通常用在多任务节点的场景下,快速地扫描大规模数据。关系型数据库则适用于典型的单机运行、I/O密集型的场景。 Hive通过并行化来实现性能,因此Hive更适用于全表扫描这样的操作,而不是像使用关系型数据库一样操作。 为什么要创建索引?Hive的索引目的是提高Hive表指定列的查询速度。 没有索引时,类似'WHERE tab1.col1 = 10' 的查询,Hive会加载整张表或分区,然后处理所有的rows, 但是如果在字段col1上面存在索引时,那么只会加载和处理文件的一部分。 与其他传统数据库一样,增加索引在提升查询速度时,会消耗额外资源去创建索引和需要更多的磁盘空间存储索引。 Hive 0.7.0版本中,加入了索引。Hive 0.8.0版本中增加了bitmap索引。 Hive里的2维坐标系统(第一步定位行键 -> 第二步定位列修饰符) HBase里的4维坐标系统(第一步定位行键 -> 第二步定位列簇 -> 第三步定位列修饰符 -> 第四步定位时间戳) HBase里的4维坐标系统(第一步定位行键 -> 第二步定位列簇 -> 第三步定位列修饰符 -> 第四步定位时间戳) 行键,相当于第一步级索引。 列簇,相当于第二步级索引。 列修饰符,相当于第三步级索引。 时间戳,相当于第四步级索引。 预习案例 说明: 原表是user 创建索引后的表是user_index_table 索引是user_index 先创建原表 create table user( id int, name string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; 往原表里导入数据 LOAD DATA LOCAL INPATH '/export1/tmp/wyp/row.txt' OVERWRITE INTO TABLE user; 给原表做个测试 SELECT * FROM user where id =500000; Total MapReduce CPU Time Spent: 5 seconds 630 msec OK 500000 wyp. Time taken: 14.107 seconds, Fetched: 1 row(s) 可以看出,一共用了14.107s。 在原表user上创建索引user_index,得到创建索引后的表user_index_table CREATE INDEX user_index ON TABLE user(id) AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH deferred REBUILD IN TABLE user_index_table; 或者如下写都是一样的,建议如下写 hive > create index user_index on table user(id) > as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' > with deferred rebuild > IN TABLE user_index_table; 给原表user更新数据 ALTER INDEX user_index on user REBUILD; 删除索引 DROP INDEX user_index on user; 查看索引 SHOW INDEX on user; 创建表和索引案例 步骤一:创建索引测试表 CREATE TABLE index_test( id INT, name STRING ) PARTITIONED BY (dt STRING) ROW FORMAT DELIMITED FILEDS TERMINATED BY ','; 说明: 创建一个索引测试表 index_test,dt作为分区属性, “ROW FORMAT DELIMITED FILEDS TERMINATED BY ','” 表示用逗号分割字符串,默认为‘\001’。 步骤二:创建临时索引表 create table index_tmp( id INT, name STRING, dt STRING ) ROW FORMAT DELIMITED FILEDS TERMINATED BY ','; 说明:临时索引表是table index_tmp 步骤三:加载数据到临时索引表中 load data local inpath '/home/hadoop/djt/test.txt' into table index_tmp; 步骤四:设置 Hive 的索引属性来优化索引查询 set hive.exec.dynamic.partition.mode=nonstrict;----设置所有列为 dynamic partition set hive.exec.dynamic.partition=true;----使用动态分区 步骤五:查询临时索引表中的数据,插入到索引测试表中。 insert overwrite table index_test partition(dt) select id,name,dt from index_tmp; 步骤六:使用 索引测试表,在属性 id 上创建一个索引 create index index1_index_test on table index_test(id) as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH DEFERERD REBUILD; 建议如下写 create index index1_index_test on table index_test(id) as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH DEFERERD REBUILD; 索引是index1_index_test 索引测试表是 index_test 在索引测试表的属性id上创建的索引 步骤七:填充索引测试表的索引数据 alter index index1_index_test on index_test rebuild; 步骤八:查看索引测试表的创建的索引 show index on index_test 步骤九:查看索引测试表的分区信息 show partitions index_test; 步骤十:查看索引测试表的索引数据 $ hadoop fs -ls /usr/hive/warehouse/default_index_test_index1_index_test_ 步骤十一:删除索引测试表的索引 drop index index1_index_test on index_test; show index on index_test; 步骤十二:索引测试表的索引数据也被删除 $ hadoop fs -ls /usr/hive/warehouse/default_index_test_index1_index_test_ no such file or directory 步骤十三:修改配置文件信息 hive.optimize.index.filter 和 hive.optimize.index.groupby 参数默认是 false。 使用索引的时候必须把这两个参数开启,才能起到作用。 hive.optimize.index.filter.compact.minsize 参数 为输入一个紧凑的索引将被自动采用最小尺寸、默认5368709120(以字节为单位)。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6105294.html,如需转载请自行联系原作者

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

学习.net 2.0需要讲究一下策略

.NET V2.0编程的技术含量比V1.0提高了,也更成熟了.微软和开源社区都提供了许多的框架和接口. 我们是这些框架的用户.我们也有两种编程模式,一种是基于一个著名的开源框架上,开始阅读和全盘吸收,然后动手大改,变成自己的;一种是在著名的框架上,找到接口或黑客接口,从上面开始继承和定制,从而实现自己的。前者是站在巨人的肩膀上的模式,后者是让巨人背着自己的模式,不过微软的架构师更喜欢背着你,可是不是所有的人都喜欢搭顺风车. 下面列出这些框架,一起来思考一下,我的想法是充分利用这两种模式.吸收各自的精华,时刻走在技术的前沿. MS : Enterprise Library, Composite UI Application Block , WSE/WCF , WWF/WinFx ,Altas etc OpenSource : Castle/Sprint.Net, NHibernate/Ibatisnet, etc 本文转自 张善友 51CTO博客,原文链接:http://blog.51cto.com/shanyou/75066,如需转载请自行联系原作者

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

Hadoop MapReduce概念学习系列之mr程序组件全貌(二十)

其实啊,spilt是,控制Apache Hadoop Mapreduce的map并发任务数,详细见http://www.cnblogs.com/zlslch/p/5713652.html map,是mapper代码 reduce,是reducer代码 缓存,分组,排序,转发, 最重要的是,mr程序的组件InputFormat和OutputFormat啊!(重要的话,说三遍) 最重要的是,mr程序的组件InputFormat和OutputFormat啊! 最重要的是,mr程序的组件InputFormat和OutputFormat啊! 我们知道,在大数据里,数据源是非常之广,比如,hdfs(默认,而且还是TextInputFormat),数据库,文件,ftp,网页,网络端口..... 那么,对于用户来说,不需要具体去管,特推出mr程序的组件-------InputFormat 往数据库、HBase、ftp、hdfs(默认是往hdfs写,而且还是TextOutputFormat),文件,,,用户不用管,特推出mr程序的组件------OutputFormat But,在生产环境,可是最重要的是具体业务... 注意: 比如,对于图片,视频,,,这些,InputFormat,就不能了。 可以看到,DBInputFormat是去数据库里读, 可以看到,DBOutputFormat是往数据库里写。 其它更深以后会补上。。。。。 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5713872.html,如需转载请自行联系原作者

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

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

Nacos

Nacos

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

Spring

Spring

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

用户登录
用户注册