现在有两种方法可以在Spring 5中公开http端点.
控制器:通过制作休息控制器.
@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)路由器:通过路由器.例如:
@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)使用任何一种方法有任何性能差异吗?从头开始编写应用程序时,我应该使用哪一个.
我想衡量用户在网页上花费的时间。它不包括用户离开浏览器导航的时间。
我发现很少有开放源代码库,例如Timejs库,它可以衡量用户在网页上花费的时间,但是当用户在页面上观看Youtube视频时,这些库无法衡量该时间。
。
PS:我正在尝试将库与我的react App集成在一起。React中是否存在解决此问题的类似方法。请在评论/答案中让我知道。
提前致谢
我有两个相同类型的对象.我想创建一个方法,它可以合并两个对象的属性,并可以返回一个对象.
例如:考虑具有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值,则将采用第一个对象属性.
我在 cloudfront 上部署了一个 angular 4 生产版本。对于压缩,我在服务器上启用了 gzip 压缩。我想在 cloudfront 上为每个请求的资源启用 brotli 压缩。
我已经在发送 gzip br 标头,如下图所示:
如何在 cloudfront 上配置 brotli 压缩?
我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)
我想向我的应用程序添加类似的功能,并拦截每次调用所花费的时间。
提前致谢。
我们存储了一些数据localstorage,并且window.setInterval()每分钟定期更新它。在此期间我们不断地读取和写入数据。
是否可能会出现并发问题,因为我们正在使用setInterval(),因为多个选项卡可以同时修改数据localstorage?
编辑1:详细解释场景:
每个选项卡都针对localstorage一个键(例如xyz)写入一些数据,并且setInterval()存在于正在运行的 JavaScript 中,不断检查xyz键数据。如果该键存在一些数据,则setInterval回调会将其发送到后端。运行相同脚本的每个选项卡将读取密钥xyz,并在执行某些逻辑后将一些数据附加到现有值。
我怀疑可能会出现并发问题,例如一个选项卡可能正在读取密钥xyz并将数据添加到本地存储,而另一个选项卡可能同时执行相同的操作。现在两者都会尝试同时发送数据,因此我可能会在后端收到相同的数据两次。