愿星光伴随你左右


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

时间: 2022-07-17   |   阅读: 1896 字 ~4分钟

#—

title: Go:defer 语句如何工作 date: 2021-04-05 11:55:28 tags: [go] categories: [go]

原文链接

Go:defer 语句如何工作

ℹ️ 这篇文章基于 Go 1.12。

defer 语句是在函数返回前执行一段代码的便捷方法,如 Golang 规范所描述:

阅读全文 »

Go更细粒度的读写锁设计

时间: 2022-07-17   |   分类: go     |   阅读: 3946 字 ~8分钟

Go更细粒度的读写锁设计

在《Go精妙的互斥锁设计》一文中,我们详细地讲解了互斥锁的实现原理。互斥锁为了避免竞争条件,它只允许一个线程进入代码临界区,而由于锁竞争的存在,程序的执行效率会被降低。同时我们知道,只有多线程在共享资源中有写操作,才会引发竞态问题,只要资源没有发生变化,多线程读取相同的资源就是安全的。因此,我们引申出更细粒度的锁:读写锁。

什么是读写锁

读写锁是一种多读单写锁,分读和写两种锁,多个线程可以同时加读锁,但是写锁和写锁、写锁与读锁之间是互斥的。

img

读写锁对临界区的处理如上图所示。其中,t1时刻,由于线程1已加写锁,线程2被互斥等待写锁的释放;t2时刻,线程2已加读锁,线程3可以对其继续加读锁并进入临界区;t3时刻,线程3加了读锁,线程4被互斥等待读锁的释放。

阅读全文 »

go语言调度器源代码情景分析之九:操作系统线程及线程调度

时间: 2022-07-17   |   分类: go     |   阅读: 1867 字 ~4分钟

原创 爱写程序的阿波张 源码游记 2019-04-25

本文是《go调度器源代码情景分析》系列 第一章 预备知识的第九小节。

要深入理解goroutine的调度器,就需要对操作系统线程有个大致的了解,因为go的调度系统是建立在操作系统线程之上的,所以接下来我们对其做一个简单的介绍。

阅读全文 »

WebAssembly 系列(五)为什么 WebAssembly 更快?

时间: 2022-07-17   |   分类: wasm     |   阅读: 0 字 ~0分钟

Changed Timezone Ubuntu

时间: 2022-07-13   |   分类: 运维     |   阅读: 664 字 ~2分钟

How to Set or Change Timezone in Ubuntu Linux [Beginner’s Tip]

When you install Ubuntu, it asks you to set timezone. If you chose a wrong timezone or if you have moved to some other part of the world, you can easily change it later.

How to change Timezone in Ubuntu and other Linux distributions

There are two ways to change the timezone in Ubuntu. You can use the graphical settings or use the timedatectl command in the terminal. You may also change the /etc/timezone file directly but I won’t advise that.

阅读全文 »

返璞归真实现OpenVPN第二阶段协商

时间: 2022-07-12   |   分类: openvpn     |   阅读: 5575 字 ~12分钟

背景介绍

听着《梦中的额吉》,《天堂》…女儿在睡觉…外面细雨…中秋小长假,完成自己的OpenVPN patch 编码中充满了快乐!前提是你知道自己在做什么! OpenVPN不给力,虽然它给出了N多的Renegotiate选项,然则其实现却不尽人意。难道设计者以为我们众人就这么好忽悠吗?

阅读全文 »

OpenVP性能 当tap遇到bonding

时间: 2022-07-12   |   分类: openvpn     |   阅读: 3004 字 ~6分钟

引子

​ 别的就不多说什么了,前面的文章说过,OpenVPN有两个瓶颈,一个是tap网卡,另一个是加密/解密 ,然而不可否认,OpenVPN的客户端和服务器端处于一个“虚拟网段”,抛开虚拟不谈,只要是一个网段的,我们就可以说它们属于一个局域网(当然前提是使用tcp/ip网络),既然属于一个局域网,那么它要么是广播的,要么是点对点的,不管怎样,两端都有确定的三层地址(IP地址),所有的数据包都是通过这个三层地址来传输到对端的,因此为了使得路径畅通,我们只关心路由即可。

阅读全文 »

OpenVPN性能 第二个瓶颈在ssl加解密

时间: 2022-07-12   |   分类: openvpn     |   阅读: 1445 字 ~3分钟

测试命令:ab -k -c 8 -n 500 http://10.0.188.139/5m.html

机器部署:

S0:
eth0:192.168.188.194 mtu 1500 e1000e 1000baseT-FD flow-control
tun0:172.17.0.2      mtu 1500 
route:10.0.188.139   dev tun0
S1:
eth0:192.168.188.193 mtu 1500 e1000e 1000baseT-FD flow-control
eth1:10.0.188.193    mtu 1500 e1000e 1000baseT-FD flow-control
tun0:172.16.0.1      mtu 1500
S2:
eth1:10.0.188.139    mtu 1500 e1000e 1000baseT-FD flow-control
route:172.17.0.0     gw  10.0.188.193

测试数据: OpenVPN配置:--cipher BF-CBC --auth SHA1

阅读全文 »
31 32 33 34 35 36 37 38 39

日志
分类
标签
RSS 订阅
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%