Golang实现依赖注入+gin

Go实现依赖注入 最近在使用go开发的时候,发现构建系统依赖树非常繁琐,需要手动去new很多对象,又手工代码将它们拼接起来,写了一堆非常冗繁的代码。之前在laravel的使用中有其强大的ioc,都没有这方面的困扰。就在想golang中有没有好用的依赖注入方案,查询资料,发现了facebook团队开源的inject。GitHub地址:http://github.com/facebookgo/inject 没有依赖注入的系统: 在代码上的表现: func NewUserRepository() UserRepositoryImp { return &UserManagerRepository{ Db: models.

Golang实现RabbitMQ五种模式

使用的依赖包 github.com/streadway/amqp 创建RabbitMQ实例 package RabbitMQ import ( "fmt" "github.com/streadway/amqp" "log" ) // 用户名 密码 ip:端口/虚拟机 const MQURL = "amqp://admin:123456@127.

Golang-Redis简易封装

Golang Redis 下载依赖包 go get github.com/gomodule/redigo Redis 操作封装 配置文件 [redis] Host = 127.

Golang邮件发送

golang发送邮件 安装库 go get github.com/jordan-wright/email 简单代码实现 package main import ( "log" "net/smtp" "github.

Jenkins插件安装提速

操作步骤 配置Json其实在Jenkins的工作目录中 cd {你的Jenkins工作目录}/updates #进入更新配置位置 第一种方式:使用vim vim default.json 使用vim的命令,如下,替换所有插件下载的url

Golang实现雪花算法

雪花算法 雪花算法 雪花算法的原始版本是scala版,用于生成分布式ID(纯数字,时间顺序),订单编号等 自增ID:对于数据敏感场景不宜使用,且不适合于分布式场景。 GUID:采用无意义字符串,数据量增大时造成访问过慢,且不宜排序。 算法描述 最高位是符号位,始终为0,不可用。 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。时间位还有一个很重要的作用是可以根据时间进行排序。 10位的机器标识,10位的长度最多支持部署1024个节点。 12位的计数序列号,序列号即一系列的自增id,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持每个节点每毫秒产生4096个ID序号。 Golang 实现 package main import ( "errors" "fmt" "sync" "time" ) const ( workerBits uint8 = 10 numberBits uint8 = 12 workerMax int64 = -1 ^ (-1 << workerBits) numberMax int64 = -1 ^ (-1 << numberBits) timeShift uint8 = workerBits + numberBits workerShift uint8 = numberBits startTime int64 = 1525705533000 // 如果在程序跑了一段时间修改了epoch这个值 可能会导致生成相同的ID ) type Worker struct { mu sync.

Golang-HTTP-Server

GO HTTP Server 使用标准库构建 HTTP 服务 Go 语言标准库自带一个完善的 net/http 包,可以很方便编写一个可以直接运行的 Web 服务。

laravel实现定时任务

laravel实现定时任务 原理是通过Cron Cron简介 Cron 是 UNIX、SOLARIS、LINUX 下的一个十分有用的工具,通过 Cron 脚本能使计划任务定期地在系统后台自动运行。这种计划任务在 UNIX、SOLARIS、LINUX下术语为 Cron Jobs。Crontab 则是用来记录在特定时间运行的 Cron 的一个脚本文件,Crontab 文件的每一行均遵守特定的格式:

laravel-admin修改form默认的js引用

解决laravel-admin中form表单下拉框不是中文问题 最近在使用laravel-admin开发得时候。在做表单提交的时候发现默认的提醒为英文的这里我就想能不能设置为中文: 然后我就在线怎么操作能够改为中文,我这里通过了通过在开发工具中搜索,我发现这里的渲染为js进行的: 这里我发现在对应得文件夹中也有中文版本得js只是没有使用上: 所以这里我就在想怎么修改默认的js路径,于是我开始使用开发工具继续搜索这个js名 结果在这个文件中发现了js的设置,现在就要想怎么修改他了,直接修改他的源代码肯定是不行的,所以这里我想的就是继承这个类在进行重写变量赋值。 现在的问题就是怎么让我们的类生效了,查看了官方文档发现只需要在bootstrap中注册就行了 现在再查看下页面就变成中文了 这里其实就是一个小问题,但是主要是再发现问题得时候,怎么一步一步得找到问题,进行解决。记录一下这个思路 参考连接:https://laravel-admin.org/docs/zh

laravel通过观察者监听模型事件

所有支持的模型事件 在 Eloquent 模型类上进行查询、插入、更新、删除操作时,会触发相应的模型事件(关于事件我们后面会单独讲),不管你有没有监听它们。这些事件包括: 方法名 说明 retrieved 获取到模型实例后触发 creating 插入到数据库前触发 created 插入到数据库后触发 updating 更新到数据库前触发 updated 更新到数据库后触发 saving 保存到数据库前触发(插入/更新之前,无论插入还是更新都会触发) saved 保存到数据库后触发(插入/更新之后,无论插入还是更新都会触发) deleting 从数据库删除记录前触发 deleted 从数据库删除记录后触发 restoring 恢复软删除记录前触发 restored 恢复软删除记录后触发 通过观察者监听模型事件 针对模型事件这种特殊的事件类型,Laravel 还为我们提供了观察者类来处理模型事件的监听。观察者可以看作是上述订阅者处理模型事件的简化版本,我们不需要自定义事件类,不需要建立映射关系,只需要在观察者类中将需要监听的事件定义为同名方法,并在相应方法中编写业务处理代码即可。当某个模型事件触发时,Eloquent 底层会去该模型上注册的观察者类中通过反射查找是否定义了对应的方法,如果定义了则执行相应的逻辑,否则忽略。