0%

system profiler

mac系统中提供了system profiler来查看系统的详细信息,包括硬件、网络以及安装的软件

系统信息

阅读全文 »

ARP协议

由于IP间的通信依赖MAC地址,如何根据IP地址查到MAC地址呢?那就要提一下ARP协议了,ARP协议(Address Rsolution Protocol,地址解析协议)用于实现由IP地址到MAC的转换

1
2
# 查看当前ARP缓存表
arp -a

ARP先去查看IP数据包的目的IP地址,如果是同一网段的节点,ARP就去查询该IP地址的MAC地址;如果不是同一网段的节点,ARP就去查询默认网关的MAC地址

LongAdder

在使用AtomicLong时,如果是在高并发场景下去同时竞争修改同一个原子变量,由于内部使用的是CAS,只会有一个线程修改成功,这就造成了大量的线程竞争失败后,通过无限循环来不断的进行CAS操作,白白的浪费了CPU资源,在JDK8中为了解决这种问题,提供了LongAdder来进行原子性递增递减

当多线程争夺同一个Cell原子变量时如果失败,并不是在当前Cell变量上一直自旋CAS重试,而是会尝试在其他Cell变量上进行CAS尝试,增加了CAS成功的可能性

最终,获取LongAdder的当前值时,会把所有Cell变量的value值累加后再加上base值

阅读全文 »

springcloud容器

springCloud中不只存在了一个Spring容器,会进行多次创建Spring容器,来形成父子容器

  • BootStrap上下文:由SpringCloud监听器创建,用来初始化SpringCloud上下文,该容器是祖先容器
  • SpringBoot上下文:由SpringBoot创建
  • 微服务配置上下文:Feign和Ribbon配置类对应的上下文,由配置容器抽象工厂NamedContextFactory创建,用于容器隔离

BootStrap上下文

用于初始化bootstrap.properties(yml)配置文件的,是springcloud中BootstrapApplicationListener监听器在监听ApplicationEnvironmentPreparedEvent来进行创建的

由该代码触发

1
listeners.environmentPrepared(environment);

SpringBoot上下文

也就是平时用的最多的spring容器

微服务配置上下文

主要的实现类有FeignContext、LoadBalancerClientFactory、SpringClientFactory

MySQL count

在使用count进行数据统计行数时,有时候会使用count(*),有时候会使用count(1),有时候会使用count(列名),那么这些有什么不同呢

当使用列名作为参数时,count函数会自动忽略null值,如果这个字段上有索引的话,会使用索引;

而使用*或者常量时,就会包含null值。在innodb中count(*)count(1)是一样的。count(*)会选择最小的非主键索引,如果没有非主键索引,会使用主键

1
2
3
4
select count(*),count(1),count(source) from doc  

count(*) count(1) count(source)
188 188 2