自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

让 Java 再次伟大!

一个全新设计的 Java 脚手架;一副崭新的 Java 生态蓝图;一门现代化的 Java 编程哲学。

  • 博客(22)
  • 收藏
  • 关注

原创 一个全新设计的 Java 脚手架,一副崭新的 Java 生态蓝图,一门现代化的 Java 编程哲学。

Mjga 是一款全新设计的,基于云原生理念的打造的现代 Java Web 脚手架。它具备:容器化的应用、可装卸的组件、有口皆碑的单元测试。

2024-10-08 10:54:12 1496 1

原创 Spring Security 如何进行权限验证

我们来探讨一下 security 为什么要费尽周折,通过一长串的聚合和依赖把权限校验这个处理流程传递这么长的路径来实现?为什么不在一开始就是 make el Express and return el.value() 搞定所有的事情?我想这是因为 security 是一个 architect first 的设计产物。架构优先的设计,高扩展性都特别的重要。

2024-10-18 21:16:25 756

原创 Spring security 如何进行身份认证

security 加载的每种过滤器都有自己的使命和职责,其中负责表单登陆的是 UsernamePasswordAuthenticationFilter。security 中大部分和身份认证相关的过滤器都继承自 AbstractAuthenticationProcessingFilter,UsernamePasswordAuthenticationFilter 也不例外。

2024-10-18 21:15:05 461

原创 状态设计模式

通过上面的示例,我们可以发现这又是一个利用组合来解决问题的设计模式。很显然组合要比继承更适合于扩展与维护。在之前的文章中,策略设计模式和状态设计模式非常相似,甚至他们的 uml 图都是一样的。那么为何状态设计模式要单独拿出来讲呢?这是因为策略设计模式的使用目的在于对象主动地去控制算法或者行为,而状态设计模式更倾向于定义好一组在客户端对象里可以互相转换的状态。

2024-10-17 10:46:25 1089

原创 模板方法设计模式

模板方法模式在项目中会经常运用到,需要熟练掌握。模板方法模式结构清晰。一般在项目中常常将不易于变化的部分封装为模板方法。而将易于变化的部分定义为抽象方法。模板方法模式易于扩展。面对新增需求,只需要增加相应的模板抽象方法实现子类就可以了,符合了接口的开闭原则。在多个子类拥有相同的方法,并且这些方法逻辑相同时,可以考虑使用模版方法模式。在程序的主框架相同,细节不同的场合下,也比较适合使用这种模式。

2024-10-17 10:44:41 398

原创 什么是好的单元测试 - 单元测试的哲学

随着单元测试代码的日积月累,大量的 Thread.sleep 使测试速度越来越慢,单个本地测试也许还可以忍受,但全面自动化测试时乌龟一般的运行速度能让你抓狂。在测试代码在并发状态下的执行状况时,由于对测试结果的期待,或许会需要某些 Reduce 线程在 Map 线程之后才运行。另外请不要使用测试基类。调用对象的方法时尽可能的使用注入的对象,利用组合解决问题。在学习优秀的单元测试设计之前,了解一下糟糕的设计是快速掌握设计诀窍的“捷径”。学习完了上述测试的坏味道再加上适当的实践,就可以编写出合格的单元测试的。

2024-10-15 10:50:51 681

原创 什么是优秀的单元测试?

合理编写单元测试,可使团队工程师告别牛仔式编程,产出易维护的高质量代码。随着单元测试覆盖率的上升,项目会更加的健壮,团队的信心满满,充满斗志。

2024-10-15 10:48:24 1074

原创 3 分钟看懂 Http2 的特性

从 Http2 诞生距今,大量网站都完成了对它的支持工作。实践证明在某些网站上启用 Http2 的确可让性能提高 30%以上。但最好的办法是尽可能详细的测试启用 Http2 所带来的风险和收益之后,再做出决定。

2024-10-14 09:08:16 672

原创 一种失传已久的 SQL 多表连接查询,你从来没有见过的独门写法。

使用 ORM 的代价就是你的心智负担很大。除了要学习很多注解以外,还有很多夸张的概念需要深入理解,才能够写出能正常运行的代码。那么,有没有一种简单的方法,可以通过 SQL 的方式,直接查询出这种嵌套的结果集, 然后扔给客户端进行处理呢?答案是有的。

2024-10-14 09:06:27 1283

原创 锐评 Nodejs 设计模式 - 行为型

迭代器和可迭代对象代表的迭代器设计模式是一种约定。生成器就是一个实现了@@iterator的迭代器。迭代器和生成器既可以是同步也可以是异步。node 中的闭包函数天生就是命令式的。

2024-10-13 08:59:27 796

原创 Typescript 如何用枚举来放飞自我的

枚举是对客观事物的归纳与自然语言的抽象。这听起来似乎容易和类混淆,这是正常的。因为在大部分面向对象的语言里,枚举就是类。

2024-10-13 08:57:25 306

原创 SSO、OAuth2、与 OpenID connect

是的,OIDC 也有两种常用类型:授权码许可类型与隐式许可类型。由于 OIDC 在 OAuth2.0 的基础上被设计出来,所以 OAuth2.0 的流程基本上就是 OIDC 的流程。在 OIDC 的流程中,相对 OAuth2.0 有 3 个变化。授权服务器 + 资源服务器 = 认证服务器。根据授权码获取的 token 中包含 id_token。用户详情可以使用 UserInfo 端点获取。

2024-10-12 09:02:17 927

原创 锐评 Nodejs 设计模式 - 创建与结构型

代理、装饰器、适配器都是结构型模式,体现的设计思想都差不多——通过对象的结构来管理实体间的关系。Proxy 不仅用来实现设计模式,也可以用来完成很多其他功能和编程范式。就像 js 中的闭包函数一样,模块导出天生就是单例。

2024-10-12 09:00:28 571

原创 OAuth 2.0 简述

生活中有很多授权的场景,比如:假设你有一辆车,你现在指派一名代驾司机来帮你把车开回家,这就是一种授权。因为你授予了代驾司机使用你的小汽车的权利。在软件领域,授权通常指用户对某软件授予访问受保护资源权限的行为。OAuth2 就是为了将这种行为标准化所设计出来的协议。接上例。显而易见,代驾司机需要车钥匙才能帮你将车开回家。当然你可以将车钥匙交给代驾司机,但是显然让代驾司机使用专用的「泊车钥匙」显然更加安全。在软件领域,你的账号密码就相当于车钥匙,令牌则类似泊车钥匙。当然,并不是所有企业都拥有泊车钥匙。

2024-10-11 08:49:18 794

原创 什么是跨域资源访问

属于不同源的资源之间互相请求时会产生「跨域访问」的问题。各大浏览器通常基于「同源策略」对跨域访问进行处理。而 CORS 则提供了跨域资源共享的解决方案,使的同源策略能够通过 CORS 变得更加的灵活,以满足不同场景的需要。

2024-10-11 08:43:07 604

原创 什么是 CSRF 攻击?

要记住 CSRF 不是黑客唯一的攻击手段,无论你 CSRF 防范有多么严密,如果你系统有其他安全漏洞,比如跨站域脚本攻击 XSS,那么黑客就可以绕过你的安全防护,展开包括 CSRF 在内的各种攻击,你的防线将如同虚设。CSRF 是一种危害非常大的攻击,又很难以防范。目前几种防御策略虽然可以很大程度上抵御 CSRF 的攻击,但并没有一种完美的解决方案。

2024-10-10 09:20:30 779

原创 什么是 SQL 注入

SQL 注入攻击(SQL Injection),简称注入攻击,是 Web 开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。more而造成 SQL 注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的 SQL 查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。

2024-10-10 09:17:17 1307

原创 为何 Git 与众不同

传统的版本控制系统,保存的是文件变化的补丁集。分布式文件系统 Git 保存的是文件的快照流,不是变化的补丁集。Git 使用 hash 算法来对文件进行引用。

2024-10-09 09:36:05 559

原创 协程与线程和进程的区别与实战

协程是一种已经存在了几十年的轻量级线程,这种抽象技术具备线程的大部分特点。利用协程也能设计出支持并发的程序。与线程的不同之处在于,协程不是抢占式的,你在代码中必须标注出什么时候可以安全的暂停执行当前任务,让位给其他任务。

2024-10-09 09:24:42 888

原创 什么是好的 Web Api 设计 - 查询与别名的设计

一个全新设计的 Java 脚手架;一副崭新的 Java 生态蓝图;一门现代化的 Java 编程哲学,请戳产品主页 => www.mjga.cc

2024-10-08 11:46:02 838

原创 什么是好的 Web Api

web api 就像一张名片一样,专业的名片可以迅速帮助你与客户之间建立信任感,也可能让你的产品在被使用前,就给客户留下业余,糟糕的负面印象。而一旦客户对你的产品产生负面情绪,这种情绪就会蔓延到产品生态圈甚至于相关公司上。

2024-10-08 11:03:57 621

原创 一套全新的 Java 技术栈,一种现代化的 Java 编程方式。

我是一个新式 Java 脚手架,由现代化、容器化、社区化的技术栈构成。这是一种全新的 Java 生活方式,系兄弟就来 Make Java Great Again

2024-09-09 09:21:47 385 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除