`
文章列表
Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解)   前言 本教程详细介绍了如何使用ssm框架实现支付宝支付功能。本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释,自己实践的时候一定仔细阅读相关文档,话不多说我们开始。 支付宝测试环境代码测试 源代码 https://github.com/OUYANGSIHAI/sihai-maven-ssm-alipay 1.下载电脑网站的官方demo: 下载:https://docs.open.alipay.com/270/106291/  
SimpleDateFormatt线程不安全及解决办法   一. 为什么SimpleDateFormat不是线程安全的? Java源码如下:     /**   * Date formats are not synchronized.  

Java多线程

Java多线程   一.进程和线程 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)   线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)   线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。   多进程是指操作系统能同时运行多个任务(程序)。   多线程是指在同一程序中有多个顺序流在执行   二.线程的创建 Java中线程的创建常见有如三种基本形式 1.继承Thread类,重写该类的ru ...
Java多线程分段处理List集合 解决方案:1.List集合分段 2.动态创建线程池newFixedThreadPool 3.多线程处理数据   代码如下:  public static void main(String[] args) throws Exception { // 开始时间 long start = System.currentTimeMillis(); // 模拟数据 List List<String> list = new ArrayList<String>();
深入理解Java虚拟机(JVM)   1. JVM内存分区以及作用 java虚拟机主要分为以下一个区: 方法区:1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载2. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。3. 该区域是被线程共享的。4. 方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用。该常量池具有动态性,也就是说常量并不一定是编译时确定,运行时生成的常量也会存在这个常量池中。 虚拟机栈:1. 虚拟机栈也就是我们平常所称的栈内存,它为 ...

Java泛型

    博客分类:
  • java
Java泛型 1. 概述 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)   泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。   2. 举例: List ...

Java单例模式

    博客分类:
  • java
Java单例模式   1. 什么是单例? 单例对象的类必须保证只有一个实例存在——这是维基百科上对单例的定义,这也可以作为对意图实现单例模式的代码进行检验的标准。 对单例的实现可以分为两大类——懒汉式和饿汉式,他 ...
Java反射教程 什么是反射?反射有什么用处? 1. 什么是反射? “反射(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为。”这个概念常常会和内省(Introspection)混淆,以下是这两个术语在Wikipedia中的解释: 内省用于在运行时检测某个对象的类型和其包含的属性; 反射用于在运行时检测和修改某个对象的结构及其行为。 从它们的定义可以看出,内省是反射的一个子集。有些语言支持内省,但并不支持反射,如C++。 内省示例:instanceof 运算符用于检测某个对象是否属于特定的类。
代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法 举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决.这就是代理思想在现实中的一个例子 用图表示如下: 代理模式的关键点是:代 ...
JAVA 在一个循环中删除一个列表中的元素 思考下面这一段在循环中删除多个元素的的代码 ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d")); for(int i=0;i<list.size
JAVA读取Properties文件 方式1.通过context:property-placeholder加载配置文件jdbc.properties中的内容 <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>   上面的配置和下面配置等价,是对下面配置的简化 <bean id="propertyConfigurer" class="org. ...
BlockingQueue详解 阻塞队列,顾名思义,首先它是一个队列,    常用的队列主要有以下两种:        先进先出(FIFO):先插入的队列的元素也最先出队列,类似于排队的功能。        从某种程度上来说这种队列也体现了一种公平性。   后进先出(LIFO):后插入队列的元素最先出队列,这种队列优先处理最近发生的事件。阻塞队列的核心就是生产者和消费着
html板在templates下面,js文件在static下面,在模板中引用时不需要加static这个路径。 例如:    
代码中的魔鬼数字   魔鬼数字的定义:在代码中没有具体含义的数字、字符串。   魔鬼数字主要影响了代码可读性,读者看到的数字无法理解其含义,从而难以理解程序的意图。当程序中出现的魔鬼数字过多时,代码的可维护性将会急剧下降,代码变得难以修改,并容易引入错误。   例如:   修改后:   例如: int itemCount=10;                  // 这可以认为不是魔鬼数字 ,但应该有注释
Spring @Value简化配置文件的读取   1、在applicationContext.xml文件中配置properties文件 <bean id="appProperty"     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">     <property name="locations">         <array>             <value& ...
Global site tag (gtag.js) - Google Analytics