解决Windows运行java -Dfile.encoding=utf-8 -jar乱码

UTF-8编译的 Java 应用程序,在 Windows 运行,指定了文件编码为 UTF-8 ,控制台显示的中文仍乱码。

右键 cmd 控制台 > 属性,可以看到当前代码页为:936 (简体中文 GBK),该代码只能显示 GBK 编码的中文。

或直接在控制台输入 chcp 命令,会输出当前:【活动的代码页:936】

需要通过 chcp 命令修改代码页,chcp 65001。(65001为UTF-8的代码页)

Windows 中 运行 Java 程序脚本新建一个 startup.bat 文件,内容如下。

1
2
3
title xxx-server
chcp 65001
java -Dfile.encoding=utf-8 -jar xxx.jar
阅读更多

一台服务器可创建多少个TCP连接

这是一个在面试时经常被问题的问题,实际隐含的是对服务器的优化和创建过多连接时的问题诊断。

生产环境部署应用服务的服务器操作系统基本上是 Linux 服务器,此问题所涉及到更深层的是 Linux 内核 TCP/IP 和 Socket 参数优化。

阅读更多

网络I/O模型详解

重要参考资料:W.Richard Stevens 的 UNIX Network Programming Volume 1:The Sockets Networking API,Third Edition(UNIX网络编程-卷1:套接字联网API 第3版),6.2 Chapter:I/O Models。

基于 Unix / Linux 的网络编程的 5 种 I/O 模型。

阅读更多

设计模式:代理模式(Proxy)

代理模式 给某一对象提供一个代理对象,并由代理对象控制对原对象的引用。属于结构型模式。

代理模式在生活中有具体的表现,例如找代理售票点(或黄牛)买票,网络代理。

阅读更多

设计模式:享元模式(Flyweight)

享元模式 尝试复用同类或相似的对象,以共享方式高效地支持大量的细粒度对象,减少面向对象的系统设计中可能创建大量类或对象,以减少内存占用和提高性能。

享元模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。

面向对象设计可以很好地解决一些灵活性或可扩展性问题,但在大多数情况下需要在系统中增加类和对象的个数。当对象数量过多时,会占用较大内存,甚至导致内存溢出,运行代价过高,带来性能下降等问题。

阅读更多