- 博客(58)
- 资源 (7)
- 收藏
- 关注
原创 overdraw优化小结
overdraw优化小结skindhu 2013/04/11★ 预备知识在Android的开发过程中,drawing performance往往是我们最关注也是努力去优化的一个点。而造成drawing perfomance的元凶之一就是overdraw。那么1. 什么是overdraw?overdraw发生在应用每次请求在其它物体上绘制内容的时候。例如:一个
2014-09-28 20:34:46
9233
原创 高斯模糊效果实现方案及性能对比
高斯模糊实现方案探究现在越来越多的app在背景图中使用高斯模糊效果,如yahoo天气,效果做得很炫。 我们5.2个性资料卡的标签模版也需要使用高斯模糊,这里就用一个demo来谈谈它的不同实现方式及各自的优缺点。1. RenderScript谈到高斯模糊,第一个想到的就是RenderScript。RenderScript是由Android3.0引入,用来在Android上编写高性能代码的
2014-09-18 21:01:44
49924
1
原创 Android中的事件分发机制
最近的一个项目中涉及到UGC的处理,大致布局为一个RelativeLayout包含了一个EditText和一个Button,当点击EditText时,弹出软键盘,点击RelativeLayout中除了EditText和Button之外其它的地方时,收起软键盘。实现起来很简单,为EditText和RelativeLayout分别注册一个onTouch事件,为Button注册一个c
2014-03-03 21:45:43
2797
原创 Android中的不同drawable文件夹所带来的思考
今天模拟手Q的发送图片界面做一个toolBar,布局如下: <RelativeLayout android:id="@+id/tool_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/pho
2013-10-02 18:31:23
6587
原创 Android相册功能技术实现细节
最近的一个demo是模拟手Q中发送图片界面,它实际上是一个由缩略图组成的预览界面,在开发过程中,遇到两个问题:因为该界面是由缩略图组成,如果直接将原始图片加载到内存中来处理,有可能导致OOM(一张图片是很大的,况且有很多张图片),如何有效的获取原始图片的缩略图呢?在demo的第一版中,图片能正确加载到界面,可是当我去滑动gridView时,会非常卡,这是什么原因导致,又
2013-10-02 18:25:19
4000
原创 Activity状态的保存
在Activity中有两个方法:onSavedInsanceState()和onRestoreInstanceState()。这两个方法并不是Activity的生命周期方法,因此它们并不一定被触发。事实上,onSavedInsanceState()用于一般是在一个activity被杀掉之前调用用以保存每个每个实例的状态,以保证该状态可在onCreate(Bundle)或者onRestoreIn
2013-10-02 18:23:40
4085
原创 Android图片缓存管理
在一个app中,图片资源是处处存在的,加载图片的流程一般是:1 先从缓存中读取2 若缓存中不存在,从SD卡中读取3 若SD卡中也不存在,则从服务器拉取后两个步骤纯碎属于业务逻辑,暂且不表,这里来看一下手Q使用的图片缓存管理策略。说到缓存管理,首先谈一下java中的强引用和弱引用强引用:最普遍的引用,若一个对象具有强引用,那么GC绝不会回收它。如A a = new
2013-10-02 18:21:23
4970
原创 Android语音信息相关技术
基本概念pcm自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字信号。采样率采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要
2013-10-02 18:18:38
3672
原创 反射型xss实战演示
我们知道,XSS攻击大致分为三种类型 :Persistent型(持久型),Non-persistent(反射型)及Dom-based型。而反射型是最常用,也是使用得最广的一种攻击方式。它通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。 今天,通过一个反射型xss的实战演示
2013-02-26 21:21:13
19188
原创 深入懒加载
懒加载(LazyLoad)一直是前端的优化方案之一。它的核心思想是:当用户想看页面某个区域时,再加载该区域的数据。这在一定程度上减轻了服务器端的压力,也加快了页面的呈现速度。 懒加载多用于图片,因为它属于流量的大头。最典型的懒加载实现方案是先将需要懒加载的图片的src隐藏掉,这样图片就不会下载,然后在图片需要呈现给用户时再加上src属性。 公司内部库的懒加载正是采用这种方案。它会遍历页面中
2012-10-30 00:46:14
15903
原创 expect在crontab下执行失败的问题
国庆节在家收到OZ报警,说没有接收到需要入库的文件。登陆VPN,上脚本机上看了一下。发现需要上报的文件生成成功,但却没有将文件成功上传到OZ的文件服务器上。上传文件的代码如下:在shell下直接执行是成功的,放在crontab下就会有问题。为了定位问题,我将crontab的执行任务输出到一个文件中:执行之后,在日志文件里发现如下错误信息:称找不到sc
2012-10-02 11:22:20
4984
原创 javascript 事件代理初探
事件在javascript中一直是最强大的对象之一。javascript提供了addEventListener和attachEvent两个方法来为DOM节点绑定事件,jquery作了进一步封装,提供了兼容各个浏览器的bind方法。现在来看,这种传统的事件绑定方式存在着以下不足:1.可能需要绑定很多的EventHander。假如页面中某个表有100行,现在必须为每一行绑定一个click事件。
2012-09-29 14:20:35
2391
原创 onchange事件在IE和FF下的表现及解决方案
在最近做的一个项目中,有这么一个功能点:页面上有一个checkbox,当用户选择或者取消选择该checkbox时会向后台发一个jsonp请求。当时的实现是为这个checkbox添加一个onchange事件,但结果却出人意料,为此,我深入的研究了一下,发现了onchange事件在IE和FF下的表现存在着以下问题。问题①:在FF下,当改变checkbox的选中状态时,会马上触发onchange事件
2012-08-20 19:39:01
8379
原创 浏览器缓存初探
缓存一直是web开发中提高性能的一个不可或缺的方面。由于web开发的本质实质上就是浏览器和服务器通过HTTP协议进行通信的过程。因此,缓存也分为服务器端缓存和浏览器缓存。这里,我主要讨论一下浏览器缓存。浏览器缓存的内容往往存储在浏览器本地,而内容则是由Web服务器生成,任何一方都不可能独立完成这一些列过程,所以,浏览器和服务器之间必须有一种沟通的机制,这种沟通机制被称为“缓存协商”。而浏览器正
2012-08-13 10:28:56
1016
原创 node.js中require如何定位module
在node.js中,如果使用require(module)来定位一个模块,有以下几种情况:1.若module是一个原生模块,则判断其在内存中是否存在,若存在,则加载,否则,从硬盘加载;2.若module的前缀是./或者..等相对路径,或者/绝对路径,查找该模块,若模块不存在且模块没有后缀名,则添加.js/.node后缀名,继续判断。3.若module既不是原生模块,也无相对路径或绝对路
2011-12-29 19:51:31
5957
原创 exec、source以及bash的区别
在bash shell中,source、exec以及sh都可以用来执行shell script,但是它们的差别在哪里呢?sh:父进程会fork一个子进程,shell script在子进程中执行source:在原进程中执行,不会fork子进程exec:在原进程中执行,但是同时会终止原进程注:使用export会把父进程中的变量向子进程中继承,但是反过来却
2011-12-06 15:58:08
11721
3
原创 BRE与ERE的异同
BRE与ERE的异同POSIX有两种风格的正则表达式:基本正则表达式(BRE)与扩展正则表达式(ERE)。下面,来讨论一下这两种正则表达式之间的异同。 meta字符相同之处:\ 用以关闭后续字符的特殊含义 . 匹配任何的单个字符,NUL除外 * 匹配在它之前的任何数目的单个字符
2011-11-15 15:35:44
3042
原创 linux日志管理
Linux日志管理Syslog是一种工业标准协议,可用于记录设备的日志。这些日志记录了系统中发生的大大小小的事情。因此,它对于系统的安全性非常重要。它会将一些系统信息记录到登陆文件中,常见的登陆文件有以下几种:l /var/log/secure:记录登陆系统访问的数据文件,例如pop3,ssh,telnet,ftp等。l /var/log/wtmp:记录登陆者的信息数据,这是个da
2011-11-04 21:50:40
1126
原创 Linux开机流程分析与Grub引导程序
Linux开机流程分析与Grub引导程序开机,对于我们每个人来说,是简单得不能再简单得事,可是,整个开机的过程会经历怎样一个流程呢?一般来说,linux的开机大致上经历以下的流程:1. 加载BIOS的硬件信息,进行自检,并依据设定获得第一个启动设备2. 读取并执行启动设备内的MBR的boot Loader(grub)3. Bootloader加载ke
2011-10-28 21:28:56
1506
1
原创 linux账号与身份管理
Linux账号与身份管理 1. linux账号与用户组用户标识符:UID与GID虽然我们平时在登录linux主机的时候,会输入账号,但是linux并不会直接认识我们的账号,它认识的仅仅是ID。ID是一串数字,存储在/etc/passwd中。而账号仅仅是为了方便我们记忆而已。Linux一共有两种ID,即UID和GID,UID是用户身份的标识,GID是群组的标识,它存在/
2011-10-23 12:15:50
1342
原创 linux搜索系统
linux有着异常强大的搜索系统,由于linux一般都充当服务器,因此,在linu的文件系统中可能会存着大量的文件,我们可能常常忘了某个文件放在哪里,这个时候,linux的搜索系统便发生了巨大的作用,它的强大和方便也给我们留下了深刻的印象。这里,介绍一下linux搜索系统的几个命令1. which(寻找可执行文件)格式:which [-a] command这个
2011-10-22 13:32:19
719
原创 linux文件权限系统之初体验
Linux中的一切都是文件,它的文件分为以下几类:普通文件:分为纯文本文件(ASCII文件,一般可以直接读取的文件,比如配置文件)、二进制文件(比如可执行文件),数据格式文件(比如登陆文件);目录文件:就是目录连接文件:类似windows的快捷方式设备文件:通常在/dev中,又分为块设备文件和字符设备文件,块设备是以字符块为传输单位,而字符设备是以单个字符为传输单位。套接字:
2011-10-20 09:42:57
1963
原创 js对象类型检查(续)
上一篇文章,我讲到了使用typeof和constructor两种方法来进行对象类型的判断。其中,typeof可以说是js设计上的一个缺陷,因为几乎不可能从它那里得到想要的结果,它唯一的使用场景就是判断一个变量是否已经定义,如typeof para==='undefined',因此
2011-10-15 21:38:08
2493
原创 JS数组的赋值
var test=[1,2,3,4,5,6,7];var arr=test;arr.splice(2,1);alert(test);//1,2,4,5,6,7JS数组实质上是对象。因此,上面的源代码最后打印出的是1,2,3,4,5,6。这是因为将test赋值给arr实
2011-09-16 15:12:55
9417
转载 理解 JavaScript 闭包
原文地址:Javascript Closures翻译地址:理解 JavaScript 闭包 By 为之漫笔 要成为高级 JavaScript 程序员,就必须理解闭包。本文结合 ECMA 262 规范详解了闭包的内部工作机制,让 JavaScript 编程人员对闭包的理解从“嵌套的函数”深入到“标识符解析、执行环境和作用域链”等等 JavaScript 对象背后的运行机制当中
2011-06-26 20:12:00
1006
原创 javascript:对象类型检查
我们知道,javascript是一种弱类型的语言,并且,javascript中的一切实质上都是对象。那么,在javascript中如何进行对象的类型检查将是一个非常重要的话题。这里,我将介绍两种在js中经常使用的用于类型检测的方法。 第一种方法是使用"typeof"操作符,这种方法可能大家都知道。使用它来进行类型检测的结果是下列六个字符串中的其中一个:"number","boolean
2011-06-26 18:18:00
1707
原创 JS作用域与块级作用域
作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。讲到这里,首先理解两个概念:块级作用域与函数作用域。 什么是块级作用域呢?任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。 函数作用域就好理解了(*^__^*) ,定义在函数中的参数和变量在函数外部是不可见的。 大多数
2011-06-08 14:22:00
12301
2
原创 《Javascript语言精粹》的学习(一).对象和函数
最近在学习小马和秦歌翻译的《javascript语言精粹》,果然如传闻般,里面的内容博大精深。有些章节所表达的意思往往需要看到后面的章节内容时才能够突然顿悟,因此,称这本书需要反复的去研究,真的名副其实。这两天看了对象和函数这两章,在这里把自己觉得需要关注的内容做一下笔记: ①对象常量中属性名的命名规范记得刚开始学习对象常量的时候,觉得它真的很简便。一个对象名,一个大括号,N个“名/值
2011-06-06 18:48:00
2474
原创 在smarty模板中调用PHP自定义函数(从smarty2到smarty3)
这两天研究了一下smarty,熟悉了它的一些基本语法后便开始用它开发一个留言版(真正的开发中一般不会有程序员使用smarty去开发一个留言版的,杀鸡焉用牛刀?),主要是为了将所学的知识点串联起来。在开发的过程中,遇到了一个问题,如题,我在PHP文件中定义了一个函数,现在想在.tpl模版中调用,该如何调用呢?通过在网上查找一些资料,下面给出具体的解决方案:大家都知道,在smarty中提供了
2011-06-04 18:50:00
14934
原创 socket编程之使用socket发送电子邮件(PHP)
我们知道,PHP发送邮件有两种方式,一个是mail()函数,另一个就是socket发送邮件。对于第一种方式,我不多做介绍,因为它的用法相对简单,只是说可能需要配置的东西比较多。详细可参加PHP文档。这里,我主要谈谈第二种方式。讲到第二种方式,我首先要谈谈发送邮件的原理。发送邮件是基于客户/服务器模式的,也就是说,客户端首先需要向服务器端发送连接请求,当双方连接后,再进行数据的传输,与此同时,我们又不能随便的进行传输,而是要遵守一定的规则,这里所说的规则我们称之为协议。在邮件系统中,主要涉及三种协议,SMTP
2011-05-31 19:11:00
8885
1
原创 JS判断浏览器类型,获得浏览器版本号
在WEB开发中,浏览器兼容问题往往弄得我们焦头烂额。这篇文章主要是通过使用JS封装一个方法来获得当前客户端的浏览器类型和浏览器版本号。大家都知道,我们往往是通过分析浏览器的uerAgent来判断,可是uerAgent属性又臭又长,我们又该如何从中抽丝剥茧,获得每个浏览器的所独有的特性呢,首先,我们来分析下各个浏览器的uerAgent字符串:(并不会写完全,只是写该字符串中比较重要的一部分)IE
2011-05-05 15:42:00
11754
原创 语法作用域与词法作用域(转)
<br />varclassA= function(){ this.prop1= 1;}classA.prototype.func1= function(){ var that= this, var1= 2; function a(){ return function(){ alert(var1); alert(this.prop1); }.apply(that); }; a(
2011-05-03 15:06:00
3190
原创 动态加载JS过程中如何判断JS加载完成
<br />在正常的加载过程中,js文件的加载是同步的,也就是说在js加载的过程中,浏览器会阻塞接下来的内容的解析。这时候,动态加载便显得尤为重要了,由于它是异步加载,因此,它可以在后台自动下载,并不会妨碍其它内容的正常解析,由此,便可以提高页面首次加载的速度。<br />那么,既然js是异步加载,我们又该如何判断它是否加载完成呢?<br /> <br />在IE或一些基于IE内核的浏览器中(如Maxthon),它是通过script节点的readystatechange方法来判断的,而其它的一些浏览器中,往
2011-04-30 00:27:00
23008
原创 冒泡排序,快速排序,插入排序(JS版)
//冒泡排序function sortBubble(array){ var len=array.length,i,j,tmp; for(i=len-1;i>=1;i--){ for(j=0;jarray[j+1]){ d=array[j+1]; array[j+1]=array[j]; array[j]=d; } } } return array;}//快速排序function sortQuick(array){
2011-04-29 18:05:00
8938
1
原创 一个经典的继承工具函数
<br />继承的方式有很多,下面介绍的是一个比较经典的继承方式<br /> <br />/***@param {Function} childfun 子类*@param {Function} superfun 父类*/function extend(childfun,superfun){ var sbp=childfun.prototype;//暂存子类原型 childfun.prototype=new superfun();//继承父类(the most import
2011-04-29 11:14:00
878
原创 自己写的一个选择器,支持单选,组选,子元素选,求优化~~
<br /> //实现查重 function checkRepeat(element,elements){ for(var i=0;i<elements.length;i++){ if(element==elements[i]){ return false; } } return true; } //选择器主题 function $(){ var elements=new Array(); var regi
2011-04-28 13:49:00
882
原创 JS中闭包引起内存泄漏的解析
<br />我觉得,闭包在JS中是一个比较强大的语言特色,但是,在使用闭包的过程中,有很多途径会引起内存泄漏的问题。。先看下面这段代码:<br /><body><div class='menu-bar' id='myMenu'></div><mce:script language='javascript'><!--var menu = document.getElementById('myMenu');AttachEvent(menu);function AttachEvent(elem
2011-04-22 21:46:00
6228
原创 JS的跨域访问
最近在网络上看了很多JS跨域访问的解决方案。。比较了一下,大致上有这么两种:第一个是使用内嵌的iframe,由于iframe能够访问外部域,因此,便实现了一种简单的跨域访问。但是这里存在着一个问题,那就ParentWindow和childWindow之间不能直接进行交互,因为在跨域的情况下,由于安全性的原因,这种交互是被拒绝的。。这时候,人们便想到了使用anchor hash来实现。因为改变一个网页的anchor hash并不会使网页重新加载,,从而使网页的状态得到了保持。而网页本身可以通过一个计时器侦听自
2011-04-22 17:09:00
2711
1
原创 JS中的公有,私有,特权和静态成员
<br />公有成员:通过修改构造函数的prototype属性而定义的成员,可以由该构造函数的所有实例访问;<br />私有成员:在构造按书内部用定义的成员(属性用var,函数用function),只能在构造函数内部进行访问;<br />静态成员:在对象上直接定义的成员,只能由该对象进行访问;<br />特权成员:在构造函数内部用this定义的成员,访问权限和公有成员一样;<br /> <br />下面用一个例子演示这集中成员<br />//构造函数function myConstructor(mess
2011-03-26 13:31:00
2136
1
原创 剖析Linux系统中硬链接与软链接的区别
<br />首先要弄清楚,在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。 <br /><br />链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。 <br /><br />一、硬
2011-01-10 15:57:00
703
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人