自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IT售前工程师学习

本文章是阅读书籍《IT售前工程师修炼之道》做的提炼和读书笔记。下面是文章概要和阅读指南售前第一年:刚接触到这个职位,你的心情兴奋又期待,但是实际情况可能会有些失望,因为大部分的工作都是在整理文档,很少有机会接触到客户。在这个时候,你应该从写方案入手,逐步变得擅长写方案,并了解公司的各项业务。这个阶段,可以看看本书的第2章“逻辑能力”、第7章“软件开发”和第8章的新技术领域。售前第二年:已经工作一年了,你对于公司里的人和事都逐渐熟悉起来了,写方案的水平也逐步提高了。公司可能会安排你和销售一起去见见

2021-02-27 03:39:59 3921 2

原创 数据库系统

文章目录概述数据库系统企图解决的问题,它的目标数据模型概述数据库系统企图解决的问题,它的目标数据冗余和不一致安全性并发访问异常问题完整性问题数据孤立问题原子性数据孤立数据模型定义:由于计算机不能直接处理现实世界中的具体事务和联系,所以人们想到用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗的讲数据模型就是现实世界的模拟。我们为了方便将世界分为三个世界,下图中展示了概念模型、数据模型各处于哪个世界,希望可以帮助大家理解。...

2021-02-07 02:26:47 943 1

原创 Java中线程通信方式七种

文章目录volatile、synchronized、ReentrantLock/Condition 来实现线程间的通信这篇博客是是我在学习了多线程并发和操作系统后,针对Java中的情况,为保证线程安全和线程的并发运行进行总结的博客。看了我的博客后如果哪里我有理解不到位地方欢迎大家评论区给我留言,感谢支持。volatile、synchronized、ReentrantLock/Condition 来实现线程间的通信...

2020-12-25 23:14:40 10005 4

原创 最优二叉树(哈夫曼树)Java实现

此篇博客讲最优二叉树也叫哈夫曼树的原理,以及构建步骤,还有哈夫曼编码原理。建议有二叉树基础朋友学习交流。对二叉树基础可以看我的另外一篇博客二叉树的构建以及遍历文章目录哈夫曼树引出:哈夫曼树原理及实现定义与原理哈夫曼树构造哈夫曼树Java代码实现哈夫曼树引出:我们平时期末成绩判断,不仅需要给出分数的具体值,还需要给出分数所处的段位,例如优秀、良好、及格、不及格;我们计算机怎样进行判断呢?上面的判断从最终结果来看并没有什么问题,但是我要要考虑效率,当我们每次拿到成绩时候都要从是否及格开始一连串的判断,

2020-12-24 03:00:07 1268 2

原创 数据结构-树

文章目录树基础知识树基础定义树的存储结构树基础知识树基础定义树定义树使用有n个节点的一种数据结构。n=0时为空树,n>=0时树有且只有一个根节点(root节点);n>1时,其余节点可分为m个互不相交的有向集T1,T2…结点分类树的结点包含一个数据元素和若干指向子树的分支。结点拥有的子树数,称为结点的度。度为0的结点称为叶子结点或者终端结点,度不为0的结点称为分支结点。树的度是树内各结点的最大值。结点间关系结点子树根称为结点的孩子;相应该节点是孩子的双亲,

2020-12-23 16:30:55 251

原创 二叉树的构建以及遍历(Java语言描述)

二叉树遍历

2020-12-23 03:12:56 701

原创 结点和节点的区别

节点和结点的区别是:1、节点是一个实体,它具有处理的能力;2、结点是一个交叉点、一个标记,算法中的点一般都称为结点,数据集合中的每一个数据元素都用中间标有元素值的方框来表示,我们称它为结点。节点和结点的区别有:节点是一个实体具有处理的能力;而结点是一个交叉点,是一个标记,一般算法中的点都称为结点。节点被认为是一个实体,有处理能力,比如网络上的一台计算机;而结点则只是一个交叉点,像“结绳记事”,打个结,做个标记,仅此而已,还有就是,要记住:一般算法中点的都是结点。我们在数据结构的图形表示中,对于.

2020-12-22 12:43:52 17040

原创 人工智能导论

知识的表示方法状态空间法定义:基于解答空间的问题表示和求解方法,以状态和算符为基础表示和求解问题。三要素:状态、算符、状态空间问题规约法

2020-12-18 20:38:18 1704

原创 mysql中“ ‘ “和 “ ` “的区别

第一种情况下两者在linux下和windows下不同,linux下不区分,windows下区分。在windows下主要区别就是单引号( ’ )或双引号主要用于 字符串的引用符号如:mysql> SELECT ‘hello’, ‘“hello”’, ‘"“hello”"’, ‘hel’‘lo’, '/‘hello’;数据库、表、索引、列和别名用的是引用符是反勾号(‘`’) 注:Esc下面的键如:mysql>SELECT * FROM select WHERE select.id

2020-11-28 01:49:02 4951

原创 Maven基础,Maven安装流程,IDEA中设置Maven

引言:以前一直在使用Maven构建项目,但是每次通过Maven构建总是按照网上的流程,也不知道为何要那么做,这里通过这篇文章总结一下Maven一些基础知识,适合新手快速上手Maven搭建自己的项目。文章包含三节Maven基础,其实是为后面安装和在IDEA中配置Maven做铺垫,大家也可以先按照教程先安装,后面一点要看Maven基础,这样才知道为什么要那么安装,这样以后不用教程也可以自己安装,组织自己的项目。文章目录Maven基础(Maven介绍、基础知识了解)Maven的安装,与IDEA中的配置。.

2020-11-22 21:28:21 219

原创 使用Git将本地项目提交到Github流程

方法一首先你需要一个github账号,所以还没有的话先去注册吧!https://github.com/我们使用git需要先安装git工具,这里给出下载地址,下载后一路(傻瓜式安装)直接安装即可:https://git-for-windows.github.io/登陆后,进入Github首页,点击New repository新建一个项目填写相应信息后点击create repository即可Repository name: 仓库名称(输入名字,最好不要使用中文)Description

2020-10-05 11:46:33 618

转载 git创建新分支,并将本地代码提交到新分支上

一、clone Repository clone Github 上的Repository,如下: git clone git@github.com:FBing/design-patterns.git1 二、管理分支 1、查看分支 A、查看本地分支 使用 git bran...

2020-10-03 00:14:23 9679

转载 TCP连接的建立与释放(三次握手与四次挥手)

文章目录TCP连接的建立TCP连接的建立TCP连接的建立通过三次握手实现,

2020-09-20 18:36:09 531

原创 TCP首部报文格式

2020-09-20 18:03:00 138

原创 二分查找(递归+非递归)

文章目录二分查找递归实现非递归实现附加问题:安全防溢出的两整数平均值算法相关一些题目二分查找二分查找是一种查询效率非常高的查找算法。又称折半查找。起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来辅助查询。本文就介绍两种方法优缺点优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。使用条件:查找序列是顺序结构,有序。递归实现//二分查找递归实现

2020-09-16 00:48:24 384

原创 JVM-常量池

引子:常量池有分类,它处在一个什么位置我们进场说的JVM内存模型,里面线程共享的(方法区、堆),线程私有(程序计数器、栈)。这几部分JVM内存模型是一个总体,而它们下面还有一些区域划分,例如栈有虚拟机栈和本地方法栈。我们的这篇文章所说的常量池它属于方法区的一部分(但是有特殊情况,因为虚拟机由于厂商和版本的不同内存模型的划分也有些许的改变,例如String常量池在JDK7之前属于方法区,而在7之后放到了堆中)。我们常量池也有分类,例如Class常量池、String常量池、运行时常量池。具体常量池相关的知识.

2020-09-04 01:36:52 245

原创 Java中基本数据类型和包装类区别和联系

文章目录基本数据类型和包装类指什么装箱以及拆箱自动装箱与拆箱的实现原理(基本数据类型和包装类存储在哪)基本数据类型存储位置包装类型的存储位置、自动装箱与拆箱的实现原理基本数据类型和包装类指什么我们先来看一下Java中的基数据类型有哪些:从上图我们能够看到数据类型主题氛围两类,基本数据类型和引用数据类型,但是为何我们要把它分为两类呢,这是由它底层的存储的位置决定了它的们拥有各自特殊的功能性质,我们这里先了解后面会详细赘述。我们这里在看基本数据类型,这里面有八种基本数据类型,它们都有自己对应的包装类型

2020-09-03 21:28:03 989

原创 JVM调优-StringTable结构以及基本调优

对StringTable串池不了解朋友可以看我的博客JDK1.8中StringTable的底层类似于HashTable,由数组和链表实现,数组又称为桶数组。比如有这样一段代码:public class Demo4 { public static void main(String[] args) { int i = 0; System.out.println(i); }}我们设置虚拟机参数“-Xmx10m -XX:+PrintStringTableSt

2020-08-24 03:44:46 475

原创 Java-直接内存DirectMemory

文章目录直接内存设计逻辑直接内存所处的地位我们是如何使用直接内存的(NIO中怎样使用直接内存)直接内存分配和回收直接内存设计逻辑在我看周志明的《深入理解 Java 虚拟机 第三版》2.2.7 小节,里面关于 Java 直接内存的描述如下。直接内存(Direct Memory)并不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。但是这部分内存也被频繁地使用,而且也可能导致 OutOfMemoryError 异常出现,所以我们放到这里一起讲解。在 JDK 1.4 中新加入了

2020-08-24 02:49:14 1741 1

原创 UML类图

UML类图的作用是描述程序中类的信息及各个类之间的关系。所有的面向对象(Object Oriented)语言都离不开类的概念,理解了程序中类的设计也就理解了程序的一半。但类的具体描述方式在各个类中都不一样,UML类图的提出是为了能够脱离语言的限制,抽象地描述各个类的信息及各个类之间的关系。这是UML类图的作用。一、类的基本表示方式在UML类图中,每一个矩形代表一个类。我们举一个简单的例子:这是一个代表车辆的类。一般的类图分为三个部分。部分类图有五个部分。第一部分为类名,如果类名用正体书

2020-08-18 16:31:49 825

原创 Java中==、equals、hashcode一篇搞定

我这篇博客其实是几个问题融合在一起讲,因为我觉得这几个问题是相互关联的问题。问题一:Java 中 == 比较的是什么?问题二:==和equals的区别和联系问题三:hashCode与equals的作用与区别及应当注意的细节问题四:Java的Object.hashCode()的返回值到底是不是对象内存地址,hashCode怎么来的?问题一:Java 中 == 比较的是什么?对于对象引用类型:“==”比较的是对象的内存地址。public class ArrayTest { pub

2020-08-18 11:12:45 113

转载 Java的Object.hashCode()的返回值到底是不是对象内存地址?

刚学Java的时候我也有过这种怀疑,但一直没有验证;最近在OSCHINA上看到有人在回答问题时也这么说,于是萌生了一探究竟的想法——java.lang.Objec...

2020-08-18 01:23:03 1053 2

转载 hashCode与equals的作用与区别及应当注意的细节

   最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的,所以决定把它们研究一下。以前写程序一直没有注意hashCode的作用,一般都是覆盖了equals,缺没有覆盖hashCode,现在发现这是埋下了很多潜在的Bug!今天就来说一说hashCode和equals的作用。      &nbsp...

2020-08-18 01:18:10 174

转载 JVM方法区和常量池

        最近一直被方法区里面存着什么东西困扰着?       1.方法区里存class文件信息和class文件常量池是个什么关系。        2.class文件常量池和运行时常量池是什么关系。       &nb...

2020-08-18 00:47:04 544 1

原创 Java中对象的生存周期

文章目录JAVA对象的生存周期1.创建阶段(Created)为对象分配内存需要考虑的问题2.应用阶段(In Use)3.不可见阶段(Invisible)4.不可达阶段(Unreachable)5.收集阶段(Collected)6.终结阶段7.对象空间重新分配阶段JAVA对象的生存周期在Java中,对象的生命周期包括以下几个阶段: 创建阶段(Created) 应用阶段(In Use) 不可见阶段(Invisible) 不可达阶段(Unreachable) 收集阶段(C

2020-08-17 23:30:11 750

转载 JVM类生命周期概述:加载时机与加载过程

摘要:  我们知道,一个.java文件在编译后会形成相应的一个或多个Class文件,这些Class文件中描述了类的各种信息,并且它们最终都需要被加载到虚拟机中才能被运行和使用。事实上,虚拟机把描述类的数据从Class文件加载到内存,并对数据进行...

2020-08-17 22:16:00 195

转载 JVM内存区域划分

Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:            &nbs...

2020-08-17 17:02:33 200

转载 Netty ByteBuf与NIO ByteBuffer

Netty中引入了ByteBuf,相较于NIO中的ByteBuffer有了一下改进,使得网络编程更加简便。ByteBuffer的缺点       在NIO的Buffer中,我们已经知道Buffer有七种,最常用的是ByteBuffer,而ByteBuffer也有一些局限性: ByteBuf...

2020-08-13 13:51:05 435

原创 通过操作系统来了解JVM(企图找到操作系统和JVM间千丝万缕的关系)

进程和线程的区别对于进程来说,子进程是父进程的复制品,从父进程那里获得父进程的数据空间,堆和栈的复制品。这是对于一般操作系统概念对于JVM会有不同的理解大家可以看一下而线程,相对于进程而言,是一个更加接近于执行体的概念,可以和同进程的其他线程之间直接共享数据,而且拥有自己的栈空间,拥有独立序列。共同点: 它们都能提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点。 线程执行开销比较小,但不利于资源的管理和保护,而进程相反。同时,线程适合在SMP机器上运行,而进程可以跨机器迁移

2020-08-13 13:07:15 854

原创 Java中线程同步的七种实现方式

文章目录一:volatile二:synchronized 临界区方式ReentrantLock/Condition 消息队列方式三:使用JUC工具类 CountDownLatch四:基本LockSupport实现线程间的阻塞和唤醒五:通过Socket网络通信六:信号量机制(Semaphore):包括无名线程信号量和命名线程信号量七:管道通信就是使用java.io.PipedInputStream 和 java.io.PipedOutputStream进行通信这篇博客是是我在学习了多线程并发和操作系统后,

2020-08-12 21:09:19 792

原创 Java中父子线程的生死联系

Java中父子生死,有时息息相关,但有时却又没有关系,我们分为三种情况进行演示:父死-子不死父死-子瞬间死父想死提前告诉子-

2020-08-12 08:16:49 1211 1

原创 进程上下文切换与和线程上下文切换有什么不同?

首先,需要搞明白什么是上下文切换?上下文切换就是从当前执行任务切换到另一个任务执行的过程。但是,为了确保下次能从正确的位置继续执行,在切换之前,会保存上一个任务的状态。然后,需要明白进程与线程的区别?(网上很多,这里简单说明)1).线程是进程的一部分。进程是表示资源分配的基本单位,又是调度运行的基本单位,是程序执行的一个实例; 线程是进程中执行运算的最小单位,即执行处理机调度的基本单位,是进程中的一个执行流。2).内存空间不同。每一个进程拥有自己独立的内存空间,而线程共享进程的内存空间。..

2020-08-11 20:35:46 1414

原创 IO模型的演化-从单线程Reactor模式到MS主从Reactor模式在到Netty

概述NIO多线程Reactor模式Server服务器端public class ServerDemo1 { private static final int PORT=10085; private Selector selector; private ServerSocketChannel serverSocketChannel; private ExecutorService threadpool; //线程池 public ServerDemo1()

2020-08-08 19:30:15 182

转载 快速排序(java实现)

高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来...

2020-08-05 20:50:44 107 1

原创 同步、异步、阻塞与非阻塞

同步与异步辨析首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)。概念辨析同步所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致。换个说法:就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得

2020-08-03 20:01:49 219

原创 NIO实现群聊系统

server服务器端public class ServerDemo1 { public static final int PORT=10085; public Selector selector; public ServerSocketChannel serverSocketChannel; public ByteBuffer sendBuffer; public ByteBuffer recBuffer; public ServerDemo1() {.

2020-08-01 20:36:05 142

原创 数据结构-链表(Java语言实现)、JDK中LinkedList源码剖析

我们刚接触数据结构最基础的数据结构那就是数组,但是数组在创建时大小就要被固定,数组的存储地址要是连续的等等不好的地方,当然数组也有他的好处,查询速度快等等我们这篇博客以数组和链表的不同开始讲解链表,最后再来剖析一下JDK中实现的链表LinkedList的源码,通过学习源码进一步提升。有兴趣朋友可以看看我的数组的博客。文章目录数组和链表链表的实现单链表单向循环链表双向链表逆置链表判断链表是否有环LinkedList源码剖析数组和链表数组有‘1好2不好’好是,数组的内存是绝对连续的,因此数组的随

2020-07-27 23:57:29 406

原创 JVM垃圾回收算法与垃圾回收器

垃圾回收算法(三种)我们知道,怎样判断一个对象是否是垃圾,主要是看它是否GC Root 对象所引用。大家可以看一下Java中的四种引用如果未被GC Root对象所引用,那么看它是哪种引用,判断是否需要垃圾回收。我们看到上图中被GC Root实线连接都是不用被垃圾回收的。而未被GC Root直接连接的就是需要可能被垃圾回收。这时怎样去垃圾回收需要一种方法,这就需要垃圾回收算法。标记清除我们看到上图中被GC Root实线连接都是不用被垃圾回收的。而未被GC Root直接连接的就是需要可能被垃圾回收。

2020-07-24 01:30:37 350

原创 Java中的四种引用

文章目录强引用软引用、弱引用虚引用下图实线为强引用,虚线为软、弱、虚、终接器引用。强引用强引用就是沿着GC root对象能够直接找到那么,强引用不能被垃圾回收。除非和GC root的连接断开才可被垃圾回收。软引用、弱引用软引用:被软引用间接引用的A2对象,GC垃圾回收期第一次扫描不会垃圾回收,只有当扫描后发现内存不够时才会垃圾回收。弱引用:弱引用相对于软引用,没有被GC root直接引用,所以A3对象,只要发生垃圾回收,不管是否内存不够,都会被垃圾回收。当软引用和弱引用引用的对

2020-07-23 22:57:18 671

原创 String,StringBuffer与StringBuilder的区别

文章目录案例引入JVM虚拟机结构基础知识案例解析案例引入案例映入public static void main(String[] args) { String s1="a";//放入常量池 String s2=new String("a");//创建对象放入堆中 String s3="b";//放入常量池 String s4="a"+"b";//将“ab”放入常量池 String s5="ab";//前面s3已经放入常

2020-07-22 16:09:18 265

空空如也

空空如也

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

TA关注的人

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