java
文章平均质量分 63
一叶呼呼
看了不一定会了,会了不一定懂了,懂了不一定不会忘
展开
-
Java中虚函数的概念,多态,动态分派
虚函数、多态、动态分派//todo????,原来Java还真有虚函数的概念。或者说没有虚函数的关键字,有这个相同的概念(多态)。C++有点烂,还是学一下吧。Java中有没有虚函数的概念?Java有虚函数对应的概念-多态,没有虚函数或者说普通函数就是虚函数。定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。原创 2020-11-19 10:34:54 · 765 阅读 · 0 评论 -
SPI机制(Service provider interface)、JAVA SPI、SpringBoot SPI、Dubbo SPI
SPI首先介绍一下SPI的概念:Service provider interface ,为某个接口寻找服务实现的机制。或者说可以通过配置来获取实现子类,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。盲猜实现:需要在程序外规定一个放配置实现子类的地方,用以扫描发现服务(寻找服务);找到子类定义(全路径名)后,通过反射的方法实例化子类。JAVA SPIJAVA 自己实现的SPI机制的放配置地方在ClassPath路径下的META-INF/services文件夹下,其定义是扫描文件夹下的原创 2020-11-10 19:55:31 · 732 阅读 · 0 评论 -
网络编程中的BIO,NIO和AIO及Java实现
在处理 IO 的时候,阻塞和非阻塞都是同步 IO。BIO,blocking IO:同步阻塞 , sychronized , blockNIO,new IO:同步非阻塞 ,Non-block I/OAIO:异步非阻塞 , Asychronized阻塞/非阻塞阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。即等待I/O完成的方式阻塞要求用户程序等待,线程被挂起,直到IO完成,调用线程只有在得到结果之后才会返回;而非阻塞程序继续执行,调用不会阻塞当前线程。同步/异步同步和异原创 2020-11-10 19:40:16 · 224 阅读 · 0 评论 -
TCP 最大连接数
TCP 最大连接数讨论:一个进程支持打开多大数目的socket描述符linux网络编程:select poll epollselect 所打开的FD是有一定限制的,由FD_SETSIZE设置,默认值是1024。poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存储的。但是效率上来讲和select相同,都是O(n)的时间复杂度。epoll的存在: epoll则没有最大连接数的限制,它所支持的FD上原创 2020-11-10 19:33:35 · 2727 阅读 · 0 评论 -
JVM 关于各种常量池的概念的总结和讨论以及String在JVM中的形式
各种常量池、对象、基本类型、静态变量、字符串、符号引用和直接引用的来源去向和存储地址,让人头皮发麻。所以今天就来整理一下。这个讨论主要依据Java1.8,关于方法区中在1.8后有什么这些概念在《深入理解Java虚拟机:JVM高级特性与最佳实践》这本书都是混着讲的,讲的比较少。所以本文除了说明各种常量池都是什么,在哪,还验证方法区中还有什么?明确需要讨论的常量池概念名称来源去向存储位置常量池(静态常量池)class文件类加载后存放到运行时常量池中\运行时常量池静态常原创 2020-11-10 19:15:55 · 372 阅读 · 1 评论 -
Java 多线程创建方式,线程池创建方式,concurrent包下的内容
Thread 类和 Runnable 接口; callable接口与Future、线程池结合使用Thread 类和 Runnable 接口如果一个类继承 Thread类,则不适合于多个线程共享资源,而实现了 Runnable 接口,就可以方便的实现资源的共享。至于为什么实现Runnable可以共享资源,是因为线程调用的是同一个对象。Runnable runable = new Runnable(){ @Override public .原创 2020-11-10 15:41:57 · 255 阅读 · 0 评论 -
设计模式,Spring中的设计模式
具体地址:http://www.yiyehu.tech/archives/2020/06/01/design-pattern-in-spring声明:大纲与部分内容来自于https://www.runoob.com/design-pattern/design-pattern-intro.htmlContents[hide]设计模式简介重用代码、让代码更容易被他人理解、保证代码可靠性对接口编程而不是对实现编程。 优先使用对象组合而不是继承总共有 23 种设计模式。这些模式可以分为三..原创 2020-06-10 15:54:33 · 342 阅读 · 0 评论 -
BeanUtils.copyProperties之大坑
大坑两个不同的包(springframework , apache)中有一个相同名字的类,相同的方法,方法的作用相同,参数个数相同。就是参数位置不同,是相反的。原创 2019-08-31 17:27:03 · 5132 阅读 · 3 评论 -
获取一个类所有继承的父类及实现的接口
private static void getAllClazz(Class<?> clazz, List<Class<?>> superClazzList) { if (clazz == null) { return; } if (!superClazzList.contains(clazz原创 2018-10-11 16:55:36 · 3333 阅读 · 2 评论 -
HandlerMethodReturnValueHandler处理返回值问题,aop
本来想通过实现HandlerMethodReturnValueHandler接口,对返回值进行处理。(实现了MessageSource,想通过code来获取Message中的值)但是呢,死活成功不了。本以为Bean没有加载,但是看了一下日志,Bean都有了。debug了一下源码:发现之所以处理不了是因为被抢了,在selectHandler方法中,选取了RequestResponseBodyMe...原创 2018-08-15 16:55:00 · 6451 阅读 · 1 评论 -
dubbo之坑,坑之多,多到一篇文章写不下
1.curator利用apache的curator作为zookeeper客户端时需要,curato中依赖的zookeeper的版本和zookeeper服务器的版本一致,否则报错<!-- dubbo --><dependency> <groupId>com.alib原创 2018-08-14 16:29:37 · 4656 阅读 · 0 评论 -
Java NullPointerException
Java NullPointerException: The One Tiny Thing That’s Killing Your Chances of Solving 分解复杂的代码行把多个对象放在不同行,在出现NullPointerException时,log就会准确的指出在哪一行哪一个对象为NULL fromif ((user.isCustomer() != false) ...原创 2018-07-19 15:27:56 · 265 阅读 · 0 评论 -
java 8 新特性-lambda
@FunctionalInterfacesince 1.8An informative annotation type used to indicate that an interface type declaration is intended to be a functional interface as defined by the Java Language Specificati...原创 2018-07-06 16:38:53 · 203 阅读 · 0 评论 -
java异常
try-with-resources , 1.7版本后try-with-resources 是 JDK 7 中一个新的异常处理机制,它能够很容易地关闭在 try-catch 语句块中使用的资源。所谓的资源(resource)是指在程序完成后,必须关闭的对象。try-with-resources 语句确保了每个资源在语句结束时关闭。所有实现了 java.lang.AutoCloseable 接口原创 2018-02-03 13:23:05 · 414 阅读 · 0 评论 -
Java接口之间的多继承
Java类之间并不允许多继承,只可以单继承和实现多接口。一直以为接口也是,但是发现了下面这个(接口继承多接口) 查了一下发现:相对于C++中的多继承来说,java用接口的概念取代了多继承 一个类只能extends一个父类,但可以implements多个接口。 一个接口则可以同时extends多个接口,却不能implements任何接口。 ===>>Java中的接口是支持多继...原创 2018-06-06 12:17:39 · 13962 阅读 · 2 评论 -
利用wagon-maven-plugin部署项目到Linux
利用wegon部署到Linuxwagon plugin 配置<!--wagon plugin 配置 --><properties> <service-path>/usr/local/tomcat/webapps</service-path> <pack-name>${project.artifactId}</pack-name> <remote-ad原创 2018-04-07 10:16:22 · 384 阅读 · 0 评论