一、引入   先来看一个实际问题:  编写的五子棋程序中,有存盘退出和续上盘的功能      如上图,0表示没有棋子,1表示黑色棋子,2表示蓝色棋子 问题分析:因为该二维数组很多值是默认值0,因此记录了很多没有意义的数据。 解决方案:用稀疏数组代替二维数组   二、稀疏数组 基本介绍:当一
  前面我们分析了AQS的基本原理,然后也试着基于AQS实现了一个可重入的锁了,现在我们再来看看官方的ReentrantLock锁,这个锁是可重入的独占锁,也就是说同时只有一个线程可以获取该锁,而且这个线程还能继续尝试获取锁;   一.简单的使用   我们先根据ReentrantLock来
Spring Boot可以更为方便地搭建一个Web系统,之后服务器上部署也较为方便 此篇有些细节未提及,我新写了一篇Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建来进行补充,可以两篇博文进行参考 创建Spring boot项目 1
1.概述 Redis Sentinel是一个分布式系统,为Redis提供高可用性解决方案。可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来 接收关于主服务器是否下线的信息, 并使用投票协议(agre
这篇文章主要讲解实现线程的方式到底有几种?以及实现 Runnable 接口究竟比继承 Thread 类实现线程好在哪里? 实现线程是并发编程中基础中的基础,因为我们必须要先实现多线程,才可以继续后续的一系列操作。所以本文就先从并发编程的基础如何实现线程开始讲起。 实现线程的方式到底有几种?
  MyBatis是一个Java的持久层框架,和Hibernate一样,都是ORM框架。 MyBaits的前身是iBatis,可以将数据库中记录映射为pojo,是开发人员以面向对象编程的思想来操作数据库。 MyBatis消除了几乎所有的JDBC代码、参数的手动设置、对结果集的检索,开发人员
本文介绍通过java程序在excel中操作形状(图形)的方法,包括: 1. 添加形状(如设置形状类型/位置/大小、形状颜色填充(单色/渐变色/纹理/图片填充)、形状显示或隐藏、形状倾斜角度、添加文本到形状、形状阴影等) 2. 读取形状中的文本和图片 3. 删除形状(删除指定或全部形状)  
Redis详解(六)——哨兵机制 一、概述 Redis Sentinel是一个分布式系统,为Redis提供高可用性解决方案。可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来 接收关于主服务器是否下线的信息,
时间序列数据库(TSDB)初识与选择 本文作者由 MageByte 团队的 「借来方向」编写,关注公众号 给你更多硬核技术 背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词。大数据、人工智能、物联网、机器学习、商业智能、智能预警啊等等。 以前的系统,做数据可视化,信息管
网络原理是工程师的必须了解的计算机基础知识,先推荐下两本好书,《图解HTTP》和《图解TCP/IP》。 《图解TCP/IP》讲解网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,《图解HTTP》对HTTP协议进行了
Redis详解(七)——集群 ​Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用 ( HA ),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据分片(Data Sharding),不过同样可以实现HA,是官方当前推荐的方案。
Redis详解(八)——企业级解决方案 缓存预热 缓存预热就是系统上线后,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据! 缓存预热解决方案: 缓存雪崩 缓存雪崩就是在一个较短的时间内,缓存中较多的ke
原理 项目的数据库字典表是一个很重要的文档。通过此文档可以清晰的了解数据表结构及开发者的设计意图。 通常为了方便我都是直接在数据库中建表,然后通过工具导出数据字典。 在Mysql数据库中有一个information_schema库,它提供了访问数据库元数据的方式。 什么是元数据呢?就
  Vue.js 路由允许我们通过不同的 URL 访问不同的内容。通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 需要引入vue-router.js <script src="https://unpkg.com
  前面说了这个多,我们可以自己尝试实现一个同步器,我们可以简单的参考一下ReentrantLock这个类的实现方式,我们就简单的实现一个不可重入的独占锁吧!   一.简单分析ReentrantLock的结构    下图所示,直接实现了Lock这个接口,然后定义了一个内部类继承AQS,暂时
把自己的项目发布到maven仓库并在maven和gradle中开始使用 上一条博客中提到的日志打印项目总算是维护的差不多了, 不过现在使用它还是打成jar包放到其他项目内, 所以决定把项目传到maven仓库内, 使用时只需要配置一下即可了 我使用的是阿里云的maven仓库服务, 如何购买阿

推荐文章