7 暗夜猎手-大魔王

尚未进行身份认证

我要认证

热爱运动,喜欢跑步

等级
TA的排名 1w+

PostgreSQL JOIN实践及原理

PostgreSQL JOIN实践及原理最近项目使用了PostgreSQL 简单学习join语法以及原理,以后有时间搞一下SQLite源码。PostgreSQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。在 PostgreSQL 中,JOIN 有五种连接类型:...

2020-04-19 09:57:38

算法----LFU缓存

实现最不经常使用(LFU)缓存算法设计并实现数据结构。它应该支持以下操作:get和put。get(key)- 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value)- 如果键不存在,请设置或插入值。当缓存达到其容量时,则应该在插入新项之前,使最不经常使用的项无效。在此问题中,当存在平局(即两个或更多个键具有相同使用频率)时,应该去除 最近 ...

2020-04-06 09:57:07

算法----盛最多水的容器

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...

2020-03-30 21:01:32

算法----单词的压缩编码

来道算法题,压压惊。给定一个单词列表,我们将这个列表编码成一个索引字符串S与一个索引列表 A。例如,如果这个列表是 ["time", "me", "bell"],我们就可以将其表示为 S = "time#bell#" 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S中索引的位置开始读取字符串,直到 "#" 结束,来恢复我们之前的单词列表。那...

2020-03-28 17:05:56

动手写操作系统11----图层技术实现

本节实现图层技术,之前实现对于内存信息的图形化展示,但是由于没有使用内存管理功能,鼠标绘制和字符显示都是直接往显存位置处写数据,这样就会导致当移动鼠标重绘时直接改变显存位置数据而将字符数据直接擦除掉。这里采用图层技术,即背景窗口,字符以及鼠标数据不直接写入显存位置处,而是首先写入到不同的内存中,不同的图层对应不同的内存,当执行刷新函数时,由下到上开始绘制每一层图层,这样便可以实现不...

2020-03-01 11:34:17

动手写操作系统10----内存管理实现

本节实现操作系统可用内存的检测,分析以及简单的链表内存管理1.可用内存检测的实现使用BIOS 15h中断来检测内存,具体步骤如下:1: 将寄存器ax 赋值为 0E820h2 : 将寄存器ebx 初始化为0,该寄存器的内容会被BIOS修改,须保证内存查询过程中,该寄存器不会被修改。3: es:di 指向一块足够大的内存地址,BIOS会把有关内存的信息写到这个地址,内存信息是一种数...

2020-02-28 16:10:37

服务端高并发分布式架构演进之路

1. 概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径2. 基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概...

2020-02-21 14:22:22

动手写操作系统9----键盘&鼠标中断实现

键盘&鼠标中断实现本节主要实现键盘中断和鼠标中断,键盘中断实现将键盘数据显示到屏幕;鼠标中断实现鼠标位置的移动。 键盘中断通过主8259A的IRQ1触发,鼠标中断通过从8259A的IRQ4触发CPU通过中断向量号来寻址待执行的中断代码中断向量号 = 起始向量号 + 中断请求号...

2020-02-19 18:13:33

MySQL实战45讲学习笔记----分区表

分区表分区表的组织形式,创建一个表t:CREATE TABLE `t` ( `ftime` datetime NOT NULL, `c` int(11) DEFAULT NULL, KEY (`ftime`)) ENGINE=InnoDB DEFAULT CHARSET=latin1PARTITION BY RANGE (YEAR(ftime))(PARTITION p...

2020-02-18 16:00:44

MySQL实战45讲学习笔记----grant权限控制

介绍grant语句和flush privileges语句原理创建一个用户:create user 'ua'@'%' identified by 'pa';这条语句的逻辑是创建一个用户’ua’@’%’,密码是pa。注意,在MySQL里面,用户名(user)+地址(host)才表示一个用户,因此 ua@ip1 和 ua@ip2代表的是两个不同的用户。这条命令做了两个动作: 磁...

2020-02-18 15:38:40

动手写操作系统8----内核中断机制实现

内核中断实现21321#include<stdio.h>#include "io.h"#include "ascii_font.h"//定义调色板颜色#define COL8_000000 0#define COL8_FF0000 1#define COL8_00FF00 2#define COL8_FFFF00 3#define COL8...

2020-02-17 14:33:25

MySQL实战45讲学习笔记----复制表

复制表的方法,将数据从一张表复制到另一张表创建一个表db1.t,并插入1000行数据,同时创建一个相同结构的表db2.tcreate database db1;use db1;create table t(id int primary key, a int, b int, index(a))engine=innodb;delimiter ;; create procedure...

2020-02-17 11:40:48

MySQL实战45讲学习笔记----insert语句锁

insert语句的锁有 自增锁 行锁 间隙锁MySQL对自增主键锁做了优化,尽量在申请到自增id以后,就释放自增锁。insert … select 语句表t和t2的表结构、初始化数据语句如下CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL, `d`...

2020-02-17 11:11:40

MySQL实战45讲学习笔记----自增主键不连续分析

自增主键不能保证连续递增,什么情况下自增主键会出现 “空洞”?创建一个表t,其中id是自增主键字段、c是唯一索引。CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`id`), ...

2020-02-16 09:44:15

MySQL实战45讲学习笔记----内存表

内存表的数据组织结构假设有以下的两张表t1 和 t2,其中表t1使用Memory 引擎, 表t2使用InnoDB引擎。create table t1(id int primary key, c int) engine=Memory;create table t2(id int primary key, c int) engine=innodb;insert into t1 value...

2020-02-16 09:35:31

MySQL实战45讲学习笔记----group by原理

group by 执行流程select id%10 as m, count(*) as c from t1 group by m;这个语句的逻辑是把表t1里的数据,按照 id%10 进行分组统计,并按照m的结果排序后输出。它的explain结果如下:图4 group by 的explain结果在Extra字段里面,我们可以看到三个信息:Using index,表示这个语...

2020-02-14 09:53:45

MySQL实战45讲学习笔记----临时表

join查询的时候如果连接字段没有建索引,可以通过创建临时表,给临时表添加索引来优化join语句执行create temporary table temp_t like t1;alter table temp_t add index(b);insert into temp_t select * from t2 where b>=1 and b<=2000;select * ...

2020-02-13 11:12:31

动手写操作系统7----绘制内核字体&鼠标指针

本节实现绘制内核字体以及鼠标指针。内核图形绘制原理通过将指定位置的像素点设置成给定颜色而形成的最终图形,如下图: 把一块图形区域先全部染成白色,然后在将某个位置的像素点的颜色设置成黑色,那么,字体就显示出来了。如果我们把字体的大小限定在一个8*16的长方形区域,那么我们在这个区域内,将特定位置的像素点设置成黑色,其他...

2020-02-10 22:04:14

动手写操作系统6----调色板

本节实现调色板功能,之前开启显存的图形模式,对于每一个像素点利用8位数字来表示颜色,可以得到256种颜色,颜色丰富度不够,因此使用调色板功能来增强颜色显示,使用RGB模式,表示一个RGB颜色需要24位数。调色板功能简单实现 调色板原理:把多种RGB颜色的24位数值放入到一个数组中,原来的八位数不再对应一个颜色值,而是变成这个数组的下标,硬件在显示像素颜色时,从...

2020-02-09 16:47:08

动手写操作系统5----C语言实现绘制系统界面

本节实现C语言与汇编互相调用,利用C语言实现系统界面绘制功能。之前显示字符串等功能都是使用显卡的字符界面模式,接下来需要打开显卡的图形模式,打开显卡图形模式需要使用BIOS INT 0x10中断 ;设置屏幕色彩模式 mov al, 0x13 mov ah, 0 INT 0x10其中al 的值决定了要设置显卡的色彩模式,下面是一些常用的模式设置:0x0...

2020-02-09 14:10:25

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。