自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(125)
  • 收藏
  • 关注

原创 Spring Security OAuth2 中的 JwtAccessTokenConverter

是 Spring Security OAuth2 中的一个类,用于处理 JWT(JSON Web Token)的生成和验证。它在授权服务器和资源服务器之间起着关键作用,确保令牌的完整性和真实性。配置了授权服务器的端点,指定了如何存储和转换令牌。配置了授权服务器的安全性,定义了公钥访问和令牌检查的访问规则。这些配置确保了授权服务器能够安全地生成和管理 JWT,并提供必要的端点供客户端和资源服务器访问。

2024-05-17 19:43:49 785

原创 oauth是在那个流程用jwt生成token的呢?

你可以编写一个自定义的 Spring Security 过滤器或者拦截器,在请求到达资源服务器时对 JWT 进行验证和解析,然后根据解析出的用户信息和权限信息进行相应的授权操作。在这个流程中,OAuth 2.0 主要用于客户端的认证和授权,而 JWT 则用于表示用户的身份信息和权限信息,并在客户端和资源服务器之间进行安全通信。如果用户具有足够的权限,资源服务器将返回请求的资源数据或执行请求的操作;根据用户的身份信息和权限信息,资源服务器进行权限验证,决定是否授权用户对请求的资源进行访问。

2024-03-03 10:03:48 447

原创 oauth2.0的 /oauth/token是配制就有的吗?它会自动返回token吗?在哪里使用呢

拿到 OAuth 2.0 的访问令牌(access token)后,客户端可以使用该令牌来访问受保护的资源服务器(Resource Server)。如果 OAuth 2.0 授权服务器支持多个资源服务器或者不同类型的资源,客户端可以使用同一个访问令牌来访问不同的资源,只要这些资源服务器都信任该授权服务器颁发的访问令牌。总之,访问令牌是客户端与资源服务器之间进行安全通信的重要凭证,用于证明客户端的身份并获取访问受保护资源的权限。资源服务器会验证访问令牌的有效性,并根据令牌中的权限信息来授权用户对资源的访问。

2024-03-02 16:44:24 722

原创 oauth2.0怎么和jwt结合

在结合使用 OAuth 2.0 和 JWT 时,通常是使用 OAuth 2.0 进行用户授权和颁发访问令牌,而 JWT 则用作访问令牌(Access Token)。这可能涉及到配置授权服务器、资源服务器以及客户端,以及实现相应的 OAuth 2.0 授权流程和 JWT 的生成和验证逻辑。结合 OAuth 2.0 和 JWT 的优势在于,OAuth 2.0 提供了标准的授权机制和流程,而 JWT 则提供了自包含、无状态的访问令牌格式。这种结合使用的方式既保证了安全性,又提供了灵活性和可扩展性。

2024-02-29 08:09:31 542

原创 oauth2.0是怎么使用的

总的来说,OAuth 2.0 提供了一个灵活的授权机制,允许用户控制对其受保护资源的访问,并且不需要向第三方应用程序公开其登录凭据。OAuth 2.0 的流程通常是在第三方应用程序和授权服务器之间进行,以确保用户数据的安全性和隐私保护。OAuth 2.0 是一种用于授权的开放标准,允许用户授权第三方应用程序访问其受保护的资源,而无需将用户名和密码透露给第三方应用程序。

2024-02-29 07:57:19 220

原创 JWT流程

在Spring Security的配置中,你需要添加一个JWT过滤器来验证请求中的JWT,并根据其中的信息进行用户认证和授权。:客户端在每次请求时需要将JWT放在请求的Header中发送给服务器,服务器会验证JWT的签名和有效性,并根据其中的信息进行用户认证和授权。是一个JWT过滤器,用于在Spring Security过滤器链中验证请求中的JWT。:后端需要编写处理登录请求的控制器方法,验证用户的身份信息,并生成JWT返回给客户端。,用于在Spring Security过滤器链中验证请求中的JWT。

2024-02-24 21:29:59 248

原创 token的有状态和无状态

简而言之,有状态认证系统依赖于服务器端存储的会话状态来验证用户身份和权限,而无状态认证系统则不依赖于服务器端存储的会话状态,所有的认证信息都被包含在每个请求中。在身份验证和授权领域,"有状态"(stateful)和"无状态"(stateless)通常用来描述系统处理用户认证信息的方式。

2024-02-24 20:24:24 622

原创 微信小程序的用户注册登陆是怎么实现的

这个过滤器的作用是验证请求中的JWT Token,如果验证通过,则设置用户的认证信息到Spring Security上下文中,从而实现用户的身份认证。JWT(JSON Web Token)是一种用于在网络上传输信息的基于 JSON 的开放标准(RFC 7519),主要用于在用户和服务器之间传递安全可靠的信息。在微信小程序中,开发者可以选择使用 JWT 来生成和验证用户的登录态 Token,以实现用户注册登录的功能。这段代码是Spring Security中的配置代码,用于配置HTTP请求的安全性。

2024-02-24 16:46:35 1518

原创 前端是Vue做的,那前端是怎么解析这个对象的呢

一旦用户登录成功并从后端获取到用户信息后,你可以将这些信息存储在 Vuex 的 state 中。当用户信息发生变化时,后端返回更新后的用户信息,你可以通过调用 Vuex 中的 mutation 来更新存储的用户信息。前端,通常会在用户登录成功后将用户信息存储在前端的某个地方,例如浏览器的本地存储(LocalStorage 或 SessionStorage)或者在内存中保存。一旦用户信息发生了修改,通常情况下后端会返回更新后的用户信息,并且前端需要更新存储的用户信息。一旦获取到响应数据,用户信息会被存储在。

2024-02-22 07:47:24 338

原创 spring secrunity 登陆的loadUser方法,返回的对象可以自定义吗?

接口的实现类对象,这是Spring Security框架提供的默认用户信息对象。如果你希望返回自定义的用户信息对象,你可以创建一个类实现。方法用于根据用户名加载用户详细信息,通常返回的是。Spring Security的。方法中返回该自定义对象。

2024-02-22 07:39:50 282

原创 springSecurity登陆

总的来说,Vue 前端登录页面点击登录按钮后,发送的请求会被 Spring Security 后端的 UsernamePasswordAuthenticationFilter 拦截和处理,通过用户身份验证成功后,Spring Security 将生成相应的认证信息并存储,以确保后续请求的安全性和权限控制。当 Vue 登录页面点击登录按钮后,会向后端发送登录请求。是的,如果您的系统需要进行用户身份验证和访问权限控制,那么在用户登录后,点击系统的其他按钮时,也会被 Spring Security 拦截和处理。

2024-02-22 07:37:20 547

原创 java8stream常见操作

java8 的groupby是怎么。

2024-02-22 07:36:25 111

原创 MQTT 保留消息

发布者发布消息时,如果 Retained 标记被设置为 true,则该消息即是 MQTT 中的保留消息(Retained Message)。MQTT 服务器会为每个主题存储最新一条保留消息,以方便消息发布后才上线的客户端在订阅主题时仍可以接收到该消息。发布订阅模式虽然能让消息的发布者与订阅者充分解耦,但也存在一个缺点,即订阅者无法主动向发布者请求消息。如下图,当客户端订阅主题时,如果服务端存在该主题匹配的保留消息,则该保留消息将被立即发送给该客户端。

2024-01-14 18:19:31 438

原创 mqtt遗嘱消息

MQTT遗嘱消息是一种特殊类型的消息,它允许客户端在离线或非正常断开连接的情况下发送一条预定义的消息。在上述例子中,如果客户端 "Client123" 异常断开连接,MQTT服务器将发布遗嘱消息到主题 "/status",消息内容为 "Client123 is offline",QoS级别为1,且保留标志被设置为true。如果客户端正常断开连接,即客户端发送DISCONNECT消息,不会触发遗嘱消息的发送。如果客户端在某种原因下线(例如,意外崩溃、断电、网络故障等),则服务器将发布预先设置的遗嘱消息。

2024-01-14 18:06:22 776

原创 Spring-Security

Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了SpringIoC,DI(控制反转 Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。登录成功或者失败都返回 JSON,我们需要自定义处理器。

2024-01-14 15:41:37 477

原创 经典的子组件调用父组件和父组件调用子组件的场景

3. 状态更新:子组件是一个展示列表的组件,当用户在列表中进行某种操作(例如删除、编辑等)时,子组件通过触发自定义事件,将操作的相关信息传递给父组件,以便父组件更新相应的状态。2. 弹窗关闭:子组件是一个弹窗组件,当用户点击关闭按钮或其他触发关闭的操作时,子组件通过触发自定义事件,通知父组件关闭弹窗,并传递一些必要的信息,如是否保存数据等。1. 表单提交:子组件是一个表单,当用户点击提交按钮时,子组件通过触发自定义事件,并将表单数据作为参数传递给父组件,以便在父组件中进行表单数据的处理和提交操作。

2024-01-01 14:45:02 420

原创 子组件如果向父组件传递数据是怎么做到

在父组件 ParentComponent 中,我们使用 `@childEvent` 监听子组件触发的自定义事件,并在 `handleChildEvent` 方法中接收传递的数据,并将其保存到 `receivedData` 变量中。在这个示例中,子组件 ChildComponent 中包含一个按钮,当按钮被点击时,子组件会触发一个名为 `childEvent` 的自定义事件,并将数据 `'Hello from child'` 作为参数传递给父组件。这种方式使得组件之间的数据通信更加灵活和可扩展。

2024-01-01 14:43:32 360

原创 父组件向子组件传递数据

在这个示例中,父组件 ParentComponent 向子组件 ChildComponent 传递了一个名为 message 的数据。在子组件中,我们声明了一个名为 message 的 prop,并指定了它的类型和是否是必需的。在 Vue.js 中,父组件向子组件传递数据可以通过 props 实现。props 是父组件向子组件传递数据的方式之一,可以让父组件传递数据给子组件,并且在子组件中使用这些数据。通过这样的方式,父组件就可以向子组件传递数据,并且子组件可以根据传递过来的数据来进行相应的操作。

2024-01-01 14:30:01 426

原创 vue的file-saver

一旦接收到响应,我们使用 Vue FileSaver 的 `saveAs` 方法将 Blob 对象保存为文件,并指定文件名。使用 Vue FileSaver,你可以将数据保存为常见的文件格式,如文本文件(.txt)、CSV 文件(.csv)、JSON 文件(.json)、Excel 文件(.xlsx)等。需要注意的是,在实际情况中,你需要将 `/your-download-api` 替换为你真正的后端下载接口地址,并根据实际情况设置文件名等参数。这样,当用户点击按钮时,浏览器将下载并保存文件到本地。

2024-01-01 14:25:23 1394

原创 VUE的template使用

引入了之前定义的 `HelloWorld` 组件,并在需要的位置使用了 `<hello-world></hello-world>` 标签来调用该组件的模板。在上述代码的 `components` 选项中添加了 `HelloWorld` 组件的注册,即 `components: { HelloWorld }`。在 Vue 中,如果你想在其他地方使用一个组件的模板,不需要为该模板定义特定的 ID。通过以上步骤,你可以在其他地方使用该组件的模板,而不需要为模板定义特定的 ID。

2024-01-01 14:20:14 541

原创 VUE X

通过使用 Vuex,可以将应用程序中的共享状态从组件中提取出来,使得不同组件之间可以更方便地共享数据,并且可以更好地追踪和调试数据的变化。4. **Action(动作)**:类似于 Mutation,用于提交 Mutation 来修改数据。它用于在 Vue.js 应用程序中集中管理应用程序的数据状态,使得不同组件之间可以共享、响应式地访问和修改数据,以实现更好的代码组织和数据管理。2. **Getter(获取器)**:用于从 state 中派生出一些状态,类似于 Vue 组件的计算属性。

2024-01-01 14:08:59 455

原创 mqtt协议

MQTT(Message Queuing Telemetry Transport)是一种轻量级、开放标准的消息传输协议,常用于物联网(IoT)和传感器网络中。它使用发布/订阅模式,使设备能够通过中介(Broker)进行通信。

2023-12-06 20:32:38 393

原创 责任链模式

由于第一个包裹是"fragile",所以它会被分拣员处理,并且请求会按照责任链的顺序传递给下一个处理者,最终由签收员处理。在客户端代码中,创建了一个责任链,将请求传递给责任链的第一个处理者。责任链中的每个处理者都有一个指向下一个处理者的引用,当处理者完成任务后,它可以选择将请求传递给下一个处理者。责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许你将请求沿着处理者链进行传递,每个处理者决定是否处理请求以及是否将请求传递给下一个处理者。

2023-12-02 09:08:09 517

原创 异步重试 当你需要不停调用第三方接口,直到返回成功或失败时,可以使用类似的异步重试的机制。l

是的,你可以不使用并发框架来实现重试功能,但需要手动处理线程的等待和异步任务。// 模拟第三方接口返回的状态,这里随机生成 "processing", "success", 或 "failure"当你需要不停调用第三方接口,直到返回成功或失败时,可以使用类似的异步重试的机制。// 重试间隔为1秒。// 如果是成功或失败状态,则直接返回结果。// 如果返回的状态是处理中,进行重试。// 如果返回的状态仍然是处理中,继续重试。// 如果是成功或失败状态,则直接返回结果。// 如果是成功或失败状态,则退出循环。

2023-12-02 09:07:00 502

原创 git操作

如果你想要一个更线性和干净的提交历史,以便更容易理解和审查,或者你希望将源分支的提交整合到目标分支上,那么。如果你希望保留分支的独立性,想要清晰可见的分叉和合并点,并不介意较复杂的提交历史,那么使用。应该谨慎使用,特别是在已经推送分支到远程仓库的情况下,因为它会改变提交历史。

2023-10-29 20:49:41 167

原创 第三方接口重试机制是怎么做的

第三方接口的重试机制是一种用于确保消息或请求的可靠传递的重要实践。是 Java 中用于执行定时任务的接口,它提供了一种更灵活和强大的方式来执行周期性任务和延迟任务。你可以使用它来实现指数退避的重试策略,以及其他定时任务需求。:这是一种常见的重试策略,其中重试的间隔时间逐渐增加,通常以指数方式(如1、2、4、8分钟)增加。接口的任务,该任务将包含需要重试的逻辑。你可以定义这个任务来执行你的请求和重试逻辑。:在任务执行期间,需要处理可能的异常,并根据需要增加重试间隔或停止任务。时间,然后再次执行任务。

2023-10-28 10:37:50 189

原创 java异常类如何定义

受检查异常(Checked Exceptions): 受检查异常是在编译时必须捕获或声明的异常,它们通常表示程序可能遇到的已知问题,例如文件未找到或网络连接失败。非受检查异常(Unchecked Exceptions,也称为运行时异常): 非受检查异常通常是由程序错误或逻辑错误引起的异常,它们不要求显式的捕获或声明。通常,你需要提供至少一个带有字符串消息的构造方法,用于描述异常的详细信息。你可以创建一个新的非受检查异常类,继承自。类来定义的,具体取决于异常是受检查异常还是非受检查异常。

2023-10-28 09:45:18 116

原创 java并发怎么控制资源

Java提供了各种并发集合,如ConcurrentHashMap、ConcurrentLinkedQueue,它们是线程安全的,可以用于在多线程环境中控制资源的访问。:这两个类可以用于控制多个线程之间的同步。:BlockingQueue是一种线程安全的队列,可以用于控制资源的共享和访问。:ReentrantLock是Java的锁机制之一,它提供了更多的灵活性和功能,如可重入性、中断等,可以用于代替synchronized。这些机制和工具可以根据具体的需求用于控制资源,确保线程安全和有效的资源管理。

2023-10-17 21:59:13 173

原创 jvm调优 和实际案例

JVM(Java Virtual Machine)调优是优化Java应用程序性能的关键部分,它可以帮助你有效地管理内存、垃圾收集、线程和类加载等方面的资源。通过以上步骤,该电子商务网站成功改善了性能问题,提高了系统的响应时间,减少了内存溢出问题,提供更好的用户体验。JVM调优是一个复杂的过程,需要不断的监控和调整,以适应应用程序的需求和运行环境。增大-Xms和-Xmx参数,以增加堆内存的初始大小和最大大小,确保应用有足够的内存来处理高负载。:检查应用中的线程池配置,发现线程池的核心线程数和最大线程数过小。

2023-10-17 21:56:53 186

原创 mysql not in 怎么优化

最终,优化 SQL 查询取决于具体的数据库结构和查询要求。你应该根据你的情况尝试不同的方法,并使用查询性能分析工具来评估哪种方法最适合你的应用程序。如果你在处理大量数据时仍然遇到性能问题,可以考虑分页处理数据,以减小每次查询的数据集大小。确保你的表上有适当的索引,尤其是连接列和子查询中使用的列。子句时,需要小心,因为它可能会导致性能问题,尤其是在大型数据集上。,尝试将子查询结果限制为唯一值,然后与主查询使用。定期执行表优化操作,以减小表碎片并提高查询性能。确保在连接列上有索引,以提高查询性能。

2023-10-15 14:57:03 2768 1

原创 IX模式和其他模式

尽管 2PC 可以保证分布式事务的一致性,但它有一些缺点,如协调者单点故障问题和性能开销,因此并不是首选的模式。根据您提到的 "IX 模式",我猜测您可能是在讨论分布式事务处理中的一种模式。通常,在分布式事务领域,存在多种模式和协议,用于实现不同类型的分布式事务。:SAGA 模式是一种比较宽松的分布式事务模式,其中事务被分解为一系列有序的步骤。不同的模式适用于不同的场景,选择适合您应用程序需求的模式取决于您的系统架构、性能要求和一致性需求。需要仔细考虑每种模式的优缺点,以确定最合适的解决方案。

2023-10-12 22:02:13 429

原创 seata框架的atomic.jar包做什么用的

是 Seata 框架的一部分,它的作用是用于处理分布式事务中的原子操作,实现分布式事务的 ACID 特性(原子性、一致性、隔离性、持久性)。是 Seata 框架的核心组件之一,用于处理分布式事务的原子性操作,协调事务的提交和回滚,以确保分布式系统中的数据一致性。:Seata Atomic 负责处理分布式事务中的异常情况,如事务超时、网络故障等,以确保分布式系统的稳定性和可靠性。Seata(简称分布式事务解决方案)是一种开源的分布式事务管理框架,用于解决分布式系统中的分布式事务问题。

2023-10-12 21:58:38 96

原创 使用多线程实现批处理过程

使用多线程实现批处理过程,将一下数组,按10个一组,每组一个打印数据,并在19个线程都处理完成后输出打印次数 int[]data = new int [100];

2023-09-23 14:24:32 263

原创 改造user ,使得userId相同视为一个对象,user是Key,User的username做value

如果您想要将具有相同userId的用户视为一个对象,其中User对象是键,而User对象的username是值,您可以使用Java的。

2023-09-23 10:48:04 94

原创 实现一个类 支持100个线程同时向银行账户存入一元钱

请注意,这只是一个简单的示例代码,用于演示如何在Java中实现多线程并发操作。在实际应用中,您可能需要更多的功能,如错误处理、日志记录等。此外,在真实的银行应用中,通常会使用更复杂的事务和安全性措施来确保数据的完整性和安全性。来实现线程同步,确保在多线程环境下对账户余额的访问是线程安全的。方法启动了100个线程,并发执行存款操作。这个Java示例使用了。

2023-09-11 18:12:13 421

原创 是否可以在static环境中访问非static变量,用代码说明

在静态环境中无法直接访问非静态(非static)变量。静态环境指的是静态方法或静态代码块,它们在类加载时执行,并且不依赖于对象的实例。非静态变量是实例变量,它们的值是与类的每个实例对象相关联的。,但这会导致编译错误。为了在静态方法中使用非静态变量,我们需要创建类的实例,并通过该实例来访问非静态变量。在静态方法中,我们尝试直接访问。这样就可以在静态方法中间接地访问非静态变量。在修改后的代码中,我们创建了一个。,然后通过该实例访问了非静态变量。是一个非静态变量,而。

2023-07-12 23:00:56 450

原创 为什么除了null外,任何元素不得添加到上<? extends T>

时,我们无法确定实际类型参数是什么。这意味着我们只能安全地读取该类型的数据,但不能写入除了。以外的任何元素,是因为编译器无法确定实际类型参数是什么,无法保证添加的元素类型的安全性。这是为了确保类型安全性,防止我们向可能具有不兼容类型的列表添加元素。,编译器无法确定具体的类型参数是什么,无法保证添加的元素类型是安全的。然后我们将其赋值给一个通配符类型的列表。下面是一个示例代码,说明为什么无法向。参数中添加一个元素。因此,编译器会报错,阻止我们向。在上面的示例中,我们有一个。类型的集合中添加除了。

2023-06-28 22:13:30 732

原创 解析linux命令lsof-n| awk ‘{print $2}‘ | sort| uniq -c | sort -nr |more

该 Linux 命令用于列出当前系统中打开的文件和网络连接的信息,并按照进程 ID(PID)进行统计和排序。命令用于提取每行的第二个字段,即进程 ID(PID)。命令用于对输入进行排序,默认按照字母顺序进行排序。命令用于列出打开的文件和网络连接的信息。命令用于分页显示输出结果,以便在终端逐页查看。命令用于从排序后的输入中删除重复的行。命令是用于处理文本文件的强大工具。用于统计每个唯一行出现的次数。用于反向排序(从最大到最小)。用于禁止解析主机名。: 第二次排序,选项。

2023-06-12 21:32:34 1805

原创 netstat -n|awk ‘/^tcp/{++[$NF]} END { for (a in S) print a ,s[i]}‘

您提供的命令是用于统计当前系统中 TCP 连接状态的数量。该命令的输出将显示当前系统中每个 TCP 连接状态的数量。选项来禁用域名解析,以便显示 IP 地址而不是主机名。两个命令来完成任务。:是一个用于文本处理的强大工具。命令的输出作为下一个命令。

2023-06-12 21:29:57 593

原创 $NF是什么意思

行的最后一个字段,即 TCP 连接的状态。通过递增相应状态的数量来统计每个连接状态的数量。是一个特殊变量,表示当前行的最后一个字段(Field)。在 awk 中,通过。是另一个特殊变量,表示当前行的字段数。加上字段索引来引用相应的字段值。表示第二个字段,以此类推。表示最后一个字段的索引。,可以访问到这个字段的值。举个例子,假设输入行为。,其中最后一个字段为。请注意,awk 中的。

2023-06-12 21:28:54 1187

空空如也

空空如也

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

TA关注的人

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