java与js代码互调方法

Posted by & filed under Uncategorized.

在用HTML5做跨平台应用开发时,尝尝会用到java和js方法互调的问题,对初学者而言,可能会有点难,在这里分享一些自己在实际开发过程中的用法,希望对你有帮助: 首先是js代码调用java代码介绍: public class CzingLBWebMain extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.loadUrl(file:///android_asset/www/czingIndexHome.html); WebSettings webSettings = this.appView.getSettings(); webSettings.setLoadWithOverviewMode(true); webSettings.setSavePassword(false); webSettings.setSaveFormData(false); webSettings.setSupportZoom(false); webSettings.setAllowFileAccess(true); webSettings.setJavaScriptEnabled(true); webSettings.setPluginState(WebSettings.PluginState.ON); // Read more […]

提高网页加载速度最简单的5种方式(转)

Posted by & filed under Uncategorized.

网页的加载速度是评估网站质量一个重要指标。原因在于大多数用户能够容忍的网页加载时间只有几秒,如果超出了访客的忍受范围他们会毫不留情地关掉你的网 页,所以网页载入速度会极大地影响网站的流量和访问。以下总结了几种可以明显提高网站加载速度的初步简单技巧方式,如果你的网站存在载入速度慢的问题不妨 与此为参考对网页做些初步优化。 网页加载提速之 – 优化网页图片文件 你的网页一定有图片,加载一个网页往往图片的总尺寸是最大的,特别是那些颜色丰富的背景图片和大副广告图片。所以一般要在同等图片质量的情况下要尽可能地 减小图片尺寸。在Photoshop中我们可以用保存为Web图片的选项试一下。图片也有几种常用的文件格式。如JPEG一般是用来存储照片或全彩色图片 Read more […]

两个list查找相同元素

Posted by & filed under Uncategorized.

问题是两个list,包含了上万的字符串元素,要快速查找重复元素。 相应的我们可以用map的方法,插入,遍历查找。 这里提出另外两个可行的方法,供参考;然后就这类问题进行一些扩展探讨。 (1)两个可行方法。 一个是基于哈希表+链表的查找,一个是26叉树。 A..哈希表+链表。 前面的blog提到了哈希表,就是用一个key值作为地址值,直接寻址。寻找速度为O(1). 具体到两个字符串的list问题,我们需要为每个字符串映射到一个整数,然后依次建立一个哈希表H[N]。比如“aabbc”这个字符串的key是102,对应的位置就为H[102]。这样的话,我们初始化H为0,遍历list_1,计算key,在H中对应的位置设为1。再遍历list_2,查看对应的H位置是0或1,0着没有重复,1就重复。 上面的问题一个关键的步骤就是如何建立一个映射“aabbc”到102。这方面前人有现成的研究成果,如下: 这个函数把每个字符串映射到一个0-500的整数key。   这样,我们有了“aabbc”对应的“102”,建立长度为500的哈希表。但是500个哈希数组,肯定会有地址冲突问题,一种普遍的解决方法就是哈希表+链表,如下: 也就是在哈希表后,如果地址冲突,就接上相同地址元素的链表。 到这里,哈希表+链表的方法就大功告成了。具体步骤总结如下: a.用映射函数计算list_1中各个字符串的key。 b.建立大小为500的哈希表H,初始化为0. c.遍历list_1,在H中的相应位置H[key]置1,如果有地址冲突,则起一个链表节点,接到后面。 d.用映射函数计算list_2的key,并在H中寻找是否重复。 然后,我们对这个算法进行分析: 这个算法的主要消耗在key值得计算,其他步骤时间复杂度都是O(1). B.接着说第二种方法,26叉树。 之所以想到26叉树,是由于每个字符串字母都是a-z(暂时忽略大小写),那么根据其特性,我们建立一个26叉树,一个母节点都有a-z26个子节点。 如下图所示: 上面是字符串“aabbc”的路径。每个字符串节点里存储其是否出现的信息。 那么我们的具体步骤可以归纳如下: a.根据list_1建立26叉树,建立方法为从空树开始,没有节点则建立,在尾节点里加上个数信息。 b.根据上面建立的26叉树,把list_2中的字符串逐个遍历这个树,得到是否重复信息。 性能分析: 这个算法其实想模仿map中的红黑2叉树,建立26叉树则是根据具体问题的特点改进,时间复杂度又原来的log2N减少到log26N。算是对map方法查找的一个改进。而且还省略了其比较的过程。不过如果长生了退化的26叉树,也有可能导致结果不理想。 (2)关于大数据的查找问题扩展探讨。 上面针对两个list查找相同元素问题,提出了两个方法。这里的list是以万为单位的,故可以再内存中进行如上的哪些算法。下面把问题扩展到上亿的数据,结果会怎样呢? 假设一个字符串20byte之内,那么两亿个字符串就是4*10^10byte~=40GB,远大于一般的内存。 我们首先想到的是把两个list分块,分别放入内存用上述方法计算。那么第一个问题是怎么分块? 一般的内存为2GB,那么一个list20GB要分为二十块。那么我们直接按顺序分块,分别作上面的计算,要计算20*20=400次。当然,这里假设一个list本身的字符串都是非重复的。 不过上面假设一亿个字符串都是非重复,貌似很难成立,那么便又引出一个问题,list中本就有重复元素。 ,那么分块方法首先要变,我们要把相同元素放到一个块。这里又要用到哈希表,把一亿个元素按照哈希表分块,保证重复元素被分到了一个大块中,接着再进行上述的计算便可以了。哈希表分块如下: 总结:上述只是查找相同元素的一个方法,还有许多诸如大数据前K大数等问题,大数据操作中常常用到哈希表和分块计算的方法。 Read more […]

代码覆盖率浅谈

Posted by & filed under Uncategorized.

在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论。 首先,让我们先来了解一下所谓的“代码覆盖率”。我找来了所谓的定义: 代码覆盖率 = 代码的覆盖程度,一种度量方式。 上面简短精悍的文字非常准确的描述了代码覆盖率的含义。而代码覆盖程度的度量方式是有很多种的,这里介绍一下最常用的几种: 1. 语句覆盖(StatementCoverage) 又称行覆盖(LineCoverage),段覆盖(SegmentCoverage),基本块覆盖(BasicBlockCoverage),这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。这里说的是“可执行语句”,因此就不会包括像C++的头文件声明,代码注释,空行,等等。非常好理解,只统计能够执行的代码被执行了多少行。需要注意的是,单独一行的花括号{} Read more […]

c++读取文件eof的疑惑

Posted by & filed under Uncategorized.

对于文本文件,当我们使用eof()判断文件是否结束时会多读一次(c语言也有类似的情况),或许你有遇到过这种情况。 先看下面的例子吧: 点击(此处)折叠或打开 #include<iostream> #include <string> #include<fstream> #include<cstdlib> using namespace std; int main() {     char data;     ifstream infile;     infile.open(“in.txt”);     if(infile.fail())     {         cout<<“Fail to open the input file”<<endl;         exit(1);     }     while( !infile.eof() )     {         infile >> data;         cout << data ;     }     infile.close();     cout << endl;     return Read more […]

容易犯错的c++小细节(转)

Posted by & filed under Uncategorized.

本篇博文主要总结一下,自己见到的一些易犯错的小问题!供自己和大家参考和借鉴!当然这些并非本人原创,很多都是粘贴过来的。 (1)运行下图中的C++代码,输出是什么? int SizeOf(char pString[]) { return sizeof(pString); }   int main(int argc, char* argv[]) { char* pString1 = “google”; int size1 = sizeof(pString1); int size2 = sizeof(*pString1);   char pString2[100] = “google”; int size3 = sizeof(pString2); int size4 = SizeOf(pString2);   printf(“%d, %d, %d, %d \n”, size1, size2, size3, size4);   return 0; } 答案:4, 1, 100, 4。pString1是一个指针。在32位机器上,任意指针都占4个字节的空间。*pString1是字符串pString1的第一个字符。一个字符占一个字节。pString2是一个数组,sizeof(pString2)是求数组的大小。这个数组包含100个字符,因此大小是100个字节。而在函数SizeOf中,虽然传入的参数是一个字符数组,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针。 (2) #include <iostream> using Read more […]

[转]Vim 快捷键整理

Posted by & filed under Uncategorized.

一、移动光标 1、左移h、右移l、下移j、上移k 2、向下翻页ctrl + f,向上翻页ctrl + b 3、向下翻半页ctrl + d,向上翻半页ctrl + u 4、移动到行尾$,移动到行首0(数字),移动到行首第一个字符处^ 5、移动光标到下一个句子 ),移动光标到上一个句子( 6、移动到段首{,移动到段尾} 7、移动到下一个词w,移动到上一个词b 8、移动到文档开始gg,移动到文档结束G 9、移动到匹配的{}.().[]处% 10、跳到第n行 ngg 或 nG 或 :n 11、移动光标到屏幕顶端H,移动到屏幕中间M,移动到底部L 12、读取当前字符,并移动到本屏幕内下一次出现的地方 * 13、读取当前字符,并移动到本屏幕内上一次出现的地方 Read more […]

[转]如何高效使用和管理Bitmap–图片缓存管理模块的设计与实现

Posted by & filed under Uncategorized.

上周为360全景项目引入了图片缓存模块。因为是在Android4.0平台以上运作,出于惯性,都会在设计之前查阅相关资料,尽量避免拿一些以前2.3平台积累的经验来进行类比处理。开发文档中有一个BitmapFun的示例,仔细拜读了一下,虽说围绕着Bitmap的方方面面讲得都很深入,但感觉很难引入到当前项目中去。 现在的图片服务提供者基本上都来源于网络。对于应用平台而言,访问网络属于耗时操作。尤其是在移动终端设备上,它的显著表现为系统的延迟时间变长、用户交互性变差等。可以想象,一个携带着这些问题的应用在市场上是很难与同类产品竞争的。 说明一下,本文借鉴了Keegan小钢和安卓巴士的处理模板,主要针对的是4.0以上平台应用。2.3以前平台执行效果未知,请斟酌使用或直接略过:),当然更欢迎您把测试结果告知笔者。 1图片加载流程 首先,我们谈谈加载图片的流程,项目中的该模块处理流程如下: 在UI主线程中,从内存缓存中获取图片,找到后返回。找不到进入下一步; 在工作线程中,从磁盘缓存中获取图片,找到即返回并更新内存缓存。找不到进入下一步; 在工作线程中,从网络中获取图片,找到即返回并同时更新内存缓存和磁盘缓存。找不到显示默认以提示。 2内存缓存类(PanoMemCache) 这里使用Android提供的LruCache类,该类保存一个强引用来限制内容数量,每当Item被访问的时候,此Item就会移动到队列的头部。当cache已满的时候加入新的item时,在队列尾部的item会被回收。

补充一点,由于4.0平台以后对SoftReference类引用的对象调整了回收策略,所以该类中的软引用缓存实际上没什么效果,可以去掉。2.3以前平台建议保留。 3磁盘缓存类(PanoDiskCache)

  4图片工具类(PanoUtils) 4.1从网络上获取图片:downloadBitmap()

  4.2从输入流读取字节数组,看起来是不是很眼熟啊!

  4.3对下载的源图片进行适屏处理,这也是必须的

  5使用decodeByteArray()还是decodeStream()? 讲到这里,有童鞋可能会问我为什么使用BitmapFactory.decodeByteArray(data, Read more […]

ubuntu下常用命令总结

Posted by & filed under Uncategorized.

  系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 – (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 cat /proc/swaps 显示哪些swap被使用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 罗列 PCI 设备 lsusb -tv 显示 USB 设备 date 显示系统日期 cal 2007 显示2007年的日历表 date 041217002007.00 设置日期和时间 – 月日时分年.秒 clock Read more […]

[转]jqurey异步导出word

Posted by & filed under Uncategorized.

在页面上填写值,然后导出到word模板中,并把页面上的值带到模板中,也就是导出word文档,提前有word 的模板形式, 1.jsp 页面

2.导出用异步的方法

3.GKBX29_word.jsp其实是后台的处理方法,因为本次开发用EOS,所以在jsp用request接收值,并传递到模板

4. 生成word 的方法

5.模板中的样式