- 浏览: 168838 次
- 性别:
- 来自: 长沙
最新评论
-
JanFan_张过要学会坚持:
楼主你好,我也写一篇关于字符串匹配的总结,其中受了不少你的启发 ...
打破思维断层之最优美的BNDM -
十三月的:
yun900800 写道哦,,删掉之后Ok了,是因为会先加载c ...
用.class文件创建对象 -
yun900800:
哦,,删掉之后Ok了,是因为会先加载classpath下的类吗 ...
用.class文件创建对象 -
十三月的:
yun900800 写道麻烦看看啥问题啊?我用你的代码测试了一 ...
用.class文件创建对象 -
wodelaop:
12312312333333333333333333333
用.class文件创建对象
文章列表
Java代码混淆和JSON数据序列化问题
基本观点:
第一点:Java代码生成的Jar文件很容易被反编译,常用工具JD-GUI(http://jd.benow.ca/)
第二点:Jar文件常用的“加密”方式是混淆(有专门的混淆软件,有些需要收费的),使得类名、类中字段和方法名称等难以肉眼判断。例如
第三点:JSON协议使用方便,非常流行。常用框架由于可以使用自定义Model类,直接转换成JSON格式的数据,使用起来方便快捷。我使用的alibaba的fastjson.jar。(吐槽一下:虽然该包有不少bug需要进一步完善,整体已经相当不错了。) 例如:
基本的Model
...
第一步: 给你一个编译好的class文件以及它的包名,创建一个对象出来。
1)class文件源代码
package com.wsc.classloader;
public class Tool{
public void print() {
}
}
2)使用javac Tool.java 编译成class文件
3)将Tool.class文件读取到内存中,生成byte[]数组
/**
* 加载class文件
*
* @param clazzPath
* ...
迭代器模式
目录:
需求
使用
JDK源码
深入:为何要单独抽离出一个Iterator接口?
正文:
容器,在不同语言中都扮演着重要的角色,如Java中的List、Set和Map。迭代器模式是为容器而生的设计模式,是容器遍历的精灵。
第一部分:需求
1)使用者:针对多种容器,希望所有遍历方法一样,如容器更换代码无需变动
2)被使用者:不希望暴露内部实现细节,不同类型容器如何实现不需了解
第二部分:使用
迭代器的使用很简单,下面举例
例子1:ArrayList
publi
走进序列化之基础篇(勇气篇)
介绍:
基础篇:超多案例+超详细解析序列化后的二进制文件(以字节为单位分析)。
原理篇:JDK源码+Java-Object Serialization Specification官方文档解读。
终结篇:序列化机制之我见+翻译的序列化英文的官方文档PDF。
(基础篇称之为勇气篇,内容超多能看完确实需要勇
BNDM
目的:
本篇博客以BNDM算法为载体,意图在减少思维断层情况下了解算法思想。
目录:
1:其他算法回顾
2:BNDM算法介绍
3:构建辅助表B
TreeMap
目的:
通过对JDK源码的分析,进一步了解红黑树。
目录:
1:TreeMap介绍
2:红黑树介绍
3:红黑树插入及TreeMap插入实现
4:红黑树删除及TreeMap删除实现
TreeMap
目的:
通过对JDK源码的分析,进一步了解红黑树。
目录:
1:TreeMap介绍
2:红黑树介绍
3:红黑树插入及TreeMap插入实现
4:红黑树删除及TreeMap删除实现
Priority Queue
目的:
通过对JDK源码的分析,进一步了解堆和优先队列,体会JDK源码的优美之处。
目录:
1:概念
2:源码结构
3:方法分析
概念:
概念1:堆
堆,n个关键字序列K1,K2,…,Kn,当且仅当该序列满足如下性质称为堆
ki≤K2i且ki≤K2i+1(最小堆) 或 (2)Ki≥K2i且ki≥K2i+1 (最大堆)
堆一般用顺序存储结构存储(数组),但逻辑上可以认为是一个完全二叉树。
Horspool和Sunday
目的:
以Horspool和Sunday算法为载体,试图在减少思维断层情况下学习作者算法思想
目录:
1:Horspool算法:简单的力量
2:Horspool代码实现
3:Sunday算法过程
BM算法
目的:本博客以BM算法为载体,意图在减少思维断层情况下了解算法思想。
目录:
BM算法的创新之处在于“跳跃式”思维方式
BM算法VS KMP算法
BM过程展示
BM案例分析
代码实现
进一步思考
最大子序列和
目的:
本博客以求最大子序列和算法为载体,试图在减少思维断层的情况下解决问题。
目录:(以全新视角审视本问题)
1)问题阐述 2)问题本质 3)代码实现
第一步:问题阐述
一个有N个元素的整型数组A,有正有负,数组中连续一个或多个元素组成一个子数组,这个数组有很多子数组,求子数组之和的最大值。
例如:[1,-2,3,5,-1,-1, 3]的最大子序列[3,5,-1,-1,3].
令人惊叹的Shift-And/Shift-Or
目的:以Shift-And算法为载体,试图在减少思维断层情况下学习作者算法思想。
目录:
1:主要思想
2:算法介绍
KMP
目的:本博客以KMP算法为载体,试图在减少思维断层情况下学习作者算法思想。
目录:
1)开脑之字符匹配思路
2)浅析回溯目的
3)一定要回溯吗
4)什么时候回溯?什么时候不回溯?
第三篇:分治法之贪婪选择
目的:
本篇博客并不具体的讨论某一个算法,而是将同类型的问题集中展示,从而对分治法有 更进一步的认识。
目录:
1)问题1:部分背包问题
2)问题2:找零钱问题
3)问题3:教室规划问题
4)问题4:最小生成树问题
5)问题5:最优二叉树问题
问题1:部分背包问题(最大)
第二篇:分治法之动态规划
目的:本篇博客并不具体的讨论某一个算法,而是将同类型的问题集中展示,从而对分治法有 更进一步的认识。
目录:
斐波那契数列问题
最长公共子序列
字符串相似度问题
最优二叉搜索树问题
0-1背包问题
问题1:斐波那契数列的问题