作者简介:悟空,8年一线互联网开发和架构经验,用故事讲解分布式、架构设计、Java核心技术。《JVM性能优化实战》专栏作者,开源了《SpringCloud实战PassJava》项目,公众号:悟空聊架构。本文已收录至 www.passjava.cn(http://www.passjava.cn)禁止指令重排是什么?大家好,我是悟空。说到指令重排就得知道为什么要重排,有哪几种重排?如下图所示,指令执行
能演示下volatile为什么不保证原子性吗?原子性:一个操作或一系列操作是不可分割的,要么同时成功,要么同时失败。这个定义和volatile啥关系呀,完全不能理解呀?Showmethecode!考虑一下这种场景:当20个线程同时给number自增1,执行1000次以后,number的值为多少呢?在单线程的场景,答案是20000,如果是多线程的场景下呢?答案是可能是20000,但很多情况下都是小于
你好呀,我是悟空呀上篇我们讲到用volatile修饰的变量,当某线程更新变量后,其他线程也能感知到。那为什么其他线程能感知到变量更新?!mark(https://s4.51cto.com/images/blog/202112/11174459_61b4731b219fa42609.png?xossprocess=image/watermark,size_14,text_QDUxQ1RP5Y2a5a
Volatile是Java虚拟机提供的轻量级的同步机制(三大特性)保证可见性不保证原子性禁止指令重排考虑一下这种场景:有一个对象的字段number初始化值=0,另外这个对象有一个公共方法setNumberTo100()可以设置number=100,当主线程通过子线程来调用setNumberTo100()后,主线程是否知道number值变了呢?答案:如果没有使用volatile来定义number变量
絮叨这一篇也算是Java并发编程的开篇,看了很多资料,但是轮到自己去整理去总结的时候,发现还是要多看几遍资料才能完全理解。还有一个很重要的点就是,画图是加深印象和检验自己是否理解的一个非常好的方法。一、Volatile怎么念?!volatile怎么念(https://s4.51cto.com/images/blog/202112/09215737_61b20b518acf531428.png?xo
上周老婆打赏了一个MacBook,拿到手后非常激动,人生中第一台Mac。但是发现不会用,连个git都不会安装。不懂就学,于是搜各种教程,学习的过程中也安装了些非常有用的软件,这里做个归纳。一、提速神器1.1快捷键之王cheatsheet要想Mac用起来飞快,快捷键的使用必须学点。每次想使用快捷键的时候都要去百度上搜是哪个快捷键,确实很麻烦,所以找到了这个神器:cheatsheet,快捷键之王,通过
阅读目录一、什么是AJAX 二、提交Form表单的原理三、提交请求和服务响应的原理四、XMLHttpRequest对象的知识五、JQuery实现AJAX六、优势七、缺点八、应用场景九、不适用场景阅读本文需要30分钟,请先收藏转发后再看。先上原理图!(https://s4.51cto.com/images/blog/202112/07184816_61af3bf09216719194.jpg?xos
!目录(https://s2.51cto.com/images/20211206/1638800022755173.png?xossprocess=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)MyBatis在Sp
大家好,我是悟空呀。本篇代码下载:https://github.com/Jackson0714/studyspringboot.git一、Druid是什么?1、Druid是数据库连接池,功能、性能、扩展性方面都算不错。最大的亮点是为监控而生的数据库连接池。2、数据库、数据源、数据库连接池、JDBC、JDBC实现是什么关系?!(https://s4.51cto.com/images/blog/202
深入浅出SpringBoot数据访问之JDBC大家好,我是悟空呀。本篇代码下载:https://github.com/Jackson0714/studyspringboot.git学而不思则罔一、JDBC是什么?JDBCAPI属于JavaAPIJDBC用于以下几种功能:连接到数据库、执行SQL语句二、SpringBoot中如何使用JDBC2.1创建SpringBootProject时引入JDBCA
M1和Docker谈了个恋爱前言出于开源项目的需要,我准备把之前在Windows下运行的开源项目移植到Mac上跑得试下,但是MacM1芯片并不能很好地支持Docker,这不,发现Docker也正式支持Mac了,M1看了Docker的芳容,竟悄悄爱上了Docker。本文主要内容如下:!(https://s4.51cto.com/images/blog/202111/29204515_61a4cb5b
安装mysql!mark(https://s4.51cto.com/images/blog/202111/29204346_61a4cb02ab58680082.png?xossprocess=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3po
PassJava(佳必过)项目全套学习教程连载中文档在线地址:www.passjava.cn配置Git1.配置git用户名和邮箱shgitconfigglobaluser.name"xxx"gitconfigglobaluser.email"xxx"2.生成sshkeyshsshkeygentrsab4096C"xxx"!mark(https://s4.51cto.com/images/blog/
PassJava(佳必过)项目全套学习教程连载中文档在线地址:www.passjava.cn本地开发环境配置1.本地环境安装Java我本地环境的java版本1.8.0_131shjavaversion!mark(https://s4.51cto.com/images/blog/202111/28214525_61a387f58707f32475.png?xossprocess=image/wate
PassJava(佳必过)项目全套学习教程连载中文档在线地址:www.passjava.cndocker安装redis1.下载镜像下载镜像shsudodockerpullredisshubuntu@VM013ubuntu:sudodockerpullredisUsingdefaulttag:latestlatest:Pullingfromlibrary/redisc499e6d256d6:Alre
PassJava(佳必过)项目全套学习教程连载中安装mysql1.下载镜像shsudodockerpullmysql:5.7ubuntu@VM013ubuntu:sudodockerpullmysql:5.75.7:Pullingfromlibrary/mysqlc499e6d256d6:Pullcomplete22c4cdf4ea75:Pu
PassJava(佳必过)项目全套学习教程连载中文档在线地址:www.passjava.cn安装dockerhttps://docs.docker.com/engine/install/ubuntu/1.卸载老版本dockershsudoaptgetremovedockerdockerenginedocker.iocontainerdrunc2.设置仓库sh//命令1sudoaptgetinsta
PassJava(佳必过)项目全套学习教程连载中文档在线地址:http://www.passjava.cn(http://www.passjava.cn)配置虚拟机网络1.查看VirtualBoxHostOnlyNetwork!mark(https://s4.51cto.com/images/blog/202111/28195203_61a36d63d3e5c70268.png?xossproce
大家好,我是悟空哥。今天给大家带来的大厂面试题:Redis的缓存淘汰策略有哪些?小空听完这题后,不假思索地回答:根据过期时间的先后顺序进行删除面试官微微一笑:还有吗?小空支支吾吾地没有答上来面试官继续说道,那我跟你讲下吧。Redis的缓存淘汰策略总共有8种,这里有一张思维导图,你可以收藏起来。首先可以分为两大类:淘汰和不淘汰淘汰又分为两大类从设置了过期时间的数据中删除,另外一种是从所有数据中淘汰下
Typora 工具的使用
大家好,我是悟空。先说下哈,这篇文章画原理图用了很多时间,求个三连!Eureka 注册中心系列文章已经写到第七篇了,这里汇总下:领导让我研究 Eureka 源码 | 启动过程领导“叕”让我研究 Eureka 源码:注册过程值得收藏的 Eureka 控制台详解原来一个 Map 就能搞定注册表了6 张图 | 剖析客户端首次同步注册表11 张图 | 讲透原理,
!图片(https://s4.51cto.com/images/blog/202111/25204756_619f85fc9eba158631.webp?xossprocess=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVp
PassJava(佳必过)项目全套学习教程连载中文档在线地址:http://www.passjava.cn1.查看VirtualBoxHostOnlyNetwork!mark(https://s4.51cto.com/images/blog/202111/24191428_619e1e942288e61883.png?xossprocess=image/watermark,size_14,text
PassJava项目全套学习教程连载中,关注公众号(公众号)第一时间获取。文档在线地址:www.passjava.cnVagrant快速搭建Ubuntu虚拟机环境1.开启虚拟机服务Windows启动配置:IntelVirtualizationTechnologyEnabled2.下载安装VirtualBoxVirtualBox:虚拟机管理软件https://www.virtualbox.org/w
大家好,我是悟空。先说下哈,这篇文章画原理图用了很多时间,求个三连!Eureka注册中心系列文章已经写到第六篇了,这里汇总下:领导让我研究Eureka源码启动过程(http://mp.weixin.qq.com/s?__biz=MzAwMjI0ODk0NA&mid=2451959387&idx=1&sn=a6f50e0693be1ce54e68d777b525bcef&chksm=8d1c17c4
大家好,我是悟空。一、前言注册表对于注册中心尤为重要,所有的功能都是围绕这个注册表展开。比如服务A要想访问服务B,就得知道服务B的IP地址和端口号吧。如下图所示,传统的方式就是服务A知道了服务B的地址后,发送HTTP请求到对应的API地址上。!传统请求方式(https://s4.51cto.com/images/blog/202111/23130100_619c758ccf84387460.png
比较全面剖析 悟空编辑器的优点和不足~
本篇从源码角度带你学习 Eureka 服务端接收注册的流程。另外我从源码中也发现了一些值得我们学习的地方,如 Eureka 存储注册表的数据结构、利用读写锁来控制更细粒度的并发性,提高程序的运行效率。
我的 PassJava 项目开源了,一款基于 SpringCloud 的面试刷题系统,可以用来学习,毕业设计项目,项目框架。
最近在倒腾 Eureka 源码,因为大环境太卷了,必须得卷点源码才行,另外呢,能够读懂开源项目的源码、解决项目中遇到的问题是实力的象征,是吧?如果只是会用些中间件,那是不够的,和 CRUD 区别不大。 话不多说,源码走起。本篇是 Eureka 源码分析的开篇,后续会持续分享源码解析的文章。
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号