
Java服务器开发
与使用 Java 开发服务器有关的一些示例代码和工具 Demo
嘿哈哈哈
人生就像一场演出,不到谢幕永远不知道自己有多精彩。
展开
-
解决:Maven 打包的 jar 没有主清单属性
需要在 pom.xml 中增加对 mainClass 的配置Spring Boot 项目<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId原创 2020-12-07 18:35:36 · 787 阅读 · 0 评论 -
Java RPC 编程:Motan 实现示例,集群配置
在多个服务器进程之间的通信,目前使用的技术一般是 RPC(Remote Procedure Call Protocol,远程过程调用协议)。使用 RPC 可以访问远程主机的进程服务,不需要清楚底层网络通信机制,只需要关注服务本身即可。RPC 是目前分布式开发技术中一种常用的技术,其在分布式开发中能更简单地调用远程服务,就像本地开发一样。Motan 是新浪微博开源的 RPC 轻量级框架,其底层网...原创 2018-12-30 21:21:00 · 696 阅读 · 0 评论 -
Java RPC 编程:Json-RPC 实现示例,Maven Webapp 框架
在多个服务器进程之间的通信,目前使用的技术一般是 RPC(Remote Procedure Call Protocol,远程过程调用协议)。使用 RPC 可以访问远程主机的进程服务,不需要清楚底层网络通信机制,只需要关注服务本身即可。RPC 是目前分布式开发技术中一种常用的技术,其在分布式开发中能更简单地调用远程服务,就像本地开发一样。Json-rpc:jsonrpc4j 的 jar 包及其依...原创 2018-12-30 19:54:17 · 1362 阅读 · 0 评论 -
Java 并行数组的使用
Java 8 中新增了数组的并行操作,可以使用 Lambda 表达式对数组进行排序、过滤和分组等操作,充分发挥了目前操作系统多核架构的优势,在速度、性能上能够提高数倍。import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.concurrent.ThreadLocalRandom...原创 2018-12-25 11:28:52 · 1434 阅读 · 0 评论 -
Java Base64的使用
java.util.Base64 工具类有 Basic、URL和 MIME 三种编码器和解码器。import java.nio.charset.StandardCharsets;import java.util.Base64;public class Base64Demo { public static void main(String[] args) { String text ...原创 2018-12-25 11:28:20 · 686 阅读 · 0 评论 -
Java StreamAPI 的使用
StreamAPI 能让代码更加简洁,极大地简化了集合框架的处理。import java.util.Arrays;import java.util.Collection;import java.util.List;import java.util.Map;import java.util.stream.Collectors;enum Status { OPEN, CLOSED...原创 2018-12-25 11:27:41 · 189 阅读 · 0 评论 -
Java Optional 类的使用
使用 Optional 类可以通过检查空值来防止代码污染,也可以根据条件过滤非空值。import java.util.NoSuchElementException;import java.util.Optional;public class OptionalDemo { public static void main(String[] args) { Option...原创 2018-12-25 11:00:55 · 158 阅读 · 0 评论 -
Java 格式化:数字,货币,日期,消息
数字格式化import java.text.NumberFormat;import java.util.Locale;public class NumberFormatDemo { public static void main(String[] args) { double value = 987654.321; Locale cnLocale ...原创 2018-12-25 10:46:18 · 259 阅读 · 1 评论 -
Java 国际化编程,Locale 和 ResourceBundle 的使用
国际化(internationalization,I18N),本地化(localization,L10N)国际化意味着一个软件可同时支持多种语言,而本地化需要为特定区域或国家的用户提供不同的软件。Locale 类Locale 类是用来标识本地化消息的重要工具类,其特定对象表示某一特定的地理、政治或文化区域。import java.util.Locale;public class Loc...原创 2018-12-25 10:05:00 · 391 阅读 · 0 评论 -
Java 枚举类使用
枚举类的创建public enum Season { SPRING("春"), SUMMER("夏"), FALL("秋"), WINTER("冬"); private String name; Season(String name) { this.name = name; } public String toString() { ...原创 2018-12-25 09:37:10 · 189 阅读 · 0 评论 -
Quartz 实现定时任务
Quartz 是一个功能强大的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把流程控制的更精细。而且 Quartz1.✘ 版本可以和 Spring 进行结合。本文使用的 Quartz: &lt;groupId&gt;org.quartz-scheduler&lt;/groupId&gt; &lt;artifac...原创 2018-12-19 23:37:07 · 631 阅读 · 0 评论 -
Redis 编程(Idea 安装加配置)
Redis 的特点速度快,运行在内存中,执行速度非常快。数据类型丰富:String,上限512MBListsetsorted set,每个元素关联一个 score,以提供排序依据hash,字符串与字符串之间的映射操作原子性,所有的 Redis 操作都是原子的,保证多个客户端并发访问时获取到 Redis 服务器的值为最新值。持久化,与 Memcache 不同的是,Redis...原创 2018-12-15 00:18:07 · 2296 阅读 · 0 评论 -
Memcache 编程(安装及配置)
安装及配置安装 Homebrew:https://brew.sh/index_zh-cn.html安装 Memcachebrew search memcache安装服务器:brew install memcached启动 :/usr/local/Cellar/memcached/1.5.12/bin/memcached -d -m 1024 -l 127.0.0.1 -p 11211...原创 2018-12-13 23:34:04 · 377 阅读 · 0 评论 -
MongoDB 编程(Idea 安装加配置)
MongoDB 安装进入 /usr/localcd /usr/local下载sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-3.4.2.tgz解压sudo tar -zxvf mongodb-osx-x86_64-3.4.2.tgz重命名为 mongodb 目录sudo mv mongodb-osx-x8...原创 2018-12-13 23:14:33 · 1766 阅读 · 0 评论 -
Hibernate 编程(Idea 安装加配置)
Maven 依赖 &lt;!--Hibernate--&gt; &lt;!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --&gt; &lt;dependency&gt; &lt;groupId&gt;org.hibernate原创 2018-12-13 22:59:31 · 475 阅读 · 0 评论 -
JDBC 编程
Mac 中解决中文乱码问题在 /etc 新建 my.cnf 文件:sudo vim my.cnf添加:[client]default-character-set=utf8[mysqld]character-set-server=utf8退出:Esc+qw+ZZ重启 MySQLimport java.sql.Connection;import java.sql.DriverMa...原创 2018-12-13 22:52:25 · 580 阅读 · 0 评论 -
使用 Protobuffer+Idea+Maven 序列化对象
Protocol Buffer 是使用 Google 开发的一种开源数据交换格式,独立于语言,独立于平台,采用二进制传输。Protobuffer 语法标识符Protobuffer 协议的标识符为 message 或 enum,message 代表消息类型,enum 代表枚举类型,在通过Protobuffer 编译器编译之后,都生成 Java 的一个类。修饰符协议字段格式:role typ...原创 2018-12-12 23:48:33 · 592 阅读 · 0 评论 -
写入和解析 XML 文档
待测试的 Java 对象RootElement:import javax.xml.bind.annotation.XmlRootElement;/** * Unmarshaller的文档根元素 */@XmlRootElementpublic class RootElement { private long val1; private double val2; ...原创 2018-12-10 14:55:58 · 314 阅读 · 0 评论 -
Maven项目如何处理依赖冲突
使用 Idea 的扩展插件:Maven Helper原创 2018-12-09 10:29:57 · 312 阅读 · 0 评论 -
JSON 与JavaBean转换
待测试的 Java 对象JsonObject:JsonSubObject:Json-lib使用 JSONObject 的 toString 和 toBean 方法完成 Json 和 JavaBean 之间的转换,如果对象中含有复杂对象,在 Json 反序列化为 JavaBean 时需要传入ClassMap&lt;String, Class&gt;Json-lib:i...原创 2018-12-06 23:27:14 · 468 阅读 · 0 评论 -
Netty 编程
NettyServer:import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelOption;import io.netty.chan...原创 2018-12-06 17:35:49 · 525 阅读 · 1 评论 -
Mina 编程
IoFilterChain:是 Mina 处理流程的扩展点,如果想要增加流程而不影响后续的业务逻辑代码,只需要向 Chain 中添加 IoFilter 即可。IoHandler:Mina 中要实现的业务逻辑都是在 IoHandler 中完成的。IoHandler 是 Mina 处理流程的终点,在最后一个 IoFilter 中调用,所以只要要有一个 IoFilter。并且每个 IoService ...原创 2018-12-06 17:34:42 · 334 阅读 · 0 评论 -
Maven pom.xml 框架
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://m原创 2018-12-06 17:33:14 · 235 阅读 · 0 评论 -
AIO 编程
AIO 编程为每个请求新建一个线程。AioServer:import java.io.IOException;import java.net.InetSocketAddress;import java.net.StandardSocketOptions;import java.nio.ByteBuffer;import java.nio.CharBuffer;import jav...原创 2018-12-04 17:38:32 · 590 阅读 · 0 评论 -
NIO 编程
NIO 编程采用双向通道(channel)进行数据传输,且客户端和服务端都需要维护一个 selector 对象来进行对通道的管理,在通道上注册事件和轮询事件。NioServer:import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio....原创 2018-12-04 17:32:15 · 177 阅读 · 0 评论 -
WebSocket 编程
WebSocket 是随 HTML5 新兴的协议,可以实现浏览器与服务器之间的全双工通信,且需要在 Tomcat7 以上运行。websocketclient.html:<html lang="en"><head> <meta charset="UTF-8"> <title>WebSocket客户端</title&原创 2018-12-04 17:23:46 · 678 阅读 · 0 评论 -
Socket 编程
TCP 编程传输单位为字节客户端:socket = new Socket(server, servPort);服务器:serverSocket = new ServerSocket(serverPort);Socket clientSocket = serverSocket.accept();TCPSocketServer:import java.io.IOExceptio...原创 2018-12-04 17:14:02 · 213 阅读 · 0 评论 -
HTTP 编程
使用 HttpURLConnection 获取应用层数据的状态码和内容:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLExcepti...原创 2018-12-04 17:02:28 · 253 阅读 · 0 评论 -
JavaTCP通信
Server为服务器,Receive为客户端,先运行服务器,再运行客户端Receivepackage Java.TCP;import java.io.IOException;import java.io.OutputStream;import java.io.PrintWriter;import java.net.InetAddress;import java.net...原创 2018-08-07 10:12:13 · 968 阅读 · 0 评论