这份github上被14万人点赞的Java教程太强了

2021-12-07
阅读 2 分钟
2.5k
前几天有个小伙伴加我之后问了下面的这个问题。我看到后是一脸懵逼的状态,jcombobox?实话说,我已经完全忘了在Java中还有这么个东西。

验证码这样做,瞬间高出一个逼格

2021-08-15
阅读 5 分钟
3.8k
今天推荐一款非常优秀的行为验证码AJ-Captcha(项目地址[链接]),这个项目包含了滑动拼图和文字点选两种类型的验证码,除了嵌入式交互,还提供了弹出式交互的方式,完全不影响原UI布局。

使用jwt来保护你的接口服务

2021-08-10
阅读 5 分钟
2.4k
以前写过一篇关于接口服务规范的文章,原文在此,里面关于安全性问题重点讲述了通过appid,appkey,timestamp,nonce以及sign来获取token,使用token来保障接口服务的安全。今天我们来讲述一种更加便捷的方式,使用jwt来生成token。

『假如我是面试官』RabbitMQ我会这样问

2021-06-22
阅读 6 分钟
2.5k
1. 为什么你们公司选择RabbitMQ作为消息中间件在消息队列选型时,我们调研了市场上比较常用ActiveMQ,RabbitMQ,RocketMQ,Kafka。RabbitMQ相对成熟稳定,这是我们选择它最主要的原因。社区比较活跃,有完善的资料可以参考。Rabbitmq的吞吐量可以达到万级,完全满足我们系统的要求。RabbitMQ是Erlang语言开发的,性能比...

分布式session的几种解决方案,你中意哪种?

2021-05-24
阅读 4 分钟
3.3k
而针对我最开始说的那种情况,其实就是基于session做的,客户端往购物车中添加第一个商品的时候,发送一个请求,服务到收到请求之后,创建session,然后返回当前session对应的一个JessionId,浏览器存储在cookie中,客户端往购物车添加第二个商品时,携带JessionId,服务端收到请求后,更新session。浏览器关闭后,cooki...

手撸了一个starter,同事直夸我666~

2021-05-08
阅读 4 分钟
1.9k
Spring Boot 将常见的开发功能,分成了一个个的starter,这样我们开发功能的时候只需要引入对应的starter,而不需要去引入一堆依赖了!starter可以理解为一个依赖组,其主要功能就是完成引入依赖和初始化配置。Spring 官方提供的starter 命名规范为 spring-boot-starter-xxx ,第三方提供的starter命名规范为 xxx-spring...

手把手教你接入微信支付

2021-04-07
阅读 6 分钟
6.6k
随着微信小程序的发展,越来越多的移动端应用选择了微信产品做为媒介。无论是公众号开发还是小程序开发,微信支付永远都是绕不开的话题。由于微信支付涉及了很多场景,本文我们只学习如何在公众号、小程序中接入微信支付。

Java中的深浅拷贝问题,你清楚吗?

2021-01-25
阅读 3 分钟
2.5k
拷贝这个词想必大家都很熟悉,在工作中经常需要拷贝一份文件作为副本。拷贝的好处也很明显,相较于新建来说,可以节省很大的工作量。在Java中,同样存在拷贝这个概念,拷贝的意义也是可以节省创建对象的开销。

为什么线程安全的List推荐使用CopyOnWriteArrayList,而不是Vector

2020-12-28
阅读 4 分钟
19.5k
相比很多同学在刚接触Java集合的时候,线程安全的List用的一定是Vector。但是现在用到的线程安全的List一般都会用CopyOnWriteArrayList,很少有人再去用Vector了,至于为什么,文章中会具体说到。接下来,我们先来简单分析以下Vector的源码。

从面试角度分析LinkedList源码

2020-12-18
阅读 4 分钟
2.6k
LinkedList底层是由双向链表实现的。链表好比火车,每节车厢包含了车厢和连接下一节车厢的连接点。而双向链表的每个节点不仅有指向下一个节点的指针,还有指向上一个节点的指针。在LinkedList源码中有一个Node静态类,源码如下:

从面试角度分析ArrayList源码

2020-12-15
阅读 4 分钟
1.9k
注:本系列文章中用到的jdk版本均为java8ArrayList类图如下:ArrayList的底层是由数组实现的,数组的特点是固定大小,而ArrayList实现了动态扩容。ArrayList部分变量如下,在下面的分析中会用到这些变量。 {代码...} 一、初始化ArrayList初始化ArrayList一般会使用以下两个构造器1.1 无参构造器初始化ArrayList的时候如...

为什么你写的拦截器注入不了 Java bean?

2020-11-23
阅读 4 分钟
9k
在Spring Boot项目中,拦截器经常被用来做登陆验证,日志记录等操作。拦截器是Spring提供的,所以可以将拦截器注成bean,由IOC容器来管理。实现拦截器的方式很简单,主要由以下两个步骤:

Redis还可以做哪些事?

2020-11-03
阅读 3 分钟
6.7k
在上一篇文章中,讲到了redis五大基本数据类型的使用场景,除了string,hash,list,set,zset之外,redis还提供了一些其他的数据结构(当然,严格意义上也不算数据结构),一起来看看redis还可以做哪些事?

Redis可以做哪些事?

2020-10-30
阅读 3 分钟
1.4k
Redis是一种基于键值对的NoSQL数据库,它的值主要由string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)五种基本数据结构构成,除此之外还支持一些其他的数据结构和算法。key都是由字符串构成的,那么这五种数据结构的使用场景有哪些?一起来看看!

如何设计一个牛逼的API接口

2020-10-16
阅读 4 分钟
10.2k
在日常开发中,总会接触到各种接口。前后端数据传输接口,第三方业务平台接口。一个平台的前后端数据传输接口一般都会在内网环境下通信,而且会使用安全框架,所以安全性可以得到很好的保护。这篇文章重点讨论一下提供给第三方平台的业务接口应当如何设计?我们应该考虑哪些问题?

国庆,要干几件大事

2020-10-01
阅读 2 分钟
1.2k
今年是参加工作后的第四个国庆了。前三年是怎么过的差不多都忘记了,可能是回家了,也可能是出去旅游了。今年打算过个不一样的国庆——继续熬夜掉点头发。

栈与队列简介

2020-09-28
阅读 4 分钟
1.9k
栈与队列和数组、链表、树这几种数据结构不太一样。栈与队列主要是做为程序员的工具来使用,它们主要做为构思算法的辅助工具,而不是完全的数据存储工具。

一文了解Zookeeper

2020-09-28
阅读 3 分钟
5.2k
Zookeeper主要负责存储和管理大家都关心的数据,一旦这些数据的状态发生变化,Zookeeper就会通知那些注册在Zookeeper上的服务。简单来讲就是zookeeper=文件系统+通知机制。

“锟斤拷”的前世今生

2020-09-19
阅读 3 分钟
17.1k
不管是在工作中还是生活中,相信很多同学都被“锟斤拷”深深的毒害过,比如这样,这样,还有这样,那么究竟是为什么会出现这些奇怪的字符?接下来我们一探究竟!ASCII编码在计算机底层都是用0和1进行存储的,ASCII编码将所有的字母及符号进行编码后转成二进制的0和1进行存储,字母和符号占1个字节(即8bit),标准的ASCII...

使用枚举的正确姿势

2020-09-19
阅读 4 分钟
2.5k
枚举是JDK1.5引入的新特性。被enum关键字修饰的类就是一个枚举类。关于枚举,阿里巴巴开发手册有这样两条建议:枚举类名带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。如果变量值仅在一个固定范围内变化用 enum 类型来定义。一 枚举类有哪些特点创建一个ColorEnum的枚举类,通过编译,再反编译看看它发...

揭开链表的真面目

2020-09-01
阅读 5 分钟
2.2k
使用链表结构可以克服数组结构需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。

揭开数组的真面目

2020-08-29
阅读 4 分钟
5.4k
数组做为一种基础的数据存储结构,应用十分广泛。数组是用连续的内存空间来存储固定长度的、相同数据类型的一种数据结构。数据结构是跟语言无关的,这里,使用java来进行数组的相关操作。数组的索引是从0开始的。

聊聊mysql中的int(1)

2020-08-13
阅读 2 分钟
6.6k
昨天有个读者问了我这样一个问题在mysql中建表的时候,我设置一个字段为int类型,长度为1,但是我发现这个字段却可以存储任意长度的数字,这是什么情况?这个问题在我刚接触数据库的时候也遇到过,我觉得有必要写一篇文章来解释一下。

如何有效防止sql注入

2020-08-12
阅读 4 分钟
13.6k
SQL注入攻击是黑客对数据库进行攻击常用的手段之一,随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回...

《RabbitMQ》什么是死信队列

2020-08-07
阅读 5 分钟
4.4k
一 什么是死信队列当一条消息在队列中出现以下三种情况的时候,该消息就会变成一条死信。消息被拒绝(basic.reject / basic.nack),并且requeue = false消息TTL过期队列达到最大长度当消息在一个队列中变成一个死信之后,如果配置了死信队列,它将被重新publish到死信交换机,死信交换机将死信投递到一个队列上,这个队列...

《RabbitMQ》如何保证消息不被重复消费

2020-08-06
阅读 3 分钟
9.7k
由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。这时候生产者就会重新发送一遍这条消息。

《RabbitMQ》如何保证消息的可靠性

2020-08-05
阅读 5 分钟
6.3k
一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失。一 消息生产者没有把消息成功发送到MQ1.1 事务机制AMQP协议提供了事务机制,在投递消息时开启事务支持,如果消息投递失败,则回滚事务。自定义事务管理器 {代码...} 修改yml {代码...} 开启事务支持 {代码...} 消息未接收时...

你不是说你会Aop吗?

2020-08-04
阅读 3 分钟
1.6k
一大早,小王就急匆匆的跑过来找我,说:周哥,那个记录日志的功能我想请教一下。因为公司某个项目要跟别的平台做对接,我们这边需要给他们提供一套接口。昨天,我就将记录接口日志的工作安排给了小王。下面是我跟小王的主要对话。我:说说怎么了?小王:我将记录接口日志的功能放到了每个controller中,现在感觉有点繁...

面试官:说一下你常用的加密算法

2020-07-31
阅读 10 分钟
11.9k
常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。其中SHA后面的数字表示的是加密后的字符串长度,SHA1默认会产生一个160位的信息摘要。

来了,来了,你们要的Nginx教程来了

2020-07-22
阅读 5 分钟
15k
Nginx是一个高性能的http和反向代理服务器,其特点是占用内存小,并发能力强。Nginx专为性能优化而开发,性能是其最重要的考量,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。