什么是数据仓库(DW) 什么是数据仓库1什么时候需要用到数据仓库?一个公司里面不同项目可能用到不同的数据源,有的存在MySQL里面,又的存在MongoDB里面,甚至还有些要做第三方数据。但是现在又想把数据整合起来,进行数据分析。此时数据仓库(Data Warehouse,DW)就派上用场了。它可以对多种业务数据进行筛选和整合,可以用于数据分析、数据挖掘、数据报表。数据仓库的特点主题性:数据仓库是针对某个主...
React中的“Ajax”-axios React中的“ajax”React没有ajax模块集成其他的js库(如axios/fetch/jquery),发送ajax请求axios封装XmlHttpRequest对象的ajaxpromise可以用在浏览器端和服务器fetch不再适用XmlHttpRequest对象提交ajax请求fetch就是用来提交ajax请求的函数,只是新的浏览器才内置了fetch为了兼...
CSP 2019-12-2 回收站选址 Java代码import java.util.Scanner;import java.util.Set;import java.util.TreeSet;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); Set<String> set = new Tree
UML简介(没写完 统一建模语言(Unified Modeling Language,UML)是“绘制软件蓝图的标准化语言。UML 用来可视化、描述、构造和文档化软件密集系统的 人工制品”[Boo05]。如果了 解 UML 的词汇(图示元素和它们的含义),就可以很轻松地理解和描述一 个系统,并向他人解释该系统的设计。Grady Booch、Jim Rumbaugh 和 Ivar Jackson 在 20 世纪90 年代中期 开发出了UML 语言。目前的标准是 UML 2.3 ,也是 ISO 标准。因为这个标准很新,所以
随机选择算法 问题如何从一个无序数组中求出第 K 大的数(为了简化讨论,假设数组中的数各不相同)。例如,对数组 { 5,12,7,2,9,3 }来说,第三大的是 5,第五大的是 9随机选择算法概念最直接的想法是对数组排序,然后取出第 K 个。这样做法时间复杂度 O(nlogn),虽然看起来很好,但是还有更优的算法。随机选择算法,对任何输入都可以达到 O(n)的期望时间复杂度随机选择算法的原理类似于 随机快速排序假设主元为 A[p],当对 A[left,right] 执行一次 randPartition 函
活用递推 许多题目需要细心考虑是否可能用到递推关系例如就一类涉及序列的题目来说。假如 序列的每一位所需要计算的值 都可以通过 该位左右两侧的计算结果得到,那就可以考虑所谓的“左右两侧的结果”是否可以通过递推进行预处理来得到,这样在后面的使用中就可以不必反复求解例题:PAT B1040/A1093 有几个PAT题目描述字符串 APPAPT 中包含了两个单词“PAT”,其中第一个PAT是由第二位(P)、第四位(A)和第六位(T)组成的;第二个PAT是由第三位(P)、第四位(A)和第六位(T)组成的。现给定字符串,
打表 打表是典型的 空间换时间,一般指将所有可能需要用到的结果事先计算出来存入表,后面如果需要就直接查表。常见方法有以下几种:程序中一次性计算所有需要用到的结果,之后需要用到直接取最常用的方法如一个大量查询 Fibonacci 数 F(n) 的问题中,如果每次查询都要计算是很耗时的,假设查询 Q 次,时间复杂度即为 O(nQ)。如果进行预处理,即把所有的 Fibonacci 数预先计算并存在数组中,每次查询就只要 O(1),Q 次查询的时间复杂度 O(n+Q)在程序 B 中事先算好需要用到的
PAT-B1035/A1089-Insert or Merge(25) 题目根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?输入输出输入格式:输入在第一行给出正整数 N (≤100);随后一行给出原始序列的
Two Pointer:快速排序 首先解决的问题快速排序平均时间复杂度 O(nlogn)它的实现要先解决解决了这样的一个问题:对一个序列 A[1]、A[2]、……、A[n]。调整序列中元素的位置,使得 A[1](原序列的 A[1],下同)的左侧所有元素都不超过 A[1]、右侧所有元素都大于 A[1]。例如序列 { 5,3,9,6,4,1 } 来说,可以把 A[1]=5 调整到满足条件的位置,如序列 { 3,1,4,5,9,6 },这样 5 的左侧元素都不超过它,右侧元素都超过它,如图 4-10这个问题很多方案解决,下面给出速度
Two Pointer:归并排序 归并排序是一种基于“归并”思想的排序方法,本节主要介绍其中最基本的2-路归并排序。2-路归并排序的原理是,将序列两两分组,将序列归并为 n/2 个组,组内单独排序;然后将这些组再两两归并,生成 n/4 个组,组内再单独排序;以此类推,直到只剩下一个组为止。归并排序的时间复杂度为O(nlogn)。例子将序列 { 66,12,33,57,64,27,18 }进行2-路归并排序① 第一趟排序:两两分组,得到四组:{ {66,12}、{33,57}、{64,27}、{18} }。组内单独排序,得到新序列
Two Pointer 很少有教材拿出来讲,因为Tow Pointer不像是一种算法,更像是一种编程思想广义上的 Two Pointer 是利用问题本身与序列的特性,使用下标 i, j 对序列进行扫描,以较低复杂度(一般是O(n))解决问题给出以下两个例子找出递增序列中满足a+b=M的a和b的位置问题给定一递增正整数序列和一正整数M,求序列中两个位置的数:a 和 b,满足:a+b=M比如给定序列 { 1,2,3,4,5,6 },M = 8,就存在 2+6=8、3+5=8一般解法直观解法是二重循环for(int
二分:快速幂 问题给定三个正整数 a、b、m( a<109,b<106,1<m<109),求 ab % m 的值一般写法为了防止溢出使用long,Java代码,long为64位,等同于 C语言 的 long longpublic long binaryPow(long a, long b, long m){ long ans = 1; for(int i = 0; i < b; i++){ ans = ans * a % m; }
单进程死锁示例 当无 IO Buffer 时有可能出现单进程死锁进程1 向 IO 请求数据,并告诉IO设备 返回的数据 应该送到 进程1 的哪个地址IO设备去IO数据了,进程1就会阻塞等待,这时如果 进程1 被挂起,IO设备并不知道 进程1 被挂起了,IO设备还是会返回数据到 刚才进程1规定的地址因为数据没有被 进程1 接收到,所以数据就丢失了之后 进程1 被换回,这种情况下 IO设备认为自己返回了数据,就不会再返回数据;进程1 没有接受到数据,他就会一直阻塞,这就造成了 单进程死锁...
PAT-A1044-Shopping in Mars (25) 无代码题目描述Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diamond has a value (in Mars dollars M$). When making the payment, the chain can be cut at any position for only once and some of the diamonds are t
PAT-B1030/A1085-完美数列 (25分) 题目描述给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入格式输入第一行给出两个正整数 N 和 p,其中 N(≤105)是输入的正整数的个数,p(≤109)是给定的参数。第二行给出 N 个正整数,每个数不超过 109。输出格式在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。输入样例10 82 3 20 4 5 1 6 7 8 9输.
二分:寻找有序数列第一个满足某条件的元素的位置 问题有这样的问题:如果递增序列 A 中的元素可能重复,那么如何对给定的欲查询元素x,求出序列中第一个大于等于x的元素的位置L以及第一个大于x 的元素的位置R。序列中第一个大于等于x的元素的位置先看第一问例如对下标从0开始、有5个元素的序列 {1,3,3,3,6}来说,如果要查询 3,则应当得到 L=1、R=4;如果查询 5,则应当得到L=R=4;如果查询 6,则应当得到 L=4、R=5;而如果查询8,则应当得到L=R=5。显然,如果序列中没有x,那么L和R也可以理解为假设序列中存在x,则x应当在的
偏向锁的两次竞争 使用 synchronized() 时,括号中的对象就是我们所谓的 锁其实真正的 锁 的信息,存在与括号中对象的对象头中对象头的组成:内容说明Mark Word存储对象的 Hashcode、锁信息、分代年龄Class Metadata Address存储对象类型数据的指针Array length数组的长度(如果对象是数组的话)主要看 MarkWor...