
Java编程语言
文章平均质量分 89
java技术栈的方方面面,包含Java基础、Java高并发放编程、Java相关生态环境(Spring、Spring boot、Spring cloud、Spring cloud alibaba等)
52it.club
1、【极客精神】具有较强行业敏锐度,喜欢追逐前沿技术(docker、k8s、elasticsearch、Nginx、mongodb、spring boot/spring cloud等开源软件)、并关注前沿技术在业务中的价值;时刻清理自我,过去的经历不再重要,面对未来,我始终保持一颗学习的心态;
2、【团队管理】擅长团队组建与扩充、产品(尤其是软件产品)研发管理体系的建立与完善;极强的适应能力、组织能力、接受能力和应变能力,友善处理人际关系;曾带领研发团队(UI、前端、后端、测试、产品)高效完成电商、新媒体、物联网产品等产品
3、【项目丰富】开发过多种类型的产品,其中包括电商、股票理财、资讯等
展开
-
「技术分享」腾讯疯狂扩招中,只有不断Up知识才有可能拿高薪
今年的秋招基本已经进入大规模的开奖季了,很多小伙伴收获不错,拿到了心仪的offer。各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。俗话说得好,他山之石,可以攻玉,多看多借鉴还是有帮助的,这次腾讯也在疯狂招人!肝完这份八股文,38K妥了!这份总结内容涵盖极广,包含了 14 个技术栈: 基础篇 JVM 篇 多线程 &并发篇 Spring 篇 MyBatis 篇 Sp原创 2021-11-02 19:26:26 · 320 阅读 · 0 评论 -
【Spring Security】解答Spring Boot 中密码加密的正确方式?
Spring Boot 项目中密码如何加密先说一句:密码是采用非对称加密是无法解密的。密码无法解密,还是为了确保系统安全。今天就来和大家聊一聊,密码要如何处理,才能在最大程度上确保我们的系统安全。密码加密我们一般会用到散列函数,又称散列算法、哈希函数,这是一种从任何数据中创建数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来,然后将数据打乱混合,重新创建一个散列值。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表原创 2021-05-24 14:13:57 · 881 阅读 · 1 评论 -
【Spring Security】分布式架构下,Spring Security 要如何处理 session 共享?
集群会话方案在传统的单服务架构中,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图:在这样的架构中,会出现一些单服务中不存在的问题,例如客户端发起一个请求,这个请求到达 Nginx 上之后,被 Nginx 转发到 Tomcat A 上,然后在 Tomcat A 上往 session 中保存了一份数据,下次又来一个请求,这个请求被转发到 Tomcat B 上,此时再去 Session 中获取数据,原创 2021-05-19 14:16:50 · 1077 阅读 · 1 评论 -
【云原生】福利Spring Native beta发布,原生JVM调优或许将成为过去式
实际上,这意味着自Spring成立以来,除了Spring支持的常规Java虚拟机之外,我们还将添加Beta支持,以使用GraalVM将Spring应用程序编译到本机映像中,从而提供一种部署Spring应用程序的新方法。支持Java和Kotlin。这些本机Spring应用程序可以部署为独立的可执行文件(无需安装JVM),并提供有趣的特性,包括几乎即时启动(通常<100ms),即时峰值性能和较低的内存消耗,但所需的构建时间和运行时优化次数少于JVM。Spring 团队日前发布了 Sprin..原创 2021-05-19 10:39:55 · 430 阅读 · 0 评论 -
【Spring Security】如何实现多设备同一时间只允许一个账号登录(即前登录用户被后登录用户挤下线)?只需简单两步!
1.需求分析在同一个系统中,我们可能只允许一个用户在一个终端上登录,一般来说这可能是出于安全方面的考虑,但是也有一些情况是出于业务上的考虑,需求就是业务原因要求一个用户只能在一个设备上登录。要实现一个用户不可以同时在两台设备上登录,我们有两种思路:后来的登录自动踢掉前面的登录。如果用户已经登录,则不允许后来者登录。这种思路都能实现这个功能,具体使用哪一个,还要看我们具体的需求。在 Spring Security 中,这两种都很好实现,一个配置就可以搞定。2.具体实现2.1 踢掉已经登录用原创 2021-05-18 20:18:24 · 10756 阅读 · 2 评论 -
【Spring Security】如何在登录认证中添加验证码
前面介绍了spring security 基础配置,并没有对认证逻辑进行过多的改动,现在我们就来介绍一下自定义认证逻辑,无论是添加登录验证码还是修改登录数据库格式,都需要对认证逻辑作出调整。在我们完成自定义认证之前,我们需要再了解一下认证流程。认证流程简析AuthenticationProvider 定义了 Spring Security 中的验证逻辑,我们来看下 AuthenticationProvider 的定义:public interface AuthenticationProvider {原创 2021-05-06 19:29:41 · 1548 阅读 · 0 评论 -
【Spring Security】在微服务项目中,Spring Security 比 Shiro 强在哪?
在微服务项目中,Spring Security 比 Shiro 强在哪?虽然目前 Spring Security 一片火热,但是 Shiro 的市场依然存在,今天我就来稍微的说一说这两个框架的,方便大家在实际项目中选择适合自己的安全管理框架。首先我要声明一点,框架无所谓好坏,关键是适合当前项目场景,作为一个年轻的程序员更不应该厚此薄彼,或者拒绝学习某一个框架。所以接下来主要结合我自己的经验来说一说这两个框架的优缺点,没有提到的地方也欢迎大家留言补充。Spring Security1. 因为 Sprin原创 2021-05-02 18:11:32 · 558 阅读 · 1 评论 -
【Spring Security】Spring Boot + Spring Security 实现自动登录功能
spring security 如何实现安全的自动登录自动登录是我们在软件开发时一个非常常见的功能,很多网站我们在登录的时候都会有记住密码选项,毕竟总让用户输入用户名密码是一件很麻烦的事。自动登录功能就是,用户在登录成功后,在某一段时间内,如果用户关闭了浏览器并重新打开,或者服务器重启了,都不需要用户重新登录了,用户依然可以直接访问接口数据。作为一个常见的功能,我们的 Spring Security 肯定也提供了相应的支持,本文我们就来看下 Spring Security 中如何实现这个功能。这个功能实现原创 2021-05-02 16:06:46 · 533 阅读 · 0 评论 -
【Spring Security】Spring Security+Spring Data Jpa逆向生成数据库表
Spring Security+Spring Data Jpa 环境快速搭建我们还是继续我们之前的安全管理权限框架学习,我们这里使用到的技术有 Spring Security 和 Spring Data Jpa 强强联手,安全管理没有简单,只有更简单!之前篇幅中我们的用户数据都保存在内存中,虽然中途介绍了 JdbcUserDetailsManager,但是使用起来依然灵活性不便,所以今天我要采用一个更加灵活的定义方式。那就是我们自己来定义授权数据库的模型。为了操作简单,我这里引入 Spring Data原创 2021-05-01 02:05:24 · 607 阅读 · 1 评论 -
【Spring Security】 如何将用户数据存入数据库?
Spring Security 如何将用户数据存入数据库?Spring Security 介绍到现在,我们还没连上数据库呢。真正的项目中,大部分情况下,我们都是自己设计权限数据库。不过,Spring Security 也给我们提供了一个它自己设计好的权限数据库,这里我们先来看看这是怎么回事!我们先来学这个简单的,然后我们再去看复杂的。1.UserDetailServiceSpring Security 支持多种不同的数据源,这些不同的数据源最终都将被封装成 UserDetailsService 的实例原创 2021-04-27 16:25:57 · 857 阅读 · 0 评论 -
【Spring Security】Spring Security 中的怎么样增加授权操作?只需要2步即可实现
Spring Security 中的怎么样增加授权操作?我们都知道安全认证框架避不开两大核心功能,第一是认证,第二个是授权;通过前面文章的介绍,Spring Security 中的登录认证我们就先告一个小小段落。在本系列未来的教程中,我们还会继续涉及到 Spring Security 中的登录认证问题,这个我们以后再说。今天我们就通过一个简单的案例来看看 Spring Security 中的授权操作。1.授权所谓的授权,就是用户如果要访问某一个资源,我们要去检查用户是否具备这样的权限,如果具备就允许访原创 2021-04-25 19:02:26 · 368 阅读 · 0 评论 -
【Spring Security】 做前后端分离配置,通过JSON进行数据交互
Spring Security 做前后端分离,通过 JSON数据交互前后端分离开发后,认证这一块到底是使用传统的 session 还是使用像 JWT 这样的 token 来解决呢?这确实代表了两种不同的方向。传统的通过 session 来记录用户认证信息的方式我们可以理解为这是一种有状态登录,而 JWT 则代表了一种无状态登录。可能有小伙伴对这个概念还不太熟悉,我这里就先来科普一下有状态登录和无状态登录。1. 无状态登录1.1 什么是有状态有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客原创 2021-04-25 15:17:34 · 496 阅读 · 0 评论 -
【Spring Security】手把手带你捋一遍 Spring Security 登录流程
背景为什么想和大家捋一捋 Spring Security 登录流程呢?这是因为之前小伙伴们的一个提问:如何在 Spring Security 中动态修改用户信息?如果你搞清楚了 Spring Security 登录流程,这其实不是问题。我们先来大致描述一下问题场景:你在服务端的安全管理使用了 Spring Security,用户登录成功之后,Spring Security 帮你把用户信息保存在Session 里,但是具体保存在哪里,要是不深究你可能就不知道,这带来了一个问题,如果用户在前端操作修改了原创 2021-04-25 12:50:29 · 703 阅读 · 0 评论 -
「笔试题」最近做了一个招银网络科技Java岗位在线笔试题,给有需要的朋友了解学习一下!
编程题一大概意思是,给一段字符串,然后统计该字符串中相同字符个数,并以字符串+该字符串个数组合排列成新的字符串。如输入"sssdhibdhidhi " ,需要返回结果 "s3d3h3i3b1"。话不多说,直接上代码:import java.util.*;public class Main { public static void main(String[] args) { LinkedHashMap<Character,Integer> hashMap =.原创 2021-04-24 17:47:58 · 11011 阅读 · 0 评论 -
【Spring Security】手把手带你快速入门Spring Security之WebSecurityConfigurerAdapter初次体验
【Spring Security】手把手带你快速入门Spring Security之WebSecurityConfigurerAdapter初次体验Spring Security 概述Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。Spring Security 致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求特性:原创 2021-04-24 00:47:07 · 1554 阅读 · 1 评论 -
「BAT面试宝典」面试官:你知道Dubbo怎么做优雅上下线的吗?你:优雅上下线是啥?
作者 l Hollis来源 l Hollis(ID:hollischuang)最近无论是校招还是社招,都进行的如火如荼,我也承担了很多的面试工作,在一次面试过程中,和候选人聊了一些关于Dubbo的知识。Dubbo是一个比较著名的RPC框架,很多人对于他的一些网络通信、通信协议、动态代理等等都有一定的了解,这位候选人也一样。但是,我接下来问了他一个问题:你们在使用Dubbo的时候,应用如果重启,怎么保证一个请求不会被中断处理的呢?他没怎么说的上来,我以为他不理解我的问题,我接着问他:我原创 2021-04-19 18:57:13 · 292 阅读 · 0 评论 -
【Spring Cloud Alibaba】分布式消息中间件 Spring Cloud Stream 事件驱动
1. 简介事件驱动架构(Event-driven 架构,简称 EDA)是软件设计领域内的一套程序设计模型。这套模型的意义是所有的操作通过事件的发送/接收来完成。举个例子,比如一个订单的创建在传统软件设计中服务端通过接口暴露创建订单的动作,然后客户端访问创建订单。在事件驱动设计里,订单的创建通过接收订单事件来完成,这个过程中有事件发送者和事件接受者这两个模块,事件发送者的作用是发送订单事件,事件接受者的作用的接收订单事件。Spring Cloud Stream 是一套基于消息的事件驱动开发框架,它提供了一原创 2021-04-05 12:48:08 · 316 阅读 · 0 评论 -
【Spring Cloud Alibaba】Spring Cloud Alibaba 分布式事务中间件Seata快速实践
Seata 是什么?Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。AT 模式前提基于支持本地 ACID 事务的关系型数据库。 Java 应用,通过 JDBC 访问数据库。整体机制两阶段提交协议的演变: 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。 二阶段: 提交异步化,非常快速地完成。原创 2021-04-02 11:19:40 · 522 阅读 · 0 评论 -
【技术手册】Java 开发者必备手册《Spring Cloud Alibaba 从入门到实战》
Java 开发者必备手册《Spring Cloud Alibaba 从入门到实战》简介大咖寄语目录精彩导读基础知识篇分布式配置服务注册与发现分布式服务调用服务熔断和限流分布式消息(事件)驱动分布式事务简介Spring Cloud Alibaba 脱胎于阿里中间件团队内部,经受了阿里多年海量业务场景的考验,是目前最成熟、功能最丰富也最有前景的 Spring Cloud 实现。相信在未来 Spring Cloud Alibaba 获得更多开发者的亲睐与应用,这也将成为 Java 开发者必不可少的技能之一。原创 2021-04-02 01:01:40 · 441 阅读 · 0 评论 -
【Spring Cloud Alibaba】使用 sentinel 实现限流&熔断实践
实验说明本实验,你将会通过一个简单的案例,学习如何使用sentinel来保护你的应用。step1 实验环境准备启动服务端首先你需要启动一套 sentinel 服务端环境#创建preparesentinel.sh 脚本文件#!/bin/bashmkdir logswget -O /home/shell/sentinel-dashboard-1.8.0.jar https://handson.oss-cn-shanghai.aliyuncs.com/sentinel-dashbo原创 2021-03-21 17:34:29 · 663 阅读 · 0 评论 -
【Spring Cloud Alibaba】Spring Cloud Alibaba 分布式服务调用实践
1. 简介在《Spring Cloud Alibaba 服务注册与发现》篇中曾提到,Spring Cloud Alibaba Nacos Discovery 能无缝整合 Spring Cloud OpenFeign。换言之,Spring Cloud Alibaba 延续了 Spring Cloud 分布式服务调用的特性。除此之外,Spring Cloud Alibaba 引入了 Dubbo Spring Cloud,扩展了分布式服务调用能力,不仅能使 Apache Dubbo 和 OpenFeign 共原创 2021-03-19 21:29:49 · 550 阅读 · 0 评论 -
【Spring Cloud Alibaba】Spring Cloud Alibaba 分布式配置Nacos实践
课程说明本次课程,你将会学习如下:使用 Nacos Config 作为 Spring Cloud 分布式配置 使用 Nacos Config 实现 Bean 动态刷新 了解 Nacos Config 高级配置2. 框架简介Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应原创 2021-03-19 12:44:27 · 453 阅读 · 0 评论 -
「技术工具」阿里开源Java在线诊断工具 Arthas 进阶教程
Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。本教程会以一个普通的Spring Boot应用为例,演示Arthas命令的详细用法。Github: https://github.com/alibaba/arthas 文档: https://arthas.aliyun.com/doc/启动demo下载demo-arthas-spring-boot.jar,再用java -jar命令启动:wget https://code.aliyun.com/middlewar...原创 2021-03-17 11:23:45 · 569 阅读 · 0 评论 -
「技术工具」阿里开源Java在线诊断工具 Arthas 快速入门教程
Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和诊断。Github: https://github.com/alibaba/arthas 文档: https://arthas.aliyun.com/doc/启动arthas-demo下载art...原创 2021-03-17 10:55:47 · 319 阅读 · 0 评论 -
「网络编程」Netty入门(Netty4.x使用指南)
前言问题现如今,我们使用通用的应用程序或库来相互通信。例如,我们经常使用HTTP客户端库从服务器上获取信息并通过web服务执行远程过程调用。但是,通用协议或它的实现有时并不能很好的伸缩。这就像我们不会使用通用HTTP服务器来交换大文件、电子邮件、还有像金融信息、游戏数据等实时信息。这些业务所需要的是高度优化实现协议,用于专门的目的。例如,您可能希望实现一个针对基于ajax的聊天应用程序、媒体流应用、大文件传输进行优化的http服务器。您甚至可能想要设计并实现一个完全符合您的需求的新协议。另一个不可避原创 2021-03-15 13:45:20 · 359 阅读 · 0 评论 -
【设计模式】看Mybatis源码使用的 9 种设计模式,真是太有用了
虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。Mybatis至少遇到了以下的设计模式的使用:Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder; 工厂模式,例如SqlSessionFactory、ObjectFa转载 2020-11-04 12:03:50 · 223 阅读 · 0 评论 -
【Java基础】Java的8种基本数据类型深入介绍
Java的8种基本数据类型介绍基本数据类型存储大小说明,在了解存储大小说明之前我们先来了解几个基本的概念:位(bit):位表示的是二进制位,一般称为比特,是计算机存储的最小单位。字节(byte):字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解 释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit)。字:计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。一个字通常由一个或多个(一般是字节的整数位)字节构成。例如286微机的字由2个原创 2020-06-21 01:18:23 · 348 阅读 · 0 评论 -
java jvm调优常用参数说明
参数说明-Xmx3550m:设置JVM最大堆内存为3550M。-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。-Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统...原创 2019-01-06 21:47:54 · 202 阅读 · 0 评论