自定义DataSource

在JDBC(下)我会引入DBCP或者C3P0数据源来完善JdbcUtils。所以这里插播一下。主要内容:数据源的作用为什么用代理模式/装饰者模式自定义数据源:动态代理DBCP连接池部分源码解析------## 数据源的作用之前提过,JDBC操作数据库,底层走的还是TCP协议。虽然我没专门学过计算机网络,但是也知道频繁开闭网络连接的时间开销是很大的,比如“三次握手”啥的。而数据源就是为了解决频繁创建

- 阅读全文 -

JDBC(中)

使用JDBC笼统来说,有三步:连接数据库执行SQL语句获得结果上一篇JDBC(上)我们主要讨论第一步:如何连接数据库(获取Connection),这一篇聊聊如何利用Connection进行CRUD。期间会引入部分设计模式不断重构代码,最终实现类似JDBCTemplate的模板类,方便其他类继承或组合以提高开发效率。由于篇幅有限,这里直接用PreparedStatemenet,不去讲解Stateme

- 阅读全文 -

JDBC(上)

JavaWeb的内容大致包括:Tomcat(Tomcat外传)Servlet、JSP(浅谈JSP)Session、Cookie(Cookie与Session)JDBCFilter/ListenerAJAX、JSON(AJAX与JSON)我记得18年6月开始JavaWeb系列的写作,截止目前,还剩下JDBC和Filter/Listener。速度有点超乎预期地慢...不过随着自己开发经验的增长以及对知

- 阅读全文 -

浅谈JDK动态代理(下)

介绍完JDK动态代理,今天和大家一起做个小案例:模拟Spring的事务管理。主要内容:熟悉的陌生人山寨AOP事务需求分析AOP事务具体代码实现------## 熟悉的陌生人面试官如果问“请你谈谈你对Spring的理解”,估计很多人会脱口而出:IOC和AOP。IOC大概是大家对Spring最直接的印象,就是个大容器,装了很多bean,还会帮你做依赖注入。IOC但是对于AOP,很多人其实没有太多概念,

- 阅读全文 -

浅谈JDK动态代理(中)

接上篇浅谈JDK动态代理(上)这篇文章咬咬牙能看完的话,再看其他动态代理的文章就轻松愉快多了。希望想搞懂动态代理的同学,能坚持下去。主要内容:前情提要接口创建对象的可行性分析动态代理Proxy.getProxyClass()的秘密编写可生成代理和可插入通知的通用方法类加载补充小结彩蛋文章较长,有点啰嗦了,希望看简化版的戳下方链接:Java 动态代理作用是什么?www.zhihu.com前情提要假设

- 阅读全文 -

浅谈JDK动态代理(上)

专栏最近写了多线程、ThreadLocal、注解相关的文章,这些其实都是我们迈向SSM的小碎步。我们已经离SSM越来越近了,但还不够。今天,我们仍需一起再往前走一小步:动态代理。这四个字一出来,估计很多初学者已经开始冒冷汗。动态代理之所以给人感觉很难,有三点原因:代码形式很诡异,让人搞不清调用逻辑用到了反射,而很多初学者不了解反射包含代理设计模式的思想,本身比较抽象尽管动态代理看起来似乎有一定难度

- 阅读全文 -

注解(下)

上篇讲了什么是注解,以及注解的简单使用,这篇我们一起用注解+反射模拟几个框架,探讨其中的运行原理。内容介绍:自定义Junit框架山寨JPA自定义Junit框架上一篇已经讲的很详细了,这里就直接上代码了。请大家始终牢记,用到注解的地方,必然存在三角关系,,并且别忘了设置保留策略为RetentionPolicy.RUNTIME。代码结构MyBefore注解@Retention(RetentionPol

- 阅读全文 -

注解(上)

注解,和反射一样,是Java中最重要却最容易被人遗忘的知识点。哪怕Spring、SpringMVC、SpringBoot等框架中充满了注解,我们还是选择性地忽视它。很多人不明白它是怎么起作用的,甚至有人把它和注释混淆...工作中也只是机械性地在Controller上加@RequestMapping。是的,我们太习以为常了,以至于觉得它应该就是如此。内容介绍:两件小事注解的作用注解的本质反射注解信息

- 阅读全文 -

浅谈ThreadLocal

时间过得真快,前几天偶然机会下又重新看了一遍郑伊健主演的《中华英雄》。不得不说,年轻时是真的帅。而且他这人吧,就像从港漫走出来的少年,似乎天生适合拍这种漫画改编的电影,比如聂风,比如陈浩南(古惑仔一开始也是漫画)。话说《中华英雄》有一个情节就是华英雄远赴美国,结果被卖到采石场做苦力。后来联合鬼仆师兄还有采石场的其他朋友,大闹了一场。所以本篇文章开头,打算自己画个漫画,纪念一下逝去的童年时光:咳咳,

- 阅读全文 -

多线程初级(中)

上一篇介绍了什么是线程以及创建多线程的两种常用方式(Callable放到下次说),这篇来简单聊聊多线程的“锁”。其实,很多初学者(包括我自己)初期学习多线程时都被视频带偏了...虽然我始终认为培训班的视频是最适合非科班零基础入门的,但是在多线程方面,无一例外都讲得比较糟糕。感触很深的一点是:很多新手觉得多线程难,并不是因为volatile、ReentrantLock或者Executor线程池,而是

- 阅读全文 -