自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

堆栈花园的学习备忘录

一个学习java的菜鸟。发布文章纯属为了增强记忆,方便回顾。如有错误,欢迎指出!

  • 博客(41)
  • 收藏
  • 关注

原创 堆栈花园的NoSql学习备忘录——Redis

一、redis中value的五种数据类型1. 字符串类型 string字符串类型是Redis中最基本的数据类型,可以存储任何形式的字符串,包括二进制数据,序列化后的数据,JSON数据,甚至是一张图片,最大512M。2. 哈希类型 hashRedis hash是一个string类型的field和value的映射表,hash特别适合存储对象。keyloginUser//field////value//uname张三times5regionShanghai

2020-09-03 11:06:43 132

原创 堆栈花园的多线程学习备忘录——线程管理

一、线程组1. 线程组的基本介绍线程组就类似于在计算机中用文件夹管理文件,所以我们也可以用线程组来管理线程。在线程组中定义一组相似(相关)的线程,在线程组中同样也可以定义子线程组,就像文件夹里还有子文件夹一样。Thread类有多个构造方法,允许我们在创建线程时,指定一个线程组,如果没有指定,那么这个线程就属于父线程所在的线程组,JVM在创建main线程时,会给它指定一个线程组,那么所有线程都一定会有一个线程组和它相关,线程有一个方法getThreadGroup()方法返回它的线程组。线程组的设计是

2020-08-25 15:19:52 100

原创 堆栈花园的多线程学习备忘录——锁

一、java中的锁在JDK5中,新增了Lock锁接口,有ReentrantLock实现类,ReentrantLock锁称为可重入锁,它的功能比synchronize多,更加强大。二、锁的可重入性锁的可重入性,是指当一个线程已经获得一个对象锁时,再次请求获得该对象锁时,是可以获得的。private synchronized void ff1(){ System.out.println("方法1"); ff2(); } private synch

2020-08-24 16:07:30 171

原创 堆栈花园的多线程学习备忘录——ThreadLocal

一、ThreadLocal的使用在保证线程安全中,我们除了控制资源的访问外(锁),还可以通过增加资源来保证线程安全。ThreadLocal主要解决了为每一个线程绑定各自的资源。static ThreadLocal threadLocal = new ThreadLocal(); static class myThread implements Runnable{ @Override public void run() { for (i

2020-08-24 10:55:17 179

原创 堆栈花园的多线程学习备忘录——wait和notify

一、等待/通知机制什么是等待/通知机制?在单线程中,如果要执行的代码需要满足一定条件才能执行,可以放到if语句块里。但在多线程中,可能A线程的执行的条件暂时没有满足,稍后B线程执行到一定程度,使得A线程的执行条件满足,再执行完A线程。可以将A线程先暂停,直到条件满足后再将A线程唤醒。二、 等待通知机制的实现Object类中有一个wait()方法,可以使执行的当前代码线程等待,暂停执行,直到接到通知,或者被中断。注意:(1)wait()方法只能在同步代码块中由锁对象调用。(2)调用wait

2020-08-23 20:53:14 112

原创 堆栈花园的多线程学习备忘录——volatile关键字

一、volatile的作用volatile关键作用是使变量在多个线程之间可见。public class Demo2 { public static void main(String[] args) throws InterruptedException { Print print = new Print(); new Thread(new Runnable() { @Override public void r

2020-08-23 19:51:52 101

原创 堆栈花园的算法学习备忘录——算法的时间复杂度

一、时间频度基本介绍一个算法中语句执行的次数称为语句频度,或者时间频度。记作T(n)。例如://计算一至一百所有数字之和//方法一:int res = 0;for(int i = 1;i <= 100;i++){ res += i;}//T(n) = n+1,这里的n就是100次,最后多的一次是判断。//方法二:res = 0;res = (1+100)*100/2;//T(n) = 1,无论n是多少,时间频度都是1。二、时间复杂度基本介绍:知道了时间频度

2020-08-22 20:13:14 363

原创 堆栈花园的java学习备忘录——ArrayList和LinkedList区别

一、ArrayList介绍ArrayList集合底层采用了数组的数据结构。ArrayList集合是非线程安全的。ArrayList初始化容量是10。(底层先创建了个长度为0的数组,当添加第一个元素的时候,才把容量初始化为10)也可以调用ArrayList的有参构造方法,指定容量。优点:检索效率比较高。缺点:随机增删元素的效率比较低。(向数组末尾添加元素,效率还是很高的)二、LinkedList介绍LinkedList集合底层采用了双向链表的数据结构。优点:随机增删效率较高。链表中的元素

2020-08-15 19:04:54 91

原创 堆栈花园的框架学习备忘录——SpringMVC

一、SpringMVC介绍SpringMVC:是基于Spring的一个框架,实际上就是Spring的一个模块,是专门用来做web开发的,可以理解为servlet的升级。SpringMVC就是一个Spring,SpringMVC也是一个容器,能够创建对象,SpringMVC容器中放的是控制器对象。开发人员要做的就是使用@Controller创建控制器对象,把对象放到SpringMVC容器中,把创建的对象作为控制器使用,这个控制器对象可以接收用户的请求,显示处理结果。使用@Controller注解创

2020-08-13 16:22:06 120

原创 堆栈花园的框架学习备忘录——Spring

一、Spring的第一个核心功能iocIoC (Inversion of Control):控制反转,是一个理论,概念,思想。控制:创建对象,对象属性的赋值,对象之间的关系管理。反转:把开发人员创建对象的权限转移给代码之外的容器,由容器代替开发人员管理对象,创建对象,给属性赋值。为什么要用Ioc:目的是减少对代码的改动,实现不同的功能,解耦合。二、 DI是ioc的技术实现DI(Dependency Injection):依赖注入,只需要在程序中提供要使用的对象名就可以,至于对象是怎么创建的

2020-08-11 23:43:29 199

原创 堆栈花园的框架学习备忘录——MyBatis

一、三层架构界面层:和用户打交道的,接受用户的请求参数,显示处理结果。(jsp,html,servlet)业务逻辑层:接受界面层的数据,计算罗技,调用数据库,获得数据。数据访问层:访问数据库,对数据CRUD。三层架构对应的package:界面层:controller(Servlet类)业务逻辑层:service(XXXService类)数据访问层:dao(XXXDao类)三层架构的交互:(用户使用)界面层——》业务逻辑层——》数据访问层(持久层)——》数据库(MySQL)三层架构对

2020-08-10 12:44:38 148

原创 堆栈花园的框架学习备忘录——动态代理

动态代理(基于反射机制)一、什么是动态代理

2020-08-09 10:37:49 91

原创 堆栈花园的jQuery学习备忘录——jQuery实现Ajax

一、jQuery实现Ajax没有jQuery之前,使用XMLHttpRequest实现Ajax,一共有4个步骤。而jQuery简化了Ajax请求的处理。用三个函数就可以实现Ajax。二、函数1. $.ajax()jQuery中实现Ajax的核心函数。语法:向函数传参,参数是json数据。$.ajax({name:value,name:value,...})json结构的参数说明:(1) asyncboolean类型的值,默认是true,表示异步请求,反之表示同步请求。(由于默认,

2020-08-09 10:37:12 96

原创 堆栈花园的jQuery学习备忘录——jQuery过滤器

一、什么是过滤器?在定位了dom对象以后,可以根据需求筛选dom对象。过滤器是一个字符串,可以拿来过滤dom对象。过滤器不可以单独出现,必须要和选择器一起使用。二、如何使用过滤器?选择第一个(保留数组中第一个dom对象)语法:$("选择器:first")选择最后一个(保留数组中最后一个dom对象)语法:$("选择器:last")选择指定对象语法:$("选择器:eq(数组下标)")选择数组中小于指定下标的所有dom对象(不包括该数组下标对应的dom对象

2020-08-09 10:36:57 124

原创 堆栈花园的jQuery学习备忘录——jQuery选择器

一、什么是选择器?选择器:就是一个字符串,用来定位dom对象的。定位了dom对象,就可以通过jQuery中的函数操控dom。二、如何用选择器?id选择器语法:$("#dom对象的id")通过dom对象的id定位dom对象,id在当前页面 中是唯一值。class选择器语法:$(".class样式名")class表示css中的样式,用样式名定位dom对象。标签选择器语法:$("标签名称")使用标签名称定位dom对象。标签选择器语法:$("*")页面中所有dom对象都放到了

2020-08-09 10:36:50 72

原创 堆栈花园的jQuery学习备忘录——jQuery初步

一、什么是jQueryjQuery是一个js库。相当于java的工具类,jQuery是存放js代码的地方,有很多事先写好的function。二、引入jQuery<script type="text/javascript" src="xxx/jquery-x.x.x.js"></script>指定jQuery的库文件位置,使用相对路径,当前项目的xxx目录下的指定文件。三、第一个简单例子:$(document).ready(function(){ alert("Hel

2020-08-09 10:36:38 82

原创 堆栈花园的AJAX学习备忘录——AJAX初步

(本文不使用JQuery,了解原始的AJAX)一、什么是AJAX?AJAX是一个缩写,四个字母分别取的四个单词的开头字母Asynchronous JavaScript and XML(异步的JavsScript 和 XML)二、AJAX有什么用?在了解AJAX的作用之前,有必要先了解一下什么叫“全局刷新”和“局部刷新”。全局刷新:整个浏览器被新数据覆盖。这个过程中网络传输了大量的数据,浏览器需要重新加载,重新渲染页面。局部刷新:在浏览器的内部向后端服务器发起请求,获取数据,改变

2020-08-09 10:36:16 114

原创 堆栈花园的JSP学习备忘录——EL表达式

一、代码格式${作用域对象别名.共享数据}二、EL表达式的作用EL表达式是EL工具包提供的一种特殊的命令格式。EL表达式在JSP文件里使用。负责在JSP文件上从作用域对象里读取指定的数据,并且输出到响应体中。三、作用域对象别名ServletContext【application】:全局作用域对象HttpSession【session】:会话作用域对象HttpServletRequest【request】:请求作用域对象PageContext【pageContext】:当前页作用域

2020-08-09 10:35:53 90

原创 堆栈花园的JSP学习备忘录——JSP的工作原理

Http服务器调用JSP文件的步骤:http服务器将JSP文件内容变成为一个Servlet接口实现类。(.java)http服务器将这个Servlet接口实现类编译成字节码文件。(.class)http服务器负责创建这个字节码文件的实例对象,这个实例对象就是Servlet实例对象。http服务器通过以上创建的实例对象调用service方法,将JSP文件的内容写入到响应体中...

2020-08-09 10:35:46 84

原创 堆栈花园的Servlet学习备忘录——多个Servlet之间调用

多个Servlet之间调用的规则一、 重定向解决方案1. 工作原理用户第一次手动向一号Servlet发起请求,一号Servlet工作完成后,将二号Servlet的地址写入到响应头的loaction属性中,使得tomcat将302状态码写入状态行。在浏览器接收到响应包后,会读取到302状态码,此时浏览器会自动根据响应头里的location属性,向请求地址发起第二次请求,访问二号Servlet完成任务。2. 实现代码 response.sendRedirect("请求地址"); //请求地址会

2020-08-09 10:35:16 85

原创 堆栈花园的Servlet学习备忘录——过滤器接口

一、介绍来自于Servlet规范下的接口。Filter接口实现类由开发人员提供,http服务器不提供。Filter接口在http服务器调用资源文件之前,对http服务器进行拦截。二、作用拦截http服务器,检测当前请求合法性。拦截http服务器,对当前请求进行增强操作。三、Filter接口实现类开发创建一个java类实现Filter接口。重写接口中的doFilter方法。在web.xml中注册过滤器接口到http服务器。...

2020-08-09 10:35:02 65

原创 堆栈花园的Servlet学习备忘录——监听器接口

一、介绍1. 一组来自于Servlet规范下的接口,共有8个接口。2. 监听器接口需要由开发人员实现,http服务器是不会提供对应的实现类的。3. 监听器接口用于监控作用域对象生命周期的变化,以及作用域对象里的数据变化。二、作用域对象1. 在Servlet规范中,在服务器端内存中可以为两个Servlet之间提供数据共享的对象。2. Servlet规范下的作用域对象:(1)ServletContext(全局作用域对象)(2)HttpSession(会话作用域对象)(3)HttpServlet

2020-08-08 09:49:32 90

原创 堆栈花园的Servlet学习备忘录——多个Servlet之间数据共享

多个Servlet之间数据共享一、ServletContext接口1. 介绍(1)来自于Servlet规范中的一个接口,tomcat负责提供这个接口的实现类。(2)如果两个Servlet来自同一个网站,彼此之间通过网站的ServletContext实例对象实现数据共享。(3)习惯于将ServletContext称为全局作用域对象。2. 工作原理每个网站都存在一个全局作用域对象。这个全局作用域对象相当于一个Map集合。在这个网站中的Servlet可以将一个数据存放到全局作用域对象中。当前

2020-08-08 09:49:23 243

原创 堆栈花园的Servlet学习备忘录——HttpServletRequest接口

一、HttpServletRequest接口的介绍HttpServletRequest接口来自于Servlet。HttpServletRequest接口的实现类由Http服务器负责提供。HttpServletRequest接口负责在doGet/doPost方法运行时读取Http请求协议包中的信息。习惯将HttpServletRequest接口的类称为“请求对象”。二、HttpServletRequest接口的主要作用可以读取Http请求协议包中请求行信息。可以读取保存在Http请求协议包

2020-08-08 09:49:15 114

原创 堆栈花园的Servlet学习备忘录——HttpServletResponse接口

一、HttpServletResponse接口的介绍HttpServletResponse接口来自于Servlet规范中。HttpServletResponse接口的实现类由Http服务器负责提供。HttpServletResponse接口负责将doGet/doPost方法执行后点击结果,写入到响应体,交给浏览器。习惯于将HttpServletResponse接口创建出的对象称作“响应对象”。二、HttpServletResponse接口的主要作用将执行结果以二进制的形式写入响应体中。设

2020-08-08 09:49:07 140

原创 堆栈花园的Servlet学习备忘录——service方法和doGet方法,doPost方法的联系

平常使用servlet的时候,一般会创建一个servlet类去继承HttpServlet这个抽象类,然后根据需要,重写实现doGet方法或者doPost方法,让tomcat来调度浏览器发出的对动态资源文件(class字节码文件)的请求。那这些方法底层到底做了什么呢?1. 首先我们要知道所有继承了HttpServlet的类,tomcat才有资格去调用它们。2. 假如现在有个类叫MyServlet,那么tomcat会在浏览器发出请求后,Servlet myServlet = new MyServle..

2020-08-08 09:48:51 179

原创 堆栈花园的MySQL学习备忘录——设计三范式

一、什么是设计范式设计表的依据。按照这个三范式设计的表不会出现数据冗余。二、三范式有哪些?1. 第一范式任何一张表都应该有主键,并且每一个字段原子性不可再分。2. 第二范式建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。3. 第三范式建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖。表的设计小口诀:一对一?主键共享或外键唯一。一对多?两张表,多的表加外键。多对多?三张表,关系表两个外键。...

2020-08-08 09:48:18 102

原创 堆栈花园的MySQL学习备忘录——索引

一、什么是索引?有什么作用?索引就相当于一本书的目录,通过目录可以快速的找到对应的资源。在数据库方面,查询一张表的时候有两种检索方式:第一种方式:全表扫描第二种方式:根据索引检索(效率很高)索引为什么可以提高检索效率呢?其实最根本的原理是缩小了扫描的范围。注意:索引虽然可以提高检索效率,但是不能随意的添加索引,因为索引也是数据库当中的对象,也需要数据库不断的维护。是有维护成本的。比如,表中的数据经常被修改这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。二、怎么创建索引

2020-08-08 09:48:07 102

原创 堆栈花园的MySQL学习备忘录——事务

一、什么是事务?一个事务是一个完整的业务逻辑单元,不可再分。比如:银行账户转账,从A账户向B账户转账10000.需要执行两条update语句:update t_act set balance = balance - 10000 where actno = 'act-001';update t_act set balance = balance + 10000 where actno = 'act-002';以上两条DML语句必须同时成功,或者同时失败,不允许出现一条成功,一条失败。要想保

2020-08-08 09:47:57 113

原创 堆栈花园的MySQL学习备忘录——SQL语句的分类

DQL(数据查询语言)查询语句,凡是select语句都是DQL。DML(数据操作语言)insert delete update,对表当中的数据进行增删改。DDL(数据定义语言)create drop alter,对表结构的增删改。TCL(事务控制语言)commit提交事务,rollback回滚事务。(TCL中的T是Transaction)DCL(数据控制语言)grant授权、revoke撤销权限等。...

2020-08-08 09:47:43 88

原创 堆栈花园的Java学习备忘录——HashMap

一、HashMap的数据结构HashMap底层是由数组和单链表实现,在Java1.8之后,当单链表中的元素超过了8个,就会以红黑树的方式储存数据,当红黑树中的元素小于6个,又会变回单链表存储数据。二、HashMap底层的实现原理1. put(key,value)方法第一步:先将key和value封装到Node对象中。第二步:底层会调用key的hashCode()方法得到哈希值,然后通过哈希算法,将哈希值转换为数组的下标。第三步:如果该下标位置上没有任何元素,就把这个Node对象添加到这个位置上

2020-08-08 09:46:52 177

原创 堆栈花园的Java学习备忘录——finalize()

关于Object类中的finalize()方法。在Object类中的源代码:protected void finalize() throws Throwable {}GC:负责调用finalize()方法。finalize()方法只有一个方法体,里面没有代码,而且这个方法是protected修饰的。这个方法不需要程序员手动调用,JVM的垃圾回收器负责调用这个方法。不像equals toString,equals和toString()方法是需要你写代码调用的。finalize()

2020-08-07 12:22:46 117

原创 堆栈花园的Java学习备忘录——访问控制权限

一、有哪些访问控制权限?1. private 私有的2. public 公开的3. protected 受保护的4. (什么都没有)默认二、这些访问控制权限的控制范围1. private 表示私有的,只能在本类中访问2. public 表示公开的,在任何位置都可以访问3. (什么都没有)默认表示只能在本类,以及同包下访问。4. protected 表示只能在本类、同包和子类中访问。访问控制修饰符本类同包子类任意位置public√√√√protec

2020-08-07 12:22:10 98

原创 堆栈花园的Java学习备忘录——toString方法和equals方法

一、toString方法1. toString方法的默认实现因为所有类都默认继承Object类,所以所有类都可以调用Object类中的toString方法。在Object类的源码中,对toString方法的默认实现是:类名@对象内存地址转换为一个十六进制数。2. toString方法是干什么的?toString方法是为了以后调用这个方法可以将一个对象转换成一个字符串表示形式。该字符串应该满足详实,简单,容易理解的特点。二、equals方法1. equals方法的默认实现在Obje

2020-08-07 12:21:39 132

原创 堆栈花园的Java学习备忘录——接口

一、什么是接口?接口是一种引用数据类型。编译后还是一个class字节码文件。接口是完全抽象的,或者说接口是一种特殊的抽象类。二、接口的语法是什么?[修饰符列表] interface [接口名]{}接口支持多继承,一个接口可以继承多个接口。接口中可以包含两个部分,第一:常量,第二:抽象方法。接口中的所有内容都是public修饰的。接口中定义抽象方法时可以省略public abstract。接口中定义常量的修饰符public static final可以省略。一个非抽象的类继承接口

2020-08-07 12:21:09 107

原创 堆栈花园的Java学习备忘录——抽象类

一、抽象类怎么定义?[修饰符列表] abstract class 类名{ 类体;}二、抽象类中的抽象方法是什么?抽象方法就是一个没有被实现的方法,没有方法体的方法。例如:public abstract void [标识符];抽象方法的特点:抽象方法没有方法体,且以分号结尾。修饰符列表中有abstract关键字。三、抽象类的特点。抽象类是无法实例化的,即无法对抽象类创建对象,所以抽象类就是拿来被子类继承的。final和abstract不能一起使用。抽象类的子类仍然可

2020-08-07 12:20:47 103

原创 堆栈花园的Java学习备忘录——super关键字

super可以和this对比学习super的语法super可以出现在实例方法和构造方法中,super不能出现在静态方法中。super的语法:“super.” 和 “super()”super. 大部分情况下可以省略super() 只能出现在构造方法的第一行,通过当前的构造方法去调用父类中的构造方法(根据传参决定调用父类中哪个构造方法)。这样做的目的是创建子类对象的时候,先初始化父类型的特征。如果一个构造方法第一行既没有this()又没有super()的话,默认...

2020-08-07 12:20:08 89

原创 堆栈花园的Java学习备忘录——this()

一、this()语法this()用在构造方法中,可以通过当前所在的构造方法去调用另一个本类的构造方法。this(实参);例如:public class Demo{ public static void main(String[] agrs){ Student s1 = new Student(); }}class Student{ int sno; String sname; boolean gender; public Student(){ thi

2020-08-07 12:19:29 86

原创 堆栈花园的Java学习备忘录——静态代码块和实例代码块

一、什么是静态代码块?1. 静态代码块的语法。static { java语句; ……}2. 静态代码块什么时候执行?类加载的时候执行,且只执行一次。静态代码块在main方法执行之前执行。3. 静态代码块有什么用?静态代码块这种语法机制可以说是Java给我们Java程序员的一个特殊时机,类加载时机。例如:我们需要记录类加载时的日志信息,可以将记录日志的代码写到静态代码块里。二、什么是实例代码块?1. 实例代码块的语法。{ java语句; ……}2. 实例代码块什么

2020-08-07 12:18:39 112

原创 堆栈花园的Java学习备忘录——OOA、OOD、OOP

1. OOA面向对象分析(Object-Oriented Analysis)2. OOD面向对象设计(Object-Oriented Design)3. OOP面向对象编程(Object-Oriented Programming)

2020-08-07 12:17:40 106

空空如也

空空如也

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

TA关注的人

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