JPA.hibernate.ddl-auto详解
该配置有如下选项:
create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
《刻意练习》1-2章
1万小时定律从来都不存在,只有刻意练习才能成就大师。
我们的身体具有很强的适应能力,这是因为它有一种偏爱稳定性的倾向。它保持稳定的内部温度,保持稳定的血压和心率,并使血糖稳定、PH值平衡。当然这些全都不是完全静态的,如果我们进行锻炼,心率将会加快;如果暴饮暴食,体重会增加但这些都是暂时的,身体最终会回到它原来的模样。不仅是人类,单个细胞也喜欢稳定。它们保留一定的水分,并且通过控制着哪些离子和分子留在细胞膜之内,哪些则排出细胞膜之外的方式,调节正离子和负离子(特别是钠离子和钾离子)以及各种各样小分子的平衡,对我们来说更重要的是,如果要让细胞有效的运转,就需要一个稳定的环境。如果周围的组织过热或者过冷;假设他们的流动水平过快,超出了理想的范围;假如氧气含量下降过快;或者假如能量供应过于缓慢,都会破坏细胞功能的发挥。如果这些变化幅度太大且持续时间过长,细胞就开始死去。
而因体育锻炼而增长的肌肉组织是为了适应锻炼的强度而产生的,这也就意味着如果体育锻炼并非费力到让身体的平衡机制无法正常运行,那么,它基本不会引起身体上的变化。所以想要持续精进就必须走出舒适区, ...
Spring Data JPA
JPA(Java Persistance API)是用于管理Java EE和Java SE环境中的持久化,以及对象、关系映射的Java API。实现该规范的常见的JPA框架有EclipseLink、Hibernate、Apache OpenJPA等。Spring Data JPA作为Spring Data家族的一部分,用于处理对基于JPA的数据访问层的增强支持。
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,其主要目标是使对数据库的访问变得方便快捷,并支持MapReduce框架和云计算数据服务。Spring Data包含多个子项目:
Spring Data Common:提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化。
Spring Data JPA:简化创建JPA数据的访问层和跨存储的持久层功能
Spring Data Hadoop:基于Spring的Hadoop作业配置和一个POJO变成模型的MapReduce作业。
Spring Data Key Value:集成了Redis和Riak,提供多个常用场景下的简单封装。
Sp ...
SpringCloudAlibaba的注册中心Nacos
SpringCloud Alibaba2018年10月31日,SpringCloud Alibaba正式入驻SpringCloud官方孵化器,并在Maven中央库发布了第一个版本。现在SpringCloud Alibaba支持:
服务限流降级:默认支持Servlet、Feign、RestTemplate、Dubbo和RocketMQ限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级Metrics监控
服务注册与发现:适配SpringCloud服务注册和发现标准,默认集成了Ribbon的支持
分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新
消息驱动能力:基于SpringCloud Stream为微服务应用构建消息驱动能力
阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
分布式任务调度:提供秒级、精确、高可靠、高可用的定时(基于Cron表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有Worker(sched ...
Elastic Stack
ElasticSearch ElasticSearch基于Java,是个分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash Logstash基于Java,是一个开源的用于收集,分析和存储日志的工具。
Kibana Kibana基于Node.JS,也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSerach提供的日志分析友好的Web界面,可以汇总,分析和搜索重要数据日志。
Beats Beats是elastic公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给ElasticSearch或者通过Logstash发送给ElasticSearch,然后进行后续的数据分析活动。
Bests由如下组成:
Packetbeat:是一个网络数据包分析器,用于监控,收集网络流量信息Packetbeat嗅探服务器之间的流量,解析应用层协 ...
SpringCloud Gateway
Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5、SpringBoot 2和Project Reactor等技术。Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如反向代理,鉴权,日志,熔断、限流、重试等。Gateway基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。
Gateway的特性
基于Spring 5、ProjectReactor和SpringBoot2.0进行构建。
动态路由:能够匹配任何请求属性。
可以对路由进行指定Predicate(断言)和Filter(过滤器)。
集成Hystrix的断路器功能。
集成Spring Cloud服务发现功能。
易于编写Predicate(断言)和Filter(过滤器)。
请求限流功能。
支持路径重写。
Gateway和Zuul的对比 在Zuul 1.X的时候采用的是Tomcat容器,使用的是传统的Servlet IO处理模型。而servlet的生命周期是由servlet cont ...
服务雪崩与Hystrix
服务雪崩 多个微服务之间相互调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C有调用其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”
对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障延迟进行隔离和管理,以便单个依赖关系的失败不能取消整个应用程序或系统。所以当一个模块下的某个实例失败后,这时候这个模块仍然还会接收流量,然后这个有问题的模块还调用了其他的模块,这样就会发生级联故障,或者叫雪崩。
Hystrix Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布 ...
微服务注册中心Eureka
Eureka采用CS的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员就可以通过Eureka Server来监控系统中哥哥微服务是否正常运行。
在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息比如服务器地址通讯地址等以别名方式注册到注册中心上。另一方面(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后在实现本地RPC(Remote Produce Call远程过程调用)调用RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务于服务之间的一个依赖关系(服务治理概念)。在任何RPC远程框架汇总,都会有一个注册中心(存放服务地址相关信息(接口地址))。
Eureka简介Eureka Server提供服务注册服务,各个微服务节点通过配置启动后,会在Eureka Server中进行注册,这样Eureka Server中的注册服务表中将会存储所有可用服务街 ...
《浪潮之巅》第16章
一家在某一领域特别成功的大公司一定已经被优化得非常适应这个市场,它的企业文化、做事方式、商业模式、市场定位等已经甚至过分适应传统的市场。这些使得该公司获得成功的内在因素会渐渐地深深植入该公司,可以说成了这家公司的基因。当这家公司在海外发展分公司时,他首先会将这些基因带到新的地方。克隆出一个新的公司。微软在中国的分公司一定还是微软的风格,中国的Google一定继承了Google的文化。同时,它们又都像美国公司,而不是日本公司。类似地,当这家公司开拓新领域时,它也会按照自己的基因克隆新部门。遗憾的是,适应现有市场的基因未必适合新的市场。
一家公司的基因是在市场竞争中进化出来并且适应该市场的企业文化(做事方式)、管理方法、产品市场定位、商业模式和营销方式,等等。一家公司在早期,一切还是一张白纸的时候,基因还有改变的可能。红杉资本认为一家公司的基因在创办的三个月内就定型了,这也许有些夸张,但是一家成型的公司改变基因的可能性确实很小,越是以前成功的公司,月容易相信自己固有的基因是优秀的。
当一家公司还没有占到市场的50%,并且仍在高速发展时,它不会涉及转型的问 ...
thymeleaf中的链接写法
1<a th:href="@{/question/{id}(id=${question.id})}">
id代表变量,左边的大括号来给id赋值