06 2021 档案
摘要:6.30MongoDB之Limit与Skip方法 MongoDB Limit()方法 在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法 limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。 语法: db.COLLECTION_NAME.fi
阅读全文
摘要:6.30Java连接MongoDB进行操作练习 代码 封装类: package mongodbtest;import com.mongodb.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.clien
阅读全文
摘要:6.30MongoDB之$type操作符 $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。 MongoDB 中可以使用的类型如下表所示: 类型数字备注 Double 1 String 2 Object 3 Array 4 Binary data 5 Undefined 6
阅读全文
摘要:6.30MongoDB之条件操作符 描述 条件操作符用于比较两个表达式并从mongoDB集合中获取数据。 在本章节中,我们将讨论如何在MongoDB中使用条件操作符。 MongoDB中条件操作符有: (>) 大于 - $gt (<) 小于 - $lt (>=) 大于等于 - $gte (<= ) 小
阅读全文
摘要:6.30MongoDB之"查" MongoDB查询文档内容的方法 MongoDB 查询文档使用 find() 方法。 find() 方法以非结构化的方式来显示所有文档。 findOne() 方法,它只返回一个文档。 语法: db.collection.find(query, projection)
阅读全文
摘要:MongoDB之"改" MongoDB插入文档 文档的格式: 文档的数据结构和 JSON 基本一样。 所有存储在集合中的数据都是 BSON 格式。 BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。 方法: insert() >若插入的数据主键已经存在,则会
阅读全文
摘要:MongoDB之"增" MongoDB创建数据库 语法: use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库。 查看所有数据库: show dbs 刚创建好的数据库没数据不会显示在所有的集合中。需要往里面插入数据。 MongoDB 中默认的数据库为 test,如
阅读全文
摘要:MongoDB之"删" MongoDB删除数据库 语法: db.dropDatabase()//要先use数据库然后再dropDatabase MongoDB删除集合 语法: db.collection.drop()// collection填写需要删除的集合名称 MongoDB删除文档 语法: d
阅读全文
摘要:MongoDB之Java连接MongoDB 下面介绍在Java中配置MongoDB环境连接MongoDB进行操作 前置条件: Java环境 MongoDB JDBC驱动 下载mongo jar包 导入依赖 <dependencies> <dependency> <groupId>org.mongod
阅读全文
摘要:MongoDB概念解析 MongoDB的基础概念是数据库、集合、文档、域、索引、主键 SQL术语MongoDB术语解释/说明 database database 数据库 table collection 表格 >集合 row document 行 >文档 column field 列 >域 inde
阅读全文
摘要:MongoDB简介 MongoDB是一款非关系型数据库 基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 NoSQL简介 定义: NoSQL,指的是非关
阅读全文
摘要:6.25Java网络编程之传输协议 什么是协议? 传输数据的标准 传输层的协议 TCP(transfer control protocol) 面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议 特点 面向连接 点到点的通信 高可靠性 占用系统资源多、效率低
阅读全文
摘要:6.25Java网络编程之网络爬虫原理 Web Spider 虚拟化、形象化的概念,从网络上查找数据、获取数据、下载数据、分析数据。对数据进行抽取、清洗、筛选等操作。 这里面的核心是有价值的数据、有价值的资源。 seo 搜索引擎优化,便于获得搜索引擎公司的排名 sem 再搜索引擎公司商付费要排名 爬
阅读全文
摘要:6.24Java网络编程之URL 网络三大基石 html http url URI、URL、URN URI:统一资源标志符(Universal Resource Identifier),用来标识抽象或物理资源的一个紧凑字符串 URL:统一资源定位符(Uniform Resource Locator)
阅读全文
摘要:6.24Java网络编程之端口 端口 通过IP地址寻找到计算机,通过端口区分需要的服务 端口是虚拟的概念,通过端口,可以在一个主机上运行多个网络应用程序。端口的表示是一个16位的二进制整数,2个字节,对应十进制的0~65535 公认端口:0~1023 >80端口分配给www,21端口分配给FTP 注
阅读全文
摘要:6.24Java网络编程之IP 定位、传输协议 在域名和IP地址之间有一个域名解析 >DNS DNS的作用:将IP地址转成有意义的字符串。将字符串映射成IP地址 定位 IP 端口 url IP 作用: 标识网络中的一个通信实体的地址(是一个地址) 通信实体: 计算机 路由器 服务器 >服务器不止一个
阅读全文
摘要:6.24Java网络编程的基本概念 什么是网络 将不同区域的电脑连接到一起 >局域网、城域网、广域网、互联网...从而实现信息传递、资源共享、硬件、软件共享等 资源共享 信息传输与集中处理 负载均衡与分布处理 >后期重点 通讯协议 通讯协议是一个标准 对速率、传输代码、代码结构、传输控制步骤、出错控
阅读全文
摘要:6.24Java网络编程开篇 网络的分类 局域网 公网 互联网 寻址方式 IP地址定位节点找到计算机 公网IP >内网IP >个人计算机IP 区分访问软件的方式 端口 (通过IP地址找到这台计算机 >通过端口访问到这台计算机上指定的软件 >通过url定位到指定的资源) (IP(定位到家庭住址) >端
阅读全文
摘要:6.23Java多线程CAS原子操作 锁的分类 悲观锁: synchronized是独占锁(悲观锁) 其特点是 会导致其他所有需要锁的线程挂起,等待持有锁的线程释放资源 乐观锁(Compare and Swap:比较与交换) 每次操作不加锁,假设没有冲去取完成某项操作 如果因为冲突导致失败则会重试到
阅读全文
摘要:6.23Java多线程可重入锁实现原理 什么是可重入锁? 某个线程试图获取一个已经由它自己持有的锁时,这个请求会立刻成功 将这个锁的计数值+1.同时锁住资源 当线程退出同步代码块时,计数器将会递减。计数值=0时,锁释放 如果没有可重入锁,第二次获得锁时会进入死锁状态 锁是作为并发共享数据,保证一致性
阅读全文
摘要:6.22 Java多线程ThreadLocal 线程变量的特点 多线程环境下,每个线程都有自己的数据 一个线程的局部变量只有自己能看见,不会影响其他线程(使用局部变量比使用其他变量好) ThreadLocal的特点 ThreadLocal能够放一个线程级别的变量 本身能够被多个线程共享使用,又能达到
阅读全文
摘要:6.22Java多线程单例设计模式 设计一个单例模式 类与类之间的关系 目标:对外只有一个对象 介绍double-checking单例模式 使用volatile进行锁定资源 饿汉式:直接实例化了对象 懒汉式:没有直接实例化对象 DCL单例设计模式实例demo 图示: package thread.r
阅读全文
摘要:6.22Java多线程volitale volitale说明 作用: 保证线程间变量的可见性(注意:不是线程之间的变量可见) 线程A对变量X进行修改后,在线程A后面执行的其他线程能看到变量X的变动。 需要符合以下两个规则: 线程对变量进行修改之后要立刻写回到主内存 >防止主内存与工作内存中不一致的情
阅读全文
摘要:6.22Java多线程happenbefore 编译器和CPU会尝试重排指令使得代码更快地运行 发生情况: 代码间没有直接联系,没有依赖 这样就会发生指令重排a 步骤 拿到指令,进行编译,放入寄存器 >fetch 解码指令,从寄存器中拿值,从主存拷贝到工作内存 >copy 执行选项 >excutor
阅读全文
摘要:6.22Java任务调度框架:Quartz Java任务调度框架:Quartz 由四大部分组成: Scheduler >调度器,控制所有的调度 Trigger >触发条件,采用DSL模式 DSL: >Domain-specific language领域特定语言,受限表达下的一种计算机程序语言。声明式
阅读全文
摘要:6.21Java多线程并发高级主题_定时调度问题 Java多线程任务定时调度类和方法 Timer类 Timer:类似闹钟的功能,本身实现的就是一个线程 TimerTask类 TimerTask:一个抽象类,实现了Runnable接口,具备多线程能力 Timer类说明 供将来在后台线程中执行的功能。
阅读全文
摘要:6.21Java多线程并发协作信号灯法 通过标识位在方法当中进行数据操作 package iostudy.threadcooperation;/** * 生产者消费者实现方式二:信号灯法 * 借助标识位 * @since JDk 1.8 * @date 2021/6/21 * @author Lu
阅读全文
摘要:6.21Java多线程并发管程法 核心: 缓冲区 模型分析 生产者 >多线程(有多个操作) 消费者 >多线程 缓冲区 >并发容器(JUC包下已经提供了) >操作商品 功能 缓冲区需要实现什么功能 需要并发什么操作 并发存 >什么时候可以存(容器不够时,需要等待) 并发取 >什么时候可以取(里面有数据
阅读全文
摘要:6.21Java多线程并发协作 线程间如何通讯? 由于在多线程中,一旦创建了线程就开辟了工作空间。各工作空间与主存进行交互,没有涉及如何与其他线程进行交互。 所以线程与线程间的通讯通过一个写作模型: 生产者、消费者模式 不同于之前的静态代理、装饰模式等模式(这一类模式解决的是类与类之间的关系) 这个
阅读全文
摘要:6.18Java死锁的产生与解决 死锁的简单描述 简单说就是在一个同步块中同时持有两个对象的锁 系统描述: 多个线程各自占有一些共享资源 互相等待其他线程占有的资源 满足以上两点就会导致两个或者多个线程都在等待对方释放资源,都停止执行的情况。 某一个同步块同时拥有"两个以上对象的锁"时,就会发生死锁
阅读全文
摘要:6.18Java并发容器 使用JUC并发编程内部的容器 >内部已经实现好了锁定 package iostudy.synchro;import java.util.ArrayList;import java.util.concurrent.CopyOnWriteArrayList;import ja
阅读全文
摘要:6.18Java多线程同步方法实现DemoNo2 使用同步方法重写购票demo package iostudy.synchro;/** * 模拟买火车票 */public class Happy12306 { public static void main(String[] args) { /*
阅读全文
摘要:6.18Java多线程并发、同步练习DemoNo1 不和选择的线程数据安全 package iostudy.synchro;/** * 多线程模拟影院选位置 * @since JDK 1.8 * @date 2021/6/18 * @author Lucifer */public class Ha
阅读全文
摘要:6.18Java多线程并发、同步性能分析 对比同步块和同步方法 >粒度更小的锁定资源,尽可能地提升性能 根据几个同步锁对象不同的实例观察线程不安全的实例 package iostudy.synchro;/** * 测试同步方法和同步块对粒度更小地资源锁定 * 感受性能上地差异 * @since J
阅读全文
摘要:6.11Java多线程、并发、同步、synchronized块 synchronized块 同步块:synchronized(object){},object称为同步监视器 object可以是任何对象,但是推荐使用共享资源作为同步监视器 同步方法中无需指定同步监视器(因为监视对象是this对象本身或
阅读全文
摘要:6.11Java多线程、并发、同步、synchronized方法 摸索前进 package iostudy.synchro;/** * 多线程并发、同步保证数据准确性,效率尽可能高和好 * 线程安全: * 1、在并发池保证数据的准确性 * 2、同时保证效率尽可能高 * synchronized *
阅读全文
摘要:6.11Java线程同步与锁 并发的本质 同一对象 被多个线程操作 同时操作 以上被称为并发三要数 >并发 一旦存在并发就可能出现存在数据不准确、容器数据问题 >这些问题统称为线程不安全 同一进程的多个线程共享同一块存储空间 >会导致访问冲突 解决办法: 队列排队 >根据算法决定谁先用谁后用 一个资
阅读全文
摘要:6.10Java线程同步_synchronized 线程的同步的含义 线程的同步是指: 在一个多线程环境下保证数据的准确性、安全性 >线程安全 提升性能 >三高原则(高性能、高并发、高可用) 难点: 线程的同步不够形象 并发控制比较困难 >琢磨、分析、又快又好 什么是并发? 并发是指: 同一个对象多
阅读全文
摘要:Java多线程一些其他的常用方法 方法说明 方法功能 isAlive() 判断线程是否还未终止 setName() 给线程起个名字 getName() 获取线程的名字 currentThread() 获取当前正在运行的线程对象 其他方法的实例 package iostudy.priority;/*
阅读全文
摘要:6.7Java线程的分类 Java中线程的分类 默认的用户线程 为用户线程服务的守护线程 >daemon Java中线程的特点 虚拟机必须确保用户线程执行完毕(不需要等待守护线程执行完毕) 虚拟机不用等待守护线程执行完毕 >如后台记录操作日志、监控内存使用 Java守护线程的设置和守护线程的使用 p
阅读全文
摘要:6.7Java多线程优先级(priority) Java线程调度特点 提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程 线程调度器按照线程的优先级决定应调度哪个线程来执行 线程的优先级范围: Thread.MIN PRIORITY = 1 Thread.MAX PRIORITY = 10
阅读全文
摘要:6.7Java深度观察状态 线程的五大状态 新生状态 new一个实现类对象(实现多线程接口) >一旦创建就会有工作空间,工作空间与主存进行交互 就绪状态 调用star方法进入 阻塞事件接触以后回到就绪状态而不是直接进入运行状态 运行中让出cpu的资源yield直接进入继续 >yield方法线程不进入
阅读全文
摘要:6.5Java线程插队状态join 线程合并状态join join的特点: join插队线程,待此线程执行完毕后再执行其他线程 在此期间其他线程阻塞 join与sleep方法的区别: join是一个成员方法,join要通过Thred对象操作 >对象要多次使用,所以不要用匿名 sleep和yield是
阅读全文
摘要:6.5Java线程暂停状态 >yield 线程礼让状态yield yield的特点: 礼让线程,让当前正在执行的线程暂停 不是阻塞线程,而是直接从运行状态转入就绪状态 让出cpu的调度,避免当前线程占用cpu过久 让cpu调度器重新调度 该方法会释放cpu资源 不会释放锁资源 示例dome pack
阅读全文
摘要:6.5Java线程暂停状态 >sleep 目前为止的Java线程状态 new > 新生状态 调用runnable接口的start方法 --> 就绪状态 cpu分配好时间片调度到了(无法人为干涉) > 运行状态 线程正常执行完毕、外部干涉(加入标识位 >开关) > 死亡状态 线程阻塞状态 >sleep
阅读全文
摘要:6.5Java线程终止状态 具体状态 线程终止 线程暂停 线程礼让 线程插队 线程停止 两种方式: 线程体正常执行完毕 >执行完线程体内的代码 人为设置停止 不使用JDK提供的stop()/destory()方法 设置一个布尔类型的变量(相当于开关),boolean == false时,线程终止运行
阅读全文
摘要:6.3Java线程状态 线程五大状态 新生状态 >代码层面写好了该线程 就绪状态 >告诉cpu该线程可以调度了 运行状态 >cpu调度了该线程开始执行该线程了 阻塞状态 >cpu调度过程当中遇到的其他状态(丧失执行的权力) 同步阻塞 >synchronized >锁可用 >就绪状态 等待阻塞 >wa
阅读全文
摘要:6.2JavaJDK8当中特性 >lambda表达式 Lambda表达式图示 作用 主要用于简化多线程的时候线程使用次数比较少的情况 有点: 只需要关注线程体 >功能 不需要关注线程类和结构,用于简化 推导lambda >接口不带形参,无返回值 package iostudy.thread;/**
阅读全文
摘要:6.2Java静态代理设计模式 引用图片说明 静态代理和动态代理的区别 静态代理 特点: 已经写好了的类,直接拿来用 动态代理 特点: 在运行过程中动态构建的 临时构建的 静态代理的作用 记录日志 监控资源占用空间 实例 package iostudy.thread;/** * 静态代理 * 1、
阅读全文
摘要:6.2Java多线程Callable接口 Callable接口方法图示 与Runnable接口的run方法比较的优势: Callable接口可以向外抛出异常 >异常监测 call方法可以有返回值,run方法没有返回值 与Runnable接口的run方法比较的劣势: 使用起来需要创建执行服务 使用起来
阅读全文
摘要:6.1Java多线程抢票龟兔赛跑 多线程抢票,并发问题,数据安全异常 package iostudy.thread;/** * 共享资源 * 一份资源,三个代理商 * 当一份资源有多个代理去操作的时候就会存在并发问题 * 并发发生之后后期需要保证线程安全 * @since JDK 1.8 * @d
阅读全文
摘要:6.1JavaStartThread 工具类 package iostudy.thread;import org.apache.commons.io.FileUtils;import java.io.File;import java.io.IOException;import java.net.
阅读全文