YaPiBlog


You look look you one day day de

架构师(三) RSA加密

RSA加密问题 定义 RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制 原理 RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥 算法原理 RSA算法的具体描述如下: (1)任意选取两个不同的大素数p和q计算乘积 (2)任意选取一个...

架构师(二) 缓存

缓存问题 缓存穿透 原因:恶意攻击去查询数据库一定不存在的数据,对数据库造成压力,甚至压垮数据库 方案:使用特殊缓存空值标识对象不存在的情况、布隆过滤器(Bloom Filter) 缓存雪崩 原因:在某一个时间段,缓存集中过期,对数据库而言,就会产生周期性的压力波峰 方案:设置过期事件时候加随机因子,尽可能分散过期时间 缓存击穿 原因:缓存中没有但数据库中有...

架构师(一) JAVA

JVM 在 Java8 中,永久代已经被移除,被一个称为“元数据区”(元空间)的区域所取代。元空间 的本质和永久代类似,元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用 本地内存。因此,默认情况下,元空间的大小仅受本地内存限制。类的元数据放入 native memory, 字符串池和类的静态变量放入 java 堆中,这样可以加载多少类的元数据就不再由 MaxPermSize...

杂记 - 虚拟机设置静态IP

MAC VMWARE 设置静态IP cd /Library/Preferences/VMware\ Fusion/vmnet8 cat nat.conf 获取 ip及netmask,记录下来 cat dhcpd.conf 获取到 range xxx.xxx.xxx.xx xxx.xxx.xx.xx 这句话,定义了ip可用范围 mac系统偏好设置->网络-&g...

杂记 - 计算机缓存和伪共享

CPU 缓存 CPU 缓存(Cache Memory)是位于 CPU 与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多 高速缓存的出现主要是为了解决 CPU 运算速度与内存读写速度不匹配的矛盾,因为 CPU 运算速度要比内存读写速度快很多,这样会使 CPU 花费很长时间等待数据到来或把数据写入内存。 在缓存中的数据是内存中的一小部分,但这一小部分是短时间内 CPU ...

Go源码系列- sync.pool

基础结构 实现 存储数据基本机构 eface // 存储元素的结构体,类型指针和值指针 type eface struct { typ, val unsafe.Pointer } Pool 底层用 eface 来存储单个 Object, 包括 typ 指针: Object 的类型,val 指针: Object 的值 poolDequeue type poolDequeue ...

Go小记 - channel基础

起 Don't communicate by sharing memory, share memory by communicating. channel是一个类型安全的队列(循环队列),能够运用在不同的gorutine中交换任意的资源. 定义方式 // 定义一个int类型的channel,未初始化,nil var c chan int // 定义并初始化了一个无缓冲的int类型...

Go小记 - 指针运算和内存对齐

为什么需要内存对齐 平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常(32位平台上运行64位平台上编译的程序要求必须8字节对齐,否则发生panic) 性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一...

Go学习笔记(三)源码-初始化

启动流程 系统初始化 os_linux.go -> osinit 获取系统cpu信息等 调度器初始化方法 proc.go -> schedinit 内存相关初始化(如span信息的初始化)、命令行参数和环境变量、垃圾回收等 创建一个G 调用runtime.mstart 分配一个m ...

Go学习笔记(二)源码-内存分配回收

内存分配 Go的内存分配基于tcmalloc模型 核心目标 从 mmap 申请⼤大块内存,⾃主管理,减少系统调⽤用。 基于块的内存复⽤用体系,加快内存分配和回收操作。 分配器以页为单位向操作系统申请大块内存。这些大块内存由n个地址连续的页组成 并用名为span的对象进行管理 当需要时,span 所管理内存被切分成多个⼤大⼩小相等的⼩小块,每个⼩小块可存储⼀一个对象,故称...