`
文章列表

负载均衡

一  1: 面对大量用户,高并发,高效率语言,大型数据库。当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题   2: 集中式 和 分布式  单机网站 : 应用在一台机器中 分布式 : 将应用部署到多台机器中   3: 负载均衡 : 将负载进行平衡,分摊到多个操作单元    二 负载均衡的原理 1 : 纵向和衡向扩展   2 :   应用集群 : 将同一个应用部署到多台机器上,组成处理集群,接受负载均衡设备的请求。   3:    负载均衡设备,将用户访问的请求,根据负载均衡算法,发送到集群中的一台服务器   ...

hbase

1 :是nosql ,面向列的数据库, 物理表   表结构由下面几部分组成 2 :   rowkey   3 :列族   4:   列标示符   5:   版本号
1.引入pom依赖(如果没用maven的话,自行引入jar包吧)   2.在容器中配置RedisTemplate实例   3: 客户端实现类  

redis 缓存

Redis与Memcached 1:  value 值 Redis 支持的值比较多 支持: 字符串、列表、集合、散列、有序集合     2: 网络IO模型 Redis 是单线程 Memcached是多线程,非阻塞   3:内存管理方面    Redis使用现场申请内存的方式来存储数据    Memcached使用预分配的内存池的方式   4: 磁盘管理 memcached 不支持写入磁盘   5:  聚合函数 redis的聚合数据可以是整数或浮点 memcached 只能是整数   使用场景 1.Redis使用最佳方式是全部数据in-memory。 ...

设计模式

1: 装饰者模式 包装一个对象,已提供新的行为   2: 迭代器模式 访问一个集合,而不暴露集合的实现   3: 策略模式 封装可以相互的行为,并使用委托在行为之间切换   4:代理模式 包装对象,以控制对此对象的访问   5: 工厂模式 由子类决定要创建的具体类是哪一个   6:抽象工厂 运行创建一个家族,而无需指定他们的具体类   7:适配器 封装对象,并提供不同的接口   8:观察者模式   9:单例 只创建一个对象   10:模板方法 由子类决定如何一个算法的步骤    

mysql 查询优化

一  优化数据访问   1:查询需要的记录  (可以在查询最后 加上 limit 10)   2:  多表关联时返回全部列  (只取需要的列)   3:  总是取出全部列 (select * 会带来额外的I/0)   二 Mysql 是否在扫描额外的记录   三 重构查询的方式 1 : 一个复杂查询还是多个简单查询 2 : 切分查询  3 : 分解关联查询          

mysql锁和事务

一、数据库锁 1: 共享锁(读锁): 多个客户在同一时刻可以同时读取同一个资源 2: 排他锁(写锁): 一个写锁会阻塞其他的其它的写锁和读锁   二、锁粒度 1: 表锁 : 锁定整张表 2: 行级锁: 锁定行,支持高并发   三、事务 (原子、一致、隔离、持久) 1:本质是一组原子性的sql查询,如果成功执行该组查询的全部语句,那么就执行该组查询。   2: 事务隔离级别:  未提交读: 事务在修改中,即使没有提交,对其它事务也都是可见的。(事务可以读取未提交的数据,脏读) 提交读: 大多数数据库 的 默认设置 , 但不可以重复读   3: 可重复读:mysql ...

java (mapreduce)

一、java mapreduce实现   数据块 1950,0 1950,22 1950,-11 1949,111 1949,78 例如:(1950,0),(1950,22),(1950,-11),(1949,111),(1949,78) 求每年的最大值   伪代码 map函数 public void map(LongWritable key,Text value,Context context) {            String line = value.toStirng();                         context.write ...

排序算法时间度

    博客分类:
  • JAVA
排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n) 选择排序 O(n2) O(n2) 稳定 O(1) 二叉树排序 O(n2) O(n*log2n) 不稳定 O(n) 插入排序 O(n2)

显示锁

    博客分类:
  • JAVA
1 : jdk1.5 增加了一种新的机制,ReentrantLock  2 :    Lock 与 ReetrantLock  : 提供了一种无条件,可轮询,定时的以及可中断的锁获取操作,所有加锁和解锁的方式都是显示的。 3: 内置锁无法实现非阻塞结构的加锁规则 4:    显示锁可以有效的避免死锁情况。 5:    ReentrantLock的构造函数中提供了两种公平性选择。非公平的锁和公平的锁(当持有锁的时间比较长的时候,可以使用) 6:   一般当内置锁 不满足要求时,再使用显示锁,显示锁在使用自己加锁和释放锁不安全。 7:  读写锁 一个资源可以被多个读操作访问,或者被一 ...

结构化并发

    博客分类:
  • JAVA
1: Executor 框架  任务是一组工作单元,而线程是使任务异步执行的机制。   2:任务调度: ScheduledThreadPoolExcutor 类提供了任务调度。   3:Callable和future 是可以带返回值    

java并发容器

    博客分类:
  • JAVA
一: 同步容器都是线程安全的 如vector 和 hashtable ,collections.synchronized 实现线程安全的是通过,将它们的状态封装起来,并对每个公有方法都进行同步。但在一些复合操作时,还是要加锁来保护复合操作。在容器在迭代过程中被修改时,会抛异常   二: 并发容器可以改进一下同步容器的性能: 因为并发容器增加了对一些常见复合操作的支持,迭代器都没有加锁。   1、ConcurrentMap , CopyOnWriteArrayList  2、jdk 1.5 新增容器 :Queue、BlockingQueue   三:ConcurrentMap ...

class 加载

    博客分类:
  • JAVA
一: 类加载的时机  1:   加载 java虚拟机中并没有进行强制约束 2:初始化时机,只有下面5种情况,new关键字,反射调用,继承,虚拟机主类的main,动态语言句柄(groovy)   二: 过程  1:  加载 : 将类全限定名生成class,将class文件存储内容加载内存中,方法区中生成Class对象 2:  验证 : 看看虚拟机版本是否满足  3:  准备 : 初始化类变量 4:  解析 : 将常量池中的符号引用,改变为直接引用 5:  初始化  根据程序员设置去初时化变量 6:  使用 7:卸载   三、类加载器 用于实现类加载动作,可以比较两个 ...

class 文件格式

    博客分类:
  • JAVA
一: class 文件是一组以8位字节为基础的二进制流。   二: class 文件格式 包含两种数据类型: 无符号数 : u1 ,u2,u4,u8 代表1个字节、2个字节、4个字节、8个字节的无符号数 表: _info 结尾来表示   包含以下数据项 1: 魔数 (判断是否可以被虚拟机支持)和 版本   2: 常量池 (最大的数据项,也是第一使用表类型数据项)  常量池的容量: 技术不是从1,而是从0开始的 常量池主要放两个类常量: 字面量和符号引用   3: 访问标示 用于识别一些类或者接口层次的访问信息 : public 、 private 、abstra ...

调优分析

    博客分类:
  • JAVA
1、高性能硬件上的程序部署策略 : 问题: 在部署上,使用过大的堆内存进行回收时带来的长时间的停顿。   原因:对像的生存周期都应该是请求级或者页面级。能实现在超大堆中正常使用而没有full gc,使用超大堆内存时,网站响应速度才会比较有保证。在使用超大堆的前提是有把握把应用程序的full gc控制足够低。   方法:通过32位jdk集群,每个进程2GB。 通过apache 服务作为前端代理。要求响应速度高,可以使用cms收集器进行垃圾回收。     2、集群间同步导致的内存溢出 问题 : 在集群中使用全局缓存时,出现内存溢出   原因: 当请求特别多的时候,导致集群各 ...
Global site tag (gtag.js) - Google Analytics