自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Apple_Boy的博客

吃苹果的程序员

  • 博客(264)
  • 资源 (1)
  • 收藏
  • 关注

原创 值得你收藏的类加载、初始化、实例化、加载时机,初始化时机...

文章目录类加载机制类加载机制分类、类加载器、双亲委派机制类加载机制分类类加载器双亲委派机制加载.class文件的方式类生命周期类生命周期结束类加载过程JVM初始化步骤类加载时机类初始化时机类的初始化类的实例化平常总是对类的加载,初始化,实例化,类加载机制。。。等等概念容易搞混,这里记录一下!类加载机制虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程就是虚拟机的 类加载机制。类加载机制分类、类加载器、双亲委派机制

2020-08-29 15:20:21 8958 2

原创 一文带你入门Linux

文章目录1.1 Linux的概述:1.1.1 什么是Linux:1.1.1.1 学习Linux之前先了解Unix1.1.1.2 Linux的概述:1.1.1.3 Linux的历史:1.1.1.4 Linux系统的应用:1.1.1.5 Linux的版本1.1.1.6 Linux的主流版本1.2 Linux的安装:1.2.1 虚拟机安装:1.2.1.1 什么是虚拟机1.2.1.2 安装VmWare1....

2020-01-17 17:34:11 15493 7

原创 一个Java对象和Hashmap对象占用多大内存

文章目录一个Java对象占用多少字节?1、JAVA 对象布局1.1对象头(Header):1.2实例数据(Instance Data)1.3对齐填充(Padding)2、Java数据类型有哪些2.1基础数据类型内存占用如下2.2引用类型 内存占用如下:2.3字段重排序3、验证3.1有一个Fruit类继承了Object类,我们分别新建一个object和fruit,那他们分别占用多大的内存呢?3.2 ...

2019-12-03 21:47:35 5873 4

转载 美团大佬带你了解Java中的各种“锁“事

文章目录前言1. 乐观锁 VS 悲观锁2. 自旋锁 VS 适应性自旋锁3. 无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁Java对象头Monitor4. 公平锁 VS 非公平锁5. 可重入锁 VS 非可重入锁6. 独享锁 VS 共享锁结语参考资料前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是

2021-02-25 10:52:43 142

转载 一文带你搞懂JMM内存模型和JVM内存区域

文章目录理解Java内存区域与Java内存模型Java内存区域Java内存模型概述硬件内存架构与Java内存模型硬件内存架构Java线程与硬件处理器Java内存模型与硬件内存架构的关系JMM存在的必要性Java内存模型的承诺原子性理解指令重排编译器重排处理器指令重排可见性有序性JMM提供的解决方案理解JMM中的happens-before 原则volatile内存语义volatile的可见性volatile禁止重排优化理解Java内存区域与Java内存模型Java内存区域Java虚拟机在运行程序时会

2021-02-21 15:27:16 201

原创 Java高手笔记之业务开发常见错误100例

文章目录并发工具代码加锁线程池连接池HTTP调用数据库事务数据库索引判等问题数值计算集合类空值处理异常处理日志文件IO序列化日期时间OOMJava高级特性Spring框架本文整理于极客时间Java业务开发常见错误100例代码篇,我觉得这个专栏对于Java开发还是很有价值的,大家有兴趣的可以看看!也是Java高手笔记的代码篇整理不易!!!并发工具在Web环境中使用ThreadLocal出现数据错乱的坑原因:线程可能重用,导致ThreadLocal中的数据会串解决︰用完及时清空数据,比

2021-02-05 11:07:26 146

原创 elementUI自定义表单校验规则的两个大坑(callback和return)

正常情况下,我们使用elementUI的时候会采用自定义表单校验,然后会自定义校验规则。但是在自定义规则校验实践过程中,发现会有两个大坑!!!下面会详细解释自定义校验规则中不能直接写return,比如if(!value)return;必须返回一个回调函数callback()(返回callback的入参为空代表校验通过规则,返回含new Error(‘自定义提示’)入参代表校验不通过规则。)必须保证自定义校验规则的每个分支都调用了callback方法,否则会导致el-form组件的validate方法

2021-01-13 16:15:51 713 3

原创 MySQL数据库加锁实战总结

文章目录基础初始数据参考规则一、update/delete没有索引的记录update 没有索引且存在的记录/update没有索引且不存在的记录/update全表二、update/delete有唯一索引的记录1、update有唯一索引且不存在的记录2、update有唯一索引且存在的记录三、update/delete有普通索引的记录1、update有普通索引且不存在的记录2、update有普通索引且存在的记录四、select lock in share mode/for update没有索引的记录1、sel

2020-12-26 14:56:02 3496

原创 不可错过的MYSQL数据库实用命令

数据库在运行时的先后顺序(8)SELECT (9) DISTINCT (11)< Top Num> < select list>(1) FROM [left_table](3)<join_type> JOIN <right_table>(2) ON <join_condition>(4) WHERE <where_condition>(5) GROUP BY <group_by_list>(6) WITH &l

2020-12-21 21:08:10 77

原创 JS数组方法汇总及对比

文章目录创建数组的方式数组的length属性数组检测转换方法类似栈的方法类似队列的方法重排序方法操作方法位置方法查值方法迭代方法归并方法------------------------------------------slice,substr和substring的区别TODO。。。后续补充数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。上图可以看出,数组的存储方式为连续的内存空间,那么几句可以通过下面的方式,a[i]_address = base_address +

2020-11-28 15:44:28 1297

原创 Lombok的@Builder注解带来的两大坑

文章目录1、@Data和@Builder导致无参构造丢失两种解决方法2、@Builder注解导致默认值无效分析原因1、@Data和@Builder导致无参构造丢失单独使用@Data注解,是会生成无参数构造方法。单独使用@Builder注解,发现生成了全属性的构造方法。@Data和@Builder一起用:我们发现没有了默认的构造方法。如果手动添加无参数构造方法或者用@NoArgsConstructor注解都会报错!两种解决方法1、构造方法加上@Tolerate 注解,让lombok假装

2020-11-09 18:24:12 2086 3

原创 测试一下你真的理解数据库左连接了吗?

文章目录前言数据库数据及脚本数据库在运行时的执行顺序左连接概念及误区误区最正常的左连接左连接的各种变形1、左连接查询出来的数量大于左表的数量2、LEFT JOIN ON 后面两个AND3、 ON后面加AND条件:左表的非连接字段s.name='小李'4、 ON后面加AND条件:右表的非连接字段c.is_delete = 05、ON后面加AND条件:右表的连表字段c.cname = 'Java'或者左表的连表hobby字段s.hobby='Java'6、ON直接写死连接属性 ON s.hobby ='Pyth

2020-11-07 15:32:02 1836

原创 一文清晰讲解@Transactional 注解失效场景

文章目录引言一、事务二、@Transactional介绍1、@Transactional注解可以作用于哪些地方?2、@Transactional注有哪些属性?propagation属性isolation 属性timeout 属性readOnly 属性rollbackFor 属性noRollbackFor属性二、@Transactional失效场景1、@Transactional 应用在非 public 修饰的方法上2、@Transactional 注解属性 propagation 设置错误3、@Transa

2020-11-04 21:53:59 2317

原创 Java创建线程池的两种方式及多线程并发测试

文章目录Java创建线程的三种方式线程池的优点Java中创建线程池的两种方式Executors工厂方法创建new ThreadPoolExecutor()自定义创建corePoolSize和maximumPoolSizeworkQueue任务队列拒绝策略Java创建线程的三种方式继承Thread类创建线程类实现Runnable接口通过Callable和Future创建线程线程池的优点重用存在的线程,减少对象创建、消亡的开销,性能佳可有效控制最大并发线程数,提高系统资源的使用率,同时避

2020-10-25 13:39:52 990

原创 JDK1.7 HashMap源码解析+常见问题

文章目录基础JDK1.7变量说明构造函数putresizegetremovereplace???常见问题1、为什么容量要2的次幂2、为什么是最大容量是2的30,而不是2的313、为什么要用红黑树而不是其他的树?既然红黑树那么好,为啥hashmap不直接采用红黑树,而是当大于8个的时候才转换红黑树?JDK1.7和1.8相关问题JDK1.7和1.8中HashMap为什么是线程不安全的?前言扩容引发的线程不安全扩容造成死循环和数据丢失的分析过程JDK1.8中的线程不安全总结JDK1.7和1.8区别总结原因:第1、

2020-10-24 14:27:28 3935

转载 两种设计模式教你替代if-else

文章目录前言传统做法-if-else分支策略模式+Map字典责任链模式策略模式+注解小结前言物流行业中,通常会涉及到EDI报文(XML格式文件)传输和回执接收,每发送一份EDI报文,后续都会收到与之关联的回执(标识该数据在第三方系统中的流转状态)。这里枚举几种回执类型:MT1101、MT2101、MT4101、MT8104、MT8105、MT9999,系统在收到不同的回执报文后,会执行对应的业务逻辑处理。当然,实际业务场景并没有那么笼统,这里以回执处理为演示案例模拟一个回执类@Datapubl

2020-10-21 17:20:29 1748

转载 Java开发不得不了解的各种插件、工具、网站!!!

文章目录1. 前言2. IDEA 插件2.1 Alibaba Java Coding Guidelines2.2 jclasslib bytecode viewer2.3 Codota2.4 Auto filling Java call arguments2.5 GenerateO2O、 GenerateAllSetter2.6 Material Theme UI2.7 Rainbow Brackets2.8 Maven Helper2.9 FindBugs2.10 SequenceDiagram2.11

2020-10-18 22:08:06 205

原创 一文带你搞懂vue中的this.$nextTick

1、Vue.nextTick(callback) 使用原理原因是,Vue是异步执行dom更新的,一旦观察到数据变化,Vue就会开启一个队列,然后把在同一个事件循环 (event loop) 当中观察到数据变化的 watcher 推送进这个队列。如果这个watcher被触发多次,只会被推送到队列一次。这种缓冲行为可以有效的去掉重复数据造成的不必要的计算和DOm操作。而在下一个事件循环时,Vue会清空队列,并进行必要的DOM更新。当你设置 vm.someData = ‘new value’,DOM 并不会

2020-09-23 16:14:20 168

原创 git结合idea常用操作记录

文章目录git常用命令git工作原理1、把已经add还没有commit的文件去掉git版本管理2、把commit但是还没有push的代码回滚3、把已经push到远程的代码回滚4、其他分支合并到当前分支。。。。后续补充。。。。这里记录一下工作或者平常学习中可能会用到的git的常用操作,主要是结合idea的!git常用命令git工作原理工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有

2020-09-19 16:30:23 7150

转载 如何回答面试官最喜欢问的“三高“?

文章目录前言正文一、缓存1.1 缓存为什么有效?1.2 缓存分类1.3 缓存使用指南1.4 缓存更新的策略1、Cache-Aside:2、Cache-As-SoR:二、预处理和延后处理2.1 预处理2.2 延后处理三、池化3.1 内存池3.2 线程池3.3 连接池四、同步变异步五、消息队列5.1 服务解耦5.2 异步处理5.3 流量削峰5.4 总结六、批量处理七、数据库7.1 索引7.2 读写分离7.3 分库分表八、具体技法8.1 零拷贝8.2 无锁化8.3 序列化与反序列化总结前言金九银十,又是一年校

2020-09-15 20:41:37 245

转载 手把手实践NoSuchMethodError、NoClassDefFoundError依赖冲突

前序在实际项目开发中,经常会遇到程序在没有做任何修改的情况下无法启动了。前两天正在电脑前发呆,突然隔壁的程序媛小王火急火燎的说,涛哥帮忙看一个问题吧?这个问题已经阻塞了一中午了。看到异常信息后,第一反应是这种问题99.9999%的原因是maven依赖包有不兼容的问题。不过用idea的Dependency Analyzer排查时发现根本就不存在有冲突的包。这下发现遇到真问题了。虽然嘴上跟人家说是因为版本冲突导致的,但是心里面还是开始犯嘀咕了。不过最后还是把问题给发现了,同时也证明了当时自己的判断是正确的。

2020-09-09 16:04:50 173

原创 springboot使用logback及配置文件讲解

文章目录一、日志级别二、SpringBoot引入logger三、通过springboot配置文件配置logback四、通过XMl文件自定义logback配置4.1configuration父标签4.2 contextName属性4.3 property属性4.4 appender节点4.4.1 控制台输出appender4.4.2 文件输入appender4.5 root节点-启用配4.6 logger节点4.7 root和logger的关系4.8多环境日志配置日志处理是一个正式项目必备的功能,日志要能够

2020-09-07 16:48:19 696

转载 你的打日志姿势正确吗?

文章目录使用slf4j打日志的正确方式什么时候应该打日志基本格式使用[]进行参数变量隔离不同级别的使用ERROR:基本概念说明WARN基本概念INFO:基本概念说明DEBUG基本概念说明TRACE基本概念规范示例说明使用slf4j使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。实现方式统一使用: Logback框架打日志的正确方式什么时候应该打日志当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。当你碰到if…

2020-09-04 16:01:49 69

转载 Java 异常处理的误区和经验总结

本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳。只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验,提高产品的价值。误区一、异常的选择图 1. 异常分类图 1 描述了异常的结构,其实我们都知道异常分检测异常和非检测异常,但是在实际中又混淆了这两种异常的应用。由于非检测异常使用方便,很多开发人员就认为检测异常没什么用处。其实异常的应用情景可以概括为以下:一、调用代码不能继续执行,需要立即终止。出现这种

2020-08-31 18:03:21 76

原创 idea多环境配置及问题解决

前言正常在企业里面的项目都会有开发环境、测试环境、生产环境,各个环境配置可能都会不一样,我们在构建时,会涉及到环境配置的切换。来回手工修改配置,效率低下,容易出错。可以配置多个含有不同环境配置的Profile,在构建时指定构建环境,达到多环境下快速灵活构建的目的。下面我们来模拟这种原理。项目结构:各个配置文件filters文件夹下的三个不同环境的配置文件dev.properties:jdbc.driver.class=com.mysql.jdbc.Driverjdbc.connectio

2020-08-27 16:55:32 8891

原创 一文搞懂java.util.ConcurrentModificationException异常原因和解决方法

文章目录场景复现原因分析解决方法ListMap场景复现对于list,map都有可能出现,这里主要分析list! @Test public void testList() { List<String> list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add

2020-08-13 15:52:50 248

转载 Spring Validation最佳实践及其实现原理,参数校验没那么简单!

之前也写过一篇关于Spring Validation使用的文章,不过自我感觉还是浮于表面,本次打算彻底搞懂Spring Validation。本文会详细介绍Spring Validation各种场景下的最佳实践及其实现原理,死磕到底! 项目源码:spring-validation简单使用Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现。hibernate validation是对这个规范的实现,并增加了校验注解如@Email、@Length等。Sp

2020-08-10 15:55:37 271

原创 一文搞懂Java的值传递和引用传递

文章目录实参与形参值传递与引用传递Java中的值传递总结关于这个问题,引发过很多广泛的讨论,看来很多程序员对于这个问题的理解都不尽相同,甚至很多人理解的是错误的。还有的人可能知道Java中的参数传递是值传递,但是说不出来为什么。在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了。如果你有以下想法,那么你有必要好好阅读本文。错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。错误理解二:Java是引用传递。错误理解三:传递的参数如果是普

2020-07-31 14:46:17 278

原创 一文带你搞清String是值传递还是引用传递?

String中的坑最近看到一道关于String的面试题,差点让我以为String是值传递,就是下面这个例子,体验下:​public class Demo{ public static void main(String[] args) { Demo d = new Demo(); String str = "BEA"; d.change(str); System.out.println(str); } void ch

2020-07-31 14:21:06 715

转载 你会优雅的处理空值吗?

文章目录导语业务中的空值场景问题现场深入listUser研究深入研究get方法深入入参小结空对象模式场景优化修改使用Optional可以进行优化Optioanl的正确使用Optional不要作为参数Optional作为返回值当个实体的返回集合实体的返回使用Optional变量getter中的使用小结导语在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不这头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。有时候,更可怕的是系统因为这些空值的情况,会

2020-07-21 14:34:42 243

转载 高并发,你真的理解透彻了吗?

文章目录01 如何理解高并发?02 高并发系统设计的目标是什么?❇ 性能指标❇ 可用性指标❇ 可扩展性指标03 高并发的实践方案有哪些?❇ 纵向扩展(scale-up)❇ 横向扩展(scale-out)❇ 高性能的实践方案❇ 高可用的实践方案❇ 高扩展的实践方案高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。在过往的面试中,如果候选人做过高并发的项

2020-07-19 12:38:06 272

原创 一文带你入门SpringMVC
原力计划

文章目录一、MVC设计模式简介Spring MVC 工作流程Spring MVC接口三、Spring MVC视图解析器四、@Controller和@RequestMapping注解详解Controller 注解类型RequestMapping 注解类型1)方法级别注解2)类级别注解编写请求处理方法1)请求处理方法中常出现的参数类型2)请求处理方法常见的返回类型五、Spring MVC获取参数的几种常见方式通过实体 Bean 接收请求参数1)创建首页面2)完善配置文件3)创建 POJO 实体类4)创建控制器类

2020-07-07 15:03:33 1954

原创 一文搞定MyBatis各种标签
原力计划

文章目录select标签使用 Map 接口传递多个参数使用 Java Bean 传递多个参数insert、update、delete和sql标签< insert>元素1)主键(自动递增)回填2)自定义主键< update>与< delete>元素< sql> 元素if标签1)添加 SQL 映射语句2)添加数据操作接口方法3)调用数据操作接口方法4)测试动态 SQL 语句choose、when、otherwise标签1)添加 SQL 映射语句2)添加数据操作接口

2020-07-03 17:40:37 374

原创 Spring?两万字教程带你入门
原力计划

文章目录Java Spring框架是什么?它有哪些好处?Spring体系结构详解Spring目录结构和基础JAR包介绍Spring IoC容器BeanFactoryApplicationContextSpring DI(依赖注入)1)属性 setter 注入(开发使用)2)构造方法注入1. 创建 PersonService 接口2. 创建接口实现类 PersonServiceImpl3. 在 applicationContext.xml 中添加配置信息4. 编写测试方法5. 运行项目并查看结果Spring

2020-07-03 16:25:39 8990

原创 一文搞懂MyBatis的几种传参

1.parameterType="string"或者int/long等单个参数,则在获取参数时,分两种情况:如果是要进行非null的判断,则不可以在if后直接那变量名进行判空,因为mybatis会默认变量名为_parameter,否则会报no getter/setter错误。要写成< if test="_ parameter!=null and _parameter!='' ">User getUserById(String uid);<select id="getUserById

2020-07-02 13:37:47 1352

原创 一文搞懂MyBatis关联查询

文章目录前言一对一一对多多对一多对多总结mysql脚本前言MyBatis关联查询(级联查询)分为一对一,一对多,多对一,多对多而每种实现方式又可以分类嵌套查询,嵌套结果,连接查询(写法跟嵌套结果类似,只是采用另外的POJO存储结果)一对一一对一级联关系在现实生活中是十分常见的,例如一个大学生只有一张一卡通,一张一卡通只属于一个学生。再如人与身份证的关系也是一对一的级联关系。MyBatis 如何处理一对一级联查询呢?在 MyBatis 中,通过 < resultMap> 元素的子元素

2020-06-30 10:55:24 1914

原创 MyBatis基础知识扫盲
原力计划

文章目录MyBatis 是什么Hibernate 和 MyBatis 的区别1)sql 优化方面2)开发方面3)Hibernate 优势4)Mybatis优势MyBatis 的工作原理MyBatis 的核心组件MyBatis SqlSessionFactory使用 XML 构建 SqlSessionFactory使用代码创建 SqlSessionFactoryMyBatis SqlSession简介MyBatis实现映射器的2种方式用 XML 实现映射器注解实现映射器MyBatis执行SQL的两种方式Sql

2020-06-24 15:17:14 8910

原创 什么是主从复制?mysql主从复制?redis主从复制?
原力计划

文章目录什么是主从复制为什么需要主从复制mysql的主从复制mysql主从复制数据一致性问题方法 1:异步复制方法 2:半同步复制方法 3:组复制三种复制总结redis的主从复制什么是主从复制是一种数据备份的方案。简单来说,是使用两个或两个以上相同的数据库,将一个数据库当做主数据库,而另一个数据库当做从数据库。在主数据库中进行相应操作时,从数据库记录下所有主数据库的操作,使其二者一模一样。为什么需要主从复制读写分离:通过主从复制的方式来同步数据,然后通过读写分离提高数据库并发处理能力,提高数据

2020-06-23 17:35:33 559

转载 一次非常有意思的sql优化经历

文章目录场景索引优化单列索引多列索引索引覆盖排序场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表create table Course(c_id int PRIMARY KEY,name varchar(10))数据100条学生表:create table Student(id int PRIMARY KEY,name varchar(10))数据70000条学生成绩表SCCREATE table SC( sc_id int PRIMA

2020-06-22 10:40:51 203

转载 一文带你掌握14种UML图

文章目录前言什么是UML?为什么要用UML?UML图有哪些?UML图概览什么是类图?泛化(Generalization)实现(Realization)关联(Association)聚合(Aggregation)组合(Composition)依赖(Dependency)什么是组件图?什么是部署图?什么是对象图?什么是包图?什么是组合结构图?什么是轮廓图?什么是用例图?什么是活动图?什么是状态机图?什么是序列图?什么是通讯图?什么是交互概览图?什么是时序图?总结前言上一篇文章写了一篇建造者模式,其中有几个U

2020-06-16 16:49:52 407

Java版俄罗斯方块(源码+exe/无需安装环境+带音乐+超好看UI)

Java版本百分百可直接运行exe文件+源码,不用安装java任何环境!!带音乐+超好看UI!! 博客链接:https://blog.csdn.net/belongtocode/article/details/105979473

2020-05-07

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除