什么是JSON?
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
json前两个字就是js,说明其与js必然存在一些联系,其实json可以理解...
阅读全文
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。
Nginx 的整体架构
Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处理网络请求与响应。
master进程主要用来管理worker进程,具体...
阅读全文
我们将讨论几个有助于提升Java应用程序性能的方法。我们首先将介绍如何定义可度量的性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定性能瓶颈。
我们还将看到一些常见的Java代码优化方法以及最佳编码实践。最后,我们将看看用于提升Java应用程序性能的JVM调优技巧和架构调整。
请注意,性能优化是一个很宽泛的话题,而本文只是对JVM探索的一个起点。
性能指标
在开始优化应用程序的...
阅读全文
关于Java性能优化,你有什么技巧?通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。
一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。
下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。
...
阅读全文
一、QPS,每秒查询
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。
二、TPS,每秒事务
TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的...
阅读全文
1.线程和进程简介:
进程
一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。
线程
又称其为轻量级进程(Light Weight Process)。是操作系统能够进行运算调度的最小单位。大部分情况下,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一...
阅读全文
首先,我们需要弄清楚几个概念:同步和异步,阻塞和非阻塞。
一、同步和异步
1. 同步
进程触发 IO 操作的时候,必须亲自处理;
比如你必须亲自去银行取钱。
2. 异步
进程触发 IO 操作的时候,可以不亲自处理,它把操作委托给 OS 处理,委托的时候需要告知数据的地址和大小,然后自己去做别的事情,当 IO 操作结束后会得到通知;
比如你把银行卡给我,让我帮你去银行取钱,你需要告诉我银行卡密码...
阅读全文
Web容器对异步的支持
SpringMvc的实质就是对Java Web的封装,因此为了更容易的理解SpringMvc的异步,必须先了解Java Web的异步。
Java Web的实质就是一套标准(接口),Web容器实现了这套标准,所以我们站在Web容器的立场来说Java Web的异步,非常好理解。
无论采用什么框架开发的Java Web应用,最终都是在Web容器中运行的,如tomcat就是最常用的Web容器。
启动SpringBoot时,可以看看日志中打印出的线程名称...
阅读全文
在开始本篇文章的内容讲述前,先来回答我一个问题,为什么 JDK 提供一个 synchronized 关键字之后还要提供一个 Lock 锁,这不是多此一举吗?难道 JDK 设计人员都是沙雕吗?
初识 ReentrantLockReentrantLock 位于 java.util.concurrent.locks 包下,它实现了 Lock 接口和 Serializable 接口。
ReentrantLock 是一把可重入锁和互斥锁,它具有与 synchronized 关键字相同的含有隐式监视器锁(monitor)的基本行为和语义,...
阅读全文
现在的Spring相关开发都是基于SpringBoot的。
最后在打包时可以把所有依赖的jar包都打进去,构成一个独立的可执行的jar包。
使用java -jar命令就可以运行这个独立的jar包。
这个jar包的执行入口就是一个main函数,典型的格式如下:
@SpringBootApplicationpublic class TasteSpringApplication { public static void main(String[] args) { SpringApplication.run(TasteSpringApplication.class, args); }}...
阅读全文