java基础
文章平均质量分 79
密码11位
这个作者很懒,什么都没留下…
展开
-
mybatis将java枚举类型转换成数据库TINYINT类型
定义枚举类public enum EntityEnum { ACCURATE(0), INACCURATE(1), UNCERTAIN(2); private int value; public void setValue(int value) { this.value = value; } EntityEnum(int value){ this.value = value; } public int getValue() { return value; } p.原创 2020-11-19 16:22:09 · 664 阅读 · 0 评论 -
JUC介绍--Future异步回调
异步回调–对比AjaxrunAsync 没有返回值的异步调用正常执行测试:public class FutureAsync { public static void main(String[] args) throws ExecutionException, InterruptedException { //没有返回值的异步调用 runAsync CompletableFuture<Void> completableFuture = Comple原创 2020-08-23 16:02:47 · 252 阅读 · 0 评论 -
JUC介绍--ForkJoin分支合并
什么是ForkJoin:ForkJoin是jdk1.7后出现的,用于大数据量处理时,并行执行任务,提高效率(把大任务拆分为小任务)ForkJoin特点:工作窃取:A B两个线程同时执行任务,A执行一半,B执行完了,B就会将A的任务拿过来执行,提高效率;实现这一效果的基础是,它们维护的是双端队列,两端都可以去任务。ForkJoin的使用测试:/*求和计算 */public class ForkJoinDemo extends RecursiveTask<Long> .原创 2020-08-23 10:48:22 · 183 阅读 · 0 评论 -
JUC介绍--Stream流式计算案例
什么是Stream流式计算集合、MySQL 本质都是存储东西的;计算都应该交给流来操作!/** * 题目要求:一分钟内完成此题,只能用一行代码实现! * 现在有5个用户!筛选: * 1、ID 必须是偶数 * 2、年龄必须大于23岁 * 3、用户名转为大写字母 * 4、用户名字母倒着排序 * 5、只输出一个用户! */public class Test { public static void main(String[] args) { .原创 2020-08-23 00:03:44 · 134 阅读 · 0 评论 -
JUC介绍--四大函数式接口(Function Predicate Consumer Supplier)
函数式接口:只有一个方法的接口Function函数式接口:一个参数,一个返回值源码@FunctionalInterfacepublic interface Function<T, R> {//泛型T:传入的参数类型 泛型R:返回的类型 R apply(T t);//传入一个参数 //一般使用时不考虑default的方法 default <V> Function<V, R> compose(Function<? super V.原创 2020-08-22 23:10:59 · 260 阅读 · 0 评论 -
JUC介绍--阻塞队列(4组API)
常见队列家族使用阻塞队列的情况:多线程并发处理,线程池阻塞队列的四种API:方式抛出异常有返回值,不抛出异常阻塞 等待超时等待添加add()offer()put()offer(,)移除remove()poll()take()poll(,)判断队列首elementpeek--public class Test { public static void main(String[] args) throws Interrup.原创 2020-08-22 18:24:22 · 304 阅读 · 0 评论 -
JUC介绍--常用辅助类(CountDownLatch CyclicBarrier Semaphore)
CountDownLatch减法计数器每次有线程调用countDownLatch.countDown()数量就-1数量减到0时,countDownLatch.await()会被唤醒,继续向下执行public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { //总数是6,必须要执行任务的时候再使用 CountDownL.原创 2020-08-22 16:28:33 · 179 阅读 · 0 评论 -
JUC介绍--Callable
创建线程的方式之一,与Runnable接口的使用方式有以下区别可以有返回值可以抛出异常实现的方法不同 call()代码测试1. 线程的开启方式只能通过Runnable接口实现类,即new Thread(new Runnable()).start();2. FutureTask是Runnable接口的其中一个实现类;new Thread(new FutureTask<v>()).start();3.并且它可以通过Callable接口的实现类进行构造。所以,在Future原创 2020-08-22 11:15:12 · 124 阅读 · 0 评论 -
JUC介绍--锁的理解(4组问题阐述锁 )
4组(8个)问题阐述锁1.标准情况下(sendMsg没有延迟),两个线程先打印发短信还是打电话–>结果:先打印发短信2.sendMsg延迟4秒的情况下,两个线程先打印发短信还是打电话–>结果:先打印发短信解答:这种情况并不是因为代码书写顺序的原因,而是因为有锁的存在;synchronized锁的对象是方法的调用者phone,而两个方法用的是同一个锁,谁先拿到锁就要先执行完毕才会释放给下一个public class Lock8Question01 { public static原创 2020-08-21 22:45:43 · 171 阅读 · 0 评论 -
JUC介绍--生产者消费者模式的普通写法和JUC写法
什么是JUCjuc就是Java工具包java.util下的三个包概念解释:并发:多个线程操作同一个资源。CPU一核,通过快速轮询模拟出多条线程并行:CPU多核,多个线程同时进行,线程池并发编程的本质:充分利用CPU的资源首先要知道java是不能直接开启线程的(Java不能直接操作硬件),它是通过调用本地方法(native修饰的方法)来开启线程的,new Thread().start()源码如下 public synchronized void start() { .原创 2020-08-21 21:28:28 · 167 阅读 · 0 评论 -
jvm浅析
JVM位置JVM体系结构类加载器双亲委派机制沙箱安全机制NativePC寄存器方法区栈三种JVM堆新生区/老年区永久区堆内存调优GC常用算法JMM总结原创 2020-08-20 23:59:15 · 541 阅读 · 0 评论 -
Java反射操作(纯代码)
请通过给出的运行结果hashCode,自行进行对比分析//测试class类的创建方式有哪些public class CreateClass { public static void main(String[] args) throws ClassNotFoundException { Person person = new Student(); System.out.println("这个人是:"+person.name); System.out.p原创 2020-08-19 22:13:12 · 181 阅读 · 0 评论 -
自定义注解
元注解的介绍元注解就是给注解标注的注解@Target:表示注解可以用在哪些地方 字段上 FIELD 方法上 METHOD 类上TYPE 参数上 PARAMETER…@Retention:在程序的什么阶段有效 (源码级别–SOURCE ;字节码级别–CLASS; 运行时–RUNTIME)RUNTIME > CLASS > SOURCE 即定义成RUNTIME在CLASS和SOURCE都会生效@Documented:是否将注解声明在javaDoc中@Inherited:子类可以继承父类原创 2020-08-19 21:57:20 · 82 阅读 · 0 评论 -
线程状态和线程池的使用
线程状态线程终止:建议线程正常停止–利用次数,不建议死循环;建议使用标志位–>设置一个标志位;不使用stop destroy等过时的方法public class TestStop implements Runnable{ //1.设置一个标志位 private boolean flag=true; @Override public void run() { int i = 0; while (flag){原创 2020-08-18 23:05:56 · 86 阅读 · 0 评论 -
死锁及解决方式
死锁:多个线程相互抱着对方需要的资源,然后形成僵持死锁案例//死锁:多个线程相互抱着对方需要的资源,然后形成僵持public class Deadlock { public static void main(String[] args) { Makeup g1 = new Makeup(0, "灰姑娘"); Makeup g2 = new Makeup(1, "白雪公主"); g1.start(); g2.start();原创 2020-08-18 22:36:56 · 148 阅读 · 0 评论 -
线程通信(生产者消费者模式)
管程法:生产者-产品仓库-消费者模式//测试:生产者消费者模型-->利用缓冲区解决:管程法//生产者 消费者 产品 缓冲区public class ProducerConsumer { public static void main(String[] args) { SynContainer container = new SynContainer(); new Producer(container).start(); new Consu原创 2020-08-18 22:32:21 · 91 阅读 · 0 评论 -
三种线程不安全的场景及解决方案
线程不安全的解决方案实际上就是利用了队列+锁的机制注:添加同步代码块后必定会影响程序的性能案例一:同一银行账户同时取钱解决方案:同步代码块synchronized (被锁对象) :锁的对象就是数据修改的对象//不安全的quqianpublic class UnsafeBank { public static void main(String[] args) { Account account = new Account(100, "weddingFunding");原创 2020-08-18 22:25:02 · 689 阅读 · 0 评论 -
java线程创建的三种方式
1. 继承Thread//创建线程方式1:继承Thread类,重写run() 方法,调用start开启线程public class TestThread01 extends Thread { public static void main(String[] args) { //创建一个线程对象 TestThread01 testThread01 = new TestThread01(); testThread01.start(); //自动调用原创 2020-08-18 22:12:30 · 124 阅读 · 0 评论 -
lambda表达式的推导过程和简化过程
推导过程lambda表达式的基础是函数式接口即只定义一个方法的接口/*推导lambda表达式 */public class TestLambda01 { //3.静态内部类 static class Like2 implements ILike { @Override public void lambda() { System.out.println("I like lambda2!"); } }原创 2020-08-18 21:44:46 · 318 阅读 · 0 评论 -
静态代理(对方法的增强)
静态代理实际上就是在原有方法的基础上增加新功能条件: 代理对象和被代理对象要实现相同的接口//真实对象和代理对象要实现相同的接口//代理对象要代理真实角色--增强正式对象public class StaticProxy { public static void main(String[] args) { //不被代理 You you = new You(); you.happyMarray(); System.out.print原创 2020-08-18 21:31:46 · 187 阅读 · 0 评论 -
java网络编程 基于udp的聊天小程序
发送端package com.harbin.chat;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;import java.net.SocketException;.原创 2020-08-17 17:49:36 · 95 阅读 · 0 评论 -
java网络编程联系
TCP连接发送文字客户端package com.harbin.lesson02;import java.io.IOException;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;import java.util.Scanner;public class TcpClientDemo01 { public static void main(String[] ar原创 2020-08-17 17:36:55 · 85 阅读 · 0 评论 -
java爬取网络资源
import java.io.FileOutputStream;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;public class URLDemo01 { public static void main(String[] args) throws Exception { //资源地址--通过分析网页获取 URL url = new URL("htt原创 2020-08-17 17:24:44 · 239 阅读 · 0 评论 -
GUI编程-贪吃蛇小游戏
【狂神说Java】GUI编程入门到游戏实战https://www.bilibili.com/video/BV1DJ411B75Fpackage com.harbin.snake;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.原创 2020-08-16 16:58:14 · 272 阅读 · 2 评论 -
java基础笔记
Java基本数据类型及大小顺序Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。1、整数:包括int,short,byte,long2、浮点型:float,double3、字符:char4、布尔:boolean基本数据类型转换不同的基本数据类型之间进行运算时需要进行类型转换除Boolean类型外,所有基本数据类型进行运算时都要考虑类型转换方式自动转换 byte->short->int->long->float-原创 2020-08-14 22:45:52 · 109 阅读 · 0 评论