首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏落叶飞翔的蜗牛

    DataSourceAutoConfiguration 解析(2)

    DataSourceAutoConfiguration 解析(1) 初始化 DataSourceProperties 配置文件 2.1 初始化 DataSourceProperties 配置文件 如果设置的不是内置数据库的话 如果设置的是内置数据库的话:1)必须配置的有:引入内置数据库依赖,如:H2 2)其它所有的都可以不配置(有默认的配置),如果随意配置,可能产生冲突 @ConfigurationProperties(prefix private Charset sqlScriptEncoding; //默认的内置数据库连接信息: //1 NONE(null, null, null) //2 H2(EmbeddedDatabaseType.H2 , "org.h2.Driver","jdbc:h2:mem:%s;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE") //3 DERBY(...) / PooledDataSourceCondition.class) @ConditionalOnMissingBean({ DataSource.class, XADataSource.class }) //如果满足上面条件,就解析一下几个配置类

    1K40发布于 2021-06-23
  • 来自专栏爪哇缪斯

    源码解析:ThreadLocal(2

    那么,如果越界了怎么办呢?它们会采用循环查找法。即:获取队尾的下一个下标就会返回队首的下标;获取队首的上一个下标就会返回队尾的下标。如下所示:

    23710编辑于 2023-05-09
  • 来自专栏爪哇缪斯

    源码解析:ThreadPoolExecutor(2

    通过上面的例子,我们针对源码的解析就要针对红框的这两点进行深入探索,一个是ThreadPoolExecutor的构造函数,另一个就是execute方法。 二、源码解析——构造函数 2.1> 线程池的构造函数及类的继承关系 首先,我们先要了解一下ThreadPoolExecutor线程池类的继承关系,好对它有一个宏观的认知,如下图所示: 那么针对它的构造函数 ---- 后面的内容,参见:源码解析:ThreadPoolExecutor(3)

    18410编辑于 2023-05-09
  • 来自专栏落叶飞翔的蜗牛

    ArrayList源码解析2

    /** *以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。 *返回的数组将是“安全的”,因为该列表不保留对它的引用。 (换句话说,这个方法必须分配一个新的数组)。 *因此,调用者可以自由地修改返回的数组。 此方法充当基于阵列和基于集合的API之间的桥梁。 */ public Object[] toArray() { return Arrays.copyOf(elementData, size); } /** * 以正确的顺序返回一个包含此列表中所有元素的数组(从

    38920发布于 2021-01-28
  • 来自专栏Android 进阶

    RxJava2 解析

    void onComplete() {             Log.d(TAG, "onComplete() called");         }     }); } 源码解析 Null values are generally not allowed in 2.x operators and sources. Null values are generally not allowed in 2.x operators and sources. Null values are generally not allowed in 2.x operators and sources. 发射器释放了,就清空队列 2. 出现错误一样操作,然后退出 3.

    1.5K10发布于 2019-12-26
  • 来自专栏三木的博客

    QEMU 2: 参数解析

    2, 从QEMU官方网站上下载一个精简的镜像——linux-0.2.img。linux-0.2.img只有8MB大小,启动后包含一些常用的shell命令,用于QEMU的测试。 $wget http://wiki.qemu.org/download/linux-0.2.img.bz2 $bzip2 -d . 之后在vl.c中main函数的一个for循环根据这个集合开始解析命令行。 它会调用qemu_opts_parse来解析子选项,如realtime选项的解析: 3852 case QEMU_OPTION_realtime: 3853 一起传递给qemu_opts_parse去解析

    3K100发布于 2018-02-07
  • 来自专栏Ryan Miao

    Dagger2 入门解析

    Guice比较成熟,Dagger2主要用于Android。虽然都是google维护的,但Dagger2远比guice更新的频率高。 再一个是,Dagger2不同于guice的运行时注入,编译时生成代码的做法很好。提前发现问题,更高的效率。 还是那句话,百度到的dagger2资料看着一大堆,大都表层,而且和Android集成很深。 dagger2生成的类放在build/generated/source/apt/main Coding Time 接下来的内容就和官方的demo一样了。 以下来自详解Dagger2 @Inject: 通常在需要依赖的地方使用这个注解。换句话说,你用它告诉Dagger这个类或者字段需要依赖注入。 @Scope: Scopes可是非常的有用,Dagger2可以通过自定义注解限定注解作用域。

    1.8K120发布于 2018-03-14
  • 来自专栏linjinhe的专栏

    LevelDB 完全解析2):Log

    前文回顾 LevelDB 完全解析(0):基本原理和整体架构 LevelDB 完全解析(1):MemTable 这里的 log 是指 Write Ahead Log。 reserved for preallocated files kZeroType = 0, kFullType = 1, // For fragments kFirstType = 2,

    1.2K30发布于 2020-05-08
  • 来自专栏网络安全攻防

    UniswapV2协议解析

    V2版本提供了这两种价格。 /interfaces/IUniswapV2Callee.sol'; contract UniswapV2Pair is IUniswapV2Pair, UniswapV2ERC20 { using 继承自IUniswapV2Pair, UniswapV2ERC20,其中IUniswapV2Pair中定义了必须要实现的接口: pragma solidity >=0.5.0; interface IUniswapV2Pair UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to; IUniswapV2Pair(UniswapV2Library.pairFor UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to; IUniswapV2Pair(UniswapV2Library.pairFor

    4K43发布于 2021-07-21
  • 来自专栏玩转大前端

    Vue2 源码解析

    JS 文件打包的时候(通过 webpack 的 vue-loader 或者类似的工具),将.vue 文件解析成为 js 文件。 而解析的过程从原理上讲则简单明了: <template> 部分被模板解析、生成 AST,最后生成 render() 方法,成为组件对象的一部分 <script> 几乎不做处理,直接被导出使用 <style 这里重点关注第 2 个点的实现。 在 Vue 中,双向绑定是通过 v-model 指令来实现的,但是这个指令在 1.0 和 2.0 中的实现原理差别比较大。 2、nextTick 实现解析 一些基本的常识: 当前正在执行的代码会顺序执行下去,这是最高优先级 异步方法的回调都会放在事件队列中,在当前执行的代码执行结束后被调用 事件队列分为两种,一种是 macrotask 入口 bin/vue.js 作为命令行的入口文件,主要功能是处理命令的输入和解析。为了更方便地处理命令行输入的命令和参数解析,引用了 commander 模块。

    1.5K42编辑于 2022-08-15
  • 来自专栏深入理解Android

    带你解析Dagger2

    Dagger2简介: Dagger2是Dagger1的分支,由谷歌公司接手开发,目前的版本是2.0。Dagger2是受到AutoValue项目的启发。 dagger2这样的依赖注入框架对MVP架构来说,是最好的解耦工具,可以进一步降低modle-view-presenter之间的耦合度。 2. 使用 Dagger2 创建依赖对象,我们就不用手动初始化了。 Dagger2注解解释: 接下来介绍Dagger2中的每一个概念: @Inject: 通常在需要依赖的地方使用这个注解。换句话说,你用它告诉Dagger这个类或者字段需要依赖注入。 @Scope: Scopes可是非常的有用,Dagger2可以通过自定义注解限定注解作用域。

    1.2K40编辑于 2022-06-22
  • 来自专栏大大刺猬

    mysql undo文件解析(2)

    功能来获取对应数据行的回滚段信息然后我们根据这个rollptr去解析实际的undo文件然后我们再完整的解析undo文件, 并过滤指定的页这里解析得到是做了update, 并且是TRX_UNDO_ACTIVE 的.table_id是19151 我们去数据库里面验证下查询出来确实是我们更新的那张表.再来看看数据.解析出来为: (我们不知道元数据信息, 所以实际上是无法解析出来具体数据的. 没啥dio用)\x80\x00\x00\x02 innodb解析多了, 直接就能看出来是2\x02bb bb\x02bb bb\x02bb bbx05newdd newdd我们再开一个会话去验证下数据 后续也不在对undo进行解析了. 如果存在长时间不提交的事务, 可能会导致undo文件异常大.(之前遇到过1个, 几百GB了). end_offset-2])sys.exit(0)# 完整的解析这个undo文件f = open(filename,'rb')# FIL_PAGE_TYPE_FSP_HDR 好像没必要解析# FIL_PAGE_IBUF_BITMAP

    54721编辑于 2024-08-08
  • 来自专栏深入理解Android

    开源框架源码解析系列(2)——LeakCanary源码解析

    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-alpha-2' } 然后在application执行如下代码: LeakCanary.install(this); 然后出现内存泄露时候就会出现通知弹窗 2.源码分析 2.1 LeakCanary#install public static @NonNull RefWatcher return RETRY; } if (gone(reference)) { return DONE; } //关键点2 gcTrigger.runGc Throwable e) { return failure(e, since(analysisStartNanoTime)); } } 1.创建HprofParser,这个时另一个库里的,用来解析 .hprof文件的类 2.HprofParser.parse方法生成.hprof文件的内存Snapshot 3.调用deduplicateGcRoots(snapshot)方法删除重复的GcRoot

    2.2K10编辑于 2022-06-22
  • 来自专栏Android 研究

    Retrofit解析8之核心解析——ServiceMethod及注解2

    由于简述篇幅的限制,接上一篇文章继续 3.2.8、 Builder的方法parseParameter解析 看名字这个方法我们理解为解析参数的方法 private ParameterHandler (二) 类代码解析 由于这个类的代码比价长,我就不全部粘贴,等用到时候再一一粘贴 1、变量解析 那我们来看下他对应的变量,内容不多也比较简单,比较复杂的,我直接在上注释了。 2、构造函数解析 Retrofit(okhttp3.Call.Factory callFactory, HttpUrl baseUrl, List<Converter.Factory> 请求方式有@link retrofit2.http.GET 代表GET请求,@link retrofit2.http.PUT 代表PUT请求,@retrofit2.http.POST,代表POST 请求,@retrofit2.http.PATCH 代表PATCH请求,@retrofit2.http.HEAD 代表HEAD请求, @retrofit2.http.DELETE

    1.5K20发布于 2018-08-30
  • 来自专栏信数据得永生

    ChatGLM2 源码解析:`ChatGLMModel`

    config.kv_channels ) # 位置嵌入(PE) self.rotary_pos_emb = RotaryEmbedding(rotary_dim // 2, self.prefix_tokens.unsqueeze(0).expand(batch_size, -1).to(device) # [BS, PSL, KVS=NL * HS * 2GC self.pre_seq_len, self.num_layers * 2, self.multi_query_group_num, , GC, HS] => [2NL, PSL, BS, GC, HS] => NL * [2, PSL, BS, GC, HS] past_key_values = past_key_values.permute ([2, 1, 0, 3, 4]).split(2) return past_key_values def forward( self,

    67530编辑于 2023-10-13
  • 来自专栏信数据得永生

    ChatGLM2 源码解析:`GLMTransformer`

    all_hidden_states = () if output_hidden_states else None # 输入 -> TFBlock1 -> TFBlock2

    52020编辑于 2023-10-13
  • 来自专栏快乐阿超

    ip解析ip2region

    ——陆陇其 https://github.com/lionsoul2014/ip2region 今天分享一个ip解析库ip2region 这里相关的java实现: https://github.com/ lionsoul2014/ip2region/tree/master/binding/java maven依赖: <dependency> <groupId>org.lionsoul</groupId > <artifactId>ip2region</artifactId> <version>2.7.0</version> </dependency> 然后是完全基于文件的查询 import org.lionsoul.ip2region.xdb.Searcher; import java.io.*; import java.util.concurrent.TimeUnit; public } } 缓存整个xdb 我们也可以预先加载整个 ip2region.xdb 的数据到内存,然后基于这个数据创建查询对象来实现完全基于文件的查询,类似之前的 memory search。

    59510编辑于 2024-01-12
  • 来自专栏信数据得永生

    ChatGLM2 源码解析:`ChatGLMTokenizer`

    prefix_tokens ''' 根据当前提问和历史问答构建复合提问 In [1]: tokenizer.build_prompt('Q3', [('Q1', 'A1'),('Q2' , 'A2')]) Out[1]: '[Round 1]\n\n问:Q1\n\n答:A1\n\n[Round 2]\n\n问:Q2\n\n答:A2\n\n[Round 3]\n\n问:Q3\n\

    1K30编辑于 2023-11-09
  • 来自专栏Android 研究

    Retrofit解析2之使用简介

    四、为什么要用Retrofit 1、咱们一起来看下Retrofit的优点: 请求的方法参数注解可以定制 支持同步、异步和RxJava 超级解耦(我最爱) 可以配置不同的反序列化工具来解析数据,如json value2 附带在url? 但是,数据发送出去后,还要服务器解析成功才有意义。一般服务器都内置了自动解析常见数据格式的功能。 服务端通常是根据请求头(headers)中的Content-Type字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析2、提交的数据按照key-value的格式,也就是key1=value1,key2=value2这种方式进行编码,key和val都进行URL转码。大部分服务器都对这种方式支持。

    5.8K30发布于 2018-08-30
  • 来自专栏博客园

    Core官方DI解析(2)-ServiceProvider

    ServiceProvider是我们用来获取服务实例对象的类型,它也是一个特别简单的类型,因为这个类型本身并没有做什么,其实以一种代理模式,其核心功能全部都在IServiceProviderEngine实现类中

    81640发布于 2018-11-27
领券