源码

spring session源码解析

旧时模样 提交于 2019-12-04 05:32:14
模块划分 core部分代码 存储实现部分部分: jdbc实现 具体存储的实现类 例如:org.springframework.session.jdbc.JdbcOperationsSessionRepository 支持jdbc访问的都可以作为存储介质 JdbcOperationsSessionRepository通过sql来访问后端存储: private static final String CREATE_SESSION_QUERY = "INSERT INTO %TABLE_NAME%(PRIMARY_ID, SESSION_ID, CREATION_TIME, LAST_ACCESS_TIME, MAX_INACTIVE_INTERVAL, EXPIRY_TIME, PRINCIPAL_NAME) VALUES (?, ?, ?, ?, ?, ?, ?)"; private static final String CREATE_SESSION_ATTRIBUTE_QUERY = "INSERT INTO %TABLE_NAME%_ATTRIBUTES(SESSION_PRIMARY_ID, ATTRIBUTE_NAME, ATTRIBUTE_BYTES) SELECT PRIMARY_ID, ?, ? FROM %TABLE_NAME% WHERE SESSION_ID =

Activity、Window、View三者关系

空扰寡人 提交于 2019-12-04 05:22:21
目录介绍 01.Window,View,子Window 02.什么是Activity 03.什么是Window 04.什么是DecorView 05.什么是View 06.关系结构图 07.Window创建过程 08.创建机制分析 8.1 Activity实例的创建 8.2 Activity中Window的创建 8.3 DecorView的创建 弹窗系列博客 01.Activity、Window、View三者关系 深入分析Activity、Window、View三者之间的关系 02.Toast源码深度分析 最简单的创建,简单改造避免重复创建,show()方法源码分析,scheduleTimeoutLocked吐司如何自动销毁的,TN类中的消息机制是如何执行的,普通应用的Toast显示数量是有限制的,用代码解释为何Activity销毁后Toast仍会显示,Toast偶尔报错Unable to add window是如何产生的,Toast运行在子线程问题,Toast如何添加系统窗口的权限等等 03.DialogFragment源码分析 最简单的使用方法,onCreate( @Nullable Bundle savedInstanceState)源码分析,重点分析弹窗展示和销毁源码,使用中show()方法遇到的IllegalStateException分析 04.Dialog源码分析

死磕 java线程系列之终篇

ε祈祈猫儿з 提交于 2019-12-04 04:58:00
(手机横屏看源码更方便) 简介 线程系列我们基本就学完了,这一个系列我们基本都是围绕着线程池在讲,其实关于线程还有很多东西可以讲,后面有机会我们再补充进来。当然,如果你有什么好的想法,也可以公从号右下角联系我。 重要知识点 直接上图,看着这张图我相信你能够回忆起很多东西,也可以看着这张图来自己提问自己回答,当然,也可以把这张图作为面试复习的参考。 其中,ThreadLocal是我们没有分析的类,放在netty系列来学习,敬请期待^^ 彩蛋 下一个系列我们将学习netty相关的知识,当然跑不掉的还有nio。 我为什么直接讲netty了呢? 因为netty很重要,很多框架的底层都是用netty实现的,比如dubbo、spark、hadoop、storm、zookeeper、grpc、flink、thrift、elasticsearch、spring cloud gateway。 只要牵涉到网络通信的框架,基本上都会使用netty作为底层通信,所以,你说netty重不重要,那是相当的重要,so,我们先讲netty。 我为什么不讲spring系列呢? spring系列主要分为三大部分:spring core、spring boot、spring cloud。 spring core主要包含两大功能:spring IoC和spring mvc,这两个功能其实都是比较简单的东西

netty源码

馋奶兔 提交于 2019-12-04 04:37:58
服务端代码可以是这样的 //1.定义server启动类 ServerBootstrap serverBootstrap = new ServerBootstrap(); //2.定义工作组:boss分发请求给各个worker:boss负责监听端口请求,worker负责处理请求(读写) EventLoopGroup boss = new NioEventLoopGroup(); EventLoopGroup worker = new NioEventLoopGroup(); //3.定义工作组 serverBootstrap.group(boss,worker); //4.设置通道channel serverBootstrap.channel(NioServerSocketChannel.class);//A //serverBootstrap.channelFactory(new ReflectiveChannelFactory(NioServerSocketChannel.class));//旧版本的写法,但是此过程在A中有同样过程 //5.添加handler,管道中的处理器,通过ChannelInitializer来构造 serverBootstrap.childHandler(new ChannelInitializer<Channel>() { @Override

Android5.0以下 源码分析Notification的notify

99封情书 提交于 2019-12-04 04:28:57
分析下Notification的更新机制。 涉及Service: StatusBarManagerService NotificationManagerService 这个两个service都会在 frameworks/base/services/java/com/android/server/SystemServer.java文件里面进行启动的 class ServerThread extends Thread { public void run() { ...... StatusBarManagerService statusBar = null; NotificationManagerService notification = null; ...... statusBar = new StatusBarManagerService(context, wm); ServiceManager.addService(Context.STATUS_BAR_SERVICE, statusBar); ...... notification = new NotificationManagerService(context, statusBar, lights); ServiceManager.addService(Context.NOTIFICATION_SERVICE,

【mybatis源码学习】缓存机制

不想你离开。 提交于 2019-12-04 04:21:31
一、mybatis的缓存 一级缓存:sqlsession级别,默认开启(一个事务内有效) 二级缓存: sqlsessionFactory级别,需要手动开启,在xml配置cache节点(依赖事务的执行结果,对缓存进行刷新) 二、mybatis的缓存流程示意图 来源: https://www.cnblogs.com/shangxiaofei/p/11830932.html

源码解析之mybatis

删除回忆录丶 提交于 2019-12-04 04:17:09
mybatis执行query步骤如下: 根据具体传入的参数,动态地生成需要执行的SQL语句,用BoundSql对象表示 为当前的查询创建一个缓存Key 缓存中没有值,直接从数据库中读取数据 执行查询,返回List 结果,然后 将查询的结果放入缓存之中 根据既有的参数,创建StatementHandler对象来执行查询操作 将创建Statement传递给StatementHandler对象,调用parameterize()方法赋值 调用StatementHandler.query()方法,返回List结果集 参考 https://blog.csdn.net/luanlouis/article/details/40422941 https://blog.csdn.net/a412451848/article/details/82723754 来源: https://www.cnblogs.com/sunny-miss/p/11830595.html

【javascript】source map

纵然是瞬间 提交于 2019-12-04 04:16:13
最近在学webpack,遇到一个从未见过的名词source map。便跑去百度了一番,对其有了一些了解。好记性不如烂笔头,在此记录一下,方便以后查询。 一:source map长啥样? 之前下载Jquery的时候发现有一个文件,叫做Jquery.min.map文件。这就是一个source map 文件。打开后他是这样的: 二:source map有啥作用? source map是一个独立的文件,与源码在同一个目录下。它有一个很有用的功能,下面就来聊聊这个功能。 1、从源码转换说起 JavaScript脚本正变得越来越复杂。大部分源码(尤其是各种函数库和框架)都要经过转换,才能投入生产环境。 常见的源码转换,主要是以下二种情况: (1)压缩,减小体积。比如jQuery 1.9的源码,压缩前是252KB,压缩后是32KB。 (2)多个文件合并,减少HTTP请求数。 拿Jquery.js举例,它压缩后是长这个样子的: 系统正常运行的时候到不觉得有啥问题,但在出错需要debug的时候就会发现困难重重。 当js解析器告诉你错误在第几行第几列的时候,这些信息对你没有任何用处。还是拿Jquery举例。 jQuery 1.9压缩后只有3行,每行3万个字符,所有内部变量都改了名字。你看着报错信息,感到毫无头绪,根本不知道它所对应的原始位置。当然如果你是超级大牛,非要对着压缩后的js文件进行查错

System.out.println()相关源码

不问归期 提交于 2019-12-04 04:09:15
System.out.println是一个Java语句,一般情况下是将传递的参数,打印到控制台。 System :是 java.lang包中的一个 final类 。根据javadoc,“java.lang.System该类提供的设施包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 一种加载文件和库的方法; 以及用于快速复制数组等一部分的实用方法… ” out :是System类的 静态成员字段 ,类型为PrintStream。 public static final PrintStream out 他在启动时就会被实例化,并与主机的标准输出控制台进行映射。该流在实例化之后立即打开,并准备接受数据。 println :是PrintStream类的一个方法。println打印(参数内容+换行符) 到控制台。 PrintStream类中有多个重载的println方法。每个println是通过调用print方法并添加一个换行符实现的。print方法是通过调用write方法实现的。 System.out.println() 结构图如下: 部分代码段: public final class System { static PrintStream out; static PrintStream err; static InputStream in; ... } public

Apache源码编译安装脚本

时间秒杀一切 提交于 2019-12-04 04:06:49
  Apache是开源的的、最流行的Web服务器软件之一,它快速、可靠并且可通过简单的API扩充,将Perl/Python/PHP等解释器编译到服务器中。Apache的模块超多,以及具有运行稳定,强大的rewrite功能、动态处理能力强等优点,在追求稳定的业务环境下被广泛使用。   以下是Apache2.4版本prefork模式的源码编译脚本: #!/bin/bash # #******************************************************************** #Author: Eddie.Peng #QQ: 350468166 #URL: https://www.cnblogs.com/eddie1127/ #Date: 2019-10-18 #FileName: httpd_install.sh #Description: The script for install Apache httpd web server #******************************************************************** # Set color COLORBEG="\033[1;31m" COLOREND="\033[0m" # Check if user is root if [ $(id -u