- java可以直接编译成可执行的二进制文件,参考:http://xieruilin.iteye.com/blog/728940
- 这种方案成熟吗?很少见到把JAVA编译成二进制文件后运行的
- java可以通过jni的方式来访问C编译后的程序的(如:so),当然,这种so和普通的so有稍许的不同,需要通过jni的方式包装一下的,参考: http://hubingforever.blog.163.com/blog/static/17104057920115218559186/
- javah命令就是为jni而生的
- Android.mk简介: http://hubingforever.blog.163.com/blog/static/171040579201152185542166/
http://hubingforever.blog.163.com/blog/static/1710405792011656434982/ - NDK
Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。众所周知,Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。NDK包括了:
-
从C / C++生成原生代码库所需要的工具和build files。
-
将一致的原生库嵌入可以在Android设备上部署的应用程序包文件(application packages files ,即.apk文件)中。
-
支持所有未来Android平台的一些列原生系统头文件和库
为何要用到NDK?概括来说主要分为以下几种情况:1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。参考:http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html
-
PHP中执行命令的一个问题
1. 首先在命令行尝试如下命令:
for i in {1..4098}; do echo 1; done| grep 1|head -n 2
输出:
1
1
没有任何问题
2. 使用PHP执行该命令:
1 2 3 |
<?php $cmd = "for i in {1..4098}; do echo 1; done| grep 1|head -n 2"; echo `$cmd`; |
得到结果如下:
grep: writing output: Broken pipe
grep: writing output: Broken pipe
1
1
为什么?
HTML5
学习HTML5需要了解的两个网址:
http://www.whatwg.org/
http://www.w3.org/TR/html5/
其它:
http://zh.wikipedia.org/wiki/WHATWG
网页超文本技术工作小组(英语:Web Hypertext Application Technology Working Group,缩写为WHATWG),是一个以推动网络 HTML 5 标准为目的而成立的组织。在2004年,由Opera、Mozilla基金会和苹果这些浏览器厂商组成。
HTML5 的标准制定者 WHAT 工作组和 W3C 最终选择了 分道扬镳。WHAT 工作组将会继续致力于为 HTML5 制定一个不断进化的动态标准,而 W3C 则会依照传统编号的版本控制系统构建一个静态快照版的标准。
此前这一分歧在 2011 年一月已经出现,这次的公开分手也在情理之中。WHAT 工作组的成员主要由来自苹果和 Mozilla 的一批希望推动互联网标准进化的人组成,而 W3C 这种大型组织则有着自己繁琐的条例需要去维护遵守。现在的状况是一批激进的技术派全力拖着保守组织前进时,发现自己没办法保持双方步调一致,索性弃掉辎重轻装前进。虽然 HTML5 的发起者 Ian Hickson 认为这次分裂并不会造成两种标准间太多的冲突,即使有也只是一种标准更精准而已,但是他在公开邮件中又意味深长的加了一句“浏览器厂商自然会知道去采用更精准的标准”。
Javascript 字符编码相关
编码转换: http://demon.tw/programming/javascript-unicode-utf-8.html
javascript的sprintf实现: http://demon.tw/programming/javascript-sprintf.html
http://demon.tw/programming/javascript-binary-file-two.html
base64编码:
http://tuhaitao.iteye.com/blog/653244
http://www.blogjava.net/hadeslee/archive/2007/11/16/160544.html
javascript 类型数组处理二进制数据
Javascript中,我们总是只能使用: String.fromCharCode(i) charAt(i) charCodeAt(i) 和一些位移操作来操作二进制数据,下面介绍了类型数组来帮助处理二进制数据:
http://www.khronos.org/registry/typedarray/specs/latest/
http://www.2cto.com/kf/201204/126017.html
http://caniuse.com/#feat=typedarrays
一些数学名词的由来
“函数”命名的来历
为什么 function 翻译成函数?我对当年这两个字是怎么来的从来就没搞清过。。。 我知道function(函数)是什么,我就是不知道为什么这么翻译?
做这个翻译的最早是中国清朝数学家李善兰,出现于其著作《代数学》。之所以这么翻译,他给出的原因是“凡此变数中函彼变数者,则此为彼之函数”,也即函数指一个量随着另一个量的变化而变化,或者说一个量中含有另一个量。此后这个名称一直沿用。
摘自: http://www.guokr.com/question/445814/
“方程”命名的来历
现在我们所说的方程的确切定义是指含有未知数的等式。但是方程一词在我国早期的数学专著《九章算术》中,意思指的是包含多个未知量的联立一次方程,即现在所说的线性方程组。
《九章算术》有一道题目,把它翻译成现代语言就是:现在这里有上等黍3捆、中等黍2捆、下等黍1捆,打出的黍共有34斗;另有上等黍1捆、中等黍2捆、下等黍3捆,打出的黍共26斗。请你回答,上、中、下等黍各1捆所打黍的斗数为x,y,z根据题意列方程:
3x+2y+z=39(1)
2x+3y+z=34(2)
x+2y+3z=26(3)
但是《九章算术》里并没有列出像上面的方程来,而是画出一个等式,通过等式计算出答案来。
到了魏晋时期,大数学家刘徵注《九章算术》时,给这种“方程”下的定义是:“程,课程也,群物总杂各列有数,总言其实,令每行为率。二物者再程,三物者三程,皆如物数程之,并列为行,故谓之方程。”大家应该注意的是,这里所谓的“课程”也不是我们今天所说的课程,而是按不同物品的数量关系列出的式子。“实”就是式中的常数项。“今每行为率”,就由一个条件列一行式子,横列代表一个未知量。“如物数程之”,就是有几个未知数就必须列出几个等式。因为各项未知量系数和常数项用等式表示时,几行并列成一方形,所以叫作“方程”,它就是现在代数中讲的联立一次方程组。
《九章算术》中还列出了解联立一次方程组的普遍方法——“方程术”。当时又叫它“直除法”,和现在代数学中能用的加减消元法是基本一致的,而这也是世界上最早的。这种解法,公元7世纪印度才出现,在欧洲,1559年,瑞士数学家彪奇才开始用不同的字母表示不同的未知数,并提出三元一次方程组不很完整的解法,因为他们那时还没有认识到负数,这比《九章算术》要迟1500多年。
摘自:http://www.meblog.cn/user3/5862/archives/2007/26034.shtml
参考: http://baike.baidu.com/view/5925.htm
关于跨域问题的一些实践
参考资料:http://www.planabc.net/2008/09/01/window_name_transport/
简单了解一下cavas
参考手册:
http://www.w3school.com.cn/html5/html5_ref_canvas.asp
一些实例:
http://developer.51cto.com/art/201208/354961.htm
其它参考:
http://www.doc88.com/p-597322847144.html
http://www.lihongkun.com/archives/43
关于cookie
缘起
如何在不发起一个Http请求的情况下删除一个Httponly的cookie?
探索:
1. 虽然JS无法读取Httponly的cookie,那么JS是否可以设置或删除Httponly的cookie呢?
答案是否定的
2. 使用http-equiv类型的meta标签是可以设置cookie的,那么是否可以cache一个带有http-equiv类型的meta标签的页面来操作cookie呢?
http-equiv类型的meta标签只能设置、删除、修改非Httponly类型的cookie
分析:
分析1:
JS无法访问Httponly的cookie,其中包括三层含义:
- 无法读取
- 无法设置和修改
- 无法删除
如:
无法通过如下方式设置、修改或删除一个已存在的Httponly的cookie:
1 |
document.cookie = "test=set_by_js; expires=Thu, 01-Jan-2070 00:00:01 GMT; path=/" |
无法通过如下方式设置、修改或删除一个已存在的Httponly的cookie:
1 |
document.cookie = "test=set_by_js; expires=Thu, 01-Jan-2070 00:00:01 GMT; path=/; Httponly" |
注意:或许你通过第一种方式在一个Httponly的cookie已存在的情况下设置了一个新的test cookie,那么基本上是因为两个test的domain或path不同;如:一个Httponly的cookie设置在a.test.com域下,而这时通过document.domain=”test.com”,将domain修改为了 test.com;这时候可以通过第一种方式设置一个testcookie,和原有的Httponly的cookie并不冲突
分析2:
HTML中有一个meta标签,其中的一个用法是http-equiv,如,可以通过如下方式设置cookie:
1 |
<meta http-equiv="Set-Cookie" content="cookiename=cookievalue; expires=Friday, 12-Jan-2021 18:18:18 GMT; path=/"> |
但是,测试发现,似乎无法通过JS创建meta标签的方式来设置cookie
分析3:
测试发现,无法通过meta标签来设置、修改、删除一个Httponly的cookie
做人做事
做人的一些关键字:
尊重、理解、真诚
做事的一些关键字:
态度、方法、效率
人生座右铭:
仁、义、礼、智、信、忠、孝、和