摘要: 一、背景 爬虫服务请求量大,为了应对反爬措施,增加爬虫的爬取效率和代理IP使用率,需要设计一个IP代理池,满足以下需求: 定时任务获取第三方代理 及时剔除IP代理池中失效的IP 业务隔离IP 若IP未失效,但对某个业务来说,IP被封,需要针对业务,隔离此IP 均衡使用IP 避免IP使用频率不均问题 阅读全文
posted @ 2019-05-13 18:03 清泉白石 阅读(1901) 评论(0) 推荐(0) 编辑
摘要: 一、背景 服务有定时任务,当服务部署到多个节点时,每个节点在同一个时间点都会执行相同的定时任务,需要做的是,让同一个时间点,每一个定时任务只在一个节点上执行。 二、 解决方案思路 单独设置任务调度服务 使用Redis实现 使用XXL JOB实现 使用Elastic Job框架实现 使用LTS框架实现 阅读全文
posted @ 2019-05-13 18:00 清泉白石 阅读(10689) 评论(1) 推荐(1) 编辑
摘要: 依赖关系 方法 doExecute方法 最后请求会交给MinimalClientExec 对象处理。 MinimalClientExec 基础回顾 Blocking I/O JAVA I/O分为BIO(Blocking IO)、NIO(Non blocking IO)和AIO(Asynchronou 阅读全文
posted @ 2019-05-13 12:31 清泉白石 阅读(531) 评论(0) 推荐(0) 编辑
摘要: HttpClient是支持Http协议的客户端编程工具包。 一、简单使用 1.1 引入依赖 1.2 一个简单的Get请求 1.3 Post请求、请求头、请求参数 1.4 使用代理 1.5 设置超时时间 HttpClient内部有三个超时时间设置:连接池获取可用连接超时,连接超时,读取数据超时 先连接 阅读全文
posted @ 2019-05-13 12:30 清泉白石 阅读(651) 评论(0) 推荐(1) 编辑
摘要: 一、两数之和 1.1 题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 1.2 解题思路 有目标数,又限制是两个数之和,所以知道若一个数为nums[i],则另一个数为target nums[i]。 借助Ma 阅读全文
posted @ 2019-05-13 07:30 清泉白石 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 一、不同路径(LeetCode 62) 1.1 题目介绍 "62. 不同路径" 1.2 解题思路 计数型动态规划 最后一步 最右下角的坐标假设为(m,n),则假设走到(m,n)所有可能的路径为f[m][n] 子问题 走到(m,n)的前一步有两种可能一种是(m 1,n),一种是(m,n 1) 状态转移 阅读全文
posted @ 2019-05-13 07:27 清泉白石 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 一、买卖股票的最佳时机(LeetCode 121) 1.1 题目介绍 "121. 买卖股票的最佳时机" 1.2 解题思路 想要利润最大,尽可能地要保证购买的时候价格最低,总利润最高。由此可以列出状态转移方程。 buy = min{buy,price} profilt = max{profilt,pr 阅读全文
posted @ 2019-05-13 07:27 清泉白石 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 一、概念 通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。 二、题型特点 计数 有多少种方式走到最右下角 求最大值最小值 从左上角走到右下角的最大数字和 求存在性 能否选出k个数使得和为sum 三、如何使用动态规划 这里先看一道Lee 阅读全文
posted @ 2019-05-13 07:25 清泉白石 阅读(1172) 评论(0) 推荐(0) 编辑
摘要: 介绍 JDK1.8引入CompletableFuture类。 使用方法 API supplyAsync方法 JDK方法描述 应用场景 请求A的执行方法X,需满足下列需求: ①请求B、C、D中任一一个请求有返回结果,则X方法返回响应结果。 ②请求B、C、D中都执行完,则X方法返回响应结果。 源码阅读 阅读全文
posted @ 2019-05-13 07:21 清泉白石 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 一、线程池的介绍 线程池一种性能优化的重要手段。优化点在于创建线程和销毁线程会带来资源和时间上的消耗,而且线程池可以对线程进行管理,则可以减少这种损耗。 使用线程池的好处如下: 降低资源的消耗 提高响应的速度 提高线程的可管理性 二、线程池的使用 运行结果 如果将线程池的大小设置为3, ,则运行结果 阅读全文
posted @ 2019-05-13 07:20 清泉白石 阅读(316) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal,叫做线程本地存储,也可以叫做线程本地变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。 一、如何使用 二、什么场景下使用 需要避免任务在共享资源上产生冲突。 三、源码分析 3.1 WeakReference 讲到弱引用,就 阅读全文
posted @ 2019-05-13 07:19 清泉白石 阅读(183) 评论(0) 推荐(0) 编辑