技术
文章平均质量分 85
站在风口的java
这个作者很懒,什么都没留下…
展开
-
Github限时开放,阿里内部强推微服务容器化参考指南我粉了
如今,无论是开发人员、运维人员还是技术管理者,言系统架构必谈微服务和容器化,必谈分布式和互联网架构。但是对于大多数IT从业者来说,微服务、容器化、Kubernetes 等涉及很多新技术,如果完全摸索着去学习,无形中会增加学习时间,并延长系统的新架构改造周期,而且其他人遇到的问题还要重新解决。这无疑会给我们的开发效率造成很大的影响。原创 2022-04-06 22:13:42 · 90 阅读 · 0 评论 -
目标阿里P7 30岁程序员三次面试,意外收到offer(Java研发岗)
进阿里一直都是身为程序员的我,最初的梦想,经过去年面试蚂蚁金服失败的挫折后,今年再次鼓起勇气投简历,经过一位前辈的内推省了很多流程,经过多重面试后最终通过。当时收到offer的时候整个人开心的要跳起来,因为最初的目标实现了。当然能进阿里也是感谢去年面试官的一些建议,告诉了我一些需要补进的知识盲区,然后经过一年的学习以及总结最终达成心愿,具体面试过程下面详细分析。原创 2022-04-02 21:54:10 · 140 阅读 · 0 评论 -
泪目,跳槽太不容易,蚂蚁金服三轮面试,四个小时灵魂拷问
本人是双非院校科班研究生,Java开发3年工作经验,以下是最近的面试总结:先说下我的面试准备经历,为了保证自己简历有较大一定的概率通过筛选,我在2018毕业后面试了多家公司,去了一家上海一家小公司一直工作到今年5月。原创 2022-04-02 21:51:43 · 242 阅读 · 0 评论 -
渣硕试水字节跳动,本以为简历都过不了,123+HR面直接拿到意向书
注意:我投的是java后端开发~面试项目大部分问题是围绕我的开源项目 蘑菇博客 展开的,还有就是我之前准备面试的一些刷题笔记(大佬请轻喷..)原创 2022-04-02 21:46:54 · 138 阅读 · 0 评论 -
如何使用SpringBoot写一个属于自己的Starter
(一)概述SpringBoot以其自动装配的能力被广泛应用,我们在写代码时肯定遇到过很多spring-boot-starter命名的依赖,比如spring-boot-starter-web,在pom文件中引入这些starter依赖后,SpringBoot就能通过自动装配的技术扫描到这些类并装载到Bean容器中。除了SpringBoot官方的这些Starter外,我们自己也可以开发Starter。为了和官方的starter区分,建议自定义的starter命名格式为xxxx-spring-boot-star原创 2022-03-10 21:59:53 · 3809 阅读 · 1 评论 -
90% 的 Java 程序员都说不上来:为何 Java 代码越执行越快?
经常听到 Java 性能不如 C/C++ 的言论,也经常听说 Java 程序需要预热,那么其中主要原因是啥呢?原创 2022-03-08 15:28:21 · 523 阅读 · 0 评论 -
杂谈 : 日志门户 slf4j 如何集成日志框架的
一 . 前言这一篇讨论一点简单得东西 , 主要来了解一下什么叫日志门户 , 他又是怎么集成的 .二 . 日志门户阿里出版的 Java开发手册里面有这样一个强制规约 :应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架 (SLF4J、JCL–Jakarta Commons Logging)中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。import org.slf4j.Logger;import org.slf4j.LoggerFac原创 2022-03-07 15:02:39 · 515 阅读 · 0 评论 -
基于 Kafka 的实时数仓在搜索的实践应用
一、概述Apache Kafka 发展至今,已经是一个很成熟的消息队列组件了,也是大数据生态圈中不可或缺的一员。Apache Kafka 社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得 Apache Kafka 功能越发丰富、性能越发稳定,成为企业大数据技术架构解决方案中重要的一环。Apache Kafka 作为一个热门消息队列中间件,具备高效可靠的消息处理能力,且拥有非常广泛的应用领域。那么,今天就来聊一聊基于 Kafka 的实时数仓在搜索的实践应用。二、为什么需要 Kafka在设计大原创 2022-02-28 15:54:43 · 156 阅读 · 0 评论 -
使用kafka提升你的订单接口吞吐量
前面的文章,我们使用的是jdk自带的队列,实现了服务的吞吐量增加,但是我们知道的是,jdk的队列时基于内存的,即当请求量很大的时候,大量的请求缓存在内存当中,对于内存的要求还是很大的,不是很适合并发量很大的业务场景。尤其是在电商的场景,都会通过消息队列的削峰,解耦,从而提高系统的吞吐量,保证稳定性。所以我们接下来,继续对系统进行改进,引入kafka,进一步对于稳定性进行完善。关于kafka的安装,介绍,集成,请参考文章开头给出的链接内的具体内容。一、引入Kafka引入依赖:<!-- https原创 2022-02-27 21:18:43 · 296 阅读 · 0 评论 -
使用kafka提升你的订单接口吞吐量
前面的文章,我们使用的是jdk自带的队列,实现了服务的吞吐量增加,但是我们知道的是,jdk的队列时基于内存的,即当请求量很大的时候,大量的请求缓存在内存当中,对于内存的要求还是很大的,不是很适合并发量很大的业务场景。尤其是在电商的场景,都会通过消息队列的削峰,解耦,从而提高系统的吞吐量,保证稳定性。所以我们接下来,继续对系统进行改进,引入kafka,进一步对于稳定性进行完善。关于kafka的安装,介绍,集成,请参考文章开头给出的链接内的具体内容。一、引入Kafka引入依赖:<!-- https原创 2022-02-26 13:42:30 · 291 阅读 · 0 评论 -
【无标题】
Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能。我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据。NMT介绍工欲善其事必先利其器,我们先把相关需要的配置和工具介绍清楚,再通过例子来看看具体如何使用NMT。打开NMTNMT必须先通过VM启动参数中打开,不过要注意的是,打开NMT会带来5%-10%的性能损耗。-XX:NativeMemoryTracking=[off | summary | detail]# of原创 2022-01-24 19:29:45 · 128 阅读 · 0 评论 -
一次因线程池使用不当造成生产事故的排查记录与思考
美好的一天从bug结束某日当我点开熟悉的界面,一个又一个请求失败的提示赫然出现在屏幕上,不会是昨晚上线的代码有问题吧?吓得我急忙按F12查看了响应——“exception”:“java.lang.OutOfMemoryError”,“message”:“unable to create new native thread”出现了内存溢出的情况,无法创建更多的本地线程。监控中显端倪接着查看了实例的监控大盘,发现每个实例的JVM线程数量都处于9000+的规模,且还有上涨的趋势。这是其中一个实例的线原创 2022-01-24 19:27:18 · 207 阅读 · 1 评论 -
面试官:你给我说一下什么是时间轮吧?
今天我带大家来卷一下时间轮吧,这个玩意其实还是挺实用的。常见于各种框架之中,偶现于面试环节,理解起来稍微有点难度,但是知道原理之后也就觉得:大多数人谈到时间轮的时候都会从 netty 开始聊。我就不一样了,我想从 Dubbo 里面开始讲,毕竟我第一次接触到时间轮其实是在 Dubbo 里面,当时就惊艳到我了。而且,Dubbo 的时间轮也是从 Netty 的源码里面拿出来的,基本一模一样。时间轮在 Dubbo 里面有好几次使用,比如心跳包的发送、请求调用超时时间的检测、还有集群容错策略里面。我就从原创 2022-01-22 17:19:08 · 160 阅读 · 0 评论 -
RocketMQ:消息存储机制详解与源码解析
文章目录消息存储机制1.前言⒉.核心存储类:DefaultMessageStore3.消息存储流程4.消息存储文件5.存储文件内存映射5.1.MapperFileQueue5.2.MappedFile5.2.1.commit5.2.2.flush5.3.TransientStorePool6.刷盘机制6.1.同步刷盘6.2.异步刷盘消息存储机制1.前言本文主要讲解内容是Broker接收到消息生产者发送的消息之后,如何将消息持久化存储在Broker中。2.核心存储类:De原创 2022-01-22 17:15:52 · 295 阅读 · 0 评论 -
SpringBoot加email服务,你说有没有搞头?
1. 开启邮箱POP3/SMTP服务登录qq邮箱后,点击左上方的设置,选择账户,如下图。然后一直往下滑,看到如下图的POP3/SMTP服务,点击开启,会让帮定的密保手机号发个[短信]到指定号码,然后会收到一个授权码,这个授权码在appliction.properties配置中会用到,一定要好好保存,开启后如下图2. springboot项目添加依赖创建springboot项目,添加email依赖<dependency> <groupId>org.springfr原创 2022-01-22 17:14:02 · 2952 阅读 · 0 评论 -
“低代码”是什么?程序员会被取代吗?
前言在当今世界,各个商业、互联网、企业之间的竞争异常激烈,各个中小企业都面临着数字化转型的挑战,为什么要数字化转型,因为数字化转型可以使企业变得更加敏捷,创新成本更低。但是数字化转型的道路具有一定的复杂性,需要有合格的开发人员能够快速准确地开发出符合复杂业务的应用程序和流程。而开发人员从0到1的开发系统,存在着一定的风险,因为这会有很长的交付时间,并且成本可能会非常高,而且对开发人员的专业程度有着高度的依赖性。大多数组织、企业都需要熟练、专业的开发人员,而按照二八定律,真正的熟练的高级开发人员是比较短原创 2022-01-22 17:13:15 · 746 阅读 · 0 评论 -
会使用自定义注解 ≈ 好的程序员?教你结合 AOP 切面打印请求日志
一、前言今天就带着大伙梳理一遍注解也就是 @interface 正确的打开方式,除此之外,结合 AOP 切面统一打印出入参日志,对于每个访问注解绑定的接口方法的请求都一目了然,不仅方便接口的调试,还能给你一个优雅、整齐且大方的控制台日志记录。二、效果演示2.1 访问接口2.2 控制台日志输出三、如何设计一个注解3.1 概念知其然,要知其所以然,所以我们先来康康官方对注解的描述是什么:An annotation is a form of metadata, that can be a原创 2022-01-22 17:12:17 · 116 阅读 · 0 评论 -
Mybatis调试经常需要输出SQL语句,但你知道是怎么输出的嘛?
Java 开发中常用的几款日志框架有很多种,并且这些日志框架来源于不同的开源组织,给用户暴露的接口也有很多不同之处,所以很多开源框架会自己定义一套统一的日志接口,兼容上述第三方日志框架,供上层使用。一般实现的方式是使用适配器模式,将各个第三方日志框架接口转换为框架内部自定义的日志接口。MyBatis 也提供了类似的实现,这里我们就来简单了解一下。适配器模式是什么?简单来说,适配器模式主要解决的是由于接口不能兼容而导致类无法使用的问题,这在处理遗留代码以及集成第三方框架的时候用得比较多。其核心原理是原创 2022-01-22 17:11:25 · 315 阅读 · 0 评论 -
Mac + raspberrypi NAT模式搭建公司备用服务器
一、前言公司的上网策略使用了mac地址白名单+mac地址绑定固定ip的方式,申请的每台公司主机需要提交对应mac addr-ip单据才能入网(策略目测是在网关做的), 并且只有公司内资产才能入内网。作为全栈开发工程师,常常需要与前端联调代码,联调过程中我经常啥也没法干,坐等前端调试完毕(并且前端经常发一些业务batch请求再加我本地还有很多其他项目的服务,cpu吃满,卡的要死)。所以萌生了带家里的树莓派过来搭建个人项目测试服务器的想法,对接测试环境数据库,这样既缓解开发主机压力,并且能作为团队的备用测试原创 2022-01-22 17:10:28 · 237 阅读 · 0 评论 -
记一次 SpringBoot 项目启动失败排查 和 DubboReference 源码分析
问题现象在我们项目中有一个公司内部的二方包,里面有一个类:MvcInterceptorAutoConfiguration ,里面定一个了一个 Bean accessContextResolver 。生成这个 Bean 需要自动注入另一个 Bean :accessContextService。代码如下:public class MvcInterceptorAutoConfiguration implements WebMvcConfigurer, ApplicationContextAware {原创 2022-01-22 17:05:27 · 481 阅读 · 1 评论 -
这一致性hash算法,有点意思啊
场景在我们的系统中不可避免要进行数据的存储,比如系统中会有用户上传的大量图片,这些图片数据要存放在文件服务器磁盘上,而一台服务器的存储空间往往是有限的,那么当图片量超过服务器磁盘的时候,一般都需要进行扩容,使用很多台服务器来存放我们的图片数据。而这时我们会面临着两个问题:如何确定将一张图片存放在哪一台服务器上,以及想要查看某一张图片时应该去哪个服务器找;如何保证在某一台服务器崩溃或磁盘损坏时,不让图片数据丢失。这两个问题是在设计一个可升缩系统时,需要重点考虑的两个核心问题,第一个问题本质是数据原创 2022-01-22 17:04:08 · 97 阅读 · 0 评论 -
腾讯三面:40 亿个 QQ 号码如何去重?
今天,我们来聊一道常见的考题,也出现在腾讯面试的三面环节,非常有意思。具体的题目如下:文件中有40亿个QQ号码,请设计算法对QQ号码去重,相同的QQ号码仅保留一个,内存限制1G.这个题目的意思应该很清楚了,比较直白。能否做对这道题目,很大程度上就决定了能否拿下腾讯的offer,有一定的技巧性,一起来看下吧。在原题中,实际有40亿个QQ号码,为了方便起见,在图解和叙述时,仅以4个QQ为例来说明。方法一:排序很自然地,最简单的方式是对所有的QQ号码进行排序,重复的QQ号码必然相邻,保留第一.原创 2022-01-22 16:52:38 · 131 阅读 · 0 评论 -
面试官:什么是 YAML?和 Spring Boot 有什么关系?
1、什么是YAMLYAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。YAML的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。主要强度这种语音是以数据为中心,而不是以标记语言为重心,例如像xml语言就会使用大量的标记。YAML是一个可读性高,易于理解,用来表达数据序列化的格式。它的语法和其他高级语言类似,并且可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别原创 2022-01-21 16:09:31 · 79 阅读 · 0 评论 -
Kafka的生产者与消费者机制+分区策略你这还不懂?
什么是KafkaKafka是最初由Linkedin公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目,也是一个开源【分布式流处理平台】,由Scala和Java编写,(也当做MQ系统,但不是纯粹的消息系统)目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。目前越来越多的开源分布式处理系统如 Cloudera、Storm、Spark、Flink 等都支持与 Kafka 集成生产者与消费者机制在Kaf原创 2022-01-21 16:08:47 · 308 阅读 · 0 评论 -
MongoDB快速上手,聊聊这款火了一阵又销声匿迹的非关系型数据库
概述事情的起因要从最近的一个新产品说起,最近部门有一个新的大数据产品规划,在考虑技术实现时,有一个动态表字段扩展的需求,比如原来表结构里只有a、b字段,需要不断的往里新增c、d、e等等字段,并且数据量也特别大。于是就去寻找实现方案,针对这种数据模型无法确定的情况,非关系型数据库是比较合适的,于是找到了MongoDB。虽然最后选择了使用ES来实现,但是在这段时间也把MongoDB摸了一遍,今天就分享一下。(一)MongoDB业务场景介绍一般在技术选型时,我们会把数据库的第一选择给Mysql,但是关系型原创 2022-01-21 16:07:32 · 104 阅读 · 0 评论 -
RabbitMQ,RocketMQ,Kafka 事务性,消息丢失和重复发送处理策略
分布式事务什么是分布式事务我们的服务器从单机发展到拥有多台机器的分布式系统,各个系统之前需要借助于网络进行通信,原有单机中相对可靠的方法调用以及进程间通信方式已经没有办法使用,同时网络环境也是不稳定的,造成了我们多个机器之间的数据同步问题,这就是典型的分布式事务问题。在分布式事务中事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。分布式事务就是要保证不同节点之间的数据一致性。常见的分布式事务解决方案1、2PC(二阶段提交)方案 - 强一致性2、3PC原创 2022-01-21 16:05:59 · 321 阅读 · 0 评论 -
面试被问还不懂?一口气怼完12种@Transactional的失效场景
前不久,一粉丝私信我说面试问到了@Transactional的失效场景,挂在那了,而且很惨,今天和大家讲一下都有哪些实效的场景。数据库事务是后端开发中不可缺少的一块知识点。Spring为了更好的支撑我们进行数据库操作,在框架中支持了两种事务管理的方式:编程式事务声明式事务日常我们进行业务开发时,基本上使用的都是声明式事务,即为使用@Transactional注解的方式。常规使用时,Spring能帮我们很好的实现数据库的ACID (这里需要注意哦,Spring只是进行了编程上的事务,最终数据上的原创 2022-01-21 16:05:21 · 130 阅读 · 0 评论 -
记一次网络请求耗时问题分析解决过程
一、问题背景两个月前的一个版本需要对接腾讯会议相关接口,需要接收腾讯会议事件变更回调,腾讯会议通过webhook的形式发送http请求到我们的测试环境服务中,暂且称之为A服务,假设域名为a.test.abc.com。在保存接口配置的时候,腾讯会议对接口url进行可用性的校验,3秒内进行响应,并正确返回即可进行配置。二、问题现象在配置的过程中出现了异常提示,无法正常保存配置,反复操作十几次后,才正常保存成功一次(具体原因可参考文末第五节)。如图所示:三、问题排查1.排查接口是否存在复杂逻辑.原创 2022-01-21 16:04:33 · 1566 阅读 · 0 评论 -
基于Netty手写一个远程连接Redis的IDEA插件
前言前几天一直在学习Netty框架,写了几个Demo,然后就想着可以用它来写点什么,然后又对编写idea的插件有点兴趣,那么就准备写一个idea插件.写什么好呢,想起可以写一个Redis连接客户端的插件,这个也可以用上Netty,虽然市面上已经有很多redis的客户端,例如:Redis Desktop Manager这类的,不过很多是付费的,想白嫖需要找破解版,自己写的功能上虽然简陋,不过胜在使用方便,不用另开程序.很多时候也仅仅是想看看redis里数据有没有保存上,所以也够用了.想要完成这个插件 需原创 2022-01-21 16:03:53 · 96 阅读 · 0 评论 -
记一次网络请求耗时问题分析解决过程
一、问题背景两个月前的一个版本需要对接腾讯会议相关接口,需要接收腾讯会议事件变更回调,腾讯会议通过webhook的形式发送http请求到我们的测试环境服务中,暂且称之为A服务,假设域名为a.test.abc.com。在保存接口配置的时候,腾讯会议对接口url进行可用性的校验,3秒内进行响应,并正确返回即可进行配置。二、问题现象在配置的过程中出现了异常提示,无法正常保存配置,反复操作十几次后,才正常保存成功一次(具体原因可参考文末第五节)。如图所示:三、问题排查1.排查接口是否存在复杂逻辑.原创 2022-01-21 16:03:15 · 375 阅读 · 0 评论 -
基于Netty手写一个远程连接Redis的IDEA插件
前言前几天一直在学习Netty框架,写了几个Demo,然后就想着可以用它来写点什么,然后又对编写idea的插件有点兴趣,那么就准备写一个idea插件.写什么好呢,想起可以写一个Redis连接客户端的插件,这个也可以用上Netty,虽然市面上已经有很多redis的客户端,例如:Redis Desktop Manager这类的,不过很多是付费的,想白嫖需要找破解版,自己写的功能上虽然简陋,不过胜在使用方便,不用另开程序.很多时候也仅仅是想看看redis里数据有没有保存上,所以也够用了.想要完成这个插件 需原创 2022-01-21 16:02:18 · 122 阅读 · 0 评论 -
面试官:order by 是怎样排序的?怎么优化?
01 前言刚换了新工作,用了两周时间准备,在 3 天之内拿了 5 个 offer,最后选择了广州某互联网行业独角兽 offer,昨天刚入职。这几天刚好整理下在面试中被问到有意思的问题,也借此机会跟大家分享下。这家企业的面试官有点意思,一面是个同龄小哥,一起聊了两个小时(聊到我嘴都干了)。二面是个从阿里出来的架构师,视频面试,我做完自我介绍之后,他一开场就问我:对 MySQL 熟悉吗?我一愣,随之意识到这是个坑。他肯定想问我某方面的原理了,恰好我研究过索引。就回答:对索引比较熟悉。他:原创 2022-01-21 15:58:31 · 84 阅读 · 0 评论 -
频频闯祸的 JNDI,到底是个什么 垃圾 玩意儿?
每次规模比较大的漏洞,JNDI好像都不会缺席。最近人尽皆知的Log4j2漏洞也和它有关,让人 不由得怀疑,是不是作者开的后门。因为JNDI这个玩意,别说用过,很多人连听都没听说过。这么冷门酸爽的东西,有什么理由把它放在一个日志框架里呢?恐怕只有作者想得通。数据库驱动很多人接触JNDI,是从数据库的驱动开始的。当然,随着SpringBoot单体发布模式的流行,现在用这种方式来获取数据库配置的古董公司,是越来越少了。比如,我们可以在tomcat得server.xml里,配置一个叫做<Resour原创 2022-01-20 22:24:01 · 115 阅读 · 0 评论 -
字节面试官让我讲讲最小生成树,我真的忍不住笑了
大家有没有在生活中遇到这种事情你们县城需要在几个小区之间进行修路,由于政府资金紧张,不可能所有的小区之间都进行修路,而是利用最少的资金修一条可以连接所有小区的路如同下图所示:当然,上述只是一个抽象化的例子,而我们实际生活中,每个小区间的距离也是不一样的,我们怎么使用最小的资金去连接所有的小区呢?这就牵扯到我们今天的老大哥们:Kruskal 算法和 Prim 算法这两种算法分别从边和点产生最小生成树,保证了资金的最小性本篇文章,我们一起走近 Kruskal原创 2022-01-20 22:05:28 · 49 阅读 · 0 评论 -
Spring Boot实现用户注册验证全过程
0. 阅读完本文你将会学会如何实现一个基本的注册验证过程如何自定义一个注解1. 概述在这篇文章中,我们将使用Spring Boot实现一个基本的邮箱注册账户以及验证的过程。我们的目标是添加一个完整的注册过程,允许用户注册,验证,并持久化用户数据。2. 创建User DTO Object首先,我们需要一个DTO来囊括用户的注册信息。这个对象应该包含我们在注册和验证过程中所需要的基本信息。例2.1 UserDto的定义package com.savagegarden.web.dto;i原创 2022-01-20 21:58:57 · 433 阅读 · 0 评论 -
隐藏了2年的Bug,终于连根拔起,悲观锁并没有那么简单
接手的新项目,接二连三的出现账不平的问题,作为程序员中比较执着的人,不解决誓不罢休。最终,经过两次,历时多日终于将其连根拔起。实属不易,特写篇文章记录一下。文章中不仅会讲到使用悲观锁踩到的坑,以及本人是如何排查问题的,某些思路和方法或许能对大家有所帮助。事情的起源运营同事时不时就提出查账调账的需求,原因很简单,账不平,不查不行。如果你有过财务相关系统的工作经历,账务问题始终是最难攻克的。虽然刚接手项目,虽然很多业务逻辑还不了解,但出现这样的技术挑战,还是要坚决攻克的。其实,这类问题的原因很简单:热原创 2022-01-20 21:47:34 · 62 阅读 · 0 评论 -
用Java手写Redis服务端,从设计者的角度聊一聊Redis本身
零,起因我为什么要造redis这个轮子?1,破除对redis神秘感。2,“基础服务中台”的同事们在开会讨论redis云,以及redis代理。3,开一个redis资源并不是容易事,为什么不可以不可以写成java直接推送到未来云上,简单方便。以这个思路我开始使用业余时间研究了redis的tcp通讯原理与redis命令,出发点是写一个redis云代理之类的云管理软件,但是还是忍不住写成了java版的redis,本文章主要分享redis的编写心路历程。一,redis通讯与Netty1,tcp连到原创 2022-01-20 20:13:52 · 260 阅读 · 0 评论 -
Springboot之登录模块探索(含Token,验证码,网络安全等知识)
简介登录模块很简单,前端发送账号密码的表单,后端接收验证后即可~淦!可是我想多了,于是有了以下几个问题(里面还包含网络安全问题):1.登录时的验证码2.自动登录的实现3.怎么维护前后端登录状态在这和大家分享下我实现此功能的过程,包括一些技术和心得1.登录时的验证码为什么要验证码,原因很简单,防止脚本无限次重复登录,来暴力破解用户密码或者攻击服务器验证码的出现,使得每次登录都有个动态变量需要输入,无法用脚本写死代码具体可以参考:滑动验证码的设计和理解:www.cnblogs.com/to原创 2022-01-20 20:12:52 · 1016 阅读 · 0 评论 -
腾讯三面:40 亿个 QQ 号码如何去重?
今天,我们来聊一道常见的考题,也出现在腾讯面试的三面环节,非常有意思。具体的题目如下:>文件中有40亿个QQ号码,请设计算法对QQ号码去重,相同的QQ号码仅保留一个,内存限制1G.原创 2022-01-04 15:40:15 · 142 阅读 · 0 评论 -
这一致性hash算法,有点意思啊
在我们的系统中不可避免要进行数据的存储,比如系统中会有用户上传的大量图片,这些图片数据要存放在文件服务器磁盘上,而一台服务器的存储空间往往是有限的,那么当图片量超过服务器磁盘的时候,一般都需要进行扩容,使用很多台服务器来存放我们的图片数据。原创 2022-01-04 15:37:21 · 78 阅读 · 0 评论