- 博客(130)
- 收藏
- 关注
原创 ES+Redis+MySQL,这个高可用架构设计太顶了
一、背景会员系统是一种基础系统,跟公司所有业务线的下单主流程密切相关。如果会员系统出故障,会导致用户无法下单,影响范围是全公司所有业务线。所以,会员系统必须保证高性能、高可用,提供稳定、高效的基础服务。随着同程和艺龙两家公司的合并,越来越多的系统需要打通同程APP、艺龙APP、同程微信小程序、艺龙微信小程序等多平台会员体系。例如微信小程序的交叉营销,用户买了一张火车票,此时想给他发酒店红包,这就需要查询该用户的统一会员关系。
2023-07-17 20:26:52
554
原创 2023需求最高的编程语言:Python、JavaScript和Java
且在大多数情况下,开发人员和招聘人员之间对这三种最流行的语言的需求和供应是一致的。科技招聘平台 CodinGame 和 CoderPad 最新发布了一份 2023 年科技行业招聘报告,基于对 14000 名专业人士的调查,对 2023 年科技行业招聘人员和求职者可能面临的情况进行了深入分析。尽管有很多裁员新闻,但开发人员对自己的工作感到安全:33% 的人表示他们感觉更有安全感,41% 的人表示他们没有感觉到重大变化。但他们也表示,因人才短缺,全栈和后端开发人员是 2023 年最难招聘的职位。
2023-07-16 16:33:34
479
原创 SQLSERVER 居然也能调 C# 代码 ?
SQLSERVER 内嵌了 CLR,让 sqlservr 进程成了一种托管和非托管的混合环境,不知道是好事还是坏事,在我的分析旅程中这种混合环境下看过太多的堆破坏问题,但不管怎么说,托管的 C#,VB,F# 可以助 SQLSERVER 更加强大。
2023-07-14 18:08:37
373
原创 系统调用与函数调用有什么区别?
显然不是的,因为操作系统系统代码和你的代码都是单独编译以及运行的,你根本就不知道操作系统的某个函数存放在内存的什么位置上,也不应该让你知道,因此使用syscall调用操作系统的函数时我们只能附加一个序号,比如序号0对应操作系统中的A函数、序号1对应操作系统中的B函数等等,这样使用syscall指令时只需要将该序号写入rax寄存器即可,CPU在执行syscall指令时通过读取rax寄存器的值就能知道到底该调用操作系统中的哪个函数了。那么funcA应该也能调用funcB(如果funcB可以供外界调用的话)。
2023-07-14 18:07:30
617
原创 SQLSERVER的truncate和delete有区别吗?
总的来说,delete 操作是将数据页中的每个 slot 指针一条一条的擦掉,每次擦除都会产生一条事务日志,所以对海量数据进行delete会产生海量的事务日志,导致你的 日志文件 暴增。而 truncate 是直接切断 post 和 page 的联系,只需要修改几个空间管理页的 bit 位即可。最后的建议是如果要清空表数据,建议用。
2023-07-13 19:21:55
432
原创 Redis 宕机了,如何避免数据丢失?
如果有人问你:"你会把 Redis 用在什么业务场景下?我想你大概率会说:"我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。
2023-07-13 19:20:32
645
原创 面试官:过滤器和拦截器有什么区别?
过滤器和拦截器都是基于 AOP 思想实现的,用来处理某个统一的功能的,但二者又有 5 点不同:出身不同、触发时机不同、实现不同、支持的项目类型不同以及使用的场景不同。过滤器通常是用来进行全局过滤的,而拦截器是用来实现某项业务拦截的。
2023-07-12 17:51:12
116
原创 惊!这道题正确率竟然只有 22%:答案详解
Go 语言爱好者周刊》第 148 期有一道题目:以下代码输出什么?A:3;B:4;C:100;D:编译失败大家的答题情况如下:正确率只有 22%(正确答案是 C)。不知道你选对了吗?
2023-07-12 17:50:14
356
原创 1亿条数据批量插入 MySQL,哪种方式最快?
能够看到,在开启事务下 JDBC直接处理 和 JDBC批处理 均耗时更短。Mybatis 轻量级框架插入 , mybatis在我这次实验被黑的可惨了,哈哈。实际开启事务以后,差距不会这么大(差距10倍)。大家有兴趣的可以接着去测试JDBC直接处理,在本次实验,开启事务和关闭事务,耗时差距5倍左右,并且这个倍数会随着数据量的增大而增大。因为在未开启事务时,更新10000条数据,就得访问数据库10000次。导致每次操作都需要操作一次数据库。
2023-07-11 19:32:22
1705
原创 往往排查很久的问题,最后发现都非常简单。。。
之前线上发生了一个很诡异的异常,网上各种搜索、排查,都没有找到问题,给大家分享一下。大概在 2 月份的时候,我们的某个应用整合了中间件的 kafka 客户端,发布到灰度和蓝节点进行观察,然后就发现线上某个 Topic 发生了大量的,并且集中在灰度机器上。
2023-07-11 19:30:59
181
原创 使用 @Autowired 为什么会被 IDEA 警告,应该怎么修改最佳?
前者会警告,而后者不警告,就是因为前者导致了应用与框架的强绑定,若是换成其他IOC框架,则不能够成功注入了。而Autowired注入,则要排队到子类构造器以后了,SpringIOC并不会对依赖的bean是否为null做判断,JVM编译时同样也不会有问题,但如果使用不当,运行起来时或许会因为出现空指针异常。它的好处在于,采用了构造方法注入,这种方式对对象创建的顺序会有要求,它将避免循环依赖问题。在使用中,使用构造方法是比较可行的,加上lombok,其实也可以到达非常简便。首先,需要引入lombok依赖。
2023-07-10 20:41:40
1070
原创 面试官:怎么去除 List 中的重复元素?我一行代码搞定,赶紧拿去用!
本文总结了 5 种去除 List 重复元素的方法:for 循环添加去重for 双循环去重for 循环重复坐标去重Set 去重Stream 去重最后两种方案最简单,都是一行代码就能搞定的,推荐使用!所以说,你身边还有谁不会删除 List 中的元素?还有谁不会 List 去重的?把这篇文章发给他吧,让大家少走弯路,少写垃圾代码,共同进步。
2023-07-10 20:40:59
229
原创 JAVA新提案:努力简化Hello World写法
OpenJDK 的 JEP 445 提案正在努力简化 Java 的入门难度。这个提案主要是引入 “灵活的 Main 方法和匿名 Main 类” ,希望 Java 的学习过程能更平滑,让学生和初学者能更好地接受 Java 。提案的作者 Ron Pressler 解释:现在的 Java 语言非常适合开发和维护大型复杂应用程序,但学校在教编程时往往会从变量、函数和子程序等基本的小型编程概念开始,在这个阶段,往往不需要类、包和模块的大型编程概念。但现在的 Java 对初学者不太友好,比如经典的 Hello, Wor
2023-07-09 16:53:58
145
原创 你见过哪些目瞪口呆的 Java 代码技巧?
当实际工作中,完成了几个 API 的 DTO 转化时,我们会发现,这样的操作有很多很多,那么应该定义好一个接口,让所有这样的操作都有规则的进行。如果接口被定义以后,那么 convertFor 这个方法的语义将产生变化,它将是一个实现类。虽然这个接口很简单,但是这里告诉我们一个事情,要去使用泛型,如果你是一个优秀的 Java 程序员,请为你想做的抽象接口,做好泛型吧。
2023-07-09 16:53:08
716
原创 记一次 Visual Studio 2022 卡死分析
综合朋友的反馈,这次VS的卡死就是他按下了Ctrl+C复制这段代码的时候,Resharper插件介入,然后在处理富文本时出问题了,不知道大家可踩过类似的坑,算是给后来人一点定位经验吧。
2023-07-08 18:56:33
1299
原创 日常开发中,提升技术的13个建议
最近有位星球好友问我:日常开发中,都是在做业务需求,如何提升自己的技术呢?因此,本文田螺哥整理了提升技术的13个建议,小伙伴们,一起加油。优秀的程序员,之所以优秀,是因为他会总结踩过的坑,避免重蹈覆辙。所以,田螺哥建议你,日常开发中,如果你踩了哪些坑,就需要总结下来.茶余饭后,再温习温习比如,你知道:Redis分布式锁使用,可能会有哪些坑嘛?线程池使用有哪些坑?Java日期处理有哪些坑嘛?使用可能有哪些坑?这些都是我工作总结出来的,也希望你们日常开发中,遇到哪些坑,都总结下来哈。
2023-07-08 18:55:54
131
原创 常用的 34 个 Linux Shell 脚本,一定能帮到你!
使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),# 如果 num1 大于 num2,就把 num1 和和 num2 的值对调,确保 num1 变量中存的是最小值。#使用‐z 可以判断一个变量是否为空,如果为空,提示用户必须输入账户名,并退出脚本,退出码为 2。# 如果输入的不是这样的顺序,则改变数的存储顺序,如:可以将 num1 和 num2 的值对调。# 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,
2023-07-07 20:16:24
699
原创 奇怪的SQL问题+1
所以,这并不是一个奇怪的 SQL 问题,只是一个小疏忽。其实这种问题在编程上很常见,比如在 postman 调试的时候,分页数据写反了,pageSize写了1,pageNumer 写了 10 ,导致怎么查都没数据,怎么 debug 都看蒙了。因为疏忽产生了很多奇奇怪怪、五花八门的问题,然后花了很多时间去找答案,还找不到。最终沉下心来总的再过一遍才会发现,或者只能求助于同事。我知道有问题,但是深陷其中当局者迷,花了两个小时还没解决,同事 10s 就能看出来。
2023-07-07 20:15:28
614
原创 面试官:这么简单的二叉树算法都不会?
有的同学可能已经发现了,这种算法的实际上不太高效,原因就在于对于二叉树a上的每个节点我们都需要调用一遍isSame函数,如果二叉树a的节点数为M、二叉树b的节点数为N,那么该算法的时间复杂度为O(M*N)。如果不满足条件1和2,那么如果a和b根节点的值相同并且其左右子树都一样,那么二叉树a和b是相同的二叉树,返回true。这个题目是leetcode的第572题,要求是这样的:给定两颗二叉树A和B,判断B是否是A的子树。如果二叉树b是a的子树,那么必然二叉树b序列化的后的字符串是a序列化后的字符串的子串。
2023-07-06 20:20:17
110
原创 OpenFeign做错了什么,惨遭SpringCloud 2022抛弃!
Feign是Spring Cloud中的一个声明式的HTTP客户端库,用于简化编写基于HTTP的服务调用代码。想要使用这个新的HTTP客户端,需要Spring升级到6.0,或者SpringBoot升级到3.0版本,然后再在POM中依赖spring-web。以上,就是在Spring 6.0中,使用Spring自带的@HttpExchange实现HTTP调用的例子,看起来还是比较容易使用的。以上,服务在启动后,通过http://localhost:8080/users地址访问后会得到10个我生成的用户信息。
2023-07-06 20:18:52
295
原创 这些代码,差点把我气出内伤
先问大家一个小问题:你觉得看别人代码累,还是自己写代码累?我相信有很多朋友会说,当然是自己写代码累了,要思考逻辑、要动手敲键盘,身心俱疲啊;但是,如果你需要经常阅读别人的代码,尤其是烂代码,答案就不一定了。因为自己写代码,逻辑是自己来梳理的、代码自己是熟悉的;但是看别人的代码,你就要去理解别人的代码逻辑,再加上烂代码的加持,可能很简单的逻辑,你都得看半天才能懂。所以很多大佬在面对前人的 “屎山” 项目时,宁愿自己重写,也不去读烂代码。举个夸张的例子:让你实现 1 + 1 的求和。
2023-07-05 20:44:40
191
原创 BeanUtils.copyProperties的11个坑
我们日常开发中,经常涉及到DO、DTO、VO对象属性拷贝赋值,很容易想到的。它会自动通过反射机制获取源对象和目标对象的属性,并将对应的属性值进行复制。可以减少手动编写属性复制代码的工作量,提高代码的可读性和维护性。但是你知道嘛?使用BeanUtils的。
2023-07-05 20:42:23
316
原创 新技能 MyBatis 千万数据表,快速分页!
基本概念MyBatis 流式查询接口但构建 Cursor 的过程不简单方案一:SqlSessionFactory方案二:TransactionTemplate方案三:@Transactional 注解。
2023-07-04 20:29:32
234
原创 准确率 99.9% 的离线IP地址定位库
Ip2region 是一个离线 IP 地址定位库,准确率高达 99.9%,搜索性能为 0.0x 毫秒。DB 文件只有几兆字节,其中存储了所有 IP 地址。支持 Java、PHP、C、Python、Nodejs、Golang、C#、lua 等查询绑定。查询算法使用二叉树、B树和内存搜索算法。
2023-07-04 20:28:43
1588
原创 神级 IDEA 插件!效率提升 50 倍!
可以帮忙我们优化包导入,自动给没有修改的变量添加final修饰符,调用方法的时候自动添加this关键字等,使我们的代码更规范统一。会按照阿里Java开发手册上规范帮我们检查代码,然后对代码做不同颜色展示,鼠标放上去,会看到提示内容,帮助我们写出更规范的代码。原因是它学习了我的项目代码,总结出了我的代码偏好。可以根据自己的代码习惯,自定义一些代码模板,帮助我们快速写代码。原本只会复制你选中的代码,改完配置后,就能复制整行,无论你是否完全选中。成对儿的括号显示相同的颜色,有了这个插件,我的近视都好了。
2023-07-03 20:27:38
350
原创 推荐 15 款常用开发工具
使用教程:https://github.com/alibaba/dragonwell8/wiki/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Dragonwell8%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97。一款集官网、文档、博客和社区为一体的静态开源站点的解决方案,具有简单易上手、上手不撒手的特质,同时支持 react 和静态渲染、PC端和移动端、支持中英文国际化、SEO、markdown文档、全局站点搜索、站点风格自定义、页面自定义等功能。
2023-07-03 20:19:04
143
原创 Redis 实现限流的三种方式
Redis其实还有很多其他的用处,他的作用不仅仅是缓存,分布式锁的作用。我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(Compare and swap)的操作的时候,同时给指定的key设置了过期实践(expire),我们在限流的主要目的就是为了在单位时间内,有且仅有N数量的请求能够访问我的代码程序。当然这种做法的弊端是很多的,比如当统计1-10秒的时候,无法统计2-11秒之内,如果需要统计N秒内的M个请求,那么我们的Redis中需要保持N个key等等问题。
2023-07-02 15:54:29
623
原创 实战:RocketMQ高级功能代码实现
所以我们引入延时消息后,就可以单独准备一个订单扫描服务,来消费延时消息,当它获得消息的时候再去验证订单是否已经支付,如果已经支付什么都不用做,如果还未支付就去进行关闭订单,解锁库存的操作。针对于half消息发送失败的情况,是有可能一直接收不到消息发送失败的异常的,所以我们可以在发送half消息的时候,同时保存一份half消息到内存中,或者写入磁盘里,后台开启线程去检查half消息,如果超过10分钟都没有接到响应,就自动执行回滚逻辑。这种做法多了一层逻辑判断,自然会对系统的性能产生影响。
2023-07-02 15:53:48
1093
原创 Docker + Wasm = 王炸!!!
可以看到,Docker Engine 继续使用与整体生态相统一的 containerd 容器运行时,但创建了一个新的 containerd shim—— 把负责容器进程运行的 runC 替换成 WasmEdge runtime。随着社区对 Wasm 的探索,我们希望开发者可以使用熟悉和喜爱的经验和工具,帮助让 Wasm 应用程序更易于开发、构建和运行。要注意的是,由于 Docker+Wasm 尚处于早期的技术预览阶段,不建议在生产环境使用,因为有可能会出现变更,甚至从未来版本中删除。
2023-07-01 14:36:25
320
原创 为什么90%的人写得登录接口都不安全?
大家学写程序时,第一行代码都是。但是当你开始学习WEB后台技术时,很多人的第一个功能就是写的登录(小声:别人我不知道,反正我是)。,但是都只是简单的实现了功能逻辑,在安全方面并没有考虑太多。这篇文章主要是和大家聊一聊,在设计一个登录接口时,不仅仅是功能上的实现,在安全方面,我们还需要考虑哪些地方。暴力破解!那么这种情况,我们要怎么防范呢?
2023-06-30 22:45:48
97
原创 SpringBoot + Druid监控 MySQL,慢SQL快速定位,真好用!
我们都使用过连接池,比如,虽然HikariCP的速度稍快,但Druid能够提供强大的监控和扩展功能,也是阿里巴巴的开源项目。Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括等等,秒杀一切。Druid可以很好的监控DB池连接和SQL的执行情况,天生就是针对监控而生的DB连接池。Spring Boot默认数据源与。
2023-06-30 22:44:31
2500
原创 Java教程-Java异常传播
异常首先从调用堆栈的顶部抛出,如果没有被捕获,它会向下传递到前一个方法。如果在那里没有被捕获,异常会再次向下传递到前一个方法,依此类推,直到它们被捕获或者达到调用堆栈的最底部。这被称为异常传播。
2023-06-29 20:44:03
446
原创 Java教程-Java异常抛出
让我们看一下throw IOException的示例。其中实例必须是Throwable类型或Throwable的子类。例如,Exception是Throwable的子类,用户定义的异常通常扩展Exception类。Java throw关键字的示例示例1:抛出未检查异常。
2023-06-29 20:43:10
2275
原创 后端架构师技术大全(69个点,值得收藏)
工欲善其事,必先利其器;士欲宣其义,必先读其书。后台开发作为互联网技术领域的掌上明珠,一直都是开发者们的追逐的高峰。本文将从后台开发所涉及到的技术术语出发,基于系统开发、架构设计、网络通信等几个方面让大家对后台开发有一个清晰的了解,讲解全面易懂。
2023-06-28 20:19:15
377
原创 SpringBoot 最新版3.x 集成 OAuth 2.0 实现认证授权服务、第三方应用客户端以及资源服务
Spring Boot 3已经发布一段时间,网上关于Spring Boot 3的资料不是很多,本着对新技术的热情,学习和研究了大量Spring Boot 3新功能和新特性,感兴趣的同学可以参考Spring官方资料全面详细的新功能/新改进介绍Spring版本升级到6.xJDK版本至少17+新特性有很多,本文主要针对OAuth 2.0的集成,如果快速开发自己的认证授权服务、OAuth客户端以及资源服务新建三个服务,分别对应认证授权服务、OAuth客户端以及资源服务。
2023-06-27 20:23:56
3648
2
原创 一个注解让你的项目减少30%SQL代码量
Easy Trans是一款用于做数据翻译的代码辅助插件,利用MyBatis Plus/JPA/BeetlSQL 等ORM框架的能力自动查表,让开发者可以快速的把ID/字典码 翻译为前端需要展示的数据。
2023-06-27 20:19:08
97
原创 API 网关 vs 负载均衡:选择适合你的网络流量管理组件
在需要对大量的 API 进行管理和发布的场景,API 网关也非常适用,因为它具有强大的 API 管理功能,可以让你随时随地让某个 API 上线或者下线,快速地修改 API 转发的配置,快速地为某个 API 添加限流、认证、日志等等功能而无需重新启动 API 网关。在合理的架构设计下,一般都将 API 网关和负载均衡配合使用,使用负载均衡作为整个系统的网络出入口,将流量分发到多个 API 网关实例,然后每个 API 网关实例分别对请求进行路由、认证、鉴权等操作,这样可以使得整个网络更加稳健、可靠、可扩展。
2023-06-26 20:44:43
1539
原创 告别混乱代码:SpringBoot 后端接口规范
因为 HTTP 协议是无状态的,Token 的设计方案是用户在客户端使用用户名和密码登录后,服务器会给客户端返回一个 Token,并将 Token 以键值对的形式存放在缓存(一般是 Redis)中,后续客户端对需要授权模块的所有操作都要带上这个 Token,服务器端接收到请求后进行 Token 验证,如果 Token 存在,说明是授权的请求。如果在缓存中的签名失效的情况下,有人使用同一个 URL 再次访问,则会被时间戳超时机制拦截,这就是为什么要求 sign 的超时时间要设定为跟时间戳的超时时间一致。
2023-06-26 20:43:49
182
构建预测模型的七大步骤简述
2023-07-13
程序员的简历应该这么写!!(附简历模板)
2023-07-13
MySQL精选60道面试题 ( 含答案 )
2023-07-13
Matlab绘图案例:附详细代码
2023-07-13
80+开源数据集资源汇总(包含目标检测、医学影像、关键点检测、工业检测等方向)
2023-07-13
Linux 最强总结!Linux 最强总结!
2023-07-13
分享当下较新的30道Vue面试题!
2023-07-09
2023前端最新面试题-Vue篇
2023-07-09
2023必知必问的Vue3面试题总结!!
2023-07-09
2023 前端二面高频 vue 面试题集锦
2023-07-09
50+Vue经典面试题详解,你值得收藏
2023-07-09
42道Vue大厂面试真题,你背过几道?
2023-07-09
铜3铁4,最新22道面试题-Vue系列.docx
2023-07-09
实战案例!Python批量识别银行卡号码并且写入Excel,小白也可以轻松使用~.docx
2023-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人