Java中加载文件的几种方式

在Java程序中加载外部文件有多中方式,每种方式也存在区别,本文将理清这些加载方式之间的区别。

文件IO方式

1
2
3
4
5
6
7
8
9
10
11
package org.xialei.example.resource;

import java.io.File;
import java.io.IOException;

public class Main {
public static void main(String[] args) throws IOException {
File file = new File("app.properties");
System.out.println(file.getAbsolutePath());
}
}

常见的读取方式,使用该方式读取文件时规则如下:

kafka二进制协议简要分析

最近分享了《应用层私有协议的设计和实战》,对应用层私有协议设计做了一些介绍,同时也对协议设计中常用的数据类型做了比较形象的讲解,今天我们来研究一下kafka的二进制协议。

数据类型

kafka二进制协议定义了许多的数据类型,包含常用的数字、字符串,也包含了数组等类型。

本文主要讨论不可变长数据类型,可变长度(如Google Protocol Buffers)不在讨论范围内。

MySQL中的CHAR和VARCHAR到底支持多长?

最近在研究MySQL的数据类型,我们知道,选择合适的数据类型和数据长度对MySQL的性能影响是不可忽视的,小字段意味着可以MySQL可以读取更多的记录,从而加快查询速度。

网上该问题的答案有很多版本,还是通过实践得出的结论比较靠谱。

先说结论(MySQL版本5.7.27)

Redis优化高并发下的秒杀性能

本文内容

  • 使用Redis优化高并发场景下的接口性能

NestJs学习之旅(9)——拦截器

本文是NestJs的第九篇,讲解拦截器。

拦截器是一个实现了NestInterceptor接口且被@Injectable装饰器修饰的类。

img

NestJs学习之旅(8)——管道

本文是NestJs学习之旅的第八篇,讲解管道。

管道

熟悉Linux命令的伙伴应该对“管道运算符”不陌生。

1
ls -la | grep demo

NestJs学习之旅(7)——路由守卫

本文是NestJs的第七篇,讲解路由守卫。

传统的Web应用中去检测用户登录、权限判断等等都是在控制器层或者中间件层做的,而在目前比较推荐的模块化与组件化架构中,不同职责的功能建议拆分到不同的类文件中去。

通过前几篇的学习可以发现NestJs在这方面做的很好,传统的express/koa应用中,需要开发者去思考项目结构以及代码组织,而NestJs不需要你这样做,降低了开发成本,另外也统一了开发风格。

NestJs学习之旅(6)——异常处理

本文是NestJs的第六篇,讲解异常处理。

传统的异常处理

在前面的内容中我们介绍了NestJs的几大常用组件,但是有一点没有做出说明,当我们的应用需要中断此次请求且输出错误信息时,我们需要怎么做?

这个问题有两种解决办法:

socks5协议详解

Socks5代理协议

或许你没听说过socks5,但你一定听说过SS,SS内部使用的正是socks5协议。

socks5是一种网络传输协议,主要用于客户端与目标服务器之间通讯的透明传递。

该协议设计之初是为了让有权限的用户可以穿过防火墙的限制,访问外部资源。

NestJs学习之旅(5)——中间件

本文是NestJs学习之旅的第五篇,讲解中间件。

中间件

中间件是在路由处理程序之前调用的函数。中间件函数可以访问请求响应对象。

使用过koa和express的朋友应该知道,中间件是一个很核心的功能,尤其是koa,核心就是中间件,连路由功能都是由中间件提供的。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×