- 浏览: 44770 次
- 性别:
- 来自: 深圳
文章列表
服务器配置
数据库设计以及优化
缓存
数据一致性处理
服务器配置:
集群的环境,每个主机选择apahe 还是nginx,nignx的并发性好。nginx和apche区别 以及服务器的配置,例如缓存大小等
根据实际情况,可能对于图像比较多的情况,单独配置nginx服务器,作为图像服务器。在实习中使用的是七牛家的云存储单独作为图片存储,将有关车辆的上传图片全部放在上面。
数据库设计以及优化
(1)表的设计:
存储引擎:innodb还是 myisam? innodb支持事务外键,可以在崩溃时恢复(事务 ...
工作中遇到的场景,这里写个例子出来,实际应用比此处更为健壮和完善
应用场景:
对一张表10万条数据(或100万或1亿+)进行更新操作或写入操作;
菜鸟是一条一条的执行吧,这显然不行啊
我在实际项目中是这样应用的, 批量更新!当然这显然是不够的 要线程批量更新才对吧!
怎么做呢?
举例1:10万条数据 ,我1000条1000条的处理 就是,10万/1000 = 100 ,
这里我就用100个线程同时处理,每个线程负责1000条数据,这里有个关键点,处理的数据不能重复!
给个代码示例吧:
在开发中需要操作数据库,进行增、删、改操作的过程中属于一次操作,如果在一个业务中需要更新多张表,那么任意一张表的更新失败,整个业务的更新就是失败,这时那些更新成功的表必须回滚,否则业务会出错,这时就要用到事务,即这个业务的操作属于一个事务,事务具有原子性、隔离性、一致性、持续性。这时便用到了事务,事务控制的目的是保证一组操作要么全部成功,要么全部失败。spring提供了对事务的支持,在spring中主要有两种方式使用事务,一、编程式事务控制;二、声明式事务控制。
一、编程式事务控制
所谓编程式事务控制即通过编写代码的方式实现事务的控制。
spring为了方便处理事务,提供了事务管理器,对 ...
前言应用场景
事务必须满足传统事务的特性,即原子性,一致性,分离性和持久性。但是分布式事务处理过程中,
某些场地比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?
在搜索广告系统中,当用户点击某广告后,除了在点击事件表中增加一条记录外,还得去商家账户表中找到这个商家并扣除广告费吧,怎么保证?
一 本地事务以用户A转账用户B为例,假设有
用户A账户表:A(id,userId,amount)
用户B账户表:B(id,
HashMap和Hashtable的区别
两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全
Hashtable的实现方法里面都添加了synchronized关键字来确保线程同步,因此相对而言HashMap性能会高一些,我们平时使用时若无特殊需求建议 ...
java基础
线程池的种类,区别和使用场景分析线程池的实现原理和线程的调度过程线程池如何调优线程池的最大线程数目根据什么确定动态代理的几种方式HashMap的并发问题了解LinkedHashMap的应用吗反射的原理,反射创建类实 ...
1. String——字符串String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshdr 当做字符串)。使用 Strings 类型,可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受 Redis 的定时持久化(可以选择 RDB 模式或者 AOF 模式),操作日志及 Replication 等功能。除了提供与 Memcached 一样的 get、set、incr、decr 等操作外,Redis 还提供了下面一些操作:2. Hash——字典 ...
1、前言
最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据。由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF持久化(原理是将Reids的操作日志以追加的方式写入文件)。那么这两种持久化方式有什么区别呢,改如何选择呢?网上看了大多数都是介绍这两种方式怎么配置,怎么使用,就是没有介绍二者的区别,在 ...
2.1 HashMap
2.1.1 HashMap介绍
先看看HashMap类头部的源码:
public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与
在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:
复制代码 代码如下:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL );
我们随机向里面插入了10000条记录,其中有一条:5555, admin。
在查找username="admin"的记录 SELECT * FROM mytable WHERE username='admin';时,如果在username上已经建立了索引,MySQL无须任何扫描,即准确可找 ...
1)什么是redis?
Redis 是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正)
(2)Reids的特点
Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进 ...
第1章 引言
随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。
水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失;
负载均衡策略:可以降低单台机器的访问负载,降低宕机的可能性;
集群方案:解决了数据库宕机带来的单点数据库不能访问的问题;
读写分离策略:最大限度了提高了应用中读取数据的速度和并发量;
第2章 基本原理和概念
什么是数据切分
...
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。
如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:
⑴ 原子性(Atomicity)
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
⑵ 一致性(Consistency)
一致性是指事务必须使数据库从一个一致性状态变换到另一个一
你用杯子喝可乐,喝完了不刷,继续去倒果汁喝,就是单例。你用杯子喝可乐,直接扔了杯子,换个杯子去倒果汁喝,就是多例。
数据库连接池就是单例模式,有且仅有一个连接池管理者,管理多个连接池对象。
1. 什么是单例多例:所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action;
2. 如何产生单例多例: 在通用的SSH中,单例在spring中是默认的,如果要产生多例,则在配置文件的bean中添加scope="prototype";
3. 为什么用单例多例: ...