![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
(4)...java基础
IT云清
技术专家,团队主管,Apache Seata Committer,公众号:java4all
展开
-
@ConditionalOnExpression多条件bean生效
@ConditionalOnExpression多条件bean生效原创 2021-12-08 19:41:38 · 3368 阅读 · 0 评论 -
面向对象设计七大原则
面向对象设计的几大原则,在项目重构,业务拓展,业务反复变更的时候,每一次踩坑,发现代码混乱难以下手时,回头看看,都有新的体会。这些简单的原则里,所浓缩的指导思想,不断踩坑,才发现都是朴素的真理。单一职责原则(Single Responsibility Principle)每一个类应该专注于做一件事情。里氏替换原则(Liskov Substitution Principle)超类存在的地方,子类是可以替换的。依赖倒置原则(Dependence Inversion Pri转载 2020-11-06 09:14:22 · 275 阅读 · 0 评论 -
java中的final关键字和effectively final
我们在给lamda传参数时,可能会出现如下情况:Variable used in lambda expression should be final or effectively final一般情况下,我们是把变量用final显式的修饰,来解决这个问题。如果不显式的修饰呢,能否解决呢?也是可以的,只要变量被判定为一个effectively final变量,也是可以的。关于这个部分的描述,可以参考java的官方文档。这个部分 说明了哪些情况下,变量可以被认定为effectively final。原创 2020-08-29 17:38:18 · 1548 阅读 · 2 评论 -
Java中Properties类
本文转载自:https://www.cnblogs.com/bakari/p/3562244.html一、Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的...转载 2020-02-28 21:30:54 · 445 阅读 · 0 评论 -
java中getClass()和getSuperClass()的讲解
为了讲解这个问题,我们先来看一下下面的代码:package com.yonyou.test; import java.util.Date; class Test extends Date{ private static final long serialVersionUID = 1L; public static void main(String[] args) { ...转载 2019-12-07 11:17:36 · 1489 阅读 · 0 评论 -
Class的isAssignableFrom方法详解
Class的isAssignableFrom方法Class类的isAssignableFrom是个不常用的方法,感觉这个方法的名字取得不是很好,所以有必要在此解析一下,以免在看源码时产生歧义,这个方法的签名如下:public native boolean isAssignableFrom(Class<?> cls);由方法签名可见是一个本地方法,即C代码编写的。以下是JDK中...转载 2019-12-07 09:57:24 · 1718 阅读 · 0 评论 -
优雅的代码
写代码非常简单,可是优雅的代码,却不是每个人都可以写出来的,不在于难度,而在于,很多人写代码完全不为他人和团队多想一点,只顾眼下自己一亩三分地的功能实现;写优雅的代码,难度不在技术,在于为人处世的方式。分享一篇文章,写的非常好,代码规范非常多,但总有些基本点是必须要遵守的。作者:阿里云云栖社区链接:https://www.zhihu.com/question/28492982/answer/...原创 2018-07-27 10:11:30 · 1100 阅读 · 0 评论 -
java泛型通配符 ? extends T 和 ? super T 的区别和用法
1.二者的意思2.用法例如,我们有多个对象,其中Cat,Dog,Chicken都是extends Animal的。 List&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;? extends Animal&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; list = new ArrayList&amp;amp;amp;amp;amp;amp;amp;amp;amp;l原创 2018-07-31 11:21:38 · 1637 阅读 · 1 评论 -
java发送http请求
记录一下java发送http请求的工具类。原创 2018-08-30 11:57:12 · 413 阅读 · 2 评论 -
冒泡排序优化
1.基础版本 public static void main(String[] args){ int[] arr1= {1,2,6,36,10,7,91,92,93,94}; bubbleSort(arr1); } /** * 冒泡排序初级版本 * @param arr */ public stat...原创 2018-09-03 10:22:18 · 479 阅读 · 0 评论 -
java socket通信
1.socket通信模型(图片来源:https://www.cnblogs.com/itfly8/p/5844803.html)2.代码示例2.1服务端package com.java4all.controller;import java.io.*;import java.net.ServerSocket;import java.net.Socket;/**...原创 2018-09-14 15:55:03 · 329 阅读 · 0 评论 -
java动态代理和静态代理的实现
代理模式:为其他对象提供一种代理以控制目标对象的访问,在某些情况下, 一个对象不适合或者不能直接引用另外一个对象,代理对象可以在这个客户类和目标对象中起到一个桥梁作用。简单来说,代理对象的使用,是在不修改原有目标对象的基础上,增强原有目标对象的功能逻辑。代理的实现有两种,静态代理和动态代理,而动态代理,又分为jdk动态代理和cglib动态代理。本文目录:1.静态代理的实现2.jdk动态...原创 2018-10-09 09:33:10 · 748 阅读 · 0 评论 -
spring事务的传播属性--@Transaction的Propagation属性
在Spring的Transaction中,有个重要的属性:Propagation,指的是事务方法之间发生嵌套调用时,事务的传播行为(当前调用的这个方法的事务,和当前的其他事务之间的关系)。在TransactionDefinition中定义了7种事务的传播行为,这里简单记录一下。看一下Propagation的源码public enum Propagation { //默认值 //当前有事...原创 2018-10-30 19:54:37 · 4518 阅读 · 0 评论 -
分布式相关概念:ACID特性,CAP理论,BASE理论
汇总一下几个常见的理论的概念:1.ACID特性数据库管理系统中事务(transaction)的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)1、原子性原子性是指事务是一个不可再分割的工作单元,事务中的操作要么全部成功,要么全部失败。2、一致性一致性是指在事务开始之前和事务结束以后,数据库的完整性约...原创 2018-11-07 10:01:30 · 1001 阅读 · 0 评论 -
java中的6种单例写法
在java中,单例有很多种写法,面试时,手写代码环节,除了写算法题,有时候也会让手写单例模式,这里记录一下单例的几种写法和优缺点。1.初级写法2.加锁3.饿汉式4.懒汉式5.双重加锁6.内部类1.初级写法package com.java4all.test6;/** * Author: yunqing * Date: 2018/8/13 * Description:单例...原创 2018-11-25 18:07:21 · 6699 阅读 · 18 评论 -
org.apache.commons.pool 对象池
一、背景介绍创建新的对象并初始化的操作,可能会消耗很多的时间。在需要频繁创建并使用这些对象的场景中,为了提供系统性能,通常的做法是,创建一个对象池,将一定数量的对象缓存到这个对象池中。需要使用时直接从对象池中取出对象,使用完后将对象扔回到对象池中即可。Apache的commons pool组件是我们实现对象池化技术的良好助手。二、组件基本介绍该项目是一个基本的对象池组件,Pool提供三个主...原创 2019-08-03 15:15:42 · 1102 阅读 · 0 评论 -
java常见运算符
java中常见的运算符。 其中 a|=b:意思就是把a和b按位或然后赋值给a, 按位或的意思就是先把a和b都换成2进制,然后用或操作原创 2018-07-13 10:41:43 · 593 阅读 · 1 评论 -
list.remove()时出问题,集合的remove方法注意事项2
不要在 foreach 循环里进行元素的 remove/add 操作。 remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。 正例: List&lt;String&gt; list = new ArrayList&lt;&gt;(); list.add("1"); list.add("2&原创 2018-07-23 14:49:35 · 1065 阅读 · 0 评论 -
java常用的几种数据结构,堆栈,队列,数组,链表,哈希表
java常用的几种数据结构,堆栈,队列,数组,链表,哈希表原创 2017-08-27 12:10:00 · 5853 阅读 · 2 评论 -
Redis数据库的命令行操作
Redis数据库有5种数据结构,分别是:String, List, Hash, Set, SortedSet.原创 2017-08-27 16:15:56 · 3446 阅读 · 0 评论 -
isNotBlank()和isNotEmpty()的区别
java中,StringUtils类中的一些常用方法:isNotBlank() , isNotEmpty()原创 2017-09-19 09:30:39 · 4966 阅读 · 0 评论 -
list.remove()时出问题,集合的remove方法注意事项1
集合有一个方法叫remove(index),这是用来移除集合元素的,但是使用的时候,会有一个问题,很多人不注意这个问题,会发现使用完这个方法后,数据对不上了。看下面的小案例:请移除list集合中含有"a"的字符串。如下: public static void main(String[] args) { //建立一个list集合,里面有5个元素含有“a”,3个不含有“a” Li...原创 2017-09-09 16:24:40 · 4795 阅读 · 2 评论 -
Java多线程系列(三)-----线程池
线程池主要用来解决线程生命周期开销问题和资源不足问题。通过对多个任务重复使用线程,线程创建的开销就被分摊到了多个任务上了,而且由于在请求到达时线程已经存在,所以消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使用应用程序响应更快;另外,通过适当的调整线程中的线程数目可以防止出现资源不足的情况。原创 2017-09-02 21:02:01 · 454 阅读 · 0 评论 -
Redis的数据持久化机制RDB,AOF
Redis数据库的数据持久化机制有两种:RDB和AOF。原创 2017-08-27 16:34:15 · 471 阅读 · 0 评论 -
token的使用及原理
本文详细的介绍了JWT是什么,介绍了token的生成机制,优缺点,以及session的优缺点。原创 2017-11-07 09:33:57 · 5643 阅读 · 0 评论 -
HashMap和HashTable的区别和联系
HashMap和HashTable的区别,这个问题很古老,但是面试经常会被问到,这里整理一下。原创 2017-09-21 18:41:30 · 635 阅读 · 0 评论 -
java基础---目录
几个月前从北京来到杭州,比较幸运,面试时问的基础和底层都恰好还记得,但主要都是框架和开发中的问题。最近有个朋友也从北京过来,去面试时,遇到的一些基础问题,回来又问我还记得不,我发现那几个基本忘得差不多了。原创 2017-11-18 20:03:38 · 430 阅读 · 0 评论 -
java基础---(1)java中的final,static关键字
这一篇主要记录几个java中常用的关键字。原创 2017-11-18 20:14:24 · 354 阅读 · 0 评论 -
java基础---(2)Java中token的使用详解
本文详细的介绍了java中token的使用场景和方法。转载 2017-12-20 15:00:09 · 34709 阅读 · 14 评论 -
@Enable***注解的原理与使用
摘要:我们在开发中,会经常用到@Enable***开头的这种注解,来自动导入一些框架配置的默认的bean,进入注解源码,会发现这些注解类上都会有一个@Import(****.class)注解,这些注解是怎么实现的呢?Import导入,又分为三种方式,分别为:1.直接导入配置类2.根据条件选择配置类3.动态注册Bean下面,通过示例,进入源码,分析一下这三种导入方式:原创 2018-02-05 17:47:16 · 2356 阅读 · 0 评论 -
java IO流总结
文章来源:点击跳转Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据...转载 2018-05-26 17:32:53 · 268 阅读 · 0 评论 -
深入理解Java内置锁和显式锁
synchronized and Reentrantlock多线程编程中,当代码需要同步时我们会用到锁。Java为我们提供了内置锁(synchronized)和显式锁(ReentrantLock)两种同步方式。显式锁是JDK1.5引入的,这两种锁有什么异同呢?是仅仅增加了一种选择还是另有其因?本文为您一探究竟。本文转载自:点击跳转内置锁Java内置锁通过synchronized关键字使用,使用其修...转载 2018-06-01 14:02:37 · 961 阅读 · 0 评论 -
java中i++ 和 ++i的区别
今天同事扔给我两道面试题,我看完后扔到一个交流群里,回答这道题的绝大部分人竟然都答错了;很多人很清晰的知道这两道题想考察面试者对 i++ 和 ++i 的理解,也很清晰的知道这二者的区别,但是题还是做不对;两道题如下,大家可以先思考一下,给个答案,然后再去验证自己的想法。 (这是一道典型的看着非常简单的题,但是不少人还是会因为粗心栽跟头) 第一题: int a = 0; ...原创 2018-06-20 17:27:28 · 52740 阅读 · 59 评论 -
java Integer值比较
所有相同类型的包装类对象之间的值比较,应该使用equals方法比较。–来自阿里巴巴java开发手册。先看个简单实例: public static void main(String[] args)throws Exception{ Integer a = -121; Integer b = -121; Integer c = 345...原创 2018-07-23 12:52:00 · 2697 阅读 · 0 评论 -
BigDecimal比较大小,BigDecimal保留几位小数,BigDecimal和0比较大小
BigDecimal保留几位小数,BigDecimal比较大小原创 2017-08-31 20:13:38 · 11932 阅读 · 0 评论