编码和解码
编码与解码什么是编码与解码电脑是由电路板组成,电路板里面集成了无数的电阻和电容, 交流电经过电容的时候,电压比较低 记为低电平 ,用0表示,交流电流过电阻的时候,电压比较高,记为高电平,用1来表示; 所以每一个1 和0 在计算机中被称为 位,也就是bit位。然而,如果使用一个位来表示计算机中的最小存储单元, 那么这个存储单元只能存储0或者1,存储的范围太小了,所以我们规定用用8个bit位为一组 来表示 计算机的最小存储单元。 8个位 每个位上能存储0或者1,则byte的存储范围则是 00000000-11111111(换算成整数即0-255)。 这个最小存储单元 就是byte 字节。
计算机的底层只能存储0和1,如果是日常生活中遇到的数字 比如 127 ,这个可以通过10进制和二进制的转换从而让计算机存储01111111,但是如果计算机存储类似于汉字、英文字符、符号字符等内容,是如何存储的呢?
根据上图解释说明,计算机提供了很多的编码表记录了字符和数字的一一对应关系,编码就是把字符对应编码表中的码值存储在电脑中,而解码则是把码值在编码表中的对应的字符展现出来。
注意:计算机中存 ...
Vue从入门到放弃
Vue.js课程介绍什么是Vue.js
Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于Weex)
Vue.js 是前端的主流框架之一,和Angular.js、React.js 一起,并成为前端三大主流框架!
Vue.js 是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。(Vue有配套的第三方类库,可以整合起来做大型项目的开发)
前端的主要工作?主要负责MVC中的V这一层;主要工作就是和界面打交道,来制作前端页面效果;
为什么要学习流行框架
企业为了提高开发效率:在企业中,时间就是效率,效率就是金钱;
企业中,使用框架,能够提高开发的效率;
提高开发效率的发展历程:原生JS -> Jquery之类的类库 -> 前端模板引擎 -> Angular.js / Vue.js(能够帮助我们减少不必要的DOM操作;提高渲染效率;双向数据绑定的概念【通过框架提供的指令,我们前端程序员只需要关心数据的 ...
Shiro从入门到放弃
权限概述什么是权限 权限管理,一般指根据系统设置的安全策略或者安全规则,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。
权限管理在系统中一般分为:
访问权限
一般表示你能做什么样的操作,或者能够访问那些资源。例如:给张三赋予“店铺主管”角色,“店铺主管”具有“查询员工”、“添加员工”、“修改员工”和“删除员工”权限。此时张三能够进入系统,则可以进行这些操作
数据权限
一般表示某些数据你是否属于你,或者属于你可以操作范围。例如:张三是"店铺主管"角色,他可以看他手下客服人员所有的服务的买家订单信息,他的手下只能看自己负责的订单信息
认证概念什么是认证 身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和密码,看其是否与系统中存储的该用户的用户名和密码一致,来判断用户身份是否正确。例如:密码登录,手机短信验证、三方授权等
认证流程
关键对象 上边的流程图中需要理解以下关键对象:
Subjec ...
互联网电商系统的演进过程
业务模式演进发展历程萌芽期(96-99)
96年:国家信息化领导小组成立
97年4月:各省成立信息化小组
97年12月:中国化工网B2B上线
98年3月:第一笔互联网交易完成 (个人第一笔交易经历?)
98年11月:腾讯成立
99年5月:8848网成立
99年8月:易趣网
99年9月:阿里巴巴
99年11月:当当网
发展期(00-10)
00年4月:慧聪网B2B
00年5月:卓越网(现:亚马逊中国)开启B2C模式
00年6月:中国电子商务协会成立
01年:13所高校开启电子商务专业
01年11月:8848暂停电子商务
02年3月:eBay收购易趣33%的股份
02年10月:阿里实现收支平衡
03年5月:淘宝网成立,C2C
03年6月:eBay全盘收购易趣C2C
03年10月:阿里推出支付宝
03年12月:慧聪网香港上市
04年1月:京东涉足电子商务
04年8月:亚马逊收购卓越
05年9月:腾讯推出拍拍网(拍拍网的使用经历?)
06年5月:淘宝推出淘宝商城
07年11月:阿里巴巴登陆香港证券市场
08年:经济危机部分严重依赖外贸的电商倒闭
09年6月:当当宣布首季盈利
10年1月:苏宁 ...
Nginx
Nginx基础回顾
nginx 到底是什么? Nginx 是⼀个⾼性能的HTTP和反向代理web服务器,核⼼特点是占有内存少,并发能⼒强
Nginx ⼜能做什么事情(应⽤场景)
Http服务器(Web服务器) 性能⾮常⾼,⾮常注重效率,能够经受⾼负载的考验。 ⽀持50000个并发连接数,不仅如此, CPU和内存的占⽤也⾮常的低, 10000个没有活动的连 接才占⽤2.5M的内存。
反向代理服务器
正向代理
在浏览器中配置代理服务器的相关信息,通过代理服务器访问⽬标⽹站,代理服务器收到⽬标⽹站的响应之后,会把响应信息返回给我们⾃⼰的浏览器客户端
反向代理 浏览器客户端发送请求到反向代理服务器(⽐如Nginx),由反向代理服务器选择原始 服务器提供服务获取结果响应,最终再返回给客户端浏览器
负载均衡服务器 负载均衡,当⼀个请求到来的时候(结合上图), Nginx反向代理服务器根据请求去找到⼀个 原始服务器来处理当前请求,那么这叫做反向代理。那么,如果⽬标服务器有多台(⽐如上 图中的tomcat1, tomcat2, tomcat3…),找哪⼀个 ...
SpringBoot之Test
JUnit5 的变化Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库
作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
JUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。
JUnit Jupiter: JUnit Jupiter提供了JUnit5的新的编程模型,是JUnit5新特性的核心。内部 包含了一个测试引擎,用于在Junit Platform上运行。
JUnit Vintage: 由于JUint已经发展多年,为了照顾老的项目,JUnit Vintage提供了兼容JUnit4.x,Junit3.x的测试引擎。
注意:
SpringBoot 2.4 以上版本移除了默认对 Vintage 的依赖。如果需要兼容junit4需要自行引入(不能使用junit4的功能 @Te ...
SpringBoot-指标监控
SpringBoot Actuator简介未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
1.x与2.x的不同
如何使用
引入场景
访问 http://localhost:8080/actuator/**
暴露所有监控信息为HTTP
management:
endpoints:
enabled-by-default: true #暴露所有端点信息
web:
exposure:
include: '*' #以web方式暴露
测试
http://loca ...
SpringBoot-web
SpringMVC自动配置概览Spring Boot provides auto-configuration for Spring MVC that works well with most applications.(大多场景我们都无需自定义配置)
The auto-configuration adds the following features on top of Spring’s defaults:
Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans.
内容协商视图解析器和BeanName视图解析器
Support for serving static resources, including support for WebJars (covered later in this document)).
静态资源(包括webjars)
Automatic registration of Converter, GenericConverter, and Formatter b ...
SpringBoot-缓存管理
默认缓存管理Spring框架支持透明地向应用程序添加缓存对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法,从而减少操作数据的执行次数,同时不会对程序本身造成任何干扰。Spring Boot继承了Spring框架的缓存管理功能,通过使用@EnableCaching注解开启基于注解的缓存支持,Spring Boot就可以启动缓存管理的自动化配置。
接下来针对Spring Boot支持的默认缓存管理进行讲解
基础环境搭建准备数据
使用创建的springbootdata的数据库,该数据库有两个表t_article和t_comment
创建项目,功能编写
(1)在Dependencies依赖选择项中添加SQL模块中的JPA依赖、MySQL依赖和Web模块中的Web依赖
(2)编写数据库表对应的实体类,并使用JPA相关注解配置映射关系
importjavax.persistence.*;
@Entity(name="t_comment") //设置ORM实体类,并指定映射的表名
public class Comment{
@Id //表明映射对应的主键id
@Gen ...
SpringBoot-数据访问
SpringData是Spring提供的一个用于简化数据库访问、支持云服务的开源框架。它是一个伞形项目,包含了大量关系型数据库及非关系型数据库的数据访问解决方案,其设计目的是使我们可以快速且简单地使用各种数据访问技术。Spring Boot默认采用整合SpringData的方式统一处理数据访问层,通过添加大量自动配置,引入各种数据访问模板xxxTemplate以及统一的Repository接口,从而达到简化数据访问层的操作。
Spring Data提供了多种类型数据库支持,对支持的的数据库进行了整合管理,提供了各种依赖启动器,接下来,通过一张表罗列提供的常见数据库依赖启动器,如表所示。
名称
描述
spring-boot-starter-data-jpa
使用Spring Data JPA与Hibernate
spring-boot-starter-data-mongodb
使用MongoDB和Spring Data MongoDB
spring-boot-starter-data-neo4j
使用Neo4j图数据库和Spring Data Neo4j
sp ...
SpringBoot-基本使用
SpringBoot基础回顾约定优于配置BuildAnythingwithSpringBoot:SpringBootisthestartingpointforbuildingallSpring-basedapplications.SpringBootisdesignedtogetyouupandrunningasquicklyaspossible,withminimalupfrontconfigurationofSpring.
上面是引自官网的一段话,大概是说:Spring Boot是所有基于Spring开发的项目的起点。SpringBoot的设计是为了让你尽可能快的跑起来Spring应用程序并且尽可能减少你的配置文件。
约定优于配置(Convention over Configuration),又称按约定编程,是一种软件设计范式。本质上是说,系统、类库或框架应该假定合理的默认值,而非要求提供不必要的配置。比如说模型中有一个名为User的类,那么数据库中对应的表就会默认命名为user。只有在偏离这一个约定的时候,例如想要将该表命名为person,才需要写有关这个名字的配置。比如平时架构师 ...
RocketMQ架构与实战
1. RocketMQ的使用场景
应用解耦
系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、 物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。
流量削峰
应用系统如果遇到系统请求流量的瞬间猛增,有可能会将系统压垮。有了消息队列可以将大量请求缓存起来,分散到很长一段时间处理,这样可以大大提到系统的稳定性和用户体验。举例:业务系统正常时段的QPS如果是1000,流量最高峰是10000,为了应对流量高峰配置高性能的服务器显然不划算,这时可以使用消息队列对峰值流量削峰 。
数据分发
通过消息队列可以让数据在多个系统之间进行流通。数据的产生方不需要关心谁来使用数据,只需要将数据发送到消息队列,数据使用方直接在消息队列中直接获取数据即可 。
2. RocketMQ 部署架构RocketMQ的角色介绍
Producer:消息的发送者;举例:发信者
Consumer:消息接收者;举例:收信者
Broker:暂存和传输消息;举例:邮局
NameServer:管理Broker; ...