呈现 浏览器是如何将从网络层获取请求文档呈现到页面上的 呈现引擎将开始解析 HTML 文档,并将各标记逐个转化成“内容树”上的 DOM 节点。同时也会解析外部 CSS 文件以及样式元素中的样式数据。HTML 中这些带有视觉指令的样式信息将用于创建另一个树结构:呈现树。 呈现树构建完毕之后,进入“布局 ...
分类:
Web程序 时间:
2020-06-22 21:03:40
阅读次数:
63
简介 netty是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。对比于BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。提供了对TCP、UDP ...
分类:
Web程序 时间:
2020-06-22 19:31:39
阅读次数:
63
sql 查询卡顿数据库 SELECT SPID=p.spid, DBName = convert(CHAR(20),d.name), ProgramName = program_name, LoginName = convert(CHAR(20),l.name), HostName = conver ...
分类:
数据库 时间:
2020-06-22 14:42:16
阅读次数:
76
先说一下对异步和同步的理解:
同步调用:调用方在调用过程中,持续等待返回结果。
异步调用:调用方在调用过程中,不直接等待返回结果,而是执行其他任务,结果返回形式通常为回调函数。
其实,两者的区别还是很明显的,这里也不再细说,我们主要来说一下Java如何将异步调用转为同步。换句话说,就是需要在异步调用过程中,持续阻塞至获得调用结果。
分类:
编程语言 时间:
2020-06-22 09:25:44
阅读次数:
59
Tornado的核心是什么?Tornado 的核心是 ioloop 和 iostream 这两个模块,前者提供了 一个高效的 I/O 事件循环,后者则封装了 一个无阻塞的 socket 。 通过向 ioloop 中添加网络 I/O 事件,利用无阻塞的 socket ,再搭配相应的回调函数,便可达到梦 ...
分类:
编程语言 时间:
2020-06-22 01:04:00
阅读次数:
95
1、定义 乐观锁和悲观锁其实是两种思想,用于解决并发场景下的数据竞争问题。 悲观锁:常用的锁基本上都是悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转 ...
分类:
其他好文 时间:
2020-06-21 21:40:58
阅读次数:
47
NIO v.s. IO 传统IO: 面向流 属于阻塞IO 单向管道传输:输入流、输出流 NIO: 面向缓冲区 属于非阻塞IO 使用缓冲区在通道内传输 缓冲区 缓冲区在NIO中负责数据的存取,缓冲区就是数组,用于存储不同数据类型的值,除了boolean,都有相应类型的缓冲区。 缓冲区的核心方法:取ge ...
分类:
其他好文 时间:
2020-06-21 18:00:37
阅读次数:
70
在 Java 发展史上曾经使用 suspend()、resume()方法对于线程进行阻塞唤醒,但 随之出现很多问题,比较典型的还是死锁问题。 解决方案可以使用以对象为目标的阻塞,即利用 Object 类的 wait()和 notify()方 法实现线程阻塞。 首先,wait、notify 方法是针对 ...
分类:
编程语言 时间:
2020-06-21 16:16:59
阅读次数:
114
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当 队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消 费者是从队列里拿元素的线程。阻塞队列就是生产 ...
分类:
其他好文 时间:
2020-06-21 16:04:43
阅读次数:
78
在 Java 并发程序中 FutureTask 表示一个可以取消的异步运算。它有启动和取消 运算、查询运算是否完成和取回运算结果等方法。只有当运算完成的时候结果才 能取回,如果运算尚未完成 get 方法将会阻塞。一个 FutureTask 对象可以对调用 了 Callable 和 Runnable ...
分类:
其他好文 时间:
2020-06-21 15:49:03
阅读次数:
40