Linux上安装rabbitmq遇到的一些问题

在安装elixir的时候erlang,安装了错误的包

错误记录如下:

1
2
{"init terminating in do_boot",{'cannot get bootfile','no_dot_erlang.boot'}}
init terminating in do_boot ({cannot get bootfile,no_dot_erlang.boot})

此时的错误是在安装erlang的时候安装了错误的erlang,正确的需要安装的是esl-erlang,详情如下:

The “esl-erlang” package is a file containg the complete installation: it includes the Erlang/OTP platform and all of its applications. The “erlang” package is a frontend to a number of smaller packages. Currently we support both “erlang” and “esl-erlang”. Note that the split packages have multiple advantages:
seamless replacement of the available packages,
other packages have dependencies on “erlang”, not “esl-erlang”,
if your disk-space is low, you can get rid of some unused parts; “erlang-base” needs only ~13MB of space.

阅读更多

字符串数组组成最小的数字

字符串数组拼接出一个最小的数字

记得在之前的一个面试中遇到了这个算法题, 但是当时没怎么想好如何判断两个字符串之间的大小,比如 23223 之间,其组合起来绝对是 23 大于 223,所以 223是需要放在前面的。

思路

其实可以将两个字符串相加,例如 22323 < 23223 ,所以 223 是需要放在 23 前面的,下面就是代码.

代码

阅读更多

关于Leetcode上判断位数的解法

在Leetcode上有一道算法题目判断最后一位是不是一位的,题目的意思是当在一个数组中如果存在10或者00,那么这个就是一个连续的。这个数组的最后一位永远都是0

We have two special characters. The first character can be represented by one bit 0. The second character can be represented by two bits (10 or 11).
Now given a string represented by several bits. Return whether the last character must be a one-bit character or not. The given string will always end with a zero.

思路:

刚开始错误的理解题目的意思了,导致一直在纠结数组的最后两位和三位,后来看了答案之后觉得自己的思路没有想到电子上,所以在此记录一下。

解法一:

阅读更多

对数据库事物的理解

什么是事物

事物通俗的来讲就是就是一组操作事件,可以类比于Java里面的原子操作。在一个事物中,要么全部成功,要么就是全部失败。

mysql中的事物

在Mysql的innodb中,事物的默认级别是 可重复读,在该级别下,事物可能出现幻读。出现幻读的情况是该引擎为行级锁,导致mysql在进行一个事物的时候只会锁定与该事物有关的几行。

示例如下:

阅读更多

leetcode求二叉树的节点最小绝对值

二叉树的中序遍历

题目如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes.

Example:

Input:

1
\
3
/
2

Output:
1

Explanation:
The minimum absolute difference is 1, which is the difference between 2 and 1 (or between 2 and 3).

意思就是需要求出一个二叉树中绝对值最小的值。

刚开始的第一个想法就是递归,然后比较当前节点和其左右两个节点的值,但是发现有一个缺陷就是如果一个根节点是3,其左节点是10,10的右节点是4,那么最小的值便是1,然后通过递归只能是 10-3,10-4 。所以当时就放弃了

阅读更多

leetcode上一道求出数组前三大的数字

题目如下:

1
2
3
4
5
6
Given scores of N athletes, find their relative ranks and the people with the top three highest scores, who will be awarded medals: "Gold Medal", "Silver Medal" and "Bronze Medal".

Input: [5, 4, 3, 2, 1]
Output: ["Gold Medal", "Silver Medal", "Bronze Medal", "4", "5"]
Explanation: The first three athletes got the top three highest scores, so they got "Gold Medal", "Silver Medal" and "Bronze Medal".
For the left two athletes, you just need to output their relative ranks according to their scores.

也就是一个乱序的数组,然后将数组中的前三大的数组换成指定的字符串。其中有一个解法是比较有新意的,其思路如下:

另外再开辟一个数组,然后数组的长度是原数组中数字最大的那个值,那么在进行遍历的时候,新建的数组中最后三位肯定是最大的,然后依次将其原索引找出来即可。

具体的代码如下:

阅读更多

maven和json以及spring的一些问题

maven和IDEA的一个问题

在 IDEA 中可以正常使用maven的一些命令来进行 clean 和 complime ,但是在使用IDEA的build功能时一直提示某些包找不到,解决办法:
执行 mvn clean 命令清除缓存,然后删除 .idea 这个文件夹中的文件

如果还是解决不了则可以直接换一个 maven ,最好的解决办法则是每一个项目,一个 maven。

阿里的Json包和对象之间的转换

今天有一个新的需求是将一个 Json 字符串转换成一个Json对象,此时可以调用
JSON.parseObject( new TypeReference(XXX),json串)来讲一个 Json 字符串转为一个对象

阅读更多

maven下载快照的问题

今天在使用maven下载一个快照文件的时候,只在 settings.xml 文件中配置了镜像源,并没有配置 release 版本和 snapshoot 版本,所以就导致了在下载快照文件的时候一直出现问题:
Missing artifact 大意就是说找不到这个jar的pom文件啥的,然后看了下本地的仓库,也并没有看到下载的文件夹。

解决办法:

pom.xml 中设置快照的下载地址,配置如下:

1
2
3
4
5
6
7
8
9
10
<repositories>
<repository>
<id>仓库的ID</id>
<!-- <name>Spring Milestones</name> --> 如果没有可以忽略
<url>https://repo.spring.io/libs-milestone</url> 快照仓库的URL
<snapshots>
<enabled>true</enabled> 打开镜像
</snapshots>
</repository>
</repositories>

最后解决了,如果为了方便,其实可以在 settings.xml 中直接配置,以减少后期多个pom.xml配置的麻烦

阅读更多

leetcode上两道比较好的BFS和DFS题目

首先是Leetcode上两道比较好的一个题目,分别如下:

  • https://leetcode.com/problems/letter-case-permutation/description/ Letter Case Permutation
  • https://leetcode.com/problems/max-area-of-island/description/ Max Area of Island

关于字符串的那一题便是将一个字符串里面的任意一个字符进行大小写的变换,此题有两种解法,一种是 BFS 按照字符窜中的字符遍历,将其变成大小写,然后存入栈中,最后便每一次向后迭代,然后再存入即可。另一种则是 DFS ,通过一种不断递归的方式来进行大小写的变换的,和爬楼梯的那个算法极其类似

字符串

字符串的BFS

阅读更多

SpringCloud配置中心的使用

在实际的开发过程中,很可能会涉及到很多的开发环境,常见的例如 dev , product 等,在使用SpringCloud的时候可以通过配置中心微服务,结合 Git 管理工具实现配置的集中式管理。

配置中心

config配置中心的yml文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
spring:
application:
name: sc-config
cloud:
config:
server:
git:
uri: ${GitAddress:https://gitee.com/somersames/spring-cloud-demo-config}
search-paths: ${GitPath:dev}
eureka:
client:
service-url:
defaultZone: http://${EurekaHost:localhost}:${EurekaPort:8081}/eureka/
server:
port: 8888

这里的 ${A:B} 配置表示的是如果 A 获取不到就取 B 的值。
search-paths 则是代表从哪个文件夹中获取配置文件,可以使用 , 来进行分割。
然后在启动类中添加如下几个注解,一个配置中心的微服务便开启了。

阅读更多