-
Java性能优化(9):改写toString
虽然java.lang.Object提供了toString方法的一个实现,但是,它返回的字符串通常并不是类的用户所期望看到的,它包含类的名字,以及一个“@”符号,接着是散列码的无符号十六进制表示,例如“phoneNumber@163b91”。toString的通用约定指出,被返回的字符串应该是一个”简洁的,且信息丰富,并且易于阅读的表达形式”。尽管“phoneNumber@163b91”算得上是简…- 13
- 0
-
Java电商秒杀系统性能优化(一)——电商秒杀系统框架回顾
电商秒杀系统框架回顾 项目简介 外部依赖 框架回顾 项目要点 项目中存在的问题 小结 课程是免费的,课程地址如下:SpringBoot搭建电商秒杀项目,课程真的很棒,作者的思路很清晰,建议各位读者可以跟着视频练习一下这个项目; 项目简介 通过SpringBoot快速搭建的前后端分离的电商基础秒杀项目。项目通过应用领域驱动型的分层模型设计方式去完成:用户otp注册、登陆、查看、商品列表、进入商品详情…- 5
- 0
-
Java虚拟机性能管理神器 – VisualVM(7) 排查JAVA应用程序线程泄漏
Java虚拟机性能管理神器 - VisualVM(7) 排查JAVA应用程序线程泄漏 1. 线程泄漏原因 搞清楚线程泄漏原因之前,我们先了解一下什么是线程泄漏和线程溢出。(已经了解这两个概念的同学,请直接看下一节)。 泄漏: 一般指工业中不应该流出或漏出的物质或流体,流出或漏出机械设备以外,造成损失 ,称之为泄漏(百度百科)。 线程泄漏:指系统中动…- 26
- 0
-
35个Java 代码性能优化总结
代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的…- 0
- 0
-
Java虚拟机性能监控与故障处理工具
上图是jdk/bin目录下面的exe可执行文件,我们都知道有一个叫做java.exe和javac.exe,但是伟大的jdk默默的为我们加入了这么多工具,我们先介绍其中几个重要工具。 JDK命令行工具 jps:虚拟机进程状态工具 jps的全称,JDK Process Status,熟悉linux的同学都知道ps命令,所以jps也就类似于ps命令,用来查看系统中所有的HotSpot虚拟机进程。 q 省…- 1
- 0
-
Netty源码分析第4章(pipeline)—->第5节: 传播outbound事件
Netty源码分析第五章: pipeline 第五节: 传播outBound事件 了解了inbound事件的传播过程, 对于学习outbound事件传输的流程, 也不会太困难 在我们业务代码中, 有可能使用wirte方法往写数据: 1public void channelActive(ChannelHandlerContext ctx) throws Exception { 2 ctx.c…- 3
- 0
-
《Netty in Action》中文版—第五章 ByteBuf
http://ifeve.com/netty-in-action-5/ 《Netty in Action》中文版—第五章 ByteBuf **本文翻译自《Netty in Action》第五章 ** 作者:Norman Maurer, Marvin Allen Wolfthal 译者:桃小胖 本章包含 ByteBuf—Netty的数据容器 API详情 用例 内存分配 正如我们前面提到的,网…- 9
- 0
-
Mina、Netty、Twisted一起学(三):TCP消息固定大小的前缀(Header)
在上一篇博文中,有介绍到用换行符分割消息的方法。但是这种方法有个小问题,如果消息中本身就包含换行符,那将会将这条消息分割成两条,结果就不对了。 本文介绍另外一种消息分割方式,即上一篇博文中讲的第2条:use a fixed length header that indicates the length of the body,用一个固定字节数的Header前缀来指定Body的字节数,以此来分割消息…- 12
- 0
-
基于netty-socketio的web推送服务
在WEB项目中,服务器向WEB页面推送消息是一种常见的业务需求。PC端的推送技术可以使用socket建立一个长连接来实现。传统的web服务都是客户端发出请求,服务端给出响应。但是现在直观的要求是允许特定时间内在没有客户端发起请求的情况下服务端主动推送消息到客户端。最近的预警系统中,需要服务端向预警系统推送商品行情和K线相关的数据,所以对常用的WEB端推送方式进行调研。常见的手段主要包括以下几种: …- 4
- 0
-
重走Java基础——(3)JVM内存分析之基本数据类型的值传递及引用类型的地址传递
重走Java基础——(3)JVM内存分析之基本数据类型的值传递及引用类型的地址传递 基本数据类型的值传递 1package lee; 2public class Method { 3 static void change(int x){ 4 System.out.println("第一次x的值:"+x); 5 x = 100; 6 System.out.println(&quo…- 0
- 0
-
Java虚拟机内存模型
内存模型图 程序计数器:记录正在执行的虚拟机字节码地址,字节码解释器通过改变计数器的值来指定下一条需要执行的指令。 虚拟机栈:主要描述Java方法的内存模型,方法执行时会创建栈帧,存放局部变量表(基本数据类型和引用)、操作数栈、方法出口等信息。 本地方法栈:同虚拟机栈,只不过服务于Native方法;HotSpot虚拟机将虚拟机栈和本地方法栈合二为一。 堆:存储实例对象和数组。堆又分新生代和老年代,…- 4
- 0
-
Junit框架使用(3)–按照顺序执行测试用例
有时候我们需要按照顺序执行我们的单元测试方法,如在测试Dao层的时候要按照测试插入方法、查询方法、更新方法、删除方法的顺序测试。如果不按照这个顺序测试可能会出现问题,而Junit测试时默认的顺序是随机的。如果插入方法在后面执行可能前面的方法都不能通过测试,因为数据还没有插入。 下面是Dao层的方法 1package com.tiamaes.bean.dao; 2 3import org.sprin…- 4
- 0
-
JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习…
JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习 我们继续说一下集合框架 Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复 Set集合的功能和Collection是一致的 我们重点关注的是子类对象 我们来聊聊 一.HashSet HashSet底层结构是哈希表 什么是HashSet? 1packag…- 10
- 0
-
JAVA之旅(十三)——线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this
JAVA之旅(十三)——线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this 一.线程的安全性 当我们开启四个窗口(线程)把票陆陆续续的卖完了之后,我们要反思一下,这里面有没有安全隐患呢?在实际情况中,这种事情我们是必须要去考虑安全问题的,那我们模拟一下错误 1package com.lgl.hellojava; 2 3import javax.secu…- 5
- 0
-
JAVA并发编程(七):并发容器(ConcurrentHashMap)
我们上节讲了HashMap,实际上HashMap并不是线程安全的,在并发插入元素的时候有可能出现环形链表,让下一次读操作出现死循环。解决的办法就是使用线程安全的容器,除了Collections提供的synchronizedMap同步容器外,实际上我们还可以选择性能更好的juc提供的同步容器。 一、分段锁Segment概述 分段锁Segment是ConcurrentHashMap很重要的一个概念。 …- 1
- 0
-
Core Java (九) Java的方法参数
在各种程序设计语言中方法的参数有两种,分别是:值调用,引用调用。 Java程序设计语言总是采用 值调用,即方法得到了所有参数值的一个拷贝。 细分的话,方法参数一共两种类型: 如果参数是基本数据类型,那么传递的是一个基本数据类型的值; 如果参数是对象,那么传递的是一个 对象引用的拷贝,注意不是C++中的对象引用。这个引用的拷贝和其他的拷贝一样,同时引用了一个对象。 一个方法不可能修改一个基本数据类型…- 4
- 0
-
JVM垃圾回收与性能调优
一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范, JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配, Perm不属于堆内存,有虚拟机直接分配,但可以通过 -XX:PermSize -XX:MaxPermSize 等参数调整其大小。 年轻代(N…- 2
- 0
-
C++ 高性能服务器网络框架设计细节
前言 这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序。需要注意的是一般大型服务器,其复杂程度在于其业务,而不是在于其代码工程的基本框架。 大型服务器一般有多个服务组成,可能会支持CDN,或者支持所谓的“分布式”等,这篇文章不会介绍这些东西,因为不管结构多么复杂的服务器,都是由单个服务器组成的。所以这篇文章的侧重点是讨论单个服务程序的结构,而且这里的结构指的也是…- 19
- 0
-
c#连接sqlserver数据库
本文将详细介绍如何使用Connection对象连接数据库。对于不同的.NET数据提供者,ADO.NET采用不同的Connection对象连接数据库。这些Connection对象为我们屏蔽了具体的实现细节,并提供了一种统一的实现方法。 Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。 SqlC…- 24
- 0
-
C# 中的委托和事件
C# 中的委托和事件 文中代码在VS2005下通过,由于VS2003(.Net Framework 1.1)不支持隐式的委托变量,所以如果在一个接受委托类型的位置直接赋予方法名,在VS2003下会报错,解决办法是显式的创建一个委托类型的实例(委托变量)。例如:委托类型 委托实例 = new 委托类型(方法名); 欢迎浏览本文的后续文章: C#中的委托和事件(续) 引言 委托 和 事件在 .Net …- 1
- 0
-
【基础+实战】JVM原理及优化系列之十:JVM内存泄漏专题实战
1. 定义 1 、内存泄漏:一般可以理解为系统资源(各方面的资源,堆、栈、线程等)在错误使用的情况下,导致使用完毕的资源无法回收(或没有回收), 从而造成那部分内存不可用的情况。 2 、内存溢出:指内存不够使用而抛出异常,内存泄露是其形成的原因之一。 2. 危害 会导致新的资源分配请求无法完成,引起系统错误,最后导致系统崩溃。 3. 内存泄漏分类 类型描述常发性内存泄漏发生内存泄漏的代码会被多次执…- 26
- 0
-
JVM性能优化系列-(1) Java内存区域
目前已经更新完《Java并发编程》,《Docker教程》和《JVM性能优化》,欢迎关注【后端精进之路】,轻松阅读全部文章。 Java并发编程: Java并发编程系列-(1) 并发编程基础 Java并发编程系列-(2) 线程的并发工具类 Java并发编程系列-(3) 原子操作与CAS Java并发编程系列-(4) 显式锁与AQS Java并发编程系列-(5) Java并发容器 Java并发编程系列-…- 50
- 0
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!