SF
code-craft
code-craft
注册登录
关注博客
注册登录
主页
关于
RSS
聊聊golang的Pseudo-versions
codecraft
2022-05-16
阅读 2 分钟
2.3k
Pseudo-versions,中文大概是伪版本的意思,就是没有打语义版本tag(semantic version tags)的会使用伪版本
go微服务开发工具箱
codecraft
2022-02-20
阅读 1 分钟
2.4k
使用golang开发了一阵子业务代码,本文主要梳理一下自己的使用感受,并总结一下常用的类库,方便查阅。由于本人是java重度使用者,不免加以对比吐槽一下,请见谅。
聊聊tunny的workerWrapper
codecraft
2021-04-28
阅读 2 分钟
1.6k
workerWrapper包装了worker,定义了interruptChan、reqChan、closeChan、closedChan属性
聊聊golang的tunny
codecraft
2021-04-27
阅读 4 分钟
1.7k
closureWorker定义了processor属性,它实现了Worker接口的Process、BlockUntilReady、Interrupt、Terminate方法,其中Process方法委托给processor
聊聊xxl-job-executor-go的Task
codecraft
2021-04-26
阅读 1 分钟
2.4k
Run方法注册了defer在panic的时候执行callback和cancel,然后执行t.fn(t.Ext, t.Param)以及callback(200, msg)
聊聊xxl-job-executor-go
codecraft
2021-04-25
阅读 5 分钟
2k
序本文主要研究一下xxl-job-executor-goExecutor {代码...} Executor定义了Init、LogHandler、RegTask、RunTask、KillTask、TaskLog、Run方法executor {代码...} executor定义了opts、address、regList、runList、mu、log、logHandler属性Init {代码...} Init方法遍历opts应用opt,然后初始化regList、runList、address...
聊聊dbsync的jobs
codecraft
2021-04-23
阅读 4 分钟
1.6k
Job方法定义了ID、Error、Status、Progress、Items、Chunked、mutex、StartTime、EndTime
聊聊dbsync的Schedulable
codecraft
2021-04-22
阅读 3 分钟
1.5k
Schedulable定义了URL、ID、*contract.Sync、Schedule、Status、status属性;NewSchedulableFromURL方法根据URL来创建Schedulable
聊聊dbsync的Criterion
codecraft
2021-04-21
阅读 3 分钟
1.4k
序本文主要研究一下dbsync的CriterionCriterion {代码...} Criterion是一个fmt.Stringer类型between {代码...} between定义from、to两个属性lessOrEqual {代码...} lessOrEqual定义了value属性,表达式为<=greaterThan {代码...} greaterThan定义了value属性,表达式为>greaterOrEqual {代码...} greaterOrEqual定...
聊聊dddsample-core的model
codecraft
2021-04-12
阅读 3 分钟
1.7k
序本文主要研究一下dddsample-core的modelEntity {代码...} Entity接口定义了sameIdentityAs方法ValueObject {代码...} ValueObject接口定义了sameValueAs方法TrackingId {代码...} TrackingId实现了ValueObject接口,sameValueAs方法通过equals方法判断Type {代码...} Type枚举实现了ValueObject接口,其sameValueAs方...
聊聊go.cqrs的EventHandler
codecraft
2021-04-10
阅读 3 分钟
1.8k
EventMessage接口定义了AggregateID、GetHeaders、SetHeader、Event、EventType、Version方法
聊聊go.cqrs的Dispatcher
codecraft
2021-04-09
阅读 3 分钟
1.7k
InMemoryDispatcher定义了map[string]CommandHandler属性,其Dispatch方法根据command.CommandType()获取handler,然后执行handler.Handle(command);其RegisterHandler方法遍历commands,然后获取command的type,挨个注册到map[string]CommandHandler中
聊聊go.cqrs的DomainRepository
codecraft
2021-04-08
阅读 5 分钟
1.7k
GetEventStoreCommonDomainRepo定义了eventStore、eventBus、streamNameDelegate、aggregateFactory、eventFactory属性,其Load方法先通过r.aggregateFactory.GetAggregate获取aggregate,再通过r.streamNameDelegate.GetStreamName(aggregateType, id)获取streamName,然后通过r.eventStore.NewStreamReader去遍历event...
聊聊go.cqrs的AggregateRoot
codecraft
2021-04-07
阅读 5 分钟
1.6k
AggregateRoot接口定义了AggregateID、OriginalVersion、CurrentVersion、IncrementVersion、Apply、TrackChange、GetChanges、ClearChanges方法
聊聊dkron的Scheduler
codecraft
2021-04-06
阅读 4 分钟
2.1k
Scheduler定义了Cron、Started、EntryJobMap属性;NewScheduler方法创建默认的Scheduler;Start方法遍历jobs,挨个设置job.Agent,然后添加到Scheduler中,之后执行Scheduler.Cron.Start();Stop方法执行Scheduler.Cron.Stop();Restart方法执行Stop、ClearCron、Start方法;ClearCron设置Cron为nil
聊聊dkron的fsm
codecraft
2021-04-05
阅读 4 分钟
1.6k
MessageType可以分为SetJobType、DeleteJobType、SetExecutionType、DeleteExecutionsType、ExecutionDoneType
聊聊machinery的TaskProcessor
codecraft
2021-04-04
阅读 4 分钟
2.7k
Worker实现了TaskProcessor接口,其Process方法先通过worker.server.GetRegisteredTask获取taskFunc,然后通过signature更新state为RECEIVED,之后设置为STARTED,之后执行task.Call(),最后根据结果更新task为failed或者success
聊聊machinery的Lock
codecraft
2021-04-03
阅读 3 分钟
1.5k
Lock定义了rclient、retries、interval属性;New方法根据cnf、addrs、db、retries创建lock;LockWithRetries方法根据retries次数来尝试r.Lock(key, unixTsToExpireNs),都没有成功则返回ErrRedisLockFailed;Lock方法执行r.rclient.SetNX,如果不成功则判断是否过期,过期的话执行执行r.rclient.GetSet,若确实过期了则...
聊聊machinery的TaskState
codecraft
2021-04-02
阅读 7 分钟
1.7k
TaskState定义了PENDING、RECEIVED、STARTED、RETRY、SUCCESS、FAILURE状态;TaskState定义了TaskUUID、TaskName、State、Results、Error、CreatedAt、TTL属性;它提供了NewPendingTaskState、NewReceivedTaskState、NewStartedTaskState、NewSuccessTaskState、NewFailureTaskState、NewRetryTaskState方法来根据Signat...
聊聊eventhorizon的EventBus
codecraft
2021-04-01
阅读 4 分钟
1.8k
序本文主要研究一下eventhorizon的EventBusEventBuseventhorizon/eventbus.go {代码...} EventBus接口内嵌了EventHandler接口,定义了AddHandler、Errors、Wait方法EventBuseventhorizon/eventbus/local/eventbus.go {代码...} EventBus定义了group、registered、registeredMu、errCh、wg、codec属性;HandleEvent方法先...
聊聊go-ddd-sample
codecraft
2021-03-22
阅读 2 分钟
3.8k
序本文主要赏析一下go-ddd-sample项目结构 {代码...} 这里分为application、domain、infrastructure、interfaces四层domain {代码...} domain层定义了模型及repository接口,同时利用go generate生成repository的mock实现application {代码...} applicatioin层调用domain层来进行业务编排infrastructure {代码...} infra...
聊聊golang的clean architecture项目结构
codecraft
2021-03-13
阅读 2 分钟
3k
clean architecture定义了四层结构,最内层是entities(enterprise business rules),再往外是use cases(application business rules),接着是interface adapters(比如controller、presenters、gateways),最外层是frameworks & drivers(比如web、ui、db、devices、external interfaces)
聊聊golang的DDD项目结构
codecraft
2021-03-11
阅读 2 分钟
6.9k
比如interfaces层定义了输入层的相关方法,以使用gin提供http接口为例,这里的handler等为使用gin提供的一些http接口,这一层调用application层
聊聊dapr的Pipeline
codecraft
2021-03-10
阅读 2 分钟
2k
Pipeline定义了Handlers属性,是一个Middleware数组;Pipeline定义了Apply方法,它会从后往前挨个执行Middleware函数;Middleware函数接收fasthttp.RequestHandler,返回fasthttp.RequestHandler
聊聊dapr的consistent hash
codecraft
2021-03-09
阅读 4 分钟
1.9k
ConsistentHashTables定义了Version、Entries属性,Entries是个map,value为Consistent;Consistent定义了hosts、sortedSet、loadMap、totalLoad、sync.RWMutex属性
聊聊dapr的fswatcher
codecraft
2021-03-08
阅读 6 分钟
1.4k
Watch方法使用fsnotify的watcher来监听文件,之后通过for循环进行select,如果监听到fsnotify.Create或者fsnotify.Write的时候判断event.Name是否包含dir,如果包含则sleep一秒然后通知eventCh
聊聊dapr的metrics_utils
codecraft
2021-03-07
阅读 4 分钟
1.4k
序本文主要研究一下dapr的metrics_utilsNewMeasureViewdapr/pkg/diagnostics/utils/metrics_utils.go {代码...} NewMeasureView根据measure、tag、aggregation来创建viewWithTagsdapr/pkg/diagnostics/utils/metrics_utils.go {代码...} WithTags方法支持变长的tag.Key类型,支持将tag.Key转换为tag.MutatorAddTagKeyToC...
聊聊dapr的Limiter
codecraft
2021-03-06
阅读 2 分钟
1.3k
序本文主要研究一下dapr的LimiterLimiterdapr/pkg/concurrency/limiter.go {代码...} Limiter定义了limit、tickets、numInProgress属性NewLimiterdapr/pkg/concurrency/limiter.go {代码...} NewLimiter方法根据limit来创建Limiter,并挨个分配ticketExecutedapr/pkg/concurrency/limiter.go {代码...} Execute方法首先...
聊聊storagetapper的cache
codecraft
2021-03-04
阅读 2 分钟
1.5k
序本文主要研究一下storagetapper的cachecachestoragetapper/pipe/cache.go {代码...} cache是一个cacheEntry的map,cacheEntry定义了Pipe和config.PipeConfigCacheGetstoragetapper/pipe/cache.go {代码...} CacheGet方法加锁操作cache,首先通过sha256来对pipeType及db来作为cache的key,然后取出cacheEntry,若存在则...
聊聊storagetapper的pool
codecraft
2021-03-03
阅读 4 分钟
1.4k
序本文主要研究一下storagetapper的poolThreadstoragetapper/pool/pool.go {代码...} Thread接口定义了Start、Adjust、Terminate、NumProcs方法poolstoragetapper/pool/pool.go {代码...} poolImpl定义了mutex、numProcs、maxNumProcs、fn属性;它实现了Thread接口,其Start方法设置了fn,同时执行Adjust方法;Adjust方...
1
(current)
2
3
4
5
下一页
1
(current)
下一页