sql
字符串函数
substring(str, pos, length) (被截取字段,从第几位开始截取,截取长度)省略length则默认截取至末尾,从1开始数位置,pos为负数就是从后向前数
select device_id, substring(blog_url,11) as user_name from user_submit
http:/url/dkittycc -> blog_url
dkittycc -> user_name
substring_index(str,sep,n)(被分隔的字符串,分隔符,前几个字符串),n为负数则获取从后向前数几个字符串
select substring_index(substring_index(profi...
计算机类笔记
计算机基础知识
背景与基础知识
计算机硬件发展
电子管计算机:1946年,以CPU为中心,用于数值计算,使用机器语言
晶体管计算机:1958年,以存储为中心,使用高级语言
中小规模集成电路计算机:1964年,以存储和外设为中心
大规模超大规模集成电路计算机:1971年,体积小
计算机语言发展
机器语言:二进制编码,机器可以直接识别
汇编语言:字符和符号编程
高级语言:面向用户
面向对象语言:代码重用
性能指标
字长:CPU一次性处理的二进制位数,字长越长,性能越高。
主频率:CPU单位时间内的平均执行次数,以兆赫兹为单位,频率越高,计算机的运算速度越快
运算速度:单位时间内执行指令的数量,以每秒百万条MIPS为单位
存储容量:计...
MongoDB学习笔记
简介
MongoDB是一种文档数据库,不同与关系型数据库,它没有Scheme。MongoDB 使用面向文档的数据模型,导致很多概念都与 RDBMS 有一些差别,虽然从总体上来看两者都有相对应的概念。
读偏好
MongoDB支持设置读偏好,有以下几种选项可配置:
primary:这是默认的设置,表明只从可复制集的主节点读取数据,因此具有强一致性。如果可复制集有问题,并且没有可选举的从节点,就表示出现错误。primary是唯一一个可以确保读一致的模式。
premaryPreferred : 设置了此参数的驱动会从主节点读取数据,除非某些原因使主节点不可用或者没有主节点,此时它会从从节点读取数据。此种设置下,读请求无法保证一致性。
secondary :这个设置告诉...
Kubernates
Kubernetes是什么
它是一个为 容器化 应用提供集群部署和管理的开源工具,由 Google 开发。
Kubernetes的集群架构
主要分为两部分,主节点和工作节点。
主节点:控制平台,不需要很高性能,不跑任务,通常一个就行了,也可以开多个主节点来提高集群可用度。
工作节点:可以是虚拟机或物理计算机,任务都在这里跑,机器性能需要好点;通常都有很多个,可以不断加机器扩大集群;每个工作节点由主节点管理。
Kubernetes中调度的最小单位是Pod,一个Pod中可以包含一个或多个容器,Pod 里的容器共享同一个 Network Namespace、同一组数据卷,从而达到高效率交换信息的目的,每个Pod都有自己的虚拟ip,一个...
图的最短路径
前言
如果想在一张权重图中寻求某一点到其他点的最短路径,Dijkstra算法和Floyd算法是最常用的。
首先在介绍算法前,定义一下如何存储图,为了方便,我们约定 n 为点数,m为边数。
领接矩阵
这是一种使用二维矩阵来进行存图的方式,适用于边数较多的稠密图使用。
// 邻接矩阵数组:w[a][b] = c 代表从 a 到 b 有权重为 c 的边
int[][] w = new int[N][N];
// 加边操作
void add(int a, int b, int c) {
w[a][b] = c;
}
邻接表
这也是一种在图论中十分常见的存图方式,与数组存储单链表的实现一致(头插法)。这种存图方式又叫链式前向星存图,适用于边数较少的稀疏图使用。
Dij...
操作系统内存管理
操作系统内存管理:总的来说,操作系统内存管理包括物理内存管理和虚拟内存管理。
物理内存管理:包括程序装入等概念、交换技术、连续分配管理方式和非连续分配管理方式(分页、分段、段页式)。
虚拟内存管理:虚拟内存管理包括虚拟内存概念、请求分页管理方式、页面置换算法、页面分配策略、工作集和抖动。
物理内存:连续分配存储管理方式
单一连续存储管理
在这种管理方式中,内存分为系统区和用户区,应用程序装入到用户区,并且可使用用户区全部空间。虽然易于管理,但是十分浪费内存,例如对内存要求很少的程序也占有很多内存空间。
分区式存储管理
为了支持多道程序系统和分时系统,支持多个程序并发执行,引入了分区式存储管理。分区式存储管理是把内存分为一些大小相等或不等的分区,操作系统占用其中一...
HashMap的容量为什么都是2次幂
HashMap的容量总是2的幂次
秘密在哪呢?
提高模运算性能
如何把hashmap中元素的位置尽量分布的均匀一些,减少碰撞时去链表中寻找的次数。因此使用模运算的方式,对hashcode取膜来找到对应的位置,但是模运算的消耗较大,因此找到一种更快的方式取代膜运算
index = (n - 1) & (hash = hash(key)) //hashcode & (length-1) == hashcode % length
resize()时无需重新计算元素hash值
在扩容的时候,原数组中的数据必须重新计算其在新数组中的位置,并放进去,这是一个非常消耗性能的操作。由于n变为两倍,不需要重新计算hash,原先在oldTab[i]位置的元素在resize后要...
手撕快排
基本思想
快速排序的主要思想是通过划分将待排序的序列分成前后两部分,其中前一部分的数据都比后一部分的数据要小,然后再递归调用函数对两部分的序列分别进行快速排序,以此使整个序列达到有序。
步骤:
选定Pivot中心轴
将大于Pivot的数字放在Pivot的右边
将小于Pivot的数字放在Pivot的左边
分别对左右子序列重复前三步
那么问题来了,是如何将大于或者小于Pivot的数字进行移动的呢?
在本文中,始终将待排序数组的第一个数字选取为Pivot主元,通过数组的left和right两个指针的交替移动实现数字的归位
首先将Pivot值备份,left指针指向数组第一个位置,right指向最后一个位置,首先比较right指针
right指针操作
指...
共计 30 篇文章,4 页。