Java知识

1. Redis持久化策略

问:
	如果不小心在公司的服务器中执行了flushAll命令,该怎么办?
答:
	需要找到.aof文件之后,删除flushAll命令,之后重启redis,再执行save命令,数据即可恢复。

解析:

1.1 什么是持久化

说明:Redis运行环境是在内存中,如果redis服务器关闭,则内存数据将会丢失。
为了保存内存数据,我们需要定期将内存数据持久化到磁盘中。
持久化策略规则:
当redis正常运行时,定期的将数据保存到磁盘中;当redis服务器重启时,会根据配置文件中指定的持久化方式,实现数据的恢复(读取数据,然后恢复数据)

1.2 RDB模式

特点说明:
1)RDB模式是redis默认的策略
2)RDB模式能够定期持久化,弊端:可能导致数据的丢失
3)RDB模式记录的是内存数据的快照,持久化效率较高,快照只保留最新的记录
命令说明:
1)save:将内存数据持久化到磁盘中 主动的操作 会造成线程阻塞
2)bgsave: 将内存数据采用后台运行的方式,持久化到文件中. 不会造成阻塞.
3)默认的持久化的机制
save 900 1 如果在900秒内,执行了1次更新操作,则持久化一次
save 300 10 如果在300秒内,执行了10次更新操作,则持久化一次
save 60 10000 如果在60秒内,执行了10000次更新操作,则持久化一次

1.3 AOF模式

特点说明:
1)AOF模式默认条件下是关闭的,需要手动开启
2)AOF模式记录的是用户的操作过程,所以可以实现实时持久化操作
3)AOF模式由于记录的是实时的操作过程,所以持久化文件较大,需要定期维护

1.3 总结

1)当内存数据允许少量丢失时,采用RDB模式 (快)
2)当内存数据不允许丢失时,采用AOF模式(定期维护持久化文件)
3)一般在工作中采用 RDB+AOF模式共同作用,保证数据的有效性

2. Redis缓存

由于缓存失效,导致大量的用户的请求,直接访问数据库服务器.导致负载过高,从而引发整体宕机的风险!!!

解析:

2.1 缓存穿透

特点说明:
用户频繁访问数据库中不存在的数据,可能出现缓存穿透的现象.如果该操作是高并发操作,则可能直接威胁数据库服务器.
解决方案:
1)采用IP限流的方式 降低用户访问服务器次数. IP动态代理(1分钟变一次)
2)微服务的处理方式: 利用断路器返回执行的业务数据即可不执行数据库操作 从而保护了数据库.
3)微服务处理方式: API网关设计. 不允许做非法操作

2.2 缓存击穿

特点说明:
由于redis中某个热点数据由于超时/删除等操作造成数据失效,同时用户高并发访问该数据,则可能导致数据库宕机,该操作称之为缓存击穿
解决方案:
可以采用多级缓存的设计,同时数据的超时时间采用随机数的方式

2.3 缓存雪崩

特点说明:
由于redis内存数据大量失效,导致用户的访问命中率太低,大量的用户直接访问数据库,可能导致数据库服务器宕机,这种现象称之为缓存雪崩
解决方案:
1)采用多级缓存
2)设定不同的超时时间
3)禁止执行 flushAll等敏感操作

3. Java与C有什么区别?

解析:

1)都是面向对象的语言,都支持封装、继承和多态
2)Java不提供指针来直接访问内存,程序内存更加安全
3)Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承
4)Java 有自动内存管理机制,不需要程序员手动释放无用内存

4. Java应用程序与小程序有什么区别?

解析:

简单说应用程序是从主线程启动(也就是 main() 方法)。applet 小程序没有main 方法,主要是嵌在浏览器页面上运行(调用 init()线程或者 run()来启动),嵌入浏览器这点跟 flash 的小游戏类似。

5. 字符型常量和字符串常量的区别?

解析:

1)形式上: 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符
2)含义上: 字符常量相当于一个整形值( ASCII 值),可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)
3)占内存大小 字符常量只占 2 个字节 字符串常量占若干个字节(至少一个字符结束标志) (注意: char 在 Java 中占两个字节)

6. 正向代理、反向代理(Nginx)?

解析:

2.1 反向代理

反向代理服务器位于用户与目标服务器之间。但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无需在用户端做任何设定。反向代理服务器通常可用来作为WEB加速,即使用反向代理作为WEB服务器的前置机来降低网络he服务器的负载,提高访问效率。

特点说明:
1、反向代理服务器位于用户与目标服务器之间
2、对于用户而言,以为代理服务器就是真实的服务器
3、反向代理机制保护了真实的服务器信息
4、反向代理一般称之为服务端代理

步骤:
1、当用户发起请求时,该请求被代理服务器拦截
2、代理服务器查询自己的配置文件,根据url地址获取真实的服务器信息
3、由代理服务器根据真实的服务器信息,获取数据
4、真实的服务器接受请求之后,将数据返回给代理服务器
5、代理服务器接收服务器数据之后。将数据回传给用户,本次代理结束

2.2 正向代理

正向代理,一个位于客户端可原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

特点说明:
1、代理服务器位于用户与真实服务器之间
2、客户非常清楚自己访问的服务器是谁
3、服务器不清楚访问自己的服务器是谁,以为只是代理服务器访问
4、正向代理称之为客户端代理,保护了客户的信息

2.3 Nginx

Nginx 是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占用内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用的nginx网站有:百度、京东、新浪、网易、腾讯、淘宝。

特点说明:
1、占用内存少,不超过2M
2、并发能力强(5万/秒)、tomcat(150-220个/秒)
3、开发语言(C语言)

nginx.conf配置文件:

http{
	#配置图片的代理服务器
	server{	
		listen 80;
		server_name image.jt.com;
		location / {
			root D:/IdeaNew/images;
		}
	}
	server{
		......
	}
}

http{
	#配置后台服务器
	server{
		listen 80;
		server_name "监听域名地址";
		location / {
			#1、代理真实服务器的地址
			proxy_pass http://localhost:8081;
			#2、映射到集群
			proxy_pass http://jtWindows;
		}
	}
	upstream jtWindows{
		#max_fails=1  表示最大的失败次数
		#fail_timeout=60s 如果访问不通,则在60s内,不会再次访问故障机
		server 127.0.0.1:8081 max_fails=1 fail_timeout=60s
		server 127.0.0.1:8082 max_fails=1 fail_timeout=60s
		server 127.0.0.1:8083 max_fails=1 fail_timeout=60s
	}
}
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值