Java内存模型(JMM),深入理解,图文并茂

Java内存模型(JMM),深入理解,图文并茂!!!为什么要有内存模型?要想回答这个问题,我们需要先弄懂传统计算机硬件内存架构。好了,我要开始画图了。1.1. 硬件内存架构1)CPU去过机房的同学都知道,一般在大型服务器上会配置多个CPU,每个CPU还会有多个核,这就意味着多个CPU或者多个核可以同时(并发)工作。如果使用Java 起了一个多线程的任务,很有可能每个 CPU 都会跑一个线程,那么你

原创 点赞0 阅读10000+ 收藏0 评论0 2021-05-07

Java基础知识点总结归纳整理成题库

看了网上很多关于Java基础知识点总结归纳整理成题库的文章,但是感觉都不是很好,要么不全面,要么不准确,要么排版太乱了,所以今天整理了一份Java基础知识点总结归纳整理成题库,希望对大家有帮助哈~由于本文篇幅过长,博主为了方便大家阅读和收藏,特意将本文转成了一份PDF版的文档。需要PDF版的朋友可以关注微信公众号:Java团长,发送“基础知识”即可获取哈~一、Java概述1、何为编程编程就是让计算

原创 点赞0 阅读10000+ 收藏0 评论0 2021-05-03

77道经典Spring面试题及答案(2021年最新版)

77道经典Spring面试题及答案(2021年最新版),分享给大家,希望对大家有帮助~~本文77道Spring面试题和答案的PDF版已经为大家准备好了,关注微信公众号:Java团长,然后发送“ spring001 ”即可获取哈~一、Spring概述1. 什么是spring?Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层

原创 点赞0 阅读10000+ 收藏0 评论0 2021-05-02

DBeaver、Navicat、MySQL高频报错及解决方法

电脑配置:系统64位win10,MySQL8.0.16第一坑,没有用管理员身份第一次登录,打开cmd,执行net start mysql报错:发生系统错误5错误原因:没有用管理员身份运行cmd第二坑,MySQL 服务无法启动用管理员身份运行cmd,执行net start mysql报错:MySQL 服务正在启动MySQL 服务无法启动服务没有报告任何错误错误原因:MySQL安装时没有配置系统环境变

原创 点赞0 阅读10000+ 收藏0 评论0 2021-04-11

高并发下如何保证接口的幂等性?

前言接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。不知道你有没有遇到过这些场景:有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。我们在项目中为了解决接口超时问题,通常会引入了重试机制。第一次请求接口超时了,请求方没能及时获取

原创 推荐 点赞0 阅读10000+ 收藏0 评论0 2021-04-10

虚函数的内部实现

虚函数看起来是个玄之又玄的东西,但其实特别简单!了解了虚函数的内部实现,关于虚函数的各种问题都不在话下啦!1. 知识储备阅读这篇文章,你需要事先了解以下几个概念:什么是继承?什么是虚函数?在C++中,在基类的成员函数声明前加上关键字 virtual 即可让该函数成为 虚函数,派生类中对此函数的不同实现都会继承这一修饰符。为什么需要虚函数?这涉及到面向对象程序设计中多态、动态绑定的概念。进程的内存分

原创 点赞0 阅读10000+ 收藏0 评论0 2021-04-02

Java单链表反转图文详解

最近在回顾链表反转问题中,突然有一些新的发现和收获,特此整理一下,与大家分享

原创 点赞0 阅读10000+ 收藏0 评论0 2021-04-02

Redis实战篇:基于HyperLogLog实现UV统计功能

如果现在要开发一个功能:统计APP或网页的一个页面,每天有多少用户点击进入的次数。同一个用户的反复点击进入记为 1 次,也就是统计 UV 数据。让你来开发这个统计模块,你会如何实现? 如果统计 PV 数据,只要给网页一个独立的 Redis 计数器就可以了,这个计数器的 key 的格式为 puv:{pid}:{yyyyMMdd}。每来一个请求就 incrby 一次,就可以统计出所有的 PV 数据。 

原创 点赞0 阅读10000+ 收藏0 评论1 2021-03-31

关于HashMap的一些思考

一、HashMap的负载因子的作用当 HashMap 中的元素个数(包含链表、红黑树上的元素)达到数组长度的0.75倍的时候,开始扩容。二、HashMap的负载因子为什么是0.75主要是为了提高空间利用率和减少查询成本(也可以说是尽可能减少hash冲突)。三、为什么槽位数必须使用2^n如果想让 Hash 结果分布更加均匀,首先想到的就是使用取余(%)操作。重点来了:“取余(%)操作中如果除数是2的

原创 点赞0 阅读10000+ 收藏0 评论0 2021-03-30

SpringBoot配置加载原理全面解析

一、加载逻辑1.1)加载创世纪后置处理器先来一个例子:final AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(【你的配置类】.class); 复制代码注意这里的AnnotationConfigApplicationCont

原创 点赞0 阅读10000+ 收藏0 评论0 2021-03-22

Volatile原理概述

前言今天和大家聊聊 volatile。一个面试频考点,感觉和 synchronized 不分伯仲。我们都知道,volatile 保证可见性与有序性,但是不保证原子性,保证原子性需要借助 synchronized 这样的锁机制。 所以我们主要围绕着这三个特点来了解 volatile。JMM在学习 volatile 之前,我们一定要了解 JMM。JMM Java 内存模型,它是一种抽象的概念并不真实存

原创 点赞0 阅读9688 收藏0 评论0 2021-03-22

Java8 中的 Stream 那么彪悍,你知道它的原理是什么吗?

Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API 可以极大提高 Java 程序员的生产力,让程序员写出高效率、干净、简洁的代码。本文会对 Stream 的实现原理进行剖析。Stream 的组成与特点Stream(流)是一个来自数据源的元素队列并支持聚合操作:元素是特定类型的对象,形成一个队列。Java中的St

原创 点赞0 阅读7130 收藏0 评论0 2021-03-22

Java 多线程 : 迟来的 Future

写了这么多终于来到了future 这里, 这个题目真的和它很贴切 , 我们之前在线程池已经多次见到这个对象了 , 这一篇我们重点看一看他一 . Future 是什么1.3 Future Task 简述作用 : future 可以用于异步获取多线程任务结果 , Callable 用于产生结果,Future 用于获取结果 流程 : 流程类似于叫好等餐 , 等餐是花费时间的过程,但是不妨碍我们叫号当 F

原创 点赞0 阅读7094 收藏0 评论0 2021-03-19