Maven的简单使用
简介Maven 翻译为”专家”、”内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目。
Maven环境配置要求Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK。
如果你还未安装 JDK,可以参考我们的 Java 开发环境配置。
系统要求
项目
要求
JDK
Maven 3.3 要求 JDK 1.7 或以上 Maven 3.2 要求 JDK 1.6 或以上 Maven 3.0/3.1 要求 JDK 1.5 或以上
内存
没有最低要求
磁盘
Maven 自身安装需要大约 10 MB 空间。除此之外,额外的磁盘空间将用于你的本地 Maven 仓 ...
hexo部署服务器之配置HTTPS
前提首先我们要有一台自己的服务器,并且部署到了我们的服务器中,通过nginx转发访问。详细部署过程可以看Hexo部署到云服务器
申请SSL证书首先我们要拥有一个域名。本文使用的是腾讯云注册的域名。接着申请免费的SSL域名证书。
腾讯云首页登录后搜索SSL(其他网站类似)
这是我申请到的www.kylin.show的ssl证书也就是现在这个博客地址的证书。
接下来我们点击申请免费证书进行申请
填写相关的信息。通用名称我填写的是www.kylin.show所以访问这个网址是有证书的。你申请其他的二级域名(例如:blog.kylin.show)也是可以的,记得配置DNS解析到服务器上即可。
之后点击下一步。验证域名即可
申请成功之后,等待验证。验证成功之后就会出现以下画面
Nginx 服务器证书安装SSL证书申请成功之后,将其文件点击下载到本地上。
文件名是申请SSL证书的域名。解压后可得
我们使用的Nginx服务器,点击Nginx文件夹。可以看到.key证书文件和.crt私钥文件
接着我们需要通过Xshell6连接到我们的服务器上
进入到我们的nginx文件目录中。 ...
Java多线程详解
简介
看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只做了一件时间。
充分利用道路,加入多个车道
在操作系统中运行的程序就是进程。一个进程可以有多个线程,如视频中同时听声音,看图像,看弹幕等等。
程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。进程则是执行程序的一次执行过程,是一个动态的概念。是系统资源分配的单位。通常一个进程中可以包含若干个线程,一个进程中至少有一个线程(main线程)。线程是CPU调度和执行的单位。
很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。如果模拟出来的多线程,即在一个cpu的情况下,在同一时间点,cpu只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。
每个线程在自己的工作区间内交互,内存控制不当会造成数据不一致
线程创建
继承Thread类
线程不一定立即执行,CPU安排调度
执行顺序是主线程调用线程之后不一定立即执行,由CPU安排调度。安排调度后是两线程个随机交叉执行
1234567891011121314151617181920212223242526//创建线程方式 ...
Elasticsearch概述和安装
DougCutting1998年9月4日,Google公司在美国硅谷成立。正如大家所知,它是一家做搜索引擎起家的公司。
无独有偶,一位名叫Doug Cutting的美国工程师,也迷上了搜索引擎。他做了一个用于文本搜索的函 数库(姑且理解为软件的功能组件),命名为Lucene。
Lucene是用JAVA写成的,目标是为各种中小型应用软件加入全文检索功能。因为好用而且开源(代码公 开),非常受程序员们的欢迎。 早期的时候,这个项目被发布在Doug Cutting的个人网站和SourceForge(一个开源软件网站)。后 来,2001年底,Lucene成为Apache软件基金会jakarta项目的一个子项目。
2004年,Doug Cutting再接再励,在Lucene的基础上,和Apache开源伙伴Mike Cafarella合作,开发 了一款可以代替当时的主流搜索的开源搜索引擎,命名为Nutch。
Nutch是一个建立在Lucene核心之上的网页搜索应用程序,可以下载下来直接使用。它在Lucene的基础 上加了网络爬虫和一些网页相关的功能,目的就是从一个简单的站内检索推广到全球网 ...
Redis的缓存穿透和雪崩
服务的高可用问题在这里我们不会详细的区分析解决方案的底层!
Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一 些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据 的一致性要求很高,那么就不能使用缓存。
另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。
请求数据时先从缓存中查询,如果缓存没有就去数据库中查询
缓存穿透概念
缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中(秒杀),于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。
解决方案
布隆过滤器布隆过滤器是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,从而避免了对底层存储系统的查询压力
缓存空对象当存储层不命中后,即使返回的空对象也将其缓存起来,同时会设置一个过期时间,之后再访 ...
Redis哨兵模式
概述主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工 干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑 哨兵模式。Redis从2.8开始正式提供了Sentinel(哨兵) 架构来解决这个问题。
谋朝篡位的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独 立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
这里的哨兵有两个作用
通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服 务器,修改配置文件,让它们切换主机。
然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。 各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
假设主服务器宕机,哨兵1先 ...
Redis主从复制
概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点 (master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。 Master以写为主,Slave 以读为主。
默认情况下,每台Redis服务器都是主节点; 且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
主从复制的作用主要包括:
数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务 的冗余。
负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务 (即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写 少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
高可用(集群)基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复 制是Redis高可用的基础。
...
Redis发布订阅
Redis发布订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
订阅/发布消息图: 第一个:消息发送者, 第二个:频道 第三个:消息订阅者
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
Redis 发布订阅命令下表列出了 redis 发布订阅常用命令:
序号
命令及描述
1
PSUBSCRIBE pattern [pattern …] 订阅一个或多个符合给定模式的频道。
2
[PUBSUB subcommand [argument [argument …]]](https://www.runoob.com/redis/pub-sub-pubsub.html) 查看订阅与发布系统状态。
3
PUBLISH channel message 将信息发 ...
Redis持久化
Redis持久化Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中 的数据库状态也会消失。所以 Redis 提供了持久化功能!
RDB(Redis DataBase)什么是RDB?
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快 照文件直接读到内存里。
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程 都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。 这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那 RDB方式要比AOF方式更加的高效。
RDB的缺点是最后一次持久化后的数据可能丢失。我们默认的就是 RDB,一般情况下不需要修改这个配置! 有时候在生产环境我们会将这个文件进行备份! rdb保存的文件是dump.rdb 都是在我们的配置文件中快照中进行配置的!
触发机制save的规则满足的情况下,会自动触发rdb规则
执行 flushall 命令,也 ...
Redis配置文件Redis.conf详解
Redis 配置Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf(Windows 名为 redis.windows.conf)。
你可以通过 CONFIG 命令查看或设置配置项。
语法Redis CONFIG 命令格式如下:redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME实例1234redis 127.0.0.1:6379> CONFIG GET loglevel1) "loglevel"2) "notice"
使用 * 号获取所有配置项:
实例1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031 ...