java 常见错误集锦

1、bigdecimal之间去做equals,这种情况2与2.0是不相等的,这种比较仅限于位数和值等,常用的比较是compare。

2、不要stringtostring

3、不要Byte equals String

equals方法会首先判断类型,instance of类型不对,直接false

4、本地变量无需考虑并发问题吗?不能简单理解这个问题了,还有更高深的东西要考虑。要考虑内部加锁机制了。

https://blog.csdn.net/lzm1340458776/article/details/42455577

仅用了list自身提供的方法,没有[……]

Read more

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

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

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。

  1. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String

  String最慢的原因:

  String为字符串常量,而Stri[……]

Read more

SpringMVC单例的,高并发线程安全问题

一、Spring单例模式与线程安全

 

Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方。

 

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求多对应的业务逻辑(成员方法),此时就要注意了,如果该处理逻辑中有对该单列状态的修改(体现为该单列的成员属性),则必须考虑线程同步问题
同步机制的比较  ThreadLocal和线程同步[……]

Read more

数据库隔离级别—MySQL的默认隔离级别就是Repeatable,Oracle默认Read committed,最高级别Serializable

数据库隔离级别—MySQL的默认隔离级别就是Repeatable,Oracle默认Read committed,最高级别Serializable

https://blog.csdn.net/baidu_37107022/article/details/77481670

数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。

√: 可能出现    ×: 不会出现

脏读
不可重复读
幻读[……]

Read more

spring boot 整合 redis

https://www.cnblogs.com/zhaopengcheng/p/8302725.html

自己开发环境需要安装 redis 服务,百度一下很多,下面主要说明Springboot 集成 redis 讲解

我的版本 java8 + redis3.0 + springboot 1.5.9。 Spring redis 集成了 jedis

redis 中存储的是 bytes

1 spring boot已经支持集成 redis,在 mvn 中只需添加依赖即可。pom 配置片段如下

复制代码
<parent>
    <groupId>org[......]

Read more

JAVA高级面试总结-JVM篇

https://blog.csdn.net/zhangjin530/article/details/53306708

Java并发编程:Callable、Future和FutureTask原理解析

https://blog.csdn.net/codershamo/article/details/51901057

lock-free算法

http://novoland.github.io/%E5%B9%B6%E5%8F%91/2014/07/26/Lock-Free%20%E7%AE%97%E6%B3%95.html

java多线程-概念&创建启动&中断[……]

Read more

SpringBoot源码分析之SpringBoot的启动过程

https://www.jianshu.com/p/d51e1896a5f7

SpringBoot的启动很简单,代码如下:

    @SpringBootApplication
    public class MyApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }

从代码上可以看出,调用了SpringApplication的静态方法r[……]

Read more