All THINGS about JAVA
文章平均质量分 74
Arvin_Rong
这个作者很懒,什么都没留下…
展开
-
国密算法SM2/3/4简单比较,以及基于Java的SM4(ECB模式,CBC模式)对称加解密实现
可使用的大量标准加密算法实现,其中包含了SM2,SM3,SM4。注意: 此版本我在JDK1.8环境下,不同版本JDK需要找到匹配的依赖版本1.8及以上可以使用bcprov-jdk18on。简单说明:加密算法依赖了groupId:org.bouncycastle中的bcprov-jdk15to18,Bouncy Castle (方式二:依赖bcprov-jdk15to18(以CBC模式为例),代码根据GPT-4生成修改调试,可运行。方式一:依赖bcprov-jdk15to18(以ECB模式为例)原创 2024-01-20 16:50:29 · 12471 阅读 · 3 评论 -
Gradle中 Implementation 与API 声明依赖方式的对比
可以看到的一个显著差异,在生产者/库项目中用implementation方式声明的依赖不会出现在消费者项目的compileClasspath中,因此我们不能在消费者项目中使用相应的库。声明依赖时,这个依赖同时被暴露给该模块的消费者。如果一个模块的公共API在其接口中暴露了第三方库的类或接口,那么这个依赖应该使用api。声明依赖时,该依赖仅对声明它的模块可见。这意味着该依赖对于该模块的消费者是隐藏的。取决于你是否想将依赖项暴露给其他依赖于你的模块的模块。依赖将导致依赖于该模块的所有消费者都需要重新编译。原创 2023-12-21 16:36:57 · 792 阅读 · 0 评论 -
通过https协议访问Tomcat部署并使用Shiro认证的应用跳转登到录页时协议变为http的问题
我这里配置了以上两步以后,后端request.getScheme()方法仍然获取的是http,因为知道scheme这个值是RemoteIpValve这个类处理的,就看了下代码,发现server.xml中关于RemoteIpValve还有一个配置项,叫internalProxies是一个关于ip的正则表达式,代码中有一个if条件,只有当反向代理的ip可以通过正则匹配成功才会处理x-forwarded-*的header。我们部署架构中一个值得注意的方面是,网络前端有一个物理负载均衡器,负责处理SSL认证。原创 2023-12-19 22:08:33 · 1086 阅读 · 0 评论 -
Spring学习笔记 使用XML配置实现Bean的auto-wiring (自动绑定)
Spring在配置过程中可以实现Bean的引用类型属性与其他已定义好的Bean的自动关联,除了可以减少手工输入外,还可以实现应用的动态构建。不过大多数时候需要整个应用遵循特定的开发规则与命名规则,否则很容易造成程序难于理解与混乱。很多人更愿意多做点工作也不愿意造成代码调试的困难。如果要实现自动关联,很简单,XML配置方式只需要在Bean标签中加入autowire属性即可。而且这种关联不仅仅限制与B原创 2012-07-20 23:15:32 · 2469 阅读 · 0 评论 -
Spring学习笔记 关于spring 2.x中dependency-check标签与Spring3中的实现方式
在Bean被创建时Bean的属性(property)如果在配置文件Bean的定义中没有进行初始化赋值,默认情况下Spring对于没有进行初始化的属性(property)是不做检查的。但是很多情况下会要求Bean特定的属性必须进行初始化赋值,在Spring2.x中通过在bean标签中使用dependency-check属性设定由Spring进行强制检查的方式。denpendency-check属性有原创 2012-07-19 19:01:11 · 8059 阅读 · 1 评论 -
Spring学习笔记 关于Spring创建Bean的模式-Singleton(单例模式)和Prototype
刚开始接触Spring的时候一些基础的教学在说到Bean的创建时会提到Spring的单例模式,就是说默认情况下Spring中定义的Bean是以单例模式创建的。如果以前了解设计模式中的单例模式的话很容易对这种说法产生先入为主的印象。事实上,Spring中的单例模式还有许多需要注意的地方。在GoF中的单例模式是指一个ClassLoader中只存在类一个实例。而在Spring中的单例实际上更确切原创 2012-07-18 14:01:18 · 9947 阅读 · 0 评论 -
Spring学习笔记 使用Non-Static Factory(非静态工厂类)创建Bean
同上一篇中静态工厂类创建Bean类似,唯一不同的是工厂类中获取实际对象的方法比如:getInstance() 不是静态方法(non-static)。工厂类代码:package factorybean;import injection.MailConfig;public class NonStaticMailConfigFactory{ public MailC原创 2012-07-14 13:59:01 · 2203 阅读 · 0 评论 -
Spring学习笔记 关于Bean属性的初始化
依赖注入,可以使Bean中的属性通过Spring进行配置,从HelloWorld中可以看到,由Spring的XML配置文件决定了对象被创建时它的属性是如何被初始化的。Spring配置文件中定义Bean同时就定义了它的属性的值或引用的对象,HelloWorld中是通过Bean中的Setter方法实现的。算起来Spring中初始化类属性值有两种方法,第一种,使用Bean中的Setter方法,第二种使用原创 2012-06-18 00:29:42 · 7520 阅读 · 0 评论 -
Spring学习笔记 使用Static Factory(静态工厂类)创建Bean
普通定义Bean并且进行初始化的方法一般通过property(属性)的setter方法或者构造方法进行。例如 这种定义创建Bean相当于使用new com.csdn.net.arvin.BeanClass(); 的方法来新建Bean对象。在实际应用中很多情况下还会使用设计模式中的工厂模式来创建对象。使用静态工厂类即调用工厂类中的静态方法,比如public s原创 2012-07-11 00:51:36 · 10675 阅读 · 3 评论 -
Spring学习笔记 初始化属性为null值的方法
有些情况需要将属性值初始化为null,可以使用标签: 以上方法将nullValue属性初始值设置为null,如下这样初始化null值是不可以的。原创 2012-07-10 22:45:39 · 1582 阅读 · 0 评论 -
Spring学习笔记 关于FactoryBean接口的使用
之前整理了静态工厂与非静态工厂类创建Bean的内容,今天学到了FactoryBean的使用。查找了下资料关于factory就这三种常用的方法了,另外这记里的FactoryBean与非静态的工厂类XML配置实现结果基本是一样的,但是使用FactoryBean看起来更简洁并且实现了类型安全。(Spring中有需要预置的FactoryBean,例如JndiObjectFactoryBean,LocalS原创 2012-07-24 21:26:20 · 2395 阅读 · 0 评论 -
Spring学习笔记 使用annotation配置实现Bean的auto-wiring (自动绑定)
使用@Autowired标注来进行porperty与Bean的auto-wiring。准备首先要使用@Autowired需要在spring-config.xml 中增加配置,一般有两种方式:1.在配置文件中增加context命名空间定义,并添加 标签配置。完整代码:<beans xmlns="http://www.springframework.org/schema/bea原创 2012-07-23 21:38:47 · 2979 阅读 · 0 评论 -
J2EE 使用p6spy查看JAVA程序中执行的SQL,TOMCAT配置
今天调整一个老版本系统,由于是几年前的框架,了解比较详细的人已经比较少,调试有点困难,一个权限管理系统中像关联的表比较多,而所有代码已经打成了jar包,找不到源码,没法查看其中SQL语句,但是确定原因应该就是数据错误造成,需要找到模块对应的数据库表以及关系才能查出问题。上网搜了一下可以使用p6spy在控制台或日志文件中输出程序执行的SQL信息,而且对于目前简单的需求配置非常简单。1.上网下原创 2012-07-23 22:18:43 · 3144 阅读 · 0 评论 -
Spring学习笔记 关于Bean的初始化和清理-init和destroy方法
如果需要在Bean被创建以及销毁时执行特定的初始化与清理操作在Spring中有两种选择。1.在XML中定义bean的init-method与destroy-method属性 执行init与destroy方法非强制,在xml中自由配置,与Spring框架依赖度低2.使Bean实现初始化与销毁操作接口InitializingBean与DisposableBean,如:publi原创 2012-07-24 12:40:27 · 4843 阅读 · 0 评论 -
Understanding the Java ClassLoader part.1 (认识JAVA中的ClassLoader )
找到了一篇很古老的文章,但是用作初步对ClassLoader的了解很不错。原作者:Greg Travis (mito@panix.com) 开始:This tutorial provides an overview of the Java ClassLoader and takes you through theconstruction of an example ClassL翻译 2012-11-20 16:02:16 · 1898 阅读 · 0 评论 -
All About JAVA Maven的安装
一转眼几个月过去了。。真是忙碌的几个月,最近在弄CAS 身份认证系统,新版本的CAS需要使用Maven进行构建,所以还要研究下Maven相关的资料。第一步就是下载安装Maven。根据官方网站的文档很容易就可以将Maven安装到本机。具体步骤记录如下:到官方下载页面下载构建好的工程(也有源码可以拿回来自己Build)http://maven.apache.org/download.cgi (原创 2013-08-13 22:32:33 · 2009 阅读 · 0 评论 -
All About JAVA Eclipse中Maven插件的安装(indigo)
记得一年前公司送的一本书作为生日礼物-《Maven实战》,今天还真是用上了,虽然在上海的天气里已经有点发霉的节奏。今天按照书上的说明安装Eclipse中Maven的相关插件时发现。。书中内容部分链接已经过时或被迁移走了,但是了有方向也好,上网找一下新的方法后解决。书中的 安装m2eclipse 章节中提供了两个插件的repository地址,分别是原创 2014-03-13 14:01:47 · 2309 阅读 · 0 评论 -
All About JAVA An invalid XML character (Unicode: 0xdd65) was found in the comment 错误
在这两天进行一个早期系统迁移工作,从Solaris的jes迁移到rhel的weblogic,程序迁移过来后,一个页面的文本编辑器无法初始化,后台报了An invalid XML character (Unicode: 0xdd65) was found in the comment.这个错误。在编辑器初始化前需要处理一个XML文件,代码片段如下: 拼写检查 sp原创 2014-04-01 14:29:46 · 4154 阅读 · 0 评论 -
All About JAVA javamail的pop3以及IMAP方式读取未读邮件等操作
/** * 可以在props下设置认证信息,协议和端口信息,超时等信息,这样在store.connect的时候可以根 * 据props里是否设置了认证信息来选择不带参数的connect()或者如下有参数的connect(...)方法 * store.connect(user, password); store.connect(host, user, password); */ Prop原创 2015-05-16 12:54:55 · 9358 阅读 · 0 评论 -
Spring学习笔记 关于Bean属性的初始化 - 使用inner bean以及List, Map与Set的初始化
对于引用类型的属性,可以使用进行初始化。如下图,ref="messager",messager为另外定义的一个id为messager的bean。 标签内定义的带有id或者name属性的标签可以在Client代码中引用到进行使用。如果上图中定义的id 为messager的bean(第二个红框)的目的只是初始化messageLooper中的属性,而不想被Client代码访问,这时就可以使用原创 2012-06-20 15:34:35 · 3963 阅读 · 0 评论 -
Spring学习笔记 Hello World
今天看了传统方式使用外部XML来配置Srping的一些资料(Spring2.5开始引入了Annotation,并且在Spring3后有了提升,Annotation是配置Spring的另外一种方式,当然这还需要JAVA5以及更高版本的支持)。Spring就好象一个大工厂,在Client端代码需要实例化类的地方,可以使用Spring的方法直接根据Spring外部XML配置文件中配置的id取得要使用原创 2012-05-22 01:01:40 · 1360 阅读 · 1 评论 -
Spring学习笔记 Spring gets started
最近在做一些项目集成的工作,不同的项目分支有一些相同的功能模块但是需要集成不同的第三方公司的应用。项目引入的Spring并基于Spring进行了构建。而Spring对于我现在正在做的集成工作是再适合不过的了,所以从基础开始系统学习一下Spring来更好的完成集成工作,使得今后其他新上线项目进行集成的时候不需要修改原有的项目代码,而只需修改相关的配置文件即可。因为平时用到的东西很多,但不会经常用到,原创 2012-05-20 19:14:05 · 987 阅读 · 0 评论 -
All About JAVA 关于设计模式中的“策略模式”
“策略模式”遵循了最基本的一条设计原则,将程序中经常需要改变的部分提取出来,使它与程序中不变的部分分离,并且“策略模式”能使设计更具有意义且便于维护。原创 2010-11-28 13:16:00 · 588 阅读 · 0 评论 -
All About JAVA 关于英文服务器下输出含有中文字符文件乱码的问题
<br />先看看生成文件的代码片段:<br />public static void write(String xml, String file) throws IOException { File xmlFile = new File(file); if (!xmlFile.exists()) xmlFile.createNewFile(); PrintStream fos = null;原创 2011-04-08 14:38:00 · 988 阅读 · 0 评论 -
All About JAVA 关于JAVA的几种常用数据结构
<br />1. ArrayList 最常用的~<br /> <br />2. TreeSet 可以保持其中的数据一直是按照某种顺序排列的,并可以避免重复数据。<br /> <br />3. HashMap 可以以 名称/值 的方式来访问其中的数据元素。<br /> <br />4. LinkedList 如果需要经常在列表中间某些位置删除添加数据的话,LinkedList可以提供更好的性能。<br /> <br />5. HashSet 可以避免集合中存在重复数据,并且如果给出一个元素,可以快速查找出集合原创 2010-11-07 21:36:00 · 663 阅读 · 0 评论 -
All About JAVA 杂
1. JAVA中方法的参数是按值传递的(传递变量的副本),意味着此参数在方法内被改变不会导致原先传入的变量改变。当传递的参数为引用变量时,虽然也会生成引用变量的一个副本,但是此副本和先前的引用变量实际上是指向同一个对象的,这样会导致方法内对传入的引用变量所引用的对象进行修改,会影响到方法外作为参数传入的对象的状态。2. 对象的实例变量若不进行初始化,会被赋予默认值 整型 0, 浮点型 0.0 引用变量 null 布尔型 false。 方法内的本地变量必须初始化才能使用。 3. JAVA API的地址 h原创 2010-10-29 17:29:00 · 517 阅读 · 0 评论 -
All About JAVA 关于设计模式中的“观察者模式”
观察者模式描述了一种一对多的关系,其中“一”被称作“主题对象/信息发布者”,“多”被称所“观察者”。用观察者和主题对象的这种称谓来解释观察者模式:存在多个观察者类需要“取得”和“使用”一个主题类中提供的全部或者部分特定的数据,并且当特定的数据发生变动时,观察者会自动得到更新的数据并执行一系列操作。拿网络中经常提到的“订阅”这种行为可以很形象的比喻观察者模式,比如一个人很喜欢团购,他希望每当有新的团购信息的时候能收到通知,于是他可以在团购网站通过注册并留下电邮地址的方式来订阅团购信息,这时团购原创 2010-12-15 01:27:00 · 736 阅读 · 2 评论 -
All About JAVA 关于设计模式中的“单例模式”
“单例模式”是设计模式当中最简单的一个,它的目的就是确保某个类只存在唯一一个实例,并提供给所有的其他类使用。当需要用到这个单例类的对象时不是使用new来得到一个新的对象,而是使用单例类的一个静态方法(一般是getInstance)获取已经创建好的对象。使用“单例模式”设计的类常常用来管理共享的资源,比如数据库连接、线程池,或者用来保证应用程序的配置文件的对象和其他一些全局共享的资源不会出现多个副本。 如何实现一个单例类的设计? 先看看下边的一段代码:publ原创 2010-12-10 02:13:00 · 501 阅读 · 0 评论 -
All about JAVA 读取配置文件的方法 (这里是config.properties)
我的配置文件中只有两行,column=50id=10以下是读取配置文件的代码示例。import java.util.Properties; // 读取属性配置文件的工具类import org.apache.commons.io.IOUtils; // IO工具类,其中安静的释放对象很好用public void propertisReader(){ Properties propt = null; InputStream is = null; try原创 2010-11-29 16:42:00 · 946 阅读 · 0 评论 -
All About JAVA 关于JAVA对象的创建以及构造方法(2)
<br />如果一个类A继承自另一个类B,当创建这个A类的对象时,构造函数是怎样运作的? 我们知道一个类继承了另一个类后,这个类会包含父类的所有的实例变量和方法。也包括父类中的private实例变量,虽然在子类中无法直接访问父类中标记为private类型的实例变量,但是仍然可以通过父类中定义的GETTER与SETTER来进行操作。并且继承自父类的一些其他方法也有可能会用到父类中的一些实例变量,如果父类中的实例变量没有进行初始化,很可能进行A的初始化时会遇到问题,所以在我们初始化A类对象之前应该先对B类(父类原创 2010-09-30 10:40:00 · 531 阅读 · 0 评论 -
All About JAVA 继承、多态、抽象类、接口、面向接口编程
继承实现了代码的复用,抽象类兼顾了代码复用与实现多态的目的,接口是一个100%的抽象类,它的存在则纯粹是为了多态。 多态,示例代码如下: public abstract class Animal{ int size; p原创 2010-11-07 20:58:00 · 840 阅读 · 0 评论 -
J2EE 工程中使用JSON作为协议的话,可以使用Fastjson作为更好的替代了
不得不说这是一个好消息,给大家分享:) Fastjson作为JSON Parser 提供了更好的性能,从原文测试结果来看,性能的确优于现有的其他JSON库。更多内容还是从原文获取吧。原文地址:http://code.alibabatech.com/wiki/display原创 2011-08-15 14:22:49 · 1052 阅读 · 0 评论 -
Spring学习笔记 Hello World (code)
记录使用Spring3实现一个完整的Hello World示例的过程。工具使用Eclipse indigo JavaEE IDE。Srping2. X时使用Spring只需要引入一个JAR包即可,比如Spring-2.5.6.jar,从Spring3开始Spring framework提供了一系列JAR包,使用的时候要根据工程需要引入相关JAR包。并且一些Spring 的JAR包还会依赖与Sp原创 2012-06-03 14:44:03 · 1556 阅读 · 1 评论 -
All About JAVA 如何使用反射(Reflection )
来源:http://www.java-tips.org/java-se-tips/java.lang.reflect/how-to-use-reflection-in-java.html反射是一个很强大的方法用来在运行时对类进行分析,譬如当一个新的类在运行时动态的加入到你的应用中,这个时候就可以使用反射机制得到这个类的结构信息。我们使用一个特殊的类来实现反射: Class. 。 Class类翻译 2011-11-04 10:14:05 · 1089 阅读 · 0 评论 -
All About JAVA 使用JUnit 进行单元测试
Unit Testing 单元测试 单元测试一般是程序员编写,用来测试特定的方法是否正常运行的小段代码程序。《Head First Java》中讲到过,在编写实现实际功能的代码前就编写好单元测试代码是一个很好的习惯,试问很多时候当你写完了一个认为功能代码后还会特意去写一段测试代码进行测试吗,估计很多时候就会跳过这步。 编写好单元测试代码不仅仅在完成功能代码时用到,当你修改了功能代码后翻译 2011-10-28 17:07:54 · 1475 阅读 · 0 评论 -
All About JAVA 关于数据库ORACLE驱动包中OracleConnectionPoolDataSource连接池的使用方法
2011-09-28 注,在oracle网站发现这篇文章写到的方法已经不再赞成被使用,参见:http://download.oracle.com/docs/cd/B12037_01/java.101/b10979/conncache.htm第三方的一个应用系统使用的是SQLS原创 2011-07-18 22:38:56 · 3123 阅读 · 0 评论 -
All about JAVA 关于设计模式中的“装饰模式”
当你想为现有的类增加功能或者属性时,可能第一个会想到使用继承。继承可以在编译阶段为类增加额外的功能,但是使用继承会产生一些关于新建过多的类、维护、更新相关的问题: 一个很经典的例子,关于咖啡的,想象这样一种情况:一个咖啡店的程序,有一个抽象的咖啡类,“摩卡咖啡”原创 2010-12-16 20:30:00 · 734 阅读 · 1 评论 -
All About JAVA 将数组转换成列表Example
/* Create List from Java Object Array Example 利用数组创建List的示例 This java example shows how to create a List from an array of type Obj翻译 2011-09-15 18:43:21 · 1270 阅读 · 0 评论 -
All About JAVA 关于JAVA对象的创建以及构造方法(1)
对于JAVA对象的创建,我们使用这样的语句:Object myObj = new Object(); 它实际分为三个步骤: 1. Object myObj — 分配存储空间并创建一个引用变量。 2. new Object() — 创建一个Object对象。 3. = — 将创建的对象引用赋值给 myObj 这个引用变量。 在上边的第二个步骤,当我们使用了 new 这个关键词时,实际上是做了额外的一些工作来创建我们需要的对象,我原创 2010-09-30 10:39:00 · 505 阅读 · 0 评论