堆栈花园的Java学习备忘录
Roxic堆栈花园
一个学习java的菜鸟。发布文章纯属为了增强记忆,方便回顾。如有错误,欢迎指出!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆栈花园的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 · 193 阅读 · 0 评论 -
堆栈花园的多线程学习备忘录——线程管理
一、线程组1. 线程组的基本介绍线程组就类似于在计算机中用文件夹管理文件,所以我们也可以用线程组来管理线程。在线程组中定义一组相似(相关)的线程,在线程组中同样也可以定义子线程组,就像文件夹里还有子文件夹一样。Thread类有多个构造方法,允许我们在创建线程时,指定一个线程组,如果没有指定,那么这个线程就属于父线程所在的线程组,JVM在创建main线程时,会给它指定一个线程组,那么所有线程都一定会有一个线程组和它相关,线程有一个方法getThreadGroup()方法返回它的线程组。线程组的设计是原创 2020-08-25 15:19:52 · 148 阅读 · 0 评论 -
堆栈花园的多线程学习备忘录——锁
一、java中的锁在JDK5中,新增了Lock锁接口,有ReentrantLock实现类,ReentrantLock锁称为可重入锁,它的功能比synchronize多,更加强大。二、锁的可重入性锁的可重入性,是指当一个线程已经获得一个对象锁时,再次请求获得该对象锁时,是可以获得的。private synchronized void ff1(){ System.out.println("方法1"); ff2(); } private synch原创 2020-08-24 16:07:30 · 234 阅读 · 0 评论 -
堆栈花园的多线程学习备忘录——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 · 239 阅读 · 0 评论 -
堆栈花园的多线程学习备忘录——wait和notify
一、等待/通知机制什么是等待/通知机制?在单线程中,如果要执行的代码需要满足一定条件才能执行,可以放到if语句块里。但在多线程中,可能A线程的执行的条件暂时没有满足,稍后B线程执行到一定程度,使得A线程的执行条件满足,再执行完A线程。可以将A线程先暂停,直到条件满足后再将A线程唤醒。二、 等待通知机制的实现Object类中有一个wait()方法,可以使执行的当前代码线程等待,暂停执行,直到接到通知,或者被中断。注意:(1)wait()方法只能在同步代码块中由锁对象调用。(2)调用wait原创 2020-08-23 20:53:14 · 167 阅读 · 0 评论 -
堆栈花园的多线程学习备忘录——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 · 154 阅读 · 0 评论 -
堆栈花园的算法学习备忘录——算法的时间复杂度
一、时间频度基本介绍一个算法中语句执行的次数称为语句频度,或者时间频度。记作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 · 454 阅读 · 0 评论 -
堆栈花园的java学习备忘录——ArrayList和LinkedList区别
一、ArrayList介绍ArrayList集合底层采用了数组的数据结构。ArrayList集合是非线程安全的。ArrayList初始化容量是10。(底层先创建了个长度为0的数组,当添加第一个元素的时候,才把容量初始化为10)也可以调用ArrayList的有参构造方法,指定容量。优点:检索效率比较高。缺点:随机增删元素的效率比较低。(向数组末尾添加元素,效率还是很高的)二、LinkedList介绍LinkedList集合底层采用了双向链表的数据结构。优点:随机增删效率较高。链表中的元素原创 2020-08-15 19:04:54 · 134 阅读 · 0 评论 -
堆栈花园的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 · 262 阅读 · 0 评论 -
堆栈花园的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 · 158 阅读 · 0 评论 -
堆栈花园的Java学习备忘录——访问控制权限
一、有哪些访问控制权限?1. private 私有的2. public 公开的3. protected 受保护的4. (什么都没有)默认二、这些访问控制权限的控制范围1. private 表示私有的,只能在本类中访问2. public 表示公开的,在任何位置都可以访问3. (什么都没有)默认表示只能在本类,以及同包下访问。4. protected 表示只能在本类、同包和子类中访问。访问控制修饰符本类同包子类任意位置public√√√√protec原创 2020-08-07 12:22:10 · 143 阅读 · 0 评论 -
堆栈花园的Java学习备忘录——toString方法和equals方法
一、toString方法1. toString方法的默认实现因为所有类都默认继承Object类,所以所有类都可以调用Object类中的toString方法。在Object类的源码中,对toString方法的默认实现是:类名@对象内存地址转换为一个十六进制数。2. toString方法是干什么的?toString方法是为了以后调用这个方法可以将一个对象转换成一个字符串表示形式。该字符串应该满足详实,简单,容易理解的特点。二、equals方法1. equals方法的默认实现在Obje原创 2020-08-07 12:21:39 · 185 阅读 · 0 评论 -
堆栈花园的Java学习备忘录——接口
一、什么是接口?接口是一种引用数据类型。编译后还是一个class字节码文件。接口是完全抽象的,或者说接口是一种特殊的抽象类。二、接口的语法是什么?[修饰符列表] interface [接口名]{}接口支持多继承,一个接口可以继承多个接口。接口中可以包含两个部分,第一:常量,第二:抽象方法。接口中的所有内容都是public修饰的。接口中定义抽象方法时可以省略public abstract。接口中定义常量的修饰符public static final可以省略。一个非抽象的类继承接口原创 2020-08-07 12:21:09 · 158 阅读 · 0 评论 -
堆栈花园的Java学习备忘录——抽象类
一、抽象类怎么定义?[修饰符列表] abstract class 类名{ 类体;}二、抽象类中的抽象方法是什么?抽象方法就是一个没有被实现的方法,没有方法体的方法。例如:public abstract void [标识符];抽象方法的特点:抽象方法没有方法体,且以分号结尾。修饰符列表中有abstract关键字。三、抽象类的特点。抽象类是无法实例化的,即无法对抽象类创建对象,所以抽象类就是拿来被子类继承的。final和abstract不能一起使用。抽象类的子类仍然可原创 2020-08-07 12:20:47 · 147 阅读 · 0 评论 -
堆栈花园的Java学习备忘录——super关键字
super可以和this对比学习super的语法super可以出现在实例方法和构造方法中,super不能出现在静态方法中。super的语法:“super.” 和 “super()”super. 大部分情况下可以省略super() 只能出现在构造方法的第一行,通过当前的构造方法去调用父类中的构造方法(根据传参决定调用父类中哪个构造方法)。这样做的目的是创建子类对象的时候,先初始化父类型的特征。如果一个构造方法第一行既没有this()又没有super()的话,默认...原创 2020-08-07 12:20:08 · 155 阅读 · 0 评论 -
堆栈花园的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 · 122 阅读 · 0 评论 -
堆栈花园的Java学习备忘录——静态代码块和实例代码块
一、什么是静态代码块?1. 静态代码块的语法。static { java语句; ……}2. 静态代码块什么时候执行?类加载的时候执行,且只执行一次。静态代码块在main方法执行之前执行。3. 静态代码块有什么用?静态代码块这种语法机制可以说是Java给我们Java程序员的一个特殊时机,类加载时机。例如:我们需要记录类加载时的日志信息,可以将记录日志的代码写到静态代码块里。二、什么是实例代码块?1. 实例代码块的语法。{ java语句; ……}2. 实例代码块什么原创 2020-08-07 12:18:39 · 160 阅读 · 0 评论 -
堆栈花园的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 · 153 阅读 · 0 评论 -
堆栈花园的Java学习备忘录——标识符的命名规则和命名规范
一、什么是标识符?凡是程序员有权力命名的单词就是标识符。二、在Java中有哪些常见的,可以被标识符标识的内容?类名、方法名、变量名、接口名、常量名……三、标识符的命名规则1. 什么是命名规则?命名规则属于语法机制,必须遵守。不遵守命名规则的标识符,编译器会报错。2. 有哪些命名规则?规则1:标识符只能由字母(包括汉字)、下划线(_)、数字、美元符号($)组成,不能含有其它符号。规则2:标识符不能由数字开头。规则3:关键字不能做标识符,例如:public、private、protecte原创 2020-08-07 12:15:22 · 192 阅读 · 0 评论
分享