首页 » 文章

如何用nodejs的koa2 快速生成一个项目呢。注意koa2 使用的nodejs 版本至少7以上,所以请先更新最新的nodejs

1.安装koa2 的项目generator

sudo npm install koa-generator -g

2.生成一个nodejs项目,注意-e是使用ejs模板,默认是jade。具体和可以用koa2 --help查看帮助

koa2 -e projectName

k8s 想要进入容器查看日志比较麻烦,还是推荐把日志log到etl等工具里面查看

1.查看所有pods,

kubectl get pod 

返回如下,我们要看rrtv-third-test-68bf79765b-p8rvw

dubbo-third-test-77c7d5f85d-zhc8v          2/2       Running   0          2d
rrtv-third-test-68bf79765b-p8rvw           2/2       Running   0          12h

2.查看这个pod所有的实例

 kubectl logs rrtv-third-test-68bf79765b-p8rvw

返回如下,其中group-nyg9gk3a-docker 就是我们要进入的实力

Error from server (BadRequest): a container name must be specified for pod rrtv-third-test-68bf79765b-p8rvw, choose one of: [group-nyg9gk3a-agent-docker group-nyg9gk3a-docker]

3.进入实例,然后就可以cd到目录文件夹,看日志了

kubectl exec -it rrtv-third-test-68bf79765b-p8rvw -c group-nyg9gk3a-docker /bin/bash
cd /data/logs
tailf spring.log

1.mysql 的隔离级别和锁

  • mysql 的锁分为共享锁(又叫S锁)和拍他锁(又叫X锁),S锁----允许多个事务并发的读取同一个资源,互补干扰。X锁----事务T加上排他锁后,其他事务不能再加任何锁。
  • read uncommit ---没有锁,所以会出现脏读
  • read commit ----共享锁,允许读,但是不允许写。---会出现,不可重复读(一个事务范围内,多次读取的结果不一样)
  • 可重复读--- X锁,读写都不允许,保证了可重复读。但是不能保证幻读,mysql引入了mvcc来解决这个问题。

2.Spring bean的生命周期

  • instantiation ---实例化
  • properties injection ---属性注入
  • setBeanName ---of bean name Aware接口的实现调用
  • setBeanClassLoader----BeanClassLoaderAare接口的方法
  • setBeanFactory ----BeanFactoryAware接口
  • PostProcessBeforeInitialization-----BeanPostProcessor接口
  • afterPropertiesSet-----InitializingBean 接口
  • 自定义的init-method----在spring xml中
  • postProcessAfterInitilazation ---BeanPostProcessor接口
  • destroy----DisposableBean 接口
  • 自定义的destroy method

3.设计一个抢红包系统

4.分布式锁的公平竞争、线程锁的公平竞争

  • 大多是通过单机,或者单线程里面的锁或者时钟顺序性来保证。
  • zookeeper在一个指定节点的lockpath下创建临时会话顺序节点(类似于mysql的自增)。谁创建的节点序号小,谁有限获得锁。其他节点都会监听比自己小的节点,在监听事件中判断自己是否最小,从而获得锁
  • redis 通过lua的原子性脚本,保证setnx+pexpire的执行原子性(防止没有expire,其他获取锁的机器渴死),类似与MULTI / EXEC 和单线程来保证事务,其实利用了单线程带来的隔离性,串行化,不被打断。不算严格的原子性
  • mysql的唯一键保证,其他线程不能插入
  • 线程的公平竞争,使用队列,公平不允许插队,非公平允许插队。见问题8

5.线程wait和sleep的区别
6.dubbo自定义注解的实现

  • 调用端---- 实现spring提供的NamespaceHandler 接口,向Spring 容器注册 BeanDifinationParser,通过parser转换相关的xml到Spring 的bean
  • 服务端----- Service Bean,dubbo服务提供者都实现 dubbo:service,Spring把 dubbo:service 解析成一个ServiceBean,ServiceBean实现了ApplicationListener和InitializingBean接口,afertPorpertiesSet中调用export方法暴露这些服务方法。即注册到provider的map里面

7.类的加载
8.ReentrantLock 机制,公平和非公平

9.DDD理解,战略,战术

  • 首先领域---就是问题域,即我们要研究的问题边界,不要把所有问题放到一起,我们的问题有自己的边界,是为领域。首先我们系统要做成什么样,然后对问题进行拆分,划分边界,成为领域。比如一个电商可以接拆为---会员中心,商品中心,订单中心,交易中心,库存中心,营销促销中心。但是领域划分有时候会产生领域复杂问题,比如商品中心,有商品和库存,那么随着维护困难,可以再次拆分子领域,也就是我们常说的垂直切分。会员包括用户和账户,也可以垂直切分。
  • 按功能可以分为核心域(赚钱的)、通用域、支撑域
  • 战略是对系统整体的规划,划分,DDD的战略设计主要包括领域/子域、通用语言、限界上下文和架构风格等概念。
  • 战术是设计模式,领域对象,entity,值对象。聚合。Domain Service,Repository,Domain Event