(〇)SpringCloud之SpringCloud是什么
SpringCloud是什么聊SpringCloud之前先聊聊微服务
1、微服务是什么微服务架构是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦
微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。
概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
定义:围绕业务领域组件来创建应用,这些应用可独立地进行开发、管理和迭代。在分散的组件中使用云架构和平台式部署、管理和服务功能,使产品交付变得更加简单。
本质:用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。
2、微服务架构的演变微服务架构不是一下就出来的,而是经过市场的发展,技术的升级而逐渐出现的。
2.1、单体应用
单体应用就是将所有的功能都打包成一个独立的单元。当网站访问量很小是,只需要一个应用,将所有功能部署到一起,以便减少部署节点和成本。
特点:
所有的功能都集成在一个项目 中
所有的功能打包成war包部署到服务器
应用与数据库分开部署 ...
添加Eureka依赖后返回XML而不是JSON数据
添加Eureka依赖后返回的是XML格式的数据而不是JSON格式的数据,是因为Eureka中默认集成了com.fasterxml.jackson.dataformat的jackson-dataformat-xml。XML的优先级比JSON的高,所以会优先返回XML。解决办法1、去除com.fasterxml.jackson.dataformat的jackson-dataformat-xml修改pom中的依赖
1234567891011<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <!--去除jackson-dataformat-xml,否则会返回xml文件,而不是JSON--> <exclusions> <exclusion> & ...
Java的注释真的不会被执行吗?
这个问题也是在别的地方看到的,原标题是《老师,你确定注释不会被执行吗?》。当然,标题不是重点,重点是Java注释真的会被执行吗?
一开始知道这个问题的时候我也是很疑惑,因为不管学习什么编程语言,最开始的时候都会被告知,注释是不会被执行的,那么现在为什么又出现了Java注释会被执行这一个说法。有句话说的好,你以为的只是你以为的,什么地方不清楚,写个程序跑一下就知道了。
话不多少,看代码,看结果
1234567public class Test { public static void main(String[] args) { String str = "啊哈哈"; // \u000d str = "啥也不会的程序员"; System.out.println(str); }}
正常来时,结果应该是打印啊哈哈。但是其实打印的是啥也不会的程序员。为什么结果会是打印啥也不会的程序员呢?既然不清楚,那就分析class文件呗,看看这个java程序被编译成了什么(使 ...
Arrays.asList()真的就把数组转换为了List集合吗?
看面试题的时候,里面提到了这个,之前都是常规的使用,把数组转换为List集合,程序每次也都正常的运行,没在意过这个问题。看到这个问题时直接懵了,难道我之前的使用是错误的吗?后来查了资料确实是有点问题,Arrays.asList()还就真就没把数组转换为List集合,源码底层还是一个数组!。
话不多说。直接上代码,结果才是唯一真理。
再简单不过的一个把数组转换为List集合的例子。
1234567public class ArraysTest { public static void main(String[] args) { String[] strings = new String[]{"张三","李四","王二","麻子"}; List<String> list = Arrays.asList(strings); list.add("啥也不会的程序员"); }} ...
RabbitMQ消息队列的入门使用
1、MQ简介MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据机构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息。(来源:百度百科)
1.1、实现消息队列常常保存在链表结构中,拥有权限的进程可以向消息队列中写入或读取消息。
当前使用较多的消息队列有:RebbitMQ、RocketMQ、ActiveMQ、kafka、ZeroMQ、MetaMq等。而部分数据库也具有消息队列功能的,例如:Redis、Mysql、以及phxsql。
1.2、特点MQ是一种消费者和生产者形式。生产者往消息队列中不断的写入新的消息数据,消费者从消息队列中获取消息数据。MQ和JMS类似,但不同的是JMS是Sun Java 消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。
AMQP:
即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息 队列协议 ...
Redis的入门使用
0、Redis
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis的优势:
性能极高 – Red ...
FreeMarker的简单使用
一、FreeMarker概述FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
FreeMarker 被设计⽤来⽣成 HTML Web ⻚⾯,特别是基于 MVC 模式的应⽤程序,将视图从业务逻辑中抽离处理,业务中不再包括视图的展示,⽽是将视图交给 FreeMarker 来输出。由FreeMarker生成页面,通过模板显示准备的数据。
FreeMarker不是Web应用框架,而是一个Web应用框架的组件。与容器无关,它并不知道HTTP或者Servlet。FreeMarker同样可以应用在非Web应用程序环境中
官网
中文文档
二、FreeMarker的特性1、通用目标FreeMarker可以生成各种文件,,例如HTML、XML、RTF、JAVA源代码等等。
FreeMarker易于嵌入到产品中:轻量级、不需要Servlet环境。
FreeMarker可以从任何源载入模板。
FreeMarker可以按需 ...
Oracle数据库
一、Oracle数据库简介Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
二、了解数据库数据库(DataBase)是按照数据结构来组织、储存和管理数据的仓库。随着市场发展出现了各种的数据库,从最简单的储存有各种数据的表格到进行海量数据存储的大型数据库系统在各个方面得到了广泛的应用。数据库已经成为了数据管理的重要技术
常用的数据库有:MySQL、Oracle、DB2等。数据库又分为小型、中型、大型数数据库
分类
产品
特点
小型
access、foxbase
负载小、用户大概100人以内;成本千元内、对安全性要求不高
中型
sqlServler、MySQL
负载量、日访问量在5000-10000;成本在万元内,满足日常安全要求
大型
syBase、DB2、Oracle
海量 ...