爬虫技术
java爬虫技术
CallMeJacky
如果你有梦想的话,就要去捍卫它 。
展开
-
【PostMan】测试Post请求
在我们调试代码时,经常需要提交表单到后台,有些时候为了调试后台的内容,需要重复输入表单的内容,此时,我们可以借助PostMan帮助我们每次都能够自动提交表单。1. 复制表单内容F12打开调试面板,填写表单,并提交。在Network中找到出现问题的表单提交请求,如下图所示。点击该请求,会出现下图,找到Form Data,并复制id: name: 数据结构与算法分析:Java语言描述(...原创 2019-10-15 13:37:31 · 4350 阅读 · 0 评论 -
【java】爬虫之零基础利用postman分析并实现12306余票查询功能
今天尝试了一下分析12306网站的余票查询接口,实现12306余票查询功能。1.查找并分析余票查询API接口笔者的查询的是2019-09-04广州到驻马店的车票信息,ajax请求地址为:https://kyfw.12306.cn/otn/leftTicket/queryT?leftTicketDTO.train_date=2019-09-04&leftTicketDTO...原创 2019-09-04 16:49:10 · 232271 阅读 · 4 评论 -
【java】正则表达式的使用
简介今天总结一下java正则表达式,java正则表达式是一个非常强大的功能,从事爬虫工作的程序员对它一定相当熟悉。好啦,废话不多说~。首先,需要明确的是,由于Java字符串处理底层还是通过正则表达式实现,因此,下述两种方式是等效的:public String replaceFirst(String regex, String replacement)public String repl...原创 2019-08-05 19:31:06 · 296 阅读 · 0 评论 -
【java】Selenium爬虫控制谷歌浏览器
每逢佳节倍思亲,中秋节到了,这里祝愿大家中秋节快乐。今天主要向大家介绍的是如何自动打开浏览器并自动搜索指定内容。1. 下载谷歌浏览器驱动为什么要下载驱动?因为一般的写爬虫的方法是用脚本直接对目标网站进行访问,而且只对目标数据进行采集,访问速度很快,这样目标网站很容易就识别出你是爬虫,然后把你封锁了。这个时候,为了更加像人浏览网站,需要一个控制器来控制浏览器,这样就可以避开封锁,很多...原创 2019-09-13 14:49:06 · 1732 阅读 · 0 评论 -
【java】乐观锁与悲观锁
一般来说,对于并发的场景,我们通常使用锁来保证线程安全:锁是一种悲观的策略。它总是假设每一次的临界区操作会产生冲突,因此,必须对每次操作都小心翼翼。如果有多个线程同时需要访问临界区资源,就宁可牺牲性能让线程进行等待,所以说锁会阻塞线程执行;无锁是一种乐观的策略,它会假设对资源的访问是没有冲突的。既然没有冲突,自然不需要等待,所以所有的线程都可以在不停顿的状态下持续执行。无锁的策略使用一种叫做...原创 2019-10-06 14:32:47 · 273 阅读 · 0 评论 -
【java】同步锁与synchronized关键字的用法
在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了。因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的。而操作系统实现线程之间的切换这就需要从用户态转换到核心态,这个成本非常高...转载 2019-05-13 19:58:58 · 1098 阅读 · 0 评论 -
【java】多线程之join方法
在逛论坛的时候发现这样一个问题:Thread tt = new Thread(new HelloRunnable());tt.start();tt.join();既然java中join是让当前线程等待线程tt终止,然后再继续执行当前线程,那么,为什么还要生成threadtt干吗呢,不直接全在当前线程里顺序执行?效果不是一样?比如有两个线程一个是主线程,另一个是我们定义的线程,我...转载 2019-09-25 22:16:00 · 203 阅读 · 0 评论 -
【java】多线程的三刀流
目录1. 多线程介绍2. 多线程优化及性能比较2.1单线程2.2 第一刀:线程池与程序计数器2.3 第二刀:Fork/Join框架2.4 第三刀:JDK8并行流3. 总结1. 多线程介绍在编程中,我们不可逃避的会遇到多线程的编程问题,因为在大多数的业务系统中需要并发处理,如果是在并发的场景中,多线程就非常重要了。另外,我们在面试的时候,面试官通常也会...转载 2019-09-17 19:47:23 · 252 阅读 · 0 评论 -
【java】多线程之synchronized锁的理解
1. synchronized基本用法synchronized三种用法: 对象锁:当使用synchronized修饰类普通方法时,那么当前加锁的级别就是实例对象,当多个线程并发访问该对象的同步方法、同步代码块时,会进行同步。 类锁:当使用synchronized修饰类静态方法时,那么当前加锁的级别就是类,当多个线程并发访问该类(所有实例对象)的同步方法以及同步代码块时,会进行同...转载 2019-09-17 12:30:53 · 221 阅读 · 0 评论 -
【java】从一个bug中学习swing中多线程如何更新UI
1. 遇到的问题 今天在做项目的时候遇到一个问题,就是一个无法定位错误的问题:Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2,输出的错误信息并没有对应到我编写的代码部分,也就是说我写的代码没有问题,是swing内部的问题?问题如下:Excep...原创 2019-07-17 11:40:46 · 2101 阅读 · 0 评论 -
【java】多线程控制工具类CountDownLatch
本文转载自:倒计时器:COUNTDOWNLATCHCountDownLatch是一个非常实用的多线程控制工具类。常用的就下面几个方法:CountDownLatch(int count) //实例化一个倒计数器,count指定计数个数countDown() // 计数减一await() //等待,当计数减到0时,所有线程并行执行CountDownLatch在我工作的多个场景被使用...转载 2019-07-08 20:17:54 · 93 阅读 · 0 评论 -
【Java】多线程之不使用锁保证数据的一致性
1. Immutable Object(不可变对象)模式多线程共享变量的情况下,为了保证数据的一致性,往往需要对这些变量的访问进行加锁。而锁本身又会带来一些问题和开销。Immutable Object模式的意图:通过使用对外可见的状态不可变的对象(即Immutable对象),使得共享对象“天生”具有线程安全性,而无需额外添加同步访问控制。达到即保证数据的一致性,又避免同步访问控制所产生的额...原创 2019-04-30 14:09:39 · 2954 阅读 · 0 评论 -
【Java】多线程之原子性与内存可见性
1. 原子性与内存可见性原子操作是指一组不可分割的操作。例如对于count++操作,实际上有三个具体步骤:读取count的当前值; 执行count+1操作; 将执行结果重新赋给count。在多线程场景下,像上述的非原子操作可能会受到其他线程的干扰。比如,上述例子若没有进行线程同步处理,就可能会出现一个线程虽然已经更改了count值,但是还没有写入到内存中,此时,出现另一个线程读取内存...原创 2019-04-30 13:34:36 · 197 阅读 · 0 评论 -
【Java】多线程基础
1. 多线程的优势与风险优势如下:优势 说明 提高系统的吞吐率 多线程编程使得一个进程中可以有多个并发操作。例如,当一个线程因为IO操作而等待时,其他线程可以占用其释放的CPU执行其操作。 提高响应性 对于GUI软件而言,一个慢的操作不会导致软件界面出现被“冻住”的现象而无法响应用户的其他操作; 对于Web应用程序而言,一个请求的处理慢了并不会影响...原创 2019-04-29 20:33:44 · 257 阅读 · 0 评论 -
【java】System.getProperty("java.io.tmpdir") 获取系统临时目录
本文转载自:Java System.getProperty("java.io.tmpdir") 获取系统临时目录System.getProperty("java.io.tmpdir") 是获取操作系统的缓存临时目录windows:C:\Users\登录用户~1\AppData\Local\Temp\ linux:/tmp可以获取系统的配置信息,下面说一下System.getProper...转载 2019-07-09 20:34:54 · 2920 阅读 · 0 评论 -
【java】解析XML
谈到解析xml,大部分人都会推荐您使用dom4j,这里给出官方地址:https://dom4j.github.io/笔者下载的是dom4j-2.1.1,注意java的版本要求至少为java 8.现在介绍一下需求:有下面的代码,下面的代码主要的问题在于参数都被硬编码到了java代码里面,每次都需要修改java代码才能修改参数,笔者想用xml的方式保存这些参数信息,代替这种硬编码的方...原创 2019-06-13 14:36:50 · 135 阅读 · 0 评论 -
【java】字符串列表与字符串的相互转换
经常需要用到将字符串列表转换为字符串,或者将字符串转换为字符串列表,今天总结一下:目录1.将逗号分隔的字符串转换为List2.将List转换为以逗号分割的字符串2.1 字符串拼接法2.2 调用jar包1.将逗号分隔的字符串转换为ListString str = "a,b,c"; List<String> result = Arrays.asList(st...转载 2019-09-19 22:00:58 · 6173 阅读 · 0 评论 -
【java】字符串编码检测
package com.sim.common;public class EncodeHelper { // ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16 public static String ENCODING_UTF8 = "UTF-8"; public static String ENCODING_GBK = "GBK"; public st...转载 2019-08-14 09:10:41 · 979 阅读 · 0 评论 -
【java】字符串处理
本文参考自:java Split如何去除一个空格和多个空格假如有如下的字符串,两端和中间含有不定个数的空格,现在需要将该字符串分割成七个数字字符串。 0.0002 0.0002 0 0.0048 0.0001 0 1.6000String[] strings = line.trim().split("\\s+ ");...转载 2019-05-06 11:15:02 · 116 阅读 · 0 评论 -
对象与对象集合序列化为json字符串
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Newtonsoft.Json;namespace Common{ public class JsonHelper<T> { /// <summary> ///...原创 2018-06-27 17:41:25 · 1035 阅读 · 0 评论 -
js获取客户端浏览器类型
【应用场景】在使用jquery easyui的form插件时,chrome返回json数据总是被添加了样式,其他浏览器都能正常返回json数据。尝试使用jqeury的ajax方法提交表单也没有出现问题。为了绕过错误以及为了学习easyui的使用,所以笔者采用如下解决方案:(1)判断浏览器是否为chrome浏览器;(2)若是chrome浏览器,则使用jquery的ajax方式提交表单;否则,采用ea...原创 2018-06-28 18:57:25 · 883 阅读 · 0 评论