-
Python的Excel操作及数据可视化
所属栏目:[大数据] 日期:2021-05-21 热度:57
Excel表操作 python操作 excel主要用到 xlrd和 xlwt这两个库,即 xlrd是读 excel, xlwt是写 excel的库。 安装xlrd pip install xlrd 简单的表格读取 import xlrd # 读取表格 data=xlrd.open_workbook( " table.xlsx " ) 获取表格的sheets table= data.sheet[详细]
-
PHP设计模式—迭代器模式
所属栏目:[大数据] 日期:2021-05-21 热度:62
? 定义: 迭代器模式(Iterator): 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 ? 结构: Iterator: 迭代器接口,用于定义得到开始对象、得到下一个对象、判断是否到有效、当前对象等抽象方法,统一接口,目前PHP已经集成[详细]
-
PHP设计模式—访问者模式
所属栏目:[大数据] 日期:2021-05-21 热度:149
? 定义: 访问者模式(Visitor): 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 ? 结构: Visitor: 抽象访问者,为该对象结构中ConcreteElement的每一个类声明一个Visit操作。 ConcreteV[详细]
-
PHP中定界符 <<<Eof 的使用
所属栏目:[大数据] 日期:2021-05-21 热度:52
? PHP定界符里面的内容原样输出。 EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。 结束标识必须独自占一行,且前后不能任何空格和字符。 PHP定界符里面的字符不需要加转义符。 可以识别PHP变量。 示例代码: $name ="PHP变量" ; $a = EOF h1[详细]
-
浅析多线程的对象锁和Class锁
所属栏目:[大数据] 日期:2021-05-21 热度:195
一、前言 本来想在另外一篇文章说的,发现可能篇幅有点大,所以还是另开一篇博文来说好了。知识参考《Java多线程编程核心技术》,评价下这本书吧——大量的代码,简单的说明,真像在看博客。不过这本书浅显易懂,篇幅也不长,一口气看个几十页,再照着demo敲[详细]
-
wait/notify 实现多线程交叉备份
所属栏目:[大数据] 日期:2021-05-21 热度:124
一、任务 创建20个线程,其中10个线程是将数据备份到 A 数据库中,另外10 个线程将数据备份到 B 数据库中,并且备份 A 数据库和 备份 B 数据库的是交叉运行的。 ? 二、实现 1、 实现备份 A 数据库和备份 B 数据库的 task。 /** * Description: 当flag=true的[详细]
-
多线程编程学习一(Java多线程的基础).
所属栏目:[大数据] 日期:2021-05-21 热度:87
一、进程和线程的概念 进程: 一次程序的执行称为一个进程,每个 进程有独立的代码和数据空间,进程间切换的开销比较大,一个进程包含1—n个线程。 进程是资源分享的最小单位 。 线程: 同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(P[详细]
-
Java8 CompletableFuture 编程
所属栏目:[大数据] 日期:2021-05-21 热度:117
一、简介 ?所谓异步调用其实就是实现一个无需等待被调用函数的返回值而让操作继续运行的方法。在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结果。但调用者仍需要取线程的计算结果。 ?JDK5新增[详细]
-
多线程编程学习十一(ThreadPoolExecutor 详解).
所属栏目:[大数据] 日期:2021-05-21 热度:196
一、ThreadPoolExecutor 参数说明 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueueRunnable workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler) corePoolSize:核[详细]
-
多线程编程学习十三(原子性、可见性与有序性)
所属栏目:[大数据] 日期:2021-05-21 热度:146
原子性 原子(atom)指化学反应不可再分的基本微粒,原子在化学反应中不可分割。原子操作指的是不可分割的整体,多线程的 原子性 指的是没有其他线程能够中断或检查正在原子操作中的变量。 从内存模型来看,直接保证的原子性变量操作包括 read、load、assign[详细]
-
多线程编程学习八(原子操作类).
所属栏目:[大数据] 日期:2021-05-21 热度:76
简介 原子(atomic)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为“不可被中断的一个或一系列操作”。 Java 在 JDK 1.5 中提供了 java.util.concurrent.atomic 包,这个包中的原子操作类提供了一种用法简单、性能高效、线程安[详细]
-
多线程编程学习六(Java 中的阻塞队列).
所属栏目:[大数据] 日期:2021-05-21 热度:181
介绍 阻塞队列(BlockingQueue)是指当队列满时,队列会阻塞插入元素的线程,直到队列不满;当队列空时,队列会阻塞获得元素的线程,直到队列变非空。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。 当线程 插入/获取 动作由于队列 满/空 阻塞[详细]
-
多线程编程学习五(线程池的创建)
所属栏目:[大数据] 日期:2021-05-21 热度:74
一、概述 在开发过程中,线程池可以带来如下好处: 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制地创建[详细]
-
Java 中的协程库 - Quasar
所属栏目:[大数据] 日期:2021-05-21 热度:192
一、协程 一个进程可以产生许多线程,每个线程有自己的上下文,当我们在使用多线程的时候,如果存在长时间的 I/O 操作,线程会一直处于阻塞状态,这个时候会存在很多线程处于空闲状态,会造成线程资源的浪费。这就是协程适用的场景。 协程,其实就是在 一个[详细]
-
多线程编程学习十(线程池原理).
所属栏目:[大数据] 日期:2021-05-21 热度:183
一、线程池工作流程 ? 线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务(需要获得全局锁)。如果核心线程池里的线程都在执行任务,则进入下个流程。 线程池判断工作队列是否已满。如果工作队列没有满,则将新提[详细]
-
多线程编程学习九(并发工具类).
所属栏目:[大数据] 日期:2021-05-21 热度:100
CountDownLatch CountDownLatch 允许一个或多个线程等待其他线程完成操作。 CountDownLatch 可以替代 join 的作用,并提供了更丰富的用法。 CountDownLatch 的 countDown 方法,N 会减1;CountDownLatch 的 await 方法会阻塞当前线程,直到 N 变成零。 Count[详细]
-
多线程编程学习十二(读书笔记)
所属栏目:[大数据] 日期:2021-05-21 热度:193
一、多线程语义 阿姆达尔定律通过系统中并行化和串行化的比重来描述多处理器系统能获得的运算加速能力,摩尔定律则用于描述处理器晶管体数量与运行效率之间的发展关系。这两个定律的更替代表了近年来硬件发展从追求处理器频率到追求多核心并行处理的发展过程[详细]
-
多线程编程学习四(Lock 的使用)
所属栏目:[大数据] 日期:2021-05-21 热度:70
一、前言 ? ? 本文要介绍使用Java5中 Lock 对象,同样也能实现同步的效果,而且在使用上更加方便、灵活,主要包括 ReentrantLock 类的使用和ReentrantReadWriteLock 类的使用。 ? ? lock 与?synchronized 关键字的区别? synchronized 是java内置关键字;Loc[详细]
-
写入时复制(CopyOnWrite)
所属栏目:[大数据] 日期:2021-05-21 热度:71
一、CopyOnWrite 思想 写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种通用优化策略。其核心思想是,如果有多个调用者(Callers)同时访问相同的资源(如内存或者是磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到[详细]
-
ThreadLocal 源码解读
所属栏目:[大数据] 日期:2021-05-21 热度:165
一、引入 public class Thread implements Runnable { /* 前面略 */ /* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal class. */ ThreadLocal.ThreadLocalMap threadLocals = null; /* 后面略 */ } 首先我们[详细]
-
ConcurrentLinkedQueue 源码解读
所属栏目:[大数据] 日期:2021-05-21 热度:178
一、介绍 ConcurrentLinkedQueue 是一个基于链接节点的无界线程安全队列,非阻塞,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部;当我们获取一个元素时,它会返回队列头部的元素。 ConcurrentLinkedQueue 采用非阻[详细]
-
多线程编程学习七( Fork/Join 框架).
所属栏目:[大数据] 日期:2021-05-21 热度:132
一、介绍 使用 java8 lambda 表达式大半年了,一直都知道底层使用的是 Fork/Join 框架,今天终于有机会来学学 Fork/Join 框架了。 Fork/Join 框架是 Java 7 提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后[详细]
-
Final 关键字
所属栏目:[大数据] 日期:2021-05-21 热度:104
1、概述 ? ? 最一般的意思就是声明 “这个东西不能改变”。之所以要禁止改变,可能是考虑到两方面的因素:设计或效率。 final 关键字可以用来修饰变量、方法和类,修饰变量表示变量不能被修改,修饰方法表示方法不能被重写,修饰类表示类不能被继承。 ? ? 由[详细]
-
浅析Java RTTI 和 反射的概念
所属栏目:[大数据] 日期:2021-05-21 热度:149
一、概念 RTTI(Run-Time Type Identification,运行时类型识别)的含义就是在运行时识别一个对象的类型,其对应的类是Class对象,怎么理解这个Class对象呢?如果说类是所有对象方法、属性的集合,那就可以把这个Class对象理解成是所有class的集合,然后利用[详细]
-
终结 finalize() 和对象引用
所属栏目:[大数据] 日期:2021-05-21 热度:152
一、 finalize() 方法 1. 为什么要有 finalize() 方法? ? 假定你的对象(并非使用new)获得了一块“特殊”的内存区域,由于垃圾回收器只知道释放那些经由 new 分配的内存,所以他不知道该如何释放该对象的这块“特殊”内存,为了应对这种情况,java 允许在类[详细]