redis https://github.com/antirez/redis/blob/5.0/src/adlist.h
https://github.com/antirez/redis/blob/5.0/src/adlist.c
结构体的定义
结构体的实现,双向链表的相关定义于adlist.h中
节点:
```C++
typedef struct listNode {
struct listNode *prev; //前一个节点
struct listNode *next; //后一个节点
void *value; //节点的值
} listNode;
more
迭代器:
C++
typedef s
继续阅读 »
在命令行中输入hexo new page tags
$ hexo new page tags
这时会在在sources/tags里面有个index.md的文件,打开这个文件编辑
```
title: tags
date: 2017-08-28 08:33:46
type: "tags"
```
type: 改成tags
继续阅读 »
牛客网编程练习-剑指offer,python实现。
github链接
1.【链表】从尾到头打印链表
输入一个链表,从尾到头打印链表每个节点的值。
继续阅读 »
引言
Lucene6.0于2016年4月8日发布,要求最低Java版本是Java 8。
相信大多数公司的数据库都需要采用分库分表等一些策略,而对于某些特定的业务需求,分别从不同的库不同的表中去检索特定的数据显得比较繁琐,而Lucene正好可以解决某些特殊需求,对于不同库不同表中的数据先建立全量索引,然后将需要检索的数据写入某个单独的表中,供其它业务需求方查询,以后的每天只需要做增量索引并写入数据表即可。
鉴于最近一直在做Lucene相关方面的工作,而本人一向又比较喜欢使用最新发布的版本,而网络上这类资源极少,故将一些要点及示例整理出来,本文主要从实战角度来介绍Lucene 6.0的使用,不涉及过多原理方面的东西,但是对于一些核
继续阅读 »
算法原理
归并排序(Merge Sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
归并操作(Merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。归并排序有多路归并排序、两路归并排序 , 可用于内排序,也可以用于外排序。这里仅对内排序的两路归并方法进行讨论。
算法思路:
1. 把 n 个记录看成 n 个长度为 l 的有序子表
2. 进行两两归并使记录关键字有序,得到 n/2 个长度为 2 的有序子表
3. 重复第 2 步直到所有记录归并成一个长度为 n 的有序表为止。
m
继续阅读 »
目录
Table of Contents
{:toc}
文/Robin
本站推广
币安是全球领先的数字货币交易平台,提供比特币、以太坊、BNB 以及 USDT 交易。
币安注册: https://accounts.binancezh.pro/cn/register/?ref=11190872
邀请码: 11190872
一 引子
MySQL 5.5 中,information_schema 库中新增了三个关于锁的表,亦即 innodb_trx、innodb_locks 和 innodb_lock_waits。
其中 innodb_trx 表记录当前运行的所有事务,innodb_locks 表记录当前出现的锁,inno
继续阅读 »
Mysql数据库中最常使用的两种表类型为 InnoDB和MyISAM。这两种类型各有优缺点,视具体应用而定。
InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs)。这些特性均提高了多用户并发操作的性能表现。
在InnoDB表中不需要扩大锁定(lock esca
继续阅读 »
**对代码不满足,是任何真正有天才的程序员的根本特征。**
Value '0000-00-00' can not be represented as java.sql.Timestamp
在查询MySql数据库某表的timestamp列的时候,发现此异常,问题来源表述如下
1. 先创建一个测试表
sql
create table test.mytest(
id int PRIMARY KEY AUTO_INCREMENT ,
createtime timestamp not null default current_timestamp , --创建时间
updatetime timestamp not null , --更新时
继续阅读 »
在开发过程中很容易遇到去多张表查询数组组合成一个对象的场景。
有两种方案:
一条大sql直接搞定
把大sql拆分成多条小sql,在程序代码里面再组装对象
more
下面分别分析下各自的优缺点:
大sql
优点:一目了然,程序代码简洁,只需要建立一个连接,在数据量小的情况下效率会高很多。
缺点:在数据量大的情况下响应慢,可能一条大SQL就把整个数据库堵死。垂直拆分情况下sql改动会很大。
多条小sql
优点:在数据量大的情况下效率高。对垂直拆分友好。
缺点:程序代码会变得异常啰嗦,难以维护。
各有利弊,要权衡使用场景。
如果在表数据量巨大的情况下或者数据字段比较有可能做垂直切分的情况下建议或者在做报表这种耗时操
继续阅读 »
**对代码不满足,是任何真正有天才的程序员的根本特征。**
Value '0000-00-00' can not be represented as java.sql.Timestamp
在查询MySql数据库某表的timestamp列的时候,发现此异常,问题来源表述如下
1. 先创建一个测试表
sql
create table test.mytest(
id int PRIMARY KEY AUTO_INCREMENT ,
createtime timestamp not null default current_timestamp , --创建时间
updatetime timestamp not null , --更新时
继续阅读 »