GVKun编程网logo

关于使用 Java 框架构建无服务器应用程序的深入探讨(java服务端框架)

4

如果您想了解关于使用Java框架构建无服务器应用程序的深入探讨和java服务端框架的知识,那么本篇文章将是您的不二之选。我们将深入剖析关于使用Java框架构建无服务器应用程序的深入探讨的各个方面,并为

如果您想了解关于使用 Java 框架构建无服务器应用程序的深入探讨java服务端框架的知识,那么本篇文章将是您的不二之选。我们将深入剖析关于使用 Java 框架构建无服务器应用程序的深入探讨的各个方面,并为您解答java服务端框架的疑在这篇文章中,我们将为您介绍关于使用 Java 框架构建无服务器应用程序的深入探讨的相关知识,同时也会详细的解释java服务端框架的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

关于使用 Java 框架构建无服务器应用程序的深入探讨(java服务端框架)

关于使用 Java 框架构建无服务器应用程序的深入探讨(java服务端框架)

使用 java 框架(例如 spring boot、quarkus、micronaut 和 helidon)可以在 amazon web services (aws) 和 google cloud platform (gcp) 等云平台上构建无服务器应用程序,从而简化基础设施管理和降低成本。具体而言,可以将应用程序部署在 aws lambda 或 google cloud functions 上。

关于使用 Java 框架构建无服务器应用程序的深入探讨

使用 Java 框架构建无服务器应用程序

使用无服务器架构,开发人员无需管理底层基础设施即可构建和部署应用程序。本指南将探讨如何使用 Spring Boot 等 Java 框架,在 Amazon Web Services (AWS) 和 Google Cloud Platform (GCP) 等云平台上构建无服务器应用程序。

实战用例

立即学习“Java免费学习笔记(深入)”;

一个无服务器的 API 网关

考虑一个需要通过 API 公开数据或功能的应用程序。我们可以使用无服务器函数将此 API 转换为无服务器架构,如下所示:

@RestController
public class ApiGatewayController {

  @PostMapping("/data")
  public Map<String, Object> getData() {
    return Map.of("data", "Hello World!");
  }
}
登录后复制

在 AWS Lambda 上部署

在 Amazon Lambda 上部署 Java 无服务器应用程序:

public class LambdaHandler implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {

  @Override
  public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent event, Context context) {
    return ApiGatewayController.apiGatewayHandler(event);
  }
}
登录后复制

在 Google Cloud Functions 上部署

在 Google Cloud Functions 上部署 Java 无服务器应用程序:

public class Function implements HttpFunction {

  @Override
  public void service(HttpRequest request, HttpResponse response) throws IOException {
    ApiGatewayController.apiGatewayHandler(request, response);
  }
}
登录后复制

更多 Java 框架

除了 Spring Boot,还有许多其他可用于构建无服务器应用程序的 Java 框架:

  • Quarkus:一个针对无服务器进行优化的框架。
  • Micronaut:一个专为云原生环境设计的框架。
  • Helidon:一个 Oracle 开发的微服务和无服务器框架。

结论

通过使用 Java 框架,开发人员可以轻松地在云平台上构建和部署无服务器应用程序。这有助于简化基础设施管理,降低成本并提供更高的可扩展性和弹性。

以上就是关于使用 Java 框架构建无服务器应用程序的深入探讨的详细内容,更多请关注php中文网其它相关文章!

(原) 关于使用 zoompad 滤镜生成一个转场效果

(原) 关于使用 zoompad 滤镜生成一个转场效果

 之前在 http://bbs.chinaffmpeg.com/forum.php?mod=viewthread&tid=1294&extra=page%3D1 上分享过一个转场效果,今天打算把内容摘录下来,收录到自己的博客下。 

 最近参考 zoompad 的 ffmpeg 官方使用说明书,对这个效果进行了研究,做了一个转场过渡效果,初期的时候出现抖动,后面参考网上的相关资料,通过对图片进等比放大来解决抖动效果,目前使用效果还算不错,所以发出来供需要的人参考一下:

ffmpeg -i ./pic/1.mp4 -i ./pic/2.mp4 -filter_complex "[0]scale=320:-2,zoompan=z=''if(gte(time,4.5),min(max(zoom,pzoom)+0.042,1.5), 1)'':x=''iw/2-(iw/zoom/2)'':y=''ih/2-(ih/zoom/2)'':d=1:s=160x400,trim=duration=5,setpts=PTS-STARTPTS[v0];[1]scale=320:-2,zoompan=z=''if(gte(0.5,time),if(lte(in,1),1.5,max(max(zoom,pzoom)-0.042,1)), 1)'':x=''iw/2-(iw/zoom/2)'':y=''ih/2-(ih/zoom/2)'':d=1:s=160x400,trim=duration=5,setpts=PTS-STARTPTS+5/TB[v1];[v0][v1]overlay" -y test1.mp4

 

 

放大的倍数,自己调整,一般我推荐放到到原图像的 2 倍,就基本能解决抖动,太大的话,影响后期算法的速度。

 

效果如下:

 

转载请注明出处:https://www.cnblogs.com/lihaiping/p/zoompad.html

iOS 关于使用 xib 创建 cell 的两种初始化方式

iOS 关于使用 xib 创建 cell 的两种初始化方式

方法一:

第一步:
[self.collectionView registerNib:[UINib nibWithNibName:@"QGLShareBtnCell" bundle:nil] forCellWithReuseIdentifier:@"QGLShareBtnCell”];
第二步:
QGLShareBtnCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QGLShareBtnCell" forIndexPath:indexPath];

方法二:

QGLIMGroupListCell *cell = (QGLIMGroupListCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell= (QGLIMGroupListCell *)[[[NSBundle  mainBundle]  loadNibNamed:@"QGLIMGroupListCell" owner:self options:nil]  lastObject];
    }

 

iOS 关于使用 [UIBarButtonItem alloc] initWithImage: 方法,导致图片颜色被冲的解决方案

iOS 关于使用 [UIBarButtonItem alloc] initWithImage: 方法,导致图片颜色被冲的解决方案

前言

从其他VC回到当前控制器的时候,发现右边的self.navigationItem.rightBarButtonItem的背景颜色被冲淡了

解决方法:UIImageRenderingModeAlwaysOriginal

    UIImage *aimage = [UIImage imageNamed:@"icon_right_menu"];
    UIImage *image = [aimage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(moreAction)];
    [self.navigationItem setRightBarButtonItem:rightItem animated:YES];

本文同步分享在 博客“iOS进阶”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

Java 关于使用 “final” 修饰基本类型的注意事项

Java 关于使用 “final” 修饰基本类型的注意事项

今天无意发现这样一道题,可以先做做看:

正确答案是 BCD。

 

至于原因有人给出了参考答案:

1、所有的 byte,short,char 型的值将被提升为 int 型;

2、如果有一个操作数是 long 型,计算结果是 long 型;

3、如果有一个操作数是 float 型,计算结果是 float 型;

4、如果有一个操作数是 double 型,计算结果是 double 型;

5、被 fianl 修饰的变量不会自动改变类型,当 2 个 final 修饰相操作时,结果会根据左边变量的类型而转化。
 
其中第 5 项就很模糊了,啥叫 根据左边的变量而变化??
在此做出以下测试:
 
 1 public class Test1
 2 {
 3     public static void main(String[] args) {
 4         
 5         final byte a1=1,b1=1,b11;
 6         final char a2=''a'',b2=''a'',b22;
 7         final short a3=3,b3=3,b33;
 8         final int a4=4,b4=4,b44;
 9         final long a5=5,b5=5,b55;
10         final float a6=6,b6=6,b66;
11         final double a7=7,b7=7,b77;
12         
13         //等号右边,被final修饰的为byte,short,char,int中的任何一种;等号左边可以为byte、short、char、int、long、float、double中的任何一种都不会出错
14         b11=a1+a2;
15         b11=a2+a3;
16         b22=a3+a3;
17         b33=a4+a3;
18         b44=a2+a3;
19         b55=a1+a3;
20         b66=a2+a3;
21         b77=a4+a3;
22         
23         //等号右边,被final修饰的为long、float、double中的任何一种;等号左边类型必须等于或者高于等号右边类型才不会出错,否则出错。 
24         b11=a4+a5;   //编译时出错 类型不匹配:不能从 long 转换为 byte
25         b22=a5+a5;   //编译时出错 类型不匹配:不能从 long 转换为 char
26         b33=a5+a5;   //编译时出错 类型不匹配:不能从 long 转换为 short
27         b44=a5+a5;   //编译时出错 类型不匹配:不能从 long 转换为 int
28         b55=a6+a6;   //编译时出错 类型不匹配:不能从 float 转换为 long
29         b66=a5+a6;
30         b77=a7+a2;
31     }
32 }

 

 以上结论正确?正确了一半,这只是在找规律并不能解释所有情况,例如:

1         final byte a = 126;
2         final int b = 2;
3         
4         byte x = a+b; // 编译出错  不能从 int 转换为 byte

 

为什么错误?

因为,final 修饰的变量其实为常量,即在编译期间的时候就已经确定为一个具体的不变的东西,所以以上代码在运行的时候直接相当于 byte x = 126 + 2;【byte 范围为 - 128~127】

而 byte x = 122 + 5; 就不会有错。

但是要注意的是,long、float、double 替换成相应常量时候会自动带上标识 L、F、D,所以我们平时带入这三种时记得带上标识。例如 12L、12.0F、12.0D。

int y = 12D + 12L; // 编译出错  不能从 double 转换为 int

 

额外的,我们需要提醒一些情况【与 final 无关】

1         int x = 2147483647 + 2147483647; // 正确 【2147483647为int最大值】
2         int y = 2147483648; // 类型 int 的文字 2147483648 超出了范围

 

第一行代码,右边计算溢出,但是由于底层默认采用 int 补码进行运算,最后得到的补码再还原,值为 - 2 再赋值给左边,所以不会报错,而第二行直接就溢出了。

【如需计算,则将右边其中一个 2147483647 加上 L(变为 long),并且将 x 声明为 long 即可使用 long 的补码计算】

 

综上所述,其实有关【使用 “final” 修饰基本类型】并不需要分太多情况,

直接将 final 那个变量名用其常量值进行带入,再判断是否发生各种错误即可。

 

这时候,我们再回到最开始的那道题就很好解了:

  1. b3=(b1+b2);  /* 语句 1*/  ——>  b3 = b1+ b2;  // 错,右边整形计算默认使用 int,最终为 int  而左边为 byte 类型,大变小需要强转
  2. b6=b4+b5;    /* 语句 2*/   ——>  b6 = 4+ 6;      // 正确
  3. b8=(b1+b4);  /* 语句 3*/  ——>  b8 = b1+ 4;  // 错,同 1
  4. b7=(b2+b5);  /* 语句 4*/  ——>  b7 = b2+ 6;  // 错,同 1

最后附上等号右边变量计算最终类型表:(直接写则整形为 int,小数为 double)

全为整形:无 long——int        例如 (byte) a +(short) b + 1

     有 long———long      例如 (byte) a +(short) b + 1 + (long) d

包含小数:无 double——float      例如 (byte) a +(short) b + 1 + (long) d + (float) e

     有 doule——double      例如 (byte) a +(short) b + 1 + (long) d + (float) e + 1.0

我们今天的关于关于使用 Java 框架构建无服务器应用程序的深入探讨java服务端框架的分享已经告一段落,感谢您的关注,如果您想了解更多关于(原) 关于使用 zoompad 滤镜生成一个转场效果、iOS 关于使用 xib 创建 cell 的两种初始化方式、iOS 关于使用 [UIBarButtonItem alloc] initWithImage: 方法,导致图片颜色被冲的解决方案、Java 关于使用 “final” 修饰基本类型的注意事项的相关信息,请在本站查询。

本文标签: