Java基础
文章平均质量分 84
ddm01
业精于勤,荒于嬉,行成于思,毁于随。
展开
-
Java基础——数据库连接信息使用密文
背景数据库连接配置文件一般都是使用明文,这会带来数据库泄露的安全问题。例如jdbc.properties配置文件中,数据库连接地址、用户名、密码都是明文,如何使配置文件中的数据库连接信息避免明文显示是本文重点内容,即如何使配置信息使用密文就可以达到跟明文一样的效果。分析假如数据库连接密码使用了密文。修改连接池源码顾名思义,修改dbcp、c3p0、Druid连接池的源码,先对加密的密码解密,然后再创建连接。改完源码后重新打包发布。不建议采用修改源码的方式。拦截数据库连接属性信息不修改源原创 2020-06-30 19:14:05 · 1772 阅读 · 0 评论 -
Java基础——Java代码开发预防漏洞整理
1、打印一个一次性文件及其堆栈跟踪到某个流。默认情况下,该stream System.Err可能会无意中公开敏感信息。应该使用记录器来打印一次性文件,因为它们有许多优点:用户可以轻松地检索日志。日志消息的格式是统一的,允许用户轻松浏览日志。如果使用printStackTrace时没有参数,即堆栈跟踪打印到默认流时,此规则会引发问题。Noncompliant Code Examplet...原创 2020-04-29 11:31:43 · 1004 阅读 · 0 评论 -
Java基础——java后台向前台返回数据的几种方式
1、向html/jsp输出流(适用于Ajax请求)response.getWriter().write(string);仅支持输出字符类型数据,字符、字符数组、字符串等response.getWriter().print(Object);可以输出各种类型,包括Object,对象等这两种都是以IO流的形式返回数据给前端。2、@ResponseBody 或者 ResponseEntity1...原创 2020-03-25 14:46:34 · 11219 阅读 · 0 评论 -
Java基础——抽象类&接口简介与使用
Java接口一个接口(interface)是一些方法特征的集合,接口里没有方法的实现,因此这些方法在不同的地方被实现时,可以具有完全不同的行为。Java接口可以有public、静态的和final的属性(常量)Java接口里的方法和常量只能是public类型的接口是对可插入性的保证Java接口常用方法:单方法接口:只含有一个方法,例如:Runnable接口只有一个run()方法...原创 2020-01-17 10:46:55 · 223 阅读 · 0 评论 -
Java基础——SpringMVC实现文件上传
前台代码:注意:文件上传时必须加该属性!SpringMVC配置文件:<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 如果上传后出现文件名中文乱码可以使用该属性解决 --> <prope...原创 2018-05-03 17:41:07 · 195 阅读 · 0 评论 -
Java基础——获取操作系统及浏览器信息
/** * 获取操作系统及浏览器信息 * @param request */ @RequestMapping("/browser") public void getBrowser(HttpServletRequest request){ String ua = request.getHeader("User-Agent"); ...原创 2018-05-02 12:33:13 · 1364 阅读 · 0 评论 -
Java基础——BigDecimal
public BigDecimal add(BigDecimal augend):加 public BigDecimal subtract(BigDecimal subtrahend):减 public BigDecimal multiply(BigDecimal multiplicand):乘 public BigDecimal divide(BigDecimal divisor):除 publ...原创 2018-03-06 15:17:39 · 651 阅读 · 0 评论 -
Java基础——时间,时间字符串,时间戳互转
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。 在实际应用上, 它可以使用在包括电子商务、 金融活动的各个方面, 尤其可以用来支撑公开密钥基础设施的 “不...原创 2018-03-16 11:43:19 · 1105 阅读 · 0 评论 -
Java基础——Json字符串与Map互转
import com.alibaba.fastjson.JSON;ORimport com.alibaba.fastjson.JSONObject;Json字符串转Map:String str={"Result":"true","ErrorId":10000,"ErrorMsg":"","Data":{"list":{"0215V146":{&quo原创 2018-03-08 16:50:56 · 19783 阅读 · 2 评论 -
Java基础——线程同步
为什么要引入线程同步?什么时候要同步呢?为了数据的安全。尽管应用程序的使用率降低,但是为了保证数据是安全的,必须加入线程同步机制。什么条件下要使用线程同步?1、必须是多线程环境;2、多线程环境共享同一个数据;3、共享的数据涉及到修改操作。并发线程之间可能是无关的,也可能是交互的;并发执行的多个线程间需要共享资源或交换数据,则这一组线程称为交互线程。原创 2017-11-30 11:18:55 · 200 阅读 · 0 评论 -
Java基础——获取当前系统时间上一天时间及各月最后一天
java中获取当前日期和时间的方法 import java.util.Date; import java.util.Calendar; import java.text.SimpleDateFormat; public class TestDate{ public static void main(String[] args){ Date now = new原创 2017-03-22 17:19:43 · 842 阅读 · 0 评论 -
Java基础——定时任务使用实例
在开发过程中,我们一般用定时任务做定时刷数,就是循环在某一时间点从数据库获取最新数据并下载成文件形式,即循环执行定时任务。当然,定时任务还有其他使用案例,例如:指定延迟时间执行定时任务,指定时间执行定时任务等。以下为定时任务具体使用实例:1)、循环执行定时任务:package com.test;public class Task1 { /** * 很简单,创建一个Thread,转载 2017-10-16 10:32:22 · 999 阅读 · 0 评论 -
Java基础——JVM内存模型概述
JVM内存划分为:一、栈 1)虚拟机栈; 2)本地方法栈。二、堆三、方法区四、程序计数器栈(stack) 每一个线程包含一个stack区,只保存基本数据类型和对象的引用,对象都存放在共享heap中; 每个栈中的数据(基本数据类型和对象引用)都是私有的,其他栈不能访问; 栈分为3部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令); 栈的优势劣势:存取...原创 2018-06-10 22:26:29 · 330 阅读 · 0 评论 -
Java基础——创建文件夹(目录)与空文件
创建目录:String path = request.getSession().getServletContext().getRealPath("upload/temp/20180716");File filePath = new File(path);//判断该文件夹是否已存在if(!filePath.exists()){ //不存在 file...原创 2018-07-16 17:53:03 · 10368 阅读 · 0 评论 -
Java基础——获取中文全拼与中文首字母缩写
package com.tgb.util;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import n...原创 2018-09-29 10:49:09 · 1033 阅读 · 2 评论 -
Java基础——java集合之HashSet,TreeSet和LinkedHashSet
共同点:1)、它们都实现了Set接口,都可以对数据进行CRUD操作(add(),remove(),set(),get()),都可以使用迭代器遍历;2)、他们都是不允许元素重复的;3)、它们都不是线程同步的:如果多个线程同时访问一个HashSet(TreeSet或LinkedHashSet),而其中至少一个线程修改了该 set,则它必须 保持外部同步。这一般通过对自然封装该 set ...原创 2019-08-22 12:02:59 · 250 阅读 · 0 评论 -
java基础——8种基本数据类型及对应包装类以及注意事项
整数类型:byte(8位),short(16位),int(32位),long(64位)包装类:Byte,Short,Integer,Long浮点类型:float(单精度32位),double(双精度64位)。包装类:Float,Double字符类型:char(16位UNICODE字符)包装类Character布尔类型:boolean包装类:Boolean注意:8种基本数据类...原创 2019-07-31 19:41:10 · 1854 阅读 · 0 评论 -
Java基础——java代码规范详细版
本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。本文档中没有说明的地方,请参看SUN Java标准代码规范。如果两边有冲突,以SUN Java标准为准。1. 标识符命名规范1.1 概述标识符的命名力求做到统一、达意和简洁。1.1.1 统一统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplie...原创 2019-07-03 11:41:57 · 31049 阅读 · 1 评论 -
Java基础——Java实体类与Map集合互转
废话不说,直接上代码!留着用吧...package com.ddm.message.test;import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import ja...原创 2019-05-28 20:49:36 · 8871 阅读 · 0 评论 -
Java基础——Java集合之ArrayList和LinkedList
开发过程中,我们经常用到一些容器类对数据进行CRUD操作,其中,ArrayList和LinkedList已经屡见不鲜了,以下是个人对这两种集合的整理与记录,以便日后忘了的时候再次翻阅。共同点:1)、它们都实现了List接口,都可以对数据进行CRUD操作(add(),remove(),set(),get()),都可以使用迭代器遍历;2)、它们都是有序增删元素且都可以重复;3)、它们都...原创 2019-02-25 10:34:08 · 270 阅读 · 0 评论 -
Java基础——web.xml配置简述
web.xml文件用来初始化Java工程配置信息,以下就该文件做简要描述以作参考:启动web项目后,web容器首先会去找web.xml文件,读取这个文件,web.xml加载顺序:1)、容器会创建一个 ServletContext ( servlet 上下文),整个 web 项目的所有部分都将共享这个上下文;2)、容器将其转换为键值对,并交给 servletContext;3)、容器...原创 2018-10-30 11:49:30 · 633 阅读 · 0 评论 -
Java基础——善用工具类
开发中使用已有的工具类,那会大大提高开发效率及代码正确率,以下就常用的工具类简要陈述:一、StringUtils工具类import org.apache.commons.lang.StringUtils;涵盖String所有方法,可以减少Exception,很好用,方法自行实验。二、NumberUtils工具类import org.apache.commons.lang.m...原创 2019-01-11 17:16:18 · 306 阅读 · 0 评论 -
Java基础——简述请求转发和重定向及其区别
页面跳转的两种实现方式:请求转发和重定向;请求转发: 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的student_list.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个...原创 2018-11-16 20:15:38 · 10358 阅读 · 0 评论 -
Java基础——抽象类&接口对比
抽象类:在实际设计中,有这样的需要,就是某个基类不允许创建对象。我们可以在定义该类时,在前面加上 abstract 关键字,该类不能被实例化,如果要创建抽象类的对象,编译器会报错。抽象类也有构造方法,该构造方法在子类创建对象时被调用。在定义方法时,如果在前面加上abstract关键字,这时该方法没有方法体,该方法体在子类中实现。例如:public abstract v...原创 2017-09-12 16:54:43 · 270 阅读 · 0 评论 -
Java基础——异常(Exception)
异常:程序运行时出现的非正常现象。对异常的处理通常有两种方法:系统检测到程序的错误,给出错误信息并终止程序的运行;在程序中加入处理异常的功能。类 Throwable是Java 语言中所有错误或异常的超类。在Java中,将异常情况分为Exception和Error两大类,因此有两种Throwable对象Exception解决程序及环境产生的异常,可原创 2017-09-26 19:23:21 · 1388 阅读 · 0 评论 -
Java基础——初识过滤器
什么是过滤器?可以用过滤器做什么?过滤:按一定条件进行筛选,如果能满足条件就通过,否则就不通过。web应用程序中过滤器是针对请求/响应的一个过滤器组件。在服务器资源的外围。作用可以针对请求/响应进行过滤,起到保护资源的目的。主要用于:1、使浏览器不缓存页面;2、检测用户是否登录;3、字符编码过滤器;4、资源保护过滤器;5、权限管理;6、日志记录(时间...原创 2017-09-07 17:42:11 · 280 阅读 · 0 评论 -
Java基础——正则表达式语法
常用正则表达式:正则表达式语法:原创 2017-05-19 11:37:42 · 345 阅读 · 0 评论 -
Java基础——replace和replaceAll的区别
replace和replaceAll的区别:1、replace的参数是CharSequence和CharSequence,其中第一个是匹配的字符或字符串,第二个是替换的字符或字符串。即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,相当于字符串)2、replaceAll的参数是String和String,第一个参数regex,是替换规则(用正则表达式原创 2017-05-18 16:59:01 · 865 阅读 · 0 评论 -
Java基础——static简述
静态变量、实例变量;静态方法、非静态方法。在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了原创 2017-04-27 16:39:40 · 392 阅读 · 0 评论 -
Java基础——final,finally,finalize的区别
简单区别: final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码…… finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的原创 2017-05-12 10:19:29 · 243 阅读 · 0 评论 -
Java基础——substring字符串截取
字符串截取(substring):public String substring(int beginIndex, int endIndex)返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex示例: "hamb原创 2017-05-27 16:29:25 · 2760 阅读 · 0 评论 -
Java基础——&和&&的区别
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null&& !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现原创 2017-05-05 14:45:07 · 210 阅读 · 0 评论 -
Java基础——"=="和equals方法究竟有什么区别?
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = newObject();变量obj是一个内存,new Object()是另一个内存,原创 2017-05-04 17:12:46 · 308 阅读 · 0 评论 -
Java基础——overload(重载)与overrite(重写)的区别
Overload是重载的意思,Override是覆盖的意思,也就是重写。重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多...原创 2017-05-02 17:16:04 · 717 阅读 · 0 评论 -
Java基础——length、length()、size()的区别
length:属性,用于获取数组的长度。length():方法,用于获取字符串的长度。size():方法,用于获取泛型集合中元素的个数。例如: //length int[] arr = {1,2,3}; //int arr[] = new int{1,2,3}; System.out.println(arr.leng原创 2017-04-13 10:51:58 · 375 阅读 · 0 评论 -
Java基础——switch的用法及注意事项
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。如法...原创 2017-03-24 15:31:29 · 477 阅读 · 0 评论 -
Java基础——面向对象的特征
计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程。面向对象编程就是按现实业务一样的方式将程序代码按一个个对象进行组织和编写,让计算机系统能够识别和理解用对象方式组织和编写的程序代码,这样就可以把现实生活中的业务对象映射到计算机系统中。 面向对象的编程语言有四个主要特征: 封装: 封装是保证软件部件具有优良的模块性的基原创 2017-05-31 16:22:10 · 184 阅读 · 0 评论 -
Java基础——HashMap、HashTable和TreeMap的区别
简述:HashMap、HashTable和TreeMap都是map接口的子类,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平时说的键值对。put时有相同的key,会覆盖该key对应的值。HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就...原创 2017-06-06 17:48:00 · 1099 阅读 · 0 评论 -
Java基础——response.setContentType(...)与response.addHeader(...)或setHeader(...)
在Java开发下载功能时,我们都会看到以下这两句代码或类似这两句代码的代码:response.setContentType("application/x-msdownload");//三大主流浏览器(IE、Firefox、Google )response.setContentType("application/octet- stream");//除了三大浏览器再加上Mac的Safarirespon...原创 2017-08-28 10:54:19 · 8589 阅读 · 0 评论 -
Java基础——监听器
简介:监听器(Listener):Servlet的监听器,Servlet中一种特殊的类。它们能帮助开发者监听web中的特定事件,比如ServletContext,HttpSession,ServletRequest的创建和销毁;变量的创建、销毁和修改等。可以在某些动作前后增加处理,实现监控。其主要目的就是为了给Web应用程序添加事件处理机制,以便更好的监视和控制Web应用的状态变化。原创 2017-09-04 18:10:32 · 339 阅读 · 0 评论