内存管理
内存管理内存管理基础内存管理概念 程序装入与链接 程序包括代码、数据和堆栈三个部分。 逻辑地址和物理地址空间 物理地址空间:硬件支持的地址空间 逻辑地址空间:CPU运行时,进程看到的进程空间 逻辑地址的生成:高级语言源码 –编译–> 指令汇编码 –编译–> 二进制代码 –链接:函数库平移–> 调用函数库(如果需要调用别的内存地址的函数) 程序加载重定位(逻辑地址平移):内存实际分配位置不一定从0开始 编译时:假设起始地址已知,如果起始地址改变必须重新编译 加载时:如编译起始位置未知,编译器需要生成可重新定位的代码,加载时需要生成绝对地址 执行时:执行代码可移动,需要地址转换(映射的支持) 内存保护 连续分配管理方式给进程分配一块不小于指定大小的连续的物理内存区域(代码数据堆栈) 内存碎片:无法利用的空闲内存 外部碎片:两个区域之间的未被使用区域 内部碎片:分配单元内部的未被使用内存,取决于分配单元大小是否需要取整 动态分区分配:(指定大小、可变、地址连续) 操作系统维护数据结构:所有进程已分配分区和空闲分区 策略:最先匹配,最佳匹配,最差匹配 ...
串
串串 串(字符串):由零个或者多个字符组成的有限序列。 串值:双引号括起来的字符序列 串长:所包含的字符总数量 子串(substring) 子串序号(index) 串相等:长度相等且对应位置的字符也一样 串常量:只能读,不能写 串变量:可读可写 串在计算机中的存储方式 定长顺序存储表示 堆分配存储 块链存储(块的意思是每个结点存放不止一个字符) 串的模式匹配算法 模式匹配:子串在主串中的定位称为模式匹配或串匹配 Brute-Force模式匹配算法 匹配流程 代码 BF算法代码 执行的复杂度为O(m+n),最坏为O(m*n)。当遇到s=”001”,p=”00000000001”的串的时候,就会遇到最坏情况 KMP模式匹配算法 改进点:每当一趟匹配出现字符不相等时,主串指示器不用回溯,而利用已经得到的部分匹配的结果,将模式匹配器向右尽可能滑动一段距离后在继续比较 匹配流程 代码 KMP算法代码 可以大大缩短匹配的次数 时间复杂度一定是O(m+n) 仅当模式与主串之间存在许多部分匹配的情况,才会比BF算法有明显的性能提升
Hadoop常见参数
[TOC] Hadoop常见参数 配置所在文件 参数 参数默认值 作用 hdfs-site.xml dfs.namenode.support.allow.format true 表示设置NameNode是否允许被格式化。 在生产系统,把它设置为false,阻止任何格式化操作在一个运行的DFS上。 建议初次格式化后,修改配置禁止,改成false hdfs-site.xml dfs.heartbeat.interval 3 DataNode的心跳间隔,默认单位为秒 在集群网络通信状态不好的时候,适当调大 hdfs-site.xml dfs.blocksize 134217728 块大小,默认是128MB 必须得是1024(page size)的整数倍 hdfs-site.xml dfs.namenode.checkpoint.period 或者: fs.checkpoint.period 3600 edits和fsimage文件合并周期阈值,默认单位为s hdfs-site.xml dfs.stream-buffer-size 4096 文件流缓存大小。需要...
Hadoop简介
Hadoop简介概述 Hadoop:开源分布式存储、计算矿框架。免费试用 CHD:Hadoop的一个发行版本,可以一键式部署集群,但是是收费的,非常昂贵 Hadoop是Yahoo 开发,后来贡献给了Apache的一套开源的、可靠的、可扩展的(可伸缩的)用于进行分布式计算的框架 Hadoop之父:Doug Cutting(道格·卡丁) Hadoop的版本管理非常混乱(最新更新版本2.10,版本最新确实3.2) 模块 Hadoop Common:基本模块,支撑其他模块运行 Hadoop Distributed File System (HDFS™):分布式存储 Hadoop YARN:任务调度和集群资源管理 Hadoop MapReduce:分布式计算 Hadoop Ozone:对象存储 版本 Hadoop 1.0:包含Common、HDFS、MapReduce Hadoop 2.0:包含Common、HDFS、MapReduce和YARN 从Hadoop 2.7开始包含了Ozone 从Hadoop 2.9开始包含了Submarine ==Hado...
Java设计模式及UML类图
目录[TOC] 23种设计模式GOF在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。 四位作者合称 GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则。 对接口编程而不是对实现编程。 优先使用对象组合而不是继承。 设计模式简介参考网址 模式类型 模式 & 描述 包括 创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式, 而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 单例模式(Singleton Pattern) 原型模式(Prototype Pattern) 工厂模式(Factory Pattern)...
MySQL基础与高级
目录[TOC] Mysql基础数据库相关概念数据库的好处 持久化数据到本地 可以实现结构化查询,方便管理 数据库常见名词解释 DB:数据库,保存一组有组织的数据的容器 DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据 SQL:结构化查询语言,用于和DBMS通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言 数据库存储数据的特点 将数据放到表中,表再放到库中 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。 表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。 表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似java 中的”属性” 表中的数据是按行存储的,每一行类似于java中的“对象”。 常见数据库mysql、oracle、db2、sqlserver MySQL产品的介绍和安装MySQL背景前身属于瑞典的一家公司,MySQL AB08年被sun公司收购09年sun被oracle收购 MySQL的优点1、开源、免费、成本低2、性能高、移植性也好3、...
Maven
Maven1.Maven 是什么?Maven 主要服务于基于 Java 平台的项目构建、依赖管理和项目信息管理。 Maven 的主要功能主要分为 5 点: 依赖管理系统 多模块构建 一致的项目结构 一致的构建模型和插件机制 2.什么选用 Maven 进行构建? 首先,Maven 是一个优秀的项目构建工具。使用 maven,可以很方便的对项目进行分模块构建,这样在开发和测试打包部署时,效率会提高很多。 其次,Maven 可以进行依赖的管理。使用 Maven ,可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。 3. Maven 规约是什么? /src/main/java/ :Java 源码。 /src/main/resource :Java 配置文件,资源文件。 /src/test/java/ :Java 测试代码。 /src/test/resource :Java 测试配置文件,资源文件。 /target :文件编译过程中生成的 .class 文件、jar、war 等等。 pom.xml :配置文件 Maven 要负责项目的自动化构建,以编译为例,Mav...
Zookeeper
Zookeeper1.ZooKeeper 是什么?ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 Zookeeper 保证了如下分布式一致性特性: (1)顺序一致性 (2)原子性 (3)单一视图 (4)可靠性 (5)实时性(最终一致性) 客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的 zookeeper 机器来处理。对于写请求,这些请求会同时发给其他 zookeeper 机器并且达成一致后,请求才会返回成功。因此,随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。 有序性是 zookeeper 中非常重要的一个特性,所有的更新都是全局有序的,每个更新都有一...
Tomcat
Tomcat1.Tomcat的缺省端口是多少,怎么修改?1)找到Tomcat目录下的conf文件夹 2)进入conf文件夹里面找到server.xml文件 3)打开server.xml文件 4)在server.xml文件里面找到下列信息 port=”8080”改成你想要的端口 2.tomcat 有哪几种Connector 运行模式(优化)?bio:传统的Java I/O操作,同步且阻塞IO。maxThreads=”150”//Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。minSpareThreads=”25”—Tomcat初始化时创建的线程数。默认值4。如果当前没有空闲线程,且没有超过maxThreads,一次性创建的空闲线程数量。Tomcat初始化时创建的线程数量也由此值设置。maxSpareThreads=”75”–一旦创建的线程超过这个值,Tomcat就会关闭不再需...
RabbitMQ
RabbitMQ1、什么是 RabbitMQ?为什么使用 RabbitMQ?RabbitMQ 是一款开源的,Erlang 编写的,基于 AMQP 协议的,消息中间件; 可以用它来:解耦、异步、削峰。 2、RabbitMQ 有什么优缺点?优点:解耦、异步、削峰; 缺点:降低了系统的稳定性:本来系统运行好好的,现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。因此,系统可用性会降低; 增加了系统的复杂性:加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等。因此,需要考虑的东西更多,复杂性增大。 3.rabbitmq 的使用场景(1)服务间异步通信 (2)顺序消费 (3)定时任务 (4)请求削峰 4.RabbitMQ基本概念Broker: 简单来说就是消息队列服务器实体Exchange: 消息交换机,它指定消息按什么规则,路由到哪个队列Queue: 消息队列载体,每个消息都会被投入到一个或多个队列Binding: 绑定,它的作用就是把exchange和queue按照路由规则绑定起来Routing Key: 路由关...