- 博客(35)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注
转载 Mysql数据库常用分库和分表方式
1 分库1.1 按照功能分库 按照功能进行分库。常见的分成6大库: 1 用户类库:用于保存了用户的相关信息。例如:db_user,db_system,db_company等。 2 业务类库:用于保存主要业务的信息。比如主要业务是笑话,用这个库保存笑话业务。例如:db_joke,db_temp_joke等。 3 内存类库:主要用Mysql的内存引擎。前台的
2017-10-17 16:06:56 413
转载 谈谈MySQL水平扩展--分库分表
转载:http://www.gpfeng.com/?p=657&utm_source=tuicool14年中换了一份工作,出国游荡了一阵子,目前工作离数据库内核远了点,离业务近了些,业务层面碰到的‘高深’技术问题也少了,旅行后发现人也懒了不少,导致博客都长草了2015开始了,先表态一下目标:我2015年的目标就是搞定2014年那些原定于2013年完成的安排,不为别的,只为兑现我20
2017-10-17 15:49:29 1425
转载 Redis的缓存策略和主键失效机制
作为缓存系统都要定期清理无效数据,就需要一个主键失效和淘汰策略。1.EXPIRE主键失效机制在Redis当中,有生存期的key被称为volatile,在创建缓存时,要为给定的key设置生存期,当key过期的时候(生存期为0),它可能会被删除。(1)影响生存时间的一些操作生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET
2017-10-16 14:06:19 401
转载 Redis不同数据类型的的数据结构实现
我们知道Redis支持五种数据类型,分别是字符串、哈希表(map)、列表(list)、集合(set)和有序集合,和Java的集合框架类似,不同数据类型的数据结构实也是不一样的。1.Redis中的redisObject对象Redis是使用C编写的,内部实现了一个struct结构体redisObject对象,通过结构体来模仿面向对象编程的“多态”,作为一个底层的数据支持
2017-10-16 14:05:33 304
转载 Redis笔记(八)Redis的持久化
Redis相比Memcached的很大一个优势是支持数据的持久化,通常持久化的场景一个是做数据库使用,另一个是Redis在做缓存服务器时,防止缓存失效。Redis的持久化主要有快照Snapshotting和AOF日志文件两种方式。前者会根据配置的规则定时将内存中的数据持久化到硬盘上,后者则是在每次执行写命令之后将命令记录下来。 RDB方式Re
2017-10-16 14:04:47 324
转载 Redis笔记(七)Java实现Redis消息队列
这里我使用Redis的发布、订阅功能实现简单的消息队列,基本的命令有publish、subscribe等。在Jedis中,有对应的java方法,但是只能发布字符串消息。为了传输对象,需要将对象进行序列化,并封装成字符串进行处理。使用Redis实现消息队列 封装一个消息对象123456
2017-10-16 14:03:53 530
转载 Redis笔记(六)Redis的消息通知
Redis的消息通知可以使用List类型的LPUSH和RPOP(左进右出),当然更方便的是直接使用Redis的Pub/Sub(发布/订阅)模式。1.使用List实现队列使用列表类型的LPUSH和RPOP命令(或者RPUSH和LPOP命令,右进左出),可以很方便的实现一个任务队列,但是需要设置定时去查询队列,并且可以使用对应的阻塞命令,如LPUSH和BRPOP命令,可以实
2017-10-16 14:03:12 706
转载 Redis笔记(五)Redis的事务
1.关系型数据库的事务事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。Atomic(原子性): 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。Consistency(一致性):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。Isolat
2017-10-16 14:02:19 265
转载 Redis笔记(三)Redis的数据类型
前面说过,Redis的一大特性是支持丰富的数据类型,这为更多的应用场景提供了可能。Redis有五种数据类型,包括string,list,set,sorted set和hash,注意,Redis的数据类型不支持嵌套。下面学习一下这五种数据类型的特点和简单应用。1.String 字符串String 数据结构是简单的 key-value 类型,value 不仅可以
2017-10-16 14:01:35 337
转载 Redis笔记(一)Redis简介
关于RedisRedis是一款开源的高性能键值对数据库,最初的作者是意大利的Salvatore Sanfilippo,他的github是 antirez ,Redis的源码同样托管在Git上:https://github.com/antirez/redis。目前,Vmware在资助着redis项目的开发和维护。Redis的特性键值对如dict["key"]="value
2017-10-16 13:59:25 281
转载 Redis、Memcache和MongoDB的区别
>>MemcachedMemcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。支持直接配置为session handle。Memcached的局限性:只支持简单的key/value数据结构,不像Redis可以支持丰
2017-10-16 13:57:42 374
转载 缓存穿透和缓存失效的预防和解决
缓存穿透:缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,如果有人恶意破坏,很可能直接对DB造成影响,这就失去了缓存的意义。解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采用布隆过滤器,将所
2017-10-16 13:56:45 366
转载 Java语言基础相关的面试题目
1.CGLIB 和 JDK生成动态代理类的区别。JDK动态代理只能对实现了接口的类生成代理,而不能针对类 CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法2.HashMap、HashTable和concurrentHashMap的区别,HashMap的底层实现。1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步H
2017-10-15 23:54:27 281
转载 数据库和MySQL相关面试题目
数据库理论1.触发器的作用?触发器是一种特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。2.什么是存储过程?用什么来调用?存储过程是一个预编译的SQL语句,优点是允许模块化
2017-10-15 23:39:31 486
转载 Java并发编程相关面试问题
基础概念1.什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。在Java中可以通过锁和循环CAS的方式来实现原子操作。 CAS操作——Compare & Set,或是
2017-10-15 23:38:31 465
转载 设计模式应用相关面试题目
设计模式理论1.什么是设计模式?你是否在你的代码里面使用过任何设计模式?在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。平时用的比较多有单例模式(在内存中仅实例化一个对象时使用),适配器模式(典型的就是ListView和GridView的适配器),建造者模式(AlertDialog.Builder),观察者模式可
2017-10-13 11:15:55 3525
原创 Zookeeper笔记(三)部署与启动Zookeeper
下载zookeeper安装包去Zookeeper官网,下载地址http://zookeeper.apache.org/releases.html,建议下载稳定版本,我下载的是zookeeper-3.4.6.tar.gz,解压到合适的目录,就可以进行配置和启动。为了操作简便,配置环境变量:#Set ZooKeeper Enviromentexport ZK_HOM
2017-10-13 11:14:47 415
转载 Zookeeper笔记(二)Paxos算法与Zookeeper的工作原理
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。paxos算法Zookeeper 采用paxos一致性算法保证了数据的一致性,Paxos算法是一种基于消息传递且具有高度容错特性的一致性算法。具体的算法不多作介绍,
2017-10-13 11:13:43 418
转载 Zookeeper笔记(一)初识Zookeeper
为什么需要ZookeeperZookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。在解决分布式数据一致性上,Zookeeper已经成为了目前唯一一个比较成熟的方案。Zookeeper致力于提供一个高性能、高可用,且具有严格的顺序访
2017-10-13 11:12:38 387
转载 缓存穿透和缓存失效的预防和解决
缓存穿透:缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,如果有人恶意破坏,很可能直接对DB造成影响,这就失去了缓存的意义。解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采用布隆过滤器,将所
2017-10-13 11:10:57 289
转载 Java开发中程序和代码性能优化
现在计算机的处理性能越来越好,加上JDK升级对一些代码的优化,在代码层针对一些细节进行调整可能看不到性能的明显提升,但是在开发中注意这些,更多的是保持一种性能优先的意识,养成良好的编码习惯。 一 条件控制语句中的优化1.在循环中应该避免使用复杂的表达式。在循环中,循环条件会被反复计算,应该避免把一些计算放在循环进行的部分中,程序将会运行的更快。比如:
2017-10-13 11:07:35 311
转载 MySQL索引失效的几种情况
1.索引不存储null值更准确的说,单列索引不存储null值,复合索引不存储全为null的值。索引不能存储Null,所以对这列采用is null条件时,因为索引上根本没Null值,不能利用到索引,只能全表扫描。为什么索引列不能存Null值?将索引列值进行建树,其中必然涉及到诸多的比较操作。Null值的特殊性就在于参与的运算大多取值为null。这样的话,nul
2017-10-13 11:05:03 2199
转载 Spring MVC笔记 使用JdbcTemplate
Spring提供了 JdbcTemplate 来封装数据库jdbc操作细节, 包括: 数据库连接[打开/关闭] ,异常转义 ,SQL执行 ,查询结果的转换,其中体现了 模板模式 的设计模式思想。使用了Spring JdbcTemplate 之后,开发人员只需要完成其中两项编码工作。指定数据库连接参数打开数据库连接声明SQL语句预编译并执行
2017-10-13 11:03:30 344
转载 《Effective Java》笔记 使类和成员的可访问性最小化
类和接口第13条 使类和成员的可访问性最小化1.设计良好的模块会隐藏所有的实现细节,把它的API与实现清晰的隔离开来,模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况:即信息隐藏或封装,是软件设计的基本原则之一。2.Java提供了许多机制来协助信息隐藏。访问控制(access control)机制决定了类、接口和成员的可访问性(accessi
2017-10-13 11:01:59 273
转载 《Java程序性能优化》学习笔记 JVM和并发优化
第四章 并行程序优化1.非阻塞同步避免了基于锁的同步的缺陷,无锁算法没有锁竞争带来的系统开销,也没有线程间频繁调度带来的开销。CAS算法:包含3个参数CAS(v,e,n)。V表示要更新的变量,E表示预期值,N表示新值2.JDK的java.util.concurrent.atomic包下,有一组使用无锁算法实现的原子操作类,如AtomicInteger/AtomicIntegerAr
2017-10-13 11:00:06 291
转载 《Java程序性能优化》学习笔记 程序优化
这一部分主要介绍代码层的优化。了解如何编写高效而精炼的代码,正确的使用函数方法。1.字符串优化处理Java语言中,String对象可以认为是对char数组的眼神和进一步封装。它主要由3部分组成:char数组、偏移量和String的长度。String对象的三个基本特点:不变性,针对常量池的优化,类的final定义。不变性:是指String对象一旦生成,不能再对它进行改变,即i
2017-10-12 23:16:05 263
转载 《Java程序性能优化》学习笔记 设计优化
豆瓣读书:http://book.douban.com/subject/19969386/ 第一章 Java性能调优概述1.性能的参考指标 执行时间: CPU时间: 内存分配: 磁盘吞吐量: 网络吞吐量: 响应时间:2.木桶定律 系统的最终性能取决于系统中性能表现最差的组件,例如window系统内置的评分就是选取最低分。可能成为系统瓶颈
2017-10-12 23:14:15 323
转载 Stringbuffer与Stringbuilder源码学习和对比
String/StringBuffer/StringBuilder的异同(1)相同点观察源码会发现,三个类都是被final修饰的,是不可被继承的。(2)不同点String的对象是不可变的;而StringBuilder和StringBuffer是可变的查看源码可以发现,StringBuffer的实现都添加了Synchronized同步,因此StringBuffer是线程安全的
2017-10-12 23:13:09 293
转载 Spring中的设计模式学习
Spring提供了一种Template的设计哲学,包含了很多优秀的软件工程思想。1. 简单工厂又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Be
2017-10-12 23:09:38 263
转载 《淘宝技术这十年》读书笔记
很有价值又很好玩的一本书,可以全面的了解淘宝的技术升级路线。豆瓣读书从工程师的角度讲述了淘宝的成长历程,还有几次技术变革的前因后果。1.淘宝的技术升级淘宝建立之初对外是以个人网站作宣传,第一版一个月上线,采用LAMP架构。是修改了国外的一个拍卖系统源码,主要对数据库进行分库,读写分离(存储容量增加,备份,安全性增加,读写效率提升—写要比读更加消耗资源,分开后互不干扰
2017-10-12 23:08:17 484
转载 《Java并发编程实战》学习笔记 任务执行和取消关闭
查看豆瓣读书第六章 任务执行大多数并发应用程序是围绕执行任务进行管理的。设计任务时,要为任务设计一个清晰的任务边界,并配合一个明确的任务执行策略。任务最好是独立的,因为这会提高并发度。大多数服务器应用程序都选择了下面这个自然的任务边界:单个客户请求。任务时逻辑上的工作单元,线程是使任务异步执行的机制。应用程序内部的任务调度,存在多种可能的调度策略:其中,最简单的策略是在
2017-10-12 23:03:18 448
转载 《Java并发编程实战》学习笔记 线程安全、共享对象和组合对象
Java Concurrency in Practice,一本完美的Java并发参考手册。查看豆瓣读书推荐:InfoQ迷你书《Java并发编程的艺术》第一章 介绍线程的优势:充分利用多处理器简化模型简化异步事件的处理提供用户界面的响应(时间)线程的风险:安全的风险(不好的事情会发生),提高错误出现的几率活性的风险(好的事情不会发生),如某
2017-10-12 23:00:16 308
转载 设计模式学习起点 UML类图笔记
UML定义类之间的关系主要有六种:泛化关系、实现关系、依赖关系、关联关系、聚合关系和组合关系。下面分别学习这几种关系。泛化关系(Generalization)使用带空心三角形的实线表示。汽车与SUV之间为泛化关系:泛化关系相当于面向对象中的继承关系。最终代码中,泛化关系表现为继承非抽象类。 实现关系(Emlpementation)使用
2017-10-12 22:58:47 378
转载 Java 内部类笔记
内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类。 类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比。乍
2017-10-12 22:55:43 271
转载 Java多线程编程的常见陷阱
1、在构造函数中启动线程我在很多代码中都看到这样的问题,在构造函数中启动一个线程,类似这样:public class A{ public A(){ this.x=1; this.y=2; this.thread=new MyThread(); this.thread.start(); } }
2017-10-12 22:50:02 294
实验六 SQL 语句综合训练
2012-06-10
实验五 SQL SERVER 完整性与安全性
2012-06-10
实验四 数据更新与视图
2012-06-10
实验三 数据库
2012-06-10
数据库 定义
2012-06-10
数据库实验报告
2012-06-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人