Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by New HashMap
Goldman Sachs SDE-1 Interview Experience (2024)
import java.util.HashMap; import java.util.Map; public class GoldmanSachs { /****************************************************************************** Given an integer array nums and an integer k, return the length of the shortest non-empty subarray of nums with a sum of at least k.
《黑马点评》Redis高并发项目实战笔记【完结】P1~P72_黑马点评实战笔记-CSDN博客
花费4周敲完《黑马点评》的课程,做了详细的笔记,感觉受益匪浅,一直一直都在不停成长着。 突然想起《苍穹外卖》系列至今已收获200+个赞,500+个收藏,好评颇多,私信我的人不计其数,在此谢谢大家。 下一篇开始学习12306订票系统项目,大家敬请期待吧。 如有问题欢迎加文末微信,商业订单、项目需求都欢迎前来咨询。想进粉丝群的朋友们见文末。 P1 Redis企业实战课程介绍 P2 短信登录 导入黑马点评项目 首先在数据库连接下新建一个数据库hmdp,然后右键hmdp下的表,选择运行SQL文件,然后指定运行文件hmdp.sql即可(建议MySQL的版本在5.7及以上): 下面这个hm-dianping文件是项目源码。在IDEA中打开。 记得要修改数据库连接和Redis连接的密码: 运行程序后尝试访问:localhost:8081/shop-type/list 进行简单测试: 将nginx文件复制到一个没有中文路径的目录,然后点击nginx.exe运行: 在nginx所在目录打开CMD窗口,输入命令:start nginx.exe...
Redis - 登录场景分析-CSDN博客
java代码中使用Redis 环境准备 这里我们需要导入一些所需的依赖 使用的是Spring集成的框架SpringDataRedis <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> 配置连接 通过yaml文件配置 对应的redis连接参数 redis: host: ip地址 port: 端口号 auth: 密码 lettuce: pool: max-active: 最大连接数 max-idle: 最大空闲连接 min-idle: 最小空闲连接 time-between-eviction-runs: 连接等待时间 使用 package com.caidan.redis;...
使用Gitee进行社交登录的流程_gitee第三方登录-CSDN博客
使用Gitee进行社交登录 创建Gitee第三方应用流程: 鼠标移动到个人头像上,点击账号设置 点击账号设置,选择左边目录下数据管理的第三方应用 然后选择创建应用 根据要求填写 填写好了上面的要求之后,点击创建应用,这样,在Git上就创建了一个第三方应用,我为谷粒商城创建的第三方应用的信息如下。 OpenAPI文档说明 可以在账号设置页面,点击底部的OpenApi查看如何获取Gitee中的信息 比如在API文档中的用户账号下可以根据Accsess_Token获取授权的用户信息 在OAuth文档下提供了 OAuth2.0获取AccessToken的步骤。 谷粒商城实现社交登录流程 1.在前端页面设置一个超链接 ,前端页面的地址要和我们创建的第三方应用中的应用主页要相同。 应用主页: 超链接地址为OAuth2.0文档中的 A <a...
从0开始的redis点评项目-CSDN博客
黑马点评项目的学习记录 1、基于Session的登录 1、根据电话号码获取验证码 2、根据电话号码、验证码实现登录/注册 3、登录态校验 1、用户输入电话号码、点击获取验证码 2、校验电话号码格式(校验考虑用正则表达式) public static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$";//电话号码正则 正则表达式使用 //满足要求的表达式 String content = "^\\w+$"; //pattern模式对象.compile(表达式).matcher(需要满足表达式内容的对象) Matcher matcher = Pattern.compile(content).matcher(userAccount); if (!matcher.find()){ //matcher.find()是否又匹配表达式的部分 return -1; } 3、不符合要求、返回一个信息描述错误 4、符合要求:生成验证码(可以使用Hutool工具类随机生成)...
使用Elasticsearch进行数据批量操作-CSDN博客
1.背景介绍 Elasticsearch是一个开源的搜索和分析引擎,基于Lucene库开发。它可以用来实现文本搜索、数据分析、实时数据处理等功能。在大数据时代,Elasticsearch成为了处理和分析大量数据的首选工具之一。 数据批量操作是Elasticsearch中的一种常见操作,它可以用来对大量数据进行创建、更新、删除等操作。在实际应用中,数据批量操作是非常有用的,例如在数据导入、数据清洗、数据同步等场景下。 本文将从以下几个方面进行阐述: 核心概念与联系 核心算法原理和具体操作步骤以及数学模型公式详细讲解 具体最佳实践:代码实例和详细解释说明 实际应用场景 工具和资源推荐 总结:未来发展趋势与挑战 附录:常见问题与解答 在Elasticsearch中,数据批量操作主要通过以下几种API实现: Bulk API:用于批量创建、更新、删除文档。 Update By Query API:用于根据查询条件更新多个文档。 Index API:用于批量索引文档。 Delete By Query API:用于根据查询条件删除多个文档。...
Redis:原理+项目实战--Redis实战2(Redis实现短信登录(原理剖析+代码优化))-CSDN博客
👨🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:Redis:原理+项目实战——Redis实战1(session实现短信登录(并剖析问题)) 📚订阅专栏:Redis:原理速成+项目实战 希望文章对你们有所帮助 基于Redis实现共享session项目 发送短信验证码 这个大致的流程是跟session的业务流程差不多的,无非就是验证码不再保存到session中,而是保存到了Redis中,Redis的结构是key-value的,且value是很多种类型的,在这里我们选择最简单的String类型即可。 一个需要考虑的问题是key的选取,在session中我们选用了“code”来作为key,但在这里却不行。这是因为每一个不同的浏览器在发送请求的时候都会有一个不同的独立的session,也就是说Tomcat的内部维护了很多的session,互相之间是不会干扰的。但是Redis是一个共享的内存空间,如果直接使用key是肯定会造成覆盖这种不好的局面的,所以我们不能直接选用“code”来作为key。 容易发现,每个手机号都不一样,因此我们可以直接用手机号作为key。...
黑马点评回顾 redis实现共享session
传统session缺点 传统单体项目一般是把session存入tomcat,但是每个tomcat中都有一份属于自己的session,假设用户第一次访问第一台tomcat,并且把自己的信息存放到第一台服务器的session中,但是第二次这个用户访问到了第二台tomcat,那么在第二台服务器上,肯定没有第一台服务器存放的session,所以此时 整个登录拦截功能就会出现问题。为了解决这个问题,我们用redis作为中间件,把用户的信息存入redis中,这样不同tomcat在检验用户是否登陆时,都向redis请求数据,这样就可以在不同的tomcat进行session共享。 整体访问流程 用户去登录会去校验用户提交的手机号和验证码,是否一致,如果一致,则根据手机号查询用户信息,不存在则新建,最后将用户数据保存到redis,并且生成token作为redis的key,当我们校验用户是否登录时,会去携带着token进行访问,从redis中取出token对应的value,判断是否存在这个数据,如果没有则拦截,如果存在则将其保存到threadLocal中,并且放行。 代码实现...
Redis代替session 实现登录流程
Redis代替session 实现登录流程 如果使用String,他的value,用多占用一点空间,如果使用哈希,则他的value中只会存储他数据本身,如果不是特别在意内存,其实使用String就可以 设计key的具体细节 在设计这个key的时候,我们之前讲过需要满足两点 key要具有唯一性 key要方便携带 如果我们采用phone:手机号这个的数据来存储当然是可以的,但是如果把这样的敏感数据存储到redis中并且从页面中带过来毕竟不太合适,所以我们在后台生成一个随机串token,然后让前端带来这个token就能完成我们的整体逻辑了 整体访问流程 当注册完成后,用户去登录会去校验用户提交的手机号和验证码,是否一致,如果一致,则根据手机号查询用户信息,不存在则新建,最后将用户数据保存到redis,并且生成token作为redis的key,当我们校验用户是否登录时,会去携带着token进行访问,从redis中取出token对应的value,判断是否存在这个数据,如果没有则拦截,如果存在则将其保存到threadLocal中,并且放行。 基于Redis实现短信登录...
Vitess全局唯一ID生成的实现方案 - 京东云技术团队 - 博客园
为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键。 但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足全局唯一的需求。因此,产生了多种解决方案,如UUID,SnowFlake等。下文将介绍Vitess是如何解决这个问题的。 在Vitess实现方案中,每个设置了全局唯一列的表,都会对应一张sequence序列表。例如对于表user,会对应一张名为user_seq的序列表,原表与序列表的关联关系会记录在元数据中。user表以及user_seq这两张表元数据信息分别如下: user表元数据:分片键为name列,分片算法为hash;全局唯一列为id列,依赖user_seq表生成具体的值。 { "tables": { "user": { "column_vindexes": [ { "column": "name", "name": "hash" } ], "auto_increment": { "column": "id", "sequence": "user_seq" } } } }...
【业务功能篇96】微服务-springcloud-springboot-认证服务-登录注册功能-Auth2.0-分布式session-CSDN博客
5.登录功能 通过最基础的登录操作来完成登录处理 登录页面处理 认证服务的处理 @PostMapping("/login") public String login(LoginVo loginVo , RedirectAttributes redirectAttributes){ R r = memberFeginService.login(loginVo); if(r.getCode() == 0){ return "redirect:http://msb.mall.com/home"; } redirectAttributes.addAttribute("errors",r.get("msg")); return "redirect:http://msb.auth.com/login.html"; } 会员中心的认证逻辑 @RequestMapping("/login") public R login(@RequestBody MemberLoginVO vo){ MemberEntity entity = memberService.login(vo); if(entity...
Redis功能实战篇之Session共享_废弃的root的博客-CSDN博客
当用户请求我们的nginx服务器,nginx基于七层模型走的事HTTP协议,可以实现基于Lua直接绕开tomcat访问redis,也可以作为静态资源服务器,轻松扛下上万并发, 负载均衡到下游tomcat服务器,打散流量,我们都知道一台4核8G的tomcat,在优化和处理简单业务的加持下,大不了就处理1000左右的并发, 经过nginx的负载均衡分流后,利用集群支撑起整个项目,同时nginx在部署了前端项目后,更是可以做到动静分离,进一步降低tomcat服务的压力,这些功能都得靠nginx起作用,所以nginx是整个项目中重要的一环。 在tomcat支撑起并发流量后,我们如果让tomcat直接去访问Mysql,根据经验Mysql企业级服务器只要上点并发,一般是16或32 核心cpu,32 或64G内存,像企业级mysql加上固态硬盘能够支撑的并发,大概就是4000起~7000左右,上万并发,...
Redis解决Session共享问题_熬夜磕代码丶的博客-CSDN博客
session共享问题:多台Tomcat并不共享session存储空间,当请求切换到不同tomcat服务器时导致数据丢失的问题 tomcat可以进行多台tomcat进行session拷贝,但是数据拷贝保存相同的内容会存在资源浪费,而且会有时间延迟,所以这种方案不可行 session的替代方案应该满足: 数据共享 内存存储 key、value结构 这里我们可以使用redis 发送短信: @Resource private StringRedisTemplate stringRedisTemplate; @Override public Result sendCode(String phone, HttpSession session) { if (phone == null || str.matches("^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$")) { return Result.fail("手机号格式错误!"); } String code =...
【Redis】2、Redis应用之【根据 Session 和 Redis 进行登录校验和发送短信验证码】
(1) 发送短信验证码 ① 手机号格式后端校验 手机号校验的正则表达式 public abstract class RegexPatterns { public static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$"; public static final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; public static final String PASSWORD_REGEX = "^\\w{4,32}$"; public static final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$"; } 校验工具类: public class RegexUtils { public static boolean isPhoneInvalid(String phone) { return...
Java简单实现短信验证登录(Session、Redis)_Big-Peng的博客-CSDN博客
前端设计 <div class="login-form"> <div style="display: flex; justify-content: space-between"> <el-input style="width: 60%" placeholder="请输入手机号" v-model="form.phone" > </el-input> <el-button style="width: 38%" @click="sendCode" type="success" :disabled="disabled">{{codeBtnMsg}}</el-button> </div> <div style="height: 5px"></div> <el-input placeholder="请输入验证码" v-model="form.code"> </el-input> <div style="text-align: center; color: #8c939d;margin: 5px 0">未注册的手机号码验证后自动创建账户</div> <el-button...
基于springboot+Redis的前后端分离项目(一)-【黑马点评】_添砖&JAVA的博客-CSDN博客
黑马点评项目是前后端分离项目,前端部署在nginx服务器上,后端部署在tomcat上,具体将实现以下功能。 短信登录 这一块我们会使用redis共享session来实现。 商户查询缓存 通过学习,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题。 优惠卷秒杀 通过学习,我们可以学会Redis的计数器功能, 结合Lua完成高性能的redis操作,同时学会Redis分布式锁的原理,包括Redis的三种消息队列。 附近的商户 我们利用Redis的GEOHash来完成对于地理坐标的操作。 UV统计 主要是使用Redis来完成统计功能 用户签到 使用Redis的BitMap数据统计功能 好友关注 基于Set集合的关注、取消关注,共同关注等等功能。 达人探店 基于List来完成点赞列表的操作,同时基于SortedSet来完成点赞的排行榜功能。 整个项目需要实现的功能如下图。 start nginx.exe 1.基于Session实现登录的方式 发送验证码: 用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机号...
Hutool常用工具类_hutool工具包_有多勉为其难的博客-CSDN博客
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当; Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。 请移步官网:https://hutool.cn/ 不得不说,hutool真的是好用,大大提高开发效率,使代码没有那么臃肿,太妙了,以下只是我在开发中遇到的,并不全 1. maven 请认准官网最新依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.16</version> </dependency> 2.
黑马点评总结_程序员辉code的博客-CSDN博客
此处笔记参考了鱼皮哥还有黑马提供的笔记来实现的。 ⿊马点评是⼀个⼤量使⽤Redis的项⽬,该项⽬的功能类似⼤众点评 界面: 数据库表: 后端代码: config 目录:存放项目依赖相关配置 MvcConfig:配置了登录、自动刷新登录 Token 的拦截器 MybatisConfig:配置 MyBatis Plus 分页插件 RedissonConfig:创建单例 Redisson 客户端,Redisson配置类 WebExceptionAdvice:全局响应拦截器 controller 目录:存放 Restful 风格的 API 接口 dto 目录:存放业务封装类,如 Result 通用响应封装(不推荐学习它的写法) entity 目录:存放和数据库对应的 Java POJO,一般是用 MyBatisX 等插件自动生成 mapper 目录:存放操作数据库的代码,基本没有自定义 SQL,都是复用了 MyBatis Plus 的方法,不做重点学习。 service 目录:存放业务逻辑处理代码,需要重点学习 BlogServiceImpl:基于 Redis...
NamedParameterJdbcTemplate使用详解_CUIYD_1989的博客-CSDN博客
什么是具名参数? SQL 按名称(以冒号开头)⽽不是按位置进⾏指定。 例如: 传统的jdbcTemplate的SQL语句定义,通过问号进行占位,如下: private final String QUERY_SQL = "INSERT INTO T_USER(username,password) VALUES(?,?)"; NamedParameterJdbcTemplate的吗具名参数定义SQL语句: private final String QUERY_SQL = "INSERT INTO T_USER(username,password) VALUES(:username,:password)"; 1、创建工程 2、添加Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId>...
黑马点评项目总结_wazouu的博客-CSDN博客
1.基于session实现 2.基于session实现登陆的问题 单体应用时用户的会话信息保存在session中,session存在于服务器端的内存中,由于前前后后用户只针对一个web服务器,所以没啥问题。但是一到了web服务器集群的环境下(我们一般都是用Nginx做负载均衡,若是使用了轮询等这种请求分配策略),就会导致用户小a在A服务器登录了,session存在于A服务器中,但是第二次请求被分配到了B服务器,由于B服务器中没有用户小a的session会话,导致用户小a还要再登陆一次,以此类推。这样用户体验很不好。当然解决办法也有很多种,比如同一个用户分配到同一个服务处理、使用cookie保持用户会话信息等。 因此,要解决这样的问题必须满足以下条件: 数据共享 内存存储 key、value结构 3.基于redis实现短信登陆 发送验证码: @PostMapping("code") public Result sendCode(@RequestParam("phone") String phone, HttpSession session) { return...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with New
Contact New, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack