2021 12-15

第44篇-为native方法设置解释执行入口

对于Java中的native方法来说,实际上调用的是C/C++实现的本地函数,由于可能会在Java解释执行过程中调用native方法,或在本地函数的实现过程中调用Java方法,所以当两者相互调用时,必须要遵守调用约定,同时要保证在被调用方法执行完成后,调用者的方法能继续向下执行。 在HotSpotVM中,Java方法调用native方法会有2个入口例程,一个为解释执行的入口例程,一个为“编译”执行的入口例程。所谓“编译”执行其实是如果一个native方法在解释模式被调用到了CompileThre

2021 12-14

k8s-deployment

1.简介 一个Deployment为Pods和ReplicaSets提供声明式的更新能力。 用户负责描述Deployment中的目标状态,而Deployment控制器(Controller)以受控速率更改实际状态,使其变为期望状态。你可以定义Deployment以创建新的ReplicaSet,或删除现有Deployment,并通过新的Deployment收养其资源。 ReplicaSet的目的是维护一组在任何时候都处于运行状态的Pod副本的稳定集合。因此,它通常用来保证给定数量的、完全相同的P

2021 12-14

Spring Security Oauth2

SpringSecurityOauth2 授权服务器 AuthorizeEndpoint:授权端点,进行授权 TokenEndpoint:令牌端点,经过授权拿到对应的Token IntrospectionEndpoint:校验端点,校验Token的合法性 RevocationEndpoint:撤销端点,撤销授权 SpringSecurityOauth2架构 流程: 用户访问,此时没有Token。Oauth2RestTemplate会报错,这个报错信息会被Oauth2ClientCont

2021 12-14

封装状态信息码

封装状态码 1,创建枚举类设置状态码 publicenumAjaxStatus{  OK(20000,"操作成功"),  ERROR(50000,"操作失败"),​  ////登录状态相关的状态码  EMAIL_NOT_FOUND(30000,"邮箱错误"),  ADMIN_NOT_FOUND(30001,"用户未激活");​  privateintstatus; &

2021 12-14

Log4j漏洞源码分析

Log4j漏洞源码分析 这几天Log4j的问题消息满天飞,今天我们就一起来看看从源码角度看看这个漏洞是如何产生的。 大家都知道这次问题主要是由于Log4j中提供的jndi的功能。 具体涉及到的入口类是log4j-core-xxx.jar中的org.apache.logging.log4j.core.lookup.StrSubstitutor这个类。 原因是Log4j提供了Lookups的能力(关于Lookups可以点这里去看官方文档的介绍),简单来说就是变量替换的能力。 在Log4j将要输出

2021 12-14

一种基于Java Swing/HTML/MySQL的汽车租赁系统

    该项目是一个Java的课程作业(大二),主要运用Java、Swing、HTML、MySQL,实现基本的租车逻辑、界面可视化、信息导出、数据存储等功能。实现管理员、用户两种角色登录,并结合Java开发中常用的开发技术或特性(工厂模式、继承、多态等)构建整个软件 功能结构图: UML类图(由于时间等原因,结构有点散乱)  系统测试设计     虽说开发这个系统不算难,但也还是小结一下吧。首先是数据表的设计,由于开发此系统时

2021 12-14

分布式事务(5)---最终一致性方案之可靠消息

  分布式事务(1)-理论基础 分布式事务(2)---强一致性分布式事务解决方案 分布式事务(3)---强一致性分布式事务Atomikos实战 分布式事务(4)---最终一致性方案之TCC   可靠消息最终一致性是解决分布式事务中一种典型的柔性方案。通常有两种实现方式,一种是基于本地消息表,一种是基于RocketMQ的事务消息。需要注意发送消息的一致性和消息的可靠性。 基本原理: 事务发起方执行本地事务成功后发出一条消息,事务参与方也就是消息的消费者,接收到消息并执行成功本地

2021 12-14

【死磕Java并发】—–深入分析volatile的实现原理

通过前面一章我们了解了synchronized是一个重量级的锁,虽然JVM对它做了很多优化,而下面介绍的volatile则是轻量级的synchronized。如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。Java语言规范对volatile的定义如下: Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。 上面比较绕口,通俗点讲就是说一个变量如果用volat

2021 12-14

Identity Server 4 从入门到落地(十二)—— 使用Nginx集成认证服务

前面的部分:IdentityServer4从入门到落地(一)——从IdentityServer4.Admin开始IdentityServer4从入门到落地(二)——理解授权码模式IdentityServer4从入门到落地(三)——创建Web客户端IdentityServer4从入门到落地(四)——创建WebApiIdentityServer4从入门到落地(五)——使用Ajax访问WebApiIdentityServer4从入门到落地(六)——简单的单页面客户端IdentityServer4从入门

2021 12-14

复习一下小程序轮播

好久没碰前端了,写个轮播都废了我这么大功夫。 最近闲着没事写一写小程序,有个要实现的功能是这样的: 如图,上面的色块是个轮播,下面的也是轮播。 滑动上面的轮播,下面的也跟着动,滑动下面的,上面也跟着动。 什么,你说哪个傻子会做这种功能? 我啊。 其实做出来的效果还挺不错的,就看你往轮播里面放什么内容。 我做出来的效果是下面这样的: 当然你也可以自己体验一下效果: 还挺不错的吧,快夸夸我。 但是真的好久没写前端了呀,这点功能都让我写了好久。 还本来就菜。 话不多说,上点正菜吧。 思路