-
使用Guava cache构建本地缓存
前言 最近在一个项目中需要用到本地缓存,在网上调研后,发现谷歌的Guva提供的cache模块非常的不错。简单易上手的api;灵活强大的功能,再加上谷歌这块金字招牌,让我毫不犹豫的选择了它。仅以此博客记录我在使用过程中的点滴。 什么是本地缓存 在我们的应用中,大部分的计算是昂贵的,而且是可复用的,并且计算结果不会经常发生改变。这时候我们就可以将这些昂贵的计算结果缓存到内存中,下次使用的时候直接取出即…- 98
- 0
-
spring boot + spring cache 实现两级缓存(redis + caffeine)
spring boot中集成了spring cache,并有多种缓存方式的实现,如:Redis、Caffeine、JCache、EhCache等等。但如果只用一种缓存,要么会有较大的网络消耗(如Redis),要么就是内存占用太大(如Caffeine这种应用内存缓存)。在很多场景下,可以结合起来实现一、二级缓存的方式,能够很大程度提高应用的处理效率。 内容说明: 缓存、两级缓存 spring cac…- 288
- 0
-
JVM内存模型及性能调优
参考:https://www.bilibili.com/video/av71330748/?p=7 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具…- 17
- 0
-
Java性能优化(12):最小化类和成员可访问能力
类和接口是Java程序设计语言的核心,它们也是Java语言的基本抽象单元。Java语言提供了许多强大的基本元素,供程序猿来设计类和接口。 要想区别一个设计良好的模块与一个设计不好的模块,最重要的因素是,这个模块对于外部其他模块而言,是否隐藏了内部的数据和其他的实现细节。一个设计良好的模块会隐藏所有的实现细节,把它的API与实现清晰的隔离开来。然后,模块之间只通过它们的API进行通信,一个模块不需要…- 5
- 0
-
Java电商秒杀系统性能优化(三)——分布式扩展
分布式扩展 一、 单机容量问题 1.1 单机容量问题表象,水平扩展方案 1.2 Nginx反向代理 1.3 负载均衡 二、部署Nginx 2.1 数据库远程开放端口连接 2.2 部署Nginx OpenResty 2.3 前端资源部署 2.4 配置nginx反向代理 2.5 分布扩展后的性能压测 三、Nginx高性能原因 3.1 epoll多路复用(解决IO阻塞回调通知问题) 3.2 master…- 49
- 0
-
java千万级别数据生成文件思路和优化
java千万级别数据生成文件思路和优化 一年前写过一个百万级别数据库数据生成配置 xml 文件的程序 , 程序目的是用来把数据库里面的数据生成 xml 文件 . 程序可以配置多少文件生成到一个文件中去 . 程序刚开始设计的时候说的是最多百万级别数据,最多 50W 数据生成到一个 xml 文件里面去 , 所以在做测试的时候自己也只是造了 100W 的数据并没有做过多数据量的测试 , 然后…- 113
- 0
-
9 个可以快速掌握的 Java 性能调优技巧
点击上方“ 朱小厮的博客 ”,选择“ 设为星标 ” 来源: http://sina.lt/gnWz 大多数开发者认为性能优化是一个复杂的话题,它需要大量的工作经验和相关知识理论。 好吧,这也不完全错。 优化一个应用做到性能最优化可能不是件容易的任务,但是这并不意味着你没有相关的知识就什么也做不了。这里有一些易于遵循的建议和最佳实践可以帮助你创建一个性能良好的应用程序。 这些建议的大部分都是针对 J…- 1
- 0
-
Netty游戏服务器实战开发(10):Netty结合kafka实现分布式消息队列
在分布式游戏服务器系统中,消息处理队列主要解决问题就是解耦系统中的业务,使得每个系统看起来功能比较单一,而且解决一些全服数据共享等问题。 通常我们知道kafka是作为消息队列比较火的一种方式,其实还有(Active MQ,Rabbit MQ,Zero MQ)个人觉得kafka比较好用点,哈哈,习惯吧。 同样我们来复习kafka基础。 kafka基础。 的内容来介绍kafka的基本安装。 首先我们要…- 269
- 0
-
Netty In Action中文版 – 第八章:附带的ChannelHandler和Codec
Netty In Action中文版 - 第八章:附带的ChannelHandler和Codec 本章介绍 使用SSL/TLS创建安全的Netty程序 使用Netty创建HTTP/HTTPS程序 处理空闲连接和超时 解码分隔符和基于长度的协议 写大数据 序列化数据 上一章讲解了如何创建自己的编解码器,我们现在可以用上一章的知识来编写自己的编解码器。不过Netty提供了一些标准的ChannelHan…- 5
- 0
-
Mina、Netty、Twisted一起学(六):session
开发过Web应用的同学应该都会使用session。由于HTTP协议本身是无状态的,所以一个客户端多次访问这个web应用的多个页面,服务器无法判断多次访问的客户端是否是同一个客户端。有了session就可以设置一些和客户端相关的属性,用于保持这种连接状态。例如用户登录系统后,设置session标记这个客户端已登录,那么访问别的页面时就不用再次登录了。 不过本文的内容不是Web应用的session,而…- 10
- 0
-
Netty In Action中文版 – 第十章:单元测试代码
Netty In Action中文版 - 第十章:单元测试代码 本章介绍 单元测试 EmbeddedChannel 学会了使用一个或多个ChannelHandler处理接收/发送数据消息,但是如何测试它们呢?Netty提供了2个额外的类使得测试ChannelHandler变得很容易,本章讲解如何测试Netty程序。测试使用JUnit4,如果不会用可以慢慢了解。JUnit4很简单,但是功能很强大。本…- 1
- 0
-
SpringBoot整合Netty
文章目录 1.依赖 2.配置文件 3.项目结构 4.启动类 5.netty启动类 6.netty配置类 1.依赖 1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q…- 4
- 0
-
详解JVM内存管理与垃圾回收机制1 – 内存管理
Java应用程序是运行在JVM上的,得益于JVM的内存管理和垃圾收集机制,开发人员的效率得到了显著提升,也不容易出现内存溢出和泄漏问题。但正是因为开发人员把内存的控制权交给了JVM,一旦出现内存方面的问题,如果不了解JVM的工作原理,将很难排查错误。本文将从理论角度介绍虚拟机的内存管理和垃圾回收机制,算是入门级的文章,希望对大家的日常开发有所助益。 一、内存管理 也许大家都有过这样的经历,在启动时…- 4
- 0
-
Java内存泄露监控检测工具– JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat
**jstack **-- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中,看到 当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程…- 250
- 0
-
JUnit + Mockito 单元测试(二)
JUnit 是单元测试框架。Mockito 与 JUnit 不同,并不是单元测试框架(这方面 JUnit 已经足够好了),它是用于生成模拟对象或者直接点说,就是”假对象“的工具。两者定位不同,所以一般通常的做法就是联合 JUnit + Mockito 来进行测试。 入门 首先是配置 Mock 对象,看看例子怎么写的。 1List mock = mock( List.class ); 2when( …- 74
- 0
-
maven+springMVC+mybatis+junit详细搭建过程
springMVC+mybatis框架搭建 首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些? (假设效果:项目目录结构清晰,能够查询到本地数据库中的内容。。) 1. 工程目录结构整理清楚 在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean), …- 0
- 0
-
JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展…
JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final…- 1
- 0
-
Java并发编程 | 第六篇:Fork/Join框架
Fork/Join框架的介绍 Fork/Join框架是Java7提供了的一个用于并发执行任务的框架,是一个实现了ExecutorService接口的多线程处理器。它可以把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架,充分利用可用的资源,进而提高应用的执行效率 Fork/Join执行逻辑 使用Fork/Join框架 第一步首先分割任务,需要一个fork类来把大任务分割成小任…- 9
- 0
-
JAVA并发编程(二)线程安全性
文章目录 线程安全性 基本概念 三个基本原则 原子性 Atomic * 锁 Lock (依赖特殊的cpu指令) * AQS 简介 * Synchronized (依赖于JVM实现) 1 * 原子性对比 2 3 * 可见性 4 synchronized * volatile 1 * 有序性 2 happens-before原则 线程安全性 基本概念 当多个线程访问某个类时,不管运行时环境采用何种调度…- 1
- 0
-
C#实现万年历(农历、节气、节日、星座、星宿、属相、生肖、闰年月、时辰)
using System.Collections.Generic; using System.Text; using System; namespace yangliToyinli { #region ChineseCalendarException /// <summary> /// 中国日历异常处理 /// </summary> public class Chinese…- 19
- 0
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!