开放的IP地址归属地查询API
查询 IP 地址的归属地,核心是依赖 IP库数据。
查询 IP 地址的归属地,核心是依赖 IP库数据。
异步编程是实现程序并发、依赖解耦的一种方式。异步的本质是开启一个新的线程来执行。
异步:即整个业务中的某些逻辑交给不同的线程异步处理,不用等待异步线程的结果就可返回。
同步:即一条线程干到底,在没结束没返回之前不能干其它事情,必须在所有逻辑处理完才能返回。
负载均衡(Load Balance),指将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行。
通过负载均衡,可以将高并发的请求分发到由多台应用服务器组成的一个服务器集群上,从而利用多台服务器资源处理高并发下的计算压力。
负载均衡大的技术方向分硬件负载均衡设计 和 软件负载均衡,硬件设备通常比较贵成本较高,这里主要讲软件实现负载 均衡的实现方案。
在调试Spring MVC 集成 Servlet 3.0的 AsyncContext 做异步处理时,碰到一个平时未注意到和较少会触发的怪异问题,结合调试结果和自己的猜想,对比研究了下源码来解释此问题的根本原因。
Servlet 和基于 Servlet 的容器(例如Tomcat)默认处理请求和处理业务是同一条线程,即有请求进来后,分配一条线程接收并处理请求,并继续执行业务处理,直到所有处理结束才完成响应,线程才会释放。这使得 Servlet 对业务方法的调用变成一种阻塞调用,效率较低。
Servlet3.0 提供了AsyncContex 来异步处理请求,将请求线程与业务处理线程分离。
Spring Framework 5.0 版本增加了响应式 Web 框架 Spring WebFlux 。 它是完全无阻塞的,支持 Reactive Streams 反背压,并且可以在 Netty、Undertow 和 Servlet 3.1+ 容器等服务器上运行。
Spring Boot 通过为 Spring Webflux 提供自动配置来简化响应式 Web 应用程序的开发。
除了使用 java -jar 运行 Spring Boot 应用程序之外,还可以为 Unix 系统制作完全可执行的应用程序。
完全可执行的 jar 可以像任何其他可执行二进制文件一样执行,也可以使用 init.d
或 systemd
注册。
这有助于在常见的生产环境中安装和管理 Spring Boot 应用程序。
现实环境是有些甲方的物理服务器是Widnwos系统,还不能切换Linux,就必须在 Windows 运行 Java 程序,cmd 的控制台窗口很容易被误关闭,需要把 Java 程序注册为 Windows 随机启动。
UTF-8编译的 Java 应用程序,在 Windows 运行,指定了文件编码为 UTF-8 ,控制台显示的中文仍乱码。
右键 cmd 控制台 > 属性,可以看到当前代码页为:936 (简体中文 GBK),该代码只能显示 GBK 编码的中文。
或直接在控制台输入 chcp 命令,会输出当前:【活动的代码页:936】
需要通过 chcp 命令修改代码页,chcp 65001。(65001为UTF-8的代码页)
Windows 中 运行 Java 程序脚本新建一个 startup.bat
文件,内容如下。
1 | title xxx-server |