0%

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。

使用Feign,只需要创建一个接口并注解,它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解,Feign支持可插拔的编码器和解码器,Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

阅读全文 »

场景:现有两个不同的数据库,一个叫db_user,一个叫db_account。一个操作,要同时更新db_user的user表和db_account的account表。失败,则两个表一起回滚。

阅读全文 »

java8新增了很多新的特性,值得去学习下。

新增加的Stream API (java.util.stream)引入了在Java里可以工作的函数式编程。这是目前为止对java库最大的一次功能添加,希望程序员通过编写有效、整洁和简明的代码,能够大大提高生产率。虽然效率没有简单for循环那么快,但是依旧值得我们去学习。

阅读全文 »

每次都手动打包springboot项目,部署war包到docker中,显然效率太低了,因此可以使用jenkins实现持续集成部署。

阅读全文 »

tomcat-users.xml

Tomcat根目录下找到 conf/tomcat-users.xml文件,在<tomcat-users></tomcat-user>标签中添加如下内容

1
2
3
4
5
6
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>

<user username="admin" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status"/>

context.xml

还需要修改Tomcat 根目录下的 webapps/manager/META_INF/context.xml文件

将其中的

1
2
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

注释掉就行了。 因为默认tomcat不可以通过外部ip访问管理界面。一定要启动Tomcat,不然等构建等时候会报拒绝连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<Context antiResourceLocking="false" privileged="true" >
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

JDK中已有的一些接口本身就是函数式接口,如Runnable。 JDK 8中又增加了java.util.function包, 提供了常用的函数式接口。

阅读全文 »

查看Java方法的调用树

IntelliJ IDEA中可以在主菜单中选择Navigate | Call Hierarchy命令查看一个Java方法调用树(caller和callee两个方向)

上图中左上角的两个按钮是调用被调用关系的显示。

查看表达式、变量和方法参数的传递关系树

IntelliJ IDEA中可以在主菜单中选择 Analyze | Data flow from / to Here 两个命令查看表达式、变量和方法参数的传递关系树。

Analyze | Data Flow from Here

Analyze | Data Flow to Here

查询调用目标方法的地方可以用 Analyze Data flow from Here

查看Java类、方法或变量的直接使用情况

IntelliJ IDEA的 Find Usage 可以查看一个Java类、方法或变量的直接使用情况。

或者直接点击目标对象,使用键盘快捷键:Ctrl+G

查看类关系图

在包或类上右键点击Diagram或者用快捷键Ctrl+Alt+U。

python爬网页数据可以用xpath 进行标签定位

阅读全文 »