09 2017 档案
摘要:所谓对称密码,是指在加密和解密时使用的都是同一密钥,比如之前提到的恺撒密码。而非对称密码,也称之为公钥密码,是指在加密和解密时使用不同密钥的方式。本章会主要介绍几种对称密码,如DES、三重DES、AES等,在这之前,要先了解一下什么是比特序列运算。1、比特序列运算在这之前,我们先来看一个异或运算(不同取1,相同取0,以下称XOR),假如有二进制数01001100为A,10101010为B,则两者X...
阅读全文
摘要:《图解密码技术》(点击查看详情)1、写在前面的话因为接触了微信公众号开发,之中涉及支付功能时用到了大量签名加密之类的东西,对于密码安全这一块,其实一直不是很明白,大部分方法自己在用到时也是去直接google,然后复制粘贴,可以说完全不知其所以然。加密这一块查了下有很多人推荐这本书,于是就决定看看。我个人涉及到真正的加密技术的实际应用可能不算那么多,所以这里笔记准备记录一些浅显和核心的东西。2、加密...
阅读全文
摘要:1、泛型泛型也称之为参数化类型,就是在定义类、接口和方法时,不去指定具体的类型,而是把类型也当成一种参数,在运行时再去指定具体的类型。Java中泛型的作用:编译安全,避免非法类型的传入对于如集合而言,省略了强制类型转换可读性,从字面上就可以判断内容类型2、泛型的声明泛型的声明都包裹在尖括号 中,多个泛型类声明用逗号隔开泛型声明的类型参数只能代表引用数据类型,不能是基本数据类型(像int、doub...
阅读全文
摘要:1、什么是当面付当面付产品介绍商户可通过以下任一方式在线下完成交易收款:商家通过扫描线下买家支付宝钱包中的条码、二维码等方式将买家的交易资金直接打入卖家支付宝账户,资金实时到账;线下买家通过使用支付宝钱包扫描商家的二维码等方式完成支付,提升商家收银效率,资金实时到账;线下买家使用支付宝钱包中的当面付功能,通过声波支付的方式向商家完成付款,资金实时到账。简单地说,即我们日常中使用的 条码支付、扫码支...
阅读全文
摘要:1、过滤器的基本概念和作用在网站的页面访问时,我们往往需要做一些控制,如普通用户无法访问VIP用户的页面。如果在每一个需要访问控制的文件中都加上判断代码,那么代码将会很冗余,一旦需要统一修改时也极其繁琐。过滤器就可以解决这样的问题,配置完成的过滤器,会强制让指定的页面在访问之前先从过滤器走一趟。2、过滤器相关的APIServlet API中,与过滤器有关的API共有三个接口,分别是:FilterF...
阅读全文
摘要:1、事件1.1 事件的概念在Servlet中有一个概念叫做监听,顾名思义,就是监听某种事件是否发生。就如你是一家娱乐媒体公司的老板,你派出狗仔队去跟着某些明星,比如你想了解他们的绯闻,或者活动进展情况。这里的绯闻和活动进展情况,就是所谓的事件。在Web编程中,某些操作总会触发一种事件的发生,如启动或关闭容器、创建和销毁对话等。我们说过,Java是面向对象的语言,所以当发生了某种事件,容器将会创建对...
阅读全文
摘要:在HttpServletRequest、HttpSession、ServletContext中有三个相同的方法,都与属性有关:public Object getAttribute(String name);public void setAttribute(String name, Object o);public void removeAttribute(String name);对这三者而言,实...
阅读全文
摘要:1、上下文的概念我们在说到Servlet的继承关系时,提到自定义Servlet实际上间接实现了Servlet和ServletConfig两个接口,其中ServletConfig接口中定义了一个方法叫getServletContext,用以获取Servlet运行的上下文环境对象。这里就要先说明一下,如何理解所谓的 “上下文”。每个Web项目,运行时部署在Web应用服务器(如Tomcat、Jetty、...
阅读全文
摘要:1、为什么有Session和Cookie根据早期的HTTP协议,每次request-reponse时,都要重新建立TCP连接。TCP连接每次都重新建立,所以服务器无法知道上次请求和本次请求是否来自于同一个客户端。因此,HTTP通信是无状态的。服务器认为每次请求都是一个全新的请求,无论该请求是否来自同一地址。但是这也带来了问题,假如不使用Session或Cookie,那么就意味着假如你登录了某个购物...
阅读全文
摘要:1、Session是什么除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态,即Session是服务器端使用的一种保存客户端状态的机制。Cookie在客户端,Session在服务器端。围绕以上的概念来说,其实Session还包含不同的语义:(1)Session会话我们通常都会把Session翻译成会话,因此我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Ses...
阅读全文
摘要:1、Cookie是什么Cookie,中文名称为“小型文本文件”或“小甜饼”,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。很多网站在你浏览后,会在你电脑中留下小小的档案,也就是我们说的Cookie,以便你再次浏览时,网站会读取它上次给你留下的Cookie资料,如果有的话,就可以根据内容来判断使用者,送出特定的网页内容。因为HTTP协议是无状态的,即服务器不知道用户上一次做...
阅读全文
摘要:1、Servlet的继承关系假如现有我们自定义的一个Servlet,继承HttpServlet,那么实际上它的继承链如下图: 可以看到,核心的部分在于:两个顶级接口ServletServletConfig接口的实现类GenericServlet基于HTTP协议的实现类HttpServlet我们剥离一下,把不需要看的去掉,再把方法显示一下,可清晰知道Servlet的整体继承关系如下: 其中重点摘录部...
阅读全文
摘要:1、Tomcat和Servlet的关系之前提到过,Servlet是运行在Web容器里的,Tomcat作为容器的一种,在这里自然也要大概说说两者之间的大致关系。 首先,如上所述,Tomcat是Web应用服务器,是一个Servlet/JSP容器。它负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传回给客户。而Servlet是运行在支持Java语言的服务器上的组件。从HTTP协议中...
阅读全文
摘要:1、Servlet是什么 Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。1.1 广义上来讲从本质上来讲,Servlet就是一个特殊的Java类,说它特殊是因为这个Java类必须直接或间接地实现Servlet接口(javax.servlet.Servlet),我们自定义的S...
阅读全文
摘要:1、实现功能我们已经对注解有了基本的认识,知道了如何自定义注解,如何使用和最基本的处理注解。本篇主要介绍,如何使用运行时级别的注解,配合反射来自动生成建表的sql语句。如下例:我们有实体类Student,并添加相应的注解 @Table、@Column,最终可以获取到创建对应表的sql语句@Table(name = "t_student") public class Student { ...
阅读全文
摘要:1、AnnotatedElement接口如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。Java用Annotation接口来代表程序元素前面的注解,该接口是所有Annotation类型的父接口。如在java.lang.reflect包中有一个...
阅读全文
摘要:1、自定义注解的方式注解的定义和接口的创建比较相似,但注解需要以@开头,用@interface来声明一个注解,其中:每一个方法实际上是声明了一个配置参数方法的名称就是参数的名称,方法不带参数,可以省略public返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)可以通过default来声明参数的默认值定义注解的基本格式:public @interface 注解...
阅读全文
摘要:1、什么是注解用一个词就可以描述注解,那就是元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。@Override public String toString() { return "This is String Representation of current object."; } 4 1@Override 2public String toString() {3 ...
阅读全文
摘要:在Java中,有个java.util.regex包,这是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它主要有两个类:Pattern 一个正则表达式经编译后的表现模式,可以理解为某正则的对应类Matcher 匹配检查器,根据Pattern对象作为匹配模式对字符串进行匹配检查1、Pattern1.1 获取Pattern对象Pattern类用于创建一个正则表达式,或者说创建一个匹配...
阅读全文
摘要:1、什么是反射在了解反射之前,我们都是如何使用一个Java类的?已知一个类的类名,以及类中的方法、属性和构造方法等调用构造方法创建对象使用对象调用方法或者属性那么问题来了,如果我们只知道一个类的类名,能否动态得到类的信息,包括其方法和属性?通过反射所以反射的概念是:在运行状态中,对任意类都可知道其所有属性和方法,对任意对象都可调用其方法和属性。这种动态获取信息以及动态调用对象方法的功能,称之为Ja...
阅读全文
摘要:因为代码经验和见识等原因,说实话现在对于异常的使用,我也算是理解甚少。为什么用?什么时候用?即便是在查阅了部分资料以后,也只能在这里提炼出部分自己能够理解的,以供参考和讨论。1、使用异常的好处1.1 隔离常规代码和错误处理代码实际上,我们希望程序不要出现问题,用户操作永远逻辑清晰而正确,一切都按照我们祈祷的那样运行,然而这是不可能的。必然会有错误必然会要我们去处理,但是错误的处理并不是我们代码的...
阅读全文
摘要:1、异常链1.1 throw我们之前比喻过,说异常的抛出就像棒球中的投球,其中RuntimeException是发生意外后程序自行抛出的,假如我们想要自己抛出异常,就要使用 throw 关键字。显式地抛出异常通常写为:throw new xxxException(); 1 1throw new xxxException(); 异常抛出后,有两种处理方式:立即处理,使用 try catch ...
阅读全文
摘要:1、异常和错误Java作为面向对象的语言,自然把系统发生的不正确的事件也封装成了Java对象。比如一个不存在的对象,我们却试图调用它的方法,自然是行不通的,这个不正确的事件,也就被封装成为了我们常见的NullPointerException对象。即是说,在Java程序的运行过程中,如果发生了意外事件(发生了错误或异常),则该意外会被封装成为一个对象,并把它提交给运行时的系统,寻求相应的代码来处理。...
阅读全文
摘要:1、节点流和处理流的概念根据输入输出方式不同,我们划分了输入流和输出流;根据处理数据流的单位不同,我们划分了字节流和字符流;现在我们根据数据封装类型的不同划分节点流和处理流。节点流如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等,则称为节点流处理流如果流封装的是其他的流对象,称之为处理流。处理流提供缓冲功能,提高读写效率2、节点流和处理流的常用类节点流中常用类:字节输入流 FileIn...
阅读全文
摘要:1、输入流和输出流我们在提到File类的时候,就说过Java对于输入和输出操作是以 “流” 的形式来体现的,另外,所谓的输入和输出是针对内存来讲的,根据数据的传输方向,往内存中读,叫输入流;从内存中往外写,叫输出流。上面这张图应该很形象了,接下来要说的是:所有输入流都是InputStream类或Reader类的子类类名以InputStream结尾的类都是InputStream类的子类类名以Read...
阅读全文
摘要:1、IO概念File类是java.io包中一个很重要的类,这里的io,就是指 Input/Output,所以在看File类之前,先提一下所谓的IO概念。I/O(Input/Output),即输入/输出,通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出:如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据通过输入和输出操作可以从外界接收信息,或者把信息传递给外界这里的输入还是输...
阅读全文
摘要:1、接口的声明接口是一系列抽象的集合,简单地说,它更像特殊的抽象类,类似所有方法都是抽象方法的抽象类。当然,这只是简单地说法,还是稍有不同的:抽象类可以有构造方法,接口没有构造方法抽象类可以有成员变量,接口只能有常量接口的声明不像抽象类使用 abstract class,而是使用新的关键字 interface:【修饰符】 interface 接口名 【extends 父接口名列表】{ ...
阅读全文
摘要:1、基本概念Object类是所有类的父类,位于java.lang包中。任何类的对象,都可以调用Object类中的方法,包括数组对象。2、常用方法2.1 toStringtoString可以将任何一个对象转换为字符串返回,返回值的生成算法为:getClass().getName() + '@' + Integer.toHexString(hashCode()) 1getClass().getNa...
阅读全文
摘要:1、多态的定义多态的含义是,对外是一种表现形式,内在有多种具体的实现。在面向对象的程序设计理念中,多态性的定义在于,同一操作作用于不同类的实例,将产生不同的执行结果。多态在Java中的体现为:方法重载方法覆盖运行时多态根据定义,前两者的体现也是显而易见了,方法重载的方法名都是一个,但是根据参数不同调用时候实现也不同;方法覆盖也同理,方法名和父类方法相同,但是调用时调用的子类的新的实现。而这里主要说...
阅读全文
摘要:1、抽象类的声明我们举过例子如Cat类继承Animal类,但是Cat你可以知道是具体什么样,两个尖耳朵,身体柔软娇小,喵喵叫,可是你告诉我,Animal长什么样呢?如果一个类中没有包含足够的信息来描绘一个具体的对象,这个类应该使用abstract关键字设置为抽象类。【访问权限】 abstract class 类名 { 成员列表 } 1 1【访问权限】 abstract class 类名 { 成员...
阅读全文
摘要:1、继承的声明继承,是指一个类的定义可以基于另一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收父类的属性和行为,并扩展新的能力。Java中的继承是单继承,即最多只能有一个父类。所谓 “龙生龙,凤生凤,老鼠的儿子会打洞”,这句话简单明白地阐述了继承:子类基于父类,也意味着是 “is-a” 的关系子类拥有父类的能力,也就是代码得到了复用继承的声明也很简单,直接使用extends关键...
阅读全文
摘要:不论是类、属性,还是方法的声明中,都有一个可设置的“修饰符”,它可以实现一些高级特性。1、staticstatic被称之为静态的,并不是指不可以修改的意思,而是说它的内存空间是静态的。1.1 修饰属性如果某个类的某个属性被static修饰,那么意味着不论创建多少个对象,它们都是共用该属性,不会有各自独立的值。也即是说,凡是被static修饰的属性也好,方法也罢,它是属于类的,不属于某个具体的对象。...
阅读全文
摘要:1、分支语句1.1 ifif( 表达式 ) { 执行语句块 }1.2 if elseif( 表达式 ) { 执行语句块 } else { 执行语句块 } 注意:对于 if else 的使用,有时候也可以使用三目运算符来代替1.3 if else if if( 表达式 ) { 执行语句块 } else if ( 表达式 ) { 执行语句块 } ...(可嵌套多个else if) 1.4 switch...
阅读全文
摘要:引用类型之间的比较大多是通过方法来进行的,所以大部分的运算符还是针对基本数据类型。按照功能划分,Java中的运算符可以分为四类:算术运算符、位运算符、比较运算符和逻辑运算符。1、算术运算符单目:表示可以对一个变量进行操作双目:表示对两个变量进行操作三目:需要三个操作数进行运算运算符类型 符号 含义示例单目 + 取正 单目 - 取负 单目 ++ ...
阅读全文
摘要:1、枚举类的定义和意义1.1 基本概念枚举类型(Enumerated Type) 用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符。枚举类型的出现有什么意义?为什么不可以用普通的常量直接定义来替代呢?我们先看一个示例,假如现在希望为彩虹描述出七种颜色,在Java中通过常量定义的方式来实现: Public static class RainbowColor ...
阅读全文
摘要:1、基本概述数组属于对象,它是相同数据类型元素的集合,这里的数据类型,既可以存储基本数据类型,也可以存储引用数据类型。对于数组的声明,有两种方式:数据类型 [ ] 数组变量名 (如 int [ ] arr)数组类型 数组变量名 [ ] (如 int arr [ ])虽然两者并没有本质上的区别,但从可读性上建议使用 int[ ] arr 的方式。数组的创建方式有三种:声明数组的同时,只指定其长度,数...
阅读全文
摘要:1、包装器的基本概念int num = 10; 1 1int num = 10; 如上 num 只是一个变量,但是在某些必须操作对象的场合,这样的变量不能使用了,因为变量不是对象。其他基本数据类型也是如此,所以Java提供了一系列类,以便将基本数据类型当作对象进行操作,这些类,我们常常统称为包装器类。基本数据类型包装器类boolean Boolean byte Byte ...
阅读全文
摘要:1、相同又不同的字符串String str1 = new String("String"); String str2 = "String"; String str3 = "String"; System.out.println(str2 == str1); //false System.out.println(str2 == str3); //true 5 1String str1 = new ...
阅读全文
摘要:1、基本数据类型1.1 基本数据类型byte、chart、short、int、long、float、double、boolean 共8种数据类型为基本数据类型:数据类型 位数 取值范围 byte 8 -128 ~ 127char 16 '\u0000' ~ '\uFFFF'short 16 -2^15 ~ 2^15-1int 32 ...
阅读全文

浙公网安备 33010602011771号