java
fFee-ops
it's tough.
展开
-
Collectors.toMap使用解析
背景之前我们可能会遇到一些把List 转 Map 操作,在过去我们可能使用的是 for 循环遍历的方式。例如:Map<String, String> map = new HashMap<>();for (User user : userList) { map.put(user.getId(), user.getName());}在java8之后我们就可以用stream来操作集合了。使用在上面的例子,假如用stream流新特性来做就一行代码userList.原创 2022-03-29 17:46:13 · 4280 阅读 · 0 评论 -
Java8新特性之双冒号(::)
定义双冒号运算操作符是类方法的句柄,lambda表达式的一种简写。双冒号(::)运算符在Java 8中被用作方法引用(method reference),方法引用是与lambda表达式相关的一个重要特性。大概意思就是,使用lambda表达式会创建匿名函数, 但有时候需要使用一个lambda表达式只调用一个已经存在的方法(不做其它), 所以这才有了方法引用!使用使用场景案例详解①引用静态方法public class Colon{ @Test public void test()原创 2022-03-13 21:06:26 · 7576 阅读 · 0 评论 -
代码实现滑动窗口限流
代码实现滑动窗口限流代码思路代码package 限流;import java.time.LocalTime;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Random;import java.util.concurrent.ConcurrentHashMap;/** * Created by yazai * Date: 13:25 2021/8/28原创 2021-08-28 14:08:20 · 401 阅读 · 0 评论 -
HashMap扩容以及ConcurrentHashMap扩容机制
HashMap扩容以及ConcurrentHashMap扩容机制HashMap1.71.8ConcurrentHashMap1.71.8HashMap1.7void transfer(Entry[] newTable) { // 1.7 的hashmap 数组+链表 // 获取到旧表 Entry[] src = table; // 获取到新表的长度(数组的长度) int newCapacity = newTable.length; /原创 2021-08-23 22:32:56 · 220 阅读 · 0 评论 -
Java 位移运算符
Java 位移运算符原创 2021-03-03 19:23:07 · 90 阅读 · 1 评论 -
反射相关的知识点
反射概述获取class类的三种方式通过class对象获取类的所有信息反射的应用场景概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.可以简单的理解:比如有一个妃子A和B,妃子B原创 2021-02-09 22:13:32 · 167 阅读 · 0 评论 -
Java中Queue的一些方法解析
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。offer,add 区别:一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。poll,remove 区别:remove() 和 p原创 2020-12-14 23:16:23 · 391 阅读 · 0 评论 -
java中length和length()的区别
length() 用于求String字符串对象的长度length 是求数组中有多少个元素原创 2020-12-05 22:37:44 · 270 阅读 · 0 评论 -
java中的Pair
Pair今天刷题遇到了Pair,以前没遇到过,在这里记录一下简介配对(Pair)。配对提供了一种方便方式来处理简单的键值关联,当我们想从方法返回两个值时特别有用。Pair类在javafx.util 包中,类构造函数有两个参数,键及对应值: Pair<Integer, String> pair = new Pair<>(1, "One"); Integer key = pair.getKey(); String value = pair.getValue原创 2020-12-02 22:53:33 · 1171 阅读 · 0 评论 -
LeetCode刷题顺序
GitHub地址原创 2020-11-12 20:47:36 · 167 阅读 · 0 评论 -
break语句和continue语句
break语句和continue语句breakcontinuebreak在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。public class Test16 { public static void main(String[] args) { int total = 0;//定义计数器 System.out.println("Begin"); while (true) {原创 2020-11-09 23:41:45 · 287 阅读 · 0 评论 -
自动装箱和拆箱
自动装箱和拆箱自动装箱:自动拆箱:自动装箱和拆箱就是将基本数据类型和包装类之间进行自动的互相转换。JDK1.5后,Java引入了自动装箱(autoboxing)/拆箱(unboxing)。自动装箱:基本类型的数据处于需要对象的环境中时,会自动转为“对象”。我们以Integer为例:在JDK1.5以前,这样的代码 Integer i = 5 是错误的,必须要通过Integer i = new Integer(5) 这样的语句来实现基本数据类型转换成包装类的过程;而在JDK1.5以后,Java提供了自动原创 2020-11-01 00:12:06 · 307 阅读 · 1 评论 -
Java8之流式计算
Java8之流式计算函数式接口代码Stream流是什么特点如何工作代码函数式接口来自于java.util.function。代码 public static void testMyInterface() { Function<String ,Integer> function=(s)->{return s.length();}; System.out.println(function.apply("abc")); Predicat原创 2020-10-08 10:47:22 · 457 阅读 · 0 评论 -
传值问题
传值问题代码结果age解释(基本数据类型)PersonName解释(引用类型)String的解释(String)代码package cduck.cn;class Person{ String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Person原创 2020-10-07 00:14:02 · 154 阅读 · 0 评论 -
Java8之lambda表达式
Java8之lambda表达式lambda表达式接口里是否能有实现方法?代码lambda表达式什么是LambdaLambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。Lambda 表达式在Java 语言中引入了一个新的语法元素和操作符。这个操作符为 “->” , 该操作符被称为 Lambda 操作符或剪头操作符。它将 Lambda 分为两个部原创 2020-09-30 22:18:44 · 287 阅读 · 0 评论 -
Stack.peek()和Stack.pop()
Stack.peek()peek()函数返回栈顶的元素,但不弹出该栈顶元素。Stack.pop()pop()函数返回栈顶的元素,并且将该栈顶元素出栈。原创 2020-09-27 10:47:25 · 769 阅读 · 0 评论 -
并行和并发的区别
并行和并发的区别并发(concurrency):并行(parallel):简单理解并发:一个处理器可以同时处理多个任务。这是逻辑上的同时发生。并行:多个处理器同时处理多个不同的任务。这是物理上的同时发生。有一个清晰地比喻:并发:一个人同时吃三个苹果。并行:三个人同时吃三个苹果。深入理解:并发(concurrency):指同一时刻只能够执行一条指令,但是多条指令被快速的进行切换,给人造成了它们同时执行的感觉。但在微观来说,并不同同时进行的,只是划分时间段,分别进行执行。并行(paralle原创 2020-09-13 12:36:58 · 242 阅读 · 0 评论 -
JavaMail发送邮件
package com.java_lettuce.Util;import java.util.Properties;import javax.mail.Address;import javax.mail.Message;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;原创 2020-07-22 20:50:33 · 174 阅读 · 0 评论 -
方法的重写与重载
文章目录方法的重写(override)方法的重载(overload)重写与重载之间的区别方法的重写(override)基本概念:子类从父类中继承方法,有时,子类需要修改父类中定义的方法的实现,这称做方法的重写(method overriding)。当一个子类继承一父类,而子类中的方法与父类中的方法的名称、参数个数和类型都完全一致时,就称子类中的这个方法重写了父类中的方法。“重写”又称为“复写”、“覆盖”。例如:class Super { 访问权限 方法返回值类型 方法1(参数1) {原创 2020-06-06 11:58:40 · 440 阅读 · 0 评论 -
this关键字与static关键字
关于this关键字,你只需要记住它就是指自身,this即代表自己,this.属性访问的是自己的属性、this()访问的就是自己的无参构造方法。this()调用的是Person自己的无参构造方法,this.name访问的是Person对象自身的name,而方法参数中的name则表示方法传入的值。...原创 2020-06-05 16:21:31 · 376 阅读 · 0 评论 -
多JDK共存并切换
解决办法原创 2020-05-21 10:31:23 · 229 阅读 · 0 评论 -
容器
容器Collection接口List特点和常用方法List接口常用的实现类有3个:ArrayList、LinkedList和VectorLinkedList特点和底层实现Vector向量Map接口HashMap和HashTable数组就是一种容器,可以在其中放置对象或基本类型数据。数组的优势:是一种简单的线性序列,可以快速地访问数组元素,效率高。如果从效率和类型检查的角度讲,数组是最好的。数组的劣势:不灵活。容量需要事先定义好,不能随着需求的变化而扩容。比如:我们在一个用户管理系统中,要把今天注册的所原创 2020-05-16 22:44:29 · 267 阅读 · 0 评论 -
Java网络编程
Java网络编程InetAddressInetSocketAddressJava为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能。Java虚拟机负责提供与操作系统的实际连接。下面介绍几个java.net包中的常用的类。InetAddress作用:封装计算机的IP地址和DNS(没有端口信息)。注:DNS是Domain Name System,域名系统。特点:这个类没有构造方法。如果要得到对象,只能通过静态方法:getLocalHost()、getByName()、 g原创 2020-05-14 13:05:26 · 224 阅读 · 0 评论 -
TCP协议和UDP协议
TCP协议和UDP协议TCP协议UDP协议TCP协议和UDP协议的联系和区别TCP协议TCP(Transfer Control Protocol)是面向连接的,所谓面向连接,就是当计算机双方通信时必需经过先建立连接,然后传送数据,最后拆除连接三个过程。TCP在建立连接时又分三步走:第一步,是请求端(客户端)发送一个包含SYN即同步(Synchronize)标志的TCP报文,SYN同步报文会指明客户端使用的端口以及TCP连接的初始序号。第二步,服务器在收到客户端的SYN报文后,将返回一个SYN+AC原创 2020-05-14 12:30:32 · 227 阅读 · 0 评论 -
网络编程前置知识
网络编程前置知识网络通信协议数据封装与解封:IP地址和端口URL:Socket:什么是计算机网络?计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 1. 计算机网络的作用:资源共享和信息传递。 2. 计算机网络的组成: a) 计算机硬件:计算机(大中小型服务器,台式机、笔记本等)、外部设备(路由器、交换机等)、通信线路(双绞线、光纤等)。原创 2020-05-14 12:24:36 · 578 阅读 · 1 评论 -
线程并发协作(生产者/消费者模式)
线程并发协作(生产者/消费者模式)线程并发协作总结:Ø 什么是生产者?生产者指的是负责生产数据的模块(这里模块可能是:方法、对象、线程、进程)。Ø 什么是消费者?消费者指的是负责处理数据的模块(这里模块可能是:方法、对象、线程、进程)。Ø 什么是缓冲区?消费者不能直接使用生产者的数据,它们之间有个“缓冲区”。生产者将生产好的数据放入“缓冲区”,消费者从“缓冲区”拿要处理的数据。设置缓冲区的好处Ø 实现线程的并发协作 有了缓冲区以后,生产者线程只需要往缓冲区里面放置数据,而不需要管消费者原创 2020-05-12 15:14:20 · 211 阅读 · 0 评论 -
死锁及解决方案
死锁及解决方案死锁”指的是:多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。因此, 某一个同步块需要同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题。下面案例中,“化妆线程”需要同时拥有“镜子对象”、“口红对象”才能运行同步块。那么,实际运行时,“小丫的化妆线程”拥有了“镜子对象”,“大丫的化妆线程”拥有了“口红对象”,都在互相等待对方释放资源,才能化妆。这样,两个线程就形成了互相等待,无法继续运行的“死锁状原创 2020-05-12 14:22:22 · 214 阅读 · 0 评论 -
多线程
-程序,进程,线程通过继承Thread类实现多线程通过Runnable接口实现多线程Callable与Future创建线程线程状态线程的5个状态终止线程的典型方式暂停线程执行sleep/yield线程的联合join()线程的常用方法线程的优先级线程同步程序,进程,线程“程序(Program)”是一个静态的概念,一般对应于操作系统中的一个可执行文件,比如:我们要启动酷狗听音乐,则对应酷狗的可执行程序。当我们双击酷狗,则加载程序到内存中,开始执行该程序,于是产生了“进程”。“进程(Process)”执原创 2020-05-11 15:34:31 · 293 阅读 · 0 评论 -
JDBC
JDBC:1、 导入驱动,加载具体的驱动类Class.forName("com.mysql.cj.jdbc.Driver");2、 与数据库建立连接conn=DriverManager.getConnection( "jdbc:mysql://localhost:3306/testjdbc?useUnicode=true&characterEncoding=utf-8&us...原创 2020-05-05 12:09:35 · 187 阅读 · 0 评论 -
序列化、反序列化及装饰器模式
序列化、反序列化及装饰器模式序列化、反序列化序列化/反序列化的步骤和实例装饰器模式简介及演示序列化、反序列化概念:当两个进程远程通信时,彼此可以发送各种类型的数据。 无论是何种类型的数据,都会以二进制序列的形式在网络上传送。比如,我们可以通过http协议发送字符串信息;我们也可以在网络上直接发送Java对象。 发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序...原创 2020-05-05 11:36:26 · 221 阅读 · 0 评论 -
IO和流有关部分
IOIO流简介流的细分四大IO抽象类IO流简介常见的数据源有:数据库、文件、其他程序、内存、网络连接、IO设备。流的概念:流是一个抽象、动态的概念,是一连串连续动态的数据集合。流的细分按流向分:i.输入流:将数据源(Source)中的数据(information)输送到程序(Program)中。InputStream和Reader为基类ii.输出流:OutputStream和...原创 2020-05-01 21:38:35 · 468 阅读 · 0 评论 -
JAVA技能点
原创 2020-04-21 13:15:22 · 265 阅读 · 0 评论