我和Java这些年的故事(五)
时光荏苒,我来到了IBM。和慕名已久的WebSphere Application Server(WAS)打起了交道。
之前我搞过Weblogic,对应用服务器的特性有了一定的了解。但WAS无疑更为庞大,复杂。那个年代,WAS在银行、大的企业如华为用友都有一定的应用。
能和如此神圣的中间件打交道,我倍感荣幸。进入WAS部门后,开始接触web service,那时web service和SOA正大行其道。EJB虽然风头已过,但也还是J2EE服务器不可或缺的主体。
我的主要工作是做集成测试,俗称SVT, 还有FVT,在IBM这样的名称多得让人眼花缭乱,以至于新手进去的第一门功课是熟悉各种称谓。测试的目的是找bug,比的是谁发现的bug最多,最有价值,而不是比谁完成得快。人家一个case跑两个月,你跑两周就完事,但你并不会受到称赞,反而会被老外chanllenge。这个道理我后来才明白,因此也对测试工作多了一份了解和敬畏。
那时管理源代码用的是CMVC,一个内部的工具,IBM的clearcase太重,内部貌似用的不多,git还没有流行呢。在CMVC上,我浏览了不少老外写的代码,代码逻辑很清晰,注释详尽,命名合理,唯一就是行数太多,有的达到上万行。我想,这大概是一个个补丁堆叠出来的吧,因为一个文件常常是经历了多个开发者,几年的历史,要重构,时间不允许,代价太大。
业余我也搞搞小工具开发,把java包装成exe,还做了一个内部的知识库系统,没做好,原因是自研,而不是直接采用开源产品。
ERWW和e-trade是两个经典的J2EE应用,代码写得是比较优美的。
也经常去客户那里宣讲web service和WAS使用,当然,最令人头疼的是客户生产系统上遇到的各种疑难杂症,如内存泄露,事务问题。刚开始,我对OOM工具使用还不太熟练,也遇到一些尴尬的时候。
同事鹏涛开发了一个JVM问题诊断工具,我也不甘其后,开发了一个wsadmin图形化工具,用来方便得管理多个was环境,便在其上执行wsadmin脚本。可惜没有推广使用起来。
当时觉得IBM的工作环境、氛围是很不错的,谁料到外面的世界正在悄然变化呢?以阿里为代表的一些国内公司正在迅速崛起。甚至今日头条、饿了么、美团也开始崭露头角,而我浑然不知。
我和Java这些年的故事(五)的更多相关文章
- 20145205 《Java程序设计》实验报告五:Java网络编程及安全
20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...
- JAVA GC之标记 第五节
JAVA GC之标记 第五节 OK,我们继续昨天最后留下的问题,什么是标记?怎么标记? 第一个问题相信大家都知道,标记就是对一些已死的对象打上记号,方便垃圾收集器的清理. 至于怎么标记,一般有两种方 ...
- Java反射的小故事
Java反射的小故事: 首先定义一个Java类 package com.xiaoysec.test; public class Person { private String name; privat ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
JAVA之旅(十五)--多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止 我们接着多线程讲 一.生产者和消费者 什么是生产者和消费者?我们 ...
- “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- Java反射机制demo(五)—获得并调用一个类中的方法
Java反射机制demo(五)—获得并调用一个类中的方法 这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和 ...
- 20145221 《Java程序设计》实验报告五:网络编程及安全
20145221 <Java程序设计>实验报告五:网络编程及安全 实验要求 掌握Socket程序的编写 运行TCP代码包,结对进行,一人服务器,一人客户端 掌握密码技术的使用 利用加解密代 ...
- Java 设计模式系列(十五)观察者模式(Observer)
Java 设计模式系列(十五)观察者模式(Observer) Java 设计模式系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Java ...
- Java 设计模式系列(十五)迭代器模式(Iterator)
Java 设计模式系列(十五)迭代器模式(Iterator) 迭代器模式又叫游标(Cursor)模式,是对象的行为模式.迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(interna ...
随机推荐
- leetcode刷题(二)
1.栈 逆波兰表达式求值 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分.给定逆波兰表 ...
- 在npm中定义变量
Node_Dev=Dev 在js文件里可以通过prosess.env获取该变量
- Codeforces 1132E(大数据多重背包)
题目链接 题意 给定背包容量$w$,体积分别为$1$到$8$的物体的数量求不超过背包容量的最大体积 思路 考虑将答案转化成$840 * x + y$的形式其中$840 = lcm(1-8), y &l ...
- npm 局部安装 jbrowse
#此处不要加 -g参数 , -g 是全局安装 npm install @jbrowse/cli #用npx 才能使用这个包,无法按照官方文档直接使用 npx jbrowse --version
- 066_VFPage中Js Button与controller交互方式(一)
这种方式经常被用来,在button中处理一些逻辑,做法是在detail 页面中加一个button,对应是jS执行调用invoke controller Define a webService meth ...
- 自定义Lock实现
1 package com.wyt.lock.test; 2 3 import java.util.concurrent.LinkedBlockingQueue; 4 import java.util ...
- vscode中配置代码片段
首先我们需要把要配置的代码复制一下,如: 然后我们进入https://snippet-generator.app/网站, 进入网站之后就把你复制的代码粘贴到左边的框里面,然后就是代码的类型和命名了 写 ...
- 利用Opencv+Python 实现二维码识别
pip3 install pyzbar 准备工作: 二维码图片,我这里直接打印在了一张A4纸上,或者直接在草料网站上生成 草料二维码生成器,存放在手机上进行显示.在安装条码扫描库的时候大家注意:z ...
- Android 切换wifi小记
我手机是Android 7.1的魅族.相关网络权限注册之后,还有一个特别的权限就是<uses-permission android:name="android.permission.A ...
- 【DM论文阅读杂记】推荐系统 注意力机制
Paper Title Real-time Attention Based Look-alike Model for Recommender System Basic algorithm and ma ...