- 博客(15)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java学习笔记(面试必备)
第一式:java基础第一招:java的四大特性:抽象,继承,封装,多态抽象的概念:这里我先补充一下对象的概念,在java中世界万物皆对象,对象就是客观存在的事物,比如一个人,一支笔。而抽象就是将对象的某些细节和特征抽取出来,用程序代码表示,抽取出来的东西一般我们称之为类或者接口,因此抽象分为两个方面,数据抽象和过程抽象。数据抽象:就是将事物的共同的特征用程序代码表示,通过抽象成为对...
2018-12-17 10:36:19
9883
1
原创 面试之集合框架
java集合相关的优秀文章有很多,本文只是记录初级开发(1到3年)如何去回答该类问题至于3年以上或者基础非常好的同学就可以直接忽略了。那么开始了,开始吹逼忽悠造火箭模式。我们常用的集合有List,Set,Map,其中List,Set 继承Collection接口,我们用到的实现类有ArrayList,LinkedList,HashSet,HashMap,ConcurrentHashMap,TreeMap。Ad...
2021-10-11 16:41:15
150
原创 手写Spring之IOC
本篇博客参考github开源项目https://github.com/code4craft/tiny-spring,从零开始手写简易版Spring框架,并且给予更详细的注释和个人见解。1.构建BeanFactory,创建bean的实例/** * @author Jalen.Deng * @description bean工厂-最基本的容器 * @date 2020/11/23 20:36 **/public class BeanFactory { //创建beanDefiniti
2020-11-25 14:56:40
203
原创 mycat实战笔记
1、数据库设计参考阿里巴巴开发手册(一) 建表规约 1. 【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是,0 表示否)。 说明:任何字段如果为非负数,必须是 unsigned。 注意:POJO 类中的任何布尔类型的变量,都不要加 is 前缀,所以,需要在<resultMap>设置从 is_xxx 到 Xxx 的映射关系。数据库表示是与否的值,使用 tinyint 类型,坚持 is_xxx.
2020-11-21 17:34:56
441
1
原创 读《图解多线程设计模式》之Guarded Suspension
Guarded Suspension模式 - -如果执行现在的处理会出现问题,那么就让执行处理的线程进行等待1、守护条件(前置条件)是什么?在执行目标处理前必须满足的条件称之为守护(前置)条件2、该模式登场的角色GuardedObject:被守护的对象,持有一个被守护的方法guardedMethod,当线程执行该方法时,若守护条件成立,则立即执行,否则就要进行等待。guardedMethod通过while和wait()实现,...
2020-10-22 22:38:57
180
原创 读《图解多线程设计模式》之Single Threaded Execution
Single Threaded Execution---以单个线程执行1、概念:确保同一时间内只让一个线程执行处理2、用在何处:多线程程序中,多个线程访问时,共享对象角色状态发生改变。3、什么是共享对象角色:就是多个线程访问的同一个对象或方法。4、如何保证线程安全:synchronized关键字。5、可能发生的问题:死锁。6、synchronized实现原理:java代码层面我们使用synchronized关键字,然后编译器编译成字节码文件时,内部是monitorener以及moni
2020-10-20 10:16:45
135
原创 mybatis学习(二)之mapper映射以及sql执行过程
继上一篇博客https://blog.csdn.net/Riztal/article/details/109000564我们讲了mybatis加载全局配置文件和映射文件的过程。以下是mybatis简单的使用步骤。①final String resource = "org/apache/ibatis/builder/MapperConfig.xml";②final Reader reader = Resources.getResourceAsReader(resource);③manag...
2020-10-16 11:05:13
746
原创 mybatis学习(一)之加载全局配置文件以及映射文件
前言本篇博客适合新手看,对于工作一两年的我们,我们要思考为什么学习mybatis源码,我的回答是,一是为了面试,面试造火箭。二是为了排查工作上遇到的一些问题,三是mybatis为我们做了什么,它的基本原理是什么,我从中可以学习到什么,举一反三。最后说一句,不要把太多时间花在框架上,框架说白了就是帮你做了一些重复的事情,并且解决了一些额外的问题,而我们要学习的就是解决问题的思想。当然,Spring多花时间学没关系,这个框架很稳,未来几年应该不会被淘汰,哈哈。1.mybatis加载全局配置文件.
2020-10-13 17:40:39
372
原创 RocketMq学习之消息发送
内容选自《Rocketmq技术内幕》,融入自己的思考见解以及其他优秀内容的解释说明开局没有图,内容全靠编。首先说到消息发送,我们就要思考以下问题:消息的数据结构,消息的发送方式,生产者怎么启动的,消息发送的过程(如何保证高可用,一致性)1.消息的发送方式同步,异步,单向2.消息的数据结构message3.消息生产者的启动流程DefaultMQProducerlmpl...
2020-09-17 20:26:54
356
原创 RocketMq学习之NameServer
图来自于《RocketMq技术内幕》开局一张图,内容全靠问。(学而不思则罔,思而不学则殆)首先问什么是NameServer?一般中间件都是基于主题的订阅发布机制,生产者发送消息到消息服务器,消费者消费该消息服务器的消息,方式有两种,一种是消息服务器主动推送(push)给消费者,另一种是消费者主动(pull)获取消息。而nameServer就是消息服务器,从架构上可以看出,每一个组件都能做成集群模式,也是保证了高可用的特性。(架构设计无非就是追求三高,高可用高并发高性能),存在高可用就存在负载..
2020-09-15 14:35:38
201
原创 Spring声明式事务源码解析
首先看一下如何使用注解来做事务处理吧* 1、导入相关依赖 * 数据源、数据库驱动、Spring-jdbc模块* 2、配置数据源、JdbcTemplate(Spring提供的简化数据库操作的工具)操作数据* 3、给方法上标注 @Transactional 表示当前方法是一个事务方法;* 4、 @EnableTransactionManagement 开启基于注解的事务管理功能;5...
2019-09-14 18:28:06
252
原创 Spring源码分析(一)
本文以AOP作为例子,分析AOP实现原理,由于使用AOP肯定需要注入组件(比如切面类),所有自然而然就包括了依赖注入的底层实现过程。前置内容:AOP的概念,面向切面编程,主要是运用了动态代理(代理模式)实现,在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式;为什么需要AOP?拿我公司项目举例,在运单调度(快捷调度,智能调度)和执行的时候,都需要校验一下运单号,但是...
2019-09-04 16:52:30
296
原创 Spring组件分析
其实这篇博文写的很粗糙,主要是记录一下分析源码的过程,我觉得最重要的还是用debug去跟一次对象从创建到注入到容器的过程,Spring做了什么事。其实做了蛮多事的,有的基本上看不懂。其实也可以借鉴组件化思想,Spring是个IOC容器,我们注入的对象就是组件而组件就存在生命周期,初始化和销毁,以及相互继承和引用等关系。两大图,图片来自于https://javadoop.co...
2019-09-03 20:28:58
206
原创 多线程笔记
内容节选自《JAVA多线程编程核心技术》多线程_011.实现多线程的方式 继承Thread类或实现Runnable接口2.线程的执行顺序具有随机性3.线程不共享和线程共享 使用synchronize关键字实现线程同步4.currentThread()返回当前代码被哪个线程执行 isAlive()判断当前线程是否处于活动状态 sleep()是当前运行的线程暂停执行 ...
2019-07-08 19:38:43
173
原创 JVM读书笔记
内容节选自《深入理解JAVA虚拟机》1.JVM的内存组成线程隔离的区域:程序计数器:管理程序运行的顺序,每一个处理器(核)都会执行一条线程的指令,各个线程计数器互不影响,独立存储,因此是私有独立的。虚拟机栈(栈):记录每一个方法从调用到结束的过程,就是一次栈帧的入栈出栈。因此生命周期与线程一致。里面包含:局部变量表,数栈,动态链接局部变量表:八种数据类型以及引用类型(存放...
2019-07-05 09:13:47
246
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人