java后台-java基础
小米加大炮
天生我材必有用,千金散尽还复来!
展开
-
JAVA基础(44)Java锁Synchronized和Lock的区别
一、Synchronized和Lock对比图二、锁的种类锁的种类挺多,包括:自旋锁、自旋锁的其他种类、阻塞锁、可重入锁、读写锁、互斥锁、悲观锁、乐观锁、公平锁、可重入锁等等,其余就不列出了。我们这边重点看如下几种:可重入锁、读写锁、可中断锁、公平锁。2.1 可重入锁如果锁具备可重入性,则称作为可重入锁。synchronized和ReentrantLock都是可重入锁,可重入性...转载 2020-01-08 17:53:14 · 294 阅读 · 0 评论 -
JAVA基础(33) java日期比较,日期计算
1.获取系统当前时间如:SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式String nowDate = df.format(new Date());// new Date()为获取当前系统时间2.提供完整的java示例代码package com.qpwa.payment.help原创 2017-01-03 15:40:49 · 583 阅读 · 0 评论 -
JAVA基础(31) Java代码计算两个经纬度之间的距离
直接源码观看,不多解释!public class DisTance { private static final double EARTH_RADIUS = 6378137; private static double rad(double d) { return d * Math.PI / 180.0; } /** * 根据两点间经纬度转载 2016-11-10 16:23:13 · 2782 阅读 · 0 评论 -
JAVA基础(30) Java代码finally语句到底是在return之前还是之后执行?
网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的:(1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一转载 2016-09-19 16:15:46 · 547 阅读 · 0 评论 -
JAVA基础(29) Log4j 日志级别
官方网址: http://logging.apache.org/log4j/1.2/log4j是apache基金会的一个项目,日志记录器(Logger)是日志处理的核心组件,log4j具有7种级别(Level).DEBUG Level: 指出细粒度信息事件对调试应用程序是非常有帮助的,就是输出debug的信息.INFO level: 表明消息在粗粒度级别上突出强调应用程序的运行过程转载 2016-08-23 15:46:21 · 465 阅读 · 0 评论 -
JAVA基础(28) web.xml中<security-constraint>和四种认证类型
的子元素 是可选的,如果没有 元素,这表示将禁止所有 HTTP 方法访问相应的资源。 子元素 需要和 相配合使用,但可以被单独使用。如果没有 子元素,这表明任何身份的用户都可以访问相应的资源。也就是说,如果 中没有 子元素的话,配置实际上是不起中用的。如果加入了 子元素,但是其内容为空,这表示所有身份的用户都被禁止访问相应的资源。 web.xml:转载 2016-06-16 16:02:14 · 1086 阅读 · 0 评论 -
JAVA基础(26) java.util.Queue的简单用法
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。原创 2016-04-20 16:29:35 · 689 阅读 · 0 评论 -
JAVA基础(25) java 拦截器、过滤器、监听器的区别
一、理解Struts2拦截器1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.2. 拦截器栈(Interceptor Stack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺转载 2016-04-20 14:39:21 · 572 阅读 · 0 评论 -
JAVA基础(27) servlet的执行原理与生命周期
一、先从servlet容器说起:大家最为熟悉的servlet容器就是Tomcat ,Servlet 容器是如何管理 Servlet? 先看一下tomcat的容器模型:从上图可以看出 Tomcat 的容器分为四个等级,真正管理Servlet 的容器是Context 容器,一个 Context 对应一个 Web 工程从上图可以看出 Tomcat转载 2016-05-11 10:03:13 · 433 阅读 · 0 评论 -
JAVA基础(24) web.xml配置详解二
引文:对于一个J2EE领域的程序员而言,基本上每天都会和web应用打交道。什么是web应用?最简单的web应用什么样?给你一个web应用你该从何入手?1、什么是web应用? web应用是一种可以通过Web访问的应用程序。在J2EE领域下,web应用就是遵守基于JAVA技术的一系列标准的应用程序。2、最简单的web应用什么样?转载 2016-04-14 15:14:37 · 493 阅读 · 0 评论 -
JAVA基础(34) java如何退出两层for循环
1.直接上源码,不用多说啥?@Test public void forEachTest() throws Exception{ int max=100; outer:for(int i=0;i<max;i++){ System.out.println("外层for循环,第("+(i+1)+")次循环开始++++++"); if(i > 10){ System.ou原创 2017-05-16 15:38:59 · 5877 阅读 · 0 评论 -
JAVA基础(32) Log4J日志配置详解
一、Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。1、LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、转载 2016-12-20 14:20:29 · 378 阅读 · 0 评论 -
JAVA基础(35) HashMap HashTable和ConcurrentHashMap的区别
摘要HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。一、HashMap和Hashtable的区别HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:转载 2017-06-16 15:15:10 · 544 阅读 · 0 评论 -
JAVA基础(43)彻底理解cookie、session、token
发展史1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些...转载 2019-08-16 18:50:08 · 235 阅读 · 0 评论 -
JAVA基础(42)浅谈一个Java类的生命周期
前言一个Java类从被加载到虚拟机内存开始,到卸载出内存为止,它经过了哪些步骤呢?这篇文章就来简述一下关于Java类生命周期相关的知识,其中每个生命周期的具体内容不会细讲,因为内容太多,我准备专门花一篇文章介绍类生命周期中的详细步骤。概述一个Java类从开始到结束整个生命周期会经历7个阶段:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Reso...转载 2019-08-15 15:36:29 · 288 阅读 · 0 评论 -
JAVA基础(41)java元注解之@Target、@Retention、@Documented详解
一、元注解元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target, 2.@Retention, 3.@Documented, 4.@Inherited这些类型和它们所支持的类在java.lang.annotatio...原创 2019-04-25 17:29:38 · 1139 阅读 · 0 评论 -
JAVA基础(40)Log4j和Log4j2的区别
相信很多程序猿朋友对log4j都很熟悉,log4j可以说是陪伴了绝大多数的朋友开启的编程。我不知道log4j之前是用什么,至少在我的生涯中,是log4j带我开启的日志时代。log4j是Apache的一个开源项目,我们不去考究它的起源时间,但是据我了解,log4j 1已经不再更新了。 下面引用官网的原文:End of Life On August 5, 2015 the Logging S...转载 2018-09-10 10:19:47 · 228 阅读 · 0 评论 -
JAVA基础(39) java命令详解
Java是通过java虚拟机来装载和执行编译文件(class文件)的,java虚拟机通过命令java option 来启动,-option为虚拟机参数,通过这些参数可对虚拟机的运行状态进行调整. 一、如何查看参数列表: 虚拟机参数分为基本和扩展两类,在命令行中输入java 可得到基本参数列表,java X 则可得到扩展参数列表。注:以上假设已经把JAVA_HOME\bin路径加...转载 2018-07-26 15:30:47 · 373 阅读 · 0 评论 -
JAVA基础(38) java四大特性理解(封装、继承、多态、抽象)
一、封装观点一:属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。概念:封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。原创 2018-03-13 17:23:03 · 1296 阅读 · 0 评论 -
JAVA基础(37) 如何解决SecureRandom性能问题
一、背景描述近期对接微信二维码支付的接口,发现一个奇怪的问题:现象为有一工具类定义了一个变量UUID,linux机器初始化贼慢,window机器下很正常,linux执行记录为:每次项目重启后,首次加载该类时,执行时间很久,但第二次之后就一切正常.....怀着好奇的心情,记录下这次经过,方便以后查阅。二、代码分析QRCodeUtils.java原创 2017-09-29 14:18:24 · 4070 阅读 · 1 评论 -
JAVA基础(36) java中sleep()和wait()方法详解
1、sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。 例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级转载 2017-06-30 10:50:49 · 610 阅读 · 0 评论 -
JAVA基础(23) web.xml配置实例
一 web.xml实例配置:<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.s原创 2016-04-14 14:51:38 · 558 阅读 · 0 评论 -
JAVA基础(22) web.xml配置详解一
首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -> filter -> servlet同时还存在着这样一种配置节:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 lis转载 2016-04-14 14:28:53 · 443 阅读 · 0 评论 -
JAVA基础(二) web.xml中<context-param>与<init-param>的区别与作用
的作用:web.xml的配置中配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: 和 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.3.容器将转化为键值对,并交给ServletContext.4.容器创建中的类实例,即创建监听.5.在监听转载 2014-12-31 15:03:33 · 897 阅读 · 0 评论 -
JAVA基础(九) web.xml中load-on-startup详解
web.xml中load-on-startup的作用如下一段配置,熟悉DWR的再熟悉不过了: dwr-invoker org.directwebremoting.servlet.DwrServlet debug true 1 dwr-invoker /dwr/*我们注意到它里面包含了这段配置转载 2014-12-31 09:00:35 · 729 阅读 · 0 评论 -
java时间戳
1、时间戳的定义 时间戳是指文件属性里的创建、修改、访问时间。 数字时间戳技术是数字签名技术一种变种的应用。在电子商务交易文件中,时间是十分重要的信息。在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容。数字时间戳服务(DTS:digital time stamp service)是网上电子商务安全服务项目之一,能提供电子文件的日期和时间信息的安全保原创 2014-07-29 09:39:56 · 1007 阅读 · 0 评论 -
Java代码 枚举类型替换
一,运用场景;后台已定义好的枚举类型;从数据库中直接获取的数值为英文的,此时前段显示又是中文的;这时候,我们就需要在后台提前将该字段枚举类型先转换好....写法一:直接替换(这种写法 如果枚举值定义的很多,麻烦的要死;不建议使用)如:private String user_status_name;public String getUser_status_name() {...原创 2014-07-31 17:00:02 · 2587 阅读 · 0 评论 -
JAVA基础(六) 处理连接不上MYSQL数据库的方法
一 使用环境 假设自己这台机子的IP = 192.168.10.10,局域网内另一台IP=192.168.10.20; 使用MYSQL连接本地数据库的时候,可以使用配置:localhost/127.0.0.1/192.168.10.10 +正确的数据库用户名和密码。假如 需要连接20这台机子的时候,那么问题来了?报错信息: java.sql.SQLException: n原创 2014-11-25 15:25:53 · 1642 阅读 · 0 评论 -
JAVA基础(12) java代码反射获取log
方法一:private Logger logger = Logger.getLogger(getClass());方法二:private static Logger logger = Logger.getLogger(ExcelParseServiceImpl.class);原创 2014-08-04 13:49:18 · 907 阅读 · 0 评论 -
JAVA基础(十) 异常处理 java.lang.OutOfMemoryError: PermGen space
Java代码 java.lang.OutOfMemoryError: PermGen space 由于项目中使用了自定义的ClassLoader,用于加载不同版本的JAR包,每启一个线程都要使用单独的ClassLoader,线程多了ClassLoader当然也就多了,于是首当其冲就怀疑很可能是由于加载class过多导致的,因为虚拟机加载的class是从来不转载 2014-05-09 17:19:28 · 711 阅读 · 0 评论 -
JAVA基础(七) Filter详解
一、概念:Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。二、Filter简介Se转载 2014-12-26 11:53:07 · 760 阅读 · 0 评论 -
JAVA基础(11) 系统日志
系统日志的概念及作用日志系统作为一种应用程序服务,对于跟踪调试、程序状态记录、崩溃数据恢复都有着重要的作用常用Java日志系统Log4J最早的Java日志框架之一,由Apache基金会发起,提供灵活而强大的日志记录机制。JDK1.4 LoggingFramework继Log4J之后,JDK标准委员会将Log4J的基本思想吸收到JDK当中,在JDK转载 2014-08-13 10:13:49 · 469 阅读 · 0 评论 -
JAVA基础(三) web.xml 中的listener、 filter、servlet 加载顺序及其详解
在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰。 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -转载 2014-12-31 15:46:06 · 535 阅读 · 0 评论 -
JAVA基础(13) javaMail发送邮件设置发件人中文昵称
public class TextMessage { //发送信件邮箱的用户名及密码 static String username="272138576"; static String password="********"; public static void main(String [] args)throws Exception{转载 2015-11-30 10:33:47 · 8286 阅读 · 0 评论 -
JAVA基础(20) ExecutorService线程池讲解
一 ExecutorService 建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立ExecutorService线程池ExecutorService executorService = Executors.newCachedThreadPool();或者转载 2016-03-14 13:44:56 · 521 阅读 · 0 评论 -
JDK1.8 十大新特性详解
本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API “Java is still not dead—and people are starting to figure that out.”本教程将用带注释的简单转载 2016-02-26 10:47:27 · 720 阅读 · 0 评论 -
JAVA基础(19) java多线程实现的三种方式
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。1、继承Thread类实现多线程继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的转载 2016-02-23 14:50:27 · 357 阅读 · 0 评论 -
JAVA基础(18) Java 多线程 并发编程
一、多线程1、操作系统有两个容易混淆的概念,进程和线程。进程:一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。线程:表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进程中的线程共用相同的地址空间转载 2016-02-23 14:36:26 · 670 阅读 · 0 评论 -
JAVA基础(17) Java虚拟机工作原理详解
一、类加载器首先来看一下java程序的执行过程。从这个框图很容易大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中。然后你在命令行中输入:javac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其他开发工具中,你保存代码的时候,开发工具已经帮你完成了转载 2016-02-23 13:17:15 · 472 阅读 · 0 评论 -
JAVA基础(16) Servlet/Filter/Listener/Interceptor区别与联系
一、概念: 1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。S转载 2016-02-22 17:33:15 · 788 阅读 · 0 评论