<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小马王]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ning0323</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ning0323]]></copyright><item><title><![CDATA[Programming Boy]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/137948102</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/137948102</guid><author>ning0323</author><pubDate>Fri, 19 Apr 2024 07:21:08 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[Python实现获取第n个丑数]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/104342247</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/104342247</guid><author>ning0323</author><pubDate>Sun, 16 Feb 2020 14:36:41 +0800</pubDate><description><![CDATA[丑数：只包含质因子2，3和5的数称作丑数（Ugly Number），1为最小丑数

核心思想：新丑数一定是由已得丑数乘丑数因子得到的，要得到有序丑数列表，在已得丑数列表基础上依次追加未得最小丑数即可，进而可得第n个丑数

完整方法：


import numpy as np
from datetime import datetime


# 获取第n个丑数，n从1开始
# 返回：目标丑数，丑数列表...]]></description><category></category></item><item><title><![CDATA[Redis设实 - 13 事件 下 时间事件]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77367928</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77367928</guid><author>ning0323</author><pubDate>Fri, 18 Aug 2017 11:48:18 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第11章
该书基于Redis2.9，即Redis3.0开发版编写


时间事件
分2类：
·定时事件
指定时间后执行一次
事件处理器返回AE_NOMORE，该事件达到一次后被删除
·周期事件
每隔指定时间执行一次
事件处理器返回非AE_NOMORE整数值，根据该值更新when属性，让该事件在一段时间后再次到达


时间事件3个属性]]></description><category></category></item><item><title><![CDATA[Redis设实 - 12 事件 上 文件事件]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77338287</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77338287</guid><author>ning0323</author><pubDate>Thu, 17 Aug 2017 19:00:24 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第11章
该书基于Redis2.9，即Redis3.0开发版编写


两类事件
文件事件（file event）
Redis服务器通过套接字与客户端（或其他Redis服务器）连接，文件事件是服务器对套接字操作的抽象
服务器与客户端（或其他Redis服务器）通信产生文件事件，服务器通过监听并处理这些事件完成一系列网络通信操作
时间事件（time e]]></description><category></category></item><item><title><![CDATA[Redis设实 - 11 AOF持久化]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77336017</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77336017</guid><author>ning0323</author><pubDate>Thu, 17 Aug 2017 16:59:30 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第11章
该书基于Redis2.9，即Redis3.0开发版编写


AOF（Append Only File）持久化通过保存Redis服务器执行的写命令记录数据库状态
AOF持久化三个步骤：
命令追加（append）
服务器执行完一个写命令后，该命令以协议格式追加到服务器状态aof_buf缓冲区：
typedef struct redisSer]]></description><category></category></item><item><title><![CDATA[Redis设实 - 10 RDB持久化]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77249055</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77249055</guid><author>ning0323</author><pubDate>Wed, 16 Aug 2017 16:06:49 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第10章
该书基于Redis2.9，即Redis3.0开发版编写


服务器中的非空数据库及其键值对统称为数据库状态
持久化操作可将数据库状态保存到文件
RDB持久化可手动执行，也可根据服务器配置选项定期执行


2个生成RDB文件命令
SAVE，阻塞Redis服务器进程，直到RDB文件创建完毕为止，期间不处理任何命令请求
BGSAVE，派]]></description><category></category></item><item><title><![CDATA[Redis设实 - 09 数据库]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77235858</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77235858</guid><author>ning0323</author><pubDate>Wed, 16 Aug 2017 11:46:02 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第9章
该书基于Redis2.9，即Redis3.0开发版编写


1. 数据结构
Redis服务器数据结构
typedef struct redisServer{
// ...
// 一个数组，保存服务器中的所有数据库
redisDb *db;
// 服务器的数据库数量，默认为16，可通过服务器配置中database选项修改
int db]]></description><category></category></item><item><title><![CDATA[Redis设实 - 08 对象 下]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77196957</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77196957</guid><author>ning0323</author><pubDate>Tue, 15 Aug 2017 16:54:22 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第8章
该书基于Redis2.9，即Redis3.0开发版编写


Redis命令可分两种
一种命令可对任何类型键执行，例DEL、EXPIRE、RENAME、TYPE、OBJECT
另一种命令只对特定类型键执行
类型检查
通过redisObject.type属性实现，若命令与type要求不一致，则返回错误
命令多态
通过redisObject]]></description><category></category></item><item><title><![CDATA[Redis设实 - 07 对象 上]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77193326</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77193326</guid><author>ning0323</author><pubDate>Tue, 15 Aug 2017 15:33:29 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第8章
该书基于Redis2.9，即Redis3.0开发版编写


Redis对象数据结构
typedef struct redisObject{
// 类型
unsigned type:4;
// 编码
unsigned encoding:4;
// 指向底层实现数据结构的指针
void *ptr;
//...
}robj;
typ]]></description><category></category></item><item><title><![CDATA[Redis设实 - 06 压缩列表]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77185026</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77185026</guid><author>ning0323</author><pubDate>Tue, 15 Aug 2017 10:57:24 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第7章
该书基于Redis2.9，即Redis3.0开发版编写


压缩列表
为节约内存而开发
由一系列特殊编码的连续内存块组成的顺序型（sequential）数据结构
可包含任意多个节点（entry），每个节点可保存一个字节数组或一个整数值


压缩列表节点
1个压缩列表节点可保存1个字节数组或1个整数值
字节数组长度有3种：
·长度]]></description><category></category></item><item><title><![CDATA[Redis设实 - 05 整数集合]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77164626</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77164626</guid><author>ning0323</author><pubDate>Mon, 14 Aug 2017 17:58:26 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第6章
该书基于Redis2.9，即Redis3.0开发版编写


整数集合（intset）
用于保存整数值的集合抽象数据结构
可保存类型为int16_t、int32_t、int64_t的整数值
集合中不会出现重复元素


整数集合数据结构
typedef struct intset{
// 编码方式
uint32_t encoding]]></description><category></category></item><item><title><![CDATA[Redis设实 - 04 跳跃表]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77164289</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77164289</guid><author>ning0323</author><pubDate>Mon, 14 Aug 2017 17:32:43 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第5章
该书基于Redis2.9，即Redis3.0开发版编写


跳跃表（skip list）
一种有序数据结构，通过在每个节点中维持多个指向其他节点的指针，从而达到快速访问节点的目的
支持平均O(logN)、最坏O(N)复杂度的节点查找
可通过顺序性操作批量处理节点


跳跃表数据结构
typedef structz skiplist{]]></description><category></category></item><item><title><![CDATA[《Redis设计与实现 黄建宏 著》阅读笔记目录（持续更新）]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77162997</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77162997</guid><author>ning0323</author><pubDate>Mon, 14 Aug 2017 16:17:19 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第3章
该书基于Redis2.9，即Redis3.0开发版编写

目录：
第一部分 数据结构与对象
01 简单动态字符串
02 链表
03 字典

未完待续......]]></description><category></category></item><item><title><![CDATA[Redis设实 - 03 字典]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77162869</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77162869</guid><author>ning0323</author><pubDate>Mon, 14 Aug 2017 16:11:55 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第3章
该书基于Redis2.9，即Redis3.0开发版编写


字典
一种用于保存键值对（key-value pair）的抽象数据结构
键唯一
又称符号表（symbol table）、关联数组（associative array）或映射（map）
Redis数据库底层使用字典实现
字典底层使用哈希表实现，哈希表节点保存键值对


字典]]></description><category></category></item><item><title><![CDATA[Redis设实 - 02 链表]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77161752</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77161752</guid><author>ning0323</author><pubDate>Mon, 14 Aug 2017 15:02:57 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》第3章
该书基于Redis2.9，即Redis3.0开发版编写


链表结构
typedef struct list{
// 表头节点
listNode *head;
// 表尾节点
listNode *tail;
// 节点数量
unsigned long len;
// 节点值复制函数
void *(*dup)(void *ptr)]]></description><category></category></item><item><title><![CDATA[Redis设实 - 01 简单动态字符串]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77161080</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77161080</guid><author>ning0323</author><pubDate>Mon, 14 Aug 2017 14:19:54 +0800</pubDate><description><![CDATA[《Redis设计与实现 黄建宏 著》3.3节
该书基于Redis2.9，即Redis3.0开发版编写


Redis默认字符串为简单动态字符串（simple dynamic string，SDS）抽象类型
Redis中C字符串只会作为字符串字面量（string literal）用在一些无须对字符串值进行修改的地方，如打印日志


SDS结构
struct sdshdr{
//]]></description><category></category></item><item><title><![CDATA[深机笔记 - 21 编译优化技术]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77102142</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77102142</guid><author>ning0323</author><pubDate>Fri, 11 Aug 2017 18:48:46 +0800</pubDate><description><![CDATA[《深入理解Java虚拟机：JVM高级特性与最佳实践（第2版）》11.3节


最具代表性的4项优化技术：
1. 语言无关的经典优化技术之一：公共子表达式消除
普遍应用于各种编译器的经典优化技术
若一个表达式E已经计算过，且从先前计算到现在E中所有变量值都未发生变化，则E的这次出现就成为了公共子表达式
对于公共子表达式，无必要再花时间进行计算，只需使用前面计算过的表达式结果代替E即可]]></description><category></category></item><item><title><![CDATA[007 UseGCLogFileRotation NumberOfGCLogFiles GCLogFileSize]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/77093679</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/77093679</guid><author>ning0323</author><pubDate>Fri, 11 Aug 2017 11:14:55 +0800</pubDate><description><![CDATA[你假笨JVM参数分享全整理系列
微信小程序：JVMPocket - JVM参数交流平台，Javaer的神奇口袋


序号：007
时间：2017-08-10
参数：
-XX:UseGCLogFileRotation
-XX:NumberOfGCLogFiles
-XX:GCLogFileSize
含义：
这次分享3个和GC日志相关的参数
通过参数-Xloggc:xxx可指定]]></description><category></category></item><item><title><![CDATA[深机笔记 - 20 HotSpot虚拟机内的即时编译器]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/76908933</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/76908933</guid><author>ning0323</author><pubDate>Tue, 08 Aug 2017 15:26:38 +0800</pubDate><description><![CDATA[《深入理解Java虚拟机：JVM高级特性与最佳实践（第2版）》11.2节
如无特殊说明，本章提及的HotSpot、虚拟机指HotSpot虚拟机，编译器、即时编译器指HotSpot虚拟机内的即时编译器


热点代码和JIT编译器
Java程序最初通过解释器（Interpreter）进行解释执行，虚拟机发现某个方法或代码块运行特别频繁时，会把这些代码认定为“热点代码”（Hot Spot Co]]></description><category></category></item><item><title><![CDATA[深机笔记 - 19 Java语法糖的味道]]></title><link>https://blog.youkuaiyun.com/ning0323/article/details/76832829</link><guid>https://blog.youkuaiyun.com/ning0323/article/details/76832829</guid><author>ning0323</author><pubDate>Mon, 07 Aug 2017 13:15:58 +0800</pubDate><description><![CDATA[《深入理解Java虚拟机：JVM高级特性与最佳实践（第2版）》10.3节
语法糖不会提供实质性功能改进，但或能提高效率、提升语法严谨性、减少编码出错机会


泛型与类型擦除
泛型是JDK1.5新增特性，本质是参数化类型（Parametersized Type）的应用，即数据类型被指定为参数
这种参数类型可用在类、接口和方法的创建中，分别称泛型类、泛型接口和泛型方法


泛型技术在]]></description><category></category></item></channel></rss>