优化
qq_42317239
这个作者很懒,什么都没留下…
展开
-
ribbon
Feign 是 netflix 开发的声明式、模板化的 http 客户端,在使用时就像调用本地(服务消费者自己)的方法一般,帮助我们更加优雅的调用服务提供者的 API。Feign 自身支持 springMVC,还整合了 Eureka、Ribbon,极大的简化了 Feign 的使用。就整合 Euraka 而言,只需和普通的服务配置 Eureka server 的信息即可。整合 Ribbon,就意味着不再需要通过标注@LoadBalanced的实例化后的 RestTemplate 去调用服务提供者方法了原创 2020-10-18 11:55:23 · 89 阅读 · 0 评论 -
eureka
eureka自我保护模式什么是自我保护模式?默认配置下,如果 Eureka Server 每分钟收到心跳续约的数量低于一个阈值(instance 的数量(60/每个 instance 的心跳间隔秒数)自我保护系数),并且持续 15 分钟,就会触发自我保护。在自我保护模式中,Eureka Server 会保护服务注册表中的信息,不再注销任何服务实例。当它收到的心跳数重新恢复到阈值以上时,该 Eureka Server 节点就会自动退出自我保护模式。它的设计哲学前面提到过,那就是宁可保留错误的服务注原创 2020-10-18 11:50:11 · 84 阅读 · 0 评论 -
微服务架构
什么是微服务架构?“微服务”源于 Martin Fowler 的博文 Microservices。Martin 说:微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于 HTTP 的 RESTfulAPI 进行通信协作。被拆分成的每一个小型服务都围绕着系统中的某一项或者某些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协作基础,所以原创 2020-10-17 19:49:53 · 68 阅读 · 0 评论 -
Docker
DockerDocker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。一个完整的 Docker 有以下几个部分组成:DockerClient 客户端Docker Daemon 守护进程 客户端和 Docker 容器交互的媒介Docker Image 镜像 应用程序的模板DockerContainer 容器 启动后的应用程序Docker 调用原理原创 2020-10-17 19:43:23 · 59 阅读 · 0 评论 -
Solr 介绍/ES
倒排索引倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)Solr 是一个独立的企业级搜索应用服务器,它对外提供类似于 Web-service 的 API接口。用户可以通过 http 请求,向搜索引擎服务器提交一定格式的 XML 文件,生成索引原创 2020-10-17 19:34:48 · 148 阅读 · 0 评论 -
消息队列
知道什么是消息队列吗,并说出几种常用的消息队列可以缓解服务器的访问压力,请求在在访问服务器时,先写入消息队列中,可以实现请求的异步操作,起到平峰削骨的作用但是缺点是消耗了用户的实际等待时间.常见的消息队列产品有 activeMQ(apache 的),RabbitMQ(爱立信的)消息队列有几种工作模式1.简单模式 2.工作模式 3.发布订阅模式 4.路由模式5.主题模式 6.RPC 模式...原创 2020-10-17 19:29:03 · 107 阅读 · 0 评论 -
SOA(面向服务)
SOA(面向服务)面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。知道 RPC 协议吗总结:RPC 调用的规则可以传输 java 对象.底层实现时将数据转化流,并且该流经过加密处理.并且 rpc 内部使用 UTF-8 编码格式要求:传输的 java 对象必须序列化原创 2020-10-16 18:17:49 · 147 阅读 · 1 评论 -
ZooKeeper
当 zk 如果宕机后,消费者能否正确消费???说明:答案:可以因为 zk 会动态的向客户端更新服务列表信息.当 zk 宕机后,由于之前已经同步了 zk的服务列表信息,所以客户端可以按照自己已经缓存的清单进行访问.如果在这个期间服务端程序发现宕机现象,那么则访问故障机时由于不能通信,则等待超时时间,则访问下一台服务器.如果这时,所有的服务端程序都宕机,则整个服务陷入瘫痪.微服务治理方案(ZooKeeper)说明:增加服务器或者减少服务器都是自动完成业务逻辑说明:当服务的提供者启动时,会原创 2020-10-16 18:13:39 · 159 阅读 · 0 评论 -
ThreadLocal
同一线程内的数据怎么实现共享(ThreadLocal)名称:本地线程变量作用:在同一线程内实现数据共享.原理说明:ThreadLocal 是线程安全的,在同一个线程内实现数据的共享.注意:使用完成后,切记销毁 threadLocal 对象,否则 gc 不能回收.导致 JVM 内存泄漏public class UserThreadLocal {//如果保存数据有多个,则使用 Map 集合private static ThreadLocal userThread = new ThreadLoca原创 2020-10-16 17:58:50 · 60 阅读 · 0 评论 -
伪静态技术
伪静态技术动态页面不能被搜索引擎收录.为了保证搜索引擎的友好性.则以.html 的静态页面形式展现动态页面数据原创 2020-10-16 17:39:24 · 65 阅读 · 0 评论 -
spring中自定义缓存的实现
在Spring中默认cache底层实现是一个Map对象,假如此map对象不能满足我们实际需要,在实际项目中我们可以将数据存储到第三方缓存系统中.import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.a原创 2020-10-06 19:35:31 · 341 阅读 · 0 评论 -
Spring 自定义异步池
为了让Spring中的异步池更好的服务于我们的业务,同时也尽量避免OOM,可以自定义线程池优化设计如下:关键代码如下:package com.cy.pj.common.config@Slf4j@Setter@Configuration@ConfigurationProperties(“async-thread-pool”)public class SpringAsyncConfig implements AsyncConfigurer{/**核心线程数*/ private int c原创 2020-10-06 17:30:21 · 149 阅读 · 0 评论 -
SQL 注入攻击
如何防止 SQL 注入攻击SQL 注入:就是通过把 SQL 命令插入到 Web 表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。具体来说,它是利用现有应用程序,将(恶意)的 SQL 命令注入到后台数据库引擎执行的能力,它可以通过在 Web 表单中输入(恶意)SQL 语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行 SQL语句。防止的方法:(1) 永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和原创 2020-08-17 19:42:34 · 108 阅读 · 0 评论 -
Redis
什么是 Redis,运行在哪里开源的内存中的数据结构存储系统,可以用做数据库,缓存和消息中间件基于 C 语言开发,运行时在内存中,运行速度很快https://mp.weixin.qq.com/s/0Fqp2aGq7c_x_bEK9pOeeg原创 2020-08-18 15:15:22 · 175 阅读 · 0 评论 -
Mycat
Mycat是一个数据库中间件,实现读写分离,分库分表和数据库故障迁移.原创 2020-08-16 18:54:11 · 79 阅读 · 0 评论 -
数据库
数据库数据如何备份(数据备份策略)冷备份:定期将数据库中的文件进行转储,定期进行数据备份.热备份:搭建数据库主从结构,当主库数据发生改变时,从库根据主库的二进制日志文件进行备份.双机热备:数据库互为主从,数据库代理服务器对主库进行心跳检测,实现数据的高可用,为了防止主库宕机后发生雪崩现象数据库压力大时,怎么实现高可用1.用数据库代理服务器搭建数据库的读写分离进行分流.读取从库数据,写数据在主库可用的数据库代理服务器有 Amoeba 和 Mycat由于大量的用户的数据库操作都需要通过数据原创 2020-08-16 18:53:14 · 124 阅读 · 0 评论 -
Nginx
Nginx 是什么,有什么作用Nginx (engine x) 是一个轻量级的是一个高性能的 HTTP 和反向代理服务器,其特点是占有内存少,并发能力强主要是用来反向代理和实现负载均衡说明:Nginx 首先需要监听特定的域名.当用户根据域名进行资源访问时.首先会访问 nginx之后 nginx 代替请求者根据内部的配置文件,实现反向代理.将请求转化为特定的请求路径进行资源访问.当 Nginx 获取资源后将数据返回给用户.完成请求的正确的响应负载均衡:访问量高时,可以让服务器尽量分摊压原创 2020-08-16 18:48:59 · 80 阅读 · 0 评论 -
Mapper
介绍一下通用 Mapper1. 早期使用 JDBC 操作数据库该操作特别的繁琐,并且所有的数据需要自己手动的封装.2. JPA:是 java 持久化的 API(用面向对象的方式操作数据库)思想User user = new User(); setXXXXUser.setId(1);User.setName(tom);工具 API.insert(user); JPA 内部将对象自动转化为 sql 语句Insert into …….3. Haibernate 框架.号称是自动化的(ORM)程原创 2020-08-16 18:43:09 · 167 阅读 · 0 评论 -
分布式项目
电商行业特点分布式垂直拆分:根据功能模块进行拆分水平拆分:根据业务层级进行拆分高并发用户单位时间内访问服务器数量,是电商行业中面临的主要问题集群抗击高并发的有效手段,同时集群内部实现高可用海量数据处理随着公司数据的不断积累.自身的数据量很庞大.如果高效的处理数据/分析分布式项目的设计思想为了实现架构之间的松耦合,将项目根据分布式的思想进行拆分.项目的垂直拆分根据功能模块的不同将项目进行拆分.项目的水平拆分在大型项目中,由于开发的人数众多,项目复杂度高.为了保证项目开发的耦原创 2020-08-16 18:38:32 · 1772 阅读 · 0 评论 -
GC 是什么? 为什么要有 GC
GC 是什么? 为什么要有 GCGC 是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放已分配内存的显示操作方法。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc()或Runtime.getRuntime().gc(),但 JVM 可以屏蔽掉显示的垃圾原创 2020-08-14 20:20:45 · 280 阅读 · 0 评论 -
同步和异步
同步和异步有何异同如果数据将在线程间共享.例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取.当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率...原创 2020-08-14 19:25:51 · 88 阅读 · 0 评论 -
线程池
线程池在 java5 之后,就有了线程池的功能了,在介绍线程池之前,先来简单看一下线程池的概念。假设我开了家咨询公司,那么每天会有很多人过来咨询问题,如果我一个个接待的话,必然有很多人要排队,这样效率就很差,我想解决这个问题,现在我雇几个客服,来了一个咨询的,我就分配一个客服去接待他,再来一个,我再分配个客服去接待……如果第一个客服接待完了,我就让她接待下一个咨询者,这样我雇的这些客服可以循环利用。这些客服就好比不同的线程,那么装这些线程的容器就称为线程池。...原创 2020-08-14 19:20:53 · 63 阅读 · 0 评论 -
多线程有几种实现方法,同步有几种实现方法
多线程有几种实现方法,同步有几种实现方法多线程有两种实现方法:继承 Thread 类或者实现 Runnable 接口。一.继承 Thread 类//1、作为Thread的子类,并重写run方法。把多线程的业务写在run方法中//2、默认实现是super.run();//3、创建线程对象//4、开启线程:谁抢到资源谁就先执行常用方法String getName() 返回该线程的名称。static Thread currentThread() 返回对当前正在执行的线程原创 2020-08-13 18:35:29 · 1518 阅读 · 0 评论