自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 Nginx+FastDFS分布式文件系统搭建及测试

**背景:**在集群部署环境下,随着团队发展,出现瓶颈:服务器磁盘有上限,不够用出现单点故障因此,创建一个分布式文件管理系统的新架构,希望有两个特点:容量能够水平扩展服务之间能够实现负载均衡FastDFS是最快的分布式文件系统,主要用来进行文件管理。其功能主要有:(1)文件存储(2)文件同步(3)文件访问(上传和下载等) 解决了大容量存储了负载均衡的问题。FastDFS原理图:FastDFS服务端有两个角色:跟踪器(Tracker)和存储节点(storage):跟踪器主要做调

2020-10-20 10:52:02 2641 9

原创 SpringBoot整合RabbitMQ

一.RabbitMQ介绍RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。RabbitMQ是一种消息中间件,用于处理来自客户端的异步消息。服务端将要发送的消息放入到队列池中。接收端可以根据RabbitMQ配置的转发机制接收服务端发来的消息。RabbitMQ依据指定的转发规则进行消息的转发、缓冲和持久化操作,主要用在多服务器间或单服务器的子系统间进行通信,是分布式系统

2021-01-20 16:14:39 1155

原创 消息中间件原理及Linux环境下消息中间件RabbitMQ的安装配置

一.消息中间件原理简介:1.什么是消息队列?消息队列,一般我们会简称它为MQ(Message Queue),先看队列Queue,这是一种先进先出的数据结构,一种只允许在一端进行插入,在另一端进行删除的线性表结构。运行插入的一端叫队尾(rear),允许删除的一端叫队头(font)。消息队列可以简单理解为:把要传输的数据放在队列中。其中:生产者:把数据放到消息队列;消费者:从消息队列里边取数据。2.为什么要用消息队列?解耦如图所示,将系统A的userId写到消息队列中,这样系统A就

2021-01-13 16:04:36 407

原创 Leetcode——全排列系列问题

一.当全排列没有重复数字时:给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路:看到排列问题,首先想到回溯算法,此题解题思路如下:说明:对每一次遍历的数,我们需要给它设置一个状态变量used,方便判断其是否使用过;使用深度优先遍历有「回头」的过程,在「回头」以后, 状态变量需要设置成为和先前一样(false),因此在回到上

2020-12-15 09:47:59 458

原创 搭建搜索服务工程:SpringBoot整合solr

一.solr创建自定义field如图所示,当程序从solr索引库进行搜索时,索引库需要先与数据库进行数据同步操作。因此,需要创建一些field属性字段与数据库表中的属性进行对应。在linux中对solrcore的conf目录下的managed-schema文件进行配置:(1)cd /usr/local/solrhome/solr_core1/conf(2)vim managed-schema加入如下业务域:<!--配置商品信息的field --> <!--业务域--&

2020-12-10 22:16:43 431

原创 solr安装IKAnalyzer中文分词器以及实现扩展词典功能

一.安装IKAnalyzer中文分词器先下载solr7版本的ik分词器,下载地址:IKAnalyzer下载使用Xftp将IKAnalyzer的ik-analyzer-solr7-7.x.jar包上传到/usr/local/solr/tomcat8/webapps/solr7/WEB-INF/lib目录下:将IKAnalyzer.cfg.xml扩展配置文件和stopword.dic文件上传到/usr/local/solr/tomcat8/webapps/solr7/WEB-INF/clas

2020-12-08 22:11:33 791 1

原创 创建solr_core

首先,在当前solrhome下创建一个新目录solr_core1:mkdir solr_core1将基础配置文件复制到所创建的solr_core1文件夹中(基础配置文件在solrhome/configsets/_default下的conf中):cd /usr/local/solrhome/configsets/_defaultcp -r conf /usr/local/solrhome/solr_core1在solr的web界面添加core:通过tomcat访问solr界面,然后点击Core .

2020-12-08 15:45:50 175 1

原创 Leetcode——跳跃问题II

题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置思路:考虑使用正向最大查找法,我们从当前i出发,i+num[i]表示能到达的最远位置,不妨设为e

2020-12-07 11:13:08 333

原创 Linux环境下在tomcat8容器上部署solr搜索引擎服务器

一.Solr的定义Solr是一个独立的企业级搜索应用服务器,它是用Java编写、运行在Servlet容器(如Apache Tomcat或Jetty)上的一个独立的全文搜索引擎。它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。二.程序与solr的交互流程图如上图所示:将solr.war(solr4版本后是solr-webapp下的webapp)包放在

2020-12-03 16:24:37 270

原创 Ajax访问跨域资源的解决方案

一.Ajax介绍Ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。Ajax=异步JavaScript和XML (标准通用标记语言的子集)。通过在后台与服务器进行少量数据交换, Ajax可以使用网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新(无刷新技术)。传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面。二.Ajax的同域调用复习如下图所示:

2020-11-26 21:05:30 484

原创 Springboot使用devtools方式实现热部署配置

一.实现原理:pring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart Cl

2020-11-24 16:45:34 244

原创 Leetcode——组合总和问题

题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7], [2,2,3]]示例 2:输入:candidates = [2,3,5], tar

2020-11-22 17:13:37 279 1

原创 Leetcode——有效的数独问题

题目:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,".",".",".","."],[“6”,".",".",“1”,“9”,“5”,".",".","."

2020-11-18 14:52:01 193

原创 Leetcode——下一个排列问题

题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路:首先,从右往左进行遍历,找到第一个i个位置满足条件nums[i]<num[i+1],记下位置i。接着,再次从右往左进行遍历,找到满足当前值&g

2020-11-12 21:57:45 113

原创 SpringBoot+fastDFS+Nginx实现分布式文件上传整合实例

1.加入fastdfs依赖:<!-- https://mvnrepository.com/artifact/com.github.tobato/fastdfs-client --><dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.27.2</

2020-11-11 10:34:49 651

原创 Leetcode——实现 strStr()问题

题目:实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例2:输入: haystack = “aaaaa”, needle = “bba”输出: -1思路:我们可以采用substring方法,依次对haystack的窗口字

2020-11-02 22:08:09 148

原创 Leetcode——删除排序数组中重复项问题

题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1,2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数

2020-11-02 21:01:48 521

原创 Leetcode——两两交换链表中节点问题

题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100思路:因为是两两交换的问题,这题我们可以采用迭代方式来实现。

2020-11-02 10:26:10 259

原创 Leetcode——合并K个升序链表问题

题目:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists = []

2020-10-27 21:39:09 386

原创 Leetcode——括号生成问题

题目:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]思路:我们可以考虑采用回溯法来做这道题目,通过跟踪左、右括号的数目来放括号,并进行回溯。如果左括号数量不大于 n,我们可以放一个左括号。如果右括号数量小于左括号的数量,我们可以放一个右括号。在当前状态穷尽时,返回到上一状态。最后当左右括号数目都为0时,将

2020-10-27 16:16:52 178

原创 Leetcode——合并两个有序链表问题

题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:这题可以采用迭代思想解决,每次判断L1和L2的节点大小,当l1.val<l2.val时,添加L1,否则添加L2.因此,我们首先设置prehead节点,其初始位置位于链表头节点head之前,接下来当L1与L2节点皆不为空时,进行L1和L2

2020-10-26 23:21:23 276

原创 Leetcode——删除链表的倒数第N个节点问题

题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。思路:因为要删除链表中的倒数第n个节点,可以考虑转化为stack栈处理,栈有先进后出原则,因此不必遍历求出原链表的总长度,只需从栈顶依次抛出节点。首先,设置一个哑节点dummy,其next指针指向链表的头节点dum

2020-10-26 19:52:02 188

原创 Leetcode——四数之和问题

题目:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0,

2020-10-24 14:57:11 714 3

原创 Leetcode——最接近的三数之和问题

题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。思路:总体思路与上一篇中三数之和一致,依旧是采用排序+双指针的思路。要求a+b+c的和与target最接近,那么令x=a+b+c-tar

2020-10-22 17:05:10 179

原创 Leetcode——三数之和问题

题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]思路:首先,我们用Arrays.sort(nums)方法对nums数组进行从小到大排序。例如, [-1, 0, 1, 2

2020-10-22 15:18:56 398

原创 SpringBoot+Dubbo的注解方式整合实例

1.在linux中各个包的bin目录下启动zookeeper注册中心,monitor监控中心和tomcat,命令如下:(1)zookeeper:./zkServer.sh start(2) monitor:./server.sh start(3)tomcat:./startup.shSpringBoot-dubbo-provider配置: 2.在ideal中创建springboot-dubbo-provider的spring包,在provider的pom文件中引入如下依赖: <depe

2020-10-07 17:15:56 853 1

原创 Java中int类型与char类型相互转化

1.int转化为char: //int转化为char int m = 7; char n = (char) (m + '0'); System.out.println("int类型的" + m + "转化为char类型:" + n);结果:2.char转化为int: //char转化为int char x = 'a'; int y = x - '0'; System.out.println("c

2020-09-29 20:00:36 991

原创 Dubbo分布式框架实战

Dubbo分布式框架实战Dubbo:2011年阿里巴巴开源的分布式服务框架。三个主要功能:(1)远程接口调用:Dubbo提供了基于高性能接口的RPC,对用户是透明的。(2)负载均衡和容错:Dubbo支持开箱即用的多种负载平衡策略,可感知下游服务状态以减少总体延迟并提高系统吞吐量。(3)服务注册和服务发现:Dubbo支持多个服务注册表,可以立即检测在线/离线服务。Dubbo架构:Provider:暴露服务的服务提供者Consumer:调用远程服务的服务消费者Registry:服务注册与发现

2020-09-29 17:03:05 391

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除