自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 资源 (3)
  • 收藏
  • 关注

原创 如何在一次请求中访问多个接口(方法)并获取多个返回值

假如要访问同一个类的不同方法,或者不同类的方法,并且要同时获取返回值。可以JSON格式的参数,以及组装多个结果返回值为JSON格式。例如:package com.river.web.function.smartrequst.serivce.impl;import com.river.web.function.smartrequst.model.User;import com.river.web.function.smartrequst.serivce.UserSerivce;import or

2021-01-03 12:46:54 4297 5

原创 linux中查看日志的常用命令

(进入到日志文件目录)一、less命令1、less run.log2、按End键到达文件尾部3、输入:?+想要查询的字符串+回车4、N键:上一次出现的地方;shift+N:下一次出现的地方二、cat命令搜索全部出现的位置:cat run.log | grep "查询字符串"三、tail命令tail -f run.log 会在日志文件尾部一直打印新的日志如果想要在尾部出现想要的字符串时才打印,可以加上:| grep "查询字符串",“|”表示管道,意思是以前面的命令

2020-12-20 12:37:57 593 1

原创 设计模式是一种思维,不是一组规则(2)

在享元模式中,有一个很经典的案例就是Integer包装类的实现。看下如下代码:Integer a = 1;Integer b = 1;System.out.println(a == b);Integer c = 128;Integer d = 128;System.out.println(c == d);这里a == b是true,而c == d是false的结果。因为Integer的源码实现中,使用了共享内存的设计理念(即享元模式),源码如下: private static

2020-11-15 17:45:12 236

原创 设计模式是一种思维,不是一组规则(1)

java中具体的23中设计模式的介绍,可以参考:http://c.biancheng.net/design_pattern/里面讲解的挺详细的,但是“专业的”词语用的太多,并不利于我们接触和了解设计模式以及为什么要存在设计模式。如模板方法模式,为什么要存在,解决了编程中的什么问题?举个例子:《中国好声音》舞台中,参赛选手经过层层选拔,最终有人获得冠军。比赛还没有开始时,我们不知道谁参加了比赛,谁在初赛中唱了什么歌,半决赛中唱了什么歌,是否有被淘汰等等。但是选手必须过了初赛,才可以进入半决赛.

2020-11-08 09:27:14 407 2

原创 制作一个简单的任务队列(使用阻塞队列)

充分利用阻塞队列的特性,队列中没有任务时,让线程阻塞。代码如下:import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;/** * @Author river66 * @Date 2020/10/25 8:37 */public class MyTaskQueue implements Runnable { private static final Bloc

2020-10-25 09:47:55 304

原创 Optional<T>到底要怎么用?从源码分析下是否真的是用来解决空指针异常的类

错误用法:1、先使用isPresent来判断是否有值,然后使用get()方法取出元素。Optional<String> optional = Optional.empty();if (optional.isPresent()) { String str = optional.get();}public boolean isPresent() { return value != null;}说明:我直接用!Objects.isNull()判断下,再处理它不香

2020-10-08 00:00:55 681 2

原创 java8中函数式接口Function的作用

先看下Function的其中一个应用:1、如果我们需要一个对象集合的某一个属性的集合,例如:获取User对象中的userName属性。/** * @Author river66 * @Date 2020/9/12 8:34 */@Datapublic class User { private String userName; public User(String userName) { this.userName = userName; }}

2020-09-12 09:51:24 2091

原创 java8中的函数式接口Consumer的用处(@FunctionalInterface)

先了解下这个单词的意思:Consumer [kənˈsjuːmə(r)] :消费者既然是消费者,那么它消费的是什么呢?先说结论:消费的是函数(或是代码段),封装的是逻辑代码。先看看,如果我们要遍历一个List集合,一般我们会这么写:List<String> list = new ArrayList<>();list.add("aa");list.add("bb");for (String s : list) { System.out.println(s).

2020-08-23 08:55:44 1930

原创 如何将git分支中的某一些commit转移到主分支上

基础git命令如下:1、git branch查看本地分支以及当前所在的分支(有*标记的)2、git log 或者 git reflog查看commit提交的信息记录3、git fetch origin 远程分支名称: 本地新分支名称拉取远程分支代码到本地,并成为一个新的分支4、git branch --set-upstream 本地分支名 远程分支名新拉取的本地分支是不能上传到远程分支上的,需要设置上传流(set-upstream),否则将本地分支代码push到远程分支上.

2020-07-30 20:50:06 1051

原创 java8中的函数式接口Predicate的用处(@FunctionalInterface)

先了解下这个单词的意思:Predicate[predɪkeɪt]:使以…为依据;断言意思和if 差不多,if (condition) {...},以condition为依据,然后就执行{}的语句。看下这里例子:如果要判断一个集合中是否包含某个元素,通常我们会使用foreach配合if 条件判断,如下: private static <T> boolean hasOne(Collection<T> collection, T t) { ...

2020-06-29 21:29:33 4713

原创 git命令:reset和revert的区别

reset:回退到某一个历史版本;(回滚到某个commit)revert:重做某一个历史版本(回滚某个 commit)假如有三个提交,A-->B-->C(head-->master):1、reset B变为:A-->B;2、revert B变为:A-->C。reset命令介绍(原文)当要回退到某一次提交的状态时,可以使用git reset命令。git reset [--soft | --mixed | --hard] [<commit>.

2020-05-23 13:00:30 1192

原创 初始化时引用java注解配置bean或xml配置bean

本文参考自:《Spring实战(第4版)》一、初始化时java注解引用xml中配置的bean关键注解:@ImportResource,下面举例CD播放器配置中引入CD的配置信息CD播放器配置类:/** * @Author river66 * @Date 2020/4/4 22:21 * <p> * CD播放器配置类 */@Configuration...

2020-04-05 13:15:23 472

原创 将vue项目部署到linux上

部署vue项目有两种方式:1、使用tomcat服务器;2、使用nginx服务器准备工作:打包vue项目(npm run build),生成的项目文件在dist文件中。(关于vue的使用)一、使用tomcat进行部署1、进入linux中tomcat的webapps目录;2、将dist文件夹打包上传(使用rz命令,没有此命令的用yum install lrzsz安装此命令...

2020-03-25 21:57:59 4004

原创 为什么Lambda表达式这么重要?(java8新特性)

一个很重要的一点是:C/C++语言是有函数指针的,函数指针可以作为一个参数传给一个方法,而java是没有这个特性的。为了解决这个问题,Lambda表达式就出来了!Lambda表达式的核心就是函数式接口。什么是函数式接口?一个接口中只定义了一个抽象函数,称为函数式接口。为什么需要函数式接口?我们知道,java中方法是不能作为参数传给另一个方法的。方法的调用是需要引用载体的(类、对象...

2020-03-13 21:30:13 1344

原创 Zuul的使用(路由器)

什么是Zuul?Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。为什么需要Zuul?一个项目是由多个微服务组成的,每一个微服务对应的地址和端口(ip、port)都是不一样的。这个对于客户端来说,访问会变得繁琐。这时,就需要统一的URL来负责反向代理这些请求,实现路由功能。Zuul的使用如下:一、添加依赖 <dependency> ...

2020-03-12 09:39:14 273

原创 断路器Hystrix的使用

什么是Hystrix?Hystrix是Netflix所创造的一个库,这个库实现了断路器的功能。为什么需要断路器?假设有3个服务,分别为:A、B、C,其中A调用B,B调用C,即:A-->B-->C当C不可用时,会导致调用链中的级联失败,发生雪崩效应,如下:A——>B——>CA——>B——>CA——>B——>C红色为服务不...

2020-03-10 11:33:05 690

原创 Feign的使用(声明式REST客户端)

什么是Feign?Feign是一个声明式的Web服务客户端。这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释。它具有可插入注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持,并使用Spring Web中默认使用的HttpMessageConverters。Sprin...

2020-03-09 12:51:04 178

原创 Ribbon的使用

一、Ribbon是什么?Ribbon是一个客户端负载均衡器。也就是说,在请求其他微服务的时候(集群),由Ribbon通过一些算法决定访问哪一个微服务。这些算法有:轮询算法(默认)、随机算法等。二、如何使用Ribbon?1、添加依赖(Eureka的依赖中已经包含了Ribbon)<!--包含了Ribbon依赖--><dependency> <gro...

2020-03-04 21:54:17 1412

原创 将微服务注册到Eureka上

1、新建一个springboot项目,并添加如下依赖:2、配置application.yml文件server: port: 8091eureka: client: service-url: defaultZone: http://localhost:8090/eureka/ #配置Eureka的服务地址 instance: appname...

2020-02-24 16:03:53 992

原创 Spring Cloud 服务发现组件Eureka的使用

搭建Eureka服务的步骤如下:1、新建一个springboot项目,并添加如下依赖:2、配置yml文件

2020-02-23 21:24:20 136

原创 Mybatis缓存(一级缓存、二级缓存和自定义缓存)

简要说明:1、Mybatis缓存分为一级缓存和二级缓存。在没有配置的情况下,默认开启一级缓存,不开启二级缓存。2、如果配置开启二级缓存,会先查询二级缓存,没有的话再查询一级缓存。(原理)一级缓存(同一个SqlSession)一级缓存具有和sqlsession一样的生命周期,看下如下例子:/** * @author river * 2020/2/11 */@Spring...

2020-02-12 16:12:46 768

原创 Mybatis自动生成Mapper、xml文件以及Example的使用

对于常用的基本的数据库操纵和数据查询,无需再手动去编写sql,使用程序生成,开发效率更高,当然要会用啦!主要有两种方法:1、使用java命令生成;2、使用java程序生成下面介绍第一种方法:使用java命令生成Mapper.java、xml文件1、编写Mybatis生成文件的配置文件<?xml version="1.0" encoding="UTF-8"?&g...

2020-02-10 21:25:49 2103

原创 由Netty实现的WebSocket(推荐使用)

本文参考自:《Netty权威指南》一、添加依赖<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.42.Final</version></depe...

2020-02-05 15:47:58 530

原创 搭建一个高性能、高并发的服务程序(Netty)

什么是Netty?Netty是一款受大公司青睐的java开源网络编程框架,用以快速开发高性能、高可靠性的网络服务程序。为什么不叫Http服务程序?Netty可以通过编程自定义各种协议,当然也可以作为Http服务。BIO和NIO分别是什么意思?BIO(Blocking I/O),阻塞IO,资源不可用时,IO请求一直阻塞,阻塞导致处理网络I/O时,一个线程只能处理一个网络连接。...

2020-02-03 18:14:34 620

原创 开发环境一个配置文件,生产环境一个配置文件(Profiles)

使用Spring的Profiles,可以实现不同环境下使用不同的配置文件。看配置:server: port: 8090spring: profiles: active: production--- spring: profiles: development logging: level: root: DEBUG --- spring: prof...

2020-02-01 20:01:33 1987

原创 Controller的测试(MockMvc的使用)

控制层接口的测试,可以用浏览器、PostMan或者Idea自带的工具(Tools-->HTTP Client-->Test RESTFul Web Service)进行测试都可以。当以上方式都不容易进行的测试的时候,可以使用MockMvc对象,mock 对象就是真实对象在调试期间的代替品。下面介绍下MockMvc的简单使用:Controller的方法如下: @...

2020-01-30 18:30:33 1066

原创 Redis缓存的使用

源码地址:https://github.com/bigBigRiver/redis.git为什么要使用Redis缓存?1、在高频访问数据库的情况下,缓解数据库的压力。2、读取速度快。流程是怎么样的?1、当有查询请求的时候,先是访问Redis,如果Redis中有数据则直接返回,不需要访问数据库。如果没有,则访问数据库,将查询结果返回并在Redis中缓存起来,下一次访问就可以直接在...

2020-01-23 11:00:13 326

原创 jpa的使用(spring-data-jpa)

源码地址:https://github.com/bigBigRiver/redis.git相比于Mybatis,jpa的使用方便简洁,功能也很强大,也是springboot的集成模块里的!当然,Mybatis也有它的优点,比如灵活等,各有各的好!一个是看个人的喜欢,一个是看公司使用的技术栈,多掌握一门技术总是好的!JPA、hibernate和spring-data-jpa的关系。JPA...

2020-01-21 12:28:19 413

原创 升级Mysql版本

1、卸载mysql服务cmd(以管理员身份运行):mysqld --remove2、下载mysql安装文件官网(下载慢):https://dev.mysql.com/downloads/mysql/腾讯软件中心(下载快):https://pc.qq.com/detail/3/detail_1303.html我这里下载的是mysql-installer-community-...

2020-01-20 09:46:20 2702

原创 Redis分布式锁的使用

为什么要用到分布式锁?在分布式系统中,不同的系统需要使用到同一个资源的时候,需要对这个资源进行加锁,使得在某一时刻只有一个系统操作资源,以此来保证数据的一致性。两个原子方法setnx():不存在时设置值返回true,存在则不进行设置并返回false(对应java的setIfAbsent()方法)getset():设置新值并返回旧值。可以访问Redis中文网站查看具体的介绍:h...

2020-01-17 13:00:12 239

原创 写一个自己的注解@MyConfiguration,读取配置文件

自己写的一个的注解,使用方便简洁^_^源码地址:https://github.com/bigBigRiver/MyConfiguration.gitconfig.properties文件userName=engineerdongpassword=123456配置文件对应的实体类import com.river.boot.annotation.MyConfigura...

2020-01-11 13:53:41 701 4

原创 一个注解搞定配置文件的读取(springboot)

注解:@ConfigurationProperties1、新建与配置文件对应的实体类,并放入spring容器中import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Co...

2020-01-10 19:01:47 746

原创 java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentException

Spring boot引入的最新版本的依赖包和spring的依赖包不一致,会发生这个错误!如下面的maven配置就会发生这个错误:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent&lt...

2019-12-29 16:31:15 1697

原创 教你一招!不用写Getter、Setter、toString方法

一个注解搞定:@Data!1、添加依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope&...

2019-12-27 10:23:51 886

原创 不用log4j了,用Logback管理日志

为什么不用log4j了呢?因为log4j和Logback都是同一个作者(ceki)写的,他本人说:log4j太烂了,不想再改了。所以写了一个log4j的升级版本,那就是Logback。我想开发者本人说的,应该够权威了吧!怎么用好Logback(日志实现)呢?和SLF4J(日志门面,和上面两个框架都是同一个作者写的)搭配使用,效果更佳!(springboot中用的也是这两个)...

2019-12-26 22:50:25 760

原创 spring mvc的处理流程

一、在web.xml中配置DispatcherServlet(实现了Servlet接口)的相关信息,其中包括: 1、初始化参数init-param的name、value(contextConfigLocation: 配置文件的路径) 2、Servlet处理的请求映射url (servlet-mapping)二、在DispatcherServlet的初始化方法i...

2019-12-25 09:40:15 147

原创 关于java动态代理源码的探索

本博客阅读的前提:了解Class对象,可以参考:https://blog.csdn.net/river66/article/details/103606336java实现动态代理利用的是java的反射机制,我们会使用Proxy.newProxyInstance()生成代理类。如:public interface Movable { void move();}public c...

2019-12-22 22:44:04 145

原创 java中最特殊的对象——Class对象

什么是Class对象?Class对象描述类的信息,对应着java.lang.Class类。类是对象的抽象,而Class类是对类信息的抽象。为什么需要Class对象?1、当程序在运行时需要识别对象和类的信息时,就会需要用到Class对象中的信息。即RTTI(Run-Time Type Identification)运行时类型识别 ,是依赖Class对象来完成功能。java语言的多...

2019-12-19 12:14:37 409

原创 Can't load AMD 64-bit .dll on a IA 32-bit platform 问题

解决办法:下载一个32位的tcnative-1.dll替换tomcat原先的即可。0-Dec-2019 09:14:57.113 警告 [main] org.apache.catalina.core.AprLifecycleListener.init 基于APR的本地库加载失败.错误报告为[D:\java\tomcat\apache-tomcat-9.0.27\bin\tcnative-1...

2019-12-10 09:37:09 761

原创 java搭建WebSocket的两种方式

这两种方式分别是:1、直接使用Java EE的api进行搭建。2、和springboot整合的WebSocket服务。下面分别介绍搭建方法:一、直接使用Java EE的api进行搭建。一共3个步骤:1、添加依赖<dependency> <groupId>javax</groupId> <artifact...

2019-12-09 14:39:04 6317 5

良好的ssm框架(spring+springmvc+mybatis)

一个良好的SSM框架,你值得拥有!

2019-03-27

Java Web框架例子合集(spring,springmvc,mybatis,struts2,hibernate)

Java Web框架例子合集(spring,springmvc,mybatis,struts2,hibernate)

2019-02-19

读取二代身份证依赖jar包

用于读取二代身份证依赖包,总共有3个jar包。

2019-02-18

空空如也

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

TA关注的人

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