老大问我:“建表为啥还设置个自增 id ?用流水号当主键不正好么?”
发布日期:2021-05-19 03:30:48 浏览次数:0 分类:博客文章
又要开始新项目了,一顿操作猛如虎,梳理流程加画图。这不,开始对流程及表结构了。我:吧啦吧啦吧啦……老大:这个建表为啥还设置个自增id?直接用流水号(用户号/产品号)当主键不就行了?我:这个是DBA规定的,创建表id、create_time、update_time这三个字段都要有。《Java开发规范》也是这么规定的。小伙伴:(附和)是的,规定的是这样的!老大:流水号在你这是唯一索引吧?设置成主键,这......
几行代码轻松实现跨系统传递 traceId,再也不用担心对不上日志了!
发布日期:2021-05-19 03:30:48 浏览次数:0 分类:博客文章
前言新项目查日志太麻烦,多台机器之间查来查去,还不知道是不是同一个请求的。打印日志时使用MDC在日志上添加一个traceId,那这个traceId如何跨系统传递呢?背景同样是新项目开发的笔记,因为使用的是分布式架构,涉及到各个系统之间的交互这时候就会遇到一个很常见的问题:单个系统是集群部署,日志分布在多台服务器上;多个系统的日志在多台机器,但是一次请求,查日志更是难上加难。解决方案使用SkyWal......
请介绍下你了解的ThreadLocal,它的底层原理!
发布日期:2021-05-19 03:30:47 浏览次数:0 分类:博客文章
前言业务开发中经常使用ThreadLocal来存储用户信息等线程私有对象...ThreadLocal内部构造是什么样子的?为什么可以线程私有?常说的内存泄露又是怎么回事?公众号:liuzhihangs,记录工作学习中的技术、开发及源码笔记;时不时分享一些生活中的见闻感悟。欢迎大佬来指导!介绍ThreadLocal类提供了线程局部变量。和正常对象不同的是,每个线程都可以访问get()、set()方法......
Spring 源码阅读环境的搭建
发布日期:2021-05-19 03:30:46 浏览次数:0 分类:博客文章
前言本文记录了Spring源码环境的搭建方式,以及踩过的那些坑!当前版本:5.3.2-SNAPSHOT。环境准备GitJDKmaster分支需要JDK115.2.x分支,JDK8即可Gradle6.5.1IDEA最新(2020.2.3)Spring源码仓库地址:下载源码clone源码gitclonehttps://github.com/spring-projects/spring-framewor......
Spring 自调用事务失效,你是怎么解决的?
发布日期:2021-05-19 03:30:46 浏览次数:0 分类:博客文章
前言相信大家都遇到一种事务失效场景,那就是Spring自调用,就是在Service方法内,调用另一个加@Transactional注解的方法,发现事务失效,这时候你是怎么解决的呢?事情回顾那是一个我忘了天气咋样的下午,突然蹦出一个小红点,嗯~挺着急的小红点。原来是事务失效了!莫慌!莫慌!最后小伙伴选择了抽走,是我的工具类不香了么?当然故事的结果是完美的,问题解决了。事务在开发中涉及到同时操作多个表......
Spring 源码学习 03:创建 IoC 容器的几种方式
发布日期:2021-05-19 03:30:45 浏览次数:0 分类:博客文章
前言在上一篇文章末尾画了一幅简图,现在从简图这入手,先来看看如何创建容器!创建容器在搭建时,最后举了一个例子,其实就是创建容器,并从容器中获取Bean,来测试环境是否OK。根据元数据的不同,创建容器的方式也不同,下面参考官方文档,简单介绍下创建容器的几种方式:Java配置获取元数据publicclassAnnotationConfigApplicationTest{publicstaticvoid......
Spring 源码学习 09:refresh 大概流程
发布日期:2021-05-19 03:30:44 浏览次数:0 分类:博客文章
前言前面的准备工作结束之后,就是进入核心代码refresh。源码publicvoidrefresh()throwsBeansException,IllegalStateException{//加锁synchronized(this.startupShutdownMonitor){StartupStepcontextRefresh=this.applicationStartup.start("spr......
Spring 源码学习 08:register 注册配置类
发布日期:2021-05-19 03:30:44 浏览次数:0 分类:博客文章
前言看完无参构造的源码及流程之后,后面将会执行register方法。register方法,入参是我们的配置类JavaConfig.class,下面跟着源码继续往下走!源码分析this.reader.register(componentClasses);这里执行的是reader的方法,入参就是传入的JavaConfig.class。reader在之前初始化,就是注册一些PostProcessor。循......
Spring 源码学习 07:ClassPathBeanDefinitionScanner
发布日期:2021-05-19 03:30:44 浏览次数:0 分类:博客文章
前言AnnotationConfigApplicationContext构造函数除了初始化一个reader,还有一个scanner,下面来一起看看ClassPathBeanDefinitionScanner都有什么逻辑。源码分析this.scanner=newClassPathBeanDefinitionScanner(this);代码如下所示:其中useDefaultFilters默认设置的tr......
Spring 源码学习 06:AnnotatedBeanDefinitionReader
发布日期:2021-05-19 03:30:43 浏览次数:0 分类:博客文章
前言BeanDefinition的概念也了解了,也知道一个Bean在Spring中定义的信息有哪些之后,继续言归正传。源码分析在初始化时会先生成一个reader,进入方法,其实是走的下面的逻辑:其中getOrCreateEnvironment(registry)会返回一个Environment用来表示当前的运行环境之类的。ConditionEvaluator是用来完成对@Conditional这个......

关于作者

    白红宇是个全栈工程师,前端vue,小程序,app开发到后端框架设计,数据库设计,环境部署上线运维。

最新文章