冒泡、插入、选择排序 下面我们来理一下时间复杂度为O(n^2)的排序算法:冒泡排序、插入排序和选择排序 冒泡排序 在0~(N-1)的大小区间中,数组位置0和数组位置1上的进行比较,如果0位置上的大于1位置上的,交换他们的位置,否则不动;紧接着位置1上的和位置2上的进行比较,如果1位置上的大于2位置上的,交换他们的位置,如此反复第一轮下来,数组中最大的那个数会被放到数组的最后面。 将0~(N-1)的区间缩小为0~(N- 2019-07-03 算法与数据结构
最好、最坏、平均 、均摊时间复杂度 较为复杂的分析方法大致可分为四类、分别为:最好时间复杂度、最坏时间复杂度、平均时间复杂度和均摊时间复杂度。 这里有一段代码,针对它下面分别来说一下怎么算着四种时间复杂度。 12345678910111213// i的取值范围是 0~nvoid add(int element) { if (i >= len) { int new_array[] = new int[ 2019-07-03 算法与数据结构
C和C++的参数传递 下面是值传递,a和b的值会被传入到swap1中,如果你修改了这个值,main方法中的值是不会改变的 123456789101112131415161718192021222324#include<stdio.h>void swap1(int a, int b) { printf("a = %d ,ptr = %p\n", a, &a); print 2019-07-02 编程语言 #C
时间空间复杂度 算法与数据结构相辅相成,谁也离不开谁,学算法和数据结构可以说让我很痛苦,当然对于聪明的你来说,这可能不是什么难事,哈哈哈。这下面的图是算法的整个知识体系图,通过让我们对整个算法体系有个初步了解。 我总结了20个最常用的、最基础数据结构与算法,他们分别是10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树;10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算 2019-07-01 算法与数据结构
Hbase读写操作 HDFS、MR解决了分布式存储和分布式计算问题,但是由于HDFS的随机读写能力太差,所以不能直接作为数据库。Hbase是为了应对这点而诞生的,它是一个高性能、高可靠、可伸缩、面向列的分布式存储数据库,结合Zookeeper可以解决HDFS随机读写能力差的问题。那么它到底是怎么解决随机读写能力太差的问题呢?试想一下如果想要1S 往某个文件中插入100条记录,如果没有HBase,用Java代码写会是一 2019-06-28 大数据 #HBase
分布式缓存小结 缓存是提高服务访问速度的最有效的途径之一,下面对缓存的基本原理以及使用做一个小结。 缓存的基本原理缓存指将数据存储在相对较高访问速度的存储介质中,以供系统处理;缓存的本质是一个内存Hash表,数据缓存是以KV形式存储在内存的Hash表中,Hash表数据读写的时间复杂度为O(1),可以参考下图加深理解,图片摘自-《大型网站技术架构:核心原理与案例分析》 下图为是应用到代码中时的逻辑图 合理使用缓 2019-05-13 分布式
Hbase ThriftServer访问内网HBase 本地集群环境架构结构如下图所示: 实现thriftClient与thriftServer通信,实现访问内网HBase集群 118.166.152.33和101.118.124.111 分别为公网IP,192.168.5.2/3/4分别为内网IP 域名映射首先我们要做的是将ThriftServer服务的通信端口9000 映射到内网中,这边映射成了公网的9000端口 thrift 2019-05-10 大数据 #Hbase
分布式系统的知识结构总结 构件分布式系统的目的是增加系统容量,提高系统可用性。转换成技术方面就是完成下面两件事 大流量处理。所谓大流量处理就是利用集群技术将大量的并发请求分发到不同机器上 关键业务保护。提高系统可用性,所以需要将故障隔离起来,防止雪崩效应引起的整体服务无法正常服务。 说白了就是干两件事,一是提高系统架构的吞吐量,服务更多的并发流量;二是为了提高系统的稳定性,让系统的可用性更高;下面从系统的性能和系统 2019-05-09 分布式
CDH5.15 权限管理 CDH默认会给我们创建很多角色用户,这边对于开发和管理来说十分不方便。这边将所有的用户修改为ROOT HDFS下面描述一下怎么修改HDFS 执行下面指令 1chown -R root:root /var/run/hdfs-sockets YARN搜索“用户”、“系统组”、“mapred”、“hadoop”修改为root 其他组件最后修改ZooKeeper,Hive,Impala,Hbase, 2019-04-30 大数据 #CDH