java 基础
偶像java练习生
再小的帆也能远航
展开
-
彻底玩转单例模式
单例模式饿汉式,DCL 懒汉式,深究!原创 2021-06-17 22:17:22 · 340 阅读 · 2 评论 -
java_异步回调
异步回调Future 设计的初衷:对将来的某个时间的结果进行建模代码示例package com.future;import java.util.concurrent.CompletableFuture;import java.util.concurrent.ExecutionException;import java.util.concurrent.Future;import java.util.concurrent.TimeUnit;/** * * 异步调用:Ajax *原创 2021-06-15 21:28:27 · 2203 阅读 · 2 评论 -
ForkJion
ForkJoin什么是ForkJoinForkJion 在JDK1.7,并行执行任务!提高效率。大数据量!大数据:Map Reduce(将大任务拆分为小任务)ForkJion 特点:工作窃取这个里面维护的都是双端队列,A 线程没有执行完,B线程执行完了,B 线程则去 执行A 中的(红框)未执行完任务ForkJion代码案例:package com.forkjoin;import java.util.concurrent.ExecutionException;imp原创 2021-06-14 18:39:06 · 9386 阅读 · 6 评论 -
java_Stream 流式计算
Stream 流式计算什么是Stream 流式计算大数据: 存储 + 计算对于存储: 集合,Mysql ,本质就是存东西的计算都用该交给流来操作!package com.stream;import java.util.Arrays;import java.util.List;/** * 题目要求:一分钟内完成此题,只能用一行代码实现! * 现在有5 个用户! 帅选: * 1. ID 必须是偶数 * 2. 年龄必须大于23 岁 * 3. 用户名转为大写字母 *原创 2021-06-14 16:46:33 · 411 阅读 · 2 评论 -
java四大函数式接口(重点,简单)
四大函数式接口新时代的程序员:lambda 表达式,链式编程,函数式接口,Stream 流式计算函数式接口: 只有一个方法的接口@FunctionalInterfacepublic interface Runnable { public abstract void run();}//超级多FunctionalInterface//简化编程模型,在新版本的框架底层大量应用!//foreach(消费者类型的函数式接口)代码测试:Function 函数式接口 pack原创 2021-06-14 13:31:17 · 2351 阅读 · 3 评论 -
线程池(重点)
线程池线程池:三大方法,7大参数,4 种拒绝策略1.池化技术程序的运行,本质:占用系统的资源!我们就要优化资源的使用! =》池化技术线程池,jdbc连接池,内存池,对象池////… 创建,销毁,十分浪费资源最小的池最大的池池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我。2.如果事先准备2 个,则默认就只有2 个线程池的好处降低资源的消耗,提高响应的速度方便管理线程复用,可以控制最大并发数,管理线程线程池必会三大方法package com.原创 2021-06-13 13:26:15 · 338 阅读 · 0 评论 -
多线程阻塞队列
阻塞队列FIFO: first in put first out put 先进先出阻塞队列:含义如上的图两种情况BlockingQueue 不是新的东西什么情况下我们会使用阻塞队列:多线程并发处理,线程池!IDEA 类关系图:学会使用队列这里面就两个操作:添加,移除*四组Api方式抛出异常有返回值阻塞 等待超时等待添加$1600$1600阻塞 等待超时等待移除$12$1600阻塞 等待超时等待判断队列的首部$1$160原创 2021-06-12 19:50:02 · 556 阅读 · 0 评论 -
多线程读写锁
读写锁代码示例:package com.rw;import sun.misc.REException;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantLock;import java原创 2021-06-12 12:45:41 · 303 阅读 · 0 评论 -
JUC常用辅助类
常用辅助类CountDownLatchpackage com.add;import java.util.concurrent.CountDownLatch;//计数器 +1/** * 场景:放学后6个学生走完后,才关门!!!! 保证了所有的人都走了,不会关在里面 */public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException {原创 2021-06-10 23:20:36 · 299 阅读 · 0 评论 -
Callable(简单)
Callable(简单)Callable 跟Runnable 的区别:Callable可以有返回值可以抛出异常方法不同,Runnable 用的是run(),CallAble 用的是call() 方法代码测试CallAble 的泛型就是方法的返回值package com.callable;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import jav原创 2021-06-10 23:05:09 · 399 阅读 · 0 评论 -
集合类不安全_List_Set_HashMap
集合类不安全1.单线程的代码永远是安全的并发下这些所有的类都有问题List 不安全VectorCopyOnWriteArrayList :写入时复制lock 锁先初始化一个数组,获取之前数组长度,复制之前的数组并且长度加1将add 的新增到对应数组的位置将数组转化为Listpackage com.unsafe;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;/** * 我遇原创 2021-06-10 22:33:44 · 298 阅读 · 2 评论 -
生产者和消费者及8锁现象
JUC生产者和消费者通过Lock 找到Condition代码实现下:package com;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class B { public static void main(String[] args) {原创 2021-06-08 23:08:51 · 299 阅读 · 0 评论 -
java_JUC
什么是JUCjava.util 工具包包:为了分类业务:普通的线程 ThreadRunnable 没有返回值,效率相比入Callable 相对较低!,在企业级开发中用的相对较少!2.线程和进程线程,进程,如果不能使用一句话说出来的技术,不扎实进程:一个程序,比如QQ.EXE,Music.exe, 程序的集合 .jar一个进程往往可以包含多个线程,至少包含一个!java 默认有几个线程? 2 个,main线程,GC 线程线程:开了一个进程Typora,写字,自动保存(线程负责原创 2021-06-05 22:21:55 · 269 阅读 · 0 评论 -
JMM概念
JMMjava 内存模型什么是JMM ?JMM (Java Memory Model 的缩写)2.他干嘛了?官方,博客,视频作用:缓存一致性协议,用于定义数据读写的规则(遵守,找到这个规则)。JMM 定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory).解决共享对象可见性这个问题:volilate 关键字(保证一致性)volilate 可以将写完的代码立即刷新到主内存。3.该如何学原创 2021-06-01 23:07:16 · 478 阅读 · 0 评论 -
JAVA_GC
GC:垃圾回收机制GC 的作用区在堆和方法区:JVM 在进行GC 时,并不是对这三个区域统一回收,大部分时候,回收都是新生代-新生代幸存区(from ,to) from 和to 是交替的过程老年区GC 两种类:轻GC(普通的GC):针对于新生代,偶尔针对下幸存区,重GC(全局GC,所有东西都清理一遍,释放内存)题目:4. JVM 的内存模型和分区-详细到每个区放什么5. 推里面的分区有哪些?Eden ,from,to,老年区,说说他们的特点6. GC 的算法有哪些?标记清除法,标记原创 2021-06-01 22:43:30 · 261 阅读 · 0 评论 -
java_JVM
JVM 探究请你谈谈你对JVM 虚拟机的理解java8 虚拟机和之前的变化更新什么是OOM,什么是栈溢出StackOverFlowError?,怎么分析?JVM 常用调优参数有哪些?内存快照如何抓取,怎么分析Dump文件?知道吗?谈谈JVM 中内加载器的认识? rt-jar,ext ,application1.JVM的位置建立在操作系统之上2.JVM的体系结构(自己画一遍)垃圾回收的位置3.类加载器作用: 加载class 文件,如 new Student();->有一原创 2021-05-29 18:18:12 · 298 阅读 · 0 评论 -
java_Class 对象获取数据
Class 对象package com.kuang.reflection;//动态的创建对象,通过反射public class Test09 { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { //获得Class 对象 Class c1 = Class.forName(原创 2021-05-27 22:47:44 · 501 阅读 · 0 评论 -
java_内存分析
Java 内存分析堆,栈,方法区堆,方法区,可以被所有线程共享类的加载过程代码案例package com.kuang.reflection;public class Test05 { public static void main(String[] args) { A a = new A(); System.out.println(A.m); } /** >1.加载到内存,会产生一个类对应的Cl原创 2021-05-26 22:17:56 · 361 阅读 · 1 评论 -
java_注解与反射
注解springboot,mybatis .spring ,底层用的都是反射注解还能给程序看3. 注解单词是Annotation,注释是comment什么是注解内置注解@Deprecated 方法以废弃,不鼓励程序员使用,有更好的替代方法@Override 重写注解@SuppressWarnings(“all”) 镇压警告内置注解元注解@Target 目标注解,有方法:method ,all :全部,@Retention 表示需要在什么级别保存该注释信息@Doc原创 2021-05-25 22:14:58 · 312 阅读 · 0 评论 -
java_UDP/URL例子
Tomcat服务端自定义 STomcat 服务器 S : java 后台开发!客户端自定义 C浏览器 B1.7 UDP发短信:不用连接,需要知道对方的地址客户端package com.kuang.lesson03;import java.io.IOException;import java.net.*;//不需要连接服务器public class UdpClientDemo01 { public static void main(String[] args原创 2021-05-23 13:39:30 · 264 阅读 · 0 评论 -
java_网络编程
概述网络编程目的无线电台…传播交流信息,数据交换,通信1.如何准确的定位网络上的一台主机: 192.168.16.124:端口,定位到这个计算机上的某个资源2.找到了这个主机,如何传输数据了javaWeb:网页编程 B/S网络编程:Tcp/ip C/S1.2 网络通信的要素人工智能:智能汽车:工厂,人少! ?伦理:如何实现网络的通信,通信双方的地址ip 192.168.1.1端口号规则:网络通信的协议http , ftp 上传文件,smtp 发送文件,tcp ,ud原创 2021-05-22 21:03:18 · 362 阅读 · 0 评论 -
java_GUI编程
GUI 编程1、简介Gui的核心技术: Swing,AWT,因为界面不美观因为界面不美观需要jire 环境!为什么我们要学习?可以学出自己心中想要的一些小工具工作时候,也可能需要维护到swing 界面,概率很小了解MVC 架构,了解监听!2. AWTnew 类!包含很多的类和接口!GUI:图形用户编程界面Eeclipse:Java 环境写的元素:窗口,按钮,文本框,2.2 组件和容器package com.kuang.lesson01;import java.a原创 2021-05-20 23:10:36 · 263 阅读 · 0 评论 -
java_自定义异常
自定义异常package exception;public class Test { //可能会存在异常的方法 static void test(int a) throws MyException{ System.out.println("传递的参数位:"+a); if(a>10){ throw new MyException(a);//抛出异常 } } public static原创 2021-05-20 21:30:35 · 236 阅读 · 0 评论 -
java_父类
继承子类构造器中默认调用父类构造器 super();重写需要有继承关系,子类重写父类的方法方法名必须相同参数列表必须相同修饰符,范围可以扩大: public ->Protected>defaule ->private抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException --> Exception(大)重写,子类的方法和父类必要一致;方法体不同!为什么需要重写:1.父类的功能,子类不一定需要,或者不一定满足!代码如下:原创 2021-05-18 23:05:18 · 1295 阅读 · 0 评论 -
java_构造器详解
查看java 编译文件在out 文件夹里面使用new 构造器,本质是在调用构造器构造器可以用来初始化值快捷键:alt +insert类和对象封装属性私有 privateprivate 通过set,get 方法获取属性值封装的意义** 属性私有,get/set提高代码的安全性,保护数据隐藏代码的实现细节统一接口系统可维护增加了继承...原创 2021-05-17 23:47:48 · 242 阅读 · 0 评论 -
java_面向对象
Java 的核心思想就是OOP什么是面向对象1. 面向对象编程2. 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据方法1.静态方法2.非静态方法static 关键字类.方法无static 关键字方法对象.方法静态方法可以调用静态方法,静态方法不能调用非静态方法Java 值传递引用传递...原创 2021-05-15 23:46:13 · 247 阅读 · 0 评论 -
java_数组
数组代码如下:原创 2021-05-09 22:58:11 · 244 阅读 · 0 评论 -
java_递归_19
递归练习:获取 n ! 阶乘// 5! 54321public class Demo06 { //递归案例 //边界条件:边界 //前阶段 //返回阶段n * (n-1),递归深度越大会占用大量内存 //栈 public static void main(String[] args) { System.out.println(f(4)); } //不断调用自身 private st原创 2021-05-09 14:04:36 · 235 阅读 · 0 评论 -
java_方法的重载及可变参数_15
重载命令行传参可变参数://不确定给我传入多少个参数代码如下:public class PARAMS { public static void main(String[] args) { printMax(34,3,3,2,56); printMax(new double[]{1,2,3}); } public static void printMax(double... numbers){ if(numbers原创 2021-05-08 15:03:31 · 240 阅读 · 0 评论 -
java_打印三角形
打印三角形先打左边的空格在打印一个三角形然后再补右边的三角形代码如下:package forDemo;public class TestDemo { /** * 打印三角形5行 * * @param args */ public static void main(String[] args) { //打印三角形 5行 for (int i = 1; i <= 5; i++) {原创 2021-05-08 14:11:24 · 274 阅读 · 0 评论 -
java_break,continue,goto
Break 用法跳出循环package forDemo;public class BreakDemo { public static void main(String[] args) { int i =0; while (i<100){ i++; System.out.println(i); if(i==30){ break;原创 2021-05-08 13:53:47 · 289 阅读 · 0 评论 -
java_循环结构_14
do_whilewhile 循环代码如下:package ifDemo01;public class WhileDemo03 { public static void main(String[] args) { //计算1+2+3+...+100=? //高斯的故事:首尾相加然后除以2 int i = 0; int sum = 0; while (i <= 100) {原创 2021-05-08 13:23:57 · 295 阅读 · 0 评论 -
java_switch_13
switch用法如下:switch 代码案例:package ifDemo01;public class SwitchDemo1 { public static void main(String[] args) { //case 穿透(如果没有break后面的都会执行) //switch 匹配一个具体的值 //break 劲量都写上 char grade = 'C'; switch (grade) {原创 2021-05-08 11:05:15 · 246 阅读 · 0 评论 -
java_java流程控制_12
用户交互Scanner验证代码如下:package scanner;import java.util.Scanner;public class Demo01 { public static void main(String [] args){ //创建一个扫描对象,用于接受键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next 方式接收:");原创 2021-05-06 22:44:30 · 226 阅读 · 0 评论 -
包机制_java_10
包机制包的本质其实就是文件夹例子包名:如下导包:快捷键:ALT +回车package 必须放在import 上面而且不能让同一个包下的类重名,再起一个名为Demo01 的类如果同一个包下导入的文件太多可以直接如下导入:com.kuang.base.*代码规范可查看: 阿里巴巴手册...原创 2021-05-06 20:48:46 · 245 阅读 · 0 评论 -
Java_javaDoc_11
JavaDocjavaDoc 命令是用来生成自己的Api 文档的创建一个java 文件如下/** * * @author kuangshen * @version 1.0 * @since 1.8 * */public class Doc { String name; /** * @author kuangshen * @param name * @return * @throws Exception *原创 2021-05-06 21:14:53 · 284 阅读 · 0 评论 -
Java_运算符_09
运算符1. Java 语言支持如下运算符算数运算符:+,-,*,/,%.++,–复制运算符 =关系运算符:>,<,>=,<=,==,!=instanceof逻辑运算符:&&,||,!位运算符:& ,|,~,^,>>,<<,>>> (了解)条件运算符 : ?扩展复制运算符:+=,-=,*=,/=示例代码二元运算符public static void main(String[] ar原创 2021-05-04 19:26:56 · 250 阅读 · 0 评论 -
Java_变量_08
变量变量是什么: 就是可以变化的量Java 是一种强类型语言,每个变量都必须声明器类型Java 变量是语法中最基本的存储单元,其要素包括变量名,变量类型和作用域如下变量定义:type varName [=value]数据类型 变量名 = 值;可以使用逗号隔开来声明多少同类型变量注意事项每个变量都有类型,类型可以使基本类型,也可以是引用类型。变量名必须是合法的标识符变量声明是一条完整的语句,每一个声明都必须以分号结束自定义变量如下 public stati原创 2021-05-04 13:19:56 · 213 阅读 · 0 评论 -
Java_类型转换问题_07
类型转换由于Java 是强类型语言,所以要进行有些运算的时候的,需要用到类型转换从低 ---------------------------------------------------------------------------------------------------------------->高byte,short,char -> int – > long -->float ->double运算中,不同类型的数据先转化为同一类型,然后进行原创 2021-05-03 22:45:24 · 229 阅读 · 0 评论 -
Java_数据类型扩展及面试题_06
Java 数据类型扩展 //整数拓展: 进制 二进制ob 十进制 八进制0 十六进制0X //二进制 int i = 10; //八进制 int i2 = 010; //十六进制 int i3 = 0x10; System.out.println("i= " + i); System.out.println("i2= " + i2); System.原创 2021-05-03 21:42:45 · 241 阅读 · 0 评论