
后端
文章平均质量分 94
一行Java
这个作者很懒,什么都没留下…
展开
-
为什么 HashMap 要用 h^(h >>>16) 计算hash值?槽位数必须是 2^n?
大家好,我是一航!昨天中午,一位粉丝朋友在微信私信我,问:为啥HashMap的hash值计算格式是这样:(h = key.hashCode()) ^ (h >>> 16)?h ^ (h >>> 16)是什么意思?以下是Java8中HashMap计算key对应hash的源码:static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode().原创 2022-04-25 09:35:52 · 5150 阅读 · 8 评论 -
Linux最常用快捷键汇总及详解
文章目录控制台快捷键文本编辑快捷键编辑操作位移操作删除操作复制、剪切、粘贴替换撤销保存、退出导入编辑中执行指令多行注释查找前天和各位分享了Linux常用指令的汇总: 有需要的可以去收藏一下,用的上的时候翻来看看;今天来分享一下Linux常用的快捷键;虽然很多操作,通过鼠标点点就可以做到;但是,纯用键盘操作Linux的流畅性跟手来回游走在鼠标、键盘之间的体验,完全不是一个数量级的,因此,熟悉快捷键并熟练运用,必将事半功倍;下面就来一一列举一下常用到的快捷键:内容持续更新请关注: https://lupf.原创 2020-12-25 15:22:49 · 620 阅读 · 0 评论 -
SpringBoot!你的请求、响应、异常规范了吗?
长文警告!!!文末有红包前言这段时间在调整老系统相关的一些业务代码;发现一些模块,在无形中就被弄的有点乱了,由于每个开发人员技术水平不同、编码习惯差异;从而导致在请求、响应、异常这一块儿,出现了一些比较别扭的代码;但是归根究底,主要问题还是出在规范上面;不管是大到项目还是小到功能模块,对于请求、响应、异常这一块儿,应该是一块儿公共的模板化的代码,一旦定义清楚之后,是不需要做任何改动,而且业务开发过程中,也几乎是不需要动到他丝毫;所以,一个好的规范下,是不应该在这部分代码上出现混乱或者别扭的情况的;忍不.原创 2020-12-07 16:19:23 · 780 阅读 · 1 评论 -
开发人员常用工具最全锦集(持续更新)
工欲善其事必先利其器,利用好一系列优秀的工具,来提高自己的工作效率,腾出更多愉快玩耍的时间;积攒了这么写年压箱底儿的东西全拿出来了;本文中大部分并不只是开发人员的工具,职场人都可以使用到。文中涉及到的一些软件,如果官网下载比较慢的话,我整理了一部分放在百度云盘上,可以自行去下载链接:https://pan.baidu.com/s/1TlJ6UDOi9wN_gf_sx1OzZw提取码:qvftPC工具JetBrains全家桶镇楼!!!JB全家桶在开发工具界说第二,估计没人敢跳出来说第一了,.原创 2020-11-18 23:23:24 · 1571 阅读 · 1 评论 -
Jenkins监听gitlab的提交并自动打包(详细图解)
第一步(gitlab),创建gitlab的访问令牌第二步(jenkins);Jenkins安装gitlab插件安装gitlab 和gitlab hook第三步(jenkins);配置gitlab的凭证第四步(jenkins);配置gitlab的连接第五步(Jenkins);创建jenkins构建项目第六步(gitlab);配置Hook第七步;测试触发touch 1.txtgit add .git commit -m "测试自动触发jenkins"git push or原创 2020-11-17 16:14:14 · 4458 阅读 · 0 评论 -
5分钟集成实现SpringBoot自动生成API接口文档(下篇)
前言这是一篇整合性质的文章,也可以认为是5分钟集成实现SpringBoot自动生成API接口文档的下篇,是实现真正意义上的自动化,上篇讲的是文档是自动生成出来的,但是触发生成的这个动作都是人为触发的,这里去掉所有需要人为参与的动作;写这篇文章的最终目的是将整个API文档自动生成周边相关的所有技术点全部都整理归纳起来;就算是没有任何思路的你,顺着这篇文章,也能把其中涉及到的东西全部学会,并且可以运用到实际的日常开发中去,让你从这些琐碎的事情中抽身出来,做更加有意义的事情。测试源码源码 :https:/.原创 2020-11-16 00:12:52 · 901 阅读 · 0 评论 -
5分钟集成实现SpringBoot自动生成API接口文档(上篇)
当你问10个开发人员想不想写开发文档,可能有11个人会告诉你,不想写;那有没有方式可以不写接口文档,能自动生成呢?当然是有的,业界比较主流的是使用丝袜哥(swagger);但是个人使用过程中,觉得它对代码的侵入性有点强,虽然减轻了文档撰写的工作量,但是带来了一些编码的负担,同时和整个业务功能耦合的比较严重;下面推荐一个非侵入的API生成工具:apigcc : https://github.com/apigcc/apigcc 使用起来也非常的简单,而且对代码几乎零侵入。话不多说,代码走着。。。测试源码.原创 2020-11-16 00:10:12 · 4914 阅读 · 2 评论 -
基于Docker搭建Nacos集群
准备机器3台192.168.1.160192.168.1.161192.168.1.162docker安装CentOS 7下安装Docker及基础操作安装mysql基于docker安装mysqldocker run \-p 3306:3306 \--name nacos-mysql \-v $PWD/conf:/etc/mysql/conf.d \-v $PWD/logs:/logs \-v $PWD/data:/var/lib/mysql \-v /etc/localt.原创 2020-07-17 18:22:14 · 5930 阅读 · 3 评论 -
基于Nacos的服务治理、配置中心
Nacos集群环境的搭建参看《基于Docker搭建Nacos集群》:https://lupf.cn/articles/2020/05/21/1590058654840.html ; 亦或者通过官方提供的其他方式安装,详情参考:https://nacos.io/zh-cn/docs/quick-start.htmlNacos作为配置中心apollo配置中心整理Nacos的服务治理,顺带着整理一下Nacos的配置中心; 目前实际的生产使用的是Apollo; 个人相比较更加喜欢Apollo一点,如果想.原创 2020-07-17 18:20:03 · 745 阅读 · 1 评论 -
RESTful API,你真理解了吗?
什么是RESTful API?RESTful API并不是什么框架,他也并不是某段啥代码,他单纯的就是一种规范,一个标准。一旦涉及带规范、标准,就是一个很空泛概念,一开始很难理解真正的特点,然后就很难将其与传统的API区分开来;RESTful API与传统API的区别传统API的url代表的是一种行为;如上图的查询/user/query,通过url就可以知道当前的接口适用于查询操作的;RESTful API的url表示的是资源;如上图的接口地址,多次出现/user/1;/user/1表示着用户.原创 2020-07-13 14:46:57 · 915 阅读 · 0 评论 -
路径匹配、RestFul接口地址匹配工具AntPathMatcher
背景SpringBoot开发RestFul API接口,如果存在鉴权,可能会存在需要比对当前请求的接口是否允许访问;如后台定义了一个接口,@GetMapping("/user/{id}"),根据用户的id查询用户信息;此时如果用户请求/user/1的时候,是否要放行,我们该如何比对,传统的equals是没有办法满足比对需求的,SpringBoot给我们提供了一个工具类AntPathMatcher,用于路径比对示例@Testpublic void antPathMatcher() { Ant.原创 2020-07-09 10:48:35 · 3257 阅读 · 0 评论 -
nacos导致log4j2不输出日志
问题背景SpringBoot通过log4j2输出日志,nacos作为注册中心问题描述项目启动出现以下日志,然后没有任何自定义的log输出WARN No Root logger was configured, creating default ERROR-level Root logger with Console appender问题原因因为nacos的log4j2导致本项目的日志不输出的问题解决方式启动项目中添加以下配置public static void main(String[.原创 2020-07-08 11:07:33 · 3418 阅读 · 0 评论 -
SpringBoot基于Aop自定义Slf4j日志输出格式
需求当线上服务或者接口出现异常之后,第一时间需要做的就是追踪日志,找出问题到底出现在哪里,但是在现有的分布式及微服务的背景下,一个请求的调用链往往比较的长,所以一般情况下会选择使用一个请求的唯一ID输出为日志,然后便于日常运维过程的问题追踪,如何优雅自如的自定义一个log输出呢?下面使用AOP加上logback来给一个简单优雅的方式;解放双手,告别体力活。Aop这里不做AOP的介绍。除了使用...原创 2020-01-09 18:27:43 · 3240 阅读 · 0 评论 -
java设计模式之单例模式
前言单例模式作为开发过程中最常用的设计模式之一,是程序员必须了解和掌握的技能,但是单例的实现方式和手段有很多种,每一种都有着各自的优缺点,如何在代码中运用就需要我们对每一种实现方式都了如执掌方可运筹帷幄。单例的实现方式静态常量饿汉式代码public class Single { private static Single single = new Single(); ...原创 2019-12-29 19:22:11 · 212 阅读 · 0 评论 -
Linux下Netty导致Redis连接失败的问题java.lang.NoSuchMethodError: io.netty.channel.SingleThreadEventLoop.<init>
背景项目中同时使用了Redis和Netty,SpringBoot版本使用的2.1.6正式版;在Linux环境下运行Redis无法正常连接资源引用如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s...原创 2019-11-21 14:54:46 · 5036 阅读 · 4 评论 -
SpringBoot集成Apollo配置中心(5分钟集成系列)
相关文章基于Docker 5分钟搭建携程Apollo分布式配置中心SpringBoot集成第一步登录Apollo添加测试项目(apollo-test)第二步添加测试配置 // 服务的端口 server.port = 8888 // 测试的key key = va a = 1第三步添加依赖 <dependency> &l...原创 2019-11-19 21:38:33 · 1864 阅读 · 0 评论 -
基于Docker 5分钟搭建携程Apollo分布式配置中心
前言由于一开始对Apollo的架构方式了解的不够升入,同时为了能够使得安装过程更加的简单,做到一条指令实现Apollo环境的搭建,经历了比较多的测试;本文基于apollo 1.6.0的版本进行编译打包的,后面会将整个镜像的创建过程逐一的列举出来,避免想了解的朋友再次花时间去研究;什么是Apollo携程官方Apollo仓库对该分布式配置中心做了详细的说明,这里就不再对起解析过多的解释,官方文档...原创 2019-11-16 21:06:15 · 2096 阅读 · 0 评论 -
SpringBoot学习之旅(十一)---运行时环境、配置文件自动切换
需求说明开发过程中,经常出现的环境必定会有以下几个:开发环境、测试环境、预发布环境(可能会有,可能没有)、正式环境;由于这些环境的存在,我们就不得不去维护这一系列环境的配置(如数据库连接、商户资料等等)及版本,那么要如何去管理这些配置呢?常用的方式第一种:版本管理工具比如,通过git去维护不同的分支,不同的分支有不同的配置文件信息;发布的时候,切换不同的分布打不同版本的包进行上传发布缺...原创 2019-10-14 22:23:30 · 1729 阅读 · 0 评论 -
最简单的java验证码实现方案
用户登录几乎是一个线上系统必不可少且使用相对比较频繁的一个模块,为了防止恶意暴力尝试,防止洪水攻击、防止脚本自动提交等,验证码是一个较为便捷且行之有效的预防手段,下面使用三个简单的步骤轻松实现一个验证码功能,具体的效果如下:第一步:工具类该工具类为生成验证码图片的核心,直接拷贝到项目即可,无需做修改;import java.awt.*;import java.awt.geom.Affine...原创 2019-10-12 11:38:26 · 2812 阅读 · 1 评论 -
SpringMvc+MyBatis+MySQL+Maven+Redis搭建一个基础的web项目
前言软件安装及资源配置JDK安装MyEclipse10安装及破解Maven安装及配置MySQL下载及安装Tomcat下载及安装Redis下载及安装项目搭建项目创建数据库基础数据准备插件配置代码编写单元测试总结前言近来由于公司项目的需要,暂时放下了前端android的开发,慢慢投入到后台接口系统搭建,在经过与众兄弟的讨论下,决定就使用最常规的框架去搭建一个后台接口系统,这样原创 2017-07-03 22:26:56 · 6029 阅读 · 4 评论 -
基于CentOS 7 web服务环境搭建(包含JDK+Nginx+Tomcat+Mysql+Redis)
前言安装和配置防火墙安装telnet服务语言包安装JDK安装Nginx方法一通过自行下载依赖库安装测试成功方法二通过系统自带安装包安装Tomcat安装包含多个tomcat的配置说明MySQL安装Redis安装设置linux系统的编码格式前言本文是基于京东云CentOS 7环境下搭建的,腾讯云、阿里云基本都大同小异,无很大的区别。安装和配置防火墙CentOS 7.0默认使用的是fi原创 2017-09-15 15:31:29 · 4818 阅读 · 4 评论 -
Android前端RxJava2+Retrofit2;后端SpringMvc实现图片上传
前言Android前段实现资源引入service的编写基于Retrofit2自定义SubscriberModel层编写Android调用相机拍照后端实现SpringMvc可能存在的问题前言因为前端使用的rxjava+retrofit+mvp的架构进行实现,因此考虑着图片上传的功能也直接用rxjava+retrofit去实现,结果在使用过程中,发现始终有问题,图片上不去;测试了几天,尝原创 2017-09-30 15:54:56 · 3619 阅读 · 0 评论 -
手把手教你安装Linux(CentOS 7)系统及网络配置
准备工作做U盘启动安装系统配置网络查看本地ip相关信息配置linux网络其他资料准备工作8G及以上容量的U盘一个(数据将会被格式化,请预先保存好U盘中的资料)UltraISO软件;用于制作U盘启动;绿色版下载Linux系统,以下演示使用CentOS 7;由于系统太大,请自行去官网下载做U盘启动安装UltraISO软件 ...原创 2018-03-23 18:47:37 · 20803 阅读 · 4 评论 -
java使用注解校验对象属性值数据长度
开发过程由于经常需要组报文,按一定的协议组成交互数据,报文的数据由多个参数组成,且参数的长度基本都有固定的长度,然后有些协议的参数个数可能达到几十个之多,为了保障数据的完整性,同时又不做if(data.length())这样大量的体力活,这里介绍一种使用注解来完成这个校验的动作。定义注解@Target({ ElementType.FIELD, ElementType.TYPE })@...原创 2018-06-01 17:32:18 · 32116 阅读 · 4 评论 -
全国省市区区域代码
[{ &amp;quot;110000&amp;quot;: &amp;quot;北京市&amp;quot;}, { &amp;quot;110101&amp;quot;: &amp;quot;东城区&amp;quot;}, { &amp;quot;110102&amp;quot;: &amp;quot;西原创 2018-07-11 12:53:52 · 44028 阅读 · 0 评论 -
SpringBoot学习之旅(七)---JPA进阶篇之自定义查询、修改、分页
文章目录原创 2019-03-19 16:40:27 · 1364 阅读 · 0 评论 -
SpringBoot学习之旅(八)---JPA进阶篇之联表操作
文章目录前言源码下载数据关联关系映射前言前两节有说道JPA的基础操作及JPA自定义查询、修改、分页等操作,有兴趣的可以去看看,前面两章的所有操作都只是在操作一张表,但是真实的项目中,不可能所有的业务都只去做单标的操作,因为这不符合数据库表的设计法则,因此,各个表之间就总会发生那么点正当、或者不正当的关系;那么我们就得去理清各个要素之间的关系;源码下载点击开源中国下载源码数据关联关系映射...原创 2019-03-19 16:41:28 · 1989 阅读 · 0 评论 -
SpringBoot学习之旅(六)---JPA基础篇
文章目录什么是JPA基础工作基础项目创建使用IDEA工具生成数据库实体对象JAP常用注解说明Repository创建Service相关定义领域模型创建定义UserService接口实现编写测试用例基础操作测试Controller定义Jpa操作进阶什么是JPAJPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系...原创 2019-03-19 16:39:40 · 690 阅读 · 1 评论 -
使用Docker搭建RAP2(技术文档管理私服)
文章目录前言准备工作安装mariadb及redis安装rap2-delos安装rap2-dolores 安装nginx配置ssl正式及解决跨域问题安装确认使用说明前言技术团队,文档管理是一项至关重要的工作,不管是对于开发人员,还是对于测试人员,还是对于新同事,一个好的文档能让整个团队的效率大大的提升;rap是阿里妈妈前端团队维护并开源的一套文档管理系统,很好用;官方入口,没有使用过的可以在这里...原创 2019-09-11 21:28:19 · 2846 阅读 · 9 评论 -
通过过滤器Filter实现平台级校验
文章目录涉及的场景测试示例涉及的场景session校验比如,部分系统必须保证系统登录之后才能正常使用,登录之后会将登录信息保存在session中,因此可以在Filter实现session数据的校验请求拦截如果平台涉及到黑白名单相关的机制,可以使用Filter实现拦截相关请求,并响应异常。平台级的数据检验当平台的所有接口都需要按一定的协议进行加密或者验签,可以通过Filter获取到请...原创 2019-09-20 22:11:44 · 700 阅读 · 0 评论 -
SpringBoot解决跨域请求的OPTIONS问题
定义过滤器import javax.servlet.*;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * 解决vue前端OPTIONS跨域问题 */public class CorsFilter implements Filter { @Override pu...原创 2019-09-20 22:21:08 · 8558 阅读 · 0 评论 -
SpringBoot集成RabbitMQ启动卡死问题
文章目录问题现象集成方式卡死问题解决方式问题现象为了做一些方案选型的测试,建了一个测试用的SpringBoot项目,集成RabbitMQ进行一些功能性的测试,但是出现了一个很奇怪的现象,直接通过main方法连接的时候可以正常连接到RabbitMQ,但是整合到SpringBoot就无法正常连接,且项目在启动的时候卡死RabbitMQ管理平台也看不到相关的连接集成方式Maven加依赖...原创 2019-09-25 20:44:54 · 3091 阅读 · 0 评论 -
nginx rewrite(301)重定向之后无法正常请求的解决方案
前言问题追踪总结前言前面通过腾讯云ssl证书实现了https的请求,如果想简单了解可参考如何添加SSL证书实现https请求;为了满足之前http请求不受影响,在nginx上面不仅配置了https的443端口的监听,同时监听了80端口。通过浏览器测试确实是没有问题,但是在写代码时,java代码发起get,post请求的时候,出现了“301 Moved Permanently”的错误;网上也没有搜原创 2017-08-07 20:30:40 · 33913 阅读 · 2 评论