1. 轮椅上的少年

    就在昨天(2017.7.3),对,没错,就在昨天,一个突发事件,造成了我的右脚骨折,由于种种原因,今天上才能赶到医院,戳着一根棍子,下着大雨,顿时觉得北京这座城市离我好远,好陌生。但是生活还要继续,班还是要上,饭还是要吃,打开uber,biu搀扶着我在路边等了20分钟,一辆车没有,只能一瘸一拐的淌水过去,很近,很近的距离,平时几分钟的步行路程,我们足足走了二十分钟,雨下的让人好陌生,还有呼啸的风,当时就在想,如果是我孤身一人,真的不知道怎么才能走完这二十分钟,怎么淌过小河似的马路,瞬间有一丝心酸的感觉涌上心头。

    2017/07/05 随笔/感想

  2. 关于最近的一段时间

    1. 离开 自从上个月(2017/4/21)在老东家离职后一直到最近的五一结束,整个人处于狂hi状态,在简短的五一结束后,已经开始陆陆续续的刷面试了,也许这是一个新的开始。(不知不觉已经五个月没更新blog了…) 2. 离职后经历 虽然离职后一直处于和biu无所事事闲逛游玩状态,但是没有了工作的烦恼,但随之后续的问 题也越来越严重,那就是我是裸辞的。果然,这是一大禁忌啊,但是无奈事情已经发生,也就无所谓了,但是这漂泊的这段期间,发生了个有趣的悲剧事情,那就是丢了一个佳能单反,好吧,这是我人生第一台单反,看了监控视频后,才发现,原来自己是那么粗心大意,就让小偷那么简单的在自己的眼皮底下拿走了我的佳能。啊,人生啊,值得纪念。 3. 面试与技术 五一之后了就开始面试了,但是啊,人生啊。这可能算是这辈子第一次正经八百的面试吧。面了几家公司,发现我这两年在潮流的技术中已经落伍太多了,但是也有一个优点,那就是万变不离其宗,对于java来说,只要底子不赖,那些框架什么的上手还是非常快的,理解起来也很迅速。其次来说有我觉得现在一般的面试套路有以下几点: 线程相关 锁(sync和Lock) 线程池 异步计算 一些相关概念: 重入锁 轻量级锁 重量级锁 KClass对象头 悲观锁 乐观锁 AQS原理和相关实现(并发集合/Lock) NIO相关(通信方面一定要了解[IO/NIO/AIO]) NIO模型 NIO选择器 xxxx 高并发的解决方案 数据静态化 缓存 数据库集群 负载均衡 CDN加速 设计模式和设计原则 工厂模式 代理模式 组合模式 开闭原则 相关的分布式框架以及中间件 分布式任务调度框架 消息中间件(各种MQ) 分布式通信 常见的分布式框架 数据结构以及算法相关 没啥好说的,看看JCF就能应付一般的 基本的排序算法(冒泡,快排,归并) 二分查找/Top10/and so on 树的性质和相关操作 Spring相关(面了两家,并没有怎么问Spring的东西) 简历项目相关内容 前端相关

    2017/05/08 随笔/感想

  3. 知乎爬虫之5:爬虫优化

    本文由博主原创,转载请注明出处 github爬虫项目地址(已完成,关注和star在哪里~~):https://github.com/MatrixSeven/ZhihuSpider 1. 使用多线程加速 什么,爬虫爬起来数据太慢了,怎么办?你那当然是开启多线程了。那么多线程是什么我就不介绍了。如果还不知道的,请左移多线程百度百科。 恩,知道了多线程,但是多线程如果自己控制的话,会很不好控制,所以咱们还需要两个线程池,一个负责拿到个人信息,一个负责获取用户的token。接下来让咱们之前写的ParserBase类实现Runnable,然后在ParserFollower里和ParserUserInfo里分别实现run方法,其实也很简单了,就是把之前的爬去逻辑,丢到run方法里。然后咱们就开启了多线程之旅。 但是在存取数据的时候会遇到很多问题,比如数据会重复,这就出现了脏数据,那么咱们就是适当的加锁。来保证数据的干净。 2. 使用队列减少数据库访问 如果说数据重复的问题解决的,那么咱们还有一个大问题,因为两次爬到的可能是同一个人,但是一份在数据库里,一份在正在跑的内存里,怎么办,当然是要连接下数据库,然后判断是数据是否已经在数据库中存在了,那么在多线程且获取速度很快的情况下,那么将会频繁访问数据库,造成速度缓慢,数据库链接数过多,cpu使用率过大,那咱们怎么除处理这个问题呢? 首先大家都一定知道,在现在内存非常大的今天,咱们完全可以把一部分数据直接缓存下载,而且程序访问内存的代价要比访问数据库的代价要小的太多。 因此,咱们可以用一个list把咱们已经有的token存下来,然后每次去这个list里去做验证,这样,就减少了数据库的访问了频率。 3. 实现LRU提高缓存命中率 如上所说,用一个list的确是起到了减少数据库访问的目的,但是效果好像不如想象那么好,因为数据库里100k的数据,咱们不可能把所有数据都缓存下载,那么怎么才能在优化下呢? 这时候就要合理的处理这个list了,自己实现一个LRU缓存,来调高命中率。 那么lru是什么?y一句话LRU是Least Recently Used 近期最少使用算法,也叫淘汰算法。 具体实现和思想可见缓存淘汰算法–LRU算法。 按照这个思想,其实还有个优化,那就是根据碰撞次数和上次碰撞时间进行移除。咱们只是实现简单的,具体实现在https://github.com/MatrixSeven/ZhihuSpider 4 截图

    2016/12/30 Java

  4. 妙用缓存调用链实现JS方法的重载

    本文由博主原创,转载请注明出处

    2016/12/23 JavaScript

  5. 知乎爬虫之4:抓取页面数据

    本文由博主原创,转载请注明出处

    2016/12/11 Java

  6. 打造一个简单的万能ExcelReads工具

    本文由博主柒。原创,转载请注明出处 完整源码下载地址 [https://github.com/MatrixSeven/ExcelReads) 之前有段时间要读取Excel,而且是那种简单格式的。就是表头,行列二维的数据。 索性写了个工具,专门应付这类Excel,基于POI,完美应付xlsx xls。 嗯,这个东西诞生了,也许设计的不是很优美,但是这里还是和大家分享,纪录下自己的进步。 1.已经完成内容 能够读取行列二维的Excel 能够分别读取sheel,结束开始行数 能够自动映射为Map类型和自定义对象类型(目前属性都为String类型) 能够支持直接映射对象实体属性 能够支持正则匹配行数据(可能对效率有损伤,已经实现,但不建议使用) 支持以某个列字段为Key生成Map<String,T>类型数据 能够单独处理某一行数据,能够标记时候放弃某一列,能够根据列内容判断时候保留数据 请使用jdk6以上版本运行

    2016/11/29 Java

  7. 知乎爬虫之3:请求分析

    本文由博主原创,转载请注明出处

    2016/11/26 Java

  8. JDK动态代理的invoke方法的第一个参数是什么

    本文由博主原创,转载请注明出处 在知乎回答的一个问题,不过跑题了,但是还是有些价值的,搬到博客,原文链接 java InvocationHandler invoke方法的第一个参数有什么用?

    2016/11/25 Java