06 2021 档案
摘要:一、HTTP服务器 Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。 1、在文档根目录Docroot(/usr/local/var/www)下创建html目录, 然后在html中放一个tes
阅读全文
摘要:Java 8 引入的的Stream主要用于取代部分Collection的操作,每个流代表一个值序列,流提供一系列常用的聚集操作,可以便捷的在它上面进行各种运算。集合类库也提供了便捷的方式使我们可以以操作流的方式使用集合、数组以及其它数据结构; stream 的操作种类 ① 中间操作 当数据源中的数据
阅读全文
摘要:网络攻击是指利用网络存在的漏洞和安全缺陷对网络系统的软硬件及其系统数据进行攻击的行为。TCP/IP协议作为网络的基础协议,从设计之初并没有考虑到网络将会面临如此多的威胁,导致出现了许多攻击方法。由于网络中的通讯都源于数据包,通过对数据包的自动采集与解码分析,可以快速发现与追溯网络攻击。 TCP/IP
阅读全文
摘要:在java远程调用多年的沉淀 《1》首先是socket调用。在orderService中开放socket服务,在userService中进行远程调用。 优点:解决了单机调用的问题。 缺点:代码复杂,不易于扩展。 在java的对象是不可以直接通过socket进行传输的,需要有一个序列化的过程。而且ja
阅读全文
摘要:@Autowired注解了。这个注解的功能就是为我们注入一个定义好的bean。 @Autowired注解用法 将@Autowired注解应用于构造函数 public class MovieRecommender { private final CustomerPreferenceDao custom
阅读全文
摘要:行转列:sum+if 在长表的数据组织结构中,同一uid对应了多行,即每门课程一条记录,对应一组分数,而在宽表中需要将其变成同一uid下仅对应一行 在长表中,仅有一列记录了课程成绩,但在宽表中则每门课作为一列记录成绩 由多行变一行,那么直觉想到的就是要groupby聚合;由一列变多列,那么就涉及到衍
阅读全文
摘要:缓存雪崩: 为了保证缓存中的数据与数据库中的数据一致性,会给 Redis 里的数据设置过期时间,当缓存数据过期后,用户访问的数据如果不在缓存里,业务系统需要重新生成缓存,因此就会访问数据库,并将数据更新到 Redis 里,这样后续请求都可以直接命中缓存。 当大量缓存数据在同一时间过期(失效)或者 R
阅读全文
摘要:内存泄漏:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这
阅读全文
摘要:与分布式锁相对应的是「单机锁」,我们在写多线程程序时,避免同时操作一个共享变量产生数据问题,通常会使用一把锁来「互斥」,以保证共享变量的正确性,其使用范围是在「同一个进程」中。 想要实现分布式锁,必须借助一个外部系统,所有进程都去这个系统上申请「加锁」。 而这个外部系统,必须要实现「互斥」的能力,即
阅读全文
摘要:Mysql里int类型是4个字节,如果有符号位的话就是[-2^31,2^31-1],无符号位的话最大值就是2^32-1,也就是4294967295。 自增ID达到上限用完了之后,分为两种情况: 如果设置了主键,那么将会报错主键冲突。 如果没有设置主键,数据库则会帮我们自动生成一个全局的row_id,
阅读全文
摘要:Random Random 类诞生于 JDK 1.0,它产生的随机数是伪随机数,也就是有规则的随机数。Random 使用的随机算法为 linear congruential pseudorandom number generator (LGC) 线性同余法伪随机数。在随机数生成时,随机算法的起源数字
阅读全文
摘要:Kubenetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环境中的容器编排。 K8S是Google公司推出的,它来源于由Google公司内部使用了15年的Borg系统,集结了Borg的精华。 和大多数分布式系统一样,K8S集群至少需要一个主节点(Master)和多个
阅读全文
摘要:AOP把软件的功能模块分为两个部分:核心关注点和横切关注点。业务处理的主要功能为核心关注点,而非核心、需要拓展的功能为横切关注点。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点进行分离,使用切面有以下好处: 集中处理某一关注点/横切逻辑 可以很方便的添加/删除关注点 侵入性少,增强
阅读全文
摘要:RabbitMQ是基于AMQP协议的,通过使用通用协议就可以做到在不同语言之间传递。 AMQP协议 核心概念 server:又称broker,接受客户端连接,实现AMQP实体服务。 connection:连接和具体broker网络连接。 channel:网络信道,几乎所有操作都在channel中进行
阅读全文
摘要:一、定时任务的五种创建方式 1、使用线程创建 job 定时任务 /** * TODO 使用线程创建 job 定时任务 */public class JobThread { public static class Demo01 { static long count = 0; public stati
阅读全文
摘要:反向代理和路由 - 大多数项目采用网关的解决方案的最主要的原因。给出了访问后端 API 的所有客户端的单一入口,并隐藏内部服务部署的细节。 负载均衡 - 网关可以将单个传入的请求路由到多个后端目的地。 身份验证和授权 - 网关应该能够成功进行身份验证并仅允许可信客户端访问 API,并且还能够使用类似
阅读全文
摘要:一、id id: :表示查询中执行select子句或者操作表的顺序,id的值越大,代表优先级越高,越先执行。 id大致会出现 3种情况 二、select_type select_type:表示 select 查询的类型,主要是用于区分各种复杂的查询,例如:普通查询、联合查询、子查询等。 1、SIMP
阅读全文
摘要:Redis 已经为我们提供了一种持久化的机制,分别是 RDB 和 AOF 两种方式。 由于 Redis 是基于内存的数据库,所以当服务器出现故障的时候,我们的数据就得不到安全保障。 这个时候就需要将内存中的数据存储到磁盘中,当我们服务器重启时,便可以通过磁盘来恢复数据,这个过程就叫做 Redis 持
阅读全文
摘要:在TCP长连接或者WebSocket长连接中一般我们都会使用心跳机制–即发送特殊的数据包来通告对方自己的业务还没有办完,不要关闭链接。 网络的传输是不可靠的,当我们发起一个链接请求的过程之中会发生什么事情谁都无法预料,或者断电,服务器重启,断网线之类。 如果有这种情况的发生对方也无法判断你是否还在线
阅读全文
摘要:方法一:Controller中注入service的时候使用@Autowired自动注入,@Qualifier("beanId")来指定注入哪一个。 方法二:Controller中注入service的时候使用@Resource(type = 类名.class)来指定注入哪一个。 接口public in
阅读全文
摘要:令牌桶算法 import java.util.concurrent.*;public class MyRateLimiter { //令牌桶 BlockingQueue<Integer>TOKEN_BUCKET=new LinkedBlockingDeque<>(5); public static
阅读全文
摘要:浅拷贝是将原始对象中的数据型字段拷贝到新对象中去,将引用型字段的“引用”复制到新对象中去,不把“引用的对象”复制进去,所以原始对象和新对象引用同一对象,新对象中的引用型字段发生变化会导致原始对象中的对应字段也发生变化。①对于数据类型是基本数据类型的成员变量,浅拷贝会直接进行值传递,也就是将该属性值复
阅读全文
摘要:Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,他的实质是一个基于http协议的web容器,但是Netty不一样,他能通过编程自定义各种协议,因为netty能够通过codec自己来编码/解码字节流,完成类似redis访问的功能,这就是netty和tomcat最大的
阅读全文
摘要:一、值是null的情况: 1.a.equals(b), a 是null, 抛出NullPointException异常。 2.a.equals(b), a不是null, b是null, 返回false 3.Objects.equals(a, b)比较时, 若a 和 b 都是null, 则返回 tru
阅读全文
摘要:Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。、 对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取连接 Connection con = DriverManager.getConnection() 开启事务con.set
阅读全文
摘要:Spring 支持使用@Autowired, @Resource, @Inject 三个注解进行依赖注入。 @Autowired @Autowired为Spring 框架提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired
阅读全文
摘要:使用 Iterator 遍历 HashMap EntrySet 使用 Iterator 遍历 HashMap KeySet 使用 For-each 循环迭代 HashMap 使用 Lambda 表达式遍历 HashMap 使用 Stream API 遍历 HashMap 1. 使用 Iterator
阅读全文
摘要:site 语法:site 作用:限定在特定的网址中搜索 filetype 语法:filetype 作用:搜索特定的文件类型 inurl 语法:inurl 作用:在URL中搜索出现指定内容的链接 intitle 语法:intitle 作用:在网页title中搜索出现指定内容的网页 intext 语法:
阅读全文
摘要:数据持久化 主从复制 自动故障恢复 集群化 数据持久化本质上是为了做数据备份,有了数据持久化,当Redis宕机时,我们可以把数据从磁盘上恢复回来,但在数据恢复之前,服务是不可用的,而且数据恢复的时间取决于实例的大小,数据量越大,恢复起来越慢。 而主从复制则是部署多个副本节点,多个副本节点实时复制主节
阅读全文
摘要:服务的发布与引用 常见的发布和引用的方式包括: RESTful API / 声明式Restful API XML IDL 声明式Restful API 这种常使用HTTP或者HTTPS协议调用服务,相对来说,性能稍差。 首先服务端如上定义接口并实现接口,随后服务提供者可以使用类似restEasy这样
阅读全文
摘要:ThreadPoolExecutor参数最全的构造方法: corePoolSize: 线程池的核心线程数,说白了就是,即便是线程池里没有任何任务,也会有corePoolSize个线程在候着等任务。 maximumPoolSize: 最大线程数,不管你提交多少任务,线程池里最多工作线程数就是maxim
阅读全文