沈歌的博客

不甘平庸的心

服务端框架重构

server-service-framework-refactor

由于公司业务还是使用的paoding rose + jade + resin的技术架构,导致新员工学习成本高,且框架本身已经很多年没人维护了,所以决定迁移至springboot2 + mybatis + tomcat. 前言 以下是我的迁移实践,任何开发一般都是分为三步:写代码、测试、监控。 很多程序员,并不关注测试和监控,这就是俗称的“管杀不管埋”,写完代码就认为结束了,默认程序已经...

当前是否适合买房

Is it suitable to buy house in china

1. 收益:租金回报率太低 参考这篇文章:https://mp.weixin.qq.com/s/H9hjCEVIaWVts6b-zFANDA 南京不到2%的回报率。 2. 政策:房价调控: 策略 结果 限购 让二手房主觉得有的赚,减少流动性 限售 ...

MySQL索引原理及实战

mysql index

摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。 第一部分主要从数据结构及算...

做运营活动的几点心得

some thoughts about activity

做到可控 需要显示总数的活动,要注意总数显示多少,以一个什么样程度增长是符合预期的。 要有一个固定的曝光位置,这个是最基本的。 运营活动目标UV,目标获奖人数。可能多,也可能少。要防止完成用户过多,不可控,通过一些关键资源来控制,比如集卡活动中的稀有卡个数。用户过少,达不到预期。分为两部分:1. 没达到增长指标 2. 没达到奖励用户数预期 没达到增长指标,可能是活动入口曝光...

译:Java局部变量类型推断(Var类型)的26条细则

var work in progress

原文链接:https://dzone.com/articles/var-work-in-progress 作者:Anghel Leonard 译者:沈歌 Java局部变量类型推断(LVTI),简称var类型(标识符var不是一个关键字,是一个预留类型名),Java 10中通过JEP 286: Local-Variable Type Inference 添加进来。作为100%编译特征...

解决线上问题:static共享变量引起的并发问题

static-class-variable-cause-concurrent-problem

代码简要记录如下: LogIntegerceptor: 用于在请求返回前做日志记录 public class LogInterceptor implements HandlerInterceptor { @Override public void postHandle(HttpServletRequest request, HttpServletResponse res...

Java gc分析神器:gceasy

analyse-gc-log

分析gc日志是高阶java工程师的必备技能,之前一直听别人说要分析gc日志,分析gc日志,但是真正上手分析,看着gc日志又无从下手。 直到,知道了有这样的一个工具, http://gceasy.io/ 真的是一个神器,把gc日志输入,就能出gc分析报表。 示例:这是线上一个有gc问题的工程跑几天后的gc分析结果: http://gceasy.io/my-gc-report.jsp?p...

Java日志框架解析及实战分析

java-log-framework-choose

转载自: https://zhuanlan.zhihu.com/p/24272450 https://zhuanlan.zhihu.com/p/24275518 作为Java程序员,幸运的是,Java 拥有功能和性能都非常强大的日志库;不幸的是,这样的日志库有不止一个——相信每个人都曾经迷失在JUL(Java Util Log), JCL(Commons Logging), Log4j...

面试投行的20个Java问题

top-20-java-interview-questions-with-answers

如果你需要准备面试,可以看一下这篇博客中20个为Java开发人员准备的面试投行的问题。 大量的Java开发人员面试例如巴克莱银行(Barclays)、瑞士信贷集团(Credit Suisse)、花旗银行(Citibank)这样的投行的Java开发岗位,但是大多数人都不知道会被问什么问题。 这篇文章中,我将分享一些对于3年经验以上的程序员会被问的最多的问题。 对于两年及两年以下J...

算法之复杂度分析(极客时间《数据结构与算法之美》课程1-4学习笔记)

time-complexity

数据结构和算法的定义 广义上: 数据结构是指一组数据的存储结构 算法是操作数据的一组方法 狭义上,就是下面这张图 重点: 10个数据结构: 数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树 10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。 时间复杂度分析 方法: 只关注循环执行次数最多...