Part 1 运用领域模型
模型
定义
对现实的简化,忽略无关的细节,把与解决问题密切相关的方面抽象出来。概括而非模拟。
作用
模型和设计的核心相互影响,对模型的分析转化为产品,相反可以基于对模型的理解来解释代码
模型是团队所有成员使用的通用语言的中枢(ubiquitous language)
模型是浓缩的知识
软件的核心
为用户解决领域相关的问题的能力
不要试图仅通过技术来解决领域问题,学习领域知识和领域建模是解决复杂性的必经之路
定义
对现实的简化,忽略无关的细节,把与解决问题密切相关的方面抽象出来。概括而非模拟。
作用
模型和设计的核心相互影响,对模型的分析转化为产品,相反可以基于对模型的理解来解释代码
模型是团队所有成员使用的通用语言的中枢(ubiquitous language)
模型是浓缩的知识
为用户解决领域相关的问题的能力
不要试图仅通过技术来解决领域问题,学习领域知识和领域建模是解决复杂性的必经之路
周末参加了CN’SOUG组织的ORACLE RWP性能之旅杭州站活动,演讲嘉宾是Oracle RWP的VP Andrew Holdsworth以及架构师Graham Wood,两位都是有30年Oracle从业经验的大牛,讲的内容虽然不深,但是听大师从宏观层面过一遍性能优化的方法论,还是挺有收获的,凭印象简单做个笔记。
最近生产服务器从JDK 7升级到了JDK 8,运行一段时间后发现一台服务器出现了java.lang.OutOfMemoryError: Metaspace
错误。这个角色的服务器在使用JDK 7时设置的MaxPermSize是256M,实际使用在100M左右,因此虽然JDK 8的Metaspace可以不设置最大值,但为了防止类似classloader leak的问题导致系统内存耗尽,我们还是设置了512M的限制。由于代码没有变更过,因此怀疑是JDK 8的Metaspace回收机制有变化导致了OOM。
前段时间买了一堆小米的ZigBee智能设备回来玩,从硬件来讲,无论性价比还是设计做工都诚意满满,值得安利,虽然硬件本身并没有太多新意,以前也有很多类似产品,但是配合小米不断壮大的智能设备生态圈,可玩性是别的品牌不能比拟的,嗯,我在说贝尔金的Wemo…
米家App的功能也还不错,但是和以前用的Wemo比起来主要有两个问题
在搜索API的过程中,偶然发现了这篇文章,小米网关接入Homekit完整教程,感觉打开了新世界的大门,教练,我也想打篮球接入Homekit
Ansible是一个轻量级的IT自动化工具,和Fabric类似,实现了批量系统配置、程序部署、运行命令等功能。
目前我们开发环境大部分自动化脚本都是用Fabric实现的,因此在学习使用Ansible之前,我们肯定要了解下使用Ansible替换Fabric的收益和成本。
首先两者都是通过SSH来完成大部分工作的,因此不需要安装Agent,也没有Server的概念,其中Fabric直接通过SSH运行命令,Ansible先将Module推送到目标服务器,再远程执行。
两者最大的区别在于抽象层次的不同,Fabric是所见即所得的实现方式,抽象比较少,基本上所有的内容都在一个文件中,容易理解,上手简单,并且得益于Python的强大,可以灵活实现各种功能。但这种扁平的管理方式也有着显著的缺点,随着主机数量,主机间差异,脚本功能不断增加时,整套系统会越来越难以维护。
Semaphore是Ansible Tower的开源替代产品,提供了前端页面用于管理主机、变量以及运行Playbook,同时也支持API调用。
Scalable IO in Java
Java NIO浅析 <- 看这个就好,下面不用看=.=
在测试环境中,我们经常会写类似这样的tomcat启动脚本,通过tail
日志来检查启动是否成功
|
|
有的时候我们会遇到tomcat进程启动完一段时间后就退出了的情况。通过测试发现,如果不退出脚本就直接关闭终端,tomcat就会在终端关闭后退出
有如下几种解决方式
|
|
|
|
|
|
Cat
,Dubbo
源码并产出文档Java8
并应用到一个以上生产系统中生产环境的Tomcat在Full GC时,部分客户端请求会有connect timeout报错,然而我们客户端设置的连接超时是10s,FullGC最长不过2s,一番搜索后发现是backlog的锅,在此记录一下backlog的工作原理