自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(280)
  • 收藏
  • 关注

原创 NIO

使用NIO进行阻塞式通信-基于TCP协议

2020-06-27 01:16:46 137

原创 Mybatis目录

Mybatis初体验

2020-05-29 01:48:31 185

原创 Java注解

注解的本质自定义注解注解的解析

2020-02-19 18:38:24 211

原创 Spring_目录

Spring IoC及IoC容器简介初始化IoC容器及IoC容器的使用

2020-02-03 14:43:24 184

原创 设计模式 目录

6大设计原则单一职责原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则开闭原则

2019-12-07 19:34:44 154

原创 JAVA多线程

主线程子线程 线程创建的两种方式——实现Runnable接口、继承Thread类线程状态线程管理 线程优先级、join()、线程让步yield()、线程停止线程安全 JAVA“互斥锁”机制保证线程安全线程通信 wait()和notify()...

2019-10-26 20:12:20 116

原创 《操作系统导论》笔记与总结_目录

[第六章 机制:受限直接执行][6.2 受限制的操作][6.3 在进程之间切换]

2019-10-24 20:57:13 530

原创 JS_目录

DOM(Document Object Model)文档对象模型,以及文档的加载

2019-09-22 14:17:23 179

原创 《深入理解计算机系统》笔记_目录

第一部分 程序结构和执行第一章 计算机系统漫游第二章 信息的处理和表示2.1 信息存储第三章 程序的机器级表示3.2 程序编码

2019-09-14 09:49:06 368

原创 UML_目录

概述、概念模型、体系结构用例、用例图

2019-09-10 18:05:29 221

原创 微机原理_目录

计算机系统的组成指令的运行流程

2019-09-10 18:03:18 347

原创 编译原理_目录

术语的解释以及编译和解释编译器的结构以及编译过程文法及相关概念符号以及符号串上下文无关文法

2019-09-10 17:53:22 1250

原创 踩坑:preventDefault

preventDefault这个用来阻止默认行为。什么是默认行为呢?在初学的时候,最常举得例子就是<a>标签,它的点击事件出发后,默认行为就是进行跳转。现在如果想要阻止点击<a>标签后的跳转行为,就可以使用preventDefault<div> <a id='a' href="http://www.baidu.com">《《传送门》》</a></div><script> const aElemen

2021-08-25 21:25:29 1173

原创 码元与码点

码元与码点JavaScript字符串使用了两种Unicode编码混合的策略:UCS-2和UTF-16。对于可以菜哦也能够16位编码的字符(U+0000~U+FFFF),这两种编码实际上是一样的。(《JavaScript高级程序设计》)关于码元和和码点,通过一个例子进行介绍。如图,字符串'????'只有一个“笑脸”符号,但是通过length属性发现,“长度”为2,string.length到底表示什么?答:码元的个数什么是码元?码元就是编码的最小单元,UTF-16和UCS-2的码元为1

2021-07-27 20:56:29 2384

原创 作用域链和闭包

作用域链和闭包文章目录作用域链和闭包什么是闭包?内层函数怎么获取外层函数的变量?作用域链的创建执行上下文活动对象创建过程作用域链增强解决一开始提出的问题通过对比两段代码引出本文讨论的内容:代码1:function getFs() { let fs = []; for(var i = 0; i < 5; ++i) { fs.push(() => console.log(i)); } return fs;}let fs = getFs()

2021-06-16 18:57:10 318

原创 箭头函数与this

文章目录标准函中的this箭头函数中的this使用bind()函数将普通函数的行为变为箭头函数标准函中的this标准函数中(相对于箭头函数),this是方法调用的上下文对象。箭头函数中的this箭头函数中的this会保留定义该函数时的上下文。//创建两个对象 分别模拟定义时的上下文和调用时的上下文let defineContext = {name : "defineContext"};let invokeContext = {name : "invokeContext"}let st

2020-12-11 16:59:05 233

原创 JSON

JSON(JavaScript Object Notation)文章目录JSON(JavaScript Object Notation)JSON语法1. 普通对象特殊要求举例2. 数组对象举例JSON字符串和JavaScript对象的转换1. 对象转JSON2. JSON转对象eval()函数简介JSON(JavaScript Object Notation),JavaScript对象表示法,是***用于数据交换的特殊字符串***。JSON是表示对象的字符串,可以转换为JavaScript的对象,也可

2020-09-07 15:43:34 130

原创 延迟调用

延迟调用window对象提供了两种基础的异步调用方式:定时调用setInterval()和延迟调用setTimeout()关于定时调用的内容点击查看延迟调用和定时调用的区别对于定时调用,如果不调用clearInterval()关闭,每隔一定的时间,回调函数都会被调用一次;延迟调用和定时调用的方法很类似,同样使用了window对象的方法,setTimeout(function, milliseconds)。调用这个方法之后,在延迟milliseconds毫秒后,调用回调函数fucntion。***与

2020-09-07 14:55:50 510

原创 定时调用

文章目录定时调用举例:显示当前包含秒数的时间停止定时调用:`clearInterval(idOfSetInterval:number) `定时调用BOM中的window对象,提供了一个方法setInterval()。他有两个参数:function,milliseconds。该方法可以使回调函数function每间隔milliseconds毫秒被调用一次。举例:显示当前包含秒数的时间显示时间时,只需要通过指定元素element.innerHTML来修改显示的内容即可。由于每1秒都需要修改一次,所以

2020-09-07 14:14:01 301

原创 BOM简介

BOM简介BOM(Browser Object Model),是对浏览器的属性和行为的抽象。通过BOM提供的各种对象,可以获取浏览器的一些状态值以及对浏览器进行操作。window, window.screen, window.location, window.history, window.navigator等都是BOM。浏览器信息:window.navigatorwindow.navigator对象包含浏览器的一系列信息。这些信息基本没用,所以开发中很少用到这个对象。历史记录:window.hi

2020-09-05 17:52:10 333

原创 正则表达式作为参数的字符串方法

文章目录正则表达式作为参数的字符串方法1. split()2. search()3. match()不使用全局匹配修饰符使用全局匹配修饰符4. replace()正则表达式作为参数的字符串方法1. split()分割字符串,分隔符可以是一个字符串,也可以是一个正则表达式。var str = "axbxcxd";console.log(str.split(/x/));默认情况下,该方法***全局匹配***注意上面的例子,正则表达式/x/,并没有使用修饰符g修饰,但方法的结果显示,该方法默认全

2020-09-05 17:14:57 1060

原创 正则表达式的修饰符及构造函数

文章目录正则表达式的修饰符及构造函数1. 修饰符修饰符介绍:i修饰符介绍:g修饰符介绍:m2. 构造函数`RegExp(正则表达式,修饰符)`使用构造函数创建的优点:参数可以使用变量正则表达式的修饰符及构造函数1. 修饰符正则表达式还可以跟上修饰符(/exp/修饰符)限制正则表达式的行为。介绍三个常用的修饰符: 修饰符 作用 i 忽略大小写 g 全局匹配

2020-09-05 16:48:59 520

原创 事件冒泡应用:事件代理

事件冒泡应用:事件代理文章目录事件冒泡应用:事件代理1. 什么是事件代理2. 事件代理的实现给祖先元素(一般使用父元素)绑定回调函数(响应函数)在祖先元素的响应函数中,获取事件的触发者:`Event.target`避免父元素本身触发事件1. 什么是事件代理事件代理,应用了事件冒泡的特性,将一个元素的事件处理,交给祖先元素进行处理。即,自己本身不处理事件,而是通过冒泡的特性,触发祖先元素的相同事件,调用祖先元素的回调函数。2. 事件代理的实现回看之前为了总结知识,做的一个小练习*点击查看→示例代码:

2020-08-29 17:19:27 137

原创 阻止事件传播:stopPropagation()方法和cancelBubble

阻止事件传播:stopPropagation()方法和cancelBubble1. cancelBubble属性如果事件对象的cancelBubble属性被设置为true, 则会阻止事件继续向上冒泡(也可以阻止事件的捕获)。举例:<html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript"> win

2020-08-29 02:01:47 1151

原创 事件的传播:捕获、冒泡

文章目录事件的传播:捕获、冒泡1. 事件的冒泡2. 事件的捕获3. 总结:事件触发并执行回调函数的完整描述4. 模拟实验:事件的传播事件的传播:捕获、冒泡请看这样一个问题,有下面的页面:两个元素都绑定了onclick单击事件,由于子元素在父元素内,所以单击子元素时父元素也被单击。这时,问题就来了,这两个元素的onclick事件哪个先触发?1. 事件的冒泡现在,通过一个实验来解答一下上面的问题。<html> <head> <meta charset="utf

2020-08-29 01:19:46 160

原创 事件对象

文章目录事件对象1. 简介2. 获取事件对象事件响应函数的参数(IE8及以下版本不支持)window.event(IE8及以下版本)3. 事件对象的属性事件的属性举例事件的方法举例(记录在事件对象的原型对象`__proto__`中)举例取消默认动作:`cancelable`属性和`preventDefault()`方法顺便一提:取消默认动作的另一种方法,`return false`事件对象1. 简介如果给一个元素对象的某事件(例如,onclick)绑定了一个响应函数(回调函数),当这个事件触发时,浏览

2020-08-20 02:44:04 436

原创 通过DOM对象获取/修改CSS样式 & class

文章目录通过DOM对象获取/修改CSS样式1.获取 & 修改内联样式2. 获取当前样式IE8及以下不支持,其它支持:`window.getComputedStyle(element)`仅IE浏览器支持:`element.currentStyle.XXX`封装一个通用的方法总结通过DOM对象获取/修改CSS样式1.获取 & 修改内联样式对于一个元素结点来说,内联样式style就是元素结点的一个属性节点。可以通过element.style.XXX来获取这个元素结点的内联样式;同时,也可以

2020-08-18 15:33:37 7798

原创 innerHTML踩坑

innerHTML踩坑请看下面的例子:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <body> <button>再来一个</button> </body> <script type="text/javascript">

2020-08-18 00:58:59 398

原创 innerHTML踩坑

innerHTML踩坑请看下面的例子:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> </head> <body> <button>再来一个</button> </body> <script type="text/javascript">

2020-08-18 00:16:56 275

原创 DOM对象的增、删操作——通过element.innerHTML

文章目录DOM对象的增、删操作——通过element.innerHTMLinnerHTML简介通过innerHTML实现DOM对象的增、删操作通过innerHTML修改的好处DOM对象的增、删操作——通过element.innerHTMLinnerHTML简介DOM对象的innerHTML属性,表示这个DOM对象对应的元素(标签)内部的内容。有如下结构: <body> <div> <p> hello world </p>

2020-08-17 23:50:02 661

原创 实例:选电影票(通过DOM对象的方法实现)

文章目录实例:选电影票(通过DOM对象的方法实现)效果展示1. 初始状态2. 选择3. 取消分析1. 布局2. 电影票及电影票生成3. 根据生成的电影票,生成可视化的座位4. 点击座位时,触发的操作5. 取消“选中”6. 渲染实例:选电影票(通过DOM对象的方法实现)效果展示1. 初始状态浅灰色的表示可以选择的座位;红色的表示票已经售出,不可选择。2. 选择点击要选择的座位,会计算出票价,并显示选择的座位对应的票。3. 取消通过点击绿色的座位(或者下方的票),实现取消票的选择。分析1

2020-08-17 23:25:00 1164 1

原创 DOM对象的增、删操作——通过DOM对象的方法

文章目录DOM对象的增、删操作——通过DOM对象的方法1. document.createElement(TagName:String)2. element.appendChild(node)3. document.createTextNode(content:String)4. element.removeChild(node)DOM对象的增、删操作——通过DOM对象的方法这里主要介绍4个方法:document.createElement(TagName:String)document.crea

2020-08-17 01:03:01 397

原创 document.querySelector(),document.querySelectorAll()

document.querySelector(),document.querySelectorAll()除了使用DOM的对象结点之间的关系选择一个元素结点外,还可以通过CSS的选择器选择元素结点。document对象中,有两个方法querySelector()和querySelectorAll()。这两个方法的参数相同,都是一个CSS选择器表达式(字符串形式),通过这个选择器表达式,选择元素。举例: <script type="text/javascript"> window.

2020-08-14 19:29:20 3691

原创 单向数据通路——管道(Pipe)

单向数据通路——管道(Pipe)管道有两端:读端和写端,Pipe的实例可以获得两个通道,分别对应管道的两个写端。注意,Pipe的两个端对应的通道都是SelectableChannel的子类,所以可以使用非阻塞的通信方式。使用方法1. 向管道中写数据写数据时,先获得写端对应的通道。然后对通道进行写操作。//获得管道的写通道Pipe.SinkChannel sinkChannel = pipe.sink();//写数据sinkChannel.write(output);2. 从管道中读数据

2020-07-21 15:25:39 492

原创 基于UDP的非阻塞通信

基于UDP的非阻塞通信如果使用UDP进行阻塞通信,则会在receive()时阻塞(在没有报文到达时)。如果使用非阻塞通信,就需要“知道”什么时候调用receive(),与基于TCP的非阻塞通信相同,需要一个selector来监听管道的“事件”。当有报文到达时,事件触发。通过selector,在事件触发时调用receive()接收报文即可。通信流程1. 创建DatagramChannelDatagramChannel datagramChannel = DatagramChannel.open()

2020-07-21 14:49:21 2563

原创 使用NIO进行阻塞式通信-基于UDP协议

文章目录使用NIO进行阻塞式通信-基于UDP协议流程服务端1. 创建`DatagramChannel`2. 绑定本地端口3. 接收报文4. 处理报文5. 给客户端发送报文举例:Echo服务端 + 客户端服务端客户端使用NIO进行阻塞式通信-基于UDP协议UDP协议与TCP协议之间最直观的差别就是UDP协议是无连接的通信协议使用UDP进行通信时,服务端和客户端在代码层面几乎没有区别。通信大致过程如下:服务端接收客户端报文处理报文给客户端发送报文客户端给服务端发送报文接收服务

2020-07-21 14:24:40 228

原创 多线程+非阻塞通信导致多次处理读事件

多线程+非阻塞通信导致多次处理读事件有问题的代码:Echo服务端简单的解释一下,事件处理器handler有一个handle(SelectionKey)方法,根据方法的不同,执行不同的操作。对于读事件,创建一个线程进行读事件处理。public class MutiThreadServer { private static final int PORT = 8888; private ServerSocketChannel severSocketChannel; private Selector s

2020-06-27 11:47:09 140

原创 NIO非阻塞通信简介及基于TCP的非阻塞通信

NIO非阻塞通信简介及基于TCP的非阻塞通信通信方式简述阻塞式的通信以基于TCP的通信方式来说明:创建ServerSocket(或ServerSocketChannel)、调用accept()方法获取客户端的Socket连接、通过Socket通信、关闭Socket连接。对于阻塞式的通信,最影响效率的其实是SocketChannel.read()或通过Socket获得的输入流的InputStream.read()。当服务端调用这些输入方法时,线程就会进入阻塞状态,直到客户端发来数据才被唤醒。如果用单

2020-06-27 11:06:23 416

原创 使用NIO进行阻塞式通信-基于TCP协议

使用NIO进行阻塞式通信-基于TCP协议与使用SocketAPI进行网络通信的方法很类似。在使用Socket进行通信时服务端使用ServerSocket监听连接;使用NIO,则使用ServerSocketChannel监听连接。对于非阻塞式的通信,通信的流程不变:文章目录使用NIO进行阻塞式通信-基于TCP协议服务端1. 创建`ServerSocketChannel`2. 绑定本地端口,开始监听3. 调用accept(),连接到客户端4. 通过`SocketChannel`进行通信5. 通信完成,关

2020-06-27 01:15:20 234

原创 鉴别器 discriminator

文章目录鉴别器``鉴别器的结构必要的属性举例(摘自官方文档)鉴别器<discriminator/>鉴别器,可以简单的理解为在<resultMap/>中的swith:case语句。鉴别器的结构 <discriminator javaType="int" column="vehicle_type"> <case value="1" resultMap="carResult"/> <case value="2" resultMap=

2020-05-29 17:49:49 1561

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除