找到约 10000 条结果
  • 聊聊dbsync的Schedulable
    Schedulable定义了URL、ID、*contract.Sync、Schedule、Status、status属性;NewSchedulableFromURL方法根据URL来创建Schedulable
    2021-04-22
  • 聊聊eventhorizon的EventBus
    序本文主要研究一下eventhorizon的EventBusEventBuseventhorizon/eventbus.go {代码...} EventBus接口内嵌了EventHandler接口,定义了AddHandler、Errors、Wait方法EventBuseventhorizon/eventbus/local/eventbus.go {代码...} EventBus定义了group、registered、registeredMu、errCh、wg、codec属性;HandleEvent方法先...
    2021-04-01
  • 聊聊gost的GoSafely
    GoSafely接收WaitGroup、ignoreRecover、handler、catchFunc参数,其大致的模板是,首先对WaitGroup进行add(1),然后一步执行带defer的handler
    2021-02-17
  • 聊聊gost的CountWatch
    CountWatch定义了start属性,它提供了Start、Reset、Count方法;其中Start方法判断start为初始值的时候设置为time.Now;Reset设置start为time.Now;Count计算当前时间距离start的纳秒数
    2021-02-22
  • 聊聊loki的Query
    序本文主要研究一下loki的QueryQueryloki/pkg/logql/engine.go {代码...} Query接口定义了Exec方法,返回Result;Result定义了Data、Statistics属性Execloki/pkg/logql/engine.go {代码...} Exec方法执行q.Eval(ctx)及stats.SnapshotEvalloki/pkg/logql/engine.go {代码...} Eval方法执行q.parse解析为Expr,之后根据Exp...
    2021-01-28
  • 聊聊React的Context
    如上面的组件树中,A组件与B组件之间隔着非常多的组件,假如A组件希望传递给B组件一个属性,那么不得不使用props将属性从A组件历经一系列中间组件传递给B组件。这样代码不仅非常的麻烦,更重要的是中间的组件可能压根就用不上这个属性,却要承担一个传递的职责,这是我们不希望看见的。Context出现的目的就是为了解决这...
    2020-12-31
  • 聊聊gorm的Transaction
    DB的Transaction方法针对非TxCommitter类型的db.Statement.ConnPool执行db.Begin,之后注册defer针对panicked或者err的执行tx.Rollback(),执行fc之后,判断err为nil的情况下执行tx.Commit(),并将Error赋值为err
    2021-01-12
  • 聊聊gorm的CreateInBatches
    CreateInBatches会根据batchSize来分配进行create,但是他们是在同一个事务的,其rowsAffected是每个批次的rowsAffected的累加
    2021-01-16
  • 聊聊klog的klogger
    logr类似java的slf4j,其Logger接口定义了Enabled、Info、Error、V、WithValues、WithName方法
    2020-12-30
  • 聊聊klog的Flush
    序本文主要研究一下klog的FlushFlushk8s.io/klog/v2@v2.4.0/klog.go {代码...} Flush方法执行的是logging.lockAndFlushAll()initk8s.io/klog/v2@v2.4.0/klog.go {代码...} klog的init方法异步协程执行logging.flushDaemon()logging.flushDaemon()k8s.io/klog/v2@v2.4.0/klog.go {代码...} flushDaemon方法range新建ticke...
    2020-12-28
  • 聊聊gorm的GroupBy
    gorm的GroupBy定义了Columns和Having属性,其Build方法遍历Columns,最后针对Having在拼接Having子句。
    2021-01-19
  • 聊聊zerolog的Formatter
    序本文主要研究一下zerolog的FormatterFormattergithub.com/rs/zerolog@v1.20.0/console.go {代码...} Formatter接口定义了一个func用于将interface{}转换为stringConsoleWritergithub.com/rs/zerolog@v1.20.0/console.go {代码...} ConsoleWriter定义了TimeFormat、FormatTimestamp、FormatLevel、FormatCaller、Format...
    2021-01-06
  • 聊聊gorm的DeletedAt
    DeletedAt为sql.NullTime类型,它实现了Scanner接口的Scan方法,实现了Valuer接口的Value方法;同时定义了MarshalJSON、UnmarshalJSON方法,还定义了QueryClauses方法,使用的是SoftDeleteQueryClause;DeleteClauses方法使用的是SoftDeleteDeleteClause
    2021-01-09
  • 聊聊gorm的IsolationLevel
    golang定义了IsolationLevel,分别为LevelDefault、LevelReadUncommitted、LevelReadCommitted、LevelWriteCommitted、LevelRepeatableRead、LevelSnapshot、LevelSerializable、LevelLinearizable
    2021-01-11
  • 聊聊mybatis的ParamNameResolver
    在mybatis的interceptor获取MapperMethod.ParamMap这种参数类型时,经常会多出param1,param2,collection,list,array这些参数,这些不是接口自己定义的,而是ParamNameResolver自动添加的
    2023-08-28
  • 聊聊nacos的DistroMapper
    nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/cluster/servers/ServerChangeListener.java
    2019-09-09
    1
  • 聊聊springboot的Customizer
    序本文主要研究一下springboot的CustomizerTaskExecutorCustomizer {代码...} 之后再构造的时候通过ObjectProvider获取即可 {代码...} TaskSchedulerCustomizer {代码...} RestTemplateCustomizer {代码...} 小结springboot提供了很多Customizer接口方便用户自行扩展,非常值得设计组件的时候使用
    2023-08-22