Java并发技术
本专栏主要针Java中存在并发问题进行深入分析,给工作带来更多的实践经验,给面试带来更加深入的话题,本专栏都是博主精心准备的文章,每周一篇精选文章。
码农博士
从事互联网开发10年,曾在多个公司任职项目经理,擅长微服务、分布式搜索的架构设计; 精于JVM、TCP大并发性能调优。
展开
-
类的封装、继承与多态
原文链接:类的封装,继承与多态类的封装、继承与多态类的封装相当于一个黑匣子,放在黑匣子中的东西你什么也看不到。继承是类的一个重要属性,可以从一个简单的类继承出相对复杂高级的类,这样可使程序编写的工作量大大减轻。多态则可动态地对对象进行调用,使对象之间变得相对独立。接下来我们来讨论:封装、继承和多态。封装封装定义什么是封装性?读者可以先看下面的程序,看看会产生什么问题。class Person{ public String name; public int age;原创 2020-07-03 23:02:01 · 685 阅读 · 0 评论 -
Java八种基本类型一文搞定
数据类型变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。Java 的两大数据类型:基本数据类型引用数据类型基本数据类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。数据类型中文长度(单位:位)默认值数据范围byte字节80.原创 2020-06-23 19:34:55 · 279 阅读 · 0 评论 -
logback.xml 不能被加载,logback不能被执行,logback.xml 无法生效,slf4j日志样式输出失败
1. 原因logback.xml 无法被加载, 尝试了好久还是失败,哎,最后新建工程竟然可以,所以说还是项目的问题;原来项目依赖了两个slf4j.jar,是版本冲突了;2. 查找原因idea Terminal 输入:mvn dependency:tree发现是com.baidu.aip 依赖了旧版本mvn dependency:tree3. 解决...原创 2020-03-27 00:29:09 · 2072 阅读 · 0 评论 -
ssh生成单个公钥
ssh生成单个公钥命令:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"查看公钥:cat ~/.ssh/id_rsa.pub同时生成两个公钥:user1@163.com邮箱:ssh-keygen -t rsa -C "user1@163.com" -f ~/.ssh/id_rsa_user1 user2@1...原创 2020-03-24 23:27:59 · 179 阅读 · 1 评论 -
修改Git远程地址 git config remote.origin.url "https://..."
仓库管理:添加或指定远程仓库地址git remote set-url origin "https://..."git config remote.origin.url "https://..."删除git remote rm origin原创 2020-03-24 23:09:37 · 12309 阅读 · 0 评论 -
Java中的四种引用方式
无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。在Java语言中,将引用又分为强引用、软引用、弱引用、虚引用4种,这四种引用强度依次逐渐减弱。无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。在JDK 1.2以前,Java中的引用的定义很传统:如...原创 2020-03-18 21:30:34 · 313 阅读 · 0 评论 -
Java并发编程-Java内存模型
Java内存模型原创 2020-03-17 23:18:18 · 154 阅读 · 1 评论 -
Spring事务方法上增加synchronized真的有效果吗?
此文转载,Spring事务本身是一个非常复制的问题,再加上线程并发处理就更加要主要了,由于再开发中有很多朋友会范与下文同样的错误,因分享给大家。前言Spring事务的一个奇怪的问题。朋友问了我一个技术的问题(朋友实在是好学,佩服!)该问题来源知乎(synchronized锁问题):https://www.zhihu.com/question/277812143开启10000个...转载 2020-03-15 22:39:02 · 667 阅读 · 0 评论 -
Java并发编程-深入探讨synchronized实现原理
synchronized这个关键字对应Java程序猿来说是非常的熟悉,只要遇到要解决线程安全问题的地方都会使用这个关键字。接下来一起来探讨一下synchronized到底时怎么实现线程同步,使用synchronized实现线程同步到底好不好。在讨论synchronized之前,是否大家对cup怎么实现多线程是否有所了解?上下文切换即使是单核处理器也支持多线程执行代码,CPU通过给每个线...原创 2020-03-12 18:22:12 · 213 阅读 · 0 评论 -
Java并发编程-深入Java同步器AQS原理与应用-线程锁必备知识点
并发编程中我们常会看到AQS这个词,很多朋友都不知道是什么东东,博主经过翻阅一些资料终于了解了,直接进入主题。简单介绍AQS是AbstractQueuedSynchronizer类的缩写,这个不用多说,大家在Eclipse中输入这个类自然会知道此类是java.util.concurrent.locks包下的一个抽象类。为什么需要重点来分析这个抽象类,因为ReentrantLock、Sema...原创 2020-03-11 21:51:42 · 222 阅读 · 0 评论 -
java并发编程-线程生命周期
线程生命周期现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度的最小单元是线程,也叫轻量级进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。CP...原创 2020-03-08 23:24:31 · 198 阅读 · 0 评论 -
Java并发编程-Unsafe实现原理与Unsafe应用解析
前言Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内存空间的能力,这无疑也增加了程序发生相关指针问题的风险。在程序中过度、不正确使用Unsafe类会使得程序...转载 2020-03-08 21:41:40 · 860 阅读 · 0 评论 -
分布式环境,生成全局唯一的订单号
在探究订单号唯一的过程中,我们不得不先了解Twitter SnowFlake(雪花算法),github上可查看器源码,下载地址https://github.com/twitter/snowflake,源码使用Scala进行编写。接下来我们先来了解一下SnowFlake。SnowFlake分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是U...原创 2020-03-07 18:38:16 · 1355 阅读 · 0 评论 -
并发编程-CPU执行volatile原理探讨-可见性与原子性的深入理解
volatile的定义Java语言规范第3版中对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。在多线程并发编程中synchronize...原创 2020-03-15 10:33:00 · 522 阅读 · 0 评论 -
ThreadLocal源码解析
并发是一个非常有意思的话题,java除了使用Synchronized解决并发问题外,还给每个线程提供了单独的存储空间,每个线程只能访问自己的存储空间;ThreadLocal并非是一个存储空间,而是操作线程存储空间的一个工具,线程外则不能访问到想要的值。/** * This class provides thread-local variables. These variables d...原创 2020-03-03 18:47:22 · 201 阅读 · 0 评论