自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风残雪的博客

平静心灵,沉淀人生

  • 博客(40)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 深入浅出谈Java虚拟机运行时数据区

一、概述Java虚拟机在执行java程序的过程中会将它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间。根据《Java虚拟机规范规定》主要包括以下几个运行时数据区:二、程序计数器程序计数器是一块较小的内存空间,它可以看成是当前线程所执行的字节码的行号指示器。由于每一个处理器都只会执行一条线程中的指令,因此为了在切换线程之后恢复到正确的执行位置,每一...

2019-06-29 17:43:39 5297

原创 软件架构设计的七大原则

一、开闭原则开闭原则(Open-Closed Principle OCP)是指一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭。所谓的开始,是用抽象构建框架,用实现扩展细节。可以提高软件系统的可维护性和可复用性。开闭原则是面向对象中最基础的原则,实现开闭原则的基本思想就是面向抽象编程。以某保险公司为例,每个保险公司都有很多产品,也就是所谓的险种,那么先来定义一个险种的接口:...

2019-03-05 23:52:25 6023

原创 面试攻城之hashcode和equals

一、hashCode()和equals()是什么?hashCode()方法和equals()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致。二、hashCode()和equals()的区别1.性能区别因为重写equals()里面一般比较全面也比较复杂,所以equals()的效率就比较低,而利用hashCode()进行对比,只需要生成一个hash值就可以了,效率很高...

2019-03-04 23:32:05 5275

原创 设计模式-单例模式

单例模式是最常见的设计模式之一。一般介绍单例模式的书籍都会介绍两种,饿汉式和懒汉式,但是除了这两种方式以外,本文还会介绍其他几种单例模式的实现方式,并对比其中的优缺点。简述单例模式:一句话概括一下,定义为单例对象的类只能有一个实例存在。实现步骤:1、将构造器私有化,这样可以保证其他代码无法通过构造器来调用该类的构造方法实例化对象。2、提供静态的getInstance方法给外部进...

2019-03-03 18:30:24 159

原创 设计模式-工厂设计模式

简述:工厂设计模式,就是用来生产对象的,在java中,万物皆对象,如果需要创建一个对象的时候就去new一个对象,那么就会对该对象耦合严重。如果之后要修改此对象,就要将所有new了这个对象的地方全部修改一遍,显然这违背了软件设计的开闭原则。如果我们使用工厂来生产对象,这样我们只需要和工厂打交道就可以了,彻底和对象解耦。如果要更换对象,我们直接在工厂中修改该对象即可,达到了解耦的目的。三种工厂...

2019-03-03 13:31:00 213

原创 数据库的事务隔离级别

数据库隔离级别:是在数据库操作中,为了有效保证并发读取数据的正确性提出的。隔离级别越高,越能保证数据的完整性和一致性,但是对并发性的影响也越大。对于大多数应用程序,都采取 READ COMMITTED的隔离等级。它能够避免脏读取,并且并发性性能较好。尽管它会导致,不可重复读、幻读、第二类丢失更新的问题,但是可以通过悲观锁和乐观锁进行控制。数据库的几种事务隔离级别:READ UNCO...

2019-03-02 11:13:16 127

原创 JVM的类加载机制

JVM的类加载机制分类五个部分:加载、验证、准备、解析、初始化。 加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个这个类的java.lang.Class对象,作为方法区这个类各个数据的入口。注意这里不一定要从Class文件获取,也可以从jar或者war包中获取,也可以是一个JSP文件转换成的Class对象,也可以是运行时生成(动态代理)。验证这一阶段主要是确保Cla...

2019-02-25 22:43:40 277

转载 JAVA垃圾回收GC的机制

一、为什么要进行垃圾回收如果不进行垃圾回收,内存迟早要被消耗尽,所以垃圾回收是必须的。二、哪些内存需要进行垃圾回收要回收的垃圾就是那些不再被任何用途使用的对象。那么要如何找到这些对象:1.引用计数法这个算法的实现就是给引用对象添加一个引用计数器,每当一个地方引用这个对象的时候计数器+1,当引用失效时,计数器-1。任何时候计数器为0的时候就代表这个对象不可能再被引用。但是JAVA...

2019-02-24 16:15:04 1012

原创 SpringBoot整合FastJson

FastJson是阿里开源的一款用于解析Json数据的产品,解析Json数据效率更高。下面记录一下SpringBoot2.X整合FastJson的方法。由于WebMvcConfigurerAdapter类在SpringBoot2.X中已经废弃,所以采用注入Bean的形式进行整合。首先在POM文件中添加如下依赖: <dependency> <grou...

2019-02-17 12:25:13 1485

原创 Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念把对象转换为字节序列的过程成为对象的序列化。--通常是输出流把字节序列恢复为对象的过程成为对象的反序列化。--通常是输入流对象的序列化主要有两种用途:1)把对象的字节序列永久的保存在硬盘上,通常存放在一个文件中。2)在网络上传输对象的字节序列。在很多应用中,需要对某些对象进行序列化,让他们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是WE...

2019-02-15 10:16:58 132

原创 DiskFileUpload上传文件并获取前端表单数据

        文件上传中form表单的enctype="multipart/form-data"  为二进制文件传输,所在在后端无法用request.Parameter()方法进行获取表单参数。        之前文件上传考虑用SmartUpload组件进行上传,但是该组件对中文的支持不够,中文会乱码。所以将SmartUpload的源码进行修改并重新封装jar包,该jar包在对于UTF-8格...

2018-12-21 15:04:37 750

原创 JAVA多线程————一篇文章让你彻底征服多线程开发(一)

多线程的基本概念线程指进程中的一个执行场景,也就是执行流程,那么进程和线程有什么区别呢?    每个进程是一个应用程序,都有独立的内存空间    同一个进程中的线程共享其进程中的内存和资源(共享的内存是堆内存和方法区内存,栈内存不共享,每个线程有自己的。)什么是进程?一个进程对应一个应用程序。例如:在 windows 操作系统启动 Word 就表示启动了一个进程。在 java ...

2018-12-14 10:40:52 243

转载 java根据图片的url地址下载图片到本地

java根据图片的url地址下载图片到本地已知图片的url地址,通过java代码下载到本地,直接上代码package demo; import java.io.ByteArrayOutputStream;import java.io.DataInputStream;import java.io.File;import java.io.FileOutputStream;impo...

2018-12-04 09:25:48 1564

原创 MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

什么是逆向工程MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。使用逆向工程使用MyBatis的逆向工程,需要导入逆向工程的jar...

2018-11-06 12:50:34 131

原创 Mybatis Generator最完整配置详解

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config...

2018-11-06 09:22:36 291

原创 @RequestBody注解的使用

1.@RequestBody注解通常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。2.通过@RequestBody可以将请求体中的json字符串绑定到相应的bean上,当然也可以将其分别绑定到对应的字符串上。如下:$.ajax({...

2018-11-02 11:07:28 561

原创 @Resource注解

@Resource和@Autowired注解都是用来实现依赖注入的。只是@AutoWried按by type自动注入,而@Resource默认按byName自动注入。@Resource有两个重要属性,分别是name和typespring将name属性解析为bean的名字,而type属性则被解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,如果使用type属性...

2018-11-02 10:12:47 251398 36

原创 produces在@requestMapping中的使用方式和作用

produces是注解@RequestMapping中的一个属性,不但可以这只返回值类型,还可以设定返回值的字符编码。还有一个属性与其对应,就是consumes:指定处理请求的提交内容类型(Content-type),例如application/json、text/html使用方法:一、produces例子返回json数据,并设置字符集为uft-8。下面的代码可以省略produce...

2018-11-02 09:07:58 2059

转载 Java中的String,StringBuilder,StringBuffer三者的区别

Java中的String,StringBuilder,StringBuffer三者的区别  最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。  这三个类之间的...

2018-10-12 22:06:35 73

转载 java poi 生成多个sheet(表格导出)

 我的需求是:在一个表格中生成多个sheet,每个sheet的名称动态指定,每个sheet内的内容动态指定。生成的文件名动态指定。 工具类:package test; import java.io.OutputStream;import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell;impo...

2018-10-11 20:18:30 14407 3

转载 Java中导入、导出Excel

一、介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要实现导入、导出Excel的应用。目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel下面我就分别讲解一下如何使用这...

2018-10-11 19:40:44 99

原创 Java编程思想第十一章练习32参考答案

package holding;//: holding/NonCollectionSequence.javaimport typeinfo.pets.*;import java.util.*;class PetSequence {    protected Pet[] pets = Pets.createArray(8);}public class NonCollectionS...

2018-10-10 21:56:57 287

转载 Collections类中的shuffle方法源码分析

Collections类中的shuffle方法源码分析shuffle方法可以将List中的数据随机打乱顺序,之前我们就使用了这个方法实现了扑克牌的洗牌功能,下面来看下shuffle方法的源码:public static void shuffle(List<?> list) { Random rnd = r; if (rnd == null) r...

2018-10-10 21:07:53 833

原创 Java 学习笔记之Queue

队列是一个典型的先进先出的容器,队列在并发变成中特别重要,因为他们可以安全的将对象从一个任务传输给另一个任务。LinkedList提供了方法以支持队列的行为,并且它实现了Queue接口,因此LinkedList可用作Queue的一种实现。offer()方法是与Queue相关的方法之一,它在允许的情况下,将一个元素插入到队尾,或者返回false。peek()和element()都将在不移...

2018-10-09 23:52:45 83

原创 Java学习笔记之Set

Set    Set不保存重复的元素,如果将相同对象的多个实例添加到Set中,那么它会阻止这种重复现象。    HashSet所维护的顺序与TreeSet或LinkedHashSet都不同,因为他们的实现具有不同的元素存储方式。TreeSet将元素存储在红-黑树数据结构中,而HashSet使用的散列函数。LinkedHashList因为查询速度的原因也使用了散列,但是看起来它使用了链表来维...

2018-10-09 22:49:54 95

原创 Java学习笔记-迭代器

    迭代器(也是一种设计模式)是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不需要知道或者关心该序列的底层结构。java的Iterator只能单向移动,常用的方法有:使用方法iterator()要求容器返回一个Iterator。Iterator将准备返回序列的第一个元素。 使用next()返回序列的下一个元素。 hasNext()检查是否还有下一个元素。 使用rem...

2018-10-08 13:58:03 113

原创 Java学习笔记-List

List的重要特性:    List允许在它被创建之后添加、删除元素,可以进行自我尺寸的调整List的两种类型:1.ArrayList    优点:擅长随机访问数据。    缺点:在List中删除以及插入数据较慢。2.LinkedList   优点:插入删除数据快,提供了优化的顺序访问。   缺点:在随机访问方面效率慢。   LinkedList还添加了可以使用...

2018-10-08 09:25:54 99

转载 Navicat Premium 12.0.22的安装与破解

一、安装  Navicat Premium 12.0.22的下载链接:https://pan.baidu.com/s/1swRY_fwIZfufdxDZj3hDyw 密码:09k8  安装步骤就是一路向下二、破解  Navicat Premium 12破解补丁的下载链接:https://pan.baidu.com/s/1aey9jSZfClnTeQc6CQwh4g 密码:qk9o...

2018-08-12 10:48:13 530

转载 JAVA JXL API的详细使用

1 开发调研1.1 需求描述MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。作为办公文档,势必要涉及到的电子文档的交换,Excel是一种在企业中非常通用的文件格式,打印和管理也比较方便。在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连接的重要手段。1.2 Excel开发常用开源工具在开源世界中,有两套比较有影响的API可供使用,一...

2018-05-10 16:04:58 5190 4

转载 java 反射setAccessible()方法的使用

首先看下面的代码:public class A{    private int data=0;}public class B{    public static void main(String[] args)    {        A a1 = new A();       //获得A类中所有定义的属性        Field[] fields = a1.getClass().getDecl...

2018-05-07 08:50:25 2749

转载 [BAT][JAVA]定时任务之-Quartz使用篇

 定时任务之-Quartz使用篇         Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。官方网站:http://www.opensymphony.c...

2018-05-03 11:24:54 147

转载 Quartz教程五:SimpleTrigger

SimpleTrigger可以满足的调度需求是:在具体的时间点执行一次,或者在具体的时间点执行,并且以指定的间隔重复执行若干次。比如,你有一个trigger,你可以设置它在2015年1月13日的上午11:23:54准时触发,或者在这个时间点触发,并且每隔2秒触发一次,一共重复5次。根据描述,你可能已经发现了,SimpleTrigger的属性包括:开始时间、结束时间、重复次数以及重复的间隔。这些属性...

2018-05-03 11:15:20 316

转载 Quartz教程四:Trigger

与job一样,trigger也很容易使用,但是还有一些扩展选项需要理解,以便更好地使用quartz。trigger也有很多类型,可以根据实际需要来选择。最常用的两种trigger会分别在教程五:SimpleTrigger和教程六:CronTrigger中讲到;Trigger的公共属性所有类型的trigger都有TriggerKey这个属性,表示trigger的身份;除此之外,trigger还有很多...

2018-05-02 11:26:53 223

转载 Quartz教程三:Job与JobDetail介绍

正如在教程二中讲到的,Job实现起来很容易,该接口只有一个“execute”方法。本节主要关注:Job的特点、Job接口的execute方法以及JobDetail。你定义了一个实现Job接口的类,这个类仅仅表明该job需要完成什么类型的任务,除此之外,Quartz还需要知道该Job实例所包含的属性;这将由JobDetail类来完成。JobDetail实例是通过JobBuilder类创建的,导入该类...

2018-05-02 11:21:58 352

转载 Quartz教程二:API,Job和Trigger

Quartz APIQuartz API核心接口有:Scheduler – 与scheduler交互的主要API;Job – 你通过scheduler执行任务,你的任务类需要实现的接口;JobDetail – 定义Job的实例;Trigger – 触发Job的执行;JobBuilder – 定义和创建JobDetail实例的接口;TriggerBuilder – 定义和创建Trigger实例的接口...

2018-05-02 11:09:43 141

转载 Quartz教程一:使用quartz

Scheduler在使用之前需要实例化。一般通过SchedulerFactory来创建一个实例。有些用户将factory的实例保存在JNDI中,但直接初始化,然后使用该实例也许更简单(见下面的示例)。scheduler实例化后,可以启动(start)、暂停(stand-by)、停止(shutdown)。注意:scheduler被停止后,除非重新实例化,否则不能重新启动;只有当scheduler启动...

2018-05-02 11:05:45 138

转载 Quartz教程:快速入门

欢迎来到quartz快速入门教程。阅读本教程,你将会了解:quartz下载quartz安装根据你的需要,配置Quartz开始一个示例应用当熟悉了quratz调度的基本功能后,可以尝试一些更高级的特性,比如Where,这个一个企业级功能,可以让job和trigger运行在指定的,而不是随机的Terracotta客户端上。下载和安装首先,下载最新的稳定版 – 不用注册。解压并安装。Quartz jar...

2018-05-02 10:54:03 1893

转载 Quartz 并发/单线程

Quartz定时任务默认都是并发执行的,不会等待上一次任务执行完毕,只要间隔时间到就会执行, 如果定时任执行太长,会长时间占用资源,导致其它任务堵塞。1.在Spring中这时需要设置concurrent的值为false, 禁止并发执行。 <property name="concurrent" value="true" />2.当不使用spring的时候就需要在Job的实现类上加@Dis...

2018-05-02 09:04:31 1283

原创 52张扑克牌分法

package com.company;public class Main { public static void main(String[] args) { //1.先生成52张扑克 Poke poke = new Poke(); poke.makeCards(); //2.将生成的扑克打印出来 poke.sh

2017-07-01 10:12:03 2020

原创 公司员工考勤系统Java代码

package com.company;import java.util.List;import java.util.Scanner;public class Main { public static void main(String[] args) { Company company = new Company(); //添加员工

2017-07-01 08:10:11 26079 8

SmartUpload.jar适用于中文版

前端页面需要用UTF-8格式,jar中源码已经修改,上传下载文件兼容中文,获取参数也可以获取中文。

2018-12-20

Mybatis逆向工程项目

MyBatis的逆向工程,直接运行可生成文件,直接运行项目即可

2018-11-06

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除