随笔分类 - 技术
摘要:ETCd nodes:-1 etcd用于存储Kubernetes cluster中所有的pods / nodes状态的key/value信息,同时提供高可用cluster的特性,生产环境一般提供3到5个etcd nodes以保证一致性协调服务; etcd集群内部通过Raft一致性算法,类似于ZooK
阅读全文
摘要:-1 通过run命令创建资源% kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080上述命令表示以gcr.io/google-samples/kubernete
阅读全文
摘要:什么场景适合使用Docker-1 VM构建于Hypervisor上,并内置一套完整的操作系统,磁盘耗用和调度耗用较大,主要用于隔离不同的用户,安全级别较高;Docker构建于Docker Daemon上,直接共享host上的kernel service,并不需要内置操作系统,因此更节省磁盘空间和启动
阅读全文
摘要:MyBatis的设计思路 ORM(Object Relation Mapping)模型将数据库存储数据与POJO对象进行映射,从而简化数据转化的复杂度;如果说Hibernate是完全封装的ORM框架,则myBatis则是半完全封装的ORM框架,因为myBatis需要手动映射SQL返回结果与POJO对
阅读全文
摘要:Spring IOC用于解决对象依赖之间的解耦,而Spring AOP则用于解决业务依赖之间的解耦; 统一在一个地方定义【通用功能】,通过声明的方式定义这些通用的功能以何种【方式】【织入】到某些【特定应用】里去,并且【不需要修改】特定应用的代码;-1通用功能:<aop:aspect>如日志、安全或事
阅读全文
摘要:Java的数据会在CPU、Register、Cache、Heap和Thread stack之间进行复制操作,而前面四个都是在Java Threads之间共享,因此Java的锁机制主要用于解决Racing Threads的数据一致性。 基于CPU缓存一致性MESI协议的volatile关键字 保证变量
阅读全文
摘要:优化table结构 #1 列数据类型尽量使用数字类型,避免使用字符类型,后者不仅会占用较多存储空间而且会降低查询效率(逐字符比较); #2 优先使用VARCHAR,变长字段存储空间小,还可以提升查询效率; #3 对需要经常作为where条件出现的column添加索引,通过添加constraint设置
阅读全文
摘要:哪些场景适合使用Kafka线上系统会实时产生数以万计的日志信息,服务器运行状态,用户行为记录,业务消息 等信息,这些信息需要用于多个不同的目的,比如审计、安全、数据挖掘等,因此需要以分类的方式将这些信息发送到某个地方,以方便后台处理service实时的去获取数据。MQ用于解决数据生成速率与数据消费速
阅读全文
摘要:DB提供两种机制来保证事务的ACID(原子性,一致性,隔离性和持久性)特性,日志预写(write-ahead loging)和锁(lock),前者用于保证原子性、一致性,后者用于保证隔离性。事务在没有提交前的一系列修改都不能持久化,因此这一系列的操作都是依赖两种log来实现,redo-log和und
阅读全文
摘要:Redis适合哪些业务场景常规业务系统的数据库访问中,读写操作的比例一般在7/3到9/1,也就是说读操作远多于写操作,因此高并发系统设计里,通过NoSQL技术将热点数据(短期内变动概率小的数据)放入内存以达到减轻DB压力,提升数据访问速度的目的,Redis和MongoDB是当下应用最广泛的NoSQL
阅读全文
摘要:分布式服务需要满足CAP原则,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),但三者不可得兼;一般都会优先保证可用性和分区容错性,并且保证最终一致性。BASE理论是对CAP原则的补充,Basically Available
阅读全文
摘要:剥离静态资源请求到CDN 一般在主域名下的HTTP请求里都会携带大量Cookie信息,最大4KB,每个域名下最多50条;但如果仅仅访问js/css/jpeg等静态资源文件的话是不需要Cookie信息,所以可以将整个站点的静态资源放到一个专门的域名下,以求减小网络开销,也就是Cookie free
阅读全文
摘要:Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具,它为基于JVM的微服务开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一站式的开发框架。而上文提到的微服务架构就是将一个完整的应用从数据存储开始垂直
阅读全文
摘要:Object.wait(miliSec)/notify()/notifyAll() 线程调用wait()之后可以由notify()唤醒,如果指定了miliSec的话也可超时后自动唤醒。wait方法的调用会让当前线程放弃已经获取的object锁标志位,比如在同步代码块synchronized中调用wa
阅读全文
摘要:JVM内存模型 Sun在2006年将Oracle JDK开源最终形成了Open JDK项目,两者在绝大部分的代码上都保持一致。JVM的内存模型是围绕着原子性(操作有且仅有一个结果)、可见性(racing thread读取变量的值永远是最新的)和有序性(指令的执行时有序并且符合happen-befor
阅读全文
摘要:线程的内存模型 32位操作系统的寻址空间为2的32次方,也就是4GB的寻址空间;系统在这4GB的空间里划分出1GB的空间给系统专用,称作内核空间,具有最高权限;剩下3GB的空间为用户空间(一般JVM的可用内存最大只能是2GB),只能访问当前线程划分的内存地址。用户线程需要访问硬件资源的时候需要委托内
阅读全文
摘要:什么是ZooKeeper ZooKeeper作为一个分布式的服务框架(与Google Chubby类似),主要用于解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但 ZK并不是用来专门存储数据的,它的作用主要是用来维护和监控系统存储的数据的状态变化。通过监
阅读全文
摘要:Deployment期间验证 实现一: 1 <bean id="theTargetBean" class="..."/> 2 3 <bean id="theClientBean" class="..."> 4 <property name="targetName"> 5 <idref bean="t
阅读全文
摘要:定义Pojo对象和**.hbm.xml文件 -1 对于每一个需要持久化的对象都需要创建一个Pojo类定义,Hibernate要求POJO类定义中必须有一个no-argument的构造方法,便于Hibernate通过java reflection机制创建实例:[java.lang.reflect.Co
阅读全文
摘要:Hibernate的设计思路 Hibernate是一种全自动化管理持久化对象的ORM框架,既提供了完全面向对象的封装完整的对象持久化接口(屏蔽db层的差异化,提升代码可移植性),也提供了操作HQL和SQL的半自动化DB访问接口(提供复杂查询的扩展性)。 配置hibernate.cfg.xml和***
阅读全文