JAVA进阶
文章平均质量分 91
wmingstar
进阶的小码农
展开
-
java 自定义注解
背景在平时开发过程中经常看到各种各样的注解,例如@Component、@Resource、@Override 等等,注解极大方便了我们开发,今天就了解下注解,看下我们如何自定义注解。自定义注解前 我们必须要了解元注解和相关定义注解的语法。元注解元注解的作用是负责注解其他注解,Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:@Target@Retention@Documented@Inherit原创 2020-06-21 10:02:14 · 395 阅读 · 0 评论 -
JAVA中的DO、DTO、BO、AO、VO、POJO
定义DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。BO( Business Object):业务对象。 由Service层输出的封装业务逻辑的对象。AO( Application Object):应用对象。 在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。VO( View Object):显示层对象,通常是We原创 2020-06-20 17:31:30 · 1593 阅读 · 0 评论 -
JAVA对象转换利器—MapStruct
一、背景我们在使用JAVA开发项目的过程中经常遇到很多对象转换的场景,例如 DO、DTO、BO、AO、VO等对象间的转换,之前自己都是手写,最近发现了一个好用的工具—MapStruct,下面推荐给大家。二、MapStruct1. git地址:https://github.com/mapstruct/mapstruct?spm=ata.13261165.0.0.49823fc0pcr5Q92.示例:下面有两个类,需要进行转换:public class Car { private St原创 2020-06-20 17:26:32 · 3469 阅读 · 0 评论 -
为什么JAVA中long后面要加L?float要加F ?
问题背景今天在写代码时,将之前的一个变量进行了修改,运行单测的时候发现单测跑不过了,有点疑惑:原代码简化下:Long fileSize = 3 * 1024 * 1024 * 1024L;原创 2020-05-31 17:48:59 · 1172 阅读 · 0 评论 -
java单例模式
这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访 问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。意图保证一个类仅有一个实例,并提供一个访问它的全局访转载 2017-06-08 09:12:18 · 322 阅读 · 0 评论 -
java对象克隆浅析
为什么需要克隆?在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在Java语言中,用简单的赋值语句是不能满足这种需求的,要满足这种需求有很多途径。克隆的实现方式一、浅拷贝对于要克隆的对象,对于其基本数据类型的属性,转载 2017-05-24 15:43:08 · 521 阅读 · 0 评论 -
ArrayList 和 LinkedList的区别
ArrayList和LinkedList的主要区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表的数据结构; 2.对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 ArrarList原创 2017-05-12 11:30:13 · 689 阅读 · 0 评论 -
Socket编程——java实现
客户端import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;import java.net.SocketTimeoutException;import java.u原创 2017-05-10 09:10:39 · 300 阅读 · 0 评论 -
Java多线程那点事
Java多线程入门本文主要介绍java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。进程和线程的区别:进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位,操作系统中运行的一个个软件就是一个个进程) 线程:同一进程中的线程共享代码和数据空间,每个线程有独立的运...转载 2018-05-13 23:04:01 · 260 阅读 · 0 评论 -
Git详细讲解
之前在网上找过很多Git的讲解文章,这篇是我看过的最详细、易懂的一篇,喜欢的可以收藏。 Git详细教程原创 2018-05-20 17:45:33 · 428 阅读 · 0 评论 -
logback的使用详解
logback简介Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面几个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging ...转载 2018-05-16 18:38:08 · 933 阅读 · 1 评论 -
Java技术栈.基础篇—详说集合之一
一、集合与数组数组:(可以存储基本数据类型)是用来存取对象的一种容器,数组的长度固定,不适合在对象数量未知的情况下使用。 集合:(只能存储对象,对象类型可以不一样)集合与数组最大不同:长度可变,可在对象数量未知的情况下使用,使用比较广泛。集合总览Collection:接口是集合类的根接口,Java中没有提供这个接口的直接实现类。但是却被继承产生了两个接口:Set和List。S...转载 2018-06-01 08:47:35 · 848 阅读 · 0 评论 -
Java技术栈.基础篇—详说集合之二
上一篇文章Java技术栈.基础篇—详说集合之二介绍了List接口和其实现类,今天对Set接口和其实现类做下介绍。Set简介Set:用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。对象的相等性 引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用hashCode方法,会得到相同的结果,如果对象所属的类没有覆盖Object的hashCode方法的话,hashC...转载 2018-06-10 19:38:03 · 266 阅读 · 0 评论 -
Java技术栈.基础篇—浅拷贝与深拷贝
浅拷贝与深拷贝是什么浅拷贝和深拷贝本质都是对一个已有引用对象进行拷贝操作,但二者存在一定的区别。在 Java 中,数据类型分为 基本数据类型(元类型)和 引用数据类型。而一般使用 『 = 』号做赋值操作的时候,对于基本数据类型,实际上是拷贝的它的值,但是对于引用数据类型而言,其实将原对象的引用传递过去,它们实际是指向同一个对象。而浅拷贝和深拷贝的区别就在于:在拷贝某个对象的时候,如果只对基本...原创 2019-01-13 21:02:35 · 415 阅读 · 0 评论 -
数据库事务详解
为什么需要事务?转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:1.更新A账户的金额,减少100元2.更新B账户的金额,增加100元。在这个过程中可能会出现以下问题:1.转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户并没有相应增...原创 2019-04-14 00:40:06 · 791 阅读 · 0 评论 -
java HashMap 与 Hashtable 详解
Hashmap源码package java.util; import java.io.*; public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { // 默认的初始容量(容量为HashMap中槽的数目)是16,且实际容转载 2017-06-12 15:36:49 · 448 阅读 · 0 评论 -
windows 配置不同版本JDK
安装JDKJDK官网 下载系统相对应的JDK版本,安装,图形话操作,很简单,注意将JDK与JRE安装在同一目录的不同文件夹下,如D:\java8\jdkD:\java8\jre配置环境变量点击 我的电脑 右键选择 属性 ——> 高级系统设置——>下图 (我是win10,win7 win8界面可能稍有不同) 新建 系统变量 1)JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径原创 2017-06-19 21:59:53 · 536 阅读 · 0 评论 -
java基础知识点
1.AOPAOP(Aspect Oriented Programming) 面向切面编程是一种编程范式,提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。 AOP为开发者提供了一种描述横切关注点的机制,并能够自动将横切关注点注入到面向对象的软件系统中,从而实现了横切关注点的模块化。 AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或功能(例如事务处理、日志管理、权限转载 2017-06-05 10:25:58 · 312 阅读 · 0 评论 -
JVM的Server模式和Client模式
在看JVM GC资料的时候,看到JVM分Client模式和Server模式,有点迷惑,所以特此查下资料,搞明白。 JVM有Client和Server两个版本,分别针对桌面应用程序和服务端应用做了相应的优化,Client版本加载速度较快,Server版本加载速度较慢但运行起来较快。JVM工作在Server模式可以大大提高性能,但应用的启动会比client模式慢大概10%。 服务器的CPU、内存和硬原创 2017-09-07 09:47:40 · 708 阅读 · 0 评论 -
Java中String、StringBuffer、StringBuilder的区别
概览在Java中处理字符串常用的类有三种:String、StringBuffer、StringBuilder。String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 异同点: 1) 都是 final 类, 都不允许被继承; 2) String 长度是不可变的, StringBuffer、StringBuilder 长原创 2017-09-01 15:29:04 · 458 阅读 · 0 评论 -
Java中的逃逸分析
大家一般认为new出来的对象都是被分配在堆上,但这并不是完全正确,通过对Java对象分配过程分析,我们发现对象除了可以被分配在堆上,还可以在栈或TLAB中分配空间。而栈上分配对象的技术基础是逃逸分析和标量替换,本文主要介绍下逃逸分析。逃逸分析的定义逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。 通过逃逸分析,Java Hotspot编译器能够分析出转载 2017-09-01 14:40:56 · 2932 阅读 · 0 评论 -
Java设计模式—单例模式
什么是设计模式?在百度百科中它的定义是这样的: 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。 开发大牛们不断总结、抽取最终得到了大家的认可于是就产生了设计模式,其实设计模式的种原创 2017-08-07 14:03:02 · 219 阅读 · 0 评论 -
Java equals() 、hashCode()浅析
equals()equals()作用equals() 的作用是 用来判断两个对象是否相等。 equals() 定义在JDK的Object.java中,通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等,源码如下:public boolean equals(Object obj) { return (this == obj);}Object.java中定义了equal原创 2017-07-07 10:18:58 · 337 阅读 · 0 评论 -
Maven 学习资料整理
完整简洁Maven教程 主要概念及实践 Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置 7天学会Maven Maven POM文件详解 Maven中的依赖机制 Maven仓库简介 Maven常见问题 Maven scope含义说明 Maven实战 Maven仓库汇总 Maven41种骨架功能介绍 Intellij创建Maven java web项目 Mave原创 2017-07-05 17:53:40 · 328 阅读 · 0 评论 -
Java中 Cloneable 、Serializable 接口详解
Cloneable接口clone:它允许在堆中克隆出一块和原对象一样的对象,并将这个对象的地址赋予新的引用。 Java 中 一个类要实现clone功能 必须实现 Cloneable接口,否则在调用 clone() 时会报 CloneNotSupportedException 异常。Java中所有类都默认继承java.lang.Object类,在java.lang.Object类中有一个方法clon转载 2017-07-05 16:08:35 · 23319 阅读 · 0 评论 -
Java ConcorrentHashMap详解
HashMap 与HashTable详解ConcorrentHashMap 结构分析ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment:HashEntry 用来封装映射表的键 / 值对; Segment 用来充当锁的角色,每个 Segment 对象守护整个散列映射表的若干个桶(HashEntry对象,若干个HashEntry对象组成HashEntry转载 2017-07-05 12:51:56 · 2464 阅读 · 0 评论 -
java 读写 yaml 文件
简介Yaml是一种“是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。”类似于XML但比XML更简洁,适合编写配置文件。基本语法规则大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格缩进的空格数目不重要,只要相同层级的元素左侧对齐即可支持的数据结构对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dic转载 2017-06-29 16:33:11 · 12544 阅读 · 0 评论 -
java中 JSONObject与JSONArray的使用方法
public static void main(String[] args) { // 创建一个JSONObject对象 JSONObject jsonObject1 = new JSONObject(); // Map 与 JSONObject 相互转换 Map<String, String> map1 = new HashMap<Str转载 2017-06-28 10:53:23 · 6210 阅读 · 0 评论 -
java spring-boot项目中的cron 表达式
做项目有用spring-boot,并需要任务定时执行, 用到了 @Scheduled注解和cron表达式 ,特此记录下。Cron表达式是一个字符串,字符串以5或6个空格隔开,分开 6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month DayofWeek Year 或 Seconds Minutes H原创 2017-06-28 10:26:43 · 897 阅读 · 0 评论 -
Git进阶
基本概念1. 什么是分支?举个例子:几个人一起去旅行,中间走到一个三岔口,每条路可能有不同的风景,你们约定 3 天之后在某地汇聚,然后各自出发了。而这三条分叉路就可以理解成你们各自的分支,而等你们汇聚的时候相当于把你们的分支进行了合并。常用操作1.仓库初始化及添加文件初始化一个仓库git init查看仓库状态git status增加文件git add file_name此时可以查看下仓库状态,观察下原创 2017-06-27 22:26:58 · 239 阅读 · 0 评论 -
Intellij 快捷键
Debug常用快捷键F7 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中 必备F8 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则不进入当前方法体内 必备F9 在 Debug 模式下,恢复程序运行,但是如果该断点下面代码还有断点则停在下一个断点上 必备Alt + F8 在 Debu转载 2017-06-20 22:17:39 · 182 阅读 · 0 评论 -
java移位运算详解
java移位运算符有三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 左移左移运算符 << 使指定值的所有位都左移指定的次数。 1)它的通用格式如下所示:value << num num 指定要移位值value 移动的位数。 左移的规则只须记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型左移33位,实际上只移转载 2017-05-22 16:44:02 · 2267 阅读 · 0 评论