学习笔记

SSE:服务端推送协议

区块链:

疑问:POS只是有币龄利息,但是获得区块是否还是要通过POW共识来得到呢?DPOS是否是缩小挖矿机器的范围?

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。


多线程:

一般用runnable而不是直接用thread,因为thread只能用继承,runnable是接口;

如果直接调用thread的run接口,多个线程之间是顺序执行没有交替,要用start方法才可以;

其次是Thread(Runnable targer)此构造方法接受Runnable的子类实例,也就是说可以通过Thread类来启动Runnable实现的多线程;

多线程核心的方法:jion()等待其他线程执行完;wait/notify围绕锁来等待和唤醒,锁分为对象锁(即一个对象实例加锁)和类锁(一个类定义文件CLASS对象的加锁)


hadoop:

hadoop主要分为分布式存储hbase和分布式计算框架两部分,hbase主要量大的、存储不变的信息如日志,计算式框架有mapreduce(适合离线计算),stom(适合在线实时计算)、spark等,其中流动计算而非流动数据思想卓越。


JVM相关:

JVM内存分为堆和栈,栈主要是线程级别的内存,在调用方法时动态分配,先进后出,存方法调用时的局部变量为主;堆中的方法区存放基本不变的信息,如类定义、常量、静态变量等,极少被回收,除非动态加载(CGLIB)用得比较多;其他在程序中新NEW的对象都放在堆中,分成新生代、中年代、老年代等。

垃圾回收一般采用标记-复制方法,新生代回收次数最多


消息中间件:

消息中间件的应用场景有异步处理,应用解耦,流量削锋和消息通讯四个场景

AMQP:支持长周期消息、支持分布式事务


redis:

redis也支持分布和主从结构,即数据会根据HASH结果存到不同的节点上,每个节点又有主从结构;

redis支持事务,开启事务--传入命令集--提交事务,可以保证命令集被原子性执行或不执行,但是命令集中某条命令执行错误并不会阻止其他命令的执行,会返回给客户端某条命令的错误信息;

支持内存回收,如果配置了memory参数,超过时会按指定的加收策略回收内存,如不常用的KEY等;

持久化:

RDB快照是每隔一段时间将整个内存数据写入磁盘,如果数据量大的话,必然会引起大量的磁盘io操作,可能会严重影响性能。另外由于快照方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。

aof持久化方式时,redis会将每一个收到的写命令都通过write函数追加到文件中(默认是appendonly.aof)。当redis重启时会通过重新执行文件中保存的写命令来在内存中

重建整个数据库的内容。当然由于os会在内核中缓存 write做的修改,所以可能不是立即写到磁盘上。这样aof方式的持久化也还是有可能会丢失部分修改。不过我们可以

通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机。有三种方式如下(默认是:每秒fsync一次)



RPC REST区别适用场景:

RPC是基于TCP的专门用作远程函数调用的协议,系统之间通讯建议用RPC;而REST是基于资源的服务概念,开放平台或对外的服务建议用REST,协议的通用性会好一些。


hiberate:

自动生成SQL;面向对象编程;不适合指操作和复杂SQL的场景;有一级(线程级)二级(进程级)缓存;延时加载(用到时才执行SQL)可以提高性能;

mybatis:

可以手动写SQL,主要工作量在于resultmap和表字段的映射;也有一级二级缓存,缓存在数据有更新的时候会自动清空,前提是更新也是通过mybatis的接口完成的


设计模式:

future模式:客户端调用立即返回伪数据,即一个数据对象但不包含实际的数据,再启动一个线程去取真实的数据再填充到之前返回的数据对象中,节约客户等待的时间;这种场景用在请求数据和真正使用数据中间有其他的业务处理,利用处理其他业务的时间用另一个线程去取真实的数据,等其他业务处理完数据也取到了,真正使用数据时也有了。


NIO:

阻塞IO是多个连接由多个线程处理,而非阻塞IO是由一个线程轮询注册的事件有没有发生,比如服务器端监听有没有客户端连接事件、有没有消息发送过来的事件、客户端监听有没有连上服务端的事件等。服务端和客户端都各自启一个线程专门监听,这个线程可以监听多个通道(我理解的是多个端口)。阻塞IO是单向通道,NIO是双向通道。


DUBBO:

伪造返回结果,可在失败时执行,或直接执行,用于服务降级;

对每个集群调用时,集群自身要处理跟帖(如读写分离)、负载均衡、容错处理(调用失败后的策略);


NGINX:

可以解决跨域请求问题;配置时proxy_pass路径后面带上/,否则会把请求匹配路径也加到后面;






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值