- 博客(35)
- 收藏
- 关注
原创 Java 8 新特性
函数式接口、Lambda表达式、Stream流、Optinal、CompletableFuture、LocalDateTime
2024-01-01 15:54:36 905
原创 浏览器中的网络
HTTP/0.9 是于 1991 年提出的,主要用于学术交流,需求很简单——用来在网络之间传递 HTML 超文本的内容,所以被称为。整体来看,它的实现也很简单,采用了基于请求响应的模式,从客户端发出请求,服务器返回数据。来看看 HTTP/0.9 的一个完整的请求流程(可参考下图)。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BUmDTzmd-1683724254905)(null)]
2023-05-19 01:00:00 150
原创 浏览器渲染
样式计算阶段的目的是为了计算出 DOM 节点中每个元素的具体样式,在计算过程中需要遵守 CSS 的继承和层叠两个规则。这个阶段最终输出的内容是每个 DOM 节点的样式,并被保存在 ComputedStyle 的结构内。
2023-05-14 00:45:00 130
原创 Gradle
通过Project 中的 task() 方法//方式一})//方式二//方式三task C{//方式四通过 tasks 对象的 create 或者 register 方法//regists 执行的是延迟创建,只有当task被需要使用的时候才会被创建定义任务的同时指定任务的属性,也可以给已有的任务动态分配属性配置项描述默认值type基于一个存在的Task来创建,和类继承相似overwrite是否替换存在的Task,与type配合使用falsedependsOn配置任务的依赖。
2023-05-13 00:45:00 473
原创 浏览器的页面循环
接着 JavaScript 执行结束,准备退出全局执行上下文,这时候就到了检查点了,JavaScript 引擎会检查微任务列表,发现微任务列表中有微任务,那么接下来,依次执行这两个微任务。这势必会影响到下个任务的执行时间。页面的渲染事件、各种 IO 的完成事件、执行 JavaScript 脚本的事件、用户交互的事件等都随时有可能被添加到消息队列中,而且添加事件是由系统操作的,JavaScript 代码不能准确掌控任务要添加到队列中的位置,控制不了任务在消息队列中的位置,所以很难控制开始执行任务的时间。
2023-05-12 00:45:00 312
原创 浏览器中的页面模块
虚拟 DOM 到底要解决哪些事情。将页面改变的内容应用到虚拟 DOM 上,而不是直接应用到 DOM 上。变化被应用到虚拟 DOM 上时,虚拟 DOM 并不急着去渲染页面,而仅仅是调整虚拟 DOM 的内部状态,这样操作虚拟 DOM 的代价就变得非常轻了。在虚拟 DOM 收集到足够的改变时,再把这些变化一次性应用到真实的 DOM 上。该图是结合 React 流程画的一张虚拟 DOM 执行流程图,结合这张图来分析下虚拟 DOM 到底怎么运行的。创建阶段。
2023-05-10 21:09:21 434
原创 浏览器安全
如果两个 URL 的协议、域名和端口都相同,就称这两个 URL 同源浏览器默认两个相同的源之间是可以相互访问资源和操作 DOM 的。两个不同的源之间若想要相互访问资源或者操作 DOM,那么会有一套基础的安全策略的制约,我们把这称为同源策略。同源策略主要表现在 DOM、Web 数据和网络这三个层面。第一个,DOM 层面。同源策略限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作。第二个,数据层面。
2023-04-26 23:35:42 157
原创 区块链的技术
在非对称算法中,私钥一般是通过一个随机数产生的,这个随机数我们也叫做种子,从这个角度来说,知道了这个随机数也就等于知道了私钥,不过私钥的产生范围非常大,在比特币中是 2 的 256 次方,差不多在 10 的 70 方数量级上。第一种方案提供了较好的交互过程,减轻了网络负担。在区块链上,一个比特币交易的产生由两部分组成,第一部分是签名加锁,对应到的是交易的输出、第二部分是解锁花费,对应到的是交易的输入,当我们构造一笔交易的时候必然会用到私钥,这是所有数字货币资产控制权由私钥保证的根本原因。
2023-04-08 20:07:01 2109
原创 Java并发工具类
LockConditionSemaphoreReadWriteLockStampedLockCountDownLatch、CyclicBarrier并发容器原子类Executor与线程池Future(获取任务执行结果)CompletableFuture(异步编程)CompletionServiceFork/Join(并行计算框架)
2022-10-07 01:30:00 484
原创 并发编程理论
CPU、内存、I/O 设备,有一个核心矛盾就是这三者的速度差异。为了合理利用 CPU 的高性能,平衡这三者的速度差异:1、CPU 增加了缓存,以均衡与内存的速度差异;2、操作系统增加了进程、线程,以分时复用 CPU,进而均衡 CPU 与 I/O 设备的速度差异;3、编译程序优化指令执行次序,使得缓存能够得到更加合理地利用。
2022-10-04 01:30:00 132
原创 二、结构型模式
结构型设计模式主要解决“类或对象的组合或组装”问题常用的有:代理模式、桥接模式、装饰者模式、适配器模式。不常用的有:门面模式、组合模式、享元模式。
2022-09-27 01:30:00 45
原创 三、行为型模式【职责链模式】
职责链模式:多个处理器依次处理同一个请求。链条上的每个处理器各自承担各自的处理职责应用场景:实现过滤器、拦截器功能,让框架的使用者在不需要修改框架源码的情况下,添加新地过滤、拦截功能
2022-09-25 01:30:00 77
原创 三、行为型模式【策略模式】
工厂模式是解耦对象的创建和使用。观察者模式是解耦观察者和被观察者。策略模式解耦的是策略的定义、创建、使用,控制代码的复杂度,让每个部分都不至于过于复杂、代码量过多。
2022-09-22 01:30:00 193
原创 三、行为型模式【状态模式】
状态模式:常用在游戏、工作流引擎等系统开发中。由 3 个部分组成:状态、事件、动作。其中,事件也称为转移条件。事件触发状态的转移及动作的执行。不过,动作不是必须的,也可能只转移状态,不执行任何动作。
2022-09-21 01:30:00 119
原创 三、行为型模式【访问者模式、备忘录模式、命令模式、解释器模式、中介模式】
访问者模式:允许一个或者多个操作应用到一组对象上,设计意图是解耦操作和对象本身,保持类职责单一、满足开闭原则以及应对代码的复杂性。备忘录模式:快照模式在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。命令模式:最核心的实现手段,就是将函数封装成对象。解释器模式:核心思想,就是将语法解析的工作拆分到各个小类中,以此来避免大而全地解析类。一般的做法是,将语法规则拆分一些小的独立的单元,然后对每个单元进行解析,最终合并为对整个语法规则的解析。
2022-09-20 01:30:00 162
原创 三、行为型模式【模板模式、回调】
模板模式:一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。回调基于组合关系来实现,模板模式基于继承关系来实现。回调比模板模式更加灵活。两大作用:复用和扩展。其中复用指的是,所有的子类可以复用父类中提供的模 板方法的代码。扩展指的是,框架通过模板模式提供功能扩展点,让框架用户可以在不修改框架源码的情况下,基于扩展点定制化框架的功能。
2022-09-19 01:00:00 114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人