- 博客(37)
- 收藏
- 关注
原创 TreeMap
说明基于红黑树的 NavigableMap 实现。Map根据其键的 Comparable natural ordering 进行排序,或者根据Map创建时提供的 Comparator 进行排序,具体取决于使用的构造函数。 此实现为 containsKey、 get、 put 和 remove操作提供了保证的 log(n) 时间成本。算法改编自 Cormen、Leiserson 和 Rivest 的算法简介。 请注意,树形映射维护的排序,就像任何排序映射一样,无论是否提供显式比较器,必须与
2021-09-05 16:05:45 262
原创 Map集合
说明将键映射到值的对象。Map不能包含重复的键;每个键最多可以映射到一个值。这个接口取代了 Dictionary 类,后者是一个完全抽象的类而不是一个接口。 Map 接口提供三个集合视图,允许将Map的内容视为一组键、一组值或一组键值映射。地图的 order 被定义为Map集合视图上的迭代器返回其元素的顺序。一些Map实现,比如 TreeMap 类,对它们的顺序做出了具体的保证;其他的,比如 HashMap 类没有。 注意:如果将可变对象用作映射键,则必须非常小心。如果对象的值以影响 equals
2021-09-04 17:12:07 203
原创 HashMap
说明Map 接口的基于哈希表的实现。此实现提供了所有可选的映射操作,并允许 null 值和 null 键。 (HashMap 类大致等同于 Hashtable,除了它是非同步的并且允许空值。)该类不保证映射的顺序;特别是,它不保证订单会随着时间的推移保持不变。 此实现为基本操作(get 和 put)提供恒定时间性能,假设散列函数将元素正确地分散到存储桶中。集合视图上的迭代需要的时间与 HashMap 实例的“容量”(桶的数量)加上它的大小(键值映射的数量)成正比。因此,如果迭代性能很重要,则不要将初始容
2021-09-01 16:30:59 277
原创 Web的攻击技术
针对Web应用的攻击模式主要有以下两种:主动攻击和被动攻击以服务器为目标的主动攻击主动攻击(active attack)是指攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。由于该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源。主动攻击模式里具有代表性的攻击是SQL注入攻击和OS命令注入攻击。以服务器为目标的被动攻击被动攻击(passive attack)是指利用圈套策略执行攻击代码的攻击模式。在被动攻击过程中,攻击者不直接对目标Web应用访问发起攻击。被动攻击
2021-08-31 21:39:19 220
原创 确认访问用户身份的认证与基于HTTP的协议
何为认证计算机本身无法判断坐在显示器前的使用者的身份。进一步说,也无法确认网络的那头究竟有谁。可见,为了弄清究竟是谁在访问服务器,就得让对方的客户端自报家门。可是,就算正在访问服务器的对方声称自己是ueno,身份是否属实这点却也无从谈起。为确认ueno本人是否真的具有访问系统的权限,就需要核对“登录者本人才知道的信息”、“登录者本人才会有的信息”。核对的信息通常是指以下这些。●密码:只有本人才会知道的字符串信息。●动态令牌:仅限本人持有的设备内显示的一次性密码。●数字证书:仅限本人(终端)持有的
2021-08-31 21:38:39 505
原创 确保Web安全的HTTPS
HTTP的缺点到现在为止,我们已了解到HTTP具有相当优秀和方便的一面,然而HTTP并非只有好的一面,事物皆具两面性,它也是有不足之处的。HTTP主要有这些不足,例举如下。●通信使用明文(不加密),内容可能会被窃听●不验证通信方的身份,因此有可能遭遇伪装●无法证明报文的完整性,所以有可能已遭篡改这些问题不仅在HTTP上出现,其他未加密的协议中也会存在这类问题。除此之外,HTTP本身还有很多缺点。而且,还有像某些特定的Web服务器和特定的Web浏览器在实际应用中存在的不足(也可以说成是脆弱性或安
2021-08-31 21:38:09 181
原创 HTTP首部
HTTP报文首部HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。对于客户端用户来说,这些信息中的大部分内容都无须亲自查看。HTTP请求报文在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分构成。如下图是对http://hackr.jp进行访问。HTTP响应报文在响应中,HTTP报文由HTTP版本、状态码(数字和原因短语)、HTTP首部字段3部分构成。如下图是http://hackr.jp/时响应报文
2021-08-31 21:37:43 135
原创 HTTP的状态码
返回结果的HTTP状态码状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。数字中的第一位指定了响应类别,后两位无分类。响应类别有以下5种。只要遵守状态码类别的定义,即使改变RFC2616中定义的状态码,或服务器端自行创建状态码都没问题。2XX成功2XX的响应结果表明请求被正常处理了。200 OK表示从客户端发来的请求在服务器端被正常处理了。在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。比如,使用G
2021-08-31 21:37:17 254
原创 简单的HTTP协议
HTTP协议用于客户端和服务端之间的通信HTTP协议和TCP/IP协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务器端。在两台计算机之间使用HTTP协议通信时,在一条通信线路上必定有一端是客户端,另一端则是服务器端。有时候,按实际情况,两台计算机作为客户端和服务器端的角色有可能会互换。但就仅从一条通信路线来说,服务器端和客户端的角色是确定的,而用HTTP协议能够明确区分哪端是客户端,哪端是服务器端。通过请求和响应的交换达
2021-08-31 21:36:50 166
原创 与HTTP关系密切的协议:IP,TCP,DNS
负责传输的IP协议按层次分,IP(Internet Protocol)网际协议位于网络层。Internet Protocol这个名称可能听起来有点夸张,但事实正是如此,因为几乎所有使用网络的系统都会用到IP协议。TCP/IP协议族中的IP指的就是网际协议,协议名称中占据了一半位置,其重要性可见一斑。可能有人会把“IP”和“IP地址”搞混,“IP”其实是一种协议的名称。IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址和MAC地址(Medi
2021-08-31 21:36:05 118
原创 TreeSet
说明基于 TreeMap 的 NavigableSet实现。元素使用它们的Comparable 自然排序 排序,或者通过在集合创建时提供的 Comparator 排序,具体取决于使用的构造函数。 此实现为基本操作( add、 remove 和 contains)提供有保证的 log(n) 时间成本。 请注意,如果要正确实现 Set 接口,则集合维护的排序(无论是否提供显式比较器)必须与 equals 一致。 (请参阅 Comparable 或 Comparator 以获得 consisten
2021-08-24 18:08:49 204
原创 HashSet
说明这个类实现了 Set 接口,由一个哈希表(实际上是一个 HashMap 实例)支持。它不保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。此类允许 null 元素。 此类为基本操作(add、remove、contains 和 size)提供恒定的时间性能,假设散列函数将元素正确地分散在桶中。迭代这个集合需要的时间与 HashSet 实例的大小(元素数)加上支持 HashMap 实例的“容量”(桶数)的总和成正比。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或负载因子太低),这
2021-08-24 16:46:22 186
原创 LinkedList
说明List 和 code Deque 接口的双向链表实现。实现所有可选的列表操作,并允许所有元素(包括null)。 所有操作的执行都符合双向链表的预期。索引到列表中的操作将从开始或结束遍历列表,以更接近指定索引的为准。 注意这个实现不是同步的。如果多个线程并发访问一个链表,并且至少有一个线程在结构上修改了链表,它必须在外部同步。 (结构修改是添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这通常是通过同步一些自然封装列表的对象来完成的。如果不存在此类对象,则应使用Collec
2021-08-20 15:35:43 85
原创 ArrayList实现类
说明数组结构实现,查询快,增删慢。运行效率快,线程不安全源码说明List 接口的可调整大小的数组实现。实现所有可选的列表操作,并允许所有元素,包括 null。除了实现 List 接口之外,该类还提供了操作内部用于存储列表的数组大小的方法。 (这个类大致相当于 Vector,只是它是不同步的。) size, isEmpty, get, set、iterator 和 listIterator 操作以恒定时间运行。 add 操作在均摊常数时间中运行,即添加 n 个元素需要 O(n) 时间。所有其他操作
2021-08-19 15:27:26 62
原创 List接口
说明有序集合(也称为 sequence)。此界面的用户可以精确控制每个元素在列表中的插入位置。用户可以通过整数索引(在列表中的位置)访问元素,并在列表中搜索元素。与集合不同,列表通常允许重复元素。更正式地说,列表通常允许元素对 e1 和 e2使得e1.equals(e2),并且如果它们允许 null,它们通常允许多个 null 元素元素。有人可能希望通过在用户尝试插入它们时抛出运行时异常来实现一个禁止重复的列表,这并非不可想象,但我们希望这种用法很少见。List 接口在iterator, add的契约
2021-08-18 14:52:03 90
原创 Collection
说明Collection是集合层次结构中的根接口。一个集合代表一组对象,称他们为集合的元素。一些集合允许重复元素,而另外一些则不允许。有些是有序的,有些是无序的。JDK不提供此接口的任何实现,他提供了更具体的子接口的实现,例如Set和List。此接口通常用于传递集合并在需要最大通用性的地方操作他们。可能包含重复元素的无序集合应该直接实现这个接口。所有通用(Collection)实现类(通常通过其子接口之一间接实现Collection)应该提供两个标准构造函数:一个void(无参数)构造函数,他创建了空
2021-08-17 15:24:10 89
原创 数据库管理系统的事务原理
数据库管理系统(DataBase Management S有stem,DBMS),是位于用户与操作系统之间的一层数据管理软件,功能主要包括:数据定义,数据操纵,数据库的运行管理,数据库的建立和维护等。事务模型要解决的问题事务模型:是电子交易操作的保障。为什么需要事务处理机制事务处理机制,就是要保证用户数据操作动作对数据是“安全的”。事务模型核心的内容:ACID,这个模型可以保证:操作间串行执行,执行中不必担心出错。A:保证了操作(一些有完整逻辑意义的数据读写动作)要么成功要么失败,A和C保证了数据
2021-08-14 00:17:44 464
原创 JAVA基础
JAVA异常分类及处理概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。异常分类Throwable是java语言中所有错误或异常的超类。下一层分为Error和Exception。ErrorError类是指java运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果出现了这样的错误,除了告知
2021-08-05 16:57:28 86
原创 Redis的事务、复制原理与哨兵模式原理
Redis的事务Redis的事务允许在一次单独的步骤中执行一组命令,并且能够保证将一个事务中的所有命令序列化,然后按顺序执行;在一个Redis事务中,Redis要么执行其中的所有命令,要么什么都不执行。即Redis的事务要能够保证序列化和原子性。Redis事务的常用命令:multi语法:multi功能:用于标记事务块的开始。Redis会将后续的命令逐个放入队列中,然后才能使用EXEC命令原子化地执行这个命令序列。返回值:开启成功返回OKexec语法:exec功能:在一个事务中执行所有先前放
2021-08-03 23:37:13 116
原创 Redis的配置文件与持久化
redis.conf存放位置:Redis的安装根目录下,Redis在启动时会加载这个配置文件,在运行时按照配置进行工作。 这个文件有时候我们会拿出来,单独存放在某一个位置,启动的时候必须明确指定使用哪个配置文件,此文件才会生效。Redis 的网络相关配置bind:绑定IP地址,其它机器可以通过此IP访问Redis,默认绑定127.0.0.1,也可以修改为本机的IP地址。port:配置Redis占用的端口,默认是6379。tcp-keepalive:TCP连接保活策略,可以通过tcp-keep
2021-08-03 22:50:38 559
原创 Redis简介与命令
Redis简介说明Remote Dictionary Server(远程字典服务器),是一个用C语言编写的、开源的、基于内存运行并支持持久化的、高性能的NoSQL数据库.也是当前热门的NoSQL数据库之一。Redis特点1、支持数据持久化Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。2、支持多种数据结构Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。3、支持数据备份Redi
2021-08-03 17:32:57 187
原创 Java多线程并发
java多线程并发java并发知识库java线程实现/创建方式继承Thread类Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法就是一个native方法,它将启动一个新的线程,并执行run()方法。public class MyThread extends Thread{public void run(){System.out.println("MyThread"); }
2021-08-03 16:07:15 470 1
原创 String StringBuffer和StringBuilder的区别是什么?
String StringBuffer和StringBuilder的区别是什么?String为什么是不可变的String类中使用final关键字修饰字符数组来保存字符串,private final char value[],所以String类型是不可变的。可变性StringBulider和StringBuffer都是继承AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符组保存字符串char[] value,但是没有用final关键字进行修饰,所以
2021-08-01 13:09:05 97
原创 JAVA集合
接口继承关系和实现集合类主要放在Java.util包中,主要有三种:set(集合),list(链表包含Queue)和map(映射)。Collection:Collection是集合List,Set,Queue的最基本接口。Iterator:迭代器,可以通过迭代器遍历集合中数据。Map:是映射表的基础接口。Listjava的List是非常常用的数据类型。List是有序的Collection。Java List一共有三个实现类:分别是ArrayList,Vector,LinkedList。
2021-04-11 17:31:47 195
原创 JVM
JVM基本概念JVM是可运行java代码的虚拟计算机,它包含一套字节指令码集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。JVM是运行在操作系统之上,它与硬件没有直接接触。JVM三部分解释运行过程Java源文件经过编译器产生相应的.class文件,也就是字节码文件,而字节码文件又通过java虚拟机中的解释器编译成特定机器上的机器码。每一种平台的解释器是不同的,但是实现的虚拟机是相同的,这就是java为什么能够跨平台的原因了,当一个程序从开始运行,这是虚拟机就开始实例化了,多个程序启动
2021-04-09 20:28:08 103
原创 CSS3盒子与DIV布局
CSS3中提出了盒子模型和新增盒子模型来完成对元素的直接定位,即能够为页面元素定义边框,并修饰内容距离,。从而优化文本内容的显示效果。div层div与span区别在包含方面div和span标记的作用相同。div和span标记二者的区别是,div是一个块级元素,其包含的元素会自动换行。span标记是一个行内标记,其前后都不会发生换行。div标记可以包含span标记元素,但是span标记一般不包含div标记。盒子模型盒子模型所以的页面元素都包含在一个矩形框内,称为盒子。盒子描述了元素及其属性在页面布
2021-02-03 21:59:47 872
原创 网页的定位与布局
定位方式定位属性如下表:定位属性含义position定义位置left指定元素横向距左部距离right指定元素横向距右部距离top指定元素纵向距顶部距离bottom指定元素纵向距底部距离z-index设置元素的层叠顺序width设置元素框宽度height设置元素宽高度overflow内容溢出控制clip剪切...
2021-02-03 20:50:33 222
原创 CSS3美化背景与边框
背景相关属性背景颜色background-color属性用于设置网页背景颜色,background-color属性接受任何任何有效的颜色值,默认背景颜色为透明(transparent)。语法格式如下:{background-color:transparent|color}背景图片background-image属性用于设置标记的背景图片,通常在标记< body>中应用,将图片用于整个主体中。语法格式如下:background-image:none|url(url)背景图片重复
2021-02-02 22:01:00 351
原创 CSS3美化表格和表单样式
表格基本样式表格边框样式border-collapse属性主要用来设置表格的边框是否合并为一个单一的边框,还是像在标准的HTML中那样分开显示。语法格式如下:border-collapse:separate|collapse其中separate是默认值,表示边框会被打开,不会忽略border-spacing和empty-cells属性;而collapse属性表示边框会合并为一个单一的边框,会忽略border-spacing和empty-cells属性。表格边框宽度border-width可以对
2021-01-26 22:04:29 780
原创 CSS字体与段落属性
字体属性字体font-familyfont-family属性用于指定文字字体类型,如宋体等等。使用语法如下:{font-family:name}{font-family:cursive|fantasy|monospace|serif|sans-serif}从上述中可以看出,font-family有两种声明方式,第一种使用name字体名称,按优先顺序排列,以逗号隔开,如果字体名称包含空格,则应使用引号括起;第二种声明方式使用所列出的字体序列名称,如果使用fantasy序列,将提供默认字体序列。字
2021-01-25 23:46:26 304
原创 CSS
CSS基础语法CSS样式表由若干条样式规则组成,这些样式规则可以应用到不同的元素或文档中来定义他们的显示效果。每一条样式规则有三部分构成:选择符(selector)、属性(property)、属性值(value)。基本格式如下:selector{property:value}解释:(1)selector可以采用多种形式,可以为文档中的HTML标记,也可以是XML文档中的标记。(2)property是选择符指定的标记所包含的属性。(3)value指定了属性的值。在HTML中使用CSS3的方法C
2021-01-21 22:28:35 132
原创 Web存储
Web存储本地存储和Cookies的区别在客户端存储数据在HTML5标准之前,Web存储信息需要Cookies来完成,但是Cookie不适合大量数据存储,因为它们由每个对服务器的请求来传递,这使得Cookies速度很慢,而且效率也不高。因此,在HTML中,Web存储API为用户如何在计算机或设备上存储用户信息做了数据标准的定义。本地存储和Cookies的区别本地存储是仅存储在用户的硬盘上并等待用户读取,而Cookies是在服务器上读取的。本地存储供客户端使用,如果需要服务器端根据存储数值做出反映,
2021-01-20 19:27:59 93
原创 HTML5绘制图形
绘制图形canvas概述绘制基本形状canvas概述添加canvas元素< canvas>标记是一个矩形区域,包含两个属性width和height。在网页中常用的形式如下:<canvas id="myCanvas" width="300" height="200" style="border:1px solid #c3c3c3;">..........</canvas>注意:画布canvas本身不具有画图功能,只是一个容器。使用canvas和Jav
2021-01-20 16:48:02 212
原创 表单,音频、视频
表单、音频、视频使用表单表单概述表单基本元素使用表单高级元素使用HTML5中的音频和视频< audio>标记< video>标记音频和视频中的方法音频和视频中的属性使用表单表单概述表单主要用于收集网页上浏览者相关信息。其标记为< form>< /form>,基本格式如下:<form action="url" method="get|post" enctype="mime"></form>action指定处理提交表单的格式,他
2021-01-19 21:58:51 250
原创 超链接与表格 HTML
超链接与表格用HTML5建立超链接URL的概念URL的格式URL的类型超链接标记< a >设置文本和图片的超链接设置以新窗口显示的超链接页面创建热点区域浮动框架iframe创建表格用HTML5建立超链接URL的概念URL为”Uniform Resource Locator”的缩写,通常翻译为“统一资源定位器”。也即是网址。URL的格式URL有四部分组成,即“协议”,“主机名”,“文件夹名”和文件名。例如:http://www.webDesign.com/pages/computer.h
2021-01-19 17:33:47 547 1
原创 HTML文本与图像
HTML5网页中的文本和图形添加文本文本的分类:普通文本和特殊字符文本普通文本指的是汉字或在键盘上可以输出的字符。body标记部分直接输入。特殊文字符号以“&”开头,以“;”结尾,中间为相关字符编码。如下表:注意:尽量不要使用多个 ;来表示多个空格。特殊文本样式1)重要文本通常是以粗体显示、强调方式显示或加强方式显示,分别对应< b>,< em>,< strong>;举例:<!DOCTYPE html >
2021-01-18 19:45:15 235
原创 HTML
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-01-17 21:32:57 225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人