java-基础
文章平均质量分 71
大鹏小站
一个快乐敲代码的程序猿
展开
-
Transactional注解 isolation propagation
1、Transactional@Transactional是spring中声明式事务管理的注解配置方式,相信这个注解的作用大家都很清楚。@Transactional注解可以帮助我们把事务开启、提交或者回滚的操作,通过aop的方式进行管理。通过@Transactional注解就能让spring为我们管理事务,免去了重复的事务管理逻辑,减少对业务代码的侵入,使我们开发人员能够专注于业务层面开发。2、Transactional注解里面的字段事物传播行为介绍: @Transactional(prop原创 2021-11-11 11:05:41 · 4090 阅读 · 0 评论 -
Spring中的@Transactional(rollbackFor = Exception.class)
1、spring默认回滚在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚2、异常的分类error是一定会回滚的这里Exception是异常,他又分为运行时异常RuntimeException和非运行时异常如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。如果不想终止,则必须原创 2021-09-14 14:09:33 · 1282 阅读 · 0 评论 -
深入理解java注解的实现原理
1,什么是注解注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解一般常用的注解可以分为三类:一类是Java自带的标准注解,包括@Override(标明重写某个方法)、@Deprecated(标明某个类或方法过时)和@SuppressWarnings(标明要忽略的警告),使用这些注解后编译器就会进行检查。一类为元注解,元注解是用于定义注解的注解,包括@Retent原创 2021-06-23 22:00:33 · 295 阅读 · 0 评论 -
阿里云oss——OSSObject
一、OSSObject是阿里云oss的基础对象对象是OSS存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,例如最后修改时间、大小等信息,同时您也可以在元信息中存储一些自定义的信息。The entity class for representing an object in OSS.In OSS, every file is an OSSObj原创 2021-06-18 16:10:08 · 1569 阅读 · 0 评论 -
java IO流的概念与分类
1、概念流是一个相对抽象的概念,所谓流就是一个传输数据的通道,这个通道可以传输相应类型的数据。进而完成数据的传输。这个通道被实现为一个具体的对象。流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可以从输入流中读原创 2021-06-09 22:51:09 · 318 阅读 · 0 评论 -
Java处理参数中带特殊符号
使用get方式时参数中不能有特殊字符,如:,空格,%,#,&,=等等;尤其是一些图片带有特殊字符,查询图片url的时候解决办法:用URL转义符替换。下面列出如下:URL 中+号表示空格 %2B空格 URL中的空格可以用+号或者编码 %20/ 分隔目录和子目录 %2F? 分隔实际的URL和参数 %3F% 指定特原创 2021-04-26 22:29:32 · 2849 阅读 · 0 评论 -
PageHelper分页插件源码debug
最近在写一个分页查询接口用到了分页插件PageHelper,代码很简单,原来没有看懂原理,就debug进去看了一下源代码,记录一下@Override public PageInfo<ProductZTDTO> getListByCategory(ProductXJZTParamDTO productXJZTParamDTO){ List<String> categoryCodes = this.getCategory(productXJZTParamDTO原创 2021-04-03 23:01:03 · 566 阅读 · 0 评论 -
Spring常用注解总结
踩到一个坑,有一个接口,在这个接口的实现类里,需要用到@Autowired注解,一时大意,没有在实现类上加上@Component注解,导致了Spring报错,找不到这个类一旦使用关于Spring的注解出现在类里,例如我在实现类中用到了@Autowired注解,被注解的这个类是从Spring容器中取出来的,那调用的实现类也需要被Spring容器管理,加上@Component@Component("conversionImpl")//其实默认的spring中的Bean id 为 conversionImp原创 2021-03-20 20:36:22 · 135 阅读 · 0 评论 -
深入理解幂等性
什么事幂等性所谓幂等性设计,就是说,一次和多次请求某一个资源应该具有同样的副作用。用数学的语言来表达就是:f(x) = f(f(x))。比如,求绝对值的函数,abs(x) = abs(abs(x))。为什么我们需要这样的操作?说白了,就是在我们把系统解耦隔离后,服务间的调用可能会有三个状态,一个是成功(Success),一个是失败(Failed),一个是超时(Timeout)。前两者都是明确的状态,而超时则是完全不知道是什么状态。比如,超时原因是网络传输丢包的问题,可能是请求时就没有请求到,也有可原创 2021-02-02 17:39:14 · 139 阅读 · 0 评论 -
String 里面的 lastIndexOf和indexOf区别
lastIndexOf :从后往前遍历查找对应字符串,找到对应字符串结束返回数据,返回值为int类型,返回查找字符串首个字符位置(从0开始查找),未找到返回 -1;indexOf :从前往后遍历查找对应字符串,找到对应字符串结束返回数据,返回值为int类型,返回查找字符串首个字符位置(从0开始查找),未找到返回 -1;String str = “12345654321”;int a = str.indexOf(“3”); // a为2int b = str.lastIndexOf(“3”); //原创 2020-12-20 11:54:32 · 543 阅读 · 2 评论 -
Fegin 错误 Could not extract response: no suitable HttpMessageConverter found for XXX
问题:这两天用Fegin 调用其他小组的下载接口报错feign.codec.DecodeException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.XXX…manager.dto.HaloResponse] and content type [application/octet-stream;charset=UTF-8]原因:对方返回的结果用pos原创 2020-11-27 11:44:07 · 6925 阅读 · 1 评论 -
Java常用类——Character 类
Character 类用于对单个字符进行操作,该对象中包装一个基本类型 char 的值。Character 类提供了一系列方法来操纵字符。你可以使用Character的构造方法创建一个Character类对象,当你将一个char类型的参数传递给需要一个 Character 类型参数的方法时,这时编译器会自动将char类型参数转化为 Character 类型参数,这样我们可以称其为装箱,反之为拆箱。Character 类的常用方法:1、isLetter() 方法isLetter() 方法用于判断指定字原创 2020-11-14 16:22:46 · 443 阅读 · 0 评论 -
Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。public class data13{public static void main(String[] args){int a=129;int原创 2020-09-05 17:27:16 · 257 阅读 · 0 评论 -
URL编码解决中文字符乱码(encodeURIComponent、encodeURI和decodeURIComponent、decodeURI)
1.概念URI: Uniform ResourceIdentifiers,通用资源标识符Global对象的encodeURI()和encodeURIComponent()方法可以对URI进行编码,以便发送给浏览器。有效的URI中不能包含某些字符,例如空格。而这URI编码方法就可以对URI进行编码,它们用特殊的UTF-8编码替换所有无效的字 符,从而让浏览器能够接受和理解。2、encodeURIComponentencodeURIComponent 转义除了字母、数字、(、)、.、!、~、*、’、-和原创 2020-08-14 17:41:41 · 4692 阅读 · 0 评论 -
@PostConstruct和@PreConstruct
1.@PostConstruct说明被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。2.@PreConstruct说明被@PreConstruct修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreConstruct修饰的方法会在destroy原创 2020-07-27 18:44:00 · 1051 阅读 · 0 评论 -
通用 Mapper常用方法
Select方法:List select(T record);说明:根据实体中的属性值进行查询,查询条件使用等号方法:T selectByPrimaryKey(Object key);说明:根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号方法:List selectAll();说明:查询全部结果,select(null)方法能达到同样的效果方法:T selectOne(T record);说明:根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使原创 2020-06-19 15:24:26 · 1061 阅读 · 0 评论 -
JAVA指针之形参和实参
不同于C、C++,JAVA中不需要程序员对指针进行操作。不过,这不代表JAVA没有指针,事实上,JAVA的指针操作都被底层代码封装了。笔者在初学Java时,虽然就了解了形参,实参,StringBuffer这些概念,但一直只流于表面,对此没有一个深度的认识。直到最近开始学习JVM虚拟机,才真正认识到了JAVA的精妙之处。首先,先说结论,Java中所有的基本数据类型的传递,都是按值传递,即传递的都是形参。除此以外的其他任何传递都是按地址传递,传递过去的都是实参,即cpp概念中的引用传递。最初笔者学习时也是就看原创 2020-06-07 11:42:49 · 660 阅读 · 0 评论 -
Java静态绑定与动态绑定
浅谈java中的绑定1.什么是绑定?绑定是指一个方法的调用和该方法所属的类(所在的类)相关联,意思就是在执行方法调用的时候,jvm所知道调用了哪个类的方法,类和调用方法相关联java绑定分类:静态绑定(前期绑定)运行时绑定(后期绑定)2.静态绑定什么是静态绑定?静态绑定就是程序在执行前就知道了该方法所属的类,即在编译前该方法已经绑定,在java中只有private , static ,final修饰的方法和构造方法是静态绑定浅谈java中只有private , static ,final修原创 2020-06-02 22:27:37 · 181 阅读 · 0 评论 -
java 中 为什么一般都把类的属性设置为private
为了不让其示例对象直接通过 对象.属性名 来使用和修改,而是通过set属性名,get属性名,更安全,这样属性就不会随意的被赋值上任何非法的值了,可以在set属性名的方法中进行控制。比如说:private String gender; //性别public void setGenger(String g){ if("男".equals(g) || "女".equals(g)){ gender = g; }else{ //你是人妖? gender原创 2020-05-27 23:15:23 · 2192 阅读 · 0 评论 -
用RSA加密实现Web登录密码加密传输
通常我们做一个Web应用程序的时候都需要登录,登录就要输入用户名和登录密码,并且,用户名和登录密码都是明文传输的,这样就有可能在中途被别人拦截,尤其是在网吧等场合。所以,我打算自己实现一个密码加密传输方法。这里使用了RSA非对称加密算法,对称加密也许大家都已经很熟悉,也就是加密和解密用的都是同样的密钥,没有密钥,就无法解密,这是对称加密。而非对称加密算法中,加密所用的密钥和解密所用的密钥是不相...原创 2020-05-06 17:13:59 · 2202 阅读 · 3 评论 -
java里面for循环中i++与++i的区别
今天再写LeetCode爬楼梯算法时候发现for循环用的是++i,平时在使用for循环时,都是这样写的:for(int i=0; i<10; i++),用的 i++。然而今天看算法的时候,发现有的for循环是这样的:for(int i=0; i<10; ++i),用的 ++i。刚刚看到的时候就在想在for循环中 i++ 和 ++i 有什么区别呢?自己尝试了一下,发现它们在for循环...原创 2020-03-09 15:25:18 · 2187 阅读 · 2 评论 -
jackson注解详细说明
jackson的maven依赖<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</version&g...原创 2019-08-20 19:18:46 · 2104 阅读 · 0 评论 -
深入理解分布式事务,高并发下分布式事务的解决方案
1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产生的原因...原创 2018-06-26 21:59:09 · 340 阅读 · 0 评论 -
聊聊分布式事务,再说说解决方案
数据库事务在说分布式事务之前,我们先从数据库事务说起。 数据库事务可能大家都很熟悉,在开发过程中也会经常使用到。但是即使如此,可能对于一些细节问题,很多人仍然不清楚。比如很多人都知道数据库事务的几个特性:原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily),简称就是ACID。但是再往下比如问到隔离性指的是什...原创 2018-06-26 23:14:50 · 200 阅读 · 0 评论 -
MyBatis mapper文件中的变量引用方式#{}与${}的差别
MyBatis mapper文件中的变量引用方式#{}与${}的差别默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义。示例1:执行SQL:Select * from emp where name = #{employeeName}参数:empl...原创 2016-11-23 17:16:04 · 392 阅读 · 0 评论 -
hash表原理
哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键。使用哈希查找有两个步骤:使用哈希函数将被查找的键转换为数组...原创 2019-03-15 10:21:48 · 1311 阅读 · 0 评论 -
Java四舍五入保留1位小数、2位小数...
Java四舍五入保留1位小数的方法:import java.math.BigDecimal; public class Test { public static void main(String[] args) { double data = 3.02; //利用字符串格式化的方式实现四舍五入,保留1位小数 String resul...转载 2019-04-02 15:59:47 · 8784 阅读 · 0 评论 -
spring-boot集合 wagger-bootstrap-ui
参考GitHub地址 :https://github.com/xiaoymin/Swagger-Bootstrap-UI文档地址https://doc.xiaominfo.com/在线效果体验 :http://swagger-bootstrap-ui.xiaominfo.com/doc.html例子:https://blog.csdn.net/X_Xian_/article/details...原创 2019-06-21 18:52:20 · 348 阅读 · 0 评论 -
HashMap原理2
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除转载 2017-04-22 23:48:30 · 249 阅读 · 0 评论 -
Integer.MIN_VALUE和Integer.MAX_VALUE
java源代码:Integer.MAX_VALUE经常会在集合中用到,对这个概念一直没有深究过,查看一下源码。一个常数,持有了int类型数最小值,-2^31次方,-2147483648。负21亿多。/**A constant holding the minimum value an {@code int} canhave, -231.*/@Native public static ...转载 2019-01-05 23:12:42 · 16007 阅读 · 0 评论 -
linux中启动 java -jar 后台运行程序
linux中启动 java -jar 后台运行程序直接用java -jar xxx.jar,当退出或关闭shell时,程序就会停止掉。以下方法可让jar运行后一直在后台运行。java -jar xxx.jar &说明: 在末尾加入 & 符号(1)执行java -jar xxx.jar后(2)ctrl+z 退出到控制台,执行 bg(3)exit完成以上3步,...原创 2018-12-26 16:17:22 · 2187 阅读 · 3 评论 -
RSA加密算法原理及RES签名算法简介一
第一部分:RSA算法原理与加密解密一、RSA加密过程简述A和B进行加密通信时,B首先要生成一对密钥。一个是公钥,给A,B自己持有私钥。A使用B的公钥加密要加密发送的内容,然后B在通过自己的私钥解密内容。二、RSA加密算法基础整个RSA加密算法的安全性基于大数不能分解质因数。三、数学原理(一)互质关系:两个数a和b没有除1外的其他公约数,则a与b互质1....转载 2018-09-24 00:15:25 · 2773 阅读 · 6 评论 -
深入Java集合学习系列:Hashtable的实现原理
我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable。第1部分 Hashtable介绍第2部分 Hashtable数据结构第3部分 Hashtable源码解析(基于JDK1.6.0_45)第4部分 Hashtable遍历方式第5部分 Hashtable示例转载请注明出处:http://www.cnblogs.com/skywang12345/p/3...转载 2018-07-05 10:07:58 · 275 阅读 · 0 评论 -
一句话弄懂常见二叉树类型
满二叉树除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。 完全二叉树一棵二叉树至多只有最下面的一层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,则此二叉树成为完全二叉树。 平衡二叉树它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树 二叉搜索树它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,...转载 2018-07-04 13:07:46 · 3713 阅读 · 0 评论 -
两个 BeanUtils.copyProperties() 用法及区别
这两个类在不同的包下面,而这两个类的copyProperties()方法里面传递的参数赋值是相反的。例如:a,b为对象BeanUtils.copyProperties(a, b);public static void copyProperties(Object source, Object target) throws BeansException {//source 源文件,target...原创 2019-07-02 17:40:01 · 15192 阅读 · 1 评论 -
lombok 中的@Accessors注解用法
@Accessors 注解用来配置lombok如何产生和显示getters和setters的方法。@Accessors有三个属性,分别是fluent,chain,prefix,@Accessors注解既可以注解在类上也可以注解在属性上1.fluentfluent为一个布尔值,如果为true生成的get/set方法则没有set/get前缀,默认为false例如:@Accessors(flu...原创 2019-07-03 18:59:19 · 21019 阅读 · 1 评论 -
java中,参数后面跟三个点(...)的含义
今天看到同事写的一段代码,有个list后面跟着三个点,感觉挺新鲜特此记录一下 private List<String> getName(List<item>...items) { #### return XXX; }网上搜了下private void removeTempFiles(String... fileNames) {...原创 2019-06-28 14:28:29 · 13698 阅读 · 0 评论 -
阿里巴巴 Excel工具easyExcel
今天开发遇到需要导出excel表格的需求,在网上选择了阿里的easyExcel线上阿里demo里面的代码/** * 文件下载 * <p> * 1. 创建excel对应的实体对象 参照{@link DownloadData} * <p> * 2. 设置返回的 参数 * <p> * 3. 直接...原创 2019-09-23 11:59:16 · 7745 阅读 · 0 评论 -
Java类 lombok、swagger、jackjson、JPA 注解详细解读
最近在项目里面用了很多注解,今天总结一下1、lombok包里面的 可以节省很多get set代码@Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法@Getter/@Setter : 注解在类上, 为类提供读写属性@ToString : 注解在类上, 为类提供 toString() 方法@Slf4j : 注...原创 2019-08-20 18:50:30 · 591 阅读 · 0 评论 -
JPA @Id 和 @GeneratedValue @Table注解说明
@Id 标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。@GeneratedValue:一般mysql数据库自增主键@GeneratedValue(strategy = GenerationType.IDENTITY)(1)、@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键、@Gener...原创 2019-08-20 19:46:58 · 1884 阅读 · 0 评论