- 博客(9)
- 收藏
- 关注
原创 GFS分布式文件系统
GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统,运行在廉价的普遍硬件设备上,提供灾难冗余的能力,为大量客户机提供了高性能的服务。GFS特点灾难冗余GFS组件的数量和质量导致在事实上,任何给定时间内都有可能发生某些组件无法工作,某些组件无法从它们目前的失效状态中恢复,因此GFS中集成了持续的监控、错误侦测、灾难冗余以及自动恢复的机制。存储大规模数据系统存储一定数量的大文件,数GB的文件非常普通,每个文件通常都包含许多应用程序对象,比如web文档。尾部追加数据绝大部分文件
2021-08-02 14:45:45
343
原创 Java实现二叉树
树属于数据结构中的一种,由有限个节点组成的有层次关系的集合。之所以叫树,是因为其结构类似一棵倒挂的树,根部朝上,枝叶朝下。一、树的定义树中的每个元素被称为节点,不存在任何节点的树称为空树。与节点直接连接并处于上一层的节点称为该节点的父节点,反之处于下一层的称为子节点,只有父节点而无子节点的节点称为叶子节点。在任意的一颗非空树中:(1)有且仅有一个特定的称为根(Root)的节点,该节点一定无父节点;(2)除根节点之外的其余数据元素可被分为个m个互不相交的集合,其中每一个集合本身也是一棵树,被称作原树
2021-04-14 21:59:02
269
原创 生产者/消费者模型
生产者消费者模型是多线程同步的解决案例之一。生产者用于生产数据存放至缓冲区,也即仓库,而消费者用于消耗仓库中的数据,保证仓库的容量。在生产者和消费者模型中,我们使用wait()和notify()方法控制生产者和消费者的生产与消费。当仓库已满时,控制生产者不再进行生产,当仓库已空,控制消费者不再进行消费。在这里,我们需要注意的是wait()和notify()的使用方法。在一个线程中使用wait()方法使线程阻塞后,只能在另一个线程中调用notify()方法唤醒线程,当存在多个线程同时被阻塞,notify(
2020-12-21 12:22:17
156
原创 线程安全问题:以银行存取款为例
当存在两个及以上的线程对象共享资源且多个语句操作共享资源时,会出现多个线程先后更改数据,可能会出现线程安全问题。保证线程安全的方法有多种,譬如使用synchronized关键字同步代码块,或采用同步方法、使用Lock等。以银行存取款为例,当两个线程分别向账户中进行存钱和取钱两个操作时,采用加锁机制,保证共享对象在被一个线程调用时其它线程不能访问。创建个人账户类public class Person { private int money=0; private int sum; public
2020-12-21 11:59:21
573
原创 Java中Set、List、Map三大集合特点
Set、List、Map是常见的用来存储数据的集合,其中Set与List是Collection的子接口。Collection表示一组对象的集合,这些对象也叫Collection的元素,JDK中不提供直接实现Collection的方法,而是通过它的子接口来实现,如Set和List。Collection接口的不同子接口根据其自身属性有不同的特点,他们或允许重复的值,或有序。Map是键值对的集合,利用键映射到值。每个键在集合中具有唯一性,不能重复,且只能映射到一个值。Set、List和Map的主要特点如下:
2020-12-15 12:32:36
627
原创 数组与链表
数组与链表是两种基本的数据结构,它们都有各自的特点,在存储与数据操作等方面均有所不同。一、数组数组是有序的元素序列,由多个相同数据类型的变量组成。数组名即这一组变量集合的命名。1.1 数组的特点(1)使用数组需要预先分配空间;(2)在内存中,数组是一块连续的区域;(3)数组中每个元素都有对应的下标。1.2 数组的优点数组的随机访问速度快。在对数组中元素进行查找时,我们很容易通过元素下标快速查找到对应元素,时间复杂度为O(1)。1.3 数组的缺点(1)存在浪费内存空间的可能。由于数组在使
2020-12-07 11:57:09
229
原创 Java图像处理:灰度、二值化、浮雕、去色、反向、怀旧、放大镜等
图像是由一个个像素点组合而成,图像处理本身实际上是遍历图像的像素点,对像素点的RGB值进行更改,以达到图像处理的目的。接下来,我们主要介绍一下图片转化为二维像素点数组的方法以及部分图像处理如灰度、二值化、浮雕、去色的实现。将图片转化为一个二维像素点数组定义一个方法用来通过图片路径获得图片,并将其拆分为一个二维像素点数组,方便后续对像素点进行处理:public int[][] getImagepix(String Path){ File file = new File(Path);
2020-12-07 11:28:31
2165
1
原创 Java图像重绘
使用画图板画图时,我们往往会遇到这样的问题:当拖动窗体改变窗体大小或将窗体最小化后,我们绘画的图形往往会消失。这是因为,使用画笔绘画的图像是保存在缓存中,当我们改变窗体大小或最小化时,窗体上的内容就会被清空。因此,为了保存窗体上的内容,我们需要对绘制的图形进行重绘。重绘的主要思想是将我们绘制的图形的参数存储进去,在窗体初始化时利用paint方法调用这些参数进行图形重绘。因此,主要步骤在于如何存储图形参数以及我们该存储图形的哪些参数。重绘的方法有许多,比如图形对象重绘,即把绘制的图形看做一个对象,对图
2020-11-09 09:33:50
491
原创 接口interface的使用
接口interface的使用接口是一个抽象类,所有的方法在该类中都无方法体只有方法的定义接口中的方法都是抽象的,不能创建对象如定义一个接口 public interface Open ,在使用时不可以写如 Open op = new Open();必须对接口进行实现后才可创建对象,如下:定义一个新的类 public class Opendoor implements Open即可创建对象 Opendoor op = new Opendoor();在实现接口时,必须对接口中所有方法进行重写,添加
2020-10-18 21:28:44
325
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人