05 2019 档案
摘要:Cookie、Session和Token都是为了解决Web身份校验而产生的,这里对它们的概念做一个简单了解。 Web身份校验的发展 很久很久以前,Web基本上就是文档的浏览而已。既然是浏览,作为服务器,不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议,就是请求加响应。并不
阅读全文
摘要:遇到Eclipse卡在Revert Resources进程的问题,等又等不到它执行完毕(进度一直是0%),取消又是石沉大海一样毫无动静。更气人的是这个进程阻塞了其他所有的进程,什么操作都做不了。真是苦涩,好傻一IDE。 解决方案一(推荐) 1.到<workspace>\.metadata\.plug
阅读全文
摘要:里氏替换原则的定义是:所有引用基类的地方必须能透明化地使用其子类的对象。 里氏替换原则针对的问题 有一个功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原有功能P1与新功能P2组成。新功能P由类A的子类B来完成,则子类B在完成新功能P2的同时,有可能会导致原有功能P1发生故
阅读全文
摘要:单一职责原则定义是:不要存在多于一个导致类变更的原因。通俗地说,即一个类只负责一项职责。 单一职责原则针对的问题 有一个类T负责两个不同的职责:职责P1和职责P2。当因为职责P1的需求发生改变而需要修改类T的时候,有可能会导致原本运行正常的职责P2功能发生故障。 单一职责原则的解决方案 遵循单一职责
阅读全文
摘要:在Java中有那么一些概念:对象、类、包、模块、组件、容器、框架。这些概念都有一个共同的特点,就是【容纳】。 对象(Object) 在Java的世界里,对象是通过属性和方法来分别对应事务所具有的静态属性和动态属性的。 类(Class) 类是用于描述同一类型的对象的一个抽象的概念。 对象和类的关系 类
阅读全文
摘要:JWT(JSON Web Token)是一个非常轻巧的规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,通常使用在HTTP通信过程中进行身份认证。 我们知道,HTTP通信是无状态的,客户端的请求到了服务器处理完之后是无法返回给原来的客户端的,因此需要对访问的客户端进行识别,常用的
阅读全文
摘要:最近在看《深入理解Java虚拟机 第二版》这本书,上面有关于自己编译OpenJDK源码的内容。自己根据书里的指示去操作,花了三天的时间,重装了好几次Ubuntu(还不知道快照这个功能,好傻一男的),在Ubuntu18.04.2上编译OpenJDK8源码都以失败告终。最后总结出书中关于这部分的内容已经
阅读全文
摘要:在服务器集群中,Nginx起到一个反向代理服务器的作用。为了避免单独一个服务器压力过大导致服务器奔溃,就需要将不同用户的请求转发给不同给不同的服务器,保证集群中的每一台服务器都能正常运作,这种机制就叫做负载均衡。 下面说一下Nginx支持的6种负载均衡策略。 轮询(默认) 轮询是Nginx支持的默认
阅读全文
摘要:在Ubuntu中好多文件或文件夹是不能使用右键删除的,因此知道删除文件或文件夹的rm命令显得尤为重要。 rm命令的语法 rm命令的一些选项 常用的几个rm命令 要注意的是,直接使用rm命令的话通常会报没有权限修改的错,这时候可以在命令前面加上sudo命令就有权限去修改了。sudo顾名思义就是su-d
阅读全文
摘要:在Eclipse中使用Maven提供的Install(打包)命令插件的时候报错【Fatal error compiling: tools.jar not found】。 报错的原因 报错的原因从错误信息可以看得出来,就是tools.jar包找不到,导致打包失败。 解决的办法 去JRE的目录下查看的确
阅读全文
摘要:Session是客户端与服务器通讯会话跟踪技术,是服务器与客户端保持整个通讯的会话基本信息。客户端在第一次访问服务器的时候,服务端会响应一个sessionId并且将它存入到本地的Cookie中,在之后的访问会将Cookie中的sessionId放入到请求头中去访问服务器,如果通过这个sessionI
阅读全文
摘要:在看一些技术文档的时候经常会看到有二方包这种名词,这里来记一下概念。 一方包(一方库) 本工程中的各模块的相互依赖。 二方包(二方库) 公司内部的依赖库,一般指公司内部的其他项目发布的jar包。 三方包(三方库) 公司之外的开源库, 比如apache、ibm、google等发布的依赖。 "有瓜吃瓜,
阅读全文
摘要:很多Java的程序员在写了很多代码之后,你问他JRE和JDK是是什么关系,JVM又是什么东西,他是不知道的。 JVM(Java Virtual Machine) Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 AP
阅读全文
摘要:在使用CGLIB进行动态代理的时候,报了【java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter overrides final method visit. (IILjava/lang/String;Ljava/lang
阅读全文
摘要:在Java使用自定义异常就跟你和女朋友相处是一样的,首先你要知道你为什么要跟你女朋友在一起,你女朋友有哪些好处,有哪些不好的地方,再来和你女朋友谈婚论嫁过一辈子。 为什么要使用自定义异常 1.我们在工作的时候,项目是分模块或者分功能开发的,基本不会是一个人开发一整个项目,使用自定义异常类就统一了对外
阅读全文
摘要:@ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理。 对于@ControllerAdvice,我们比较熟知的用法是结合@ExceptionHandler用于全局异常的处理,但其作用不止于此。
阅读全文
摘要:数据库有三大范式。 范式的简介 范式的英文名称是Normal Form,它是英国人E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的。范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2
阅读全文
摘要:我在大学时上数据库的课程,学的三个范式中有个第三范式就是专指的外键约束。可是出来工作以后第一次做数据库表设计的时候,组长大佬却让我在数据库中不要使用外键,改在代码中做相应处理。说得专业点,就是不要在数据库中使用物理外键,改为使用逻辑外键,即在代码中写相关的逻辑代替外键所起的作用。我从此便懂得了,解决
阅读全文
摘要:Spring中提供了@Primary和@Qualifier注解来解决一个接口多个实现的注入问题。 @Primary注解 Spring中有提供一个@Primary注解,具体的作用是在一个接口有多个实现类的情况下,会默认选择其中一种实现,帮助Spring对象的正常注入。 比如说现在有一个接口UserSe
阅读全文
摘要:Idea常用快捷键大全,拿小本本记下来,忘记了可以方便查找。 编写代码 Ctrl+Shift + Enter,语句完成。 “!”,否定完成,输入表达式时按 “!”键。 Ctrl+E,最近的文件。 Ctrl+Shift+E,最近更改的文件。 Shift+Click,可以关闭文件。 Ctrl+[ OR
阅读全文
摘要:有个问题是:当你有一个功能发布到生产环境后,发现服务器压力骤增,这时该怎么排查? 首先服务器性能的指标无外乎是那几个:CPU、内存和磁盘I\O。 要优化服务器性能也无外乎是几个方面:优化代码、优化数据库和使用静态数据。 可以从优化的角度去排查,就能发现服务器压力骤增的原因。 优化代码 1.减少数据库
阅读全文
摘要:我们知道很多语言都提供了indexOf()和lastIndexOf()函数,以便能查找某个字符在某个字符串中的出现的位置和最后一次出现的位置。 但是Oracle没有提供这两个函数,事实上,它提供了一个INSTR()函数,这个函数其实功能要强大得多。 INSTR()函数的语法: 没有错,它可以用来查字
阅读全文
摘要:DBVisualizer这个数据库客户端工具,如果要执行存储过程或函数的话,需要在创建存储过程或函数的语句的最前面和末尾分别加上【--/】和【/】符号。 像这样,不懂的话真的坑爹,自己摸索怎么摸索得出来,摸到天黑都不行。 "人生不过是笑笑人家,然后让人家笑笑而已。"
阅读全文
摘要:JVM的组成分为整体组成部分和运行时数据区组成部分。 JVM的整体组成 JVM的整体组成可以分为4个部分:类加载器(Classloader)、运行时数据区(Runtime Data Area)、执行引擎(Execution Engine)和本地库接口(Native Interface)。 程序在执行
阅读全文
摘要:理解Java的反射机制对学习Java框架有很大帮助,比如Spring框架的核心就是使用Java反射实现的,同时对做一些Java底层操作也会有帮助,比如字节码操作、自定义注解等。 什么是反射 Java反射说的是在运行状态中,对于任何一个类,我们都能够直到这个类有哪些方法和属性。对于任何一个对象,我们都
阅读全文
摘要:刚刚写的SQL语句在执行的时候报【ORA-01785: ORDER BY item must be the number of a SELECT-list expression】错误,于是自己百度了一下相关错误,发现是和Oracle排序语句的特殊写法有关系,这里记录一下。 先不说错误的问题,我们先用
阅读全文
摘要:JavaScript有两种数据类型,分别是基本数据类型和引用数据类型。其中基本数据类型包括Undefined、Null、Boolean、Number、String和Symbol(ES6新增,表示独一无二的值),而引用类型统称为Object对象、主要包括对象、数组和函数。 基本数据类型 1.基本数据类
阅读全文
摘要:其实工作那么久,一直都是写的Freemarker模板页面,直到最近才开始写JSP页面,所以这里完整学一下JSP原生支持的EL表达式(web.xml的3.0版本默认支持,后面说)。 EL的全名是Expression Language,它原本是JSTL 1.0为了方便存储数据所自定义的语言,发展到现在已
阅读全文
摘要:CMD(Common Module Definition,通用模块定义)是一种模块定义规范,规范中明确了模块的基本书写格式和基本交互规则。SeaJS就是遵循的这个规范。 define函数 在CMD规范中,一个模块就是一个文件,模块的区分通过define关键字来定义,最基本的格式是: define接受
阅读全文
摘要:随着BS架构的发展,网站逐渐变成了互联网应用程序,嵌入网络的JavaScript代码越来越庞大,越来越复杂(业务逻辑处理或用户交互很多写在前端)。网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测试等。。开发者不得不使用软件工程的方法,管理网页的业务逻辑。因此JavaScript模块化编程
阅读全文