7 MRZvc

尚未进行身份认证

我要认证

静坐常思己过,闲谈莫论人非。

等级
TA的排名 42w+

Redis与MongoDB区别

MongoDB 更类似 MySQL,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询 JSON 数据,能存储海量数据,但是不支持事务。Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,支持多种类型的数据结构,可用作数据库,高速缓存和消息队列代理。1、内存管理机制Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其.

2020-08-31 17:32:46

邀请码生成器

package sourcecode;import java.util.Random;/** * 邀请码生成器 算法原理: 1) 获取id: 134567 2) 使用自定义进制转为:8VML 3) 转为字符串,并在后面加'O'字符:8VMLO * 4)在后面随机产生若干个随机数字字符:8VMLOD * 转为自定义进制后就不会出现O这个字符,然后在后面加个'O',这样就能确定唯一性。...

2019-10-21 17:44:00

Java数据类型和MySql数据类型对应表

2019-12-09 18:47:18

MongoDB空间定位(点)与距离检索

MongoDB空间定位(点)与距离检索测试数据:db.mapinfo.insert({"address": "南京 禄口国际机场", "tags": ['A'], "location": {"type": "Point", "coordinates": [118.783799, 31.979234]}})db.mapinfo.insert({"address": "南京 浦口公园", "tags": ['B'], "location": {"type": "Point", "coordinates.

2020-08-31 17:20:06

3-Java中如何创建线程

Runnable和Thread实现多线程的区别Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势: 可以避免由于Java的单继承特性而带来的局限; 增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的; ...

2019-09-03 10:40:03

14-ThreadLocal类详细剖析

ThreadLocal类详细剖析对ThreadLocal的理解JDK中的源码是这样描述ThreadLocal的:This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (...

2019-09-02 17:46:37

Java集合框架

Java集合框架概述Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。Java集合类的整体框架如下:从上图中可以看出,集合类主要分为两大...

2019-08-30 15:08:07

TreeMap源码分析解读

基础结构 static final class Entry<K,V> implements Map.Entry<K,V> { K key; V value; Entry<K,V> left; // 左孩子 Entry<K,V> right; // 右孩子 ...

2019-08-30 15:07:56

LinkedList源码分析解读

基础结构 private static class Node<E> { E item; // 当前值 Node<E> next; // 前置节点 Node<E> prev; // 后置节点 Node(Node<E> prev, E element, Node<E&...

2019-08-30 15:07:47

红黑树源码分析解读

红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。除了具备该特性之外,红黑树还包括许多额外的信息。红黑树的每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)。红黑树的特性:(1) 每个节点...

2019-08-30 15:07:39

HashSet源码分析解读

HashSetHashSet概述HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。HashSet的实现public class HashSet<E> extends AbstractSet<E> implements Set<E>, ...

2019-08-30 15:07:28

HashMap源码分析解读

HashMapHashMap概述HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。public class HashMap<K,V> extends Abst...

2019-08-30 15:07:20

Vector源码分析详解

public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ protected Object[] elementData; protected int ele...

2019-08-30 15:07:05

如何设计一个百万级用户的抽奖系统?

1、抽奖系统的背景引入本文给大家分享一个之前经历过的抽奖系统的流量削峰架构的设计方案。抽奖、抢红包、秒杀,这类系统其实都有一些共同的特点,那就是在某个时间点会瞬间涌入大量的人来点击系统,给系统造成瞬间高于平时百倍、千倍甚至几十万倍的流量压力。比如抽奖,有一种场景:某个网站或者APP规定好了在某个时间点,所有人都可以参与抽奖,那么可能百万级的用户会蹲守在那个时间点,到时间大家一起参与这个抽奖。抢...

2019-08-30 15:06:24

Hashtable源码分析详解

HashtableHashtable简介和HashMap一样,Hashtable也是一个散列表,它存储的内容是键值对(key-value)映射。Hashtable继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。Hashtable的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null(为null时将抛...

2019-08-30 11:02:12

一个简单的抽奖算法

通过随机数的区间分布实现一个抽奖算法。接受一个包含奖品中奖概率的list,返回中奖的奖品。先定义一个抽象奖品类。public class AbstractPrize { private double probability; // 中奖概率 private int prizeNum; // 奖品数量(暂时没用到) private String prizeName; // 奖品名...

2019-08-30 10:59:40

二叉树的深搜和广搜

二叉树是计算机中一个重要的数据结构,在这里主要谈一下二叉树的深度优先搜索(DFS)和广度优先搜索(BFS)。所谓DFS,就是沿着树的深度一直往下,一直到达一个叶子节点,然后再返回遍历剩余的节点。根据树的性质,树结构不存在环,因此遍历的时候不需要标记。如果在遍历一个图的时候,因为图中有环的存在,因此需要标记访问过的节点,以防止程序进入死循环。言归正传,树的DFS有三种方式,分别为:前序遍历,中序...

2019-08-30 10:31:42

AQS详解

AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的protected方法,这些方法定义了state是如何被获取或释放的。鉴于此,本类中的其他方法执行所有的排队和阻塞机制。子类...

2019-08-22 16:14:35

CAS初识

一、CAS概念与原理 CAS,全称Compare And Swap(比较与交换),解决多线程并行情况下使用锁造成性能损耗的一种机制。  实现思想 CAS(V, A, B),V为内存地址、A为预期原值,B为新值。如果内存地址的值与预期原值相匹配,那么将该位置值更新为新值。否则,说明已经被其他线程更新,处理器不做任何操作;无论哪种情况,它都会在 CAS 指令之前返回该位置的值。而我...

2019-08-21 18:00:54

Redis 的过期策略都有哪些?手写一下 LRU 代码实现?

面试题redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?面试官心理分析如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责?常见的有两个问题:往 redis 写入的数据怎么没了?可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,...

2019-08-21 17:55:56

查看更多

勋章 我的勋章
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。