Linux用户身份和文件权限
Linux是一个多用户、多任务的操作系统,本章详细讲解如果增删改用户账号,以及文件所有者、 所属组以及其他人对文件/目录的读(r)、写(w)、执行(x)的操作权限。另外我们还可以使用SUID、 SGID与SBIT特殊权限更加灵活地设置系统权限功能,来弥补对文件设置一般权限时所带来的不足。 而文件的访问控制表(Access Control List,ACL)则还可以进一步让单一用户、 用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权限。
Linux是一个多用户、多任务的操作系统,本章详细讲解如果增删改用户账号,以及文件所有者、 所属组以及其他人对文件/目录的读(r)、写(w)、执行(x)的操作权限。另外我们还可以使用SUID、 SGID与SBIT特殊权限更加灵活地设置系统权限功能,来弥补对文件设置一般权限时所带来的不足。 而文件的访问控制表(Access Control List,ACL)则还可以进一步让单一用户、 用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权限。
VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发, 由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。
本文演示如何在Win10上面安装VirtualBox 6,并安装CentOS 7操作系统。
之前写过一篇如何使用Nexus私服,发布自己写的maven构件,供大家使用。但是只能在公司内部用, 而你想全世界的人都能用到你写的东西,就需要发布到Maven中央仓库了。
本篇文章详细讲解如何发布Maven构件到中央仓库。
上一篇介绍了Java性能测试框架JMH的使用方法,本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能。 每次都在网上看到别人说什么某某库性能是如何如何的好,碾压其他的库。但是百闻不如一见,只有自己亲手测试过的才是最值得相信的。
JSON不管是在Web开发还是服务器开发中是相当常见的数据传输格式,一般情况我们对于JSON解析构造的性能并不需要过于关心, 除非是在性能要求比较高的系统。
目前对于Java开源的JSON类库有很多种,下面我们取4个常用的JSON库进行性能测试对比, 同时根据测试结果分析如果根据实际应用场景选择最合适的JSON库。
这4个JSON类库分别为:Gson,FastJson,Jackson,Json-lib。
JMH,即Java Microbenchmark Harness,这是专门用于进行代码的微基准测试的一套工具API。
JMH 由 OpenJDK/Oracle 里面那群开发了 Java 编译器的大牛们所开发 。何谓 Micro Benchmark 呢? 简单地说就是在 method 层面上的 benchmark,精度可以精确到微秒级。
Java的基准测试需要注意的几个点:
比较典型的使用场景:
尽管 JMH 是一个相当不错的 Micro Benchmark Framework,但很无奈的是网上能够找到的文档比较少,而官方也没有提供比较详细的文档,对使用造成了一定的障碍。 但是有个好消息是官方的 Code Sample 写得非常浅显易懂, 推荐在需要详细了解 JMH 的用法时可以通读一遍——本文则会介绍 JMH 最典型的用法和部分常用选项。
Echarts是百度一款开源可视化图表库,基于html5 Canvas的。能够快速让你看到漂亮的效果。也是百度开源产品中的良心之作。
有时候在Java程序中也需要导出好看的图表,比如我经常会基于JMH做各种微基准测试,想将测试结果可视化导出为图表形式。 试用了一下JFreeChart,跟Echarts导出的图比起来还是弱了不少。但是Echarts是基于js的,只能在浏览器中解析和导出图片,怎么办呢?
后来我想到一个方法,就是基于WebSocket技术,服务器将图表数据推送到页面,然后页面再触发导出动作。 本篇将介绍如何通过SpringBoot、SocketIO、Echarts技术来实现这个图表导出功能。
RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。
RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,AMQP,即Advanced Message Queuing Protocol, 高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间, 提高了系统的吞吐量。
本篇将详细介绍RabbitMQ以及如何在SpringBoot中使用。
Spring Batch是一个轻量级的框架,完全面向Spring的批处理框架,用于企业级大量的数据读写处理系统。以POJO和Spring 框架为基础, 包括日志记录/跟踪,事务管理、 作业处理统计工作重新启动、跳过、资源管理等功能。
Spring Batch官网是这样介绍的自己:一款轻量的、全面的批处理框架,用于开发强大的日常运营的企业级批处理应用程序。
框架主要有以下功能:
如果你的批处理程序需要使用上面的功能,那就大胆地使用它吧。
在互联网场景下,尤其 2C 端大流量场景下,需要将一些经常展现和不会频繁变更的数据,存放在存取速率更快的地方。 缓存就是一个存储器,在技术选型中,常用 Redis 作为缓存数据库。缓存主要是在获取资源方便性能优化的关键方面。
如果使用Redis缓存技术,SpringBoot中有两种方式实现缓存,一个是上一篇中通过CacheManager实现,
不过这个是对于简单的缓存场景,而更为强大的是通过RedisTemplate来直接操作Redis数据库实现缓存。
Redis 是一个高性能的 key-value 数据库。GitHub 地址:https://github.com/antirez/redis 。
内存的速度远远大于硬盘的速度,当我们需要重复获取相同的数据的时候,一次又一次的请求数据库或远程服务, 导致大量时间都消耗在数据库查询或远程方法调用上面,性能下降,这时候就需要使用到缓存技术了。
本文介绍SpringBoot 如何使用redis做缓存,如何对redis缓存进行定制化配置(如key的有效期)以及初始化redis做缓存。
使用具体的代码介绍了@Cacheable,@CacheEvict,@CachePut,@CacheConfig等注解及其属性的用法。