自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HBase集群环境搭建和应用案例和数据结构

一、Hbase简介 1.基本描述 Hadoop的原始特性是解决大规模数据的离线批处理场景。HDFS具有强大的存储容量,但它并不提供强大的数据查询机制。HBase组件基于HDFS文件系统提供类似于BigTable服务。 HBase是一个分布式、可扩展的NoSQL数据库,支持海量结构化数据存储。HBase在Hadoop的基础上提供了类似于Bigtable的功能,Bigtable基于列存储模式,而不是基于行的模式。存储数据的特点:非结构化或松散半结构化数据,自然要有横向扩展的能力来存储大表,基于服务集群处理海量数

2021-01-11 12:15:09 111

原创 Databricks:分组统计和窗口

在分析数据时,通常需要对数据进行分组,并对每个组进行聚合。从某种意义上说,窗口也是一种分组统计的方法。 分类资料 DataFrame.groupBy()返回GroupedData类,该类可以对分组数据应用聚合函数、apply()函数和pivot()函数。 常用的聚合函数有: https://www.itangyuan.com/book/chapter/15871972/64964516.html https://www.itangyuan.com/book/chapter/15871972/64964617

2021-01-11 11:56:07 261

原创 Java序列化的工作流程和原理

在本文中,我们关注对象序列化。 首先我们来讨论什么是序列化,序列化的原理。然后给出一个简单的例子来演示序列化和反序列化。有时候有些信息不应该序列化,应该如何控制?我们如何定制序列化内容?最后,我们讨论了在继承结构的场景中序列化应该注意什么。 序列化概述 序列化,简单来说就是用“流”的方式保存对象。至于保存的目的地址,可以是文件,也可以是数据库,也可以是网络,就是通过网络把对象从一个节点转移到另一个节点。 我们知道在Java的I/O结构中,有ObjectOutputStream和ObjectInputStre

2021-01-11 10:54:24 418

原创 Java集合 是编程的基础部分

在本文中,我们将重点关注Java中的集合。集合是编程语言的基础部分。从JDK早期开始,Java就引入了Java收集框架。设计JCF的人后来写了一本名为《有效的Java》的书。 Java中的集合主要集中在两部分,一部分在java.util包中,一部分在java.util.concurrent中,后者是在前者的基础上,定义了一些实现同步功能的集合。 本文重点介绍了java.util下的各种集合对象,java中的集合对象大致可以分为三类:List、Set和Map。对应的UML图如下(包括java.util下的大部

2021-01-11 00:50:53 116

原创 Java多线程同步 比多线程复杂

在本文中,我们将重点关注线程同步这个主题。这比多线程复杂。不重视就“掉坑”了。而且与单线程程序不同的是,每次是否出现多线程错误并不是固定的,这给调试带来了很大的挑战。 在本文中,我们首先解释什么是同步,什么是不同步的问题,然后讨论可以采取什么措施来控制同步。接下来,我们将在服务器端构建一个“线程池”,就像我们在审查网络通信时所做的那样。JDK为我们提供了一个大型并发工具包,最后我们将探索其中的内容。 为什么要线程同步? 说到线程同步,大多数情况下我们讨论的是“单对象多线程”的情况,一般分为两部分,一部分是关

2021-01-10 23:50:58 142

原创 Java多线程 如何创建线程

在本文中,我们主要关注多线程。多线程是一个复杂的话题,包含很多内容。本文重点介绍线程的基本属性、如何创建线程、线程状态切换和线程通信。我们将线程同步的话题留给下一篇文章。 线程是操作系统的基本单元,封装在一个进程中,一个进程可以包含多个线程。即使我们不手动创建线程,进程也会有一个默认线程在运行。 对于JVM来说,当我们编写一个单线程程序运行时,JVM中至少有两个线程在运行,一个是我们创建的程序,一个是垃圾收集。 线程基本信息 我们可以通过Thread.currentThread()方法获取当前线程的一些信息

2021-01-10 20:32:30 97

原创 利用Java实现网络通信 TCP、UDP通信

本文主要讨论如何利用Java实现网络通信,包括TCP通信、UDP通信、组播和NIO。 TCP连接 TCP是基于套接字的。在TCP连接中,我们将使用服务器套接字和套接字。客户端和服务器建立连接后,剩下的基本就是I/O的控制了。 我们先来看一个简单的TCP通信,分为客户端和服务器端。 客户端代码如下: 简单的TCP客户端 服务器端代码如下: https://www.itangyuan.com/book/chapter/15859704/64810994.html https://www.itangyuan.co

2021-01-10 15:18:00 657

原创 Linux PCI驱动框架分析过程

描述: 内核版本:4.14 ARM64处理器 使用工具:源洞察3.5,Visio 1.概述 首先,回顾一下PCIe的建筑图: 本文就来说说PCIe主机的驱动,对应的是根联合体部分,相当于PCI的主桥部分; 本文选取Xilinx的nwl-pcie进行分析。 驱动整体编写简单,足以覆盖现有框架,不会占用太多笔墨; 2.过程分析 说到驾驶的分析,离不开驾驶模型的引入,而驾驶模型的实现使得具体的驾驶开发更加容易; 所以我们来回顾一下上一篇文章中提到的驱动模型:Linux内核建立了统一的设备模型,由总线、设备和驱动抽

2021-01-10 01:32:13 570

原创 实用的Java并发编程——互斥锁

在这个张文中,我们主要讨论如何使用互斥来解决并发编程中的原子性问题。 总结 并发编程中原子性问题的根源是线程切换,那么禁止线程切换能解决原子性问题吗? 这需要逐案讨论。在单核CPU的情况下,同一时间只有一个线程在执行,禁止CPU中断,也就是说操作系统不会重新调度线程,从而禁止线程切换,让获得CPU使用权的线程可以继续执行。 在多核CPU的情况下,同时可能有两个线程同时执行,一个线程在CPU-1上执行,另一个线程在CPU-2上执行。此时禁止CPU中断,只能保证某个CPU线程的连续执行,但不能保证只有一个线程在

2021-01-09 21:28:57 723

空空如也

空空如也

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

TA关注的人

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