小编Dee*_*mar的帖子

春季5反应堆中控制器与路由器的区别

现在有两种方法可以在Spring 5中公开http端点.

  1. 控制器:通过制作休息控​​制器.

    @RestController
    @RequestMapping("persons")
    public class PersonController { 
    
        @Autowired
        private PersonRepo repo;
    
        @GetMapping("/{id}")
        public Mono<Person> personById(@PathVariable String id){
            retrun repo.findById(id);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 路由器:通过路由器.例如:

    @Bean
    public RouterFunction<ServerResponse> personRoute(PersonRepo repo) {
        return route(GET("/persons/{id}"), req -> Mono.justOrEmpty(req.pathVariable("id"))                                             
                                                     .flatMap(repo::getById)
                                                     .flatMap(p -> ok().syncBody(p))
                                                     .switchIfEmpty(notFound().build()));
    }
    
    Run Code Online (Sandbox Code Playgroud)

使用任何一种方法有任何性能差异吗?从头开始编写应用程序时,我应该使用哪一个.

spring spring-boot reactive spring-webflux

9
推荐指数
2
解决办法
2260
查看次数

用户在网页+ iframe上花费的时间

我想衡量用户在网页上花费的时间。它不包括用户离开浏览器导航的时间。

我发现很少有开放源代码库,例如Timejs库,它可以衡量用户在网页上花费的时间,但是当用户在页面上观看Youtube视频时,这些库无法衡量该时间。

  1. 有没有办法处理这种情况或任何其他处理这种情况的库?
  2. 实际上,这些库无法计算用户在iFrame中花费的时间。了解用户何时在iframe中处于活动状态的最佳方法是什么?
  3. Google / AppNexus / Motomo如何计算互动时间?他们遵循通用的设计/架构吗?

PS:我正在尝试将库与我的react App集成在一起。React中是否存在解决此问题的类似方法。请在评论/答案中让我知道。

提前致谢

javascript reactjs

9
推荐指数
1
解决办法
230
查看次数

将一个对象合并到另一个对象中

我有两个相同类型的对象.我想创建一个方法,它可以合并两个对象的属性,并可以返回一个对象.

例如:考虑具有4个字段的ABC类

Class ABC{
String name;
String id;
String salary;
String status;
}
Run Code Online (Sandbox Code Playgroud)

假设第一个对象是

ABC[name=ZEE,id=2,salary=null,status=1]
Run Code Online (Sandbox Code Playgroud)

第二个对象是

ABC[name=john,id=null,salary=12200,status=null]
Run Code Online (Sandbox Code Playgroud)

我想创建一个可以合并这两个对象的泛型方法,并可以将结果输出为:

ABC[name=ZEE,id=2,salary=12200,status=1]
Run Code Online (Sandbox Code Playgroud)

该方法应该采用Object类型的两个参数:

Object  mergeObject(Object Obj1, Object Obj2){
}
Run Code Online (Sandbox Code Playgroud)

注意:如果两个对象都具有该属性的非null值,则将采用第一个对象属性.

java

5
推荐指数
1
解决办法
1万
查看次数

在 cloudfront 上启用 Brotli 压缩

我在 cloudfront 上部署了一个 angular 4 生产版本。对于压缩,我在服务器上启用了 gzip 压缩。我想在 cloudfront 上为每个请求的资源启用 brotli 压缩。

我已经在发送 gzip br 标头,如下图所示:

在此处输入图片说明

如何在 cloudfront 上配置 brotli 压缩?

amazon-web-services amazon-cloudfront

5
推荐指数
1
解决办法
3712
查看次数

Spring 5 WebFlux中的拦截器

Spring WebFlux在我的项目中使用。我想创建一个拦截器来计算每个API花费的时间。在Spring MVC我们所HandlerInterceptor没有的spring-boot-starter-webflux。我尝试添加spring-boot-starter-web并编写了拦截器,但没有成功。这是代码:

@Component
public class TimeInterceptor implements HandlerInterceptor {

public static Logger logger = Logger.getLogger(TimeInterceptor.class);

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    long startTime = System.currentTimeMillis();
    request.setAttribute("startTime", startTime);
    return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    long totaltime = System.currentTimeMillis() - (long) request.getAttribute("startTime");
    request.setAttribute("totaltime", totaltime);
    logger.info("Logging total time" + totaltime);

}
...
...
Run Code Online (Sandbox Code Playgroud)

我想向我的应用程序添加类似的功能,并拦截每次调用所花费的时间。

提前致谢。

spring spring-mvc spring-webflux

5
推荐指数
2
解决办法
2817
查看次数

localstorage 和 setInterval() 具有多个选项卡

我们存储了一些数据localstorage,并且window.setInterval()每分钟定期更新它。在此期间我们不断地读取和写入数据。

是否可能会出现并发问题,因为我们正在使用setInterval(),因为多个选项卡可以同时修改数据localstorage


编辑1:详细解释场景:

每个选项卡都针对localstorage一个键(例如xyz)写入一些数据,并且setInterval()存在于正在运行的 JavaScript 中,不断检查xyz键数据。如果该键存在一些数据,则setInterval回调会将其发送到后端。运行相同脚本的每个选项卡将读取密钥xyz,并在执行某些逻辑后将一些数据附加到现有值。

我怀疑可能会出现并发问题,例如一个选项卡可能正在读取密钥xyz并将数据添加到本地存储,而另一个选项卡可能同时执行相同的操作。现在两者都会尝试同时发送数据,因此我可能会在后端收到相同的数据两次。

javascript

5
推荐指数
1
解决办法
2844
查看次数