自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

数据工匠记

关注公众号 `数据工匠记` ,专注于大数据领域离线、实时技术干货定期分享!个人网站 www.lllpan.top

  • 博客(155)
  • 资源 (12)
  • 收藏
  • 关注

原创 责任链模式(参照netty)

1. 概念讲解责任链模式(Chain of Responsibility Pattern)为请求创建了一个处理对象的链(就好比于工厂的流水线作业一样,工人干完一个程序交由下一个工人进行操作,下一个工人干完后又交由下下一个工人进行操作)。发起请求和具体处理请求的过程解耦:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递。2. 如何实现责任链模式?处理器抽象类:定义了处理请求的接口或者抽象类,提供了处理请求的的方法和设置下一个处理者的方法。具

2021-11-05 13:13:09 15

原创 TCP与UDP协议

1. OSI 网络七层模型为使不通计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。各层的主要功能低三层物理层:使原始的数据比特流能在物理介质上传输。数据链路层:通过校验、确认和反馈重发等手段,形成稳定的数据链路。(01010101)网络层:进行路由选择和流量控制。(IP 协议)承上启下传输层:提供可靠的端口到端口的数据传输服务(TCP/UDP 协议)高三层会话层:负责建立、管理和终止进程之间的会话和数据交

2021-08-25 14:42:54 479 3

转载 优先队列和堆

什么是优先队列?听这个名字就能知道,优先队列也是一种队列,只不过不同的是,优先队列的出队顺序是按照优先级来的;在有些情况下,可能需要找到元素集合中的最小或者最大元素,可以利用优先队列ADT(Abstract Data Type)来完成操作,优先队列ADT是一种数据结构,它支持插入和删除最小值操作(返回并删除最小元素)或删除最大值操作(返回并删除最大元素);这些操作等价于队列的enQueue和deQueue操作,区别在于,对于优先队列,元素进入队列的顺序可能与其被操作的顺序不同,作业调度是优先队列的一个应

2021-08-03 10:45:57 23

原创 二叉树与二叉搜索树

本文将从二叉树、二叉搜索树的定义和性质入手,通过代码实现深度认识二分搜索树。什么是二叉树?在我们的现实场景中,比如图书馆我们可以根据分类快速找到我们想要找到的书籍。比如我们要找一本叫做《Java编程思想》这本书,我们只需要根据理工科 —> 计算机 —>Java语言分区就可以快速找到我们想要的这本书。这样我们就不需要像数组或者链表这种结构,我们需要遍历一遍才能找到我们想要的东西。再比如,我们所使用的电脑的文件夹目录本身也是一种树的结构。从上面的描述我们可知,树这种结构具备天然的高效性可以巧妙

2021-07-15 14:50:53 52

转载 最基础的动态数据结构:链表

什么是链表?链表是一种线性结构,也是最基础的动态数据结构。我们在实现动态数组、栈以及队列时,底层都是依托的静态数组,靠resize来解决固定容量的问题,而链表是真正的动态数据结构。学习链表这种数据结构,能够更深入的理解引用(或者指针)以及递归。其中链表分为单链链表和双链链表,本文中所介绍的是单链链表。链表中的数据是存储在一个个的节点中,如下这是一个最基本的节点结构:class Node { E e; Node next; // 节点中持有下一个节点的引用}我们可以将链表想象成火车,每一节车

2021-07-13 13:15:59 32

转载 栈Stack和队列Queue

栈(Stack)栈是一种线性结构。相比数组,栈对应的操作是数组的子集,所以我们完全可以基于动态数组去实现它栈只能从一端添加元素,也只能从同一端取出元素,这一端称为栈顶栈是一种后进先出的数据结构(Last In First Out 简称为LIFO)栈最常见的应用场景:括号匹配-编译器无处不在的Undo操作(撤销),将我们每次的操作放入栈中,执行撤销操作时只需要把放入的元素出栈即可程序调用的系统栈,方法调用时所展现的调用层级,就是栈的结构,如下图:栈的基本结构我们将基于前面所实现的动

2021-07-01 22:46:14 20 1

转载 对Java静态数组的二次封装

数组的特点数组最大的优点是可以快速查询,因为数组直接通过索引查询很快:array[2],所以在随机访问时有一定的优势。其数据结构是简单的线性序列,这使得元素访问非常快速,并且按照索引遍历数组方便。数组最好应用于“索引有语意”的情况但并非所有有语意的索引都适用于数组,例如索引是身份证号这种长度的数字,就无法作为索引使用而数组也同样可以处理“索引没有语意”的情况数组的缺点:根据内容查找元素速度慢数组的大小一经确定不能改变数组只能存储一种类型的数据插入、指定删除元素效率低未封装任何方法,所

2021-07-01 13:06:01 37 1

转载 偏函数(Partial Function)

Scala中的Partial Function就是一个“残缺”的函数,就像一个严重偏科的学生,只对某些科目感兴趣,而对没有兴趣的内容弃若蔽履。Partial Function做不到以“偏”概全,因而需要将多个偏函数组合,最终才能达到全面覆盖的目的。所以这个Partial Function确实是一个“部分”的函数。对比Function和Partial Function,更学术味的解释如下:对给定的输入参数类型,函数可接受该类型的任何值。换句话说,一个(Int) => String 的函数可以接收任

2021-04-25 13:08:19 334 1

原创 大数据开发、数仓、实时数仓

最近上传的精品课程,有需要的请收藏大数据开发架构课程: https://www.bilibili.com/video/BV1GX4y1g7yM/Flink实时数仓项目实践: https://www.bilibili.com/video/BV1jv41187iP/大数据体系数据仓库建设: https://www.bilibili.com/video/BV1gh411D7md/关注公众号 ,专注于java大数据领域离线、实时技术干货定期分享!个人网站 www.lllpan.top...

2021-04-20 11:46:54 152 1

转载 Java Future详解与使用

原文地址:https://dayarch.top/p/java-future-and-callable.html前言创建线程有几种方式?这个问题的答案应该是可以脱口而出的吧继承 Thread 类实现 Runnable 接口但这两种方式创建的线程是属于”三无产品“:没有参数没有返回值没办法抛出异常class MyThread implements Runnable{ @Override public void run() { log.info("my t.

2021-04-13 15:39:53 222 3

翻译 锁升级过程(偏向锁/轻量级锁/重量级锁)

锁的前置知识如果想要透彻的理解java锁的来龙去脉,需要先了解锁的基础知识:锁的类型、java线程阻塞的代价、Markword。锁的类型锁从宏观上分类,分为悲观锁与乐观锁。乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低。每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。java中的乐观锁基本都是通过C

2021-04-09 13:01:36 406 4

转载 Java中long和double的原子性

Java中long和double的原子性java中基本类型中,long和double的长度都是8个字节,32位(4字节)处理器对其读写操作无法一次完成,那么,JVM,long和double是原子性的吗?JVM中对long的操作是不是原子操作?首先,通过一段程序对long的原子性进行判断。测试程序如下:public class LongAtomTest implements Runnable { private static long field = 0; private vo

2021-04-01 12:51:33 112

原创 用户模式和内核模式(线程级)

用户模式和内核模式区分主要是因为,为了计算机系统的正常安全运行,有些硬件资源(如:中断装置)和特权指令是不可以对用户进程开放的,所以区分了两种模式。内核模式和用户模式内核空间存放的是操作系统内核代码和数据,是被所有程序共享的,在程序中修改内核空间中的数据不仅会影响操作系统本身的稳定性,还会影响其他程序,这是非常危险的行为,所以操作系统禁止用户程序直接访问内核空间。要想访问内核空间,必须借助操作系统提供的 API 函数,执行内核提供的代码,让内核自己来访问,这样才能保证内核空间的数据不会被随意修改,才能

2021-03-31 11:46:34 1621 6

原创 Flink算子间数据传递模式

算子之间传输数据的形式可以是one-to-one (forwarding)的模式也可以是redistributing的模式,具体是哪一种形式,取决于算子的种类。One-to-one: Stream(比如在 source 和 map operator 之间)维护着分区以及元素的顺序。那意味着 map 算子的子任务看到的元素的个数以及顺序跟 source 算子的子任务生产的元素的个数、顺序相同,map、fliter、flatMap 等算子都是 one-to-one 的对应关系(类似于 spark 中的窄依

2021-03-18 13:22:56 461 8

原创 Flink运行时组件和基于Yarn的任务提交

运行时组件Flink 运行时架构主要包括以下四个不同的组件,它们会在运行流处理应用程序时协同工作:分发器(Dispatcher):**可以跨作业运行,它为应用提交提供了 REST 接口。当一个应用被提交执行时,分发器就会启动并将应用移交给一个 JobManager。**由于是 REST 接口,所以 Dispatcher 可以作为集群的一个 HTTP 接入点,这样就能够不受防火墙阻挡。Dispatcher 也会启动一个 Web UI,用来方便地展示和监控作业执行的信息(Dispatcher 在架构中可能

2021-03-16 21:16:32 79 2

原创 Windows窗口函数(增量聚合)

案例可参考(切换到Flink1.12分支查看最新代码):https://github.com/perkinls/flink-local-train​ 定义窗口Window assigner,后,我们需要指定要在每个窗口上执行的计算。这是窗口函数的职责,一旦系统确定某个窗口已准备好进行处理,就可以使用该窗口函数来处理每个(按key分组)窗口的元素。ProcessWindowFunction可以与ReduceFunction或AggregateFunction组合在一起,在元素到达窗口时增量地聚合它们.

2021-03-09 14:02:55 187 4

原创 Flink窗口起始时间计算

Flink中窗口的时间不是根据进入窗口的第一个元素计为窗口的开始时间和加Size计窗口结束时间,而是根据Flink内置计算公式timestamp - (timestamp - offset + windowSize) % windowSize计算。/** * Method to get the window start for a timestamp. * * @param timestamp epoch millisecond to get the window start. (记录时间戳)

2021-03-05 13:04:31 1821

原创 如何理解Flink中Window?

Window 概述Streaming 流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而 window 是一种切割无限数据 为有限块进行处理的手段。Window 是无限数据流处理的核心,Window 将一个无限的 stream 拆分成有限大 小的”buckets”桶,我们可以在这些桶上做计算操作。Window 类型Window 可以分成两类:CountWindow: 按照指定的数据条数生成一个 Window,与时间无关。TimeWi

2021-03-03 13:39:27 1291

转载 低级处理函数ProcessFunction

原文链接:https://zhuanlan.zhihu.com/p/1307082771. ProcessFunction定义ProcessFunction 函数是低阶流处理算子,可以访问流应用程序所有(非循环)基本构建块:事件 (数据流元素)状态 (容错和一致性,仅用于keyed stream)定时器 (事件时间和处理时间,仅用于keyed stream)ProcessFunction 可以被认为是一种提供了对 KeyedState 和定时器访问的 FlatMapFunction。每在.

2021-02-23 17:53:44 1417

转载 优雅的处理Exception

在Finally块中清理资源或者使用try-with-resource语句当使用类似InputStream这种需要使用后关闭的资源时,一个常见的错误就是在try块的最后关闭资源。public void doNotCloseResourceInTry() { FileInputStream inputStream = null; try { File file = new File("./tmp.txt"); inputStream = new FileIn

2021-02-19 12:37:20 1326

原创 Spark中任务报错java.io.IOException: Filesystem closed

问题来源Spark程序操作HDFS的工具类中,手动获取了FileSystem,执行完HDFS相关操作后对FileSystem进行close,在后续的代码中报Filesystem closed错误。ERROR LiveListenerBus: Listener EventLoggingListener threw an exceptionjava.io.IOException: Filesystem closed at org.apache.hadoop.hdfs.DFSClient.checkOpe

2021-02-03 19:27:56 1634

原创 8、Akka任务调度(Dispatcher)

Dispatcher解析Dispatcher是将如何执行任务与何时运行任务两者解耦,所 Actor或Future的工作都是由 (Executor或Dispatcher)分配的资源来完成的。一般来说,Dispatcher会包含一些线程, 这些线程会负责调度并运行任务, 比如处理 Actor 的消息以及线程中的Future事件。不自己创建Dispatcher时使用的是默认Dispathcer,如果任务中有些耗时任务,容易将默认线程池打满,影响其他任务的调度。ExcutorDispatcher 基于

2021-01-29 18:00:47 1480

翻译 9、Akka中邮箱(MailBox)

简介Akka 的邮箱中保存着发给 Actor 的信息。通常,每个 Actor 都有自己的邮箱,但也有例外,如使用BalancingPool,则所有路由器(routees)将共享一个邮箱实例。邮箱选择默认邮箱未指定邮箱时,使用默认邮箱。默认情况下,它是一个无边界的邮箱,由java.util.concurrent.ConcurrentLinkedQueue支持。SingleConsumerOnlyUnboundedMailbox是一个效率更高的邮箱,它可以用作默认邮箱,但不能与BalancingDis

2021-01-29 17:59:12 1645

原创 MapReduce处理原理

分析上图:输入分片(input split):在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组,输入分片(input split)往往和hdfs的block(块)关系很密切,假如我们设定hdfs的块的大小是64mb(现在是128M),如果我们输入有三个文件,大小分别是3mb、127mb和129mb,那么.

2021-01-26 12:30:56 1342

原创 7、Akka中Router路由机制

Router基本概念在Akka中,Router 也是一种 actor 类型,是负责负载均衡和路由的抽象,把消息按照路由规则调度,分配给Routee去运算,用于调度actor任务或进行负载均衡策略它路由到来的消息到其他的actors,其他那些actors就叫做routees(被路由对象)。创建方式有两种方式来创建RouterActor Group:Routees由外界其它Actor产生(自行创建,自行管理),特点是能实现灵活的Routee构建和监控。List<Routee> ro

2021-01-19 13:11:00 1412

原创 6、Akka状态切换

在Akka中,Actor也经常会处在一个无法处理某些消息的状态。例如数据库客户端离线了,那么在重新上线之前,它都无法处理任何消息。我们可以选择不断重新建立客户端的连接,直到连接成功为止。在这种情况下,在成功连接之前,客户端会丢弃收到的所有消息。另一种做法是把客户端无法处理的消息先放在一旁,等到客户端恢复连接状态之后再做处理。Akka提供了一种叫做stash的机制,用于对于Akka中消息状态的来回切换:stash:将消息暂存到一个独立的队列中,该队列存储目前无法处理的消息:unstash:把消息从暂存

2021-01-13 22:27:20 1375 2

原创 5、Akka Actor生命周期

Actor生命周期Actor的生命周期是使用Hooks体现和控制的,我们可以重写相关的Hooks,从而实现对Actor生命周期各环节的细粒度控制,各种Hook顺序关系如下图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传prestart():在构造函数之后调用,重启时不会执行。postStop():在重启之前调用,异常重启时不会执行。preRestart(reason, message):在 actor 异常重启前保存当前状态,默认情况下会调用 postStop()。po

2021-01-13 13:41:42 1401 3

原创 4、Akka容错处理

监督(Supervision)容错(fault tolerance)概念与 Actor 相关,Actor 模型中容错处理使用叫做监督(supervision)处理。监督的核心思想就是把对于失败的响应和可能引起失败的组件分隔开,并且把可能发生错误的组件通过层级结构来组织,以便管理。在分布式系统中每个组件都是一个定时炸弹,那么我们希望能够确保无论其中任何一个发生爆炸,都不会引发链式反应,导致其他组件也爆炸。也可以说,我们希望能够隔离错误,或是将可能引发失败情况的组件分离开来。监督的层级结构Akka

2021-01-11 13:32:42 2102

原创 3、Akka传递消息

1 消息传递Akka 有 4 种核心的 Actor 消息模式: tell 、ask 、forward 和 pipe。Ask:向 Actor 发送一条消息,返回一个 Future。当 Actor 返回响应时,会返回 Future。不会向消息发送者的邮箱返回任何消息。Tell:向 Actor 发送一条消息。所有发送至 sender()的响应都会返回给发送消息的 Actor。Forward:将接收到的消息再发送给另一个 Actor。所有发送至 sender() 的响应都会返回给原始消息的发送者。Pip

2021-01-07 19:33:10 3844 1

转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

原文地址:https://www.cnblogs.com/dolphin0520/p/3920397.html在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程工具类,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。一. CountDownLatch用法CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行.

2021-01-07 12:50:14 3793

原创 维度建模之缓慢渐变维

维度建模之缓慢渐变维在从 OLTP 业务数据库向 DW 数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库中?在数据仓库中,哪些数据应该随之变化,哪些可以不用变化?考虑到这些变化,在数据仓库中的维度表又应该如何设计以满足这些需要。每天保存当前数据的全量快照数据,该方案适合数据量较小的维度,使用简单的方式保存历史状态在维表中添加关键属性值的历史字段,仅保留上一个的状态值拉链表什

2021-01-06 13:44:10 3538

原创 (五) 数据结构 - 归并排序

归并排序归并排序是一种基于分而治之的排序技术。最坏情况下的时间复杂度为O(nlogn),它是最受人尊敬的算法之一。归并排序首先将数组分成相等的两半,然后以排序的方式将它们合并。核心思想为了理解合并排序,我们采用未排序的数组,如下所示我们知道归并排序首先将整个数组迭代地分成相等的一半,除非获得原子值。我们在这里看到一个由8个项目组成的数组分为两个大小为4的数组。这不会更改原件中项目出现的顺序。现在我们将这两个数组分为两半。我们进一步划分这些数组,并获得无法再划分的原子值现在,我们将它

2021-01-05 23:23:15 3806

原创 2、Akka并发编程设计

1 响应式系统设计Akka 被称为是一个响应式平台,更具体的说,它是 Typesafe 响应式平台的一部分。响应式宣言中包含了 4 个准则,也可以说是设计目标:灵敏性、伸缩性、容错性以及事件驱动设计。1.1 灵敏性应用程序应该尽可能快的对请求做出响应。为了尽快向用户返回响应,在顺序获取数据和并行获取数据之间选择的话,始终应该优先选择并行获取数据。如果可能出现错误,应该立即返回,将问题通知用户,不要让用户等待直到超时。1.2 伸缩性应用程序应该能够根据不同的工作负载进行伸缩扩展(尤其是通过增加计算

2021-01-05 22:16:39 3769

原创 1、Akka简介&常用API介绍

Akka简介Akka是Java虚拟机平台上构建高并发、分布式和容错应用的工具包和运行时。Akka用Scala语言编写,同时提供了Scala和Java的开发接口。Akka可以以两种不同的方式来使用以库的形式:在web应用中使用,放到 WEB-INF/lib 中或者作为一个普通的Jar包放进classpath。以微内核的形式:你可以将应用放进一个独立的内核。自己有一个main类来初始化Actor系统。Akka几大特性易于构建并行和分布式应用 (Simple Concurrency &

2020-12-22 21:50:13 4000

原创 Builder建造者模式

建造者模式是日常开发中比较常见的设计模式,它的主要作用就是将复杂事物创建的过程抽象出来,该抽象的不同实现方式不同,创建出的对象也不同。通俗的讲,创建一个对象一般都会有一个固定的步骤,这个固定的步骤我们把它抽象出来,每个抽象步骤都会有不同的实现方式,不同的实现方式创建出的对象也将不同。举个常见的例子,想必大家都买过电脑,电脑的生产或者组装其实就是属于建造者模式,我们知道,电脑的生产都需要安装CPU、内存条、硬盘等元器件。我们可以把这个安装步骤抽象出来,至于到底装哪种CPU,比如i5还是i7就是对该抽象安装步.

2020-12-10 22:11:49 3775

转载 UML类图与时序图

UML是什么UML定义:统一建模语言(Unified Modeling Language,缩写UML)非专利的第三代建模和规约语言UML特点:UML是一种开放方法用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效在UML2.2中一共定义了14中图示,大体分为三类:结构式图形:强调的是系统式的建模行为式图形:强调系统模型中触发的事件交

2020-12-06 11:09:14 3874

转载 Java设计模式-工厂模式

原文地址:https://www.cnblogs.com/yssjun/p/11102162.html工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体的例子逐步深入分析,来体会三种工厂模式的应用场景和利弊。1. 简单工厂模式该模式对对象创建管理方式最为简单,因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型来指定.

2020-11-26 11:42:34 3791

转载 Spark Shuffle运行原理

1.什么是spark shuffle?Shuffle中文意思就是“洗牌”,在Spark中Shuffle的目的是为了保证每一个key所对应的value都会汇聚到同一个分区上去聚合和处理。Shuffle 过程本质上都是将 Map 端获得的数据使用分区器进行划分,并将数据发送给对应的 Reducer 的过程。shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。因为在分布式情况下,reduc

2020-09-07 12:48:19 3851

原创 JAVA线程(状态、终止、通信、封闭)

线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程状态线程几种状态线程的状态在java中有明确的定义,在java.lang.Thread.State中有6种。New:线程被创建,未执行和运行的时候Runnable:不代表线程在跑,两种:被cpu执行的线程,随时可以被cpu执行的状态。Blocked:线程阻塞,处于synchronized同步代码块

2020-08-30 12:48:51 3875 2

原创 JAVA垃圾回收机制

JAVA 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由 JIT 编译器进行一些优化),因此这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。而 Java 堆不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序处于运行期间时才

2020-08-26 13:13:22 3844

基于js分页实现(简单)

使用javacript实现分页技术,简单明了。没有多以的步骤!

2018-01-10

知名厂商LIS数据库建表文档

各知名厂商的LIS相关业务建表语句,字段详细描述。供参考(东华、新和、中联等)

2019-04-10

Ambari2.1.0安装配置(hadoop yarn spark集群安装配置) .pdf

Ambari2.1.0安装配置(hadoop yarn spark集群安装配置)

2020-04-02

flink 1.7源码

flink源码下载过慢,提供1.7版本的源码。仅供参考~~~~~

2019-04-10

java最简单的分页和pagination分页

java最简单的分页和pagination分页.两种模式都包含在项目中。dao层是用mybatis整合的

2018-01-28

Oracle经典教程_入门(夯推).pdf

Oracle入门推荐学习手册,涵盖了 Oracle安装、基础语法、常用查询语句和常见函数、用户角色权限管理、数据库介绍、触发器、存储过程等。

2020-11-19

Java面试题精华集.zip

Java常见面试题和解答。

2020-11-19

java-1.8-source.zip

JDK1.8源码

2020-04-03

简单的仿新浪微博发布框

简单的仿新浪微博发布框 !

2018-01-10

收藏的2000多套PPT模版

收藏的2000多套PPT模版

2020-04-02

HBase权威指南

HABSE权威指南,带目录。供大家学习参考,好人一身平安

2019-04-10

SSM框架整合

这个是SSM框架整合的核心配置,pom中添加了基本能用到的jar包!

2018-01-19

空空如也

空空如也

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

TA关注的人 TA的粉丝

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