简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository 层中解耦出来,除了这些基本功能外,它还提供了动态 sql.延迟加载.缓存等功能. 相比 Hibernate,Mybatis 更面向数据库,可以灵活地对 sql 语句进行优化. 本文继续分析 Mybatis 的源码,第1点内容上一篇博客已经讲过,本文将针对 2 和 3 点继续分析: 加载配置.初始化S…
简介 这是 Mybatis 系列博客的第四篇,我本来打算详细讲解 mybatis 的配置.映射器.动态 sql 等,但Mybatis官方中文文档对这部分内容的介绍已经足够详细了,有需要的可以直接参考.所以,我将扩展一些其他特性或使用细节,掌握它们可以更优雅.高效地使用 mybatis. 这里补充一点,本文的所有测试例子都是基于本系列 Mybatis 第一篇文章的项目,其他相关博客如下: Mybatis源码详解系列(一)--持久层框架解决了什么及如何使用Mybatis Mybatis源码详解系列(…
简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository 层中解耦出来,除了这些基本功能外,它还提供了动态 sql.延迟加载.缓存等功能. 相比 Hibernate,Mybatis 更面向数据库,可以灵活地对 sql 语句进行优化. 针对 Mybatis 的分析,我拆分成使用.源码分析.生成器等部分,已更新5篇博客,都放在 Mybatis 这个系列里,内容…
什么是logback logback 用于日志记录,可以将日志输出到控制台.文件.数据库和邮件等,相比其它所有的日志系统,logback 更快并且更小,包含了许多独特并且有用的特性. logback 被分成三个不同的模块:logback-core,logback-classic,logback-access. logback-core 是其它两个模块的基础. logback-classic 模块可以看作是 log4j 的一个优化版本,它天然的支持 SLF4J. logback-access 提供…
简介 druid是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,druid还扩展了监控统计.防御SQL注入等功能. 本文将包含以下内容(因为篇幅较长,可根据需要选择阅读): druid的使用方法(入门案例.JDNI使用.监控统计.防御SQL注入) druid的配置参数详解 druid主要源码分析 使用例子-入门 需求 使用druid连接池获取连接对象,对用户数据进行简单的增删改查(sql…
简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 druid 一样,HikariCP 也支持监控功能. HikariCP 是目前最快的连接池,就连风靡一时的 BoneCP 也停止维护,主动让位给它,SpringBoot 也把它设置为默认连接池. 看过 HikariCP 源码的同学就会发现,相比其他连接池,它真的非常轻巧且简单,有许多值得我们学习的地方,尤其性能提…
eureka 是由 Netflix 团队开发的针对中间层服务的负载均衡器,在微服务项目中被广泛使用.相比 SLB.ALB 等负载均衡器,eureka 的服务注册是无状态的,扩展起来非常方便. 在这个系列中,我将深入研究 eureka,包括它的使用.源码等,总计分成五篇博客讲完,后面发现有趣的东西也会继续补充. Eureka详解系列(一)--先谈谈负载均衡器 Eureka详解系列(二)--如何使用Eureka(原生API,无Spring) Eureka详解系列(三)--探索Eureka强大的配置体…
简介 c3p0是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能.目前,hibernate自带的连接池就是c3p0. 本文将包含以下内容(因为篇幅较长,可根据需要选择阅读): c3p0的使用方法(入门案例.JDNI使用) c3p0的配置参数详解 c3p0主要源码分析 使用例子-入门 需求 使用C3P0连接池获取连接对象,对用户数据进行简单的增删改查(sql脚本项目中已提供). 工程环境 JDK:1…
坦白讲,我们公司其实没啥技术实力,之所以还能不断接到各种项目,全凭我们老板神通广大!要知道他每次的饭局上可都是些什么人物! 但是项目接下一大把,就凭咱哥儿几个的水平,想要独立自主.保质保量保期地一个个做出来,那也是有点难以置信.之前咱也跟老板反映过这个困难,建议他再召两个高手过来.不过领导虽然书读的不多,有一句古训倒是背得特别熟--"君子生非异也,善假于物也".所以咱们公司一直奉行拿来主义. 园子里的这个GGTalk,咱们前前后后用它移花接木做的IM项目也不下三四个了.初次入手的时候,…
Spring 是一个一站式的 Java 框架,致力于提高我们项目开发的效率.通过 Spring,我们可以避免编写大量额外代码,更专注于我们的核心逻辑.目前,Spring 已经成为最受欢迎的 Java 框架. Spring 的全家桶包含非常多的项目,而且还在不断增加,但我们可以发现,最核心的就是 spring-bean 和 spring-aop,其他大部分都是基于这两个项目而来.本系列 Spring 将重点分析这两个项目,其他项目的内容后续也会增加: Spring源码系列(一)--详细介绍bean…
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource3 本博客同步在https://cnodejs.org/topic/56e3dfde545c5c736d12383f 本博客同步在http://www.cnblogs.com/papertree/p/5225994.html 我们用惯了process.nextTick().require('xxx').module.exports,但是它们哪里来呢…
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource3 本博客同步在https://cnodejs.org/topic/56e3dfde545c5c736d12383f 本博客同步在http://www.cnblogs.com/papertree/p/5225994.html 我们用惯了process.nextTick().require('xxx').module.exports,但是它们哪里来呢…
一.重要的接口 org.mybatis.spring.mapper.MapperFactoryBean MapperScannerConfigurer会向spring中注册该bean,一个mapper接口注册一个 该类是生产MapperProxy对象 org.apache.ibatis.binding.MapperProxy mapper接口的代理类 org.mybatis.spring.SqlSessionInterceptor sqlSession的动态代理类 org.mybatis.spr…
1. RequestQueue类 我们使用 Volley 的时候创建一个 request 然后把它丢到 RequestQueue 中就可以了.那么来看 RequestQueue 的构造方法,含有四个参数的构造器是最终会调用的构造器. public RequestQueue(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery) { mCache = cache; mNetwork = network…
上节讲解了read_config函数,读取配置信息到server_config的相应成员变量里,但read_config函数只负责把配置信息重文件里读出来,具体怎么把信息填写到指定的地址内,是调用keywords数组里元素的handler成员指向的函数完成.这节就是讲解完成具体的写入操作中比较复杂的函数. 1) int read_opt(const char *line, void *arg) 在read_config从udhcpd.conf里读到 token = "opt" 或 &q…
上节介绍了存储管理配置信息的结构体struct server_config_t,该结构体贯穿整个server端程序的运行. 在dhcpd.c里的用该结构体定义个一个全局的变量: struct server_config_t server_config; 在server启动做的第一件事就是初始化这个全局变量server_config: 现在就进入read_config函数,一睹其真容! 学习这个函数,在以后遇到要读取配置信息可以参照read_config函数的写法. read_config函数的定…
这篇文章主要讲解CRF++实现预测的过程,预测的算法以及代码实现相对来说比较简单,所以这篇文章理解起来也会比上一篇条件随机场训练的内容要容易. 预测 上一篇条件随机场训练的源码详解中,有一个地方并没有介绍. 就是训练结束后,会把待优化权重alpha等变量保存到文件中,也就是输出到指定的模型文件.在执行预测的时候会从模型文件读出相关的变量,这个过程其实就是数据序列化与反序列化,该过程跟条件随机场算法关系不大,因此为了突出重点源码解析里就没有介绍这部分,有兴趣的朋友可以自己研究一下. CRF++预测…
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 在Spring中,事务有两种实现方式: 编程式事务管理: 编程式事务管理使用TransactionTemplate可实现更细粒度的事务控制. 申明式事务管理: 基于Spring AOP实现.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或…
数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接如下,可点击跳转: 链接:https://blog.csdn.net/pjh88/article/details/107166950 什么是数组与动态数组? 数组 数组是相同数据类型的元素按照一定的顺序排列的集合,若将有限个类型相同的变量的集合命名,那么这个名称称为数组名,组成数组的各个变量称为数组…
Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送,写这个系列真的很要命,你要去把他们的API文档大致的翻阅一遍,而且各种功能都实现一遍,解决各种bug各种坑,不得不说,极光推送真坑,大家使用还是要慎重,我们看一下极光推送的官网 https://www.jpush.cn/common/ 推送比较使用,很多软件有需要,所以在这个点拿出来多讲讲,我们本节…
目录 Activiti架构分析及源码详解 引言 一.Activiti设计解析-架构&领域模型 1.1 架构 1.2 领域模型 二.Activiti设计解析-PVM执行树 2.1 核心理念 2.2 ActivitiImpl与作用域 2.3 ExecutionEntity 三.代码解析-流程启动 3.1 流程说明 3.2 额外补充 四.代码解析-原子操作 4.1 说明 4.2 AbstractEventAtomicOperation 4.3 AtomicOperationActivityExecut…
Spark Streaming揭秘 Day25 StreamingContext和JobScheduler启动源码详解 今天主要理一下StreamingContext的启动过程,其中最为重要的就是JobScheduler的启动. StreamingContext启动 我们首先看下start方法的上半部分. 首先进行模式匹配,这是一个标准的条件判断,默认是INITIALIZED状态. 这里有三个关键部分: validate方法,会进行一些前置条件的判断.其中比较关键的是对DStreamGraph进…
Linux内核源码详解——命令篇之iostat 转自:http://www.cnblogs.com/york-hust/p/4846497.html 本文主要分析了Linux的iostat命令的源码,iostat的主要功能见博客:性能测试进阶指南——基础篇之磁盘IO iostat源码共563行,应该算是Linux系统命令代码比较少的了.源代码中主要涉及到如下几个Linux的内核文件: 1./proc/diskstats——该文件是内核2.6以上的系统中的,记录了从Linux系统启动之后,所有磁盘…
目录 初识源码流程 入口 1.grains.items 2.pillar.items 2/3: 是否可以用python脚本实现 总结pillar源码分析: @(python之路)[saltstack源码详解一] saltstack源码详解 ---- 初识源码流程 环境准备: # 安装 yum install salt-ssh pip3 install salt-ssh # 命令 salt-ssh # 配置 /etc/salt/roster # 功能 salt-ssh "*" cmd.r…
Shiro 登录认证源码详解 Apache Shiro 是一个强大且灵活的 Java 开源安全框架,拥有登录认证.授权管理.企业级会话管理和加密等功能,相比 Spring Security 来说要更加的简单. 本文主要介绍 Shiro 的登录认证(Authentication)功能,主要从 Shiro 设计的角度去看这个登录认证的过程. 一.Shiro 总览 首先,我们思考整个认证过程的业务逻辑: 获取用户输入的用户名,密码: 从服务器数据源中获取相应的用户名和密码: 判断密码是否匹配,决定是否…
中间有很长一段时间没有更新udhcp源码详解的博客,主要是源码里的函数太多,不知道要不要一个一个讲下去,要知道讲DHCP的实现理论的话一篇博文也就可以大致的讲完,但实现的源码却要关心很多的问题,比如说,理论上说从IP地址池取到一个空闲的IP,就这么一句,在源码的体现也是一大段.算啦,讲多少算多少吧,进入主题! struct dhcpMessage报文里uint8_t options[308]字段,在整个DHCP过程中是报文的一个很重要的字段,博文的系列(二)有讲解该字段的数据组织方式,CLV(C…
转载地址:https://blog.csdn.net/kyjl888/article/details/72942209 1 ORB-SLAM2源码详解 by 吴博 2 https://github.com/raulmur/ORB_SLAM2 ORB-SLAM2源码详解 by 吴博 发布时间:2016年11月13日 22:09:30    浏览数:5380次    来自:微信 该算法以单目为主,但同样适用于双目和RGB-D摄像头.ORB-SLAM算法和PTAM具有相同的算法框架,采用多线程构架,四…
vue 源码详解(一):原型对象和全局 API的设计 1. 从 new Vue() 开始 我们在实际的项目中使用 Vue 的时候 , 一般都是在 main.js 中通过 new Vue({el : '#app , ...options}) 生成根组件进行使用的, 相关的配置都通过 options 传入. Vue 的原型对象会帮我们初始化好很多属性和方法, 我们可以通过 this.property 直接调用即可: 而 Vue 这个类也通过类的静态方法初始化了一些全局的 api, 我们可以通过类名直…
概述 在上一节 RocketMQ源码详解 | Producer篇 · 其一:Start,然后 Send 一条消息 中,我们了解了 Producer 在发送消息的流程.这次我们再来具体下看消息的构成与其发送的链路 Message 在 RocketMQ 的使用中,Message 类是在发送消息时必须用到的,其中 body 即是消息的存放位置,还有的就是消息的 标识(flag) 和 属性(properties) public class Message { private String topic;…
概述 在上一节 RocketMQ源码详解 | Producer篇 · 其二:消息组成.发送链路 中,我们终于将消息发送出了 Producer,在短暂的 tcp 握手后,很快它就会进入目的 Broker.这次我们来自底向上的看下 Broker 端是如何接收然后分发处理消息,同时了解 RocketMQ 的 Broker 的线程模型. Netty 组件 如果你还记得上一节的内容的话那应该知道,NettyRomotingAbstract 有两个实现类,分别是 NettyRemotingClient 和…