`
文章列表
Java 是一种跨平台的、解释型语言。 Java 源代码编译中间 “ 字节码 ” 存储于 class 文件中。 Class 文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如变量名、方法名等。因此, Java 中间代码的反编译就变得非常容易。目前市场上有许多免费的、商用的反编译软件,都能够生成高质量的反编译后的源代码。所以,对开发人员来说,如何保护 Java 程序就变成了一个非常重要的挑战。本文首先讨论了保护 Java 程序的基本方法,然后对代码混淆问题进行深入研究,最后结合一个实际的应用程序,分析如何 ...
Java程序的源代码很容易被别人偷看,只要有一个反编译器,任何人都可以分析别人的代码。本文讨论如何在不修改原有程序的情况下,通过加密技术保护源代码。   一、为什么要加密?   对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以。遗憾的是,Java程序的源代码很容易被别人偷 看。只要有一个反编译器,任何人都可以分析别人的代码。Java的灵活性使得源代码很容易被窃取,但与此同时,它也使通过加密保护代码变得相对容易,我们 唯一需要了解的就是Java的ClassLoader对象。当然,在加密过程中,有关Java Cryptography Ext ...
摘要: 本部分首先简单介绍sharding系统的基本架构,然后重点介绍sharding机制中常用的三种表数据划分方法。   一.  数据划分算法   1. Sharding 系统的基本结构   上节我们说到Sharding可以简单定义为将大数据库分布 ...
1. 背景 数据库的扩展是一个永恒的话题。对于传统的关系数据库,采用的是纵向扩展(ScaleUp)的方式,即买更好的机器添加 更多的资源来取得更好的性能(如硬件升级、更快更多的CPU、更大的内存、更多更大的磁盘等)。而 ...
在Java中设置变量值的操作,除了long和double类型的变量外都是原子操作,也就是说,对于变量值的简单读写操作没有必要进行同步。这在JVM 1.2之前,Java的内存模型实现总是从主存读取变量,是不需要进行特别的注意的。而随着JVM的成熟和优化,现在在多线程环境下volatile关键 字的使用变得非常重要。在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一 个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。要解决这个问题,只需要像在本程序中的这 样, ...
在多线程交互的中2,经常有一个线程需要得到另个一线程的计算结果,我们常用的是Future异步模式来加以解决。 Future顾名思意,有点像期货市场的“期权”,是“对未来的一种凭证”,例如当我们买了某个房地产开发商的期房 ...
说明:转载自:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html ava 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized ”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现 ...
1.maven-surefire-plugin简介 Maven本身并不是一个单元测试框架,它只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或者TestNG的测试用例。这个插 件就是maven-surefire-plugin,也可以称为测试运行器(Test Runner),它能兼容JUnit 3、JUnit 4以及TestNG。 在默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(默认为src/test/java/)下所有符合一组命名模式的测试类。这组模式为: **/Test*.java:任何子目录下所有命名以Test开关的 ...
1.安装maven:     目前网上共存在三种方式:       1.离线安装(自己和同事分别安装过一次,自己的安装成功了,同事的没安装成功。所以不推荐使用)       2.使用http://m2eclipse.sonatype.org/sites/m2e 到 Help → Install new Software这里安装,这个可以安装成功,缺点是很耗时.不推荐       3.在eclipse market里安装.具体操作:help-->eclipse marketplace,选择Popular tab项,在里面找到maven插件,点击install.执行安装操作. ...
这一点有多种方式做: 1. 用!来处理 http://freemarker.sourceforge.net/docs/dgui_template_exp.html#dgui_template_exp_missing 2. 在开发环境和生产环境用不同的Error Handler http://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html 比如生产环境用TemplateExceptionHandler.IGNORE_HANDLER

String考点

1.String StringBuffer StringBuilder 三者的区别 String是固定长度的字符串,如果要发生变化必须重新生成新的实例; String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 效率比较: (1)被拼接的对象在内存中时,使用String String S1 = "This is only a"+ " simple"+" test" StringBuffer Sb = new StringBuilder(“This is only ...
当你在eclipse中集成了maven2后,默认情况下,eclipse会在你的系统盘(c:/)下创建一个目录, C:/Documents and Settings/danlley/.m2/repository 并将其作为数据仓库目录。如果有一天当你很不幸的需要重做系统,而又无法将maven2仓库目录下的数据及时转移的时候,你此前对maven2仓库所做的一切维护都将意味着竹篮打水一场空。为了让你的在maven2中的损失最小,提高你所谓劳动成果的安全系数,建议将你的数据仓库进行迁移,具体设置方式如下: ---------------------------------------------- ...
    使用 TransactionTemplate 绝对会增加你的代码与Spring的事务框架和API间的耦合。 到底编程式事务管理是不是适合你的项目需要由你自己来决定。       应用的代码必须在一个事务性的上下文中执行,这样就会像这样一样显式 ...
1.尽量使用final修饰符。 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String。为String类指定final防止了使用者覆盖length()方法。另外,如果一个类是final的,则该类所有方法都是final的。java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%。 2.尽量重用对象。 特别是String对象的使用中,出现字符串连接情况时应使用StringBuffer代替,由于系统不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回 ...
1.异常处理的流程: ① 遇到错误,方法立即结束,并不返回一个值;同时,抛出一个异常对象 。 ② 调用该方法的程序也不会继续执行下去,而是搜索一个可以处理该异常的异常处理器,并执行其中的代码 2.Exception体系包括RuntimeException体系和其他非RuntimeException的体系 : ① RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越 ...
Global site tag (gtag.js) - Google Analytics