设计模式 设计模式的目的 代码重用性 可读性 可拓展性(可维护性) 可靠性 提高程序对外体现高内聚 低耦合 设计模式的原则 单一职责原则 降低类的复杂度一个类只负责一项职责 提高类的可读性,可维护性。 降低变更引起的风险 通常情况下,遵守单一职责原则,除非逻辑足够简单,可在代码级反单一职责原则,一个 ...
分类:
其他好文 时间:
2020-07-11 19:17:07
阅读次数:
62
AOP 核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一 组 API 提供横切功能。比如,一个日志模块可以被称作日志的 AOP 切面。根据需 求的不同,一个应用程序可以有若干切面。在 Spring AOP 中,切面通过带有 @Aspect 注解的类实现。 ...
分类:
Web程序 时间:
2020-07-11 19:01:24
阅读次数:
55
protobuf 是一种数据交换格式,类似json。 grpc 是一种服务调用协议。 golang 需要下载安装 protoc 二进制文件支持编译 下载地址 编译protobuf协议需要安装github.com/golang/protobuf包进行编译支持 支持grpc需要安装go install ...
分类:
其他好文 时间:
2020-07-11 17:42:09
阅读次数:
51
当程序出现异常时,会抛出一个panic来终止程序,如果不想让程序终止,可以通过defer recover() 来处理,见下图(这样处理就不会使程序崩溃): ...
分类:
其他好文 时间:
2020-07-11 13:14:10
阅读次数:
59
go-snowflake 在单机系统中我们会使用自增id作为数据的唯一id,自增id在数据库中有利于排序和索引,但是在分布式系统中如果还是利用数据库的自增id会引起冲突,自增id非常容易被爬虫爬取数据。在分布式系统中有使用uuid作为数据唯一id的,但是uuid是一串随机字符串,所以它无法被排序。 ...
分类:
其他好文 时间:
2020-07-11 11:17:30
阅读次数:
138
package main import ( "crypto/md5" "fmt" "io" ) func main() { // 第一种 var str = "golang" slice := []byte(str) res := md5.Sum(slice) fmt.Println(res) // ...
分类:
其他好文 时间:
2020-07-11 09:58:03
阅读次数:
83
在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。 为了方便理解,后面有衍生处理四层网络模型和四层网络模型。 ISO七层网络模型 应用层:为用户提供服务和协议,例如:HTTP,HTTPS,FTP、SMTP等。 表示层:应用固有数据格 ...
分类:
其他好文 时间:
2020-07-10 22:36:23
阅读次数:
73
视图 含义:视图是一个虚拟表,它的数据来自于表,通过执行时动态生成。 视图和表的区别: 关键字 占用物理空间情大小 使用 视图 view 占用小,仅仅保存的是sql逻辑 一般用于查询 表 table 占用大 增删改查 视图的作用: 提高SQL语句的重用性 简化复杂的SQL操作 保护数据,隐藏表的实现 ...
分类:
数据库 时间:
2020-07-10 18:49:57
阅读次数:
64
1. 存储过程 含义:一组经过预先编译的sql语句的集合,存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。 好处: 存储过程在创建的时候直接编译,而sql语句每次使用都要编译,提高执行效率 提高了sql语句的重用性 减少网络之间的数据传输,节省开销 /* ?1.创建存储过程 语法 ...
分类:
数据库 时间:
2020-07-10 18:45:49
阅读次数:
58
package main import ( "flag" "fmt" ) //**Demo1**: func main() { t1 := flag.Int("w", 0, "demo test") //int变量 t2 := flag.String("a", "Hello", "demo test ...
分类:
其他好文 时间:
2020-07-10 15:22:54
阅读次数:
74