- 博客(10)
- 收藏
- 关注
原创 提供线程内部的局部变量。可以通过 ThreadLocal 在同一线程,不同组件中传递公共变量
ThreadLocal 类是用来提供线程内部的局部变量。这种变量在多线程环境下访问(get 和 set 方法访问)时能保证各个线程的变量相对独立于其他线程内的变量。 ThreadLocal 实例通常来说都是 private static 类型的,用于关联线程和上下文。 作用 传递数据 提供线程内部的局部变量。可以通过 ThreadLocal 在同一线程,不同组件中传递公共变量。 线程并发 适用于多线程并发情况下。 线程隔离 每个线程的变量都是独立的,不会相互影响。 Thr
2021-03-11 22:19:39 211
原创 负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要
Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。 Scheduler(调度器): 负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要 时,交还给引擎。 Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider
2021-03-11 22:18:15 512
原创 创建项目时,会在当前目录下新建爬虫项目的目录。
在开始爬取之前,必须创建一个新的 Scrapy 项目。 进入您打算存储代码的目录中,运行下列命令: 注意:创建项目时,会在当前目录下新建爬虫项目的目录。 这些文件分别是: scrapy.cfg : 项目的配置文件 quotes/ : 该项目的python模块。之后您将在此加入代码。 quotes/items.py : 项目中的item文件. quotes/middlewares.py : 爬虫中间件、下载中间件(处理请求体与响应体) quotes/pipelines.py : 项
2021-03-11 22:17:22 193
原创 对于有序数组,还可使用二分查找提高检索速度。
1.1 为什么需要树这种数据结构 1) 数组存储方式的分析 优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 [示意图] 画出操作示意图: 2) 链式存储方式的分析 优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可, 删除效率也很好)。 缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历) 【示意
2021-03-11 22:16:18 245
原创 每个线程在自己的工作内存交互,内存控制不当会造成数据不一致
很多多线程是模拟出来的,真整的多线程是指有多个cpu,即多核,如服务器。如果是模拟出来的多线程,在一个cpu的情况下,同一个时间点,cpu只能执行一个代码,因为切换的快,所以就有同时执行的错觉。 ? @线程是独立的执行路径 ? @在程序运行时,即使自己没有创建线程,后台也会有多个线程,如主线程,gc线程 ? @在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序不能人为干预 ? @线程会带来额外的开销,如cpu调度时间,并发控制开销 ?
2021-03-11 22:15:14 646
原创 区别在于RecursiveAction任务没有返回值,RecursiveTask任务带有返回值。
分而治之是一个有效的处理大数据的方法,著名的MapReduce就是采用这种分而治之的思路。简单的说,如果要处理1000个数据,但是我们不具备处理1000个数据的能力,只可以处理10个数据。我们可以将这个任务分成100份,每份处理10个,并将最后的结果进行合成,形成1000个数据的处理结果。 把一个大任务调用fork()方法分解为若干小的任务,把小的任务处理结果进行join()合并为大任务的结果。 ForkJoinPool线程池最常用的方法: //向线程池提交一个ForkJoinTask任务
2021-03-11 22:13:40 290
原创 缩进的空格数不重要,只要相同层级的元素左对齐即可
YAML 是 "YAML Ain‘t Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。 非常适合用来做以数据为中心的配置文件 1.2.2、基本语法 key: value;kv之间有空格 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 缩进的空格数不重要,只要相同层级的元素左对齐即可 ‘#‘表示注释 字
2021-03-11 22:11:28 872
原创 一个有 n 个结点的联通图的生成树是原图的极小连通子图
一个有 n 个结点的联通图的生成树是原图的极小连通子图,生成树包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树的性质 1.容易想象,要保证n个节点联通,至少要有n-1条边,所以一个有n个节点的生成树必有n-1条边。 2. 在所有生成树中,最小生成树的权值之和是最小的。 3. 再添加任意一条边,都将造成回路。 MST性质 描述:假设N=(V,{E})是一个连通网,U是顶点集V的一个非空子集。若(u,v)是一条具有最小权值(代价)的边,其中u∈U,v∈V-U,则
2021-03-11 22:09:58 690
原创 通过不同的租户对流量进行隔离;更进一步可以通过网络 VPC 进行环境隔离;
Serverless 应用引擎(SAE)基于神龙 + ECI + VPC + SLB + NAS 等 IaaS 资源,构建了一个 Kubernetes 集群,在此之上提供了应用管理和微服务治理的一些能力。它可以针对不同应用类型进行托管,比如 Spring Cloud 应用、Dubbo 应用、HSF 应用、Web 应用和多语言应用。并且支持 Cloudtoolkit 插件、云效 RDC / Jenkins 等开发者工具。在 Serverless 应用引擎上,零代码改造就可以把 Java 微服务的应用迁移到
2021-03-11 22:08:05 308 2
原创 如何通过 Serverless 提高 Java 微服务治理效率?
在业务初期,因人手有限,想要快速开发并上线产品,很多团队使用单体的架构来开发。但是随着公司的发展,会不断往系统里面添加新的业务功能,系统越来越庞大,需求不断增加,越来越多的人也会加入到开发团队,代码库也会增速的膨胀,慢慢的单体应用变得越来越臃肿,可维护性和灵活性逐渐降低,维护成本越来越高。 微服务治理面临的挑战 在业务初期,因人手有限,想要快速开发并上线产品,很多团队使用单体的架构来开发。但是随着公司的发展,会不断往系统里面添加新的业务功能,系统越来越庞大,需求不断增加,越来越多的人
2021-03-11 22:06:39 99 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人