ARTS第二周

ARTS第二周

Algorithm

多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入: [3,2,3]
输出: 3
示例 2:

输入: [2,2,1,1,1,2,2]
输出: 2

class Solution {
    public int majorityElement(int[] nums) {
        int count = 0;
        Integer candidate = null;

        for (int num : nums) {
            if (count == 0) {
                candidate = num;
            }
            count += (num == candidate) ? 1 : -1;
        }

        return candidate;
    }
}

Review

http://blog.cleancoder.com/uncle-bob/2011/01/17/software-craftsmanship-is-about.html

从现在开始我们将要做的是:

  • 我们将了解自己的日程安排,因为知道快速前进的唯一方法就是保持良好状态。
  • 我们将通过编写最好的代码来使客户满意。
  • 我们将通过创造最好的设计来尊重我们的雇主。
  • 我们将通过测试可以测试的所有内容来表彰我们的团队。
  • 我们将谦虚起来,首先编写那些测试。
  • 我们将练习,以便使我们的技能变得更好。

我们会记得我们的祖母和祖父告诉我们的内容:

  • 任何值得做的事都值得做好。
  • 踏实和稳重是赢得比赛的关键。
  • 测量两次,切一次。
  • 练习,练习,练习。

Tip

客户端 SDK 实现连接池的方式,包括池和连接分离、内部带有连接池和非连接池三种。要正确使用连接池,就必须首先鉴别连接池的实现方式。比如,Jedis 的 API 实现的是池和连接分离的方式,而 Apache HttpClient 是内置连接池的 API。

对于使用姿势其实就是两点,一是确保连接池是复用的,二是尽可能在程序退出之前显式关闭连接池释放资源。连接池设计的初衷就是为了保持一定量的连接,这样连接可以随取随用。从连接池获取连接虽然很快,但连接池的初始化会比较慢,需要做一些管理模块的初始化以及初始最小闲置连接。一旦连接池不是复用的,那么其性能会比随时创建单一连接更差。

最后,连接池参数配置中,最重要的是最大连接数,许多高并发应用往往因为最大连接数不够导致性能问题。但,最大连接数不是设置得越大越好,够用就好。需要注意的是,针对数据库连接池、HTTP 连接池、Redis 连接池等重要连接池,务必建立完善的监控和报警机制,根据容量规划及时调整参数配置。

Share

Java线程池实现原理及其在美团业务中的实践

你可能感兴趣的:(左耳听风)