- 博客(30)
- 资源 (3)
- 收藏
- 关注
原创 JDK软件包1.8之HashCode
包装类:->Byte取值范围:最小值 MIN_VALUE = -128 ~ 最大值 MAX_VALUE = 127 //返回对象的值Value @Override public int hashCode() { return Byte.hashCode(value); } /** * Returns a hash code for a {@code byte} value; compatible with * {@c
2022-03-04 15:42:52
544
原创 MySql之InnoDB的Buffer Pool 上
数据缓存,数据库存储数据说到底就是存储在磁盘上,数据会以页形式存储在数据库的表空间里(数据库数据文件)。问题:磁盘的数据IO读取是比较慢的,相对于内存中读取速度是没法比的;一个是马拉车,一个是中国高铁。InnoDB引擎在访问某个数据时,就会以页为单位,把数据所在的页所有数据,加载到内存中;然后在内存中读写数据。在读写数据之后,并没有立刻把整页所占的内存空间释放掉,而是将其缓存起来,将来再次访问该页面的时候,就会省去磁盘IO的读取开销了。InnoDB引擎在数据库启动的时候,向操作系统申请了一片连续
2021-11-09 14:46:25
951
原创 Java设计模式之简单工厂模式
简单工厂模式(SimpleFactory)是类的创建模式,又叫做静态工厂方法模式,是最基本的设计模式。由一个工厂对象决定创建出哪一种产品的实例,三个重要的角色,工厂类、目标类抽象接口、目标对象类;工厂类包含静态的工厂方法。伪代码package testdaemo.bean;import org.springframework.util.Assert;/** * 简单工厂模式...
2020-01-15 15:12:04
229
原创 JDK软件包1.8java.lang之Class
Class类的实例表示正在运行的Java应用程序中的类和接口。每个数组属于被映射为Class对象的一个类,所有具有相同元素类型和纬数的数组共享该Class对象。Class对象是在加载类时由虚拟机通过类加载器defineClass方法自动构造的。所有定位维护的类和接口,都是Class的实例。Object类方法唯一引入返回的类型。基本数据类型和void关键字都是Class类的实例。Final修饰,是不...
2019-12-21 16:38:09
350
原创 JDK软件包1.8java.lang之Object
Object(超类),是类层次结构的根。所有类都把Object作为超类。所有对象都实现类了该类的方法。Java1.0起始版本都定义了该类。方法: Object clone();对象的复制copy Class<?> getClass(); 返回实例对象所属类的信息。 boolean equals(); 判断非空对象是否相等。对于非空...
2019-12-21 14:24:54
341
原创 Java关键字(50)之断言assert
断言对于大型复杂程序或可靠性要求极高的程序来说有很大作用。通过断言程序员能快速地排查出问题。一个断言通常有两个参数:一个是描述假设条件为真情况的布尔表达式和需要为假是的提示或输出信息。断言可以用于以下情况:1、输入参数或输出参数的取值处于预期范围内。2、子程序开始(或结束)执行时文件或流处于打开(或关闭的状态)。3、指针非空。4、传入子程序的数组或其他容器至少能容纳X个元素数据...
2019-12-06 11:15:10
307
原创 Java关键字(50)之Abstract
abstract修饰的类是不完整的类;方法没有被完全实现,必须声明为抽象类;抽象类不能实例化(new 会出现编译错误),通过子类拓展。包含抽象方法的类,必须用abstract修饰(否则,出现编译错误)。public abstract class AbstractDemo { int x = 0; int y = 0; AbstractDemo(int x, int ...
2019-12-06 10:24:15
243
原创 算法学习之SaddlebackSearch
SaddlebackSearch查找,用户于二位有序数组。从上到下递增,从左到右递增。从左下角第一个元素(当前列值最大,当前行值最小)对比。如果目标值大于当前值,那么这一列的值都可以排除;如果目标值小于当前值,那么这一行的值都可以排除。排除像马鞍式一样。时间的复杂度就是O(row + col),就是行数+列数。Java代码示例: private int[] find(int a...
2019-11-07 09:18:58
438
原创 算法学习之三分查找
三分查找(Ternary Search),查找一次就可以排除整个有序线性表的2/3,查找效率更高。最差时间复杂度O(log3 n),最优时间复杂度O(1),空间复杂度O(1)。Java代码示例:/** * 使用递归的方法 * 三分数组搜索 * @param arr 数组 * @param key 目标数值 * @param s 数组下...
2019-11-06 17:18:19
2223
原创 算法学习之二分查找
二分查找也称折半查找(Binary Search),一种效率较高的查找算法。要求查找的线性表必须是有序的,关键字有序排序。1、使用递归。2、使用循环迭代。最优时间复杂度O(1),最差时间复杂度O(log n)。空间复杂度O(1)。Java代码示例: /** * 在一个整型数组中查找一个数的所在位置下标 * @param arr 数组 * @...
2019-11-06 16:32:38
258
原创 Java虚拟机之自动内存管理机制
虚拟机主要是内存动态分配和垃圾收集技术。程序开发人员不需要对new 的对象写垃圾回收,回收内存权利交给了虚拟机。如果不了解虚拟机出现内存泄漏和溢出方面的问题,该怎么着手去排查呢。程序计数器:当前线程所执行的字节码的行号指示器,占内存空间较小。字节码解释器工作时,通过改变计数器的值来选取下一条要执行的字节码。依赖计数器的功能有:分支、循环、跳转、异常处理、线程恢复等基础功能。多线程(多核...
2019-10-16 14:34:08
241
原创 算法学习之插入排序
插入排序(Insertion sort)是一种稳定的排序算法。向一个有序的数组中,插入一个数,插入后保持数组的有序,需要用到插入排序。适合用于少量数据排序,时间复杂度为O()。插入排序的基本思想是:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 publicT[] insertionSort(T[] array) { ...
2019-10-14 11:15:48
163
原创 数据结构之树基础知识
对于大量的输入数据,数组结构需要较大的连续内存空间,链表的线性访问时间太慢,存在空间和时间问题,数组和链接表结构不能满足实际业务场景需求。一种简单的新的数据结构产生了,那就是树,大部分操作的运行时间平均为。树(Tree)是一些节点的集合,树可以为空树,也就是说可以为空集。非空树,是有一个根节点(root简写r)r以及0个或者多个非空子树组成。一颗真实的树,要有根,然后才有树叶,根和树叶相...
2019-09-25 14:27:10
842
原创 算法药剂问题
1000瓶药剂,其中一瓶有毒,喝了立即死亡,小白鼠实验那一瓶有毒?喝了立即死亡,一只小白鼠从1号喝到底,喝到哪儿死,哪儿有毒,简单。1000瓶药剂,其中一瓶有毒,毒性一个小时发作。要在一个小时之后,找出哪一瓶有毒?找来999只小白鼠,一只一瓶也不用抢,一小时之后那只死了对应喝的那瓶有毒,简单。增加要求,最少多少只小白鼠,一个小时之后,可以找出有毒的药剂?药剂有毒/无毒,二进制,...
2019-09-25 13:49:36
627
原创 算法学习之散列算法
Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。(摘自百度百科)...
2019-08-27 09:23:45
1588
原创 算法学习之快速排序
快速排序是一种优雅的排序算法。使用分而治之的策略,divide and conquer (D&C)一种著名的递归式问题解决方法。是对冒泡排序的改进型。举例说明一切:采用分而治之的策略:需要一个分界值pivot, arr = {4,2,5,1,7,9,3,8,6}取分界值 pivot = 4, 起始位子:start = 0; 结束位子end = 8; public i...
2019-08-21 17:19:45
363
原创 Hadoop生态圈之HDFS文件数据读写
问一问自己,Hadoop是如何实现HDFS文件存储系统的呢?特点:1)大数据文件分割存储 磁盘默认的数据块大小,是对磁盘数据读写时要求的最小单位,通常磁盘的块是512字节。文件系统构建于磁盘上,所以需要设计成磁盘块整数倍。HDFS于是就有了块的概念(block)默认大小是64M,其目的是最小化寻址开销。一个超大文件G、T、P级别,分割成若干块,但是这些块并不需要存储在同一个磁盘上,...
2019-08-14 15:38:19
523
原创 Hadoop生态圈之基础组成部分HDFS文件系统
谷歌关于大数据的三篇文章之一就是Google File System,专门存储超大数据文件;同时,HDFS分布式文件系统,为整个生态圈提供最基础的文件存储服务。理论依据GFS与HDFS相同,Hadoop整个生态圈都是开源的。 2002年开始创建hadoop,最初版本遇到了瓶颈,最主要是可拓展问题,不能解决数十亿的网页存储问题。2003年谷歌分布式文件系统论文发布(GFS...
2019-08-14 14:08:10
464
原创 算法学习之K邻近算法((k-Nearest Neighbor,KNN))
真实项目中需要解决的问题:算出客户下单地点,最近的三个自助咖啡机。利用客户收件地址的经纬度,算出最近的三个点。解决这个问题,就需要KNN(K邻近算法)。分析这个只是简单的邻近求值算法步骤;1、计算测试数据与各个训练数据之间的距离;2、按照距离的递增关系进行排序;3、选取距离最小的K个点;4、确定前K个点所在类别的出现频率;5、返回前K个点中出现频率最高的类别作为测试数据的预...
2019-06-27 16:09:17
633
原创 算法学习之Markov Model(马尔可夫模型)
Markov Model(马尔可夫模型)在概率论中,马尔可夫模型是一种用于对随机变化的系统建模的随机模型。一种假定猜想:假设未来的状态只依赖于当前状态,而不依赖于之前发生的事件(也就是说,它假设了Markov属性)。通常,这个假设支持使用模型进行推理和计算,否则这将是棘手的。因此,在预测模型和概率预测领域,一个给定的模型最好能表现出马尔可夫性质。在不同的情况下,有四种常见的马尔...
2019-04-03 16:48:40
11782
原创 算法学习之递归算法
软件开发过程中,函数调用函数自身的运算方式归纳为递归。通常是一个主要问题分解为多个相似小问题去解决,计算过程是循环调用自身,直到达到临界条件,返回退出。 编写递归函数时,必须指定一个函数执行可到达的边界,当函数达到这个边界,停止递归。因此每个递归函数有两部分组成:递归条件和基线条件。递归条件是函数调用自己,基线条件就是函数可到到达的边界,停止调用自身。如果函数指定一个不可...
2019-01-18 16:13:54
222
原创 JAVA中的IO包之基础
名词:字节顺序(Endian)Endian(字节序):在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。名词来源(闲聊):据Jargon File记载,endian这个词来源于Jona...
2019-01-10 11:31:34
462
原创 算法学习之冒泡排序
冒泡排序(BubbleSort):循环遍历要排序的元素,依次比较相邻的两个元素,如果他们的顺序错误就把他们交换位置。每一次循环遍历,直到数组的末尾。因为越大的元素会经过交换到数组的前端(升序或降序排列),整个过程就像气泡最终会上浮到顶端一样,称之为“冒泡排序”。原理步骤:1、比较相邻的两个元素。如果第一个比第二个大就交换他们的位置。2、对每一个相邻元素做同样的工作,直到数...
2018-12-14 15:20:43
499
原创 JDK软件包1.8java.util之RandomAccess
List所使用的标记接口实现,表明他们支持快速随机访问(通常持续时间)。这个接口的主要目的是允许通用算法来改变他们的行为时提供良好的性能应用于随机或顺序访问列表。最好的算法处理随机访问列表(如ArrayList)时能产生二次行为适用于顺序存取列表(如LinkedList)。鼓励通用算法列表检查给定的列表是一个instanceof这个接口是否申请前一种算法,将提供糟糕的表现如果应用到连续的访问列...
2018-12-06 15:04:23
423
原创 JDK软件包1.8 java.util之Iterator
软件包java.util迭代器(Iterator);官方介绍对collection进行迭代的迭代器。迭代器取代了java.collection.Framework中的Enumeration。迭代器与枚举的不同点:迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。 方法名称得到了改进。属于java.collection.Framework中的成员。...
2018-12-04 11:16:38
631
原创 算法学习之选择排序(直接选择)
排序算法解决问题的算法:输入n个对象,按对象的某一个特征纬度排序并输出。选择排序的基本思想: 首先,在未排序的数列中,找到最小(或最大)元素;然后,将其放到新数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(或最大)元素,放到已排序的末尾;以此类推,直到所有元素均排序完毕,得到一个新的正序(或倒序)的数列。 Java代码demo:public int[...
2018-06-29 16:33:01
244
原创 算法学习之算法的理解
历史进程中,我们都是在不断的去分析问题,解决问题。算法是一系列解决问题步骤、方案。算法的特征:有穷性(Finiteness)算法的有穷性是指算法必须能在执行有限个步骤之后终止。理解:算法运行之后都是有结束点的,不存在死循环和永远运行下去的算法,是可以求到结果的。算法必须在有限时间内完成。一是算法中的操作步骤为有限个,二是每个步骤都能在有限时间内完成。确定性(Defin...
2018-06-27 11:01:48
1253
原创 JAVA-WebSocket服务
本篇文章,基于个人知识的理解和适用环境,如果有异议,可以建议修改,本人不盛感激,谢谢,我只是一只小小的蜗牛。2017.12.26WebSocket网络通信WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并被...
2017-12-26 10:15:59
793
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人