自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

撸起袖子加油干

尽管道路曲折,彼岸只有一个,专研、布道,做一个快乐的程序猿

  • 博客(33)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 多线程并发-线程状态切换-后宫狗血剧情版,看完彻底掌握线程状态切换流程

2020-05-27 18:01:36 302

原创 多线程并发编程-死锁问题和对应的解决方案汇总-面试常考

一、首先死锁需要满足以下几个条件: 多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放,而该资源又被其他线程锁定,从而导致每一个线程都得等其它线程释放其锁定的资源,造成了所有线程都无法正常结束。这是从网上其他文档看到的死锁产生的四个必要条件:1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。 3、请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。 4...

2020-05-24 00:33:51 464

原创 多线程并发编程-并发工具类----CountDownLatch原理分析&适用场景分析&对比join差异

一、前言: 首先,在前面我们在学习线程间通信的时候,学到一个关键字:join,例如在main方法中,执行t1.join(),t2.join(),则main主线程会阻塞运行,直到t1,t2分别执行完,回调阻塞在t1,t2上面的线程。这是main线程会重新获得执行契机。 今天咱们学习的CountDownLatch,是非常有用的开发工具类,在JDK1.5版本中,开发包,提供了CountDownLatch也可以实现join的功能,并且比join支持的功能更多,它允许一个或多个线程等待其他...

2020-05-31 12:39:51 272

原创 多线程并发编程--AQS阻塞队列、Condition.await()/signal()源码分析、生产-消费者案例分享 -上

一、前言: 复习一下之前学习的知识点,之前咱们学习了synchronized、wait、notify相关功能,synchronized实现锁,有隐形的可重入功能(同一个线程,可以重复进入一把锁); wait/notify实现线程间的异步通信;wait会释放锁,进入等待队列(线程状态:WAITING) ,需要依赖别的线程notify唤醒;其中wait(long time) 超时等待(线程状态:TIMED_WAITING),时间到,自动转入就绪队列,竞争锁。二、今...

2020-05-30 16:03:23 463

原创 ORM框架-Mybatis-插件plugins原理&自定义插件(以分页插件为例)

一、前言:二、原理分析三、自定义插件(分页插件)

2020-05-28 01:04:24 328

原创 多线程并发编程-ThreadLocal详讲-通俗易懂

一、前言: 多线程并发编程,为了解决共享变量的可见性问题,可以使用volatile关键字,解决共享变量在线程之间的可见线性,A修改共享变量后,B读取的时候,会自动从主内存读取,同时更新CPU高速缓存。 如果线程需要在线程自身维护一个共享变量副本,减少多线程之间的干扰。可以使用ThreadLocal,我们看一下线程的UML模型,在Thread中维护了ThreadLocal.ThreadLocalMap成员变量,ThreadLocalMap是Entry(key,value)键值...

2020-05-26 13:21:48 225

原创 IDEA 断点调试,为啥断点没有起作用

极有可能是这个按钮被点中了,去掉之后,debug可以正常进入断点调试。

2020-05-26 10:52:39 18139 2

原创 多线程编程-线程间通信-Join指令-使用场景与原理分析

一、首先,线程间通信的场景有几种: 1)A线程while()循环时,可以通过中断指令,B线程通知A线程退出,这样A线程即使在wait/sleep,都会收到中断通知,代码层面主动捕获异常,根据捕获的异常做对应逻辑处理。 2)A线程在执行wait指令时,当前线程会释放锁,进入等待队列。等待队列到就绪队列,需要其他线程调用notify或者notifyALL指令,这A线程可以就绪队列,重新竞争锁。 3)A线程如果会优于B线程执行完成,如果我们需要A线程等待B线程执行完成,再继续往下...

2020-05-25 13:15:39 426

原创 多线程并发编程-synchronized 与 ReentrantLock 区别,面试常问

一、前言: 在多线程并发编程中,基本都会遇到锁的概念,锁的几个基本特征:互斥性 可重入性、 jdk自带的关键字synchronized,实现了java最原始的重量级锁,根据锁的范围,有对象锁和类锁两个概念;在Jdk 1.5中,引入了java.util.concurrent包(后面统称:JUC),引入了Lock锁。二、具体对比: synchronized Lock...

2020-05-25 10:39:49 208

原创 多线程并发编程----如何解决wait()死锁等待问题

一、首先大家浏览一下我的上一篇博文,这里有“事故”现场: https://blog.csdn.net/jason_jiahongfei/article/details/106302871二、为了解决wait()死锁问题,首先咱们得了解死锁产生的原因,先从线程的状态流转说起: 最本质的两个方法: lock.wait()//必须等待别人唤醒,生活完全不能自理。 lock.wait(long time)//等待时间到了,如果没有得到唤醒通...

2020-05-23 19:44:35 2391

原创 多线程并发编程-如何解决Wait相互等待问题??

以下代码例子会产生两个线程互相等待的问题,不用wait(long XX) 如何解决相互等待问题??import com.jason.support.JasonTemplate;import java.util.*;/** * @program: JasonSpringBoot * @description * @author: 大龄程序猿 * @create: 2020-05-23 15:15 **/public class TestWait { public fina..

2020-05-23 17:08:14 1081 3

原创 多线程并发编程-线程安全问题-数据原子性问题&解决方案

一、首先通过下面一个例子来看一下,数据一致性问题:package org.jason.thread;import static java.lang.Thread.sleep;/** * 2020/5/22 * author jason */public class ThreadSyn { public static int count=0; public static void main(String[] args) { Thread t1= new

2020-05-22 13:04:16 390

原创 多线程编程-线程的状态&状态切换

一、Java概念中,线程的状态有哪些: java 的线程有以下6中:new状态、终止状态、WAITING状态、TIMEDWAITING、就绪、运行、终止。 操作系统层面,线程只有5中,去掉NEW&终止状态。...

2020-05-21 23:34:57 317

原创 多线程并发编程入门之线程的并行与并发

一、首先,理解并行与并发的含义: 现在很多机器都是多核,例如当前是4核,那么并行的数量就是4;并发是指我们服务器应用单位时间内,同时处理请求的能力。 从多线程的特点来看: 1)同步: 缺点:发短信流程如果异常,则会影响生单的流程,类似一个数据事务;仔细研究发现,发送短信并非生单流程中的关键路径,可以采用异步的方式,缩短关键业务的关键路径;针对非关键路径的流程采用异步执行的方式,例如工单表、插入MQ队列、单独起异步线程等等方式执行,如果处理失败...

2020-05-21 22:01:22 397

原创 多线程编程-Executors线程池 详解

一、前言:Java通过Executors提供四种线程池,分别为:1、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程,有隐患。2、newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。3、newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行:ScheduledExecutorService pool2=Executor

2020-05-20 00:19:30 643

原创 多线程编程-java线程创建的几种方式,初学者福利-面试常问

一、前言: java中,线程的创建大概有以下几种方式: 1)继承Thread,重写void run()方法; 2)实现Runnable接口,重写void run()方法; 3)实现Callable接口,重写call方法;FutureTask包装Callable接口。二、重点写一下Callable接口: 自定义类实现Callable接口,重写call方法; 用心创建的Callable 对象,重建FutureTask,同时...

2020-05-19 23:45:42 266

原创 敏捷管理-PDCA循环(戴明环)

PDCA循环,也称戴明环,是由美国著名质量管理专家戴明(W、E、Deming)首先提出的一套管理理论。这个循环主要包括四个阶段:计划(Plan)、实施(Do)、检查(Check)和处理(Action),及八个步骤。八个步骤是四个阶段的具体化。1、计划(P)阶段 计划是质量管理的第一阶段。通过计划,确定质量管理的方针、目标,以及实现该方针和目标的行动计划和措施。计划阶段包括以下四个步骤: 第一步,分析现状,找出存在的质量问题。 第二步,分析原因和影响因素,针对找出的质量问题,分析产生的原...

2020-05-19 09:24:33 3523

原创 ORM框架-Mybatis-手写框架中核心主键功能

一、前言二、框架结构图三、手写框架代码

2020-05-19 00:11:40 210

原创 ORM框架-Mybatis-集成Spring,框架整合,配置&源码讲解

一、前言二、环境准备三、流程分析

2020-05-18 13:19:23 255

原创 多线程编程-线程间通信-wait&notify

一、数据模型: 知识储备:类锁,对象锁,不清楚的,可以学习一下二、以生产者、消费者为例,实现线程间的通信:package com.jason.thread.product;import java.util.Deque;import static java.lang.Thread.sleep;/** * @program: JasonSpringBoot * @description * @author: 大龄程序猿 * @create: 2020-05...

2020-05-18 00:20:51 210

原创 ORM框架-Mybatis-动态SQL

一、前言: 相比Hibernate全自动框架,Mybatis虽然是半自动框架,它的魅力在于可以基于复杂的业务场景,编写复杂的SQL,与此同时对程序猿SQL掌握能力也提出比较高的要求,不仅需要编写SQL,还需要考虑SQL执行性能。本章节,将带着大家一些熟悉动态SQL的标签写法:二、动态语句写法:if choose (when, otherwise) trim (where, set) foreach...

2020-05-17 19:10:52 450

原创 SpringBoot调试:Exception in thread main java.lang.AbstractMethodError: org.springframework.boot.cont

报错信息:Exception in thread “main” java.lang.AbstractMethodError: org.springframework.boot.context.config.ConfigFileApplicationListener.supportsSourceType(Ljava/lang/Class;)Z有经验的开发人员都知道,SpringBoot是由Spring5演变而来,报这个错误时因为pom.xml中引入了spring的依赖,去掉之后就可以正常启动了。.

2020-05-17 12:26:24 3293

原创 Ideal 工具快速新建一个SpringBoot工程

1、新建工程:2、next: maven相关配置,这里就不多啰嗦了:3、模板选择:4、搭建完成:

2020-05-17 10:17:57 290

原创 BeanFactory与FactoryBean的区别

一、这两个概念,命名比较相似,刚接触源码的时候,困惑了一票程序猿: 1)BeanFactory 是接口,提供了IOC容器最基本的形式,给具体的IOC容器的实现提供了规范,顶层接口。 2)FactoryBean 也是接口,为IOC容器中Bean的实现提供了更加灵活的方式,FactoryBean在IOC容器的基础上给Bean的实现加上了一个简单的工厂模式和装饰模式 ,我们可以在getObject()方法中灵活配置. 区别:FactoryBean是个Bean.在Spring中,所...

2020-05-16 23:14:41 17566 1

原创 JDK动态代理与Cglib的区别

一、前言:CGLIB(Code Generation Library)是一个开源项目,是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。cglib封装了asm,可以在运行期动态生成新的class,cglib用于AOP;JDK动态代理,是java反射工具包自带的工具类;简单对比:从实现机制角度出发: 1)JDK代理类需要实现InvocationHandler接口,重写invoke方法; 2)相比JDK这个特征,cglib却没...

2020-05-16 17:14:38 663

原创 如何做好一个TeamLeader,欢迎留言探讨

欢迎留言探讨,不喜勿喷,手下留情

2020-05-15 18:36:36 357

原创 ORM框架-Mybatis-缓存

一、前言mybatis 相比hibernate,有自身的缓存,分为两层,一级缓存面向SqlSession,生命周期跟Session保持一致,不可以物理关闭;二级缓存是全局缓存,所有的Session共享,可以关闭。如下图:为mybatis的缓存架构图:...

2020-05-14 00:59:03 237

原创 GIT操作规范-小白经典操作

一、登陆gitHub: https://github.com/创建账号,以及创建github客户端,这里就不具体说了,可以参考这篇帖子:https://www.cnblogs.com/ycs0403/p/12116650.html创建代码分支:二、上传本地代码: 本地代码仓库位置:右键git bash 1、设置本地远程push的用户名,密码: git config --global user.name git config...

2020-05-13 00:04:20 274

原创 Spring事务隔离级别详解

我们说的事务隔离级别是指并发事务,操作相同的数据,引发的问题,数据库针对这种业务场景,满足不同的业务诉求,提供四种隔离级别:1、读未提交(Read Uncommitted): 一个事务读到另一个事务还没有提交的数据。如果另一个事务失败了,回滚了,那么第一个事务读到的数据就是无效的数据。这就是脏读。 场景:屌丝A操作存款业务,一次性将工资50000都存到LP指定的账户上,LP这时刚好查看到了账户信息,心中充满喜悦;屌丝A在事务提交之前,突然发现忘记存私房钱了,于是赶紧撤销,改...

2020-05-11 16:38:11 1691 3

原创 ORM框架-DbUtil轻量级工具结合C3P0的使用

一、前言: C3P0是存放了一堆Connection对象的连接池。避免了java每次加载驱动和连接数据库;DbUtils简化了Java执行sql的语句,并将结果封装成对象列表。1、Dbutils是什么 Dbutils:主要是封装了JDBC的代码,简化dao层的操作。 作用:帮助java程序员,开发Dao层代码的简单框架。 框架的作用:帮助程序员,提高程序的开发效率。 Dbutils是由Apache公司提供。2、为什么需要Dbutils ...

2020-05-11 00:55:32 348

原创 ORM框架-Mybatis框架-入门篇

一、前言: 相信一帮80后的老牌程序猿们,一定知道ibatis,没错今天我们今天聊的Mybatis框架,其实就是ibatis,大概在10年的时候,在ibatis3.*版本以后正式改名为mybaits,它也从apache转到了google code下;也就是说ibatis2.*,mybatis3.*。 那么Mybatis相比古老的Hibernate框架,有啥区别呢?这里简单的对比一下: 首先hibernate是对jdbc的封装,封装Bean与数据库的一条记录的隐...

2020-05-10 22:58:16 361

原创 手撕Spring-DI代码框架

一、DI 依赖注入: 传统的通过XML文件的方式配置依赖关系,相信有经验的Spring开发人员应该还清晰记得如何配置: 例如:<bean id="beanImpl" class="com.chensan.spring.chapter2.BeanImpl2"/><bean id="beanApiDecorator" class="com.chensan.s...

2020-05-05 23:17:04 251

原创 手撕Spring-IoC代码框架

一、IoC(Inversion of Control) 本篇我们重点来讲解一下在Spring框架中,如何初始化Bean,大概分为三步: 1、定位:根据包扫描路径,确认扫描路径; 2、加载:将扫描路径下的类相关信息,统一加载到内存; 3、注册:初始化BeanFactory,数据结构: //存储注册信息的BeanDefin...

2020-05-04 01:27:52 352

springcloud-demo-archetype-1.0-SNAPSHOT.jar

springcloud代码工程骨架,集成druid等相关功能

2021-12-11

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

TA关注的人

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