• springboot2.2.X手册:构建全局唯一的短链接数据中心

    什么是短链接短链接,其实这个东西很常见,最早开始的时候小编是在微博上看见的,然后就很好奇这是个什么东西,怎么点进去后网址又辣么长?其实这个东西就必须按照字面来理解,就是短的链接,通过短的链接去数据库或者缓存中找到长的链接,映射出来即可。今天我们用redis来实现短链接服务,想换存储介质的同学自行更换。有哪些场景1、微博,短信等那些有限制字数的文案需求2、用户角度上来考虑,短链接...

    Java 2020年06月12日 116 0
  • 数据库中间件的对比

    目前的数据库中间件有很多,本节将介绍主流的中间件,并从各个维度将其与Mycat进行对比。1. MangoMango的中文名是“芒果”,它是一个轻量级的极速数据层访问框架,目前已有十多个大型线上项目在使用它。据称,某一支付系统利用Mango承载了每秒12万的支付下单请求,其超高的性能及超快的响应速度几乎相当于直接使用JDBC。它采用接口与注解的形式定义DAO,完美地结合了db与c...

    Java 2020年06月10日 106 0
  • 误删idea 的.iml文件后的处理方法

    在缺少.iml文件项目下运行mvn idea:module,完成后将自动生成.iml文件除了自动生成.iml文件外,还有以下几个相关的maven idea命令,以备不时之需:生成.ipr文件: mvn idea:project生成.iws文件: mvn idea:workspace生成.iml文件: mvn idea:module

    Java 2020年05月21日 222 0
  • Java枚举"已过时"-改用“数据字典”

    Java枚举的一大缺点:增加一个枚举项,需要重新发版,不易扩展数据字典:可以存储key=value形式的任何数据,变更不需要发版,易扩展实现原理字典的工作原理图数据库表设计CREATE TABLE `system_dict_node` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `pid` bigint(...

    Java 2020年05月12日 290 0
  • JDK 15:Java 15中的新功能

    标准Java的下一版本将具有文本块,垃圾收集器,隐藏的类以及模式匹配和记录的预览。随着Java 14于3月17日全面上市,将在2020年9月15日推出Java 15的后续产品。到目前为止,已经计划对该版本进行八次正式更改。 另外两个提案-加密签名和记录的第二个预览-可能很快就会成为正式提案。Java开发工具包(JDK)15为下一版本的Java SE(标准版)提供了基础。 在9月...

    Java 2020年05月12日 217 0
  • Spring Boot 如何测试打包部署

    有很多网友会时不时的问我, Spring Boot 项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下 Spring Boot 如何开发、调试、打包到最后的投产上线。开发阶段单元测试在开发阶段的时候最重要的是单元测试了, Spring Boot 对单元测试的支持已经很完善了。1、在 pom 包中添加 spring-boot-starter-test 包引...

    Java 2020年05月08日 196 0
  • 项目管理之开源:国内非常良心的一款考试系统 | 实用 | 推荐

    介绍Exam++是国内首款基于JAVA与MYSQL开发的网络考试系统。它可以稳定、顺畅的运行在Windows与Linux平台上。您可以通过它快捷方便的创建试题和题库,发布试卷,组织考试,系统自动批改。高度的可配置性和灵活性使得它可以被应用于很多领域。地址https://gitee.com/ocelot/examxx?_from=gitee_search功能用户注册登陆:用户可以...

    Java 2020年05月06日 203 0
  • Spring Boot+Redis+拦截器+自定义Annotation实现接口自动幂等

    在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段:数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的...

    Java 2020年05月05日 159 0
  • 「JAVA」字节流、字符流、缓冲流、转换流、内存流、字符编码

    文件流、字节流、字符流、缓冲流、转换流、内存流文件流: 在Java 中,文件流负责操作文件,包括读取和写入;FileInputStream // 文件的字节输入流;FileOutputStream // 文件的字节输出流;FileReader // 文件的字符输入流;FileWriter /...

    Java 2020年05月04日 153 0
  • IEDA 操作入门详解

    启动及主界面安装完成后,点击左面IDEA15的图标,下图界面进行IDEA加载等待IDEA加载完成后,一路配置及注册确认后进入主界面Create New Project:创建一个新的IDEA工程Import Project:导入一个已有的IDEA工程Open:打开一个已有工程或文件Check out form Version Control:从版本管理系统检出工程Configur...

    Java 2020年05月04日 186 0
  • SpringBoot 使用 Caffeine 本地缓存

    环境配置:JDK 版本:1.8Caffeine 版本:2.8.0SpringBoot 版本:2.2.2.RELEASE一、本地缓存介绍缓存在日常开发中启动至关重要的作用,由于是存储在内存中,数据的读取速度是非常快的,能大量减少对数据库的访问,减少数据库的压力。之前介绍过 Redis 这种 NoSql 作为缓存组件,它能够很好的作为分布式缓存组件提供多个服务间的缓存,但是 Red...

    Java 2020年05月03日 229 0
  • gRPC和RSocket之间的区别

    我们一直被问到这个问题。 通常,gRPC和RSocket尝试解决不同的问题。 gRPC是使用HTTP / 2的RPC框架。 RSocket是较低级别的消息传递网络层。 因此,开发人员将直接使用RSocket进行低级交互,并可以选择使用RSocket-RPC作为位于RSocket之上的易于使用的RPC层。现在,让我们更具体地看一下gRPC和RSocket之间的区别。OSI层gRP...

    Java 2020年05月02日 270 0
  • 使用Netty通信时,遇到TCP粘包拆包问题如何解决?答案如此简单

    1、什么是TCP粘包拆包2、Netty中粘包问题的问题重现3、Netty中粘包问题的解决方案OK,在你心中有这么一个基本的脉络之后就可以开始今天的文章了。本系列所有的文章都会给出完整的代码,且在电脑上真实运行了一遍,确保无误。一、什么是TCP拆包和粘包我们使用TCP协议在传输数据的时候,如果数据块比较大,就会考虑将其切分。把一个大的数据包进行切割成一个个小的数据包发送。这时候就...

    Java 2020年04月27日 134 0
  • Java界使用最广的依赖管理工具:Maven快速上手教程

    Maven是Java界使用最广泛的依赖管理工具,几乎所有的Java类库和项目都使用Maven的项目模型。可以说Maven是学习Java必要的一个知识点。那么就让我们来看看如何使用Maven吧。安装MavenMaven的安装非常简单,访问下面的网页,选择zip包下载。下载完成后,放到合适的位置解压,然后将文件夹中的bin目录添加到环境变量中,以便可以在命令行中运行Maven。ht...

    Java 2020年04月27日 138 0
  • Spring AOP为什么能够成为Spring的基石?

    Spring AOP是Spring的三大基石之一它究竟解决了什么痛点能获如此殊荣?Java在面向对象的世界里无限风光,oop成就了无数经典的软件,它让我们的软件更健壮,更易于维护,但是程序猿对软件的质量追求是永无止境的,oop对于业务的抽象和封装完美的无懈可击然而对于系统层面的一些需求比如系统日志,性能统计等,分散在软件的各个角落,维护起来很是不爽,这种问题的解决确是oop力所...

    Java 2020年04月26日 115 0
  • Java 性能问题如何排查?教你几招快速定位的方法

    概述性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱,我们本篇文章来模拟下常见的几个Java性能故障,来学习怎么去分析和定位。预备知识既然是定位问题,肯定是需要借助工具,我们先了解下需要哪些工具可以帮忙定位问题。top命令top命...

    Java 2020年04月26日 178 0
  • 一个非常适合IT团队的在线API文档、技术文档工具——Showdoc

    介绍每当我们接管其他人开发的模块或项目时,我们总是会疯狂地看着那些没有注释的代码。程序员经常希望其他人写技术文档,而不希望自己写技术文档。因为编写技术文档需要花费大量时间来处理格式和布局,所以编写该文档的人必须考虑各种非技术细节,例如在新建的Word文档中应放入哪个目录,各种文档由不同的人分散地保存在一个团队中。然后通过IM或电子邮件从其他人那里接收文件。这种通信还不错,但是效...

    Java 2020年04月25日 191 0
  • 反爬虫、接口防盗刷 spring boot stater 组件 kk-anti-reptile

    kk-anti-reptile是,适用于基于spring-boot开发的分布式系统的反爬虫组件。系统要求基于spring-boot开发(spring-boot1.x, spring-boot2.x均可)需要使用redis工作流程kk-anti-reptile使用基于Servlet规范的的Filter对请求进行过滤,在其内部通过spring-boot的扩展点机制,实例化一个Fil...

    Java 2020年04月24日 128 0
  • idea2020.1无法启动项目,报错Error:(3, 28) java: 程序包org.springframework.boot不存在

    之前安装的是idea 2019版本,一直没有问题。今天突然升级了一下,安装了idea2020.1最新版本,启动springboot项目的时候,竟然无法启动,而且提示的错误信息也很奇怪: Error:(3, 28) java: 程序包org.springframework.boot不存在而我检查了bootorg.springframework.boot包,明明是存在的。于是找了...

    Java 2020年04月24日 1499 0
  • HTTP客户端连接,选择HttpClient还是OkHttp?

    写在前面为什么会写这篇文章,起因于和朋友的聊天这又触及到我的知识盲区了,首先来一波面向百度学习,直接根据关键字httpclient和okhttp的区别、性能比较进行搜索,没有找到想要的答案,于是就去overstackflow上看看是不是有人问过这个问题,果然不会让你失望的所以从使用、性能、超时配置方面进行比较使用HttpClient和OkHttp一般用于调用其它服务,一般服务暴...

    Java 2020年04月22日 143 0
  • 熬了两个通宵写的!终于把多线程和多进程彻底讲明白了!

    我们知道,在一台计算机中,我们可以同时打开许多软件,比如同时浏览网页、听音乐、打字等等,看似非常正常。但仔细想想,为什么计算机可以做到这么多软件同时运行呢?这就涉及到计算机中的两个重要概念:多进程和多线程了。(PS:万字长文,讲得很详细,建议先收藏再好好看!)同样,在编写爬虫程序的时候,为了提高爬取效率,我们可能想同时运行多个爬虫任务。这里同样需要涉及多进程和多线程的知识。本文...

    Java 2020年04月22日 233 0
  • 程序员写接口参数校验,总是太多if else?一招让你避免体力活

    对于写Java的程序员来说,不管是写单纯的接口、还是页面后台一把梭,后端参数校验的功能都是整个代码不可或缺的一部分,它可以从系统入口过滤掉一些不合法的数据,以确保我们的系统稳定。还记得我刚入行Java写后端那会儿,因为刚从Android端转后端开发,对对端开发还不是很熟悉。有天我们架构师老大给了我一个需求、要写一个接口给客户端调用,功能其实挺简单:就是根据客户端传过来的一些参数...

    Java 2020年04月22日 175 0
  • JDK1.8新特性Stream和Collectors19个常用示例总结

    关于Stream和Collectors的用法,这应该是总结的最全的文章了,大家可以收藏一下。一:简介java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样就可以将多个操作依次串起来。Stream 的创建需要指定一个数据源,比如 java.u...

    Java 2020年04月21日 105 0
  • 5 分钟搞懂布隆过滤器,过滤亿级数据

    在程序的世界中,布隆过滤器是程序员的一把利器,利用它可以快速地解决项目中一些比较棘手的问题。如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断和缓存穿透等问题。布隆过滤器(Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要...

    Java 2020年04月20日 158 0
  • JAVA 线上故障排查全套路

    线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如 jstack、jmap 等工具也是不囿于一个方面的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、jmap 伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查 CPU 方面的问题。CPU 异常往往...

    Java 2020年04月20日 169 0
  • 我们为什么需要图数据库?

    01 图数据库具有天然可解释性图数据库是基于图模型,对图数据进行存储、操作和访问的一项技术,即使没有专业的图论知识储备,也能轻松理解。它可以接受比实时查询更为复杂的分析需求,来挖掘图数据中的潜在价值。从分类上来说,图数据库属于 NoSQL 的一种。图模型是图数据库中的重要概念。图模型由两个要素组成:节点和边。每个节点代表一个实体(一个人,地方,事物或其他数据),每条边代表两个节...

    Java 2020年04月20日 133 0
  • (三)SpringBoot项目的日志配置

    SLF4j+Logback的组合一、SpringBoot的日志框架选用的什么技术?SpringBoot的日志框架选用的是目前市面上最流行的SLF4j+Logback的组合,SLF4j负责日志门面,Logback负责日志实现。日志门面SLF4j框架图谱视频解释上面的图谱:二、如何统一项目中所有的日志到SLF4j?项目中别的框架使用了各种日志,并非SLF4j,那么就需要统一日志,最...

    Java 2020年04月20日 139 0
  • Springboot 2.0打包与自定义launch.script

    今天和首架聊到springboot的配置参数问题。他说,这些配置的参数,开发人员拷贝来拷贝去的,很容易出错,不如我们屏蔽一下吧。确实,经过工程师的ctrl+c和ctrl+v,大多数重要的参数已经面目全非,完全不是当初的模样。我见过太多这样的案例,所以我表示赞同。为什么复制粘贴也会出问题?有两个原因:因为提供者善变;因为使用者骄傲。我摸着首架的手说:可以开工了。需求和思考随着我们...

    Java 2020年04月19日 130 0
  • 全方位解析Java的序列化

    前言相信大家日常开发中,经常看到Java对象“implements Serializable”。那么,它到底有什么用呢?本文从以下几个角度来解析序列这一块知识点~什么是Java序列化?为什么需要序列化?序列化用途Java序列化常用API序列化的使用序列化底层日常开发序列化的注意点序列化常见面试题一、什么是Java序列化?序列化:把Java对象转换为字节序列的过程反序列:把字节序...

    Java 2020年04月19日 103 0
  • MyBatis 3.5.4 新特性

    MyBatis 3.5.4 发布于 2020年2月3日,其中最大的特点是:摒弃了繁琐的@Results和@ConstructorArgs注解。MyBatis官网的说明是这样的:看似轻描淡写的一句话,却是对程序员双手的极大解放。不妨看下面的例子:@Results在MyBatis < 3.5.4版本的写法是这样的:@Results在MyBatis == 3.5.4版本已被取消...

    Java 2020年04月19日 212 0