适配hexo
This commit is contained in:
parent
4dd1b5c84f
commit
f84f54dab6
@ -1,3 +1,6 @@
|
|||||||
|
---
|
||||||
|
layout: false
|
||||||
|
---
|
||||||
# technology-note
|
# technology-note
|
||||||
记录技术笔记
|
记录技术笔记
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-10-20-10-38-05"
|
id: "2018-10-20-10-38-05"
|
||||||
|
date: "2018-10-20-10-38-05"
|
||||||
title: "spring基础"
|
title: "spring基础"
|
||||||
headWord: "spring是为了解决企业级应用开发的复杂性而创建的,spring最根本的使命是:简化Java开发。为降低开发复杂性有以下四种关键策略。 "
|
|
||||||
tags: ["java", "spring"]
|
tags: ["java", "spring"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -29,6 +29,8 @@ categories:
|
|||||||
|
|
||||||
#### 3.声明 Bean
|
#### 3.声明 Bean
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
1. 最简单
|
1. 最简单
|
||||||
|
|
||||||
`<bean id="bean1" class="com.example.Class"/>`
|
`<bean id="bean1" class="com.example.Class"/>`
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-10-21-10-38-05"
|
id: "2018-10-21-10-38-05"
|
||||||
|
date: "2018-10-21-10-38-05"
|
||||||
title: "spring之最小化XML配置"
|
title: "spring之最小化XML配置"
|
||||||
headWord: "spring是为了解决企业级应用开发的复杂性而创建的,但是最初的Spring在随着应用程序的规模越来越大的情况下,xml配置文件也随之膨胀,变得不便于阅读与管理,随后就有了一系列的手段来减少xml配置,直到一行都没有"
|
|
||||||
tags: ["java", "spring"]
|
tags: ["java", "spring"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -23,6 +23,8 @@ categories:
|
|||||||
|
|
||||||
  contructor 自动装配和 byType 有一样的局限性,当发现多个 Bean 匹配某个构造器入参时,Spring 不会尝试选择其中一个;此外,如果一个类有多个构造器都满足自动装配的条件,Spring 也不会猜测哪个更合适使用。
|
  contructor 自动装配和 byType 有一样的局限性,当发现多个 Bean 匹配某个构造器入参时,Spring 不会尝试选择其中一个;此外,如果一个类有多个构造器都满足自动装配的条件,Spring 也不会猜测哪个更合适使用。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
### 2、默认自动装配
|
### 2、默认自动装配
|
||||||
|
|
||||||
  如果需要为 Spring 应用上下文中的每个 Bean(或者其中的大多数)配置相同的 autowire 属性,可以在根元素\<beans>上增加一个 default-autowire 属性,默认该属性设置为 none。该属性只应用于指定配置文件中的所有 Bean,并不是 Spring 上下文中的所有 Bean。
|
  如果需要为 Spring 应用上下文中的每个 Bean(或者其中的大多数)配置相同的 autowire 属性,可以在根元素\<beans>上增加一个 default-autowire 属性,默认该属性设置为 none。该属性只应用于指定配置文件中的所有 Bean,并不是 Spring 上下文中的所有 Bean。
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
id: "2018-10-22-10-38-05"
|
id: "2018-10-22-10-38-05"
|
||||||
|
date: "2018-10-22-10-38-05"
|
||||||
title: "spring之面向切面"
|
title: "spring之面向切面"
|
||||||
headWord: "Spring的基础是IOC和AOP,前面两节对IOC和DI做了简单总结,这里再对AOP进行一个学习总结,Spring基础就算有一个初步了解了。"
|
|
||||||
tags: ["java", "spring"]
|
tags: ["java", "spring"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
- spring学习"
|
- "spring学习"
|
||||||
---
|
---
|
||||||
|
|
||||||
  Spring 的基础是 IOC 和 AOP,前面两节对 IOC 和 DI 做了简单总结,这里再对 AOP 进行一个学习总结,Spring 基础就算有一个初步了解了。
|
  Spring 的基础是 IOC 和 AOP,前面两节对 IOC 和 DI 做了简单总结,这里再对 AOP 进行一个学习总结,Spring 基础就算有一个初步了解了。
|
||||||
@ -24,6 +24,8 @@ categories:
|
|||||||
|
|
||||||
  切面提供了取代继承和委托的另一种选择,而且更加清晰简洁。在面向切面编程时,我们任然在一个地方定义通用功能,但是我们可以通过声明的方式定义这个功能以何种方式在何处应用,而无需修改受影响的类,受影响类完全感受不到切面的存在。
|
  切面提供了取代继承和委托的另一种选择,而且更加清晰简洁。在面向切面编程时,我们任然在一个地方定义通用功能,但是我们可以通过声明的方式定义这个功能以何种方式在何处应用,而无需修改受影响的类,受影响类完全感受不到切面的存在。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
## 二.AOP 常用术语
|
## 二.AOP 常用术语
|
||||||
|
|
||||||
  下面是 AOP 中常用的名词。
|
  下面是 AOP 中常用的名词。
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-08-13-10-38"
|
id: "2018-08-13-10-38"
|
||||||
|
date: "2018-08-13-10-38"
|
||||||
title: "springboot搭建"
|
title: "springboot搭建"
|
||||||
headWord: "前面的博客有说到spring boot搭建见另一篇博文,其实那篇博文还没写,现在来填个坑。我们使用spring initializr来构建,idea和eclipse都支持这种方式,构建过程类似,这里以idea为例,详细记录构建过程。"
|
|
||||||
tags: ["java", "spring","springboot","idea"]
|
tags: ["java", "spring","springboot","idea"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -30,6 +30,8 @@ next
|
|||||||
|
|
||||||
这里我们选择 web 搭建一个简单的 REST 风格 demo。然后 next。
|
这里我们选择 web 搭建一个简单的 REST 风格 demo。然后 next。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
#### 4.设置项目存放地址
|
#### 4.设置项目存放地址
|
||||||
|
|
||||||
![设置项目存放地址](https://raw.githubusercontent.com/FleyX/files/master/blogImg/springboot%E6%90%AD%E5%BB%BA/20190107100653.png)
|
![设置项目存放地址](https://raw.githubusercontent.com/FleyX/files/master/blogImg/springboot%E6%90%AD%E5%BB%BA/20190107100653.png)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-08-20-10-38"
|
id: "2018-08-20-10-38"
|
||||||
|
date: "2018-08-20-10-38"
|
||||||
title: "springboot+security整合(1)"
|
title: "springboot+security整合(1)"
|
||||||
headWord: "javaee中的非常重要的一个安全认证框架,但是略微重量级,但是既然领导交代要学,那就学吧。。。"
|
|
||||||
tags: ["java", "spring","springboot","spring-security","security"]
|
tags: ["java", "spring","springboot","spring-security","security"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -18,6 +18,7 @@ categories:
|
|||||||
|
|
||||||
  建立 springboot2 项目,加入 security 依赖,mybatis 依赖
|
  建立 springboot2 项目,加入 security 依赖,mybatis 依赖
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
```xml
|
```xml
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-08-21-10-38"
|
id: "2018-08-21-10-38"
|
||||||
|
date: "2018-08-21-10-38"
|
||||||
title: "springboot+security整合(2)"
|
title: "springboot+security整合(2)"
|
||||||
headWord: "文接上篇,上一篇中登录验证都由security帮助我们完成了,如果我们想要增加一个验证码登录或者其它的自定义校验就没办法了,因此这一篇讲解如何实现这个功能。"
|
|
||||||
tags: ["java", "spring","springboot","spring-security","security"]
|
tags: ["java", "spring","springboot","spring-security","security"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -36,6 +36,8 @@ public class MyUsernamePasswordAuthentication extends UsernamePasswordAuthentica
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
##二、 将自定义登录配置到 security 中
|
##二、 将自定义登录配置到 security 中
|
||||||
  编写自定义登录过滤器后,configure Bean 修改为如下:
|
  编写自定义登录过滤器后,configure Bean 修改为如下:
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
id: "2018-08-22-10-38"
|
id: "2018-08-22-10-38"
|
||||||
|
date: "2018-08-22-10-38"
|
||||||
title: "springboot+security整合(3)"
|
title: "springboot+security整合(3)"
|
||||||
headWord: "文接上篇,上篇说了那个啥自定义校验的功能,这篇来学学如何自定义鉴权。感觉都定义到这个地步,都不太需要security框架了,再自己整整缓存方面的功能就是一个功能完成的鉴权模块了。"
|
tags: ["java", "spring", "springboot", "spring-security", "security"]
|
||||||
tags: ["java", "spring","springboot","spring-security","security"]
|
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
- "spring boot学习"
|
- "spring boot学习"
|
||||||
---
|
---
|
||||||
|
|
||||||
  这篇讲解如何自定义鉴权过程,实现根据数据库查询出的 url 和 method 是否匹配当前请求的 url 和 method 来决定有没有权限。security 鉴权过程如下:
|
  这篇讲解如何自定义鉴权过程,实现根据数据库查询出的 url 和 method 是否匹配当前请求的 url 和 method 来决定有没有权限。security 鉴权过程如下:
|
||||||
@ -53,6 +53,8 @@ public class MyGrantedAuthority implements GrantedAuthority {
|
|||||||
|
|
||||||
2. 编写 MyConfigAttribute 类,实现 ConfigAttribute 接口,代码如下:
|
2. 编写 MyConfigAttribute 类,实现 ConfigAttribute 接口,代码如下:
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public class MyConfigAttribute implements ConfigAttribute {
|
public class MyConfigAttribute implements ConfigAttribute {
|
||||||
private HttpServletRequest httpServletRequest;
|
private HttpServletRequest httpServletRequest;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-08-25-10-38"
|
id: "2018-08-25-10-38"
|
||||||
|
date: "2018-08-25-10-38"
|
||||||
title: "springboot整合WebSocket"
|
title: "springboot整合WebSocket"
|
||||||
headWord: "webSocket作为http单向连接的补充,实现了服务端,浏览器端的双向通信,还是有必要了解了解"
|
|
||||||
tags: ["java", "spring","springboot","WebSocket"]
|
tags: ["java", "spring","springboot","WebSocket"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -44,6 +44,7 @@ categories:
|
|||||||
<type>pom</type>
|
<type>pom</type>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
#### 2、注入 Bean
|
#### 2、注入 Bean
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-09-01-10-38"
|
id: "2018-09-01-10-38"
|
||||||
|
date: "2018-09-01-10-38"
|
||||||
title: "springboot整合Mybatis(xml和注解)"
|
title: "springboot整合Mybatis(xml和注解)"
|
||||||
headWord: "写的一手好sql就能玩转mybatis,入门难度相较于hibernate小得多。"
|
|
||||||
tag: ["java", "spring","springboot","mysql","mybatis","xml","注解"]
|
tag: ["java", "spring","springboot","mysql","mybatis","xml","注解"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -20,6 +20,8 @@ categories:
|
|||||||
|
|
||||||
其他依赖版本见下面 pom.xml:
|
其他依赖版本见下面 pom.xml:
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-09-05-10-38"
|
id: "2018-09-05-10-38"
|
||||||
|
date: "2018-09-05-10-38"
|
||||||
title: "springboot整合ActiveMQ(1)"
|
title: "springboot整合ActiveMQ(1)"
|
||||||
headWord: "稍大的项目中都会用到mq消息队列,so这个自然也是要学的,为啥是activeMQ呢?刚好目前的项目中用的就是这个拉。"
|
|
||||||
tags: ["java", "spring","springboot","消息队列","activeMQ"]
|
tags: ["java", "spring","springboot","消息队列","activeMQ"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -62,6 +62,8 @@ public class Config {
|
|||||||
|
|
||||||
![队列](https://raw.githubusercontent.com/FleyX/files/master/blogImg/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/20190107101745.png)
|
![队列](https://raw.githubusercontent.com/FleyX/files/master/blogImg/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/20190107101745.png)
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
  生产者 Producer.java 代码如下:
|
  生产者 Producer.java 代码如下:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-09-06-10-38"
|
id: "2018-09-06-10-38"
|
||||||
|
date: "2018-09-06-10-38"
|
||||||
title: "springboot整合ActiveMQ(2)"
|
title: "springboot整合ActiveMQ(2)"
|
||||||
headWord: "接着上文来说,这里来说如何实现activemq的主从备份"
|
|
||||||
tags: ["java", "spring","springboot","消息队列","activeMQ"]
|
tags: ["java", "spring","springboot","消息队列","activeMQ"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -43,6 +43,8 @@ categories:
|
|||||||
</bean>
|
</bean>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
####2、修改 activemq.xml
|
####2、修改 activemq.xml
|
||||||
|
|
||||||
  然后修改 conf->activemq.xml
|
  然后修改 conf->activemq.xml
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-09-10-10-38"
|
id: "2018-09-10-10-38"
|
||||||
|
date: "2018-09-10-10-38"
|
||||||
title: "springboot配置读写分离(Mybatis)"
|
title: "springboot配置读写分离(Mybatis)"
|
||||||
headWord: "近日工作任务较轻,有空学习学习技术,遂来研究如果实现读写分离。这里用博客记录下过程,一方面可备日后查看,同时也能分享给大家(网上的资料真的大都是抄来抄去,,还不带格式的,看的真心难受)。"
|
|
||||||
tags: ["java", "spring","springboot","mysql","主从备份","读写分离"]
|
tags: ["java", "spring","springboot","mysql","主从备份","读写分离"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -45,6 +45,8 @@ categories:
|
|||||||
|
|
||||||
![主库状态](https://raw.githubusercontent.com/FleyX/files/master/blogImg/%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB/20190107101953.png)
|
![主库状态](https://raw.githubusercontent.com/FleyX/files/master/blogImg/%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB/20190107101953.png)
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
- 从库配置
|
- 从库配置
|
||||||
|
|
||||||
同样先新增几行配置:
|
同样先新增几行配置:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-11-19-15-57-00"
|
id: "2018-11-19-15-57-00"
|
||||||
|
date: "2018-11-19-15-57-00"
|
||||||
title: "springCloud学习1(集中式配置管理)"
|
title: "springCloud学习1(集中式配置管理)"
|
||||||
headWord: "本篇主要用于记录如何在spring cloud中将服务配置与服务代码分离开来,通过向集中的配置服务请求获取某个微服务需要的配置。"
|
|
||||||
tags: ["spring-boot", "spring-cloud-config","git"]
|
tags: ["spring-boot", "spring-cloud-config","git"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -33,6 +33,8 @@ categories:
|
|||||||
|
|
||||||
  pom 主要依赖如下(篇幅原因列出主要内容,完整代码请到 github 上查看),spring boot 版本和 spring cloud 版本如下,之后不在赘述:
|
  pom 主要依赖如下(篇幅原因列出主要内容,完整代码请到 github 上查看),spring boot 版本和 spring cloud 版本如下,之后不在赘述:
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-11-22-15-57"
|
id: "2018-11-22-15-57"
|
||||||
|
date: "2018-11-22-15-57"
|
||||||
title: "springCloud学习2(服务发现)"
|
title: "springCloud学习2(服务发现)"
|
||||||
headWord: "在任何分布式架构中,都需要找到机器所在的物理地址,这个概念自分布式计算开始就已经存在,并且被正式称为服务发现,本篇是对服务发现的一个学习总结"
|
|
||||||
tags: ["spring-boot", "spring-cloud","eureka"]
|
tags: ["spring-boot", "spring-cloud","eureka"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -43,6 +43,8 @@ categories:
|
|||||||
|
|
||||||
  (4)如果在调用服务的过程中,服务调用失败,那么本地缓存将从服务发现层中刷新数据,再次尝试。
|
  (4)如果在调用服务的过程中,服务调用失败,那么本地缓存将从服务发现层中刷新数据,再次尝试。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
# 二、spring cloud 实战
|
# 二、spring cloud 实战
|
||||||
|
|
||||||
  使用 spring cloud 和 Netflix Eureka 搭建服务发现实例。
|
  使用 spring cloud 和 Netflix Eureka 搭建服务发现实例。
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-11-28-15-57-00"
|
id: "2018-11-28-15-57-00"
|
||||||
|
date: "2018-11-28-15-57-00"
|
||||||
title: "springCloud学习3(Netflix Hystrix弹性客户端)"
|
title: "springCloud学习3(Netflix Hystrix弹性客户端)"
|
||||||
headWord: "系统故障是不可避免的,分布式系统故障概率相比于单机系统更高,如何来应对故障是无法回避的一个难题,本篇是对客户端弹性模式的一个学习总结。"
|
|
||||||
tags: ["spring-boot", "spring-cloud","netflix-hystrix","熔断"]
|
tags: ["spring-boot", "spring-cloud","netflix-hystrix","熔断"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -33,6 +33,8 @@ categories:
|
|||||||
|
|
||||||
  本模式模仿的是电路中的断路器。有了软件断路器,当远程服务被调用时,断路器将监视这个调用,如果调用时间太长,断路器将介入并中断调用。此外,如果对某个远程资源的调用失败次数达到某个阈值,将会采取快速失败策略,阻止将来调用失败的远程资源。
|
  本模式模仿的是电路中的断路器。有了软件断路器,当远程服务被调用时,断路器将监视这个调用,如果调用时间太长,断路器将介入并中断调用。此外,如果对某个远程资源的调用失败次数达到某个阈值,将会采取快速失败策略,阻止将来调用失败的远程资源。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
- 后备(fallback)模式
|
- 后备(fallback)模式
|
||||||
|
|
||||||
  当远程调用失败时,将执行替代代码路径,并尝试通过其他方式来处理操作,而不是产生一个异常。也就是为远程操作提供一个应急措施,而不是简单的抛出异常。
|
  当远程调用失败时,将执行替代代码路径,并尝试通过其他方式来处理操作,而不是产生一个异常。也就是为远程操作提供一个应急措施,而不是简单的抛出异常。
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2019-01-03-19-19"
|
id: "2019-01-03-19-19"
|
||||||
|
date: "2019-01-03-19-19"
|
||||||
title: "springCloud学习4(Zuul服务路由)"
|
title: "springCloud学习4(Zuul服务路由)"
|
||||||
headWord: "像微服务这样的分布式架构中,需要确保跨多个服务调用的关键行为(如安全、日志记录、用户跟踪等)能够正常运行,这就需要一个服务网关来统一处理。"
|
|
||||||
tags: ["spring-boot", "spring-cloud","netflix-zuul","service-gateway"]
|
tags: ["spring-boot", "spring-cloud","netflix-zuul","service-gateway"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -41,6 +41,8 @@ categories:
|
|||||||
|
|
||||||
服务网关位于服务客户端和相应的服务实例之间。所有的服务调用(内部和外部)都应流经服务网关。
|
服务网关位于服务客户端和相应的服务实例之间。所有的服务调用(内部和外部)都应流经服务网关。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
## 2、功能
|
## 2、功能
|
||||||
|
|
||||||
  由于服务网关代理了所有的服务调用,**因此它还能充当服务调用的中央策略执行点(PEP)**,通俗的说就能能够在此实现横切关注点,不用在各个微服务中实现。主要有以下几个:
|
  由于服务网关代理了所有的服务调用,**因此它还能充当服务调用的中央策略执行点(PEP)**,通俗的说就能能够在此实现横切关注点,不用在各个微服务中实现。主要有以下几个:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2019-01-03-19-19"
|
id: "2019-01-03-19-19"
|
||||||
|
date: "2019-01-03-19-19"
|
||||||
title: "springCloud学习4(Spring-Cloud-Stream事件驱动)"
|
title: "springCloud学习4(Spring-Cloud-Stream事件驱动)"
|
||||||
headWord: "像微服务这样的分布式架构中,需要确保跨多个服务调用的关键行为(如安全、日志记录、用户跟踪等)能够正常运行,这就需要一个服务网关来统一处理。"
|
|
||||||
tags: ["spring-boot", "spring-cloud","spring-cloud-stream","kafka","事件驱动"]
|
tags: ["spring-boot", "spring-cloud","spring-cloud-stream","kafka","事件驱动"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -47,6 +47,8 @@ categories:
|
|||||||
|
|
||||||
  spring cloud 项目中可以通过 spring cloud stream 框架来轻松集成消息传递。该框架最大的特点是抽象了消息传递平台的细节,因此可以在支持的消息队列中随意切换(包括 Apache Kafka 和 RabbitMQ)。
|
  spring cloud 项目中可以通过 spring cloud stream 框架来轻松集成消息传递。该框架最大的特点是抽象了消息传递平台的细节,因此可以在支持的消息队列中随意切换(包括 Apache Kafka 和 RabbitMQ)。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
## spring cloud stream架构
|
## spring cloud stream架构
|
||||||
|
|
||||||
  spring cloud stream中有4个组件涉及到消息发布和消息消费,分别为:
|
  spring cloud stream中有4个组件涉及到消息发布和消息消费,分别为:
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
id: "2019-01-09-20-52"
|
id: "2019-01-09-20-52"
|
||||||
|
date: "2019-01-09-20-52"
|
||||||
title: "java线程池使用后到底要不要关闭"
|
title: "java线程池使用后到底要不要关闭"
|
||||||
headWord: "最近在开发中用到了java的线程池,然后就很疑惑这个线程池到底要不要手动关闭,感觉是要关闭的,但是没人强调线程池用完要关闭。so今天来试验下到底线程池用完要不要关闭"
|
tags: ["java", "线程池", "ThreadPoolExecutor"]
|
||||||
tags: ["java","线程池","ThreadPoolExecutor"]
|
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
- "java基础"
|
- "java基础"
|
||||||
---
|
---
|
||||||
|
|
||||||
**_本篇原创发布于:_** [java 线程池使用后到底要不要关闭](http://tapme.top/blog/detail/2019-01-09-20-52)
|
**_本篇原创发布于:_** [java 线程池使用后到底要不要关闭](http://tapme.top/blog/detail/2019-01-09-20-52)
|
||||||
@ -15,6 +15,8 @@ categories:
|
|||||||
**为避免引起误解被喷,特此说明下:下面的代码是为了验证 gc 在回收线程池对象时,线程池对象管理的线程是否会销毁掉。如下在循环中创建线程池是为了模拟线程池使用一次后不再使用的情况。
|
**为避免引起误解被喷,特此说明下:下面的代码是为了验证 gc 在回收线程池对象时,线程池对象管理的线程是否会销毁掉。如下在循环中创建线程池是为了模拟线程池使用一次后不再使用的情况。
|
||||||
虽然通常线程池都是作为全局变量使用,但是如果作为局部变量使用呢?使用完要不要手动关闭掉?**
|
虽然通常线程池都是作为全局变量使用,但是如果作为局部变量使用呢?使用完要不要手动关闭掉?**
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
# 直接上实验代码
|
# 直接上实验代码
|
||||||
|
|
||||||
```java
|
```java
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-09-22-15-57"
|
id: "2018-09-22-15-57"
|
||||||
|
date: "2018-09-22-15-57"
|
||||||
title: "java导出EXCEL文件"
|
title: "java导出EXCEL文件"
|
||||||
headWord: "最近在java上做了一个EXCEL的导出功能,写了一个通用类,在这里分享分享,该类支持多sheet,且无需手动进行复杂的类型转换."
|
|
||||||
tags: ["reflex", "java","excel","SXSSFWorksheet"]
|
tags: ["reflex", "java","excel","SXSSFWorksheet"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -40,6 +40,8 @@ categories:
|
|||||||
|
|
||||||
其中的 field1,field2,field3 为对象中的属性名,参数 1,参数 2,参数 3 为列名,实际上这个指定了列的名称和这个列用到数据对象的哪个属性。
|
其中的 field1,field2,field3 为对象中的属性名,参数 1,参数 2,参数 3 为列名,实际上这个指定了列的名称和这个列用到数据对象的哪个属性。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
## 二、怎么用
|
## 二、怎么用
|
||||||
|
|
||||||
  以一个例子来说明怎么用,假设有两个类 A 和 B 定义如下:
|
  以一个例子来说明怎么用,假设有两个类 A 和 B 定义如下:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-11-20-10-38-05"
|
id: "2018-11-20-10-38-05"
|
||||||
|
date: "2018-11-20-10-38-05"
|
||||||
title: "1.linux下mongodb的配置与安装"
|
title: "1.linux下mongodb的配置与安装"
|
||||||
headWord: "linux下docker的安装与配置"
|
|
||||||
tags: ["docker", "linux","ubuntu"]
|
tags: ["docker", "linux","ubuntu"]
|
||||||
categories:
|
categories:
|
||||||
- "linux"
|
- "linux"
|
||||||
@ -28,6 +28,8 @@ wget -qO- https://get.docker.com/ | sh
|
|||||||
```
|
```
|
||||||
就是如果要以非root用户直接运行docker时需要执行`sudo usermod -aG docker 非root用户名`,然后重新登陆即可。
|
就是如果要以非root用户直接运行docker时需要执行`sudo usermod -aG docker 非root用户名`,然后重新登陆即可。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
## 2、apt安装
|
## 2、apt安装
|
||||||
  直接运行(root下)
|
  直接运行(root下)
|
||||||
```bash
|
```bash
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-12-26-13-18"
|
id: "2018-12-26-13-18"
|
||||||
|
date: "2018-12-26-13-18"
|
||||||
title: "2.docker简单使用教程"
|
title: "2.docker简单使用教程"
|
||||||
headWord: "本篇用来记录一些在docker中经常用到的命令,慢慢补充中。"
|
|
||||||
tags: ["docker","mysql"]
|
tags: ["docker","mysql"]
|
||||||
categories:
|
categories:
|
||||||
- "linux"
|
- "linux"
|
||||||
@ -28,6 +28,8 @@ docker rmi 镜像id/镜像名:版本
|
|||||||
docker search 镜像名
|
docker search 镜像名
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
#### 4. 拉取镜像
|
#### 4. 拉取镜像
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2019-02-01-14-05"
|
id: "2019-02-01-14-05"
|
||||||
|
date: "2019-02-01-14-05"
|
||||||
title: "3.从零开始在docker中部署java应用"
|
title: "3.从零开始在docker中部署java应用"
|
||||||
headWord: "  在没有 docker 前,项目转测试是比较麻烦的一件事。首先会化较长的时间搭建测试环境,然后在测试过程中又经常出现测试说是 bug,开发说无法复现的情况,导致撕逼。<br/>  本篇记录了如何将一个 java 应用部署到 docker 中。"
|
|
||||||
tags: ["docker","springboot","jar","war","elastricsearch","activemq"]
|
tags: ["docker","springboot","jar","war","elastricsearch","activemq"]
|
||||||
categories:
|
categories:
|
||||||
- "linux"
|
- "linux"
|
||||||
@ -32,6 +32,8 @@ categories:
|
|||||||
|
|
||||||
  本项目在 windows 部署时是将其作为三个部分来进行安装的--ENV 环境包(保护 mysql,es 等),OMS 产品包,DAS 产品包。所以最初我的设想是一个容器中装 ENV 环境包所需的所有软件,一个容器装 DAS,一个容器装 OMS。然后再实践的过程中越来越感觉不对劲,环境配置比较复杂,而且也有种把容器当虚拟机用的感觉,一点没有简化的感觉。
|
  本项目在 windows 部署时是将其作为三个部分来进行安装的--ENV 环境包(保护 mysql,es 等),OMS 产品包,DAS 产品包。所以最初我的设想是一个容器中装 ENV 环境包所需的所有软件,一个容器装 DAS,一个容器装 OMS。然后再实践的过程中越来越感觉不对劲,环境配置比较复杂,而且也有种把容器当虚拟机用的感觉,一点没有简化的感觉。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
  遂停下了操作,开始学习一波 docker 到底是怎么用的。用租房子来做比喻:
|
  遂停下了操作,开始学习一波 docker 到底是怎么用的。用租房子来做比喻:
|
||||||
|
|
||||||
- 传统软件部署方式相当于租到一个零家具,零装修的房子。我们想要住进去首先必须买齐必要的家具,然后想要住的舒心呢,还得花功夫装饰装饰,让房子好看点。这样就会对这个具体的房子产生较强的依赖,很难迁移到另一个房子中(想想那么多的家具,家电,杂物。。)。如果全部放弃重新换一个房子代价又太大了。
|
- 传统软件部署方式相当于租到一个零家具,零装修的房子。我们想要住进去首先必须买齐必要的家具,然后想要住的舒心呢,还得花功夫装饰装饰,让房子好看点。这样就会对这个具体的房子产生较强的依赖,很难迁移到另一个房子中(想想那么多的家具,家电,杂物。。)。如果全部放弃重新换一个房子代价又太大了。
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-12-26-11-50"
|
id: "2018-12-26-11-50"
|
||||||
|
date: "2018-12-26-11-50"
|
||||||
title: "docker下mysql启动报错"
|
title: "docker下mysql启动报错"
|
||||||
headWord: "报错是这么产生的,使用装有mysql的镜像创业一个容器,然后在容器中启动mysql就会报错,启动失败。"
|
|
||||||
tags: ["docker","mysql"]
|
tags: ["docker","mysql"]
|
||||||
categories:
|
categories:
|
||||||
- "linux"
|
- "linux"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-11-20-10-38-05"
|
id: "2018-11-20-10-38-05"
|
||||||
|
date: "2018-11-20-10-38-05"
|
||||||
title: "linux下mongodb的配置与安装"
|
title: "linux下mongodb的配置与安装"
|
||||||
headWord: "记录linux下如何安装与配置mongodb"
|
|
||||||
tags: ["mongodb", "linux"]
|
tags: ["mongodb", "linux"]
|
||||||
categories:
|
categories:
|
||||||
- "linux"
|
- "linux"
|
||||||
@ -39,6 +39,8 @@ auth = true #开启认证
|
|||||||
|
|
||||||
  然后就可以启动
|
  然后就可以启动
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
./bin/mongod -f mongodb.conf
|
./bin/mongod -f mongodb.conf
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 64 KiB |
Binary file not shown.
Before Width: | Height: | Size: 58 KiB |
Binary file not shown.
Before Width: | Height: | Size: 17 KiB |
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-12-17-13-58"
|
id: "2018-12-17-13-58"
|
||||||
|
date: "2018-12-17-13-58"
|
||||||
title: "vscode开发调试typescript"
|
title: "vscode开发调试typescript"
|
||||||
headWord: "本篇用于记录如何在vscode下开发typescript以及端点调试ts代码"
|
|
||||||
tags: ["vscode", "node","typescript","ts"]
|
tags: ["vscode", "node","typescript","ts"]
|
||||||
categories:
|
categories:
|
||||||
- "node"
|
- "node"
|
||||||
@ -53,6 +53,8 @@ npm i -g typescript
|
|||||||
|
|
||||||
  执行`tsc -w`,将 ts 编译位 js 并输出到 dist 目录下,`-w`监控文件变动,自动编译。
|
  执行`tsc -w`,将 ts 编译位 js 并输出到 dist 目录下,`-w`监控文件变动,自动编译。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
### 4、断点运行
|
### 4、断点运行
|
||||||
|
|
||||||
  首先添加 launch.json,如图所示:
|
  首先添加 launch.json,如图所示:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-10-01-13-58"
|
id: "2018-10-01-13-58"
|
||||||
|
date: "2018-10-01-13-58"
|
||||||
title: "node,vue开发教学管理系统"
|
title: "node,vue开发教学管理系统"
|
||||||
headWord: "毕业才刚刚两个多月而已,现在想想大学生活是已经是那么的遥不可及,感觉已经过了好久好久,社会了两个月才明白学校的好啊。。。"
|
|
||||||
tags: ["node", "vue","element-ui","axios","koa","redis","mysql","jwt"]
|
tags: ["node", "vue","element-ui","axios","koa","redis","mysql","jwt"]
|
||||||
categories:
|
categories:
|
||||||
- "node"
|
- "node"
|
||||||
@ -39,6 +39,8 @@ categories:
|
|||||||
|
|
||||||
洋洋洒洒需求列了一大堆,后面才发现是给自己挖坑,,答辩老师一看这类的题目就不感兴趣了,不论你做的咋样(况且我的演讲能力真的很一般),最后累死累活写了一大堆功能也没太高的分,,不过倒是让我的系统设计能力和代码能力有了不少的提高。
|
洋洋洒洒需求列了一大堆,后面才发现是给自己挖坑,,答辩老师一看这类的题目就不感兴趣了,不论你做的咋样(况且我的演讲能力真的很一般),最后累死累活写了一大堆功能也没太高的分,,不过倒是让我的系统设计能力和代码能力有了不少的提高。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
## 2、架构选择
|
## 2、架构选择
|
||||||
|
|
||||||
  大三的时候了解到 Node.js 这个比较“奇葩"的异步语言,再加上在公司实习了三个月也是用的 node 开发,对 node 已经比较熟悉了,于是就用它做了后台,前端用最近比较火的 vue.js 做单页应用。当时还想着负载均衡啥的,就没有用传统的 session,cookie 机制,转而用 jwt 做的基于 token 的身份认证,同时后台接口也是类 Restful 风格的(因为纯正的 Rest 接口太难设计了)。
|
  大三的时候了解到 Node.js 这个比较“奇葩"的异步语言,再加上在公司实习了三个月也是用的 node 开发,对 node 已经比较熟悉了,于是就用它做了后台,前端用最近比较火的 vue.js 做单页应用。当时还想着负载均衡啥的,就没有用传统的 session,cookie 机制,转而用 jwt 做的基于 token 的身份认证,同时后台接口也是类 Restful 风格的(因为纯正的 Rest 接口太难设计了)。
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
id: "2018-09-20-10-58"
|
id: "2018-09-20-10-58"
|
||||||
|
date: "2018-09-20-10-58"
|
||||||
title: "git crlf、lf自动转换问题"
|
title: "git crlf、lf自动转换问题"
|
||||||
headWord: "踩坑,都是从git拉下来的,就我老是报错,怎么都跑不起来,,花了半天时间排查原因。。。"
|
headWord: "踩坑,都是从git拉下来的,就我老是报错,怎么都跑不起来,,花了半天时间排查原因。。。"
|
||||||
tags: ["git","crlf","lf","flyway"]
|
tags: ["git","crlf","lf","flyway"]
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-09-30-10-58"
|
id: "2018-09-30-10-58"
|
||||||
|
date: "2018-09-30-10-58"
|
||||||
title: "正则匹配之正向/反向预测先行搜索"
|
title: "正则匹配之正向/反向预测先行搜索"
|
||||||
headWord: "今天领导让我写几个正则表达式来对密码做强度验证,听到写正则表达式内心是这样的感觉(哈哈,三分钟搞定,今天又可以打鱼了)..但是显然不会这么简单."
|
|
||||||
tags: ["java","正则匹配","pattern","预测先行搜索"]
|
tags: ["java","正则匹配","pattern","预测先行搜索"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "java"
|
||||||
@ -34,6 +34,8 @@ categories:
|
|||||||
|
|
||||||
名字看着高大上,不明所以,看完示例大概明白什么意思,这个表达式匹配从这个表达式起始的字符串(我也不知道咋解释),就是假设这样一个表达式 abc(?=[abc]) ,用它来匹配 abc123 字符串,(?=[abc])只会对作用于后面的 123,这个显然是不匹配的后整个就不匹配了,然后关键来了名字里有**预测**两个字,这两个字表名了这个表达式的特性:不占用字符,匹配后如果匹配成功就继续匹配了好像从来不存在这个东西一样,匹配失败就立即返回失败了。利用这个特性我们就可以给正则加限制条件了。
|
名字看着高大上,不明所以,看完示例大概明白什么意思,这个表达式匹配从这个表达式起始的字符串(我也不知道咋解释),就是假设这样一个表达式 abc(?=[abc]) ,用它来匹配 abc123 字符串,(?=[abc])只会对作用于后面的 123,这个显然是不匹配的后整个就不匹配了,然后关键来了名字里有**预测**两个字,这两个字表名了这个表达式的特性:不占用字符,匹配后如果匹配成功就继续匹配了好像从来不存在这个东西一样,匹配失败就立即返回失败了。利用这个特性我们就可以给正则加限制条件了。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
- (?!_pattern_) :反向预测先行搜索
|
- (?!_pattern_) :反向预测先行搜索
|
||||||
|
|
||||||
概念和上面一样,但是效果是相反的,abc(?![abc]),对于 abc123 是匹配成功的,对于 abca 匹配失败,如下所示:
|
概念和上面一样,但是效果是相反的,abc(?![abc]),对于 abc123 是匹配成功的,对于 abca 匹配失败,如下所示:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2018-10-03-10-58"
|
id: "2018-10-03-10-58"
|
||||||
|
date: "2018-10-03-10-58"
|
||||||
title: "分布式事务"
|
title: "分布式事务"
|
||||||
headWord: "分布式听说很火,但是分布式事务有很难解决,so来了解了解"
|
|
||||||
tags: ["分布式","sql","2PC","TCC","异步补偿"]
|
tags: ["分布式","sql","2PC","TCC","异步补偿"]
|
||||||
categories:
|
categories:
|
||||||
- "数据库"
|
- "数据库"
|
||||||
@ -36,6 +36,8 @@ categories:
|
|||||||
|
|
||||||
BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:**我们没法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性**。
|
BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:**我们没法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性**。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
## 二、解决方案
|
## 二、解决方案
|
||||||
|
|
||||||
### 1.两阶段提交(2PC)
|
### 1.两阶段提交(2PC)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
id: "2018-10-02-10-58"
|
id: "2018-10-02-10-58"
|
||||||
title: "数据库4个特性及隔离级别"
|
date: "2018-10-02-10-58"
|
||||||
headWord: "了解,了解。"
|
headWord: "了解,了解。"
|
||||||
tags: ["acid","sql","事务"]
|
tags: ["acid","sql","事务"]
|
||||||
categories:
|
categories:
|
||||||
@ -39,6 +39,8 @@ categories:
|
|||||||
|
|
||||||
### 4、 持久性
|
### 4、 持久性
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
  持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即使在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
|
  持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即使在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
|
||||||
|
|
||||||
   例如我们在使用 jdbc 操作数据库时,在提交事务方法成功后,就可以认定事务已经被正确提交,即使数据发生重大故障,操作也会正确完成。
|
   例如我们在使用 jdbc 操作数据库时,在提交事务方法成功后,就可以认定事务已经被正确提交,即使数据发生重大故障,操作也会正确完成。
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2019-01-25-09-48"
|
id: "2019-01-25-09-48"
|
||||||
|
date: "2019-01-25-09-48"
|
||||||
title: "mysql使用查询结果进行插入操作"
|
title: "mysql使用查询结果进行插入操作"
|
||||||
headWord: "经常在使用mysql的过程中想要从一张表中查出一些数据插入到另一张表中,操作如下。"
|
|
||||||
tags: ["mysql","select","insert"]
|
tags: ["mysql","select","insert"]
|
||||||
categories:
|
categories:
|
||||||
- "数据库"
|
- "数据库"
|
||||||
@ -42,6 +42,8 @@ insert into A(a,b,c) select b.*,1 from B b;
|
|||||||
|
|
||||||
  由于 B 表比 A 表少了一个 int 型参数 c,所以在 select 语句中加上一个数值补齐。
|
  由于 B 表比 A 表少了一个 int 型参数 c,所以在 select 语句中加上一个数值补齐。
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
2. A 表字段少,B 表字段多
|
2. A 表字段少,B 表字段多
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: "2019-01-02-17-15"
|
id: "2019-01-02-17-15"
|
||||||
|
date: "2019-01-02-17-15"
|
||||||
title: "Q807 保持城市天际线(Max Increase to Keep City Skyline)"
|
title: "Q807 保持城市天际线(Max Increase to Keep City Skyline)"
|
||||||
headWord: "leetcode刷题,题目详情见<a href='https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/'>点击跳转</a>"
|
|
||||||
tags: ["java", "leetcode","array",'leetcode']
|
tags: ["java", "leetcode","array",'leetcode']
|
||||||
categories:
|
categories:
|
||||||
- "算法"
|
- "算法"
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
id: "2018-08-04-10-58"
|
id: "2018-08-04-10-58"
|
||||||
|
date: "2018-08-04-10-58"
|
||||||
title: "nat模式虚拟机主机相互ping通"
|
title: "nat模式虚拟机主机相互ping通"
|
||||||
headWord: "如题。"
|
|
||||||
tags: ["vmware","nat","ping","ubuntu"]
|
tags: ["vmware","nat","ping","ubuntu"]
|
||||||
categories:
|
categories:
|
||||||
- "java"
|
- "linux"
|
||||||
- "正则匹配"
|
- "软件设置"
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1、wmware 设置
|
## 1、wmware 设置
|
||||||
@ -32,6 +32,8 @@ categories:
|
|||||||
|
|
||||||
**如果想让虚拟机能够访问主机需要关闭主机的防火墙**
|
**如果想让虚拟机能够访问主机需要关闭主机的防火墙**
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
|
||||||
## 3、ubuntu 设置
|
## 3、ubuntu 设置
|
||||||
|
|
||||||
  编辑/etc/network/interfaces
|
  编辑/etc/network/interfaces
|
||||||
|
Loading…
x
Reference in New Issue
Block a user