自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 操作系统-最小可必备的概念

操作系统-最小可必备的概念大伪似真,大道无形计算机的根本特征是人造的,而不是自然存在的身边的事物,就会发现所有的东西可以划分为两类一类是本来就存在于自然中,人类所做的只不过是发现;另一类是本来并不存在,人类所做的是发明人造的四个特性:不精确、具有相对性。从对人类活动的观察导出。依赖于人的主观判断力。通常符合人的直觉。自然的特性:不精确、具有相对性。从对人类活动的观察导出。依赖于人的主观判断力。通常符合人的直觉。程序是怎样运行起来的程序设计 -> 编译系统

2021-09-24 17:39:35 127

原创 Golang修改图片JPEGjpg的大小和质量

1 借助 nfnt/resize 修改图片的尺寸2 借助 原生的 image/jpeg 修改质量package fyimageimport ( "bytes" "github.com/gogf/gf/os/glog" "github.com/nfnt/resize" "image" "image/jpeg")// 默认最大高度const MaxHeight uint = 1080// 当文件是JPEG格式时,对文件进行压缩。// 压缩的方式主要是借助原生的image/jpeg

2020-11-12 10:17:57 2634

原创 goroutine阻塞后发生了什么

在Golang中,goroutine是在线程之上的,如果某个goroutine阻塞,会将该gorotine对应的线程阻塞,此时运行时环境(runtime)会把该线程上其余的goroutine放在其他未阻塞的线程之中。

2020-10-31 15:06:59 645

原创 Golang 获取评论列表,以楼中楼的方式

一 楼中楼就是评论里面仍然有评论,类似于网易跟帖,能够让相关的内容聚集在一起。二 基本实现方式定义结构体type Comment struct { Id uint64 `json:"id"` Content string `json:"content"` ArticleId string `json:"article_id"` ParentId uint64 `json:"parent_id"` Child []*Comment `json:"child"`}实现过程func Ge

2020-10-23 14:53:07 357

原创 MySQl同时操作多条记录

MySQL对某个表中多条记录执行相同的操作UPDATE `table_name` SET table_field = table_field + 1 WHERE id in (13,14,20,21)在 table_name 表中,同时对主键为 13 14 20 21 的字段 table_field 的值+1

2020-10-19 17:07:47 201

原创 Golang Writer同时写入多个目的地

dest := io.MultiWriter(os.Stdout, file)io.Copy(dest, r.Body)if err := r.Body.Close();err != nil {}

2020-10-17 17:11:47 480

原创 Golang JSON常见操作

1 编码func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) {2 解码var c map[string]interface{}err := json.Unmarshal([]byte(JSON), &c)iferr!=nil{ log.Println("ERROR:", err)}3 JSON -> 结构体var gr gResponseerr = json.NewDecod

2020-10-17 16:36:48 61

原创 MYSQL数据库Order内部分组,值非0与0分开

一 实际业务情景:对某个字段排序,> 0 时,升序排列;=0时,放在末尾。二 实现方式:SELECT a FROM `tablename` ORDER BY `a` = 0,`a` asc三 简单说明:在排序时,先将字段a的值进行分组,分为 > 0 和 = 0 两组。接着对每一组进行升序排列。...

2020-10-16 17:50:26 381

原创 Golang 多重排序

结构体定义type A struct { xx int, yy int, zz int,}重写排序方法type Wrapper struct { a []*A by func(p, q *A) bool}type SortBy func(p, q *A) boolfunc (pw Wrapper) Len() int { // 重写 Len() 方法 return len(pw.a)}func (pw Wrapper) Swap(i, j int) { // 重写

2020-10-13 11:34:41 1117

原创 Golang同步锁的两种方式

1 原子锁可以借助某个信号向所有的goroutine 发送消息var ( shotdown int64 // 该标志向多个goroutine通知状态 wg sync.WaitGroup)func main() { wg.Add(2) go doWork("A") go doWork("B") time.Sleep(1 * time.Second) atomic.StoreInt64(&shotdown, 1) // 修改 wg.Wait()}func

2020-09-25 11:36:08 1796

原创 Golang中, struct结构体忽略字段的方法

1 字段名小写age 字段不会被外包访问type user { Name string age int}2 借助 tag结构体转JSON时,如果 addr 是零值,就会忽略这个字段type Person struct { Name string `json:"name"` Age int `json:"age"` Addr string `json:"addr,omitempty"`}...

2020-09-24 10:59:53 7002

原创 Go语言调用接口方法的值传递与指针传递的区别

零 结论接收者类型接收者值指针只能为指针值值与类型都可以一 定义接口type notifier interface { notify()}二 定义一个方法func sendNotification(n notifier) { n.notify() }三 指针传递type user struct { name string email string}func (u *user) notify() { // 这里的接收者是指针类型

2020-09-24 10:11:10 1085

原创 Golang 数组拷贝是值拷贝

Golang 数组拷贝是值拷贝,两个的地址不相同,内容相同 var ar1 [5]string ar2 := [5]string{"Red"} ar1 = ar2 fmt.Printf("%p, %p, %+v\n", &ar1, &ar2, ar1 == ar2) // 0xc0000b2000, 0xc0000b2050, true

2020-09-22 15:37:32 1533

原创 Golang 浮点数格式化输出,保留一位小数

Golang 浮点数格式化输出,保留一位小数package mainimport ( "fmt" "strconv")// 浮点数 1.0 输出后保存小数位func main() { var f float64 = 1.0 fmt.Println(f) // 1 value := strconv.FormatFloat(f, 'f', 1, 64) fmt.Println(value) // 1.0}...

2020-09-22 15:07:00 10740

原创 Golang 判断是否以某个字符串作为首和尾

首尾的判断判断是否以某字符串作为开始 HasPrefixif !strings.HasPrefix(url,"http://") { url = "http://" + url}func HasPrefix(s, prefix string) bool { return len(s) >= len(prefix) && s[0:len(prefix)]== prefix}判断是否以某字符串作为结尾 HasSuffixfunc HasSuffix(s ,suffix

2020-06-23 09:01:00 7514 2

原创 通过请求平均分配给多台服务器实现负载均衡

在单台WEB发服务器访问量过多或者需要运行的程序过多的时候,可以通过提高提高宽带或者提供性能更好的服务器来实现,但是还是会有到达瓶颈的时候,那么设置三台服务器配置三个IP地址就解决了。此时的问题是:三个IP地址到底是访问哪一个呢?最简单的方式是轮询,所谓轮询是指的 在 WEBDNS 服务器上设置三个IP地址指向同一个域名。每次会返回不同的IP地址。第一个问题 : DNS不知道这个服务器的情况,即便是服务器瘫痪了,依旧会返回指定的IP地址。第二个问题 : 在跨页面操作的时候,不能连续操作比..

2020-06-22 17:23:23 898

原创 防火墙结构和原理

基本思路 : 只允许发往特定服务器上特定程序的包,其余都屏蔽。常见实现方式:包过滤应用网关电路层网关对于包过滤是通过检测报的头部信息来实现的,字段包括:MAC头部的发送方MAC地址;IP头部的发送/接收IP,协议号;TCP/UDP头部 : 发送方/接收方的端口号;TCP 控制位(ACK,SYN,PSH,RST。FIN等)端口限定应用程序。比如说在服务端仅仅是 80 或者8080 端口的可以进入,其余的都必须屏蔽;控制位判断连接的方向举例:如果禁止服务器访..

2020-06-22 17:22:07 1018

原创 服务端的局域网设置与负载均衡

5.1 WEB服务的部署地点常见的WEB部署的方式有三种:和路由器直接的方式,此时服务器在互联网上是处于“裸露”的状态而且IP地址也不足;通过防火墙的连接,防火墙会先对包进行检查,只转发允许的包;部署在接入网的数据中心,因为比较接近POP或者IX 所以速度高,安全并且维护成本也低。5.2 防火墙结构和原理基本思路 : 只允许发往特定服务器上特定程序的包,其余都屏蔽。常见实现方式:包过滤应用网关电路层网关对于包过滤是通过检测报的头部信息来实现的,字段包括:MAC头

2020-06-22 15:59:46 779

原创 从光猫的发出到另一个光猫的接入

4.1 ADSL 接入网的结构和工作方式互联网也是通过路由器进行转发包的,不同的地方在于转发的距离以及如何控制转发目标,因为路由表记录的维护方式不同。互联网发包的规则与接入网有关,接入网就是公司家庭等连接互联网的通信线路包括 ADSL、FTFH、CATV、电话线、ISDN等。ADSL Modem 需要将数据拆成信号单元最终的目的是转换成电信号发送给分离器;整体过程:客户端路由通过 Modem 和电话线发送网络包到ADSL的网络运营商;从客户端到互联网网络包的变化:客

2020-06-22 15:48:16 2492

原创 一条MySQL查询语句是如何执行的?

首先要看到整个MySQL系统划分为哪一些部分?客户端各种发送请求服务端Server层连接器分析器优化器执行器查询缓存(可能会逐步替代)引擎层各种存储引擎执行的逻辑是什么?客户端向数据库发送请求数据库收到请求后找到连接器,进行初步权限认证分析器先进行词法和语法分析词法分析,识别输入的是什么。比如表名?列名?关键字?语法分析,判断SQL语句是否符合语法再执行优化器,优化主要在两个方面来体现多个索引的时候,如何选择合适的索引

2020-06-21 14:04:38 114

原创 从网线到网络设备是如何工作的

电信号从 RJ-45 接口出来,到达集线器,交换机和路由器以及路由器往外转发的过程。在家庭的路由中,交换机和集线器一般集成在一起了或者直接没有集线器。信号从网卡出来到集线器的时候数据包之间的传输是独立的,仅仅负责传包并不会考虑内部的数据。从网卡到集线器的时候信号就会出现衰减,而且电信号频率越高,损失就越大。双绞线的存在是为了抑制噪声,减少衰减。网线的周围的电磁波碰到金属等导体会产生电流,而信号本身就是带有电压变化的电流,混在一起容易导致失真。电磁波有两种来源一种是外部的比如电机,

2020-06-21 08:40:51 298

原创 从运输层到网络接口层发生了什么?

从运输层到网络接口层创建套接字协议栈的内部结构由上到下应用程序(网络应用程序 Socket );操作系统 协议栈 TCP、UDP、IP(ICMP,ARP))驱动程序(网卡驱动程序等);硬件(网卡)一般收发时间比较短的用的是UDP连接比如DNS查询,视频流;需要稳定的是TCP来传输,比如邮件服务,web访问。IP 是用来控制网络包的收发状态,数据会切成一个一个的包。ICMP告知传输过程中产生的错误以及控制信息ARP 用来根据IP地址获取对应的 MAC 地址

2020-06-20 11:57:33 261

原创 HTTP消息、DNS服务与协议栈消息发送

网络是如何连接的前言网络是怎样连接的,来自于日本的一位作者,本书主要以web交互,从客户端访问服务器以及服务器应答的过程来讲解的。接下来一段时间将以书本上涉及知识的总结以供后期自行查阅。网络连接的流程:浏览器委托数据的发送,传递消息的是搬运数字(消息对应着就是数据,数据是0和1组成的);协议栈:给消息打包,添加地址等接着交给网卡最后通过电信号转发出去;通过交换机到达路由器,路由器的后面就是互联网部分,接下来属于网络运营商所需要解决的;由接入网到接入点(接入点后面是互联网的骨干部分) 到达we

2020-06-19 16:44:29 297

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除