猫宁i

趁着年轻,好好生活,用心折腾。


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 书单

  • 搜索

大话数据结构(一):那些年面试常见的 Java 排序算法

发表于 2019-05-23 | 分类于 数据结构 | 阅读次数:
本文字数统计: 7.9k | 阅读时长 ≈ 7 分钟

前言

排序就是将一组对象按照某种逻辑顺序重新排列的过程。排序在数据处理和现代科学计算中有很重要的地位,应用于很多领域。排序问题一直是程序员工作与面试的重点,今天特意整理研究下与大家共勉。本文将介绍一下常见的排序算法以及 Java 代码实现,如有问题,欢迎指正!

阅读全文 »

分布式设计之美(一):主流分布式锁实现方案

发表于 2019-04-03 | 分类于 分布式 | 阅读次数:
本文字数统计: 25k | 阅读时长 ≈ 23 分钟

前言

目前很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式系统的 CAP 理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项”。所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。

针对分布式锁的实现,目前比较常用的有以下几种方案:1、基于数据库实现分布式锁;2、基于缓存 Redis 实现分布式锁;3、基于 Zookeeper 实现分布式锁。下面我将谈谈它们各种的实现方案。

阅读全文 »

Git 在团队中的最佳实践(一):Git 备忘清单

发表于 2019-03-22 | 分类于 Git | 阅读次数:
本文字数统计: 11k | 阅读时长 ≈ 10 分钟

前言

Git 是一个免费并且开源的分布式版本控制系统,旨在快速高效地处理从小到大所有项目的版本管理。Git 是目前最流行的版本管理工具,目前绝大部分公司都是使用 Git 作为项目的版本管理工具。目前最火的开源社区 Github,就是基于 Git 版本控制系统,所以掌握 Git 技能很重要。由于 Git 开发效率高、团队协作方便,现在很多 IDE 都集成了 Git,并且提供一些相关的图形化操作。也有很多很优秀,专门用来简化 Git 操作的 Git GUI 工具,例如 Sourcetree,Tortoise 等。我刚接触 Git 的时候,就是从 GUI 入手的,使用 Sourcetree 可视化版本控制工具进行操作。Sourcetree 底层也是对常用的 Git 命令进行封装实现的,傻瓜式操作,使用非常方便,但是我用完什么都不懂,Git 的内部原理也不易理解,决定在回头仔细学习一下 Git 命令行。学习完 Git 命令行后发现,命令行很好学,非常灵活,而且使用起来非常帅气。因此,直接 Git 命令,才是最灵活的操作。

本篇是我学习 Git 系列的开篇,主要讲述 Git 的基本概念和工作原理,然后介绍一下 Git 安装以及环境配置,最后探讨一下 Git 常用命令以及使用场景。

阅读全文 »

Redis 深度探险(二):Redis 深入之道

发表于 2019-03-01 | 分类于 Redis | 阅读次数:
本文字数统计: 11k | 阅读时长 ≈ 10 分钟

前言

在 Redis 系列的开篇文章中,我们对 Redis 概述以及 Redis 数据结构与对象进行了详细的讨论以及了解。经过上一篇文章的阅读,相信读者已经对 Redis 的内部结构有了大致了解,接下来我们继续深入了解 Redis 内部结构。

对于 Redis,相信大家对 “Redis 的持久化有哪几种方式?”、“Redis 的数据淘汰机制?” 、“Redis 的过期键淘汰策略?” 、“Redis 订阅与发布机制? ”、“Redis 主从复制的原理?” 等面试题目都不陌生,那么本文就从常见的 Redis 面试题目出发,带领大家深入了解 Redis。

阅读全文 »

Java 并发编程之美(四):深入剖析 ThreadLocal

发表于 2019-02-19 | 分类于 并发 | 阅读次数:
本文字数统计: 9.1k | 阅读时长 ≈ 8 分钟

前言

想必很多朋友对 ThreadLocal 并不陌生,而本人也在项目中应用到了 ThreadLocal,今天我们就来一起探讨下 ThreadLocal 的使用方法和实现原理。首先,本文先谈一下对 ThreadLocal 的理解,然后根据 ThreadLocal 类的源码分析了其实现原理和使用需要注意的地方,最后给出了 ThreadLocal 应用场景。

阅读全文 »

深入浅出集合框架(一):HashMap 的底层实现原理

发表于 2019-01-21 | 分类于 集合 | 阅读次数:
本文字数统计: 20k | 阅读时长 ≈ 19 分钟

前言

哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如 memcached)的核心其实就是在内存中维护一张大的哈希表,而 HashMap 的实现原理也常常出现在各类的面试题中,重要性可见一斑。随着 JDK(Java Developmet Kit)版本的更新,JDK 1.8 对 HashMap 底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合 JDK 1.7 和 JDK 1.8 的区别,深入探讨 HashMap 的结构实现和功能原理。

阅读全文 »

MySQL 进阶讲解(一):MySQL 索引原理

发表于 2018-12-21 | 分类于 MySQL | 阅读次数:
本文字数统计: 8.7k | 阅读时长 ≈ 8 分钟

前言

索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。索引在 MySQL 中也叫做“键”,存储引擎用于快速查找记录的一种数据结构,通过合理的使用数据库索引可以大大提高系统的访问性能。关于 MySQL 索引的好处,如果正确合理设计并且使用索引的 MySQL 是一辆兰博基尼的话,那么没有设计和使用索引的 MySQL 就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。接下来主要介绍在 MySQL 数据库中索引类型,以及如何创建出更加合理且高效的索引技巧。

阅读全文 »

Java8 那些事儿(四):增强的 Map 集合

发表于 2018-11-23 | 分类于 Java | 阅读次数:
本文字数统计: 7.8k | 阅读时长 ≈ 7 分钟

前言

在 Jdk 8 中 Map 接口提供了一些新的便利的方法。因为在本文中我所提到的所有 Map 方法都是以默认值方法的方式实现的,所以现有的 Map 接口的实现可以直接拥有这些在默认值方法中定义的默认行为,而不需要新增一行代码。本文涵盖的 Jdk 8 中引进的 Map 方法有:getOrDefault(Object, V),putIfAbsent(K, V),remove(Object, Object),replace(K, V),andreplace(K, V, V)。

阅读全文 »

Java 并发编程之美(三):异步执行框架 Eexecutor

发表于 2018-10-09 | 分类于 并发 | 阅读次数:
本文字数统计: 5.6k | 阅读时长 ≈ 5 分钟

前言

在 Java5 之后,并发编程引入了一堆新的启动、调度和管理线程的 API。Executor 框架便是 Java5 中引入的,其内部使用了线程池机制,它在 java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。Eexecutor 作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程解耦开发,基于生产者 - 消费者模式,其提交任务的线程相当于生产者,执行任务的线程相当于消费者,并用 Runnable 来表示任务,Executor 的实现还提供了对生命周期的支持,以及统计信息收集,应用程序管理机制和性能监视等机制。

Executor 包括:ThreadPoolExecutor,Executor,Executors,ExecutorService,CompletionService,Future,Callable 等。

阅读全文 »

Linux 工匠精神(二):理解 Linux 的处理器负载均值

发表于 2018-09-01 | 分类于 Linux | 阅读次数:
本文字数统计: 2.5k | 阅读时长 ≈ 2 分钟

前言

在 Linux 系统中,当系统响应缓慢时,一般会用 uptime 命令查看系统负载是否过高(w 命令和 top 命令也行)。而系统负载(System Load)也作为我们判断系统运行是否正常的一个非常重要的指标。

阅读全文 »
12345
猫宁i

猫宁i

趁着年轻,好好生活,用心折腾。
47 日志
16 分类
106 标签
RSS
Links
  • 我的镜像站
  • crossoverJie's Blog
  • Format's Notes
  • 渣博客
  • Sanarous
© 2017 – 2020 猫宁i | 博客全站字数: 655k
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Muse v7.0.1
0%