自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 问答 (1)
  • 收藏
  • 关注

原创 代码优化

代码优化 1、尽可能使用局部变量 调试方法时传递的参数以及在调用中创建临时变量都保存在栈中的速度较快,其他变量,如静态变量、实例变量等,都在堆中, 速度较慢。另外栈中创建的变量,随着方法的运行结束,这些内容就没有,不需要额外的垃圾回收。 2、尽量减少对变量的重复计算 明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的。例如: for(int i = 0; i < list.s...

2019-08-06 17:33:00 422

原创 字符串拼接

在开发过程中,字符串拼接的使用时非常频繁的,常用的方式有三种: +号拼接:str + “456” StringBuilder拼接 StringBUffer拼接 StringBuffer是保证线程安全的,效率是比较低的,我们更多的使用场景是不会涉及到线程安全的问题的,所以更多的时候会选择StringBuilder,效率会高一些。那么问题来了,StringBuilder和“+”号拼接,哪个效率更高呢...

2019-08-06 16:55:50 341

原创 i++与++i的区别

关于i++和++i的区别,我们都知道,i++表示先回复再+1,++i表示,先+1再返回。那么,它的底层是怎么样的呢? 编写测试代码: public class Test2 { public void method1() { int i = 1; int a = i++; System.out.println(a); } pub...

2019-08-06 16:24:40 419

原创 JVM字节码

JVM字节码 1、通过javap命令查看class文件的字节码内容 首先,看下面简单的代码: public class Test1 { public static void main(String[] args) { int a = 2; int b = 5; int c = b - a; System.out.println...

2019-08-06 15:48:46 321

原创 Tomcat优化

Tomcat优化 tomcat服务器在JavaEE项目中使用率非常高,所以在生产环境对tomcat的优化也变得非常重要了。对于tomcat的优化,主要是从2个方面入手,一是,tomcat自身的配置,另一个是tomcat所运行的jvm虚拟机的优化。 1、Tomcat配置优化 1.1、部署安装tomcat 下载并安装:https://tomcat.apache.org/download-80.cgi ...

2019-08-05 11:14:47 1447 1

原创 JVM垃圾回收(五)

5、可视化GC日志分析工具 5.1、GC日志输出参数 -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输入GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输入GC的时间戳(以日期形式,如:2013-05-04T21:53:59.234+0800) -XX:+Pri...

2019-08-05 10:18:08 182

原创 JVM垃圾回收(四)

4、G1垃圾收集器(重点) G1垃圾收集器是jdk1.7中正式使用的全新的垃圾收集器,oracle官方计划在jdk9中将G1垃圾收集器变成默认的垃圾收集器,以替代CMS。 G1的设计原则就是简化JVM的性能调优,开发人员只需要简单的散步即可完成调优。 开启G1垃圾收集器 设置堆的最大内存 设置最大的停顿时间 G1中提供了三种垃圾回收模式,Yong GC、Mixed GC和Full GC,在不...

2019-08-05 09:55:46 419

原创 JVM垃圾回收(三)

3、CMS垃圾收集器 CMS全称Concurrent Mark Sweep,是一款并发的、使用标记-清除算法的垃圾回收期,该回收器是针对老年代垃圾回收的,通过参数 -XX:UseConMarkSweepGC进行设置的 初始化标记(CMS-inital-mark),标记root,会导致STW; 并发标记(CMS-concurrent-mark),与用户线程同时运行; 预处理(CMS-concu...

2019-08-02 15:51:03 242

原创 JVM垃圾回收(二)

垃圾收集器以及内存分配 上一篇说了垃圾回收的算法,还需要有具体的实现,在JVM中,实现了多种垃圾收集器。包括:串行垃圾收集器、并行垃圾收集器、CMS(并发)垃圾收集器、G1垃圾收集器等。 1、串行垃圾收集器 串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,并且java应用程序中的所有线程都要暂停,等待垃圾回收 的完成。这种现象称之为STW(Stop-The-World)...

2019-08-02 12:29:56 165

原创 JVM垃圾回收(一)

垃圾回收 1、什么是垃圾回收 程序运行必然需要申请资源,无效的对象资源如果不及时处理就会一直占用内存资源,最终导致内存溢出,所以对内存资源的管理是非常重要的 2、C/C++语言的垃圾回收 在C/C++语言中,没有垃圾回收机制,是通过new关键字申请内存资源,通过delete关键字释放内存资源。如果程序员在某些位置没有写 delete进行释放,那么申请对象将一直占用内存资源,最终导致内存溢...

2019-08-01 17:53:50 256 1

原创 实战:死锁问题

通过jstack分析死锁情况 1、首先写一个死锁的程序,来造成死锁 public class TestDeadLock{ private static Object obj1 = new Object(); private static Object obj2 = new Object(); public static void main(String[] args) ...

2019-07-31 11:44:51 367

原创 JVM调优之jstack的使用

jstack的使用 1、线程的状态 在java中,线程的状态一共被分为6种: 初始态(NEW) 创建一个Thread对象,但还未调用start()启动线程时,线程处于初始态 运行态(RUNNABLE) 就绪态 该状态下的线程已经获得执行所需要的所有资源,只要CPU分配执行权限就能运行 所有就绪态的线程存放在就绪队列中 运行态 获得CPU执行权,正在执行的线程 由于一个CPU同一...

2019-07-31 11:16:42 334

原创 JVM调优之内存情况分析

1、jhat分析dump文件 通过上一篇文章,可以将jvm的内存dump到文件中,由于文件是二进制文件,不方便查看,因此,我们可以利用jhat工具来进行查看。 用法:jhat -port <port> <file> 实例: [root@node01 ~]# jhat -port 9999 dump.dat Reading from dump.dat... Dump fi...

2019-07-30 16:58:56 357

原创 JVM调优之jmap的使用

jmap的使用 1、查看内存使用情况 jmap -heap <进程号> 示例: 2、查看内存中对象数量及大小 查看所有对象,包括活跃以及非活跃的 jmap -histo <进程id> | more 查看活跃对象 jmap -histo:live <进程id> | more 说明: 字符 说明 B byte C char D do...

2019-07-30 16:16:51 387

原创 JVM调优之jstat查看堆内存使用情况

jstat查看堆内存使用情况 jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。 格式: jstat [-命令选项] [进程号] [间隔时间/毫秒] [查询次数] 查看class加载统计 [root@node01 workspace]# jstat -class 4827 Loaded Bytes Unloaded Bytes Time 1837 3417...

2019-07-29 17:24:27 4845

原创 JVM调优之JVM内存模型

JDK1.7的堆内存模型 Young年轻区(代) Young区被划分为三部分,Eden区和两个大小严格相同的Survivor区。其中,Survivor区间中,某一时刻只有其中一个是被使用的,另一个留作垃圾收集时复制对象用的。在Eden区间变满的时候,GC就会将存活的对象转移到空闲的Survivor区中,在经过几次垃圾收集后,仍然存活于Survivor区的对象将被移动到Tenured区。 ...

2019-07-29 16:56:45 191

原创 JVM调优之查看JVM的运行参数

查看JVM的运行参数 1、运行java命令打印出运行参数 运行java命令时打印参数:需要添加-XX:+PrintFlagsFinal参数即可 参数有boolean类型和数字类型,值的操作符是“=”或“:=”,分别代表默认值和被修改的值 [root@node01 workspace]# java -XX:+PrintFlagsFinal Test 2、查看正在运行的java进程的参数 先...

2019-07-29 16:31:10 1141

原创 JVM调优之-Xms与-Xmx参数

-Xms参数与-Xmx参数 -Xms参数与-Xmx参数分别是设置JVM的堆内存的初始大小和最大大小 -Xmx2048m 等价于-XX:MaxHeapSize=2048m,设置JVM最大堆内存为2048m -Xms512m 等价于-XX:InitialHeapSize=512m,设置JVM最初是堆内存为512m 适当的调整JVM的内存大小,可以充分利用服务器资源,让程序跑的更快。 ...

2019-07-29 16:14:47 11619 2

原创 JVM调优之-XX参数

-XX参数 -XX参数也是非标准参数,主要用于JVM的调优和debug操作 -XX参数的使用有2中方式: boolean类型 非boolean类型 boolean类型 格式:-XX:[+/-] <name> 表示开启或禁用<name>属性 例如: -XX:+DisableExplicitGC 表示禁用手动调用gc操作,也就是说调用System.gc()无效 非...

2019-07-29 16:09:26 541

原创 JVM调优之-X参数

-X参数 JVM的-X参数是非标准参数,在不同版本的JVM中,参数可能会有所不同,可以通过java -X查看非标准参数 -Xint、-Xcomp与-Xmixed参数 -Xint参数 在解释模式(interpreted mode)下,-Xint标记会强制JVM执行所有的字节码,这当然会降低运行速度,通常低10倍或更多。 -Xcomp参数 -Xcomp参数与-Xint正好相反,JVM在第一次使用时...

2019-07-29 13:58:52 1893

原创 JVM调优之-Server和-Client篇

JVM参数之-Server和-Client JVM可以通过-Server和-Client设置运行参数. -Server参数与-Client参数的区别 Server jvm的初始空间会大一些,默认使用的是并行垃圾回收器,启动慢,运行快 Client jvm相对保守一些,初始空间会小一些,使用串行垃圾回收器,他的目标是为了让JVM的启动速度更快,但是运行速度会比Server jvm慢一些 JVM在启...

2019-07-29 12:19:54 586

原创 JVM调优之参数介绍

JVM调优之参数介绍 jvm参数类型有3种,分别是:标准参数、-X参数(非标准参数)以及-XX参数。 1、标准参数 例如:-help、-version等 [root@node01 workspace]# java -version java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java ...

2019-07-29 12:04:12 192

原创 Hadoop伪分布式部署

Hadoop伪分布式部署 1.安装jdk环境(此处为jdk1.8环境) 2.安装ssh,设置免密登陆 3.下载hadoop-cdh(此处用hadoop-2.6.0-cdh5.7.0这个版本) 4.启动HDFS 5.停止HDFS 配置Hadoop的环境变量 1.安装jdk环境(此处为jdk1.8环境)     1.1 下载jdk [root@lailai ~]# wget htt...

2018-10-17 15:58:04 226

原创 Centos7安装Redis

1.下载安装文件 wget http://download.redis.io/releases/redis-4.0.10.tar.gz  2.解压 tar -zxvf redis-4.0.10.tar.gz 3.进入目录 cd redis-4.0.10 4.编译 make 5.安装到/usr/local/redis make PREFIX=/usr/local/redi...

2018-08-06 17:45:46 155

原创 python的numpy库

python的numpy库1.ndarray创建ndarray>>> import numpy as np >>> a = np.array([1,2,3]) >>> a array([1,2,3])数组的维数和元素的数量由数组的型(shape)来确定。 数组的维统称为轴(axes),属性使用ndim。 轴的数量被称为秩(rank)。 数组的长度使用size属性。np_list = np.ar

2017-09-19 22:14:11 705

原创 Linux常用命令(31)之特殊权限管理sudo

sudo权限root把本来的只能超级用户执行的命令赋予普通用户执行 sudo的操作对象是系统命令 sudo的使用visudo命令实际修改的是/etc/sudoers文件 root ALL=(ALL) ALL 用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对命令) %wheel ALL=(ALL) ALL 组名 被管理主机的地址=(可用的身份) 授权命令(绝对命

2017-04-14 11:22:28 481

原创 Linux常用命令(30)之特殊权限管理ACL

ACL权限ACL权限是解决Linux对用户分配权限不足的情况 查看分区ACL权限是否开启dumpe2fs -h /dev/sda5 说明:dumpe2fs命令是查询指定分区详细文件系统信息的命令 选项: -h 仅显示超级块中信息,而不显示磁盘块组的详细信息 临时开启分区ACL权限mount -o remount,acl / 重新挂载根分区,并挂载加入acl权限 永久开启分区ACL权限a.vi

2017-04-14 10:56:43 401

原创 Linux常用命令(29)之默认权限管理

文件默认权限umask 查看文件默认权限 [root@localhost ~]# umask 0022 [root@localhost ~]# 文件默认权限0022的说明: 第一个0代表文件特殊权限 022代表文件的默认权限 文件的默认权限文件不能直接建立为执行文件,必须手动赋予执行权限,所以文件默认权限最大为666 默认权限需要换算成字母在相减,建立文件之后的默认文件权限为66

2017-04-13 12:23:06 380

原创 Linux常用命令(28)之基本权限管理

基本权限修改-rw-r--r-- 其中:第一个“-”表示文件类型(- 文件 d 目录 l 软链接文件) rw- 表示所有者权限(U) r-- 表示所属组权限(g) r-- 表示其他人权限(o) r 表示读权限(4) w 表示写权限(2) x 表示执行权限(1) chmod命令chmod [选项] 模式 文件名 选项: -R 递归 模

2017-04-13 10:58:28 262

原创 Linux常用命令(27)之源码包安装

源码包和RPM包的区别安装前的区别:概念上的区别 安装后的区别:安装位置不同 安装位置源码包安装在指定位置当中,一般是/usr/local/软件名 源码包安装一般要指定安装路径,因为它无卸载命令,只需删除软件包即可 安装位置不同带来的影响rpm包安装的服务可以使用系统服务管理命令(service)来管理。例如,rpm包安装的apache的启动方式: /etc/rc.d/init.d/http

2017-04-13 10:33:51 523

原创 Linux常用命令(26)之yum在线安装

yum命令常用yum命令查询yum list 说明:查询所有软件包列表 yum search 关键字 说明:搜索服务器上所有和关键字相关的包 安装yum -y install 包名 选项: -install 安装 -y 自动回答yes 安装gcc编译器[root@localhost ~]# yum -y install gcc升级yum -y update 包名

2017-04-13 09:54:07 861

原创 Linux常用命令(25)之yum在线安装

yum源文件在线yum源文件:/etc/yum.repos.d/CentOS-Base.repo 文件内容: 名称 说明 [base] 容器名称,一定要放在[]中 name 容器说明,可以自己随便写 mirrorlist 镜像站点 baseurl yum源服务器的地址,默认是CentOS官方的yum源服务器,也可以改为自己喜欢的yum源地址 enabled

2017-04-12 17:07:28 1166

原创 Linux常用命令(24)之RPM软件包管理

rpm包校验rpm -V 已安装的包名 选项 -V 校验指定rpm包中的文件(Verify) 校验内容中8个信息的具体情况如下: 名称 说明 S 文件大小是否改变 M 文件类型或文件的权限(rwx)是否改变 5 文件的MD5校验和是否改变(可以看做文件内容是否改变) D 设备的主从代码是否改变 L 文件的路径是否改变 U 文件的属主(

2017-04-12 16:45:55 510

原创 Linux常用命令(23)之RPM软件包管理

软件包分类Linux软件包分两类,分部为:源码包、二级制包(RPM包,系统默认包) RPM命令管理RPM包命名规则RPM包的来源:RPM包在系统光盘中 以httpd的一个包名为例: httpd-2.2.15-15.el6.centos.1.i686.rpm 说明:httpd 软件包名 2.2.15 软件版本 15

2017-04-12 16:23:12 459

原创 Linux常用命令(22)之网络配置

Linux配置IP地址ifconfig命令临时配置IP地址ifconfig 查看与配置网络状态命令 ifconfig eth0 192.168.10.200 netmask 255.255.255.0 临时设置eth0网卡的IP地址为192.168.0.200,子网掩码为255.255.255.0 setup配置IP地址(永久)输入setup命令,进入图形界面配置IP地址,选择“Network co

2017-04-12 12:05:45 533

原创 Linux常用命令(21)之用户和用户组

用户和用户组 用户:使用操作系统的人 用户组:具有相同系统权限的组用户 /etc/group 存储当前系统中所有用户组 信息形式: Group : x : 123 : abc,def,xyz 组名称 组密码占位符 组编号 组内用户列表 当用户和组名称相同,且只有一个用户时,看胜率组中用户列表 注意: 1.超级管理员的组号为1

2017-04-11 15:08:05 554

原创 Linux常用命令(20)之磁盘管理

磁盘管理基本命令df 查看磁盘分区使用情况 选项: l 仅显示本地磁盘(默认) a 显示所有文件系统的磁盘使用情况,包括比如/proc/ h 以1024进制计算最适合的单位显示磁盘容量 H 以1000进制计算最合适的单位显示磁盘容量 T 显示磁盘分区类型 t 显示指定文件系统的磁盘分区

2017-04-06 16:13:45 370

原创 Linux常用命令(19)之VIM文本编辑器

VIM文本编辑器概述VI:Visual Interface 可视化接口 VIM相对VI的提升: 1.VIM支持多级撤销(ctrl+z) 2.VIM支持跨平台运行 3.VIM支持语法高亮 4.VIM支持图形界面 VI编辑器的操作模式vi编辑器共三种操作模式:命令模式(Command Mode)、输入模式(Insert Mode)、底行模式(Last Line Mode)

2017-04-05 11:04:16 521

原创 Linux常用命令(18)之管道符和通配符

管道符多命令执行顺序多命令执行符 格式 作用 ; 命令1;命令2 多个命令顺序执行,命令之间无任何逻辑关系 && 命令1&&命令2 逻辑与:当命令1正确执行后,命令2才会正确执行,否则命令2不会执行 |

2017-03-29 16:52:24 1537

原创 Linux常用命令(17)之输出重定向

输出重定向标准输入输出 设备 设备文件名 文件描述符 类型 键盘 /dev/stdin 0 标准输入 显示器 /dev/stdout 1 标准输出 显示器 /dev/stderr

2017-03-27 17:16:21 653

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除