-
使用Guava cache构建本地缓存
什么是本地缓存 在我们的应用中,大部分的计算是昂贵的,而且是可复用的,并且计算结果不会经常发生改变。这时候我们就可以将这些昂贵的计算结果缓存到内存中,下次使用的时候直接取出即可,而不用重新计算。这样可以节省大量的cpu和内存资源,提高系统的吞吐量。 本地缓存作用就是提高系统的运行速度,是一种空间换时间的取舍。它实质上是一个做key-value查询的字典,但是相对于我们常用HashMap它又有以下特…- 9
- 0
-
JVM性能优化系列-(5) 早期编译优化
目前已经更新完《Java并发编程》和《Docker教程》,欢迎关注【后端精进之路】,轻松阅读全部文章。 Java并发编程: Java并发编程系列-(1) 并发编程基础 Java并发编程系列-(2) 线程的并发工具类 Java并发编程系列-(3) 原子操作与CAS Java并发编程系列-(4) 显式锁与AQS Java并发编程系列-(5) Java并发容器 Java并发编程系列-(6) Java线程…- 5
- 0
-
JVM GC 机制与性能优化
1 背景介绍 与C/C++相比,JAVA并不要求我们去人为编写代码进行内存回收和垃圾清理。JAVA提供了垃圾回收器(garbage collector)来自动检测对象的作用域),可自动把不再被使用的存储空间释放掉,也就是说,GC机制可以有效地防止内存泄露以及内存溢出。 JAVA 垃圾回收器的主要任务是: 分配内存 确保被引用对象的内存不被错误地回收 回收不再被引用的对象的内存空间 凡事都有两面性。…- 1
- 0
-
【开发工具】JAVA性能分析:6、超详细的JProfiler内存分析(官方中文版)
Memory Profiling——内存分析 有两种方法可以获取有关堆上对象的信息。一方面,分析代理可以跟踪每个对象的分配和垃圾收集。在JProfiler中,这称为“分配记录”。它告诉您已分配对象的位置,还可用于创建有关临时对象的统计信息。另一方面,JVM的分析界面允许分析代理采用“堆快照”,以便检查所有活动对象及其引用。需要此信息才能理解为什么不能对对象进行垃圾回收。 分配记录和堆快照都是昂贵的…- 430
- 0
-
深入分析 Java I/O 的工作机制(网络 I/O 优化)
深入分析 Java I/O 的工作机制(网络 I/O 优化) 网络 I/O 优化 网络 I/O 优化通常有一些基本处理原则: 一个是减少网络交互的次数:要减少网络交互的次数通常我们在需要网络交互的两端会设置缓存,比如 Oracle 的 JDBC 驱动程序,就提供了对查询的 SQL 结果的缓存,在客户端和数据库端都有,可以有效的减少对数据库的访问。关于 Oracle JDBC 的内存管理可以参考《 …- 0
- 0
-
Java性能调优(一):调优的流程和程序性能分析
https://blog.csdn.net/Oeljeklaus/article/details/80656732 Java性能调优 随着应用的数据量不断的增加,系统的反应一般会越来越慢,这个时候我们就需要性能调优。性能调优的步骤如下: 寻找性能瓶颈 通常性能瓶颈的表象是 资源消耗过多、外部处理系统的不足, 或者资源消耗不多,但是程序的响应速度却达不到要求。 下面的分析针对于Linux。 C…- 1
- 0
-
Java 架构师+高并发+性能优化+Spring boot大型分布式项目实战
视频课程内容包含: 高级 Java 架构师包含:Spring boot、Spring cloud、Dubbo、Redis、ActiveMQ、Nginx、Mycat、Spring、MongoDB、ZeroMQ、Git、Nosql、Jvm、Mecached、Netty、Nio、Mina、性能调优、高并发、tomcat 负载均衡、大型电商项目实战、高可用、高可扩展、数据库架构设计、Solr 集群与应用、…- 12
- 0
-
Java性能优化技巧集锦
=================================== 摘要: =================================== 可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的主要是如何提高代码的效率。 ==================…- 6
- 0
-
Netty游戏服务器实战开发(11):Spring+mybatis 手写分库分表策略(续)
在大型网络游戏中,传统的游戏服务器无法满足性能上的需求。所以有了分布式和微服务新起,在传统web服务器中,我们保存用户等信息基本都是利用一张单表搞定,但是在游戏服务器中,由于要求比较高,我们不能存在大表操作,即分库分表策略。在以前的文章中有关介绍分库分表的,下面我们来实战一下,首先我们做一个这样的计算。 在博主开源的游戏服务器中有这样一个场景:玩家数据保存到player表中,其中将游戏数据库分为1…- 14
- 0
-
Netty In Action中文版 – 第九章:引导Netty应用程序
Netty In Action中文版 - 第九章:引导Netty应用程序 本章介绍 引导客户端和服务器 从Channel引导客户端 添加多个ChannelHandler 使用通道选项和属性 上一章学习了编写自己的ChannelHandler和编解码器并将它们添加到Channel的ChannelPipeline中。本章将讲解如何将它们结合在一起使用。 Netty提供了简单统一的方法来引导服务器和客户…- 3
- 0
-
Mina、Netty、Twisted一起学(八):HTTP服务器
HTTP协议应该是目前使用最多的应用层协议了,用浏览器打开一个网站就是使用HTTP协议进行数据传输。 HTTP协议也是基于TCP协议,所以也有服务器和客户端。HTTP客户端一般是浏览器,当然还有可能是其他东西。HTTP服务器,也就是Web服务器,目前已经有很多成熟的产品,例如Apache HTTP Server、Tomcat、Nginx、IIS等。 本文的内容不是讲解如何使用以上的HTTP服务器,…- 3
- 0
-
Netty In Action中文版 – 第十一章:WebSocket
Netty In Action中文版 - 第十一章:WebSocket 本章介绍 WebSocket ChannelHandler,Decoder and Encoder 引导一个Netty基础程序 测试WebSocket “real-time-web”实时web现在随处可见,很多的用户希望能从web站点实时获取信息。Netty支持WebSocket实现,并包含了不同的版本,我们可以非常容易的实现…- 0
- 0
-
JVM内存管理——GC算法精解(五分钟教你终极算法—分代搜集算法)
引言 何为终极算法? 其实就是现在的JVM采用的算法,并非真正的终极。说不定若干年以后,还会有新的终极算法,而且几乎是一定会有,因为LZ相信高人们的能力。 那么分代搜集算法是怎么处理GC的呢? 对象分类 上一章已经说过,分代搜集算法是针对对象的不同特性,而使用适合的算法,这里面并没有实际上的新算法产生。与其说分代搜…- 4
- 0
-
详解JVM内存管理与垃圾回收机制3 – JVM中对象的内存布局
在Java语言层面,可以通过Class类来描述普通的Java类,当JVM创建对象的同时,会生成对应的Class对象,用来描述此对象的大致模型,这也是反射的基础。那么在JVM的内部是如何描述一个普通的对象?我们先从一个简单的示例着手,这有一个Child类: 1public class Child extends Person implements Action { 2 // 小孩上几年级 3 pub…- 11
- 0
-
java 8 内存分析,工具ps, jstat, jcmd,pmap
查看jvm进程id 1[yeqiang@localhost ~]$ jps 28353 Launcher 313301 Jps 48581 Main 57528 RemoteMavenServer 68363 App 74301 Main 8 9 查看操作系统内存占用 1[yeqiang@localhost ~]$ ps aux | egrep "MEM|8363" 2USER…- 14
- 0
-
Junit使用教程(二)
二、核心——断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过。 断言核心方法 assertArrayEquals(expecteds, actuals)查看两个数组是否相等。assertEquals(expected, actual)查看两个对象是否相等。类似于字符串比较使用的equals()方法assertNotEquals(first, seco…- 1
- 0
-
JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算
JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算 map实在是太难写了,整理得我都晕都转向了,以后看来需要开一个专题来讲这个了,现在我们来时来学习一些新的小东西吧 一.System 翻译过来系统的意思,系统类,里面的方法都是静态的,可以直接调用 我们来演示一下吧,先从获取系统信息开始: 1package com.lgl.hellojava; 2…- 3
- 0
-
JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据类型也是可以引用的 一.基本数据类型的对象包装类 左为基本数据类型,又为引用数据类型 byte Byte int Integer long Long boolean Booleab float Flo…- 5
- 0
-
Java并发编程 | 第七篇:ThreadLocal
ThreadLocal介绍 ThreadLocal为每个使用变量的线程提供独立的变量副本,所以每一个线程可以独立修改自己的副本,从而隔离了多个线程对数据的访问冲突。 ThreadLocal 适用于每个线程需要自己独立的实例且该实例需要在多个方法中被使用,也即变量在线程间隔离而在方法或类间共享的场景。 注意:跟多线程并发问题没关系,跟多线程并发问题没关系,跟多线程并发问题没关系 ThreadLoca…- 4
- 0
-
Core Java (五) Java数组
数组的初始化和拷贝 1package com.xujin; 2 3 4import java.util.Arrays; 5 6public class Test { 7 8 public static void main(String[] args){ 9 int[] a = {2, 3, 5, 7}; 10 int[] b = a;//此时a与b引用同一个数组 11 System.out.pri…- 6
- 0
-
对libevent+多线程服务器模型的C++封装类
1.static 函数使用原因是因为pthread_create中需要使用的是全局函数,声明为静态函数。bufferevent中的回调函数同理。通过传递参数在其中访问非静态成员 2.下列代码中在TcpEventServer::ReadEventCb中为conn中的m_ReadBuf、m_WriteBuf赋值是错误的。若这样操作在新建连接的回调函数也就是ConnectionEvent中调用conn中…- 10
- 0
-
使用Guava cache构建本地缓存
前言 最近在一个项目中需要用到本地缓存,在网上调研后,发现谷歌的Guva提供的cache模块非常的不错。简单易上手的api;灵活强大的功能,再加上谷歌这块金字招牌,让我毫不犹豫的选择了它。仅以此博客记录我在使用过程中的点滴。 什么是本地缓存 在我们的应用中,大部分的计算是昂贵的,而且是可复用的,并且计算结果不会经常发生改变。这时候我们就可以将这些昂贵的计算结果缓存到内存中,下次使用的时候直接取出即…- 98
- 0
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!