About me
个人展示
- 个人站点: https://flytreeleft.org、 https://flytreeleft.github.io
- Github: https://github.com/flytreeleft
- Twitter: https://twitter.com/flytreeleft
- Email: flytreeleft@crazydan.org
自我评价
- 踏实肯干,具有较硬的技术基础。密切关注前沿技术,不断学习以充实自我
- 学以致用,在架构设计和研发过程中推陈出新,适当引入新的技术和设计理念
- 勤于思考,不固化观念,保持一颗年轻的心
- 善于解决问题,打破砂锅问到底,先分析问题本质,再有针对性地提出多种解决方案,权衡并选择最优的解决方案
专业技能
- 从事8年Java项目开发,具备J2EE项目开发、项目架构设计、代码优化与调试经验
- 熟悉Web前端和后端开发流程及相关技术:Spring、Spring MVC、Hibernate、MyBatis、jQuery、Vue.js、Node.js、Webpack、Electron、TypeScript、ES6等
- 熟悉MySQL、H2、Oracle等关系数据库,可熟练编写SQL代码进行简单或复杂的业务查询,具备MySQL主从架构部署经验
- 具备JVM调试与调优经验,能够分析并定位堆栈溢出、线程死锁等问题,涉及工具:jvisualvm、jstack、jmap、Eclipse Memory Analyzer、Arthas等
- 能够熟练编写JUnit单元测试,并具备Apache JMeter性能测试和脚本编写经验
- 具备基础的Android、Flutter开发能力,能够快速适应Android应用的开发工作
- 具备良好的技术文档编写能力,对代码质量和规范的要求严格,同时乐于以文档形式与他人分享技术难点攻关技巧
- 熟悉Linux系统运维,能够熟练编写Bash、Ansible Playbooks等脚本,也具备一定的Python、Lua等编程基础
- 具备CI/CD、DevOps工具集的部署、维护和管理经验:Gitlab、Jenkins、Nexus3、Nginx、Sonar、Keycloak、ELK等
- 具备Kubernetes高可用集群的部署和维护经验,能够在Kubernetes集群中部署、配置和管理各种应用,熟悉Helm的使用
开源项目
nexus3-keycloak-plugin
支持Keycloak用户统一登录认证的Sonatype Nexus3插件。
其支持并提供如下特性:
- 将Keycloak的Client Role、Realm Role、Realm Group三类角色/组映射为Nexus3的角色,以支持不同层级的用户权限控制需求
- 支持多个Keycloak Realm(至多4个),从而满足组织同时对内部和外部用户(两类用户隔离在不同的Realm中)的访问控制需求
- 在Nginx反向代理的配合下实现基于Keycloak的单点登录(SSO)和二次登录验证
docker-nginx-gateway
Nginx网关(反向代理)的Docker镜像构建脚本。
其提供特性如下:
- 可启用Let’s Encrypt HTTPS站点
- 支持通过certbot自动为域名创建和更新Let’s Encrypt证书
- 支持显示自定义的错误(500、404等)页面,且在有多个错误页面时能够做到随机展示
- 可加载并执行Lua脚本
- 支持反向代理HTTP和TCP流量
- 每个域名采用独立的配置文件,根据实际需求以提供静态站点服务或反向代理至后端服务
- 支持在Kubernetes中以多个Pod副本运行
- 支持访问日志按天滚动写入日志文件,如,
access_2018-04-26.log
- 支持通过OpenID(使用lua-resty-openidc实现)进行用户访问认证,并可将指定IP加入白名单
- 可在构建镜像时设定是否引入GeoIp2地址库
- 集成Gixy以分析和检查Nginx配置是否存在安全问题
GtkShot
基于GTK2的Linux屏幕截图工具。
其具备如下特性:
- 支持快捷键撤销、保存、移动选取等操作
- 支持线、框、圈、文字等涂鸦
- 可保存截图至剪贴板或文件
- 提供友好的选区位置/大小、初始时的界面操作等辅助提示(支持中英文双语)
其他
向多个开源项目提交PR,贡献缺陷修复、功能改进、新增功能、文档修正等:
- ansible/ansible:对
vmware_*
相关模块的改进和缺陷修复(长期未被接受,导致修复代码过期,已关闭) - kubernetes/website:提交对文档中有关MySQL主从配置示例中的错误修复和相关改进(已合并)
- webpack-contrib/webpack-hot-middleware:缺陷修复和功能改进(已合并)
- Semantic-Org/Semantic-UI:改进和完善Slider组件(已合并,但似乎未进入主干)
- erikw/tmux-powerline:提供基于Yahoo天气的模块,并改进和修复其他多个模块(已合并)
- docker-library/mysql:提交MySQL初始账号授权不生效的修复(未合并)
- vuejs/vue:提交缺陷修复代码,改进构建脚本等(已合并)
- Activiti/Activiti:提交缺陷修复和功能改进代码(已合并)
- react-dnd/react-dnd:添加新的场景使用示例(未被接受,已关闭)
- mitre/HTTP-Proxy-Servlet:缺陷修复(已合并)
- hawtio/hawtio-oauth:缺陷修复(已合并)
- …
项目经验
- 在部门内引入并推广Maven项目构建、CI/CD持续集成、Git源码管理、统一登录(SSO)、代码分支管理、Wiki文档管理、代码质量控制、缺陷管理等开发机制和流程,并独立搭建相关环境,进而提升部门产品的开发、测试、发布效率
- 将部门内的运维工具、产品演示服务、产品演示数据库等全部容器化部署和管理,从而降低运维难度和工作量
- 尝试部署高可用的Kubernetes集群,并在其上搭建DevOps和日志分析平台
- 编写Ansible Playbook脚本为客户搭建具备3个Master节点的高可用Kubernetes集群环境,并在其上部署和运行部门的产品,实现运维产品服务的高可用
- 负责分析并查找产品性能低下、高内存占用、数据库连接池耗尽等问题,通过JVM内存分析、接口调用监控等方式最终定位根源并有针对性地提出改进和规避方案
- 负责维护和开发部门的运维产品,设计并实现多个核心组件和功能模块,如,CI关系视图、数据归档、数据访问权限控制、Hibernate热加载/热更新BO Class等
- 自行设计并实现类似Jenkins Pipeline的任务调度和编排机制,支持任务调度、解析和执行Pipeline脚本(Groovy)、本地或远端执行Bash脚本、文件传输、运行Ansible Playbook等功能
- 基于mxGraph JS图形库设计并开发CMDB资产生命周期(入库、出库、维护等)设计器
- 基于Activiti 5流程引擎做业务层封装,支持在不修改源码的基础上做业务功能扩展和增强:外部人员组织机构的适配、流程跳转、任务委办、退回任务、任务会签、流程回演等
- 基于Apache Camel实现多类型接收端点的消息发送框架
- 基于Vue.js设计并开发UI设计器
- 基于YAVI Java API开发VMware vCenter集群管理的组件库,支持对虚拟主机、网络等资源的管理
- 基于fabric8io/kubernetes-client设计并开发多租户平台,实现将部门的运维产品按租户部署至Kubernetes集群并独立运行和访问
- 基于Electron为客户开发自助服务终端App,支持身份证读取和二维码扫描功能