Golang Gcache中的LRU和LFU

一、LRU SET GET DELETE Loader 二、LFU SET GET DELETE Loader 多种淘汰策略,LRU、LFU、simple; 提供loder,singleflight方式; 时间窗口的概念是通过整个cache表的过期时间来实现的; 过期删除,访问时才被删除; 过期和淘汰策略是分开的:访问过期会删除,添加元素会淘汰(淘汰时不看过期时间); LRU/LFU更新记录时开销O(1),假如用堆之类相比开销很大; 大锁的改进: 读写锁 锁的粒度,整个map,单独item 锁的...阅读全文

简书 2020-10-31 23:32:40 梦工厂

Golang中[]byte与string转换

string类型和[]byte类型是我们编程时最常使用到的数据结构。本文将探讨两者之间的转换方式,通过分析它们之间的内在联系来拨开迷雾。两种转换方式标准转换go中string与[]byte的互换,相信每一位gopher都能立刻想到以下的转换方式,我们将之称为标准转换。 // string to []byte s1 := "hello" b := []byte(s1) // []byte to string s2 := string(b)强转换通过unsafe和reflect包,可以实现另外一种转...阅读全文

Segmentfault 2020-11-01 00:32:37 机器铃砍菜刀

Golang

默认安装目录: /usr/local/go/编译器启动文件: /usr/local/go/bin/go配置环境export PATH=/usr/local/go/bin:$PATH - src 放置编写的go代码和依赖 - crm - app.go bin 编译可执行文件 pkg 包文件 公共文件//Go安装目录export GOROOT=/usr/local/go//代码和便有之后的文件相关代码export GOPATH=/Users/zoe/GolangProjects//存放可执行编译之后...阅读全文

简书 2020-10-31 21:32:38 __子不语__

go-machinery入门教程(异步任务队列)

前言哈喽,大家好,我是asong,这次给大家介绍一个go的异步任务框架machinery。使用过python的同学们都知道Celery框架,machinery框架就类似于Celery框架。下面我们就来学习一下machinery的基本使用。自己翻译一个粗略版的machinery中文文档,有需要的伙伴们公众号自取无水印版:后台回复:machinery即可领取。或者github下载:https://github.com/asong2020/...抛砖引玉我们在使用某些APP时,登陆系统后一般会收到一封...阅读全文

Segmentfault 2020-11-01 00:32:38 asong

Linux内核-进程间通信组件的实现

Linux内核的五大组件一个完整的Linux内核一般由五大部分组成,他们分别是内存管理,进程管理,进程间通信,虚拟文件系统和网络接口。一、内存管理内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。Linux内存管理支持虚拟内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其他程序块则保留在磁盘中。在内存紧缺时,内存管理负责在磁盘和内存间交换程序块。二、进程管理进程管理主要控制系统进程对CPU的访问。当需...阅读全文

简书 2020-10-31 18:32:41 Java永远滴神

彻底弄清Golang中[]byte与string转换

string类型和[]byte类型是我们编程时最常使用到的数据结构。本文将探讨两者之间的转换方式,通过分析它们之间的内在联系来拨开迷雾。 两种转换方式 标准转换 go中string与[]byte的互换,相信每一位gopher都能立刻想到以下的转换方式,我们将之称为标准转换。 // string to []byte s1 := "hello" b := []byte(s1) // []byte to string s2 := string(b) 强转换 通过unsafe和reflect包,可以实现...阅读全文

简书 2020-10-31 18:32:40 机器铃砍菜刀s

英文检索数据库谷歌学术一招搞定

导言谷歌学术是大家平时经常使用的一个英文检索数据库,但是由于网络原因,国内一直需要使用各种方法解决打开网址的难题。其中最常见的是在浏览器中添加插件,从而打开谷歌学术浏览器网址。之前我们推荐了一个谷歌浏览器插件“Ghelper 上网助手”,今天我们再推荐一个谷歌学术插件——iGG谷歌访问助手,这个插件免费提供高速访问: google搜索、gmail、chrome商店 ,以及 Golang、Tensorflow、Android等开发者等谷歌服务。微软 onedrive 加速。软件谷歌浏览器插件 图文...阅读全文

简书 2020-10-31 16:32:41 WOSCI沃斯编辑

Linux内核-进程间通信组件的实现

Linux内核的五大组件一个完整的Linux内核一般由五大部分组成,他们分别是内存管理,进程管理,进程间通信,虚拟文件系统和网络接口。一、内存管理内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。Linux内存管理支持虚拟内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其他程序块则保留在磁盘中。在内存紧缺时,内存管理负责在磁盘和内存间交换程序块。二、进程管理进程管理主要控制系统进程对CPU的访问。当需...阅读全文

Segmentfault 2020-11-01 00:32:37 深度Linux

一文解读计算机专业Python校园招聘

作为一个刚刚参加完秋招的学生,我希望把整个校园招聘的流程以及经历的事情记录下来,留给学弟学妹参考。相信很多学弟学妹对于未来的面试、就业充满了疑问和憧憬。而在学校是完全接触不到这些东西的,学校也不会开设任何就业指导相关的问题,对于没有任何经验的我们来说,绝大多数同学都是一边搜集各种资料,一边向学长学姐请教,再身体力行地去尝试和探索,最终完成了整个校园招聘流程。摸索校园招聘的过程,本质也是一种社会中的闯荡与学习。校园招聘对于不同人的意义是不同的:对公司来说是一个流程,对同学来说是一场比赛,对个人来说...阅读全文

简书 2020-10-31 14:32:38 架构师圈子

又又又一个gin demo 项目,带你快速上手用gin进行web开发

ffly-plus又又又一个gin demo项目,带你快速上手用gin进行web开发, 在这个demo项目中,你可以学到项目结构设计、gorm的使用、gin中间件的编写、DB设计规范、Swagger文档生成、配置文件解析库viper使用、使用JWT进行身份鉴权认证、使用sentinel-go进行QPS限制、Makefile文件编写、项目文档结构设计和相关内容编写github: https://github.com/colinrs/ff...ffly-plus一款适合于快速开发业务的 Go Gin...阅读全文

Segmentfault 2020-11-01 00:32:36 djjk

LeetCode(4) 寻找两个正序数组的中位数

给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?思路:看到这道题的第一个思路是使用类似归并排序的方式,将两个数组合并成一个有序数组,在对这个有序数组求中位数。func findMedianSortedArrays(nums1 []int, nums2 []int) float64 { nums := newNums(nums1, nums2) if ...阅读全文

Segmentfault 2020-11-01 00:32:36 xbdyhh

使用Go进行io_uring的动手实践

在Linux中,系统调用(syscalls)是一切的核心。 它们是应用程序与内核交互的主要接口。 因此,至关重要的是它们要快。 尤其在后Spectre / Meltdown后世界中,这一点尤为重要。如果觉得看完文章有所收获的话,可以关注我一下哦知乎:秃顶之路 b站:linux亦有归途 每天都会更新我们的公开课录播以及编程干货和大厂面经或者直接点击链接c/c++ linux服务器开发高级架构师来课堂上跟我们讲师面对面交流需要大厂面经跟学习大纲的小伙伴可以加群973961276获取大部分系统调用都处...阅读全文

Segmentfault 2020-11-01 00:32:35 秃头大哥

2020-10-30:给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相减的最大值,其中被减数的下标不小于减数的下标。即求出: maxValue = max{arr[j]-a...

2020-10-30:给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相减的最大值,其中被减数的下标不小于减数的下标。即求出: maxValue = max{arr[j]-arr[i] and j >= i}? 福哥答案2020-10-30: 1.双重遍历法。 2.一次遍历法。 golang代码如下: package main import "fmt" const INT_MAX = int(^uint(0) >> 1) func main() { s := []int{7,...阅读全文

简书 2020-10-30 21:32:38 福大大架构师每日一题

自定义 Kubernetes 调度器

感谢作者,原文链接:https://www.qikqiak.com/post/custom-kube-scheduler/kube-scheduler 是 kubernetes 的核心组件之一,主要负责整个集群资源的调度功能,根据特定的调度算法和策略,将 Pod 调度到最优的工作节点上面去,从而更加合理、更加充分的利用集群的资源,这也是我们选择使用 kubernetes 一个非常重要的理由。如果一门新的技术不能帮助企业节约成本、提供效率,我相信是很难推进的。调度流程默认情况下,kube-sche...阅读全文

简书 2020-10-30 18:32:47 贺大伟

MIT6.824分布式系统课程 翻译&学习笔记(二)基础架构:RPC和线程【持续更新中】

说明本系列文章是对大名鼎鼎的 MIT6.824分布式系统课程 的翻译补充和学习总结,算是自己一边学习一边记录了。如有疏漏错误,还请指正:)持续更新ing。。。翻译&补充内容Go中的线程和RPC,看一下实验为什么选择Go?对线程良好的支持方便的RPC类型安全垃圾回收(没有内存释放后再被使用的问题)线程+垃圾回收非常棒相对简单在教程学习后,请阅读 effective go线程很有用的构造工具,但是有时候会很棘手在Go里叫做“goroutines”;其他地方叫做线程线程 = “执行线程”线程允许一个程...阅读全文

Segmentfault 2020-11-01 00:32:35 raesnow

​教你导入golang.org的包

导入golang.org的包golang是google开源的编程语言,用久了就会对这个事实有深刻的体会比如说,go get一些包的时候,失败liao。 怎么解决国内golang.org下的包无法下载到本地GOPATH的问题呢?例子: github.com/colinmarc/hdfs 这个包用到了golang.org/x/crypto的部分功能原因:golang.org解析出来是google的ip,“理所应当”被拒绝访问办法,找到github的镜像包: 步骤:git clone [镜像地址].然...阅读全文

简书 2020-10-30 17:32:50 也许会了

2021年Linux服务器开发的知识技术合集(基础入门到高级进阶)

前言本文介绍下Linux从入门到高级进阶的学习路线。整个路线体系专注于服务器后台开发,知识点包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等等(技术点目尾都提供免费视频,qun832218493取资料)资源列表:1:linux零基础入门2:linux服务器开发3:架构师开发4:linux内核5:webrtc入门到精通6:音视频FFmpeg7:神器Git入...阅读全文

Go语言中文网 2020-10-30 16:53:16 zlh0921