自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(227)
  • 资源 (12)
  • 收藏
  • 关注

转载 Linux centos安装telnet服务

Linux centos 运行telnet命令,出现下面的错误提示:[root@localhost ~]# telnet 127.0.0.1-bash: telnet: command not found解决方法: 安装telnet服务centos、ubuntu安装telnet命令的方法. yum list telnet* 列出telnet相关...

2020-01-20 17:53:19 321

原创 Redis 3.2.x安装和配置

1. 关闭防火墙和Selinux Linux的防火墙是咱们新手的噩梦,很多情况会出现能ping通,但是访问不了Web页面。所以开始就干掉它! 1.1关闭防火墙[root@localhost ~]# /etc/init.d/iptables stopiptables: Setting chains to policy ACCEPT: filter...

2020-01-13 17:44:01 392

转载 【linux shell】Bash Shell 的一些快捷键

ctrl键组合ctrl+a:光标移到行首。ctrl+b:光标左移一个字母ctrl+c:杀死当前进程。ctrl+d:退出当前 Shell。ctrl+e:光标移到行尾。ctrl+h:删除光标前一个字符,同 backspace 键相同。ctrl+k:清除光标后至行尾的内容。ctrl+l:清屏,相当于clear。ctrl+r:搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索...

2020-01-13 16:25:34 135

原创 Tomcat类加载机制

https://www.cnblogs.com/aspirant/p/8991830.html

2019-12-27 16:49:40 105

转载 Java堆外内存排查小结

简介JVM堆外内存难排查但经常会出现问题,这可能是目前最全的JVM堆外内存排查思路。之前的文章排版太乱,现在整理重发一下,内容是一样的。通过本文,你应该了解: pmap 命令 gdb 命令 perf 命令 内存 RSS、VSZ的区别 java NMT 起因这几天遇到一个比较奇怪的问题,觉得有必要和大家分享一下。我们的一个服务,运行在...

2019-11-19 15:53:13 968

转载 linux下查看某个进程的线程

线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发执行时成为一个高效的机制。在Linux中,程序中创建的线程(也称为轻量级进程,LWP)会具有和程序的PID相同的“线程组ID”。然...

2019-11-06 11:45:01 169

转载 vmstat命令详解

vmstat是VirtualMeomoryStatistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat工具提供了一种低开销的系统性能观察方式。因为vmstat本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat输出结...

2019-11-06 11:04:54 7126

转载 Java socket详解

刚给大家讲解Java socket通信后,好多童鞋私信我,有好多地方不理解,看不明白。特抽时间整理一下,详细讲述Java socket通信原理和实现案例。整个过程楼主都是通过先简单明了的示例让大家了解整个基本原理,后慢慢接近生产实用示例,先概况后脉络给大家梳理出来的,所有涉及示例都可以直接拷贝运行。楼主才疏学浅,如有部分原理错误请大家及时指正. 整理和总结了一下大家常遇到...

2019-10-31 15:53:35 1076 2

原创 Java 安全模型介绍

https://www.ibm.com/developerworks/cn/java/j-lo-javasecurity/Java安全——安全管理器、访问控制器和类装载器

2019-10-23 09:54:14 354

转载 如何使用jstack分析线程状态

背景记得前段时间,同事说他们测试环境的服务器cpu使用率一直处于100%,本地又没有什么接口调用,为什么会这样?cpu使用率居高不下,自然是有某些线程一直占用着cpu资源,那又如何查看占用cpu较高的线程?当然一个正常的程序员不会写出上述代码,这里只是为了让一个线程占用较高的cpu资源。top命令在linux环境下,可以通过top命令查看各个进程的cpu使用情况,默认按c...

2019-10-21 17:11:21 212

转载 jvm 性能调优工具之 jps

概述jps 命令类似与 linux 的 ps 命令,但是它只列出系统中所有的 Java 应用程序。 通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息。如果在 linux 中想查看 java 的进程,一般我们都需要 ps -ef | grep java 来获取进程 ID。如果只想获取 Java 程序的进程,可以直接使用 jps 命令来直接查看...

2019-10-21 16:35:31 117

转载 深度学习—过拟合问题

1、过拟合问题  欠拟合:根本原因是特征维度过少,模型过于简单,导致拟合的函数无法满足训练集,误差较大;      解决方法:增加特征维度,增加训练数据;  过拟合:根本原因是特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。过度的拟合了训练数据,而没有考虑到泛化能力。      解决方法:(1)减少特征...

2019-10-15 18:26:55 851

转载 随机森林算法原理解析

  集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。1. bagging的原理在集成学习原理总结中,给出bagging的原理图。  (1)、Bagging的特点“随机采样”。随机采集跟训练集个数m相同的样本,采集T次。得到采样集。  (注意:GBDT(Gr...

2019-10-15 18:25:23 22531 2

原创 对数换底公式证明

简单介绍 公式对于且,有 推导过程法一:若有对数,设,。则根据对数的基本公式和及,可得则有证毕。法二:若有对数,则,且于是两边取以c为底的对数得,,即。证毕。法三:若有对数,则,且...

2019-10-09 18:01:00 9161

转载 二叉树遍历(前序、中序、后序、层次遍历、深度优先、广度优先)

二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们平常所说的层次遍历。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁,而对于广度遍历来说,需要其他数据结构的支撑,比如堆了。所以,对于一段代码来说,可读性有时候要比代码本身的效率要重要的...

2019-09-29 16:23:38 1072

转载 Reference 、ReferenceQueue 详解

ReferenceQueue引用队列,在检测到适当的可到达性更改后,垃圾回收器将已注册的引用对象添加到该队列中实现了一个队列的入队(enqueue)和出队(poll还有remove)操作,内部元素就是泛型的Reference,并且Queue的实现,是由Reference自身的链表结构( 单向循环链表 )所实现的。ReferenceQueue名义上是一个队列,但实际内部并非有实际的存储结...

2019-08-17 17:56:47 1946

转载 Java 引用类型简述

强引用 ( Strong Reference )强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ps:强引用其实也就是我们平时A a = new A()这个意思。强引用特性 强引用可以直接访问目标对象。 强引用...

2019-08-17 17:45:39 105

转载 源码分析之FinalReference完全解读

概述JAVA对象引用体系除了强引用之外,出于对性能、可扩展性等方面考虑还特地实现了四种其他引用:SoftReference、WeakReference、PhantomReference、FinalReference,本文主要想讲的是FinalReference,因为我们在使用内存分析工具比如zprofiler、mat等在分析一些oom的heap的时候,经常能看到 java.lang.ref.F...

2019-08-17 17:29:24 199

转载 Java魔法类:Unsafe应用解析

Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内存空间的能力,这无疑也增加了程序发生相关指针问题的风险。在程序中过度、不正确使用Unsafe类会使得程序出错的概...

2019-08-16 14:54:28 173

转载 利用虚引用PhantomReference实现对象被回收时收到一个系统通知

虚引用PhantomReference,在<<深入理解Java虚拟机>>一文中,它唯一的目的就是为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知。那么如何实现呢?它与ReferenceQueue配合使用来实现,下面给出代码示例:import java.lang.ref.PhantomReference;import java.lan...

2019-08-15 17:26:11 600

转载 堆外内存解读之DirectByteBuffer的实现

概述广义的堆外内存说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆,-Xmx的值是新生代和老生代的和的最大值,我们在jvm参数里通常还会加一个参数-XX:MaxPermSize来指定持久代的最大值,那么我们认识的Java堆的最大值其实是-Xmx和-XX:MaxPermSize的总和,在...

2019-08-15 17:21:12 418

转载 关于GC的一些知识点梳理

日前查看某个程序的日志,发现一直在报GC相关的信息,不确定这样的信息是代表正确还是不正确,所以正好借此机会再复习下GC相关的内容:以其中一行为例来解读下日志信息:[GC (Allocation Failure) [ParNew: 367523K->1293K(410432K), 0.0023988 secs] 522739K->156516K(1322496K), 0.00...

2019-08-15 11:42:32 695

原创 java中的强引用(Strong reference),软引用(SoftReference),弱引用(WeakReference),虚引用(PhantomReference)

之前在看深入理解Java虚拟机一书中第一次接触相关名词,但是并不理解,只知道Object obj = new Object()类似这种操作的时候,obj就是强引用。强引用不会被gc回收直到gc roots不可达时。而对其他三个名词并不清楚,因为并没有被真正使用过。通过查看软引用,弱引用和虚引用的源码,可以看出这三个类都是继承自Reference。一 、概念1.1软引用(SoftRef...

2019-08-14 20:58:34 500

转载 java.nio.ByteBuffer详解

一、ByteBuffer原理关于这个类,其实他有两个子类:一个是HeapByteBuffer和DirectByteBuffer关于这两个类的区别很好理解:DirectByteBuffer不是分配在堆上的,它不被GC直接管理(但Direct Buffer的JAVA对象是归GC管理的,只要GC回收了它的JAVA对象,操作系统才会释放Direct Buffer所申请的空间),它似乎给人感觉是“内...

2019-08-14 11:33:39 2707

转载 java.nio.buffer详解

Buffer简介在Java NIO中,主要有三大基本的组件:Buffer、Channel和Selector,上一篇文章我们具体介绍了Selector,现在让我们深入理解下在实际编程中使用的最多的Buffer。定义首先先让我们来认识一下Buffer:A container for data of a specific primitive type.A buffer is a li...

2019-08-13 17:34:14 246

原创 Zookeeper源码编译(Zookeeper 3.4.11)并IDEA启动

一: 准备工作 1.下载Ant并安装 由于Zookeeper是由Ant编译,需下载Ant并安装配置 下载地址:https://ant.apache.org/bindownload.cgi2.安装Ant: 解压压缩包配置环境变量:ANT_HOME D:\devople\apache-ant-1.10.6Path ...

2019-07-31 17:33:20 1182 1

转载 深入理解JVM—JVM内存模型

我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子...

2019-07-12 11:16:54 138

转载 MySQL-InnoDB事务隔离级别和锁机制

一、基础知识1.索引1.1 聚集索引InnoDB中的表是索引组织表,即表中的数据按主键顺序存放。 聚集索引即按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据。也将聚集索引的叶子节点称为数据页,每个数据页都通过一个双向链表来进行链接。对于聚集索引来说,索引即数据,数据即索引。 因为一张表中只能有一个主键(但主键可由多列组成),因此每张表只能拥有一个聚集...

2019-07-09 14:30:48 617

转载 java并发锁机制----ReentrantReadWriteLock读写锁源码分析

使用示例下面这个例子非常实用:// 这是一个关于缓存操作的故事class CachedData { Object data; volatile boolean cacheValid; // 读写锁实例 final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); void pr...

2019-07-05 17:08:35 418

转载 Thread类中的方法:join()、sleep()、yield()之间的区别

1. Thread类中的常用方法简介首先,先看一下Thread类中的常见方法:最主要的是区分其中join()、sleep()、yield()的用法区别2. Join()方法Thread的非静态方法join()让一个线程等待另外一个线程完成才继续执行。如果线程A执行体中调用B线程的join()方法,则A线程将会被阻塞,直到B线程执行完为止,A才能得以继续执行。如下图:...

2019-07-02 18:14:19 843

转载 java并发锁机制----ReentrantLock 原理解析之Condition实现原理

1、java.util.concurrent.locks.Condition接口一览:void await() throws InterruptedException;void awaitUninterruptibly();long awaitNanos(long nanosTimeout) throws InterruptedException;boolean await(lo...

2019-06-28 18:03:10 1508

转载 J.U.C之AQS:源码解析共享式同步实现

获取共享式同步状态总体图入口函数public final void acquireShared(int arg) { /* *子类实现tryAcquireShared能否获取的共享式同步状态 *如果返回>=0则获取同步状态成功方法直接返回 *如果返回< 0则获取同步状态失败进入if语句 ...

2019-06-20 20:28:40 172

转载 J.U.C之AQS:AQS概述和使用

AQS是什么AQS是AbstractQueuedSynchronizer的缩写,翻译过来就是"同步器",AbstractQueuedSynchronizer是一个抽象类,Java并包里大部分并发工具类都将其作为核心基础构件,比如可重入锁ReentrantLock, 信号量Semaphore基于各自的特点来调用AQS提供的基础能力方法实现多线程交互。例如:锁同步(synchronized)和锁等...

2019-06-19 09:54:06 307

原创 J.U.C之AQS:源码解析独占式同步实现

获取独占式同步状态整体流程图入口函数 public final void acquire(int arg) { /* *子类实现tryAcquire能否获取的独占式同步状态 *如果返回true则获取同步状态成功方法直接返回 *如果返回false则获取同步状态失败进入if语句 */ ...

2019-06-18 11:40:03 222

转载 Java多线程编程-(4)-线程间通信机制的介绍与使用(阻塞队列实现)

上一篇:Java多线程编程-(3)-线程本地ThreadLocal的介绍与使用线程间通信简介我们知道线程是操作系统中独立的个体,但是这个单独的个体之间没有一种特殊的处理方式使之成为一个整体,线程之间没有任何交流和沟通的话,他就是一个个单独的个体,不足以形成一个强大的交互性较强的整体。为了提高CPU的利用率和各线程之间相互协作,Java的一种实现线程间通信的机制是:wait/not...

2019-06-12 18:26:14 394

原创 Java多线程编程-(11)-从volatile和synchronized的底层实现原理看Java虚拟机对锁优化所做的努力

一、背景对于Java来说我们知道,Java代码首先会编译成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上进行执行。Java中所使用的并发机制依赖于JVM的实现和CPU的指令。下边我们对常见的实现同步的两个关键字volatile和synchronized进行底层原理的分析,分析之余我们就会了解到JVM在对锁的优化所做的事情,这样的话我们...

2019-06-12 18:13:01 189

转载 volatile关键字解析

转载自:http://www.cnblogs.com/dolphin0520/p/3920373.html   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是...

2019-06-12 17:58:08 155

转载 Java多线程编程-(3)-线程本地ThreadLocal的介绍与使用

上一篇:Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性ThreadLocal简介我们通过上两篇的学习,我们已经知道了变量值的共享可以使用public static变量的形式,所有的线程都使用同一个被public static修饰的变量。那么如果我们想实现每一个线程都有自己的共享变量该如何解决哪?JDK提供的ThreadLocal正是为了解决这样的问...

2019-06-12 11:52:11 155

转载 Java多线程编程-(2)-可重入锁以及Synchronized的其他基本特性

Java多线程编程-(1)-线程安全和锁Synchronized概念基本介绍了进程和线程的区别、实现多线程的两种方式、线程安全的概念以及如何使用Synchronized实现线程安全,下边介绍一下关于Synchronized的其他基本特性。一、Synchronized锁重入(1)关键字Synchronized拥有锁重入的功能,也就是在使用Synchronized的时候,当一个线程得到一...

2019-06-12 11:29:51 133

原创 synchronized实现原理

synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同步方法块,锁是括号里面的对象当一个线程访问同步代码块时,它首先是需要得到锁才能执行同步代码,当退出...

2019-06-12 11:03:51 205

A Byte of Python高清完整版

《A Byte of Python》是一本由Swaroop C H编写,旨在于介绍如何使用 Python 语言进行编程的自由图书。它以教材与指南的形式为入门者介绍 Python 语言。如果你对电脑知识的了解仅限于如何保存文本文件的话,那这本书就是为你准备的。

2018-09-17

Hadoop实战-陆嘉恒(高清完整版)

《Hadoop实战》作为云计算所青睐的分布式架构,Hadoop是一个用Java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,是谷歌实现云计算的重要基石。《Hadoop实战》分为3个部分,深入浅出地介绍了Hadoop框架、编写和运行Hadoop数据处理程序所需的实践技能及Hadoop之外更大的生态系统。 《Hadoop实战》适合需要处理大量离线数据的云计算程序员、架构师和项目经理阅读参考。

2018-09-17

git+github+gitserver学习资料

本书以教科书的方式,循序渐进地向软件开发人员或软件开发的项目管理人员,讲述如何快速掌握分布式版本控制系统 Git 的应用方法,让繁琐复杂的项目开发的版本控制变得高效且轻松自如。书中细致入微地介绍了如何使用设置文件和操作Git文档库,以及建立项目开发的分支、合并分支和解决冲突的操作;在具备扎实的基础之后,介绍了Git GUI程序用法,以及 Git 在团队开发模式中应用的问题;讲述如何与全球的项目开发人员进行交流,提升程序开发的经验和能力;介绍了GitHub、Bitbucket、GitLab

2018-09-17

TortoiseSVN-1.10-x64安装包

TortoiseSVN 是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本,并且可以通过检查历史知道数据做了哪些修改,谁做的修改。这就是为什么许多人将 Subversion 和版本控制系统看作一种“时间机器”。

2018-08-15

SourceTree2.4.8安装包

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mercurial和Subversion版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。 SourceTree拥有一个精美简洁的界面,大大简化了开发者与代码库之间的Git操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。

2018-08-15

notepad++7.4.2安装包

Notepad++是 Windows操作系统下的一套文本编辑器(软件版权许可证: GPL),有完整的中文化接口及支持多国语言编写的功能(UTF8技术)。 Notepad++功能比 Windows 中的 Notepad(记事本)强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。Notepad++ 不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。

2018-08-15

heidiSql_9.4版安装包

HeidiSQL是一款用于简单化迷你的 MySQL 服务器和数据库管理的图形化界面。HeidiSQL提供了一个用于在数据库浏览之间切换 SQL 查询和标签带有语法突出显示的简单易用的界面。其它功能包括BLOB 和 MEMO 编辑,大型SQL脚本支持,用户进程管理等。该软件资源开放。

2018-08-15

gitbash安装包

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

2018-08-15

python3.6&3.7整合版

Python这种语言旨在使复杂任务变得简单,最新版本Python 3.7已正式进入测试版发布阶段。Python 3.7的最终版定于2018年6月发布,但此后不会为Python 3.7版本添加任何新功能。

2018-08-15

WinSCP,SSH图形化工具

非常简单易用的一款ssh工具,无需了解linux命令即可完成一些linux服务器操作

2018-08-15

git相关安装包

非常好用的git安装包及可视化界面应用sourceTree,git爱好者必备工具

2018-08-13

dbvisual 10.0.2

非常好用的数据库可视化客户端工具dbvisual 10.0.2,你值得拥有。

2018-08-13

空空如也

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

TA关注的人

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