Redis详解
一、概述1.1 互联网架构的演变历程
第1阶段
数据访问量不大,简单的架构即可搞定!
第2阶段
数据访问量大,使用缓存技术来缓解数据库的压力。
不同的业务访问不同的数据库
第3阶段
主从读写分离。
之前的缓存确实能够缓解数据库的压力,但是写和读都集中在一个数据库上,压力又来了。
一个数据库负责写,一个数据库负责读。分工合作。愉快!
让master(主数据库)来响应事务性**(增删改)操作,让slave(从数据库)来响应非事务性(查询)**操作,然后再采用主从复制来把master上的事务性操作同步到slave数据库中
mysql的master/slave就是网站的标配!
第4阶段
mysql的主从复制,读写分离的基础上,mysql的主库开始出现瓶颈
由于MyISAM使用表锁,所以并发性能特别差
分库分表开始流行,mysql也提出了表分区,虽然不稳定,但我们看到了希望
开始吧,mysql集群
1.2 Redis入门介绍
互联网需求的3高
高并发,高可扩,高性能
Redis 是一种运行速度很快,并发性能很强,并且运行在内存上的NoSql(no ...
zookeeper详解
一、Zookeeper概述1.1 概述
美团,饿了么,淘宝,58同城等等应用都是zookeeper的现实生活版
老孙我开了个饭店,如何才能让大家都能吃到我们的饭菜?需要入驻美团,这样大家就可以在美团
app中看到我的饭店,下订单,从而完成一次交易
Zookeeper是一个开源的分布式(多台服务器干一件事)的,为分布式应用提供协调服务的Apache项目。
在大数据技术生态圈中,zookeeper(动物管理员),Hadoop(大象),Hive(蜜蜂),Pig(猪)等技术
1.2 工作机制
Zookeeper从设计模式角度来理解:是一个基于观察者模式(一个人干活,有人盯着他)设计的分布式服务管理框架
它负责 存储 和 管理 大家都关心的数据
然后接受观察者的注册,一旦这些数据的发生变化
Zookeeper就将负责通知已经注册的那些观察者做出相应的反应
从而实现集群中类似Master/Slave管理模式
Zookeeper = 文件系统 + 通知机制
商家营业并入驻
获取到当前营业的饭店列表
服务器节点下线
服务器节点上下线事件通知
重新再去获取服务器列表,并注 ...
Dubbo详解
一、Dubbo概述1.1 什么是分布式系统?
《分布式系统原理与范型》定义:
“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”
分布式系统(distributed system)是建立在网络之上的软件系统。
简单来说:多个(不同职责)人共同来完成一件事!
任何一台服务器都无法满足淘宝的双十一的数据吞吐量,一定是很多台服务器公共来完成的。
歇后语:“三个臭皮匠赛过诸葛亮”,就是分布式系统的真实写照
1.1.1 单一应用架构
当网站流量很小时,只需要一个应用,将所有的功能部署到一起(所有业务都放在一个tomcat里),从而减少部署节点和成本;
此时,用于简化 增删改查 工作量的数据访问框架 (ORM)是关键;
例如:某个超市的收银系统,某个公司的员工管理系统
ORM:对象关系映射(Object Relational Mapping)
优点
小项目开发快 成本低
架构简单
易于测试
易于部署
缺点
大项目模块耦合严重 不易开发 维护 沟通成本高
新增业务困难
核心业务与边缘业务混合在一块,出现问题互相影响
1.1.2 垂直应用架构
当访问 ...
LeetCode初级算法之数学问题:412.Fizz Buzz
题目信息
题目地址:https://leetcode-cn.com/problems/fizz-buzz/
写一个程序,输出从 1 到 n 数字的字符串表示。
如果 n 是3的倍数,输出“Fizz”;
如果 n 是5的倍数,输出“Buzz”;
如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
示例:
1234567891011121314151617181920n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz"]
...
SSM整合
1. 需求和步骤分析需求
使用ssm框架完成对 account 表的增删改查操作。
步骤分析
准备数据库和表记录
创建web项目
编写mybatis在ssm环境中可以单独使用
编写spring在ssm环境中可以单独使用
spring整合mybatis
编写springMVC在ssm环境中可以单独使用
spring整合springMVC
2. 环境搭建2.1 准备数据库和表记录123456789CREATE TABLE `account` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL, `money` double DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; insert into `account`(`id`,`name`,`money`) values (1,'tom',1 ...
SpringMVC 进阶
1. ajax异步交互Springmvc默认用MappingJackson2HttpMessageConverter对json数据进行转换,需要加入jackson的包;同时使用 <mvc:annotation-driven />
123456789101112131415<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version></dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.8</ve ...
SpringMVC 入门
1. SpringMVC简介1.1 MVC模式MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑与显示界面的开发思想。
M(model)模型:处理业务逻辑,封装实体
V(view) 视图:展示内容
C(controller)控制器:负责调度分发(1.接收请求、2.调用模型、3.转发到视图)
1.2 SpringMVC概述SpringMVC 是一种基于 Java 的实现 MVC 设计模式的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。
SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越 Struts2,成为最优秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。
总结
SpringMVC的框架就是封装了原来Servlet中的共有行为;例如:参数封装,视图转发等。
1.3 SpringMVC快速入门需求客户端发起请求,服务器接收请求,执行逻辑并进行视图跳 ...
Spring JDBCtemplate&声明式事务
1. Spring的JdbcTemplate主要是学习声明是事务,顺便用下Spring的JdbcTemplate来做演示
1.1 JdbcTemplate是什么?JdbcTemplate是spring框架中提供的一个模板对象,是对原始繁琐的Jdbc API对象的简单封装。
核心对象
1JdbcTemplate jdbcTemplate = new JdbcTemplate(DataSource dataSource);
核心方法
12345int update(); //执行增、删、改语句 List<T> query(); //查询多个 T queryForObject(); //查询一个 new BeanPropertyRowMapper<>(); //实现ORM映射封装
举个栗子
查询数据库所有账户信息到Account实体中
1234567891011public class JdbcTemplateTest { @Test public void testFindAll() throws Exception { // 创建核 ...

