自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 通俗易懂之HBase

定义面向列,分布式的数据库系统,构建在Hadoop(HDFS)和Zookeeper之上,灵感来源于Google的Bigtable论文。基本结构分布式特性类似于Mysql的数据最终是存储在磁盘的文件系统中,程序本身只是提供对这些数据的增删改查的能力。HBase相似,它同样提供对数据的处理能力,不同的是HBase有运行在多台机器上的RegionServer,不同的RegionServer处理对应的数据,并且选择HDFS作为最终存储的文件系统。这样的好处是易扩展(通过增加RegionServer数量),高

2020-10-28 23:26:25 509

原创 经典中的经典算法:动态规划(详细解释,从入门到实践,逐步讲解)

首先,本博客为原创作品,欢迎指导,随意转载,如果可以请转载时说明出处,附上本文链接,谢谢动态规划的重要性就不多说,直接进入正题首先,我们看一下官方定义:定义:动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题...

2018-10-11 22:27:54 299129 257

转载 TCP,UDP,IP包长度

1、概述首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。   其中以太网(Ethernet)的数据帧在链路层     IP包在网络层     TCP或UDP包在传输层     TCP或UDP中的数据(Data)在应用层     它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}   不同的协议层对数据包有不同的称谓,在传输层叫做段(segm...

2019-09-04 10:00:49 937

原创 取物必胜策略

两个人取石头 每次最少1个,最多a个,共有n个考虑倍数问题int f = n % (a+1);我先拿f个,然后之后的每次你取x个,我就取(a+1)-x个,我必赢例如:100个球两个人每次最多取五个最少取一个,谁能拿到最后一个就赢,求第一个取的人的必胜方法.这种题目是考虑倍数的问题。每次最多取5个最少1个,这样的话就考虑每次取6,100÷6=16余4。先拿的人拿...

2019-04-20 20:51:16 3834

转载 JAVA中ERROR和Exception区别

异常发生的原因有很多,通常包含以下几大类:用户输入了非法数据。要打开的文件不存在。网络通信时连接中断,或者JVM内存溢出。这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。-要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常:检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在...

2019-04-15 22:58:42 1462

原创 解决哈希冲突的几种办法

1,开放地址法基本思想是发生冲突时,再使用另一种操作探测其他空位公式就是:H(key) = [H(key)+di] mod m,其中m为表长度,di就是我们说的另一种操作;di为再次探测时的地址增量;根据di的不同取法,有不同的称呼;线性探测再散列:di=1、2、3、4....k(k<m-1) 二次探测再散列:di=1^2,-1^2,2^2,-2^...

2019-04-01 19:13:03 248

原创 简单分析各种JAVA内存溢出(OOM)

1,java.lang.OutOfMemoryError:Java heap space堆空间内存溢出常见原因:堆空间不足(根本原因) 数据量峰值,某个时间段数据量突然达到峰值,大于设计时的阈值 内存泄漏,不能回收的内存一直累积(比如局部变量一直增多)2,java.lang.OutOfMemoryError:GC overhead limit exceeded应用程序花...

2019-03-26 23:10:26 188

原创 tomcat优化简单了解

同学被问到tomcat怎么优化?简单介绍一下从配置方面优化1,Tomcat内存优化,启动时告诉JVM我要一块大内存(调优内存是最直接的方式)Windows 下的catalina.batLinux 下的catalina.sh 如:JAVA_OPTS='-Xms256m -Xmx512m'-Xms<size> JVM初始化堆的大小-Xmx<size>...

2019-03-23 19:14:14 324

转载 从文件系统角度分析文件读写过程

我们都知道为了安全,操作系统分为用户态和内核态,在进行I/O操作,修改基址寄存器内容等操作时,我们需要通过系统调用或者通过Shell以及库函数间接系统调用来执行进程的虚拟地址空间可分为两部分,内核空间和用户空间.内核空间是存放内核代码和数据,而进程空间存放用户程序代码和数据.不管是内核空间还是用户空间,他们都处于虚拟空间中,都是对物理地址的映射.虚拟文件系统:VFS同学在参加腾讯面试时...

2019-03-23 17:33:00 921

转载 进程上下文与中断上下文

关于操作系统用户态与内核态:Linux之用户态和内核态上下文context:通俗讲就是程序运行时周围的环境用户空间的应用程序,通过系统调用,陷入内核空间.这个时候用户空间的进程需要传递很多的变量,参数的值给内核,内核态运行时也要保存用户进程的一些寄存器值,变量等.所谓的"进程上下文",可以看做是用户进程传递给内核的这些参数以及内核要保存的那一套变量和寄存器值和当时的环境等.相对于进程而...

2019-03-23 12:29:08 329

原创 JAVA线程池讲解(结合源码)

来看Executor的框架图(有个大概印象即可):接口:Executor,CompletionService,ExecutorService,ScheduledExecutorService抽象类:AbstractExecutorService实现类:ExecutorCompletionService,ThreadPoolExecutor,ScheduledThreadPoo...

2019-03-21 20:13:43 191

转载 基于JDK实现的锁:ReentrantLock以及重入锁实现方式

ReentrantLock 是 java.util.concurrent(J.U.C)包中的锁。我们先来看一下ReentrantLock简单实用Demo:package com.star.javaEXE;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import ...

2019-03-20 23:00:47 424

原创 Java线程相关函数:sleep(),wait(),notify(),notifyAll(),yield(),interrupt(),join(),

我们先放一张图:相信看完这篇文章之后你能很容易看懂这张图1,线程睡眠sleep():让当前线程进入阻塞状态,不会释放锁属于Thread类的静态方法,需要使用try-catch捕获异常static void sleep(long millis) 在指定的毫秒数内让当前正在执行的线程睡眠(暂停执行)。static void sleep(long millis, int ...

2019-03-19 20:21:55 653

原创 synchronized和volatile详解

我们先来看一下两个关键词作用与区别java的线程抽象内存模型java的线程抽象内存模型中定义了每个线程都有一份自己的私有内存,里面存放自己私有的数据,其他线程不能直接访问,而一些共享数据则存在主内存中,供所有线程进行访问。上图中,如果线程A和线程B要进行通信,就要经过主内存,比如线程B要获取线程A修改后的共享变量的值,要经过下面两步:(1)、线程A修改自己的共享变量副本...

2019-03-19 17:00:07 755 1

转载 B树,B+树和红黑树

B树和B+树较为相似,B+树属于B树的变种,关于请阅读:简单解析B树(B-tree)与B+树对于红黑树,更为复杂,实在看不懂记不住,知道数据不只存放在叶子节点,通过左旋右旋来达到自平衡;有兴趣的可以访问:红黑树简介算了,看到腾讯实习面经都有问到,还是简单总结一下:(1)每个结点要么是红的要么是黑的。(2)根结点是黑的。(3)每个叶结点(叶结点即指树尾端NIL指针或NULL结点...

2019-03-14 08:51:23 300

转载 myisam和innodb的区别

1,MyISAM不支持事务,行级锁定和外键2,InnoDB不支持全文索引,而MyISAM支持。全文索引是指对char、varchar和text中的每个词(停用词除外)建立倒排序索引.3,MyISAM支持GIS数据,InnoDB不支持。即MyISAM支持以下空间数据对象:Point,Line,Polygon,Surface等。4,没有where的count(*)使用MyISAM要比Inn...

2019-03-14 08:50:03 162

转载 堆和栈的区别(此时理解为JVM内存结构中的堆和栈)

java虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小:java -Xss512M HackTheJava该区域可能抛出以下异常:当线程请求的...

2019-03-14 08:47:32 270

原创 常见排序算法有哪些 时间复杂度

对于这个问题,老生常谈,但是也不容易记,找一篇比较好的分享给大家但是大家尽量做到能徒手写出来常见的排序算法 冒泡 快排 归并应该是最常考的本文中的代码为本人所写,不追求简洁,只追求易懂时空复杂度 各种常用排序算法 排序方法 时间复杂度 空间复杂度 稳定性 复杂性 ...

2019-03-12 20:12:15 2422

转载 HashMap底层实现结构

下面能看完最好,看不完请看下面几个HashMap的设计亮点(能说出来面试官肯定认为你读过源码):1,取余运算:如果哈希值为h,容量为c,这时候我们可以得出他的桶下标为h%c,很容易计算出但是源码中并没有这么做,他用的方法为:)首先我们要清楚,HashMap的容量必须为2的n次方(下面会说怎么做到的)假设容量为c=2^4=16,二进制表示为10000,那么c-1 = 01111...

2019-03-12 16:53:03 413

转载 僵尸进程,孤儿进程,守护进程解释

此篇文章只是大概讲解了相关原理,以后会补充背景知识孤儿进程一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。僵尸进程一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过...

2019-03-12 13:34:37 2587

转载 进程和线程的区别,进程间通信方式,怎么选择比较好

此篇文章讲解比较多,面试记住原理特点应该差不多了进程和线程的区别进程进程是资源分配的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。线程线程是独立调度的基本单位。一个进...

2019-03-12 13:31:53 1620

转载 TCP流量控制和拥塞控制

在理解流量控制和拥塞控制之前,有必要了解一下TCP可靠传输和滑动窗口:TCP可靠传输和滑动窗口流量控制:流量控制是为了控制发送方发送速率,保证接收方来得及接收。接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。拥塞控制:如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高...

2019-03-12 13:27:58 298

原创 三次握手和四次挥手过程 握手为什么三次,挥手为什么是四次?

在了解三握四挥之前,有必要了解TCP连接的各个状态以及标志位:TCP连接的各种状态以及标志位详解三次握手:假设 A 为客户端,B 为服务器端。 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。(A:CLOSED B:LISTEN) A 向 B 发送连接请求报文,SYN=1,ACK=0,选择一个初始的序号 x。(A:SYN_SEND B:LISTE...

2019-03-12 13:25:05 1093

转载 简单解析B树(B-tree)与B+树

B-树就是B树引言:二叉查找树时间复杂度为O(logN),效率很高,但是由于磁盘IO要求,我们需要一种矮胖的结构来减少加载磁盘页(每个磁盘页随影树的节点)的次数,提高磁盘IO效率,因此就有了B树和B+树.称为多路查找树.B树:一个m阶的B树具有如下几个特征:B树中所有结点的孩子结点最大值称为B树的阶,通常用m表示。一个结点有k个孩子时,必有k-1个关键字才能将子树中所有关键字划分...

2019-03-12 12:00:33 310

转载 进程间通讯之socket详解

1.TCP/IP  在学习socket之前,先简单了解一下TCP/IP协议族,这样更有助于理解socket在网络编程中所处的位置。  TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/...

2019-03-11 22:16:50 1359

转载 文件描述符简介

内核(kernel)利用文件描述符(file descriptor)来访问文件,内核用文件描述符标识一个特定进程正在访问的文件.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,使用 open 或 create 返回的文件描述符标识该文件,将其作为参数传送给 read 或 write。按照惯例,UNIX 系统 shell 把文件描述符 0与进程的...

2019-03-11 11:02:24 494

原创 TCP可靠传输和滑动窗口

TCP可靠传输TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下:其中,0 ≤ a < 1,RTTs 随着 a 的增加更容易受到 RTT 的影响。超时时间 RTO 应该略大于 RTTs,TCP 使用的超时时间计算如下:...

2019-03-10 13:43:44 297

原创 TCP连接的各种状态以及标志位详解

TCP各种状态:LISTEN:侦听来自远方的TCP端口的连接请求SYN-SENT:再发送连接请求后等待匹配的连接请求(客户端)SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(服务器)ESTABLISHED:代表一个打开的连接FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认FIN-WAIT-2:从远程TCP等待连接...

2019-03-10 12:56:07 6184

转载 Linux之用户态和内核态

如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即系统调用。系统调用是操作系统的最小...

2019-03-08 15:47:30 230

原创 关于求解全排列 剑指offer:字符串的排序

好久没有写博客了最近找实习,一直在做剑指offer,碰到几道难以理解的,不过最后结果都不错,都弄懂了现在做到这个字符串的排序,我是真的难以理解幸好牛客网提供了一个详细解释答案(非常详细)不过我看着描述有一点点问题,现在贴上来,大家一起来看一下主要采用了回溯法import java.util.ArrayList;import java.util.List;impo...

2019-03-08 14:32:10 122

原创 Redis之发布/订阅机制

相关命令:PUBLISH 发布SUBSCRIBE 订阅PSUBSCRIBE 一种订阅符合给定模式的所有频道的方法UNSUBSCRIBE 退订PUNSUBSCRIBE 退订一个订阅的模式这些命令被广泛用于构建即时通信应用,比如网络聊天室(chatroom)和实时广播、实时提醒等。Red...

2019-01-17 17:45:13 4473 9

原创 设计模式:单例模式

更多算法实现:软件工程基础算法实现,持续更新 设计模式的几种实现方式:懒汉式,饿汉式,懒汉式一次判空线程安全,懒汉式两次判空线程安全,静态内部类,枚举还有其他几种实现方式,掌握这么多足够/** * All rights Reserved, Designed By 吉大16沈通 * @Title: Singleton.java * @Package com.s...

2019-01-14 20:03:47 139

原创 哥带你学git

git是一个很好理解的工具,托管代码,多人协作,版本控制但是里面的设计不得不让人惊叹目录版本管理以及git工作方式版本简介版本回退方法:然后解释Git工作方式工作区(Working Directory)版本库(Repository)git为什么这么吊炸天的?因为Git跟踪并管理的是修改,而非文件。git撤销修改(撤销的是工作区文件的修改)删除文件gi...

2019-01-10 16:14:20 185

转载 MATLAB资源安装免费激活完整步骤

原文链接:address 百度云的下载链接(永久有效)链接:https://pan.baidu.com/s/1dGZB4q9 密码:pfl3Matlab用途:点击打开链接与网盘资源相对应的安装教程1.将网盘中的3个文件下载下来后,解压(在当前路径下),得到下面这步。一定注意,下面这五个文件 不是安装路径2.在上面的 R2016a_win64 文件中 找到 setu...

2019-01-09 23:45:34 73060 38

转载 计算机网络总结

一,概述网络的网络网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 ISP互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 IS...

2019-01-06 15:57:28 832 3

转载 Linux IO模式及 select、poll、epoll详解

原文地址:address注:本文是对众多博客的学习和总结,可能存在理解错误。请带着怀疑的眼光,同时如果有错误希望能指出。同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行解释之前,首先要说明几个概念:- 用...

2019-01-02 17:41:47 360

原创 java队列,栈相关简单操作

阻塞队列相关方法:  add        增加一个元索              如果队列已满,则抛出一个IIIegaISlabEepeplian异常  remove    移除并返回队列头部的元素   如果队列为空,则抛出一个NoSuchElementException异常  element   返回队列头部的元素         如果队列为空,则抛出一个NoSuchElement...

2019-01-01 12:55:04 269

原创 java虚拟机主要机制图片

1,运行时数据区域2,java虚拟机栈3,本地方法栈4,垃圾收集算法4.1标记-清理4.2,标记-整理4.3,复制4.4,分代收集5,HotSpot虚拟机垃圾回收期以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。单线程与多线程:单线程指的是垃圾收集器只使用一个线程进行收集,而多线程使用多个...

2018-12-31 15:15:30 298

原创 git 上传至github出现error:your local changes to the following files would to be overwritten

本地代码与远程冲突两种解决办法:1,保留本地,并pull远程最新代码git stash git pull origin master git stash pop2,放弃本地修改,改为远程最新版本git reset --hard git pull origin master  ...

2018-12-26 17:44:54 288

原创 纪念一下我写的leetcode题解 以后每天都会写的!!

定个小目标leetcode题解等完成上传之后阅读量大于1000leetcode914. X of a Kind in a Deck of Cardsclass Solution { public boolean hasGroupsSizeX(int[] deck) { //键值对,key(数字)--value(出现次数) Map&lt;Integer...

2018-12-25 14:08:00 349

空空如也

空空如也

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

TA关注的人

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