2012!末尾有几个0

题目:*2012!末尾有几个0* 解析:乘积会产生0的,就是2的倍数和5的倍数相乘产生的。 2012/5 =402; 402/5 = 80; 80/5= 16; 16/5= 3; 所以5的因子共有402+80+16+3=501; 末尾为0的个数就是501个

阅读全文...

平衡二叉树求叶子节点

完全二叉树的定义:深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树 s是总节点数,n是叶子节点数 公式为:公式:n=(s+1)/2 *(向下取整)* * * 例题: 一个完全二叉树有770个节点,那么其叶子的个数为:385

阅读全文...

六款值得推荐的android(安卓)开源框架简介

*1、volley  *项目地址 https://github.com/smanikandan14/Volley-demo  (1)  JSON,图像等的异步下载;  (2)  网络请求的排序(scheduling)  (3)  网络请求的优先级处理  (4)  缓存  (5)  多级别取消请求  (6)  和Activity和生命周期的联动(Activity结束时同时取消所有网络请求) *2、android-async-http   *项目地址:https://github.com/loopj/android-async-http 文档介绍:http://loopj.com/android-async-http/   (1) 在匿名回调中处理请求结果  (2) 在UI线程外进行http请求  (3) 文件断点上传  (4) 智能重试  (5) 默认gzip压缩  (6) 支持解析成Json格式  (7) 可将Cookies持久化到SharedPreferences

阅读全文...

PHP缓存机制Output Control详解

这篇文章主要介绍了PHP缓存机制Output Control,需要的朋友可以参考下 在php5.2版本的配置中,默认output_buffering为关闭状态,因此运行下面三行代码将会出现一个警告: Warning: Cannot modify header information – headers already sent echo 'hello1'; header('content-type:text/html;charset=utf-8'); echo 'hello2'; 开启OB缓存的方式有如下两种: 1. php.ini中开启 output_buffering = 4096 启用了此指令,那么每个PHP脚本都相当于一开始就调用了obstart()函数,PHP5.5默认已开启outputbuffering = 4096 2. 直接在程序中使用 ob_start(); 打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。 内部缓冲区的内容可以用 obgetcontents(

阅读全文...

php获取apk包信息的方法

这篇文章主要介绍了php获取apk包信息的方法,非常实用的功能,需要的朋友可以参考下 有时候在使用php上传安卓apk包的时候,我们需要获取安卓apk包内的信息,本文以实例形式讲述了php获取apk包信息的方法。具体实现方法如下: open($targetFile); $appObj->getAppName(); // 应用名称 $appObj->getPackage(); // 应用包名 $appObj->getVersionName(); // 版本名称 $appObj->getVersionCode(); // 版本代码 ?> 以下是Apkparser类包,把以下代码复制出来保存为Apkparser.php就可以执行以上代码 open($apk_file) = TRUE) { $xml = $zip->getFromName($xml_file); $zip->close(); if ($xml){ try { return $this->parseString($xml); }catch (Exception $e){ } } } return false; } public function parseString(

阅读全文...

PHP 伪静态技术原理以及突破原理实现介绍

伪静态技术比较好突破,需要自己构造中转注入页面;伪静态技术原理都很简单,就是把原来的 index.php?id=1 这种形式的URL给替换成其它形式 先说实现方法:  inj.php:  用wamp搭建一个服务器,把上面inj.php放到wamp/www/中,然后在Havij中跑 http://127.0.0.1/inj.php?id=1  ===========================  PHP伪静态实现方法一(利用Apache 服务器的功能)  1、检查Apache是否支持modrewrite  2、让Apache 支持.htaccess  3、建立.htaccess文件  4、规则:  RewriteEngine on  RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$

阅读全文...

30个最常用css选择器解析

你也许已经掌握了id、class、后台选择器这些基本的css选择器。但这远远不是css的全部。下面向大家系统的解析css中30个最常用的选择器,包括我们最头痛的浏览器兼容性问题。掌握了它们,才能真正领略css的巨大灵活性。 1. * { margin: 0; padding: 0; } 星状选择符会在页面上的每一个元素上起作用。web设计者经常用它将页面中所有元素的margin和padding设置为0。 *选择符也可以在子选择器中使用。 container * { border: 1px solid black; } 上面的代码中会应用于id为container元素的所有子元素中。 除非必要,我不建议在页面中过的的使用星状选择符,因为他的作用域太大,相当耗浏览器资源。 兼容浏览器:IE6+、Firefox、Chrome、Safari、Opera 2. #X container { width: 960px; margin: auto; } 井号作用域有相应id的元素。id是我们最常用的css选择器之一。id选择器的优势是精准,高优先级(优先级基数为100,远高于class的10),作为javascript脚本钩子的不二选择,同样缺点也很明显优先级过高,重用性差,所以在使用id选择器前,我们最好问下自己,

阅读全文...

Activity的四种launchMode

原文地址:http://blog.csdn.net/liuhe688/article/details/6754323 合抱之木,生於毫末;九層之台,起於累土;千里之行,始於足下。《老子》 今天在社区看到有朋友问“如何在半年内成为顶级架构师”,有网友道“关灯睡觉,不用半年的…”,的确,做梦还来的快一些。作为一个程序员,树立远大的目标是值得欣赏的,但不能只去空想,要一步一步地实践才行。成大事者,须从小事做起;万事起于忽微,量变引起质变。 我们今天要讲的是Activity的四种launchMode。 launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task。 Activity一共有以下四种launchMode: 1.standard 2.singleTop 3.singleTask 4.singleInstance

阅读全文...

Android Tween动画之RotateAnimation实现图片不停旋转

本文主要介绍Android中如何使用rotate实现图片不停旋转的效果。Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果;第二类是 Frame 动画,即顺序播放事先做好的图像,跟电影类似。本文分析 Tween动画的rotate实现旋转效果。 在新浪微博客户端中各个操作进行中时activity的右上角都会有个不停旋转的图标,类似刷新的效果,给用户以操作中的提示。这种非模态的提示方式推荐使用,那么下面就分享下如何实现这种效果吧 1、定义一个ImageView 定义一个ImageView是为了装载图片,其中的图片将被rotate用来进行旋转,其他View亦可。 资源文件为 其中的android:src为图片内容,可使用附件中的图片。 java代码为 ImageView infoOperatingIV = (ImageView)findViewById(R.id.infoOperating); 2、定义rotate旋转效果 在res/anim文件夹下新建tip.xml文件,内容如下 含义表示从0到359度开始循环旋转,0-359(若设置成360在停止时会出现停顿现象)度旋转所用时间为500ms,

阅读全文...

启动service的两种方式:startService与bindService的区别

Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy 我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。 *1.通过startService * Service会经历 onCreate –> onStart  stopService的时候直接onDestroy  如果是 调用者 直接退出而没有调用stopService的话,Service会一直在后台运行。  下次调用者再起来仍然可以stopService。 *2 .通过bindService * Service只会运行onCreate, 这个时候 调用者和Service绑定在一起  调用者退出了,Srevice就会调用onUnbind–>onDestroyed  所谓绑定在一起就共存亡了。  注意:Service的onCreate的方法只会被调用一次, 就是你无论多少次的startService又 bindService,Service只被创建一次。 如果先是bind了,那么start的时候就直接运行Service的onStart方法, 如果先是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了, 只能先UnbindService, 再StopService,所以是先start还是先bind行为是有区别的。  Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。

阅读全文...