
Java基础
文章平均质量分 57
导演我死哪儿
这个作者很懒,什么都没留下…
展开
-
ArrayBlockingQueue
https://blog.youkuaiyun.com/u014799292/article/details/90167096转载 2021-05-26 19:10:22 · 80 阅读 · 0 评论 -
BIO/NIO/AIO基本概念
一、基础概念1、同步异步:多线程里面已经说过,同步就是调用结果返回一次交互结束;异步就是客户端请求来了发送完毕结束,然后服务端处理后再通知客户端。2、I/O:通常来说I/O包括,对硬盘的读写、对socket的读写以及外设的读写,并且需要进行用户空间和内核空间的区分(用户空间就是普通的用户进程,内核空间就是内核进程,只有内核空间才可以直接访问磁盘、硬盘等物理I/O设备)用户空间产生一个读请求,请求再转交由内核空间执行:a、内核检查读取的数据是否就绪 b、如果就绪,内核将数据从内核空间复制到用户空间(内存上原创 2021-01-15 16:44:25 · 150 阅读 · 0 评论 -
Java类加载机制
一、基本介绍:Java虚拟机类加载机制:虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。我们编写的java文件,首先是被编译器从.java文件转换为.class文件。.class文件中保存着转换后,虚拟机将要执行的指令。当需要某个类的时候,java虚拟机会加载.class文件,并创建对应的class对象,将class文件加载到虚拟机内存,这个过程就被成为类的加载。加载:通过全限定类名来获取定原创 2021-01-15 15:32:20 · 93 阅读 · 0 评论 -
AOP、拦截器、过滤器基本介绍及比较
一、拦截器,通过拦截器我们可以实现增强接口功能,所有的拦截器需要实现HandlerInterceptor接口,实现其三个方法preHandle处理器执行前方法postHandle处理器处理后方法afterCompletion处理器完成后方法,下面开始自定义拦截器:拦截器interceptor1 implements HandlerInterceptor接口。注意这个接口下自带三个方法都已经用default默认给了实现,我们要主动去实现下。然后我们将interceptor1注册到容器中在启动类上 implem原创 2021-01-14 15:22:15 · 869 阅读 · 0 评论 -
Lru算法原理与实现
https://www.cnblogs.com/zlting/p/10775887.htmlhttps://www.cnblogs.com/LittleTreasureBox/p/8799362.html demo样例removeEldestEntry 重要原创 2021-01-11 20:59:46 · 224 阅读 · 0 评论 -
Java开发中用的比较多的数据结构
一、ArrayList上面也说了底层结构就是数组,直接看源码,如下直接就创建了个new Object[],所谓有序是直接添加到末尾,添加顺序与下标顺序保持一致,值可以重复二、LinkedList源码可以直接参考:https://blog.youkuaiyun.com/wen_and_zi/article/details/100702014 通过其Node<E>类里面的三个属性 // 存储的数据 E item; // 下一项 Node<E> next; // 前一项 Node...原创 2021-01-08 21:27:00 · 340 阅读 · 1 评论 -
算法的复杂度
https://blog.youkuaiyun.com/qq_31186307/article/details/106890230https://www.cnblogs.com/bxcsx/archive/2004/01/13/12557902.html转载 2021-01-08 14:31:01 · 92 阅读 · 0 评论 -
JVM调优了解
https://blog.youkuaiyun.com/qq_30667039/article/details/86574530转载 2021-01-05 11:10:33 · 204 阅读 · 0 评论 -
jconsole简单使用
https://www.iteye.com/blog/jiajun-810150转载 2021-01-05 11:08:21 · 98 阅读 · 0 评论 -
java代理学习(Proxy)之动态代理
转载:https://blog.youkuaiyun.com/fangqun663775/article/details/78960545转载 2020-12-29 15:36:55 · 105 阅读 · 0 评论 -
单例模式
https://www.iteye.com/topic/652440转载 2020-12-29 14:24:02 · 77 阅读 · 0 评论 -
动态代理AOP
https://blog.youkuaiyun.com/qq_32532321/article/details/81874990 java动态代理 :JDK与CGLIB两种代理方式https://blog.youkuaiyun.com/flyfeifei66/article/details/81481222?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth...原创 2020-05-21 17:14:24 · 92 阅读 · 0 评论 -
linux启动java程序命令
https://blog.youkuaiyun.com/zl1zl2zl3/article/details/89882457重点是nohup日志文件仍到垃圾站转载 2020-07-04 19:24:28 · 853 阅读 · 0 评论 -
注解学习(一)
一、基础概念注解可以看做标签,通过@interface关键字进行定义,我们在定义一个注解的时候会用到一些元注解,用来说明自定义注解@Retention标识注解的存活周期,保留到源码阶段、保留到编译进行阶段以及保留到程序运行,大多数常用为第三种;@Document标识注解中的元素可以包含到javadoc中;@Target比较重要标识注解应用场景范围比如应用到注解上、构造方法上、方法上、参数上、包上、类上、局部变量以及Type,Type表示类型包含了类、接口、枚举;@Inherited表示注解继承,就是在超类原创 2020-09-16 20:27:04 · 102 阅读 · 0 评论 -
Java的SPI机制
https://blog.youkuaiyun.com/gallenzhang/article/details/88958800转载 2020-12-01 11:41:45 · 110 阅读 · 0 评论 -
java8stream()
https://www.cnblogs.com/winner-0715/p/10246037.htmlhttps://blog.youkuaiyun.com/weixin_39643007/article/details/90511098https://www.jianshu.com/p/dd5121c8fa89https://blog.youkuaiyun.com/qq_20597149/article/d...原创 2020-03-05 16:32:17 · 109 阅读 · 0 评论 -
基础学习之IOC
IOC与DI:IoC:Inverse of Control(控制反转),就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。正控:若调用者需要使用某个对象,其自身就得负责该对象的创建。反控:调用者只管负责从Spring容器中获取需要使用的对象,不关心对象的创建过程,也就是把创建对象的控制权反转给了Spring框架。DI:Dependency Injection(依赖注入)IoC:指将对象的创建权,反转给了Spring容器; DI :指Spring创建对象的过程中,将对象依赖属性(简单值,..原创 2020-11-26 11:06:01 · 257 阅读 · 0 评论 -
java核心技术卷二学习(一)
一、java8 stream1、看个例子,long count=words.stream().filter(w ->w.length>12).count;这个是串行,仅仅需要将stream修改成parallelStream就可以让流变成编发过滤和计数。流操作不会影响之前的数据,而是在操作的时候产生新的数据对象。关于流的创建,Collection接口的stream()方法可以直接创建流,如果是一个数组也可以用静态方法Stream.of(contents.splint(","))。...原创 2020-11-17 15:42:53 · 427 阅读 · 0 评论 -
volatile
java中,可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的,volatile只能让被他修饰内容具有可见性,但不能保证它具有原子性。比如 volatile int a = 0;之后有一个操作 a++;这个变量a具有可见性,但是a++ 依然是一个非原子操作,也就是这个操作同样存在线程安全问题。在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排转载 2020-11-17 14:56:36 · 131 阅读 · 0 评论 -
泛型学习
https://segmentfault.com/a/1190000014120746https://www.cnblogs.com/coprince/p/8603492.html转载 2020-11-17 14:43:36 · 75 阅读 · 0 评论 -
java核心技术卷一学习(一)
1、java的微型版Java Micro Edition可以适用于嵌入式编程。2、0X是十六进制,0是8进制,0B是2进制,字母大小写均可。3、java 8种基本类型4中整形:byte 1字节、short 2字节、int 4字节、long 8字节;浮点型: float 4 字节 有效位数6~7位、double 8字节 有效位数15。double应用较多。char类型;boolean类型 ;由于上面的长度有限会损失精度,因此尤其是银行使用更加精确的BIGInteger 与BigDecimal表示整数和浮点原创 2020-11-16 21:14:52 · 189 阅读 · 0 评论 -
反射
https://blog.youkuaiyun.com/huangliniqng/article/details/88554510https://blog.youkuaiyun.com/grandgrandpa/article/details/84832343转载 2020-11-12 21:17:40 · 76 阅读 · 0 评论 -
java代理学习(Proxy)之动态代理、cglib代理
https://blog.youkuaiyun.com/hejingyuan6/article/details/36203505# 主要理解https://www.cnblogs.com/cC-Zhou/p/9525638.html转载 2020-11-11 20:47:35 · 75 阅读 · 0 评论 -
java代理学习(Proxy)之静态代理
一、静态代理总结:代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。值得注意的是,代理类和被代理类应该共同实现一个接口,或者是共同继承某个类不足:静态代理实现了目标对象的所有方法,一旦目标接口增加方法,代理对象和目标对象都要进行相应的修改,增加维护成本。定义接口类:public interface AdminService { void update(); Object find();}定义接口实现类:public class Admi原创 2020-11-11 20:19:46 · 97 阅读 · 0 评论 -
依赖倒置DIP、控制反转IOC、依赖注入DI
依赖倒置实质上是面向接口编程的体现。上层模块不应该依赖底层模块,它们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。控制反转的意思是反转了上层模块对于底层模块的依赖控制。总结依赖倒置是面向对象开发领域中的软件设计原则,它倡导上层模块不依赖于底层模块,抽象不依赖细节。 依赖反转是遵守依赖倒置这个原则而提出来的一种设计模式,它引入了 IoC 容器的概念。 依赖注入是为了实现依赖反转的一种手段之一。 它们的本质是为了代码更加的“高内聚,低耦合”。...原创 2020-09-17 11:36:26 · 133 阅读 · 0 评论 -
代理模式与动态代理(一)
代理模式:代理模式就是用户不直接访问可以提供功能的接口,而是通过访问另外一个接口获取用户想要的结果,这样设计可以方便我们在不影响真正提供用户所需功能的接口前提下,而通过调整代理接口来实现我们功能的扩展,更加灵活。代理分为静态代理与动态代理,所谓静态代理就是代理类的类型是已经定好了,总是一句话:代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。值得注意的是,代理类和被代理类应该共同实现一个接口,或者是共同继承某个类。动态代理:动态代理顾名思义不用我们去创建代理类了,直接用Pr原创 2020-09-17 10:46:32 · 183 阅读 · 0 评论 -
线程池整理(一)
https://www.jb51.net/article/176647.htmhttps://blog.youkuaiyun.com/ignorewho/article/details/85603920原创 2020-12-29 15:37:58 · 103 阅读 · 0 评论 -
扫描指定路径下的.jpg文件
一、单层目录package com.company;import java.io.File;import java.util.ArrayList;import java.util.List;import java.util.Locale;public class FacaScanTest { static int depth = 0; static String ...原创 2020-12-30 20:21:44 · 187 阅读 · 0 评论 -
JAVA8新特性Lambda & Stream &Optional
Java8新特性之Lambda表达式(本文由同事整理,本人仅做记录学习)Lambda是Java8的新特性之一,但不是java独有的。是一种函数式编程思想。表达式形式(parameters)-> expression-> 左侧:方法需要的参数,可以无参数(),也可以多参数(xx,xx)多参数间以“,”相隔。 –> 右侧:方法所需要执行的逻辑方法。 例:环境要求...原创 2019-01-16 12:42:15 · 1348 阅读 · 1 评论 -
java的GC垃圾回收整理
一、我们为什么要了解GC?在真实项目中会时不时的发生OOM,尤其是大数据场景,真实应用中OOM更是不可避免的问题,如果不能合理的利用内存,将会直接影响我们项目的并发性;同样的GC也是由一个或者一组进程来实现的,它也占用我们JVM当中的deap、cpu。当GC成为我们程序并发度、性能运行的瓶颈的时候,我们就需要自己来管理这些“自动化”的技术了。二、垃圾回收主要在哪里进行?堆是垃圾回收的主...原创 2019-06-19 14:59:07 · 210 阅读 · 0 评论 -
关于BIO和NIO的理解
https://www.cnblogs.com/zedosu/p/6666984.htmlhttps://blog.youkuaiyun.com/ty497122758/article/details/78979302转载 2019-06-11 11:33:46 · 114 阅读 · 0 评论 -
JVM的内存划分管理
一、什么是JVM的内存首先是java源代码被java编译器编译成.class字节码文件,然后由JVM的类加载器加载执行中需要的各个类的字节码文件,加载完成后交由JVM执行引擎执行。在整个执行过程中,jvm会使用一段内存空间来存储执行期间需要用到的数据和相关信息,这段空间被称作运行时数据区,也就是我们常说的内存,我们常说的内存管理 也就是对这块内存的分配和回收管理。二、运行时数据区也就是内存...原创 2019-06-17 16:58:15 · 115 阅读 · 0 评论 -
stringbuffer与stringbuilder
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安...原创 2019-06-25 14:54:58 · 100 阅读 · 0 评论 -
为什么java中的对象类中重写equals方法一定还要重写hashcode方法
首先默认对象继承object,object中equals比较的是对象的内存地址信息,hashcode比较的是对象的内存地址经过hash计算后的hash值。如过是我们需要判断两个对象的内存是否相等的时候,一般不涉及hash类型集合时不用重写hashcode方法,equals就够了,但是涉及到HashMap、HashSet和Hashtable 的时候为了提高存储查询效率会用到hashcode方法,这个...原创 2019-06-25 16:23:39 · 1973 阅读 · 0 评论 -
hashtable/hashmap/ConcurrentHashMap
一、HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时synchronized锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算index的方法:index = (hash & 0x7FFFFFFF) %...转载 2019-06-25 16:53:35 · 265 阅读 · 0 评论 -
常见数据结构
一、常见数据结构如下:二、具体介绍1、数组:数组创建的时候会向内存申请一块连续的固定大小的内存空间,因此数组创建后其大小就不可变,如果使用过程中数据大小不够需要扩容这个时候就会将老数组的数据复制到新数组当中变通实现扩容。数组在插入数据时,待插入的数据以及它后面的数据都需要向后搬移,同理删除都需要向前搬移,因此插入删除效率低。但是因其内存连续想访问哪个元素直接从数组的首地址向后偏移就...原创 2019-07-01 11:17:43 · 525 阅读 · 0 评论 -
java编码基础规范
Java编码规范目录Java编码规范... 11. 命名风格... 22. 常量定义... 23. 代码格式... 34. OOP(Object Oriented Programming)规约... 45. 集合处理... 56. 并发处理... 77. 控制语句... 88. 注释规约... 89....原创 2019-07-29 11:00:57 · 242 阅读 · 0 评论 -
File的list()与listFiles()方法以及如何统计目录下的file数量
https://www.cnblogs.com/keyi/p/6293141.html转载 2018-12-06 14:50:10 · 1142 阅读 · 0 评论