selenium 使用 chrome 的 headless 模式
#### 无界浏览器爬虫之selenium使用chrome的headless模式 > chrome浏览器更新到59版本之后终于在正式版里加入了headless模式 ,也就是可以操纵chrome进入无界面模式,以前写爬虫的时候使用无界浏览器普遍是用phantomjs,chrome浏览器加入headless模式毫无疑问会干掉phantomjs,今晚下班回到家写个代码正好尝试下效果。 这是我用springboot写的一个简单的chrome之headless无界浏览器爬虫抓取天眼查 首先gradle走起来, ``` group 'net.yuxianghe' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'spring-boot' //生成的jar包包名和版本 jar { baseName = 'test' version = '0.1.0' } sourceCompatibility = 1.8 targetCompatibility = 1.8 buildscript { repositori...

2019-01-24 15:06

类型:工作 标签:headless,chrome,无界浏览器

java8 的 hashmap 源码简单分析
> 原来的hashmap采用的是数组加链表的方式,关于java里面实现链表我前面的文章有提到过实现思路,使用静态链表。在java8里是采用了数组+链表+红黑树。 ``` static final int TREEIFY_THRESHOLD = 8; ``` 只要阀值超过了8,链表会转换为一棵平衡二叉查找树 数据结构的每一个小格子存储的数据为一个桶,桶后面存储的每一个数据为bin,这是java8里面的注释说这玩意儿叫bin。 ``` static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 ``` capacity 为桶的容量,默认初始值为16,最大为,2^30==1073741824 ``` static final int MAXIMUM_CAPACITY = 1 << 30; ``` 当量变少的时候,树会转变为链表,也有一个阀值,当低于6的时候会变化为树来存储。 ``` static final int UNTREEIFY_THRESHOLD = 6; ``` 以前学习数据结构和算法的时候用c实现过简单的hashma...

2019-01-24 15:05

类型:工作 标签:hashmap,java

实时更新 jar 包里的某个 class 类文件
> 部署在google云里的应用突然有一个类做了修改,删除掉从新上传的话,一个jar包传上去就得等半小时,墙有点高,你懂的,所以要是能单独更新某个class文件就最棒了,方法当然是有的,如下所示。 ``` jar tvf test.jar | less ``` 通过上面这个搜索出自己要更新的class文件的目录,在当前路径下建立好目录 ``` mkdir -p BOOT-INF/classes/net/yuxianghe/core/ cp Test.class BOOT-INF/classes/net/yuxianghe/core/ ``` 要更新的class的目录建立好了之后直接更新到jar里即可,如下命令所示: ``` jar -uvf test.jar BOOT-INF/classes/net/yuxianghe/core/Test.class ``` 到这里jar包就做到了只更新单个类文件

2019-01-24 15:05

类型:工作 标签:jar,java

jstat 之 gcutil 数据解析
> jstat之gcutil数据解析 今天刚好用到jstat来查看java应用内存情况,发现数据参数和以前的不太一样,主要是因为环境是java8,java8多了个点东西,比如Metaspace。 例子: ``` ##pid为4007的应用的情况,每2秒钟显示一次 jstat -gcutil 4007 2000 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 37.03 0.00 20.87 86.82 94.40 89.37 1640 9.248 6 0.658 9.907 ``` S0: Survivor space 0 utilization as a percentage of the space's current capacity. 幸存者区0 S1: Survivor space 1 utilization as a percentage of the space's current capacity. 幸存者区1 ...

2019-01-24 15:04

类型:工作 标签:jstat,gcutil,java

spring-boot 使用 mongodb 查询时只返回某些字段值
> springboot使用mongodb查询的时候会遇到服务器出口带宽压力大的情况,原因可能是查询mongodb的时候把整个对象给拖下来了,事实上我们只需要其中的某些字段,多余的字段返回的话会给小水管的带宽加上压力,也就是说我们的mongodb查询时只需要返回某些字段。 看了很多人的各种文章感觉要么是哪里抄袭的要么是哪里拷贝的,根本不靠谱,自己去查询了下官方文档,实现方法很简单: 直接使用mongoTemplate来查询,只返回主键,name,status字段。(主键是默认返回的) ``` Query query = new Query(); query.addCriteria(Criteria.where("status").is(3)); query.skip(skipNumber); query.limit(pageSize); query.fields().include("name").include("status"); return mongoTemplate.find(query, CompanyInformation.class); ```

2019-01-24 15:03

类型:工作 标签:mongodb,spring,java

我与我周旋久 独孤影 开源实验室