缓存穿透/击穿/雪崩及其解决方案
1. 缓存的穿透/击穿/雪崩 缓存穿透:缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。 缓存击穿:缓存击穿是指热点key在某个时间点过期的时候,而恰好在这个时间点对这个Key有大量的并发请求过来,从而大量… 阅读更多 »缓存穿透/击穿/雪崩及其解决方案
1. 缓存的穿透/击穿/雪崩 缓存穿透:缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。 缓存击穿:缓存击穿是指热点key在某个时间点过期的时候,而恰好在这个时间点对这个Key有大量的并发请求过来,从而大量… 阅读更多 »缓存穿透/击穿/雪崩及其解决方案
五种基于go的轻量级数据库的比较 本项目基于github上的开源项目badger-bench对五种基于go的轻量级数据库——badger、lmdb、boltdb、rocksdb,leveldb——进行比较。 项目原址: badger-bench 一、实验环境 本项目的运行环境为Ubuntu 9.3.0-17ubuntu1~2… 阅读更多 »五种基于go的轻量级数据库的比较
1. 缓存数据不一致 数据库的瓶颈是大家有目共睹的,高并发的环境下,很容易 I/O 锁死。当务之急,就是把常用的数据,给捞到速度更快的存储里去。 这个更快的存储,就有可能是分布式的,比如 Redis,也有可能是单机的,比如 Caffeine。 但一旦加入缓存,就不得不面对一个蛋疼的问题:数据的一致性。 数据不一致的问题,人世间多… 阅读更多 »缓存数据一致性问题(转载)
github下载慢或报错“The-remote-end-hung-up-unexpectedly”解决办法:该问题往往因为内部网络限制等因素导致。 因细节更新,欢迎访问本文源站链接:https://turbock79.cn/?p=173。 1.方法一 解决gitbub下载慢问题,可… 阅读更多 »github下载慢或报错“The-remote-end-hung-up-unexpectedly”解决办法
1. 数据同步问题 有很多情况下需要考虑线程安全问题,一个全局的变量如果有可能会被多个同时执行的线程去修改,那么对于这个变量的修改就需要有一种机制去保证值的正确性和一致性,这种机制普遍的做法就是加锁。其实也很好理解,和现实中一样,多个人同时修改一个东西,必须有一种机制来把多个人进行排队。计算机的世界中也是如此,多个线程乃至多个进… 阅读更多 »数据同步及锁
本文基于VMware虚拟机环境,详细请参考本文源站地址。 操作系统:CentOS7.6 Linux version 3.10.0-957.27.2.el7.x86_64 适用VPP版本:19.08-20.05,本文示例版本19.08 操作用户权限:root 系统驱动如果支持MSI-X,就无法使用驱动uio_pci_generic… 阅读更多 »编译安装VPP及运行
1. call 例类Run中展示call的使用方法,call接收对象传入的参数,可在call方法里执行某一特定对象的参数和方法(pytorch中模型正向传播的forward应该是对该函数的重写):
1 2 3 4 5 6 7 |
class Run(): def __init__(self,a): print('这是a:',a) def __call__(self, *args, **kwargs): print("这是call里的其他参数",args) test=Run(123) test('hehe') |
输出: [crayon-62f5e01ba382550944077… 阅读更多 »Python类中部分默认函数的调用
1. 概述 前面介绍了golang的一般单元测试,以及如何使用vscode进行高效的go单元测试开发。同时也说过一般单元测试重点在于cpu和内存类型的测试,而对io类型的测试是比较敏感的。那么针对这类测试就没法做单元测试了吗?有的,肯定是有的,这就是mock技术。 mock测试不但… 阅读更多 »Golang Mock使用入门
1. 组播概述 单播数据包传输的路径是利用“逐跳”(hop-by-hop)转发原理在IP网络中传输。相较于IP单播,IP组播通信的特点是数据包的目的地址不是一个特定的单一IP地址,而是一个特定组地址。 为了实现信息源和组播组成员跨越互联网进行通讯,需要提供网络层组播,组播数据包的目的IP地址使用组播IP地址。也就是说组播源不关注… 阅读更多 »组播概述
在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法。 1. 算数运算 * 代表乘法 ** 代表乘方
1 2 3 4 |
>>> 2 * 5 10 >>> 2 ** 5 32 |
2. 函数形参 *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数… 阅读更多 »Python3 * 和 ** 运算符(转载)
golangci-lint安装及运行
1 2 3 4 5 6 7 8 9 |
go get -u github.com/golangci/golangci-lint pushd ${GOPATH}/pkg/mod/github.com/golangci/golangci-lint@v1.41.1/cmd/golangci-lint go build cp golangci-lint /usr/bin popd #运行 golangci-lint run |
code_check.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/usr/bin/env bash function Fail() { echo "Abort with FAILs." exit 1 } echo -e "Process go vet...\c" go vet $(go list ./... | grep -v /vendor/) || Fail echo "PASS" echo -e "Process ci-lint...\c" which golangci-lint 1>/dev/null || (echo "Installing golangci-lint" && go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.32.2) golangci-lint run --timeout 10m || Fail echo "PASS" echo -e "Process go test...\c" go test $(go list ./... | grep -v /vendor/) -timeout=10s || Fail echo "PASS" echo "All check passed." |
1. wordpress修改后台登录入口 需要修改根目录里的wp-login.php和wp-includes文件夹下的general-template.php文件: 首先在网站根目录下找到wp-login.php文件,将文件名更改为自己想要的名称,比如denglu.php(请用一个不容易猜测到的文件名); 使用编辑器打开该文件,… 阅读更多 »WordPress修改后台登录入口
Go中Channel发送和接收操作指南 1. 前言 先来看一道面试题: 对已经关闭的 chan 进行读写,会怎么样?为什么? 在golang中channel属于较为核心的一个功能,尤其在go协程中,channel功能尤为重要;如果多个任务之间需要通信,可能就要用到通道(channel)。 2. Channel的定义 声明并初始化… 阅读更多 »Golang Channel发送和接收