首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    爬虫进阶:Scrapy抓取

    前言   Scrapy抓取免费以及实战课程信息,相关环境列举如下: scrapy v1.5.1 redis psycopg2 (操作并保存数据到PostgreSQL) 数据表   完整的爬虫流程大致是这样的...can_learn" IS '什么'; COMMENT ON COLUMN "public"."tb_imooc_course"."...Field() # 教师头像 teacher_job = Field() # 教师职位 tip = Field() # 课程须知 can_learn = Field() # 什么...Field() # 教师职位 suit_crowd = Field() # 适合人群 skill_require = Field() # 技术要求 "免费课程"爬虫编写   下面分析下免费课程页面的爬虫编写..."实战课程"爬虫编写   继续介绍实战课程页面的爬虫编写,同样简单分析下页面情况,实战课程定义的数据表(tb_imooc_coding)信息,同样需要从列表页和课程详情页获取(如下图红框所示):

    1.8K40

    高并发实战(二)-并发基础

    而在另外一个核上通过该标记位判定数据是否已经写入,这时候就可能出现不一致,标记位先被写入,但是实际的操作缺并未完成,这个未完成既有可能是没有计算完成,也有可能是缓存没有被及时刷新到主存之中,使得其他核读到了错误的数据 3.Java...内存模型(Java Memory Model,JMM) JAVA内存模型规范: 1.规定了一个线程如何和何时可以看到其他线程修改过后的共享变量的值 2.如何以及何时同步的访问共享变量 JAVA...java内存分配 Heap(堆):java里的堆是一个运行时的数据区,堆是由垃圾回收来负责的, 堆的优势是可以动态的分配内存大小,生存期也不必事先告诉编译器, 因为他是在运行时动态分配内存的...,java的垃圾回收器会定时收走不用的数据, 缺点是由于要在运行时动态分配,所有存取速度可能会慢一些 Stack(栈):栈的优势是存取速度比堆要快,仅次于计算机里的寄存器,栈的数据是可以共享的...线程和主内存的抽象关系 每个线程之间共享变量都存放在主内存里面,每个线程都有一个私有的本地内存 本地内存是java内存模型中抽象的概念,并不是真实存在的(他涵盖了缓存写缓冲区。

    55730

    高并发实战(三)- 项目准备

    一些注解的准备 线程安全注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import...java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 对于线程安全的类,加入一个@ThreadSafe...; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target...* 注解将被编译器记录在类文件中,但在运行时由VM保留,这样他们可以被反射获取(当你需要获取注解中字段的属性值的时候,需要用这个,比如AOP) * @see java.lang.reflect.AnnotatedElement...Semaphore import com.gwf.concurrency.annoations.NotThreadSafe; import lombok.extern.slf4j.Slf4j; import java.util.concurrent

    87610
    领券