java基础知识
文章平均质量分 60
csdn_life18
这个作者很懒,什么都没留下…
展开
-
Java中代码各层级介绍(controller、service、mapper、dao等)
负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以再模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,dao层的数据源配置,以及有关数据库连接参数都在Spring配置文件中进行配置。它是值对象,准确地讲,它是业务对象,是生活在业务层的,是业务逻辑需要了解,需要使用的,再简单地讲,它是概念模型转换得到的。在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。转载 2024-01-29 15:32:34 · 4985 阅读 · 0 评论 -
JDK1.8中HashMap扩容机制
https://blog.csdn.net/yueaini10000/article/details/109030129转载 2023-02-24 18:07:38 · 1111 阅读 · 0 评论 -
编码5分钟,命名2小时?史上最全的Java命名规范参考!
简洁清爽的代码风格应该是大多数工程师所期待的。在工作中笔者常常因为起名字而纠结,命名已经成为我工作中的拦路虎,夸张点可以说是编程5分钟,命名两小时!每个公司都有不同的标准,目的是为了保持统一,减少沟通成本,提升团队研发效能。所以本文中是笔者结合阿里巴巴开发规范,以及工作中的见闻针对Java领域相关命名进行整理和总结,仅供参考。01Java中的命名规范好的命名能体现出代码的特征,含义或者是用途,让阅读者可以根据名称的含义快速厘清程序的脉络。不同语言中采用的命名形式大相径转载 2022-12-03 09:56:28 · 331 阅读 · 0 评论 -
Java中抽象类与接口的区别
上文中接口不能有方法的实现,其实说的不是很严谨,在JDK1.8之后,在接口里面可以定义default方法,default方法里面是可以具备方法体的,当子类实现该接口之后,不需要重写该方法即可以调用该方法。Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。b) 接口只能做方法声明,不能有方法的实现(接口默认方法实现除外),抽象类中不仅可以作方法声明,也可以做方法实现。转载 2022-12-02 12:51:49 · 71 阅读 · 0 评论 -
Java 命名规范(非常全面)
简单来说,接口也是类(不太严谨),所以,接口的名称的书写也应该符合类名书写规范,首字母应该大写,与普通类名不同的是,接口命名时通常采用形容词或动词来描述接口的动作行为。文中将会涉及到日常工作中常见的命名示例,如包命名,类命名,接口命名,方法命名,变量命名,常类命名,抽象类命名,异常类命名以及扩展类命名等。另外,在Java中还有另外一类异常类,它们属于系统异常,这一类异常类的命名使用“Error”作为其后缀,以区分Exception(编码,环境,操作等异常)。.........转载 2022-08-14 20:14:20 · 4072 阅读 · 0 评论 -
java方法命名规范(持续更新)
命名的目的是见名知意。业界目前没有强制的命名规范,但是用过了。转载 2022-08-14 20:03:27 · 2301 阅读 · 0 评论 -
java将数字格式化为万或者以亿为单位
以下为转换方法类,其中包含三个方法,主方法 amountConversion() 实现数字转换为万或者亿为单位、formatNumber()用于对数字进行四舍五入保证转换后的数据准确性、zeroFill()用于对数字进行补零此方法可根据实际需求酌情使用。...转载 2022-08-12 14:03:07 · 2184 阅读 · 0 评论 -
Swagger2中配置添加全局header
引入maven依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><dependency> <groupId>io.springfox</gro转载 2022-03-30 17:35:35 · 1924 阅读 · 0 评论 -
java生成指定范围、指定小数位数的随机数
java生成指定范围、指定小数位数的随机数import java.math.BigDecimal;public class Test { public static void main(String[] args) { Test t = new Test(); for (int i = 0; i <= 100; i++) { System.out.println(t.makeRandom(2f,1.5转载 2022-03-03 14:35:01 · 1999 阅读 · 0 评论 -
mybatis-plus 使用saveBatch踩过的坑
为了不重复写mapper文件里的foreach 标签,我们通常会将mybatis升级为mybatis-plus,从而使用Iservice里面的saveBatch方法;1、mapper标签的foreach写法<insert id="addRoleModule" parameterType="java.util.List"> INSERT INTO T_P_ROLE_MODULE (ROLE_ID, MODULE_ID) VALUES <foreach collec转载 2021-12-18 21:23:09 · 17827 阅读 · 4 评论 -
java8 使用LocalDateTime获取两个时间点相隔几天几小时几分几秒
public static void main(String[] args) { LocalDateTime fromDateTime = LocalDateTime.of(2018, 9, 11, 7, 45, 55); LocalDateTime toDateTime = LocalDateTime.of(2019, 9, 10, 7, 40, 45); LocalDateTime tempDateTime = LocalDateTime.from( f转载 2021-12-14 22:51:14 · 4145 阅读 · 0 评论 -
在Java 8中将Date转换为LocalDateTime
很想要用Java的时间api,但有时候还是需要转换为Date. 二者的相互转换并不是一步到位那么简单,所以,还是需要记录一下转换的apiDate to LocalDateTimeDate todayDate = new Date();LocalDateTime ldt = Instant.ofEpochMilli( todayDate.getTime() ) .atZone( ZoneId.systemDefault() ) .toLocalDateTime();转载 2021-10-27 10:31:34 · 486 阅读 · 0 评论 -
通过反射,动态修改注解的某个属性值
昨晚看到一条问题,大意是楼主希望可以动态得建立多个Spring 的定时任务。这个题目我并不是很熟悉,不过根据题目描述和查阅相关 Spring 创建定时任务 的资料,发现这也许涉及到通过Java代码动态修改注解的属性值。今天对此尝试了一番,发现通过反射来动态修改注解的属性值是可以做到的:众所周知,java/lang/reflect 这个包下面都是Java的反射类和工具。Annotation 注解,也是位于这个包里的。注解自从Java 5.0版本引入后,就成为了Java平台中非常重要的一部分,常见的如转载 2021-09-01 10:46:58 · 388 阅读 · 0 评论 -
java获取某个范围内的一个随机数
一、取模操作public static void main(String[] args){ for (int i = 1; i <= 20; i++){ int j = i % 11; System.out.println(i + "%11的结果——" + j); }}/*1%11的结果——12%11的结果——23%11的结果——34%11的结果——45%11的结果——56%11的结果——67%11的结果——78%11的结果——89%11的结果——9转载 2021-05-24 18:52:32 · 1460 阅读 · 0 评论 -
LocalDateTime 序列化问
参考 LocalDate 和 LocalDateTime 序列化和反序列化的问题returnTime: [2020, 12, 3, 16, 0]*2*|***0***解决办法:ConverterConfigpackage com.xxtsoft.config;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.SerializationFeature;impor.转载 2021-03-02 10:00:17 · 280 阅读 · 0 评论 -
openJDK之如何下载各个版本的openJDK源码
目录1.openJDK的项目2.下载openJDK源码2.1 点击图1中的jdk8u,就得到如下图2所示2.2 以下载openJDK8u60为例2.2.1 点击图2中jdk8u60下面的jdk链接,如下图3所示:2.2.2 点击"browse"链接,如下图5所示2.2.3 点击图6中的"zip"链接3. 解压下载得到的zip压缩包如果我们需要阅读openJDK的源码,那么需要下载,那么该去哪下载呢? 现在JDK已经发展到版本10了,11已经处于计划中,如果需要特定.转载 2020-12-29 18:59:44 · 1694 阅读 · 1 评论 -
HashMap默认加载因子为什么选择0.75?(阿里)
Hashtable 初始容量是11 ,扩容 方式为2N+1;HashMap 初始容量是16,扩容方式为2N; 阿里的人突然问我为啥扩容因子是0.75,回来总结了一下;提高空间利用率和 减少查询成本的折中,主要是泊松分布,0.75的话碰撞最小,HashMap有两个参数影响其性能:初始容量和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在其容量自动扩容之前可以达到多满的一种度量。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行扩容、re.转载 2020-11-11 16:22:20 · 606 阅读 · 0 评论 -
吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
文章目录QPSQPS每秒查询率计算机语言1. 响应时间(RT)2. 吞吐量(Throughput)3. 并发用户数4. QPS每秒查询率(Query Per Second)QPS原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) 。机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器 。每天300w PV 的在单台机器上,这台机器需要多少QPS?( 3000000转载 2020-08-16 16:47:31 · 1052 阅读 · 0 评论 -
Java的native方法
文章目录前言一. 什么是Native Method二.为什么要使用Native Method与java环境外交互与操作系统交互Sun's Java三.JVM怎样使Native Method跑起来:前言今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解。一. 什么是Native Method简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非ja转载 2020-07-30 17:56:13 · 176 阅读 · 0 评论 -
Collections五种返回集合的特性分析
文章目录1. 返回空集合2. 返回受检集合3. 返回不可修改集合4. 返回单元素集合5. 返回线程安全的集合1. 返回空集合EmptyList emptyList = Collections.emptyList();返回空的List集,不可写,下面是从继承关系上分析1.AbstractList实现List接口,实现了add(E e)方法2.AbstractList中的add方法的实现仅仅是抛出异常:UnsupportedOperationException()public void add(i转载 2020-07-24 17:35:42 · 709 阅读 · 0 评论 -
Java的几种常见排序算法
一、所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际的优秀算法,得经过大量的推理和分析。 二、排序算法可以分为内部排序和外部排序。 内部排序...转载 2020-04-24 17:36:02 · 428 阅读 · 0 评论 -
java.io几种读写文件的方式
一、Java把这些不同来源和目标的数据都统一抽象为数据流。 Java语言的输入输出功能是十分强大而灵活的。 在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流。 这里介绍几种读写文件的方式二、InputStream、OutputStream(字节流)//读取文件(字节流) ...转载 2020-04-24 19:05:58 · 403 阅读 · 0 评论 -
JAVA中IO流详解
IO流:数据传输是需要通道的,而IO流就是数据传输的通道。 IO流可以形象的比喻为运送货物的传输带。IO流的分类: ①根据操作的数据类型的不同可以分为 :字节流与字符流。 ②根据数据的流向分为:输入流与输出流,程序(内存)作为参照物,程序从外部读取称为输入(Input),程序向外部写数据成为输出(Output)。字节输入流: 父类:InputStream...转载 2020-04-30 17:54:34 · 311 阅读 · 1 评论 -
详解Java的自动装箱与拆箱(Autoboxing and unboxing)
一、什么是自动装箱拆箱很简单,下面两句代码就可以看到装箱和拆箱过程//自动装箱Integer total = 99;//自动拆箱int totalprim = total;简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。下面我们来看看需要装箱拆箱的类型有哪些:public class Main { ...转载 2020-04-26 15:53:31 · 864 阅读 · 0 评论 -
Java 八大基本数据类型
1.bit就是位,也叫比特位,是计算机表示数据最小的单位2.byte就是字节3.1byte=8bit ,0001 1100,一般用两个16进制来显示,所以我们经常看到1个字节显示为 1c4.1byte就是1Bbyte[] bs = {(byte)0xff, 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F};for(int i=0;i<bs.le...转载 2020-04-26 14:48:05 · 417 阅读 · 0 评论 -
Java静态绑定与动态绑定
文章目录程序绑定的概念静态绑定动态绑定java的编译与运行程序绑定的概念绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定.静态绑定在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由编译器或其它连接程序实现。例如:C。针对java简单的可以理解为程序编译期的绑定;这里特别说明一点,java当中的方法只有final,static,private和构造方法是前期绑定动态绑定转载 2020-07-17 13:47:22 · 526 阅读 · 0 评论 -
FinalReference类的功能
FinalReference类的功能、jvm中finalize()方法的实现方式、为什么实现finalize()方法的类要至少经过两次gc才能回收。FinalReference 的子类是Finalizer,FinalReference 类的权限是default的,Finalizer 类的权限是default的,并且有final修饰符,这两个类原则上不让开发者使用。他们和jvm配合实现java中对象实例被gc回收之前执行finalize()方法。java中的类有构造方法,不像C++中有析构函数,finali转载 2020-07-14 15:01:18 · 204 阅读 · 0 评论 -
Java基础篇 - 强引用、弱引用、软引用和虚引用
目录前言正文(一) 强引用(StrongReference)前言Java执行GC判断对象是否存活有两种方式其中一种是引用计数。引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到转载 2020-07-14 13:11:17 · 268 阅读 · 0 评论 -
Java:强引用,软引用,弱引用和虚引用
前言<font color = #00FFFF face="STCAIYUN">Java</font>执行GC判断对象是否存活有两种方式其中一种是引用计数。引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。从JDK 1.2版本开始,对象的引用被划分为4种级别,.转载 2020-07-14 12:15:07 · 134 阅读 · 0 评论