- 博客(79)
- 资源 (1)
- 收藏
- 关注
转载 文章标题
这是Singleton pattern. 但是现在已经不建议这样写了。首先这没有被lazy initialization,在程序启动时(class Smarty被load)就会创建你的static instance,拖慢启动速度。要解决lazy initialization, 就得这么写: public class Smarty { private static Smarty insta
2015-05-02 16:07:50
429
原创 文章标题
写了个比较简单的python程序,尝试了os模块中几个常用的函数,还有个统计txt文档中单词数目的功能# -*- coding: utf-8 -*-__author__ = 'Administrator'import os,repath = u'F:/编程书籍/书/Python/python-master/agmcs/0006/test/'path2 = u'F:/编程书籍/书/Python
2015-04-16 22:28:02
443
原创 Python中的OS模块
写了个比较简单的python程序,尝试了os模块中几个常用的函数,还有个统计txt文档中单词数目的功能# -*- coding: utf-8 -*-__author__ = 'Administrator'import os,repath = u'F:/编程书籍/书/Python/python-master/agmcs/0006/test/'path2 = u'F:/编程书籍/书/Pyt
2015-04-16 21:30:26
505
原创 Python读取文件
今天学习python,学到读取文件那章,书上是这么写的:file = open("E:\test.txt",'r')但是老是提示错误..后来在网上找到了正确的写法:open(r"E:\test.txt",'r+')open(r"E:\test.txt",'r')
2015-04-09 22:34:53
1009
转载 java中的Timer类和线程问题
最近用java开发了一个应用,主要是使用java中的Timer类做定时操作网页的事情。程序的设计是每个用户可能会有至少8个Timer类,这样当用户数多时Timer的数量就呈直线上升了。按照java的官方文档说明,Timer类会自动启动一个新线程,而多个Timer类则会有开辟多个线程,同时Timer类的线程是非daemon(守护)线程,所以一旦启动除非明确cancel掉,是一直存在的。因此,我的这个
2014-09-10 16:14:08
1754
原创 插入排序
#include "myinclude.h"void InsertionSort(int [],int);void main(){ int test[6] = {2,3,1,6,9,8}; int i = 0; InsertionSort(test,6); for(;i < 6;i++){ printf("%d ",test[i]); }}/*插入排序*/void Inse
2014-08-07 20:43:03
350
原创 创建单链表
#include #include #define FALSE 0#define TRUE 1typedef struct NODE{ struct Node * link; int value;}Node;//头指针Node *root = NULL;//创建链表Node *createNode(){ int num = 5; int i = 0; Node *h
2014-08-07 19:39:29
413
转载 逐层打印二叉树节点数据
/************************************************************************//*/* example input: ABD###CE#F###/* bi-tree built:/* A/* / \/* B C
2014-08-06 20:53:11
753
原创 josephus链表解决
p1 = createNode(5);p2 = p1;for(;i printf("%d ",p2->num);p2 = p2->next;}printf("\nthe result is %d ",makeChoice(5,2,p1));}PNode createNode(int n){int i = 0;PNode head,p,link;h
2014-08-06 15:56:29
522
转载 Java排序算法(十):桶式排序
Java排序算法(十):桶式排序桶式排序不再是一种基于比较的排序方法,它是一种比较巧妙的排序方式,但这种排序方式需要待排序的序列满足以下两个特征:待排序列所有的值处于一个可枚举的范围之类;待排序列所在的这个可枚举的范围不应该太大,否则排序开销太大。排序的具体步骤如下:(1)对于这个可枚举范围构建一个buckets数组,用于记录“落入”每个桶中元素的个数;
2014-07-29 21:18:46
414
转载 广播与多播的实现
广播与多播的实现1 IP地址分类 A 类网络地址有128 个(支持127)个网络,占有最左边的一个字节(8 位)。高位(0)表示识别这种地址的类型。 B 类地址使用左边两个8 位用来网络寻址。两个高位(10)用于识别这种地址的类型,其余的14 位用作网络地址,右边的两个字节(16 位)用作网络节点。 C
2014-07-16 15:42:48
428
转载 C/C++中static关键字详解
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将
2014-07-15 15:33:39
330
原创 c,c++,java中static关键字的比较
今天由于项目需要,需要开发java的程序,于是就开始学习java语言,在看别人代码学习的过程中,发现了static关键字,仔细看了下,发现还是和c,c++中有些不同的,现在把3者的比较做个记录。java中的staticjava中的static用来修饰类的成员函数,或者是成员变量,这样这些变量就成为了静态方法(类方法)和静态变量(类变量)比如有类A中定义了静态变量varsam
2014-07-15 15:28:15
621
原创 C vs Java基本数据类型
1.C语言的数据类型:(1)五种基本数据类型:字符型(char:占1个字节)、整型(int:占4个字节)、单精度实型(float:占4个字节)、双精度实型(double:占8个字节)和空类型(void:占0个字符)。(2)几种聚合类型:数组、指针、结构、共用体(联合)、位域和枚举。注:除void类型外,基本类型的前面可以有各种修饰符。修饰符用来改变基本类型的意义,以便更准确地适应各种情
2014-07-11 16:13:10
515
原创 getApplicationContext()空指针
public class InsertActivity extends Activity {private String TAG = "InsertAPK";// private Context context = getApplicationContext();@Overrideprotected void onCreate(Bundle savedInstanceState)
2014-06-25 09:52:05
3993
2
转载 Runtime.getRuntime().exec()
Runtime.getRuntime().exec()是一个很有用的函数,可以调用操作系统的shell指令。但是这个函数有一个问题,当它把传给它的控制台命令丢给shell执行后,它就立即返回了。 这个问题看起来不大,但是如果我们用shell指令复制一个A文件到B文件,然后在下一语句中对B文件进行操作,那么问题就来了。因为shell指令很可能还没有执行完(而exec( )函数
2014-06-23 15:08:07
1089
转载 Android当道,不加密的APP必死
摘要 dex风险太大了,很多人有转向了使用native code编写关键代码,觉得so不好破解的同时又能提高性能并不受内存的制约,什么ida什么elf之类的工具也无法从容的查看代码,所以so成了上上策。可是我觉得你的jni一旦被别人攻下,那么恭喜你的so,我直接拿来用!!爱加密目录[-]DEX指令改写,破解你的程序没商量dex2jar 你的dex被一览无
2014-05-11 22:37:04
686
原创 如何混合native办法在so库函数对应关系
如何混合native办法在so库函数对应关系? jni办法注册体式格式有两种, 1、经由过程javah产生函数头,该种体式格式产生的办法具有固定的&#26684;式。该体式格式使逆向解析人员斗劲轻易获取java层native办法对应的本处所
2014-05-11 21:47:56
594
原创 软件能正常反编译,但不做任何改动也无法打包回的问题
你用apktool b回编译的时候会报错,看第一个错就可以了,不知道怎么插图~~第一个错是libpng error: Not a PNG fileERROR: Failure processing PNG image /home/mindmac/Repackage/CqmamsMobile1.1.6/res/drawable-hdpi/station.png其实就是res/draw
2014-05-09 17:24:42
1663
转载 .9.png
大家好,这教程本来打算上次发M9的皮肤的时候就发的。后来在反编译的时候出了问题,不得不搁浅了。胎死腹中啊。这次重新找了一个工具,终于解决了9.png的图片的问题。 说说本人的近况: 手机终于拿回来了。苍天啊„„内牛满面当中。 最近新学到了许多东西,美化又有了新进展„„ 介绍一下这次教程的情况: 以前的那
2014-05-09 17:19:16
482
转载 ARM
小弟近来开始学习原生逆向,并对其中一些基础知识做下总结(大神勿喷,出错请指正)...Android的原生程序运行于Linux内核上,并且处理器基于ARM,因此对于NDK的逆向,一些设计汇编知识的安全技术(注入,HOOK,劫持)等就需要了解有关知识。因此有必要学习一些与ARM相关的知识,下面主要介绍我们必须要了解的知识,具体指令等更加详细的知识参考相关文档,总结目录如下:寄存器比
2014-05-08 10:15:54
467
转载 Android 的提权 (root) 原理是什么?修改
真实姓名、TELLO913、温赫 等人赞同Android的内核就是Linux,所以Android获取root其实和Linux获取root权限是一回事儿。你想在Linux下获取root权限的时候就是执行sudo或者su,接下来系统会提示你输入root用户的密码,密码正确就获得root权限了。Android本身就不想让你获得Root权限,大部分手机出厂的时候根本就没有su这个程序。所以
2014-05-07 22:19:12
2345
转载 Android Native So加壳技术
这是13年12月份做的一个项目,难度相对较大,花了一个月的时间,不断试错,最后终于在元旦前晚完成,整理一下写出来,部分细节出于公司技术保护所以没有细说。目前市面上针对Apk的保护主要是基于Dex,公开的有DexGuard、梆梆、爱加密、ApkProtect等,私底下相信很多涉及到技术保密的App开发商都在做自己的保护策略。而针对so的保护就相对滞后了一些,这里有so在app中扮演的
2014-05-06 21:22:03
1257
转载 对于Android NDK编译器ARM和Thumb模式的理解及Toolchain的切换clang编译器
以前在做Symbian的时候,曾经研究过ARM CPU的指令集问题,ARM处理器支持两套指令集,即ARM和Thumb。ARM为32位指令集而Thumb为16位指令集,理论上32位可以提供更快的执行速度但会生成更大的二进制执行文件,而16位的Thumb则恰恰相反,省地但慢,这也正是体现出了ARM对于嵌入式设备的专业性。对于我这种牺牲一切换速度的理念来说,当时就留下了ARM就比Thumb快的印象,以致
2014-05-06 20:02:48
1147
原创 什么是MD5,什么是SHA-1
什么是MD5,什么是SHA-1,如何校验这些Hash。还有拿单个ISO文件的MD5,SHA-1讯问是不是原版的问题,在这里,对以上问题做一个终结解释! 让我们先来了解一些基本知识,了解hash。 Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压
2014-05-06 16:30:36
791
原创 SHA家族
SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。后四者有时并称为SHA-2。SHA-1在许多安全协议中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的散列函数)的后继者。但SHA-1
2014-05-06 16:21:19
637
转载 LDMFD
ARM里面的堆栈是满递减(FULL DESCENDING)的。SP指向最后一个入栈的数据,SP的地址由高向低生长。对于LDM和STM指令来说,编号小的寄存器对应堆栈中的低地址。STMFD的寻址方式是事先递减方式(Decrease Before)。内存地址可以用下面的式子表示:start_address=SP-(Number of register *4)end_addr
2014-05-02 13:26:37
1301
转载 使用try Catch小结
什么时候用try Catch在你觉得容易出错的地方,一般大家会给整个大的程序try Catch一下,比如某个大的工作线程事实上对性能影响不大,因为try Catch是为了防止不可预见的异常,不至于程序崩溃,所以不是经常中断,然后组织throw exception这样的大动作。任何异常都用Try Catch吗很多异常是可预见的,比如参数错误,比如事件有无订阅等等,最好
2014-04-21 23:08:00
348
转载 使用try Catch小结
什么时候用try Catch在你觉得容易出错的地方,一般大家会给整个大的程序try Catch一下,比如某个大的工作线程事实上对性能影响不大,因为try Catch是为了防止不可预见的异常,不至于程序崩溃,所以不是经常中断,然后组织throw exception这样的大动作。任何异常都用Try Catch吗很多异常是可预见的,比如参数错误,比如事件有无订阅等等,最好
2014-04-21 22:59:32
313
转载 JAVA异常
你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 java.sql.Connection conn = ... 3 try { // ⑸ 4 Statement stat = conn.createState
2014-04-21 22:57:00
353
转载 JAVA异常
六种异常处理的陋习你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 java.sql.Connection conn = ... 3 try { // ⑸ 4 Statement stat = con
2014-04-21 22:53:15
292
转载 一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发
六种异常处理的陋习你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 java.sql.Connection conn = ... 3 try { // ⑸ 4 Statement stat = con
2014-04-21 22:49:50
269
原创 有了多态的存在,instanceof存在的价值在什么地方
public interface Base{ public void base();}class Child1 extends Base{ public void base(){} //实现接口方法 public void a(){} //两个子类,方法不同,也中是重写父类的方法}class Child2 extends Base{
2014-04-21 16:03:17
572
原创 Java反射机制
JAVA语言中的反射机制: 在Java 运行时 环境中,对于任意一个类,能否知道这个类有哪些属性和方法? 对于任意一个对象,能否调用他的方法?这些答案是肯定的,这种动态获取类的信息,以及动态调用类的方法的功能来源于JAVA的反射。从而使java具有动态语言的特性。 JAVA反射机制主要提供了以下功能: 1.在运行时判断任意一个对象所属的类
2014-04-21 14:51:14
310
转载 控制反转(IOC)与依赖注入(DI)
IOC 和DI,这两个在Java中指的是控制反转和依赖注入;熟悉struts2 , spring的人对于这两个名词都很不陌生;最近在学习的过程中,又不断的碰到这两个词;而网络上,更多的是对依赖注入的方式进行了说明;而很少提到具体什么是IOC和DI;在此蛮说一下自己对这两个的理解;依赖注入、控制反转;提到这两个概念,必须首先了解什么是依赖;依赖:"依赖描述了两个模型元素之间的
2014-04-21 14:05:02
445
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人