小王曾是少年
通信工程本硕 for NJU ;
《Intelligent Passive Eavesdropping in Massive MIMO-OFDM Systems via Reinforcement Learning》IEEE WCL 作者;
申请国家发明专利2项;
淘天集团后端开发;
有事尽量私信
展开
-
Code Review时学到的技巧之isAssignableFrom
📆 最近更新:2023年4月1日🍊 个人简介:通信工程本硕 for NJU💪、Java程序员🌕。做过科研paper,发过专利,优秀的程序员不应该只是CRUD。原创 2023-04-01 23:55:24 · 3083 阅读 · 86 评论 -
云原生应用的四大思考点和代码上云改造详细流程
一份代码多次发布关键点:一个应用 = 一份代码库 = 多个版本编译发布和运行分离关键点:一次发布 = 一次编译 = 多配置多环境发布环境一致性开发、准生产、生产三个环境的技术栈、CICD、运行时环境、后台数据库、中间件全部一致无状态进程关键点:不共享磁盘 + 缓存外置同步并发快速启动优雅关闭关键点:无状态 + 无依赖 + 秒级启停依赖明示除了对第三方包会有一些依赖之外,对系统也可能有一些依赖,比如:需要用Gradle / Maven来明确指出需要依赖第三方什么库和什么包,在操作系统层面可以尝试采用原创 2022-07-08 19:49:55 · 2481 阅读 · 156 评论 -
云原生之混合云网络互联
LVS直接路由:这种方式效率最高,可以达到几百万的并发支持优点:回包不经过负载均衡器,性能较高缺点:内网必须配置VIP,当内网支持的负载均衡个数变多时,需要配置更多的VIP,如果不是处在局域网内时,会有很多的安全隐患,网络出口可能发给任何ip的任何端口LVS IP隧道负载均衡器接收到用户发来的请求之后,会将CIP+VIP部分进行一个加密,再加上一个DIP和RIP发给服务器......原创 2022-06-15 21:59:00 · 664 阅读 · 35 评论 -
OAuth2.0第三方授权原理与实战
🍊 Java学习:Java从入门到精通总结🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想🍊 绝对不一样的职场干货:大厂最佳实践经验指南📆 最近更新:2022年5月28日🍊 个人简介:通信工程本硕💪、Java程序员🌕。做过科研,发过专利,优秀的程序员不应该只是CRUD🍊 点赞 👍 收藏 ⭐留言 📝 都是我最大的动力!文章目录RFC6749OAuth 2.0授权4大模式合同到期后的续约机制OAuth2.0第三方授权实战oauth-clientoauth-serv.原创 2022-05-29 11:23:31 · 1510 阅读 · 42 评论 -
如何对分库分表的数据进行迁移和扩容?
文章目录分库分表从业务层面进一步探讨分库分表备库转正法增量存量同步法分库分库分表具有相似的思路,假设商品ID = 100,按照所有表的个数进行取模100 / (3*2) = 4首先计算要选择哪个库:4 / 3 = 1每个库有3个表,所以要除以3其次再计算落在哪个表:4 % 3 = 1分表垂直分表:每个表存储一部分字段:对于大部分业务来说,只用到商品主表中就能获得到对应的信息水平分表:不同的数据落在不同的表中hash手段:商品ID % 3缺点:不容易做原创 2022-05-19 15:17:12 · 712 阅读 · 17 评论 -
分布式系统脑裂现象、Lease机制介绍
文章目录脑裂Lease机制介绍脑裂一个故障就将服务器集群分成两部分,右边就不能接收到Leader的日志写入信息了,右边三个机器就会选举出一个新的Leader,原先的集群就分成了两个小集群,这两个小集群就可能产生数据不一致的现象,一个client从不同的集群中读取到了不同的信息,这种现象被称为脑裂产生原因: 网络断联解决方案:使用全局过半的方案,上面5台服务器的情况下,Candidate必须得票超过总数的一半(2)才可以当选Leader,这也正是Zookeeper的解决方案。在这种情况下,原创 2022-05-10 15:50:57 · 1327 阅读 · 17 评论 -
统一配置管理中心
文章目录为什么需要配置中心高可用实现方案避免单点多数据副本为什么需要一般应用的配置管理非常简单,和应用一同部署的有一份配置文件,例如SpringBoot项目resources文件夹下的yml文件name:xiaowangage:18 - java:100 - python:60如果想要修改配置内容,就需要修改配置文件后重启项目,一旦服务器个数增加,这种方式将变得很低效,所以配置中心的一个重要功能就是属性分发如果有一个业务开关,需要控制业务功能的开启或关闭,与其使用静态文件做配置,不如使用原创 2022-05-01 10:49:26 · 788 阅读 · 11 评论 -
业务埋点实现用户画像分析,助力精准推送
文章目录业务埋点三种方式后台业务埋点可视化埋点无痕埋点通用做法用户画像分析业务埋点三种方式后台业务埋点直接在后台代码里做埋点,一般会细分为两个小类:1. 业务定制在开发阶段,侵入性比较高的手动指定埋点内容的方法,鹰眼系统就提供了这种精度比较高的埋点方式2. 注解埋点使用SpringAOP,在代码里添加自定义注解,把方法请求的request和response里的数据抽取出来,加到业务埋点里也可以在数据库连接池层面,通过加代理,将数据前后的变更可以从三个方面对上面三种方式作比较:可原创 2022-04-26 12:37:58 · 559 阅读 · 15 评论 -
搭建本地Canal中间件进行数据迁移 —— 从缓存击穿得到的启发
文章目录先从缓存击穿说起MySQL数据同步Canal工作原理搭建本地Canal中间件进行数据迁移先从缓存击穿说起所谓缓存击穿,就是热点数据在缓存中没有数据,大量用户请求直接打在数据库上,这是一种非常危险的情况,我们应该在开发过程中避免此过程的发生。目前我们经常使用的解决方案一共有3种:缓存过期策略方案: 使用读写分离架构,读取永远从缓存里读,DB和缓存之间的同步使用Canal热点缓存策略: 甄别出热点数据后,将针对热点数据的请求打到特别的一个区域互斥锁: 在数据快要到期之前,给key原创 2022-04-21 10:27:01 · 3712 阅读 · 96 评论 -
以电商下单场景为例,玩一玩有限状态机的流转
文章目录淘宝下单场景基于Spring statemachine的轻量级状态机实现淘宝下单场景现代数字社会给人们的生活带来了极大的便利,以下单场景为例,订单在一开始创建之初是没有任何状态的,下单之后订单状态会变成待付款,付款完成后订单会变成待收货状态,快递签收之后订单完成以下单场景为例,订单在一开始创建之初是没有任何状态的,下单之后订单状态会变成待付款,付款完成后订单会变成待收货状态,快递签收之后订单完成上面的订单流转图序是一个固定的流程,通常被称为有限状态机在淘宝里,订单的状态非常多,不像上图原创 2022-04-14 10:34:26 · 2906 阅读 · 118 评论 -
从天猫迈巴赫到双引擎回归框架:如何化技术为生产力?
文章目录迈巴赫营销优惠计算系统天猫双引擎回归测试框架纵观淘宝和京东,国内的电商业务都有两个典型的技术难点:QPS和TPS的压力大业务玩法花样多,要求支持复杂业务的扩展性迈巴赫营销优惠计算系统迈巴赫系统是天猫早期的营销计算引擎。早期的营销优惠只有满减和优惠券两种,再往后发展出现了满送玩法,赠送的可能是积分、商品。如果把这些营销玩法合在一起,就会增加核销的复杂度,这里就涉及了求解背包问题,还有拆单(将优惠拆到不同的订单上),还有退单(用掉的优惠券如何还原,退货之后不满足满减了等等非常复杂的业务原创 2022-04-08 14:04:57 · 1662 阅读 · 118 评论 -
白话微服务 —— 大厂是怎么玩的?
项目应用了微服务之后,就代表了一种糙快猛的开发模式微服务搭配敏捷编程,就带来了如今的996加班和严重化的内卷,因为他们能让项目开发效率快上一个台阶,从应用的发展就能看出。上古时代的应用用户访问请求通过各级负载均衡到达了反向代理层,反向代理层会把访问请求转到服务器集群中,这就是经典的单体应用 + 水平扩展缺点:牵一发而动全身每台服务器部署的代码都一样,每一个小的改动都很有可能影响到其它的功能点,所以每次改动都要做一个全链路回归回滚很痛苦所有代码一起上线一起回滚,就有可能出现我写好了一原创 2022-03-31 12:18:28 · 11777 阅读 · 144 评论 -
【故事会】淘系技术是如何一步步发展到今天的?
淘宝网自2003年上线以来,已经走过了将近20年的时光,我也是有幸从小到大一步步见证了它的发展,直到今天成为公司的一名员工。回顾淘系技术的发展历程,不难发现它其实也印证了整个互联网后端从单点应用到如今的微服务的技术变迁史,“以史为镜,可以知兴替”,本文将淘系技术的发展概括成为了7个阶段故事,希望各位同学能从中收获一些关于技术架构演进的思考方法~~part 1淘宝网始于三丰、虚竹、多隆三位程序员,由于时间紧,没有现成可复用的代码,所以最初的策略就是花钱买系统,所以当时第一版的淘宝是直接买了使用LA原创 2022-03-23 15:54:16 · 5845 阅读 · 97 评论 -
阿里面试官问我:如何设计登录接口,十分钟内连续登录5次失败,需要等待30分钟才能登录
常言道:字数越短问题越大。 今天阿里的面试官小哥哥让我实现一个登录接口,同一个用户10分钟内连续登陆5次失败,则需要等到30分钟才能登陆。 当然大佬估计一看到这种题目会很难过,一丁点算法都没有,妙解没意思。我这个小菜鸟上来就被唬住了。登录接口?10分钟内连续5次??等待30分钟才能登陆???登陆验证???? 问号一下子就冒出来了,当然最开始我想定义一个变量firstFailTime来记录第一次失败的时间,再仔细一想不对啊,firstFailTime是动态的额,要不断变化,单一个变量不好实现啊原创 2021-03-10 22:46:29 · 1452 阅读 · 8 评论 -
线程池参数到底要怎么配?这可能是最好的答案
文章目录1 线程池快速回顾2 现有设置参数的方法及不足3 如何设置核心线程数(corePoolSize)4 如何设置最大线程数(maxPoolSize)5 如何改变等待队列长度???? Java学习:Java从入门到精通总结???? Spring系列推荐:Spring源码解析???? 最近更新:2022年1月8日???? 个人简介:通信工程本硕????、阿里新晋猿同学????。我的故事充满机遇、挑战与翻盘,欢迎关注作者来共饮一杯鸡汤???? 点赞 ???? 收藏 ⭐留言 ???? 都是我原创 2022-01-26 12:45:04 · 7743 阅读 · 118 评论 -
【杂谈】最优线程数到底如何确定?
首先以单核CPU为例:为什么要使用多线程呢?如果只有一个线程的话,当任务阻塞时就会出现CPU的“空转期”,这一段时间的计算资源就被白白浪费掉了使用了多线程时,如果CPU阻塞,就会让出其使用权由其他线程竞争,线程阻塞的时间并不会被浪费掉当然线程数也不是越多越好,因为上下文切换也是一个耗时操作,于是我们就希望给我们的系统找到一个最优的线程数,这样既能保证充分利用CPU资源,又能减少上下文切换所带来的的开销《Java Concurrency in Practice》中写到:对于CPU密集型任原创 2022-03-02 15:39:07 · 2479 阅读 · 108 评论 -
淘系双十一全链路压测流程概览
🍊 Java学习:Java从入门到精通总结🍊 Spring系列推荐:Spring源码解析📆 最近更新:2022年3月9日🍊 个人简介:通信工程本硕💪、Java程序员🌕。我的故事充满机遇、挑战与翻盘,欢迎关注作者来共饮一杯鸡汤🍊 点赞 👍 收藏 ⭐留言 📝 都是我最大的动力!每年的淘宝天猫双十一都是经常网购的小伙伴们的狂欢节,在大家开启买买买模式的背后,离不开所有开发、测试同学的共同努力,其实双十一的准备工作早在9月份就会开始进行,历经各种各样的设计、开发、测试等环节,最终为大家提供服.原创 2022-03-09 18:27:49 · 3774 阅读 · 90 评论 -
为什么数据库三大设计范式已不适合当今互联网应用?
各位同学大家好,又到了每年一度的金三银四的校招环节,相信很多同学们都已经开始紧锣密鼓的复习了吧,数据库也是一个很重要的知识点,很多人在初学数据库时一定听说过数据库设计的三大范式,不少人也会将其背诵得滚瓜烂熟不过今天我想分享一个可能让某些同学觉得很毁三观的观点,那就是数据库设计的三大范式很可能已经不适合当前互联网的应用了,不要激动,且听我慢慢分析!...原创 2022-03-16 20:43:26 · 3088 阅读 · 125 评论