随笔分类 -  7.后端基础

摘要:AOP(Aspect-Oriented Programming),面向切面编程。 一些系统层面的服务(例如安全、日志、事务),这些与业务逻辑无关的服务如果直接写在业务流程中,这样会使得业务流程到处都是这些服务代码,繁琐难维护,混淆业务本身的职责,还不容易剔除。 AOP的编程思想,是与业务逻辑无关的动 阅读全文
posted @ 2018-05-20 02:33 海角在眼前 阅读(418) 评论(0) 推荐(0) 编辑
摘要:控制反转(Inversion of Control)即IoC,是一种模式,Spring的核心概念。 依赖注入(Dependency Injection)是实现IoC的一种方式。 控制反转 在传统模块调用,高层服务模块直接调用底层服务模块,高层模块对底层模块产生依赖,更换底层模块会导致高层模块需要跟着 阅读全文
posted @ 2018-05-19 16:41 海角在眼前 阅读(751) 评论(0) 推荐(0) 编辑
摘要:前言 了解什么是分布式,得先了解应用系统的分层和分割。 分层 分层是将系统在横向维度上切分成几个部分,每个部分负责比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。网站软件系统可分层为应用层、服务层、数据层。 应用层:负责具体业务和视图展示。(可再细分为视图层和业务逻辑层) 服务层: 阅读全文
posted @ 2018-05-13 13:26 海角在眼前 阅读(591) 评论(0) 推荐(0) 编辑
摘要:负载均衡 负载均衡是部署有相同应用的服务器组成的一个集群,每次用户请求都可以发送到集群中任意一台服务器上去处理,任何一台服务器处理结果都是相同的。 负载均衡服务器是一个HTTP请求分发装置,能感知或配置集群的服务器数量,及时发现集群中上线、下线的服务器,并将请求分发到上线的服务器。 实现负载均衡有5 阅读全文
posted @ 2018-05-12 22:40 海角在眼前 阅读(602) 评论(0) 推荐(0) 编辑
摘要:背景 当站点的规模不断膨胀,这给数据库带来巨大的查询压力,单单数据库性能优化已经是不够的,需对数据库进行伸缩扩展。有三种方式: 1、数据库主从 2、数据表分库(垂直分区) 3、数据分区(水平分区) PS:事实上,很多大规模的站点基本上经历了从简单主从复制到垂直分区,再到水平分区的步骤。 数据库主从 阅读全文
posted @ 2018-05-12 14:33 海角在眼前 阅读(393) 评论(0) 推荐(0) 编辑
摘要:例子 当我们访问Facebook网站,需要代理服务器A(翻/墙)才能够访问。当代理服务器A访问Facebook,Facebook也不老实,用代理服务器B来隐藏自己的后端服务器,A访问的是B。 A:正向代理 B:反向代理 图例 在知乎中看正向代理与反向代理的解释,有张图觉得解释不错,但可能导致误解,于 阅读全文
posted @ 2018-05-11 00:22 海角在眼前 阅读(449) 评论(0) 推荐(1) 编辑
摘要:背景 如果资源服务器只是提供资源给自己的应用,使用帐号密码做身份认证倒没什么问题,但如果需要提供资源给第三方应用,就会出现第三方应用需要与资源服务器共享身份凭证,这时会出现几个问题: 1、第三方应用需要存储用户的帐号密码(资源服务器的)。 2、第三方越权使用资源,资源服务器无法控制。 3、无法撤销第 阅读全文
posted @ 2018-05-08 22:35 海角在眼前 阅读(385) 评论(0) 推荐(0) 编辑
摘要:Tomcat结构 Server(服务器) 服务器代表整个Tomcat容器。 Tomcat提供了服务器接口的默认实现(很少由用户定制)。 Service(服务) 服务是位于服务器内部的中间组件,将一个或多个连接器(Connector)绑定到一个引擎(Engine)。默认实现很简单且足够,很少由用户自定 阅读全文
posted @ 2018-05-05 16:18 海角在眼前 阅读(297) 评论(0) 推荐(0) 编辑
摘要:JVM(Java Virtual Machine),Java虚机机,是JDK最底层的东西。只要能将源代码编译成字节码(.class)文件,就可以由JVM在不同平台上解释成机器指令来执行。所以,Java语言的平台无关性,实际上是因为有不同平台下的JVM的支持。 自动内存管理机制 Java程序的内存分配 阅读全文
posted @ 2018-05-04 23:09 海角在眼前 阅读(2080) 评论(1) 推荐(1) 编辑
摘要:ArrayList 实现原理:由数组实现的。元素有序,允许重复。 //其中增长长度的方法,可以看到是创建一个新数组,传入旧数组和新的数组长度。 private void grow(int minCapacity) { // overflow-conscious code int oldCapacit 阅读全文
posted @ 2018-04-29 21:37 海角在眼前 阅读(243) 评论(0) 推荐(1) 编辑
摘要:1、数组 概念:一个存储元素的线性集合。 数组声明和创建: 二维数组(多维数组)声明和创建: PS:数组长度必现确定的。 2、列表 概念:列表是一组有序的数据。 常用实现:ArrayList、LinkedList。 3、栈 概念:栈是一种后入先出的数据结构。 常见实现:Stack(java.util 阅读全文
posted @ 2018-04-28 22:43 海角在眼前 阅读(242) 评论(0) 推荐(0) 编辑
摘要:Java加密算法有三种: 1、单向加密算法 2、对错加密算法 3、非对称加密算法 单向加密算法 单向加密是不可逆的加密算法,加密的密文不能解密,常见的算法有MD5、SHA、HMAC。 MD5(信息摘要算法) 无论多长数据最后都编码成128位数据,同样数据一直一致。 用途:可用做文件校验、密码加密、散 阅读全文
posted @ 2018-04-27 21:38 海角在眼前 阅读(526) 评论(3) 推荐(0) 编辑
摘要:JDK与JRE JDK(Java Development Kit):Java开发工具包。包含JRE中的所有内容,以及用于开发小应用程序和应用程序的编译器和调试器等工具。 JRE(Java Runtime Environment):Java运行时环境。提供库、Java虚拟机和其他组件来运行Java编程 阅读全文
posted @ 2018-04-26 20:39 海角在眼前 阅读(294) 评论(0) 推荐(0) 编辑
摘要:String对象是字符串常量(创建之后不可更改),StringBuilder和StringBuffer对象是字符串变量(可更改),三者主要区别在于执行速度和线程安全。 执行速度 执行速度:StringBuilder > StringBuffer > String 原因: String对象的更改会不断 阅读全文
posted @ 2018-04-25 21:23 海角在眼前 阅读(270) 评论(0) 推荐(0) 编辑
摘要:前言 线程间的通信主要通过共享对字段的访问和对象引用字段的引用,可能会产生两种错误,线程干扰和内存一致性错误。Java的同步就是防止这些错误,但当多个线程访问同一资源会导致线程执行缓慢,甚至暂停执行。 线程干扰(Thread Interference) 例子 class Counter { priv 阅读全文
posted @ 2018-04-24 23:25 海角在眼前 阅读(4365) 评论(0) 推荐(0) 编辑
摘要:断言(Assertion)是Java中一条语句,包含一个布尔表达式,当该布尔值为真,程序则被认为是正确的;当布尔值为假,则系统会抛出错误。 断言默认禁用的,在开发时候可开启功能,有利于纠正错误,增加可维护性。 PS:断言,换句话就是 立flag,false则啪啪啪打脸。 断言两种语句形式 Expre 阅读全文
posted @ 2018-04-23 21:39 海角在眼前 阅读(9950) 评论(0) 推荐(0) 编辑
摘要:strictfp关键字 用于强制Java中的浮点计算(float或double)的精度符合IEEE 754标准。 不使用strictfp:浮点精度取决于目标平台的硬件,即CPU的浮点处理能力。 使用strictfp:确保浮点计算的结果在所有平台上始终保持相同。 使用地方 可用在类、接口、方法。 注意 阅读全文
posted @ 2018-04-22 18:02 海角在眼前 阅读(413) 评论(0) 推荐(0) 编辑
摘要:JNI能让Java代码在Java虚拟机里调用其他编程语言(例如C、C++)写的应用或库,且不会影响任何Java虚拟机的实现。 什么时候用JNI? 1、应用程序所需的平台相关功能,标准的Java类库不支持时。 2、已经有一个用其他语言写的库,想要复用时。 3、想使用一些低级别的语言(例如汇编)实现部分 阅读全文
posted @ 2018-04-22 13:47 海角在眼前 阅读(417) 评论(0) 推荐(0) 编辑
摘要:什么是序列化? 我们创建的对象只有在Java虚拟机保持运行时,才会存在于内存中。如果想要超出Java虚拟机的生命周期,就可以将对象序列化,将对象状态转换为字节序列,写入文件(或socket传输),后面使用时再读入文件,读入原始字节并创建一个完全相同的对象。 PS:只有对象的状态会被序列化,类本身或方 阅读全文
posted @ 2018-04-20 22:30 海角在眼前 阅读(394) 评论(0) 推荐(0) 编辑
摘要:抽象类与接口比较 抽象类跟接口类似,都不能实例化,可能包含不需实现方法或已实现的方法。 抽象类可以定义一些不是静态或常量的字段,定义 public, protected, private访问级别的具体方法。 接口的所有字段自动是public、静态、常量,所有定义的方法的访问级别都是public。 类 阅读全文
posted @ 2018-04-19 20:51 海角在眼前 阅读(760) 评论(0) 推荐(0) 编辑