UBS实习总结
英语
收获很多, 比如英文邮件格式啊, 一些职场英语简称啊, 当然还有单词, 和其让人用英语交流.
在这里, 会让你感觉有些东西用中文表达出来有些怪, 因为大家都是用英语表达这个东西, 比如deploy, build, 也就造成了这样地现象, 每说一句话, 都要夹杂一些英语.
每次开会, 都要先确定一下开会人数, 如果人很多, 摸鱼就好, 如果人少, 或者都是自己组里的, 大概率是要发言了, 特别是有外国人参加的会议, 都要提前写好发言稿. 比如ACQA data weekly sync up, Andrea的会议
万幸的是, 带我做项目的是伦敦华人Guo Rui, 每次catch up可以用中文, 当然如果是一个外国人的话, 可能我的英语会更上一层楼? 那样的话, 可能我也会更加难受.
这里的电脑默认都是英文, VM里甚至没有中文输入法… 最开始那阵真的不习惯, 他甚至屏蔽了百度翻译, 谷歌翻译等等市面上见得到的翻译网站, 在内部搭建了一个翻译平台, 极其难用, 每次翻译要勾选三个I confirm… 而且看请求里会带上自己的GPN? 难道翻译个东西还要被统计吗? 好在另一位同事发现搜狗翻译可以用, 推给了我.
同事
同事很nice, 都是top学校的研究生, 2复旦 2北大 1人大 + 我, 倒是显得有些不合群了. 但他们都不是计算机专业的, 这也应该是我的优势了吧.
有些怀念每天在想去哪里吃午饭的时光, 最多的当然是环球, 也会去上海中心, 览海国际, 正大广场, 东亚银行, 上海国金中心… 便宜的不到30, 贵的60-70, 而且质量一般.
双11晚上去牛new吃得很爽, 有服务员剥虾, 皮皮虾, 鲍鱼, 扇贝, 肥牛…
Spring Boot
配置文件
是可以随便写的, 比如下面, ${SCHEMA_NAME}是环境变量, 可以在idea的run config里定义
1 2 3
| application: sql-dir: /ships/migration schema-name: ${SCHEMA_NAME}
|
读取配置文件内容:
1 2
| @Value("${application.schema-name}") private String schemaName;
|
也可以在定义Bean的时候, 直接作为参数传入
1 2 3 4
| @Bean public MaintainDbStructureFromYaml getMaintainDbStructureFromYaml(@Value("${application.schema-name}") String schemaName) { return new MaintainDbStructureFromYaml(schemaName); }
|
可以写一个application-test.yml
用于unit test, 在test里的类上用@ActiveProfiles("test")
指定
Bean
1 2 3 4 5 6 7
| @Configuration public class HierarchyDataConfig { @Bean("maintainDbStructureFromYaml") public MaintainDbStructureFromYaml getMaintainDbStructureFromYaml(@Value("${application.schema-name}") String schemaName) { return new MaintainDbStructureFromYaml(schemaName); } }
|
单例模式, 使用时需要在@Component
修饰的类里
1 2 3 4
| @Resource private MaintainDbStructureFromYaml maintainDbStructureFromYaml; @Resource(name = "maintainDbStructureFromYaml") private MaintainDbStructureFromYaml maintainDbStructureFromYaml;
|
也可直接在Bean的参数里使用
1 2 3 4 5
| @Bean public MaintainDbFromYaml getMaintainDbFromYaml(@Value("${application.schema-name}") String schemaName, MaintainDbStructureFromYaml maintainDbStructureFromYaml) { return new MaintainDbStructureFromYaml(schemaName,maintainDbStructureFromYaml); }
|
unit test(Mock)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| @SpringBootTest(class = {FileWalker.class}) @ActiveProfiles("test") @RunWith(SpringRunner.calss)
public class DbConfigTest { @Mock JdbcTemplate jdbcTemplate; @Mock List<Map<String, Object>> indexResultList; @Before public void beforeTest() { indexResultList = ...; when(jdbcTemplate.queryForList(anyObject())).thenReturn(indexResultList); } @After public void afterTest() { } @Test public void testSchemaLoader() { A a = new A(); a.f(jdbcTemplate); } }
|
@SpringBootTest(class = {FileWalker.class})
随便指定一个class, 可以不启动Spring就跑test
也可以Mock 查询数据库返回的ResultSet. 轮子: https://github.com/mcrisc/mock-resultset 不得不感叹java生态的强大
tricks
自定义SpringBoot启动logo(ASCII形式 http://www.network-science.de/ascii/ ), banner.txt
放在resource
目录下,自动替换
Spring启动就执行SQL, 将init.sql
放在resource
文件夹里, 配置文件中:
1 2 3 4 5 6 7 8
| spring: datasource: url: username: password: schema: - classpath:/init.sql initialization-mode: ALWAYS
|