java基础
王小c
交流群:954614622
weixin:wangc_20171010
qq:947790973
个人网站 dev.wangc.site
展开
-
Java IDE 之间的异同 (IDEA, Eclipse)
Java常用的IDE有很多种,比较经典的Eclipse,MyEclipse,近年来比较流行的IDEA.而将eclipse创建的项目用IDEA打开多少会出现点问题,这需要我们比较两个IDE之间的不同. IDE是什么:IDE一般指集成开发环境,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。 区别:比如代码编辑器的自动生成策略就不一样 编译器:idea默认编译用JDK的javac,eclipse里面用的则是EPJ,编译时会有区别 其他:听同事说不同IDE对jdk和tomcat的版本选择也有区别.原创 2020-07-30 11:38:17 · 2703 阅读 · 0 评论 -
Day126 JVM
JVMJVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java 最具吸引力的特性之一。Java语言的跨平台特性是由JVM实现的。类加载机制Java程序运行机制:先在IDE上编写源代码(.java)之后编译器会将源代码编译成字节码文件 (.class)然后类加载器再把字节码加载到内存中,将其放在运行时数据区的方法区内由执行引擎将字节码翻译成底层系统指令,再交由CPU去执行这里面重点关注原创 2020-06-27 10:20:59 · 106 阅读 · 0 评论 -
Day119 并发编程之线程池
核心参数线程池的工作流程线程池的底层实现BlockingQueue的使用调优策略拒绝策略线程池组件线程池种类原创 2020-06-15 22:13:39 · 98 阅读 · 0 评论 -
Day118 并发编程进阶
JUCjava.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks原创 2020-06-15 16:07:43 · 130 阅读 · 0 评论 -
Day117 并发编程基础
并发编程基础概述基本概念:程序:程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。进程:进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。比如在Windows系统中,一个运行的xx.exe就是一个进程。线程: 一个进程之内可以分为一到多个线程,一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行,Java 中,线程作为最小调度单位,进程作为资源分配的最小单原创 2020-06-13 10:24:21 · 169 阅读 · 0 评论 -
Day116 并发编程之Lock体系
Lock体系对比同步方法和同步块,Lock 接口提供了更具扩展性的锁操作。基本概念悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。应用场景:Java 里面的synchronized 关键字的实现也是悲观锁。再比如传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,原创 2020-06-12 17:43:40 · 138 阅读 · 0 评论 -
Day115 并发关键字之synchronized与volatile
synchronized起因:在并发编程中存在线程安全问题,主要原因有多线程共同操作共享数据,我们可以使用同步机制(synchronized)来解决该问题,使得同一时刻,只有一个线程可以操作改数据。synchronized:通过使用synchronized关键字可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile。用法使用方法:Java中每一个对象都可以作为锁,这是synchronized实现同原创 2020-06-11 15:12:12 · 178 阅读 · 0 评论 -
Day114 Java容器底层原理
ArrayList的扩容机制ArrayList的扩容机制还是相对容易理解的,就是在第一个添加元素时,创建一个长度为10的数组,之后随着元素的增加,以1.5倍原数组的长度创建一个新数组HashSet实现原理HashSet实际上为(key,null)类型的HashMap,而我们知道,HashSet的key是不能重复的,所以HashSet的值自然也是没有重复的.因为HashMap的key可以为null,所以HashSet的值可以为null.、sort方法的底层排序实现原理https://www.jia原创 2020-06-10 08:56:31 · 151 阅读 · 0 评论 -
Day113 ConcurrentHashMap底层原理
ConcurrentHashMap前言:现在很多会涉及到高并发的应用场景,最常用的双列集合HashMap是线程不安全的,HashTable虽然线程安全但却效率太低,所以就在HashMap的基础上有了并发安全的ConcurrentHashMap。为什么HashMap线程不安全:多线程put操作,导致元素丢失。多线程put操作后,get操作导致死循环。为什么HashTable线程安全:因为它的remove,put,get都做成了同步方法。HashTable安全机制的缺点:只有一把锁,效率原创 2020-06-09 13:28:03 · 229 阅读 · 0 评论 -
Java基础语法
文章目录Java—基础语法1. Java概述2. 基本概念JVM,JRE与JDK3. 数据类型基本类型类型转换运算符数组3. 语法结构选择语句循环语句4. 程序结构方法方法重载数组与方法Java—基础语法1. Java概述Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。应用领域:Java语言主要应用在互联网程序的开发领域。常见的互联网程序比如天猫、京东、物流系统、网银系统等,以及服务器后原创 2020-05-23 11:44:25 · 165 阅读 · 0 评论 -
Day78 Java基础知识点(9) 反射和动态代理
反射反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。Java反射:在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类。 在运行时构造任意一个类的对象。 在运行时判断任意一个类所具有的成员变量和方法。 ...原创 2020-04-25 21:49:34 · 91 阅读 · 0 评论 -
Day77 Java基础知识点(8) 异常
网络79. http 响应码 301 和 302 代表的是什么?有什么区别?答:301,302都是HTTP状态的编码,都代表着某个URL发生了转移。区别: 301redirect:301代表永久性转移(PermanentlyMoved)。 302redirect:302代表暂时性转移(TemporarilyMoved)。...原创 2020-04-22 17:38:55 · 77 阅读 · 0 评论 -
Day72 Java基础知识点(5) 容器
25. ArrayList 和 LinkedList 的区别是什么?最明显的区别是 ArrrayList底层的数据结构是数组,支持随机访问,而 LinkedList 的底层数据结构是双向循环链表,不支持随机访问。使用下标访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。26. 如何实现数组和 List 之间的转换? List转换成为数...原创 2020-04-16 08:58:18 · 91 阅读 · 0 评论 -
Day70 反射
反射:将类的各个组成部分封装为其他对象,这就是反射机制。 (如将源文件编译后得到的类文件,封装为为Class对象) 好处: 1. 可以在程序运行过程中,操作这些对象。 2. 可以解耦,提高程序的可扩展性。 获取Class对象的方式: 1. Class.forName("全类名"):将字节码文件加载进内存,返...原创 2020-04-13 17:45:25 · 70 阅读 · 0 评论 -
Day69 File类
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。Files.exists():检测文件路径是否存在。Files.createFile():创建文件。Files.createDirectory():创建文件夹。Files.delete():删除一个文件或目录。Files.copy():复制文件。Files.move():移动文件。...原创 2020-04-12 17:40:07 · 52 阅读 · 0 评论 -
Day68 IO流
第一章 IO概述1.1 什么是IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是...原创 2020-04-12 16:39:47 · 68 阅读 · 0 评论 -
Day67 Java 基础知识点(3)OOP
11. 抽象类必须要有抽象方法吗?抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。 理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类。(抽象类可以有多层) 理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用...原创 2020-04-11 13:53:57 · 68 阅读 · 0 评论 -
Day65 Java 基础知识点(2)String相关类
6. String 属于基础的数据类型吗?String 不属于基础类型,基础类型有 8 种:byte、boolean、char、short、int、float、long、double,而 String 属于对象。7. java 中操作字符串都有哪些类?它们之间有什么区别?操作字符串的类有:String、StringBuffer、StringBuilder。String:不可变的字符...原创 2020-04-10 14:21:22 · 90 阅读 · 0 评论 -
Day65 Java 基础知识点(1)
1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等 JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。 包括Java虚拟机...原创 2020-04-09 13:04:29 · 73 阅读 · 0 评论 -
Day29 线程2
学科概述:由现实世界的数据建立信息模型(E-R图),然后进行数据库设计,设计关系模式,定义数据库-表,运用SQL(数据库语言)开发数据库应用程序。...原创 2020-02-25 23:34:00 · 66 阅读 · 0 评论 -
Day28 线程
1多线程我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决.4.1 并发与并行 并发:指两个或多个事件在同一个时间段内发生。 并行:指两个或多个事件在同一时刻发生(同时发生)。 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个...原创 2020-02-22 23:42:47 · 87 阅读 · 0 评论 -
Day27 异常
异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错了...原创 2020-02-21 23:57:42 · 69 阅读 · 0 评论 -
Day26 Collections工具类
到2月20号,学习已经进行一个月了。完成了20个课时的内容和数据结构的一些学习。和原计划没太大偏差,但还是太慢了,马上改上班了,上班以后学习时间很有限,距离九月还有不到200天。这期间需要把JavaSE,Java Web,Java相关框架学完,时间比较紧张,所以数据结构与算法只能先搁置了。以我目前的情况来说,技术还是应聘最重要的,没有企业会有耐心培养我这种基础工作技术的。接下来补充一些集合剩余...原创 2020-02-21 11:52:43 · 81 阅读 · 0 评论 -
Day112 HashMap底层原理
Map 双列集合最顶层接口 Key(键,不能重复)—>Value(值,能重复),一对键值叫做Entry项 基本操作:增删查,判断包含等 遍历方法:键找值或键值对方法 HashMap<K,V>:自定义对象需要重写hashCode()和equals()方法。 LinkedHashMap<K,V>:有顺 Hashtable:最早,效率低,已被取代...原创 2020-06-07 22:36:25 · 201 阅读 · 0 评论 -
Day24 Java集合 基础
List 集合:有序,可重复,有索引 基于数组,增删满,查找快 常用方法:带索引的增删查改 ArrayList:常用来查询遍历,最常用 LinkList:双向链表,增删快,含有很多首尾操作 Vector:最早单列集合,已被取代 Set 集合:无序,不可重复,没有索引 HashSet:数组 + 链表 + 红黑树。查询速度快。 自定义类使用时需重写hashCode和equ...原创 2020-02-19 20:03:44 · 96 阅读 · 0 评论 -
Day23 Collection集合,迭代器与泛型
1原创 2020-02-17 23:52:16 · 68 阅读 · 0 评论 -
Day21 System类与时间相关类
时间相关类:Date类,DateFormat类,Calendar类 System类常用功能:获取当前时间(毫秒),数组拷贝package wangc.pac;import java.text.ParseException;import java.util.Calendar;import java.util.Date;import java.text.DateFormat;impo...原创 2020-02-15 23:17:04 · 75 阅读 · 0 评论 -
Day20 Object类与包装类
Object类:Java语言中的根类,没有指定父类的子类, 默认继承Object类。 toString()方法:返回该对象的字符串表示。 equals(Object obj)`:指示其他某个对象是否与此对象“相等”。 包装类:基本类型效率高,但没有更多的功能,可以使用基本类型对应的包装类, 装箱:基本类型的数据->包装类 拆箱:包装类->基本类型的数据 字符串与...原创 2020-02-15 14:42:20 · 72 阅读 · 0 评论 -
Day17 案例_发红包plus
第一阶段总结: Java语言入门的11个课时已学成 下阶段从基础开始,学习算法与数据结构 综合案例要求 已提供了 RedPacketFrame 的图形界面文件,学会分析并使用其设置接口 功能方面的代码只需要编写 OpenMode,分为平均和随机两种发红包模式,接口代码已给出 import java.util.ArrayList;import java.util.Rand...原创 2020-02-10 12:21:46 · 211 阅读 · 1 评论 -
Day16 final、权限、内部类
final关键字代表最终、不可改变的。 类:被修饰的类,不能被继承。 方法:被修饰的方法,不能被重写。 变量:被修饰的变量,不能被重新赋值。 权限修饰符 不加权限修饰符,其访问能力与default修饰符相同 java将public类作为每个编译单元的数据接口,同一个类文件,只能有一个 编写代码时,如果没有特殊的考虑,建议这样使用权限: 成员变量使用private ,隐...原创 2020-02-08 23:40:40 · 92 阅读 · 0 评论 -
Day15 案例_USB接口
题目: 笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口, 但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。 定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守 USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。 分析:进行描述笔...原创 2020-02-07 21:41:48 · 232 阅读 · 0 评论 -
Day14 多态
定义:多态是指同一行为,具有多个不同表现形式。 前提: 继承或者实现【二选一】 方法的重写【意义体现:不重写,无意义】 父类引用指向子类对象【格式体现】 使用:联系继承的使用 不重名的直接继承或实现即可,下面讨论重名的 成员变量:编译看左边,运行还看左边,没有就向上找 成员方法:编译看左边,运行看右边,没有就向上找 优点:可以使程序编写的更简单,并有良好的扩展 ...原创 2020-02-06 22:46:09 · 124 阅读 · 0 评论 -
Day13 接口
接口:接口是一种公共的规范标准。在java中,接口种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。 定义:与定义类方式相似,关键字不同。 接口中的变量:其实就是常量,大写下划线法命名。 抽象方法:实现类必须重写所有,除非实现类是抽象类。...原创 2020-02-05 23:24:11 · 91 阅读 · 0 评论 -
Day12 案例_发红包
综合案例:群主发普通红包群主发普通红包。 某群有多名成员,群主给成员发普通红包。普通红包的规则: 1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。 2. 成员领取红包后,保存到成员余额中。 请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。 分析: 父类(成员类):成员变量(姓名,余额) 子类(群主类):成员方法(发红包的...原创 2020-02-03 22:43:19 · 157 阅读 · 0 评论 -
Day11 继承与抽象
继承概述:子类继承父类的属性和行为,提高了代码的复用性 成员变量的继承:不重名变量直接继承,重名则优先使用子类的。 成员方法的继承:同上。(方法重写) 构造方法:无法继承构造方法,子类初始化过程先执行父类初始化。 super和this:父类的引用与当前对象的引用。 抽象类/抽象方法:只起到继承作用而不直接使用。public class ExtendsDemo { public...原创 2020-02-02 13:56:27 · 80 阅读 · 0 评论 -
Day9 static关键字,Arrays类
静态static关键字修饰成员变量 静态static关键字修饰成员方法 静态代码块 数组工具类Arrays 数学工具类Mathstatic关键字练习public class MyClass { static { System.out.println("静态代码块执行1!"); } int num; // 成员变量 static ...原创 2020-01-31 15:33:30 · 97 阅读 · 0 评论 -
Day7 String类
字符串的构造方法和直接创建 字符串的比较相关方法 字符串的获取相关方法 字符串的截取方法 字符串的转换相关方法 字符串的分割方法 字符串的相关练习语法// import java.lang.String; // lang包内类无需导入public class StringDemo { public static void main(String[] args) {...原创 2020-01-28 18:58:10 · 145 阅读 · 0 评论 -
Day5 API与常用类
今日学习:API文档:关注包路径,构造方法和方法摘要 Scanner类:可以实现键盘输入数据,到程序当中。 Random类:生成随机数字。 ArrayList类: 数组的长度不可以发生改变。但是ArrayList集合的长度是可以随意变化的。 ArrayList中的元素需要时统一的引用类型,基本类型需要转换使用。 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容...原创 2020-01-26 21:28:46 · 93 阅读 · 0 评论 -
Day3 OOP相关
今日学习类和对象的定义与使用 类与对象的内存原理 封装操作:private关键词,getter/setter方法 封装优化:this关键词和构造方法 编写规范:javabean 更新博客:http://wangweiguang.xyz/cs/2020/01/23/DuplicationInArray.html类与对象练习:package wangc.pac;public ...原创 2020-01-23 23:10:37 · 71 阅读 · 0 评论 -
Day1 Java安装与基础语法
今天是一个好的开始装好了的JDK和Java的IDE 学习了IDEA的使用方法 复习了Java的基础语法 做了一些简单的小练习,练习了下语法 做了个Print()方法,练习了方法重载 个人博客更新了文章 java基础语法,http://wangweiguang.xyz/cs/2020/01/21/Java.html终于理解配置环境变量的一些细节了。Java的基础语法和C+...原创 2020-01-21 22:09:42 · 123 阅读 · 0 评论