- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 2021-01-21
函数式接口的思考接口和抽象类的区别还在吗?抽象类还有意义吗? 接口中可以有抽象方法,默认方法,静态反方法;抽象类中可以有抽象方法,实例方法,静态方法。 接口中的属性是 public static final 的;抽象类中的属性则不是。 接口中的方法只能是public的,抽象了则不是 接口可以多实现,抽象类只能单继承 再看看JDK中对于抽象类和接口的应用,抽象类往往是实现接口中一些通用的方法,而子类只需要集成抽象类,实现个性化的方法即可。总而言之,接口定义了子类的行
2021-01-21 09:09:53
150
原创 2021-01-21
JDK8-2常见函数式接口JDK提供的常见函数式接口 Function 接受一个参数,产生一个返回值(代表一个函数)@FunctionalInterfacepublicinterfaceFunction<T,R>{//函数式方法Rapply(Tt);//组合函数,针对输入参数首先应用before函数,然后应用当前函数,如果对任一函数求值时抛出异常,异常会被传递到调用者default<V>Function<V,...
2021-01-21 09:09:04
144
原创 2021-01-21
JDK8-1 函数式接口的定义JDK8 历史渊源这是第一篇写 JDK8 的内容,先聊聊 JDK8 的历史渊源吧。2014 年 3 月 18 日,JDK8 的第一个正式版发布了,时间上虽比原定的 2013 年 9 月稍晚了一些,但是功能上还是值得肯定的,主要包括: JEP 126:对 Lambda 表达式的支持,让 Java 语言拥有了函数式表达的能力。 JEP 104:内置 Nashorn JavaScript 引擎的支持。 JEP 150:新的时间、日期 API。
2021-01-21 09:08:25
144
原创 进程通讯-Condition
进程之间通讯-Condition await/signal/signalAllawait(): 调用await方法的线程释放当前的lock,当前线程处于等待状态。类似于synchronized的wait()方法。signal(): 调用signal方法使得当前condition的wait线程处于唤醒状态。 类似于synchronized的notify()方法,如果存在多个wait线程,signal()方法可以指定唤醒某个线程,notify()只能随机唤醒一个。signalAll(): 调用sig
2020-10-20 22:37:40
218
原创 volatile的语义与实践
volatile是JVM虚拟机提供的最轻量级的同步机制,如果能恰当的使用volatile的话,它比synchronized的执行成本更低,因为它不会引起上下文的切换和调度。 Java语言规范第三版中对volatile的定义如下:Java语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排它锁单独获取这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。如果一个字段被声明为volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。...
2020-10-20 19:22:32
217
原创 源码分析-ThreadLocal
ThreadLocal 始于JDK1.2,提供了一个操作线程对象变量(ThreadLocal.ThreadLocalMap)的方法,进而达到线程安全和数据与线程绑定的目的。使用示例:import org.junit.Test;import java.util.concurrent.TimeUnit;/** * ThreadLocal类使用测试 */public class ThreadLocalTest { public ThreadLocal<Integer&g.
2020-05-28 22:36:42
178
原创 进程通讯-join
join:线程加塞。官方释义:Waits for this thread to die.(等待当前线程死掉)join()方法是java.lang.Thread类的成员方法,因此只有Thread的实例可以调用。join的用法实例:/** * Thread的join()线程加塞方法测试 */public class Join { @Test public void test(){ Thread joinThread = new Thread(..
2020-05-28 21:15:34
337
原创 进程通讯-wait notify
进程通讯之wait/notifywait():调用wait方法的线程释放当前的锁,并使当前线程处于等待状态。notify():使用notify方法,使得用notify调用者对象作为Monitor的wait线程随机一个被唤醒。notifyAll(): 使得用notifyAll()调用者对象作为Monitor的wait线程都被唤醒。tip: 1. notifyAll()不是唤醒所有处于wait状态的线程,而是只唤醒使用当前调用notifyAll()对象作为Monitor的wait线程。.
2020-05-25 23:09:26
260
原创 Java连接mysql时区问题
ErrorCode=0 SQLState=01S00 The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone ...
2019-05-23 10:45:12
4976
原创 简单谈谈Java语言中String类的final作用
什么每个程序员避免不了操作字符串的废话我就不多说了,直接开始正题:Java中String类多处使用final关键字,为什么?String类的定义如下: public final class String implements java.io.Serializable, Comparable<String>, CharSequence {} 四个地方值得注意:1....
2019-04-07 00:26:29
346
原创 mysql主从搭建
参考了好多资料,终于搭建成功了一个mysql的主从,记录下来所有的步骤,以及资料中设计到的坑: 1.准备材料:CentOS--3.10.0-514.el7.x86_64 两台 各自装有mysql--5.6.221.1 master : 192.168.8.1301.2 slave : 192.168.8.131(这里首先保证mysql可以启动成功,并且可以登录,并且两台机器...
2018-08-11 23:47:50
263
原创 我要如何再去相信mybatis?
我之所以写这篇文章,只是为了表达三个字mmp,不是我没素质,只是坑实在太深(如果是我脑洞太浅,还望各位大牛留言多多指导)。从今天下午的问题说起吧!问题1:测试完全通过,等到发版的时候,线上产生了bug! 是测试不够专业?我觉得并不是,只能说测试库太脏。导致测试怀疑我发到线上的和测试环境的不是同一版本的代码,纳尼?ci直接deploy的同一个release,我都没敢二次build,,...
2018-08-02 21:56:08
218
原创 虚拟机linux中网络配置静态IP
解决痛点:有时候,虚拟机的网络就不知道怎么了,在windows上通过putty等其他工具连接不上了,又不会弄,ifconfig一看,全是mac地址,没有ip,有时候有,但是在windows中ping不通,这让人很头疼,为了解决linux虚拟机中网络的配置,因此记录以下内容。#########################案例机器为(uname -a):CentOS 3.10.0-514.el7....
2018-07-21 16:22:47
1902
原创 浅谈java中的引用
jvm1.2以前关于引用的最原始的定义是:如果reference类型中存储的数据代表另一块内存的起始地址,就称这块内存代表一个引用。 (这种定义有一个致命的缺陷是:引用只有两种状态 1.被引用;2.没有被引用) 为什么说只有两种状态就是一个致命的缺陷呢? 因为对于好多对象,我们在回收的事情上需要加判断(也许对象正在被应用,在有的情况下也需要回收;也许对象没有被引用,也不...
2018-06-24 22:29:49
222
原创 JVM产生以及引用一个对象
JVM如何产生一个对象? 程序员视角:new clone 反序列化 都可以生成一个对象在内存中。(JVM的给我们带来的方便,两个字:伟大) JVM视角:(大约需要以下5步骤) 1. (验证类加载)检查创建对象的指令参数,能否在常量池中定位到一个类符号的引用(Class信息存放在方法区中,常量池也是方法区的一部分)。并且检查...
2018-06-13 11:11:58
350
原创 JVM中的OOM异常(out of memory)
A.可能抛出oom异常的内存: 1.jvm运行时所管理的内存:除了程序计数器之外的内存(堆,方法区,虚拟机栈,本地方法栈)都有可能抛出oom异常。 当然栈中有可能会抛出OOM异常也可能会抛出stack overflow Error。当请求的深度大于栈所允许的最大的深度,则抛出stack overflow error ,当栈的容量扩充,分配不到空间时抛出OOM. 2...
2018-06-13 09:13:28
1700
原创 webService从调用到发布
1.java调用别人的webService服务。 1.1调用别人的webService服务,首先看wsdl文件,这个文件中定义了webService所提供的服务的调用规则(这个文件的地址:服务url?wsdl。这个url就是webService服务的url ,例如http://127.0.0.1:8081/hello?wsdl)。 1.2根据wsdl文件生成相应的客户端代码 jdk1....
2018-06-06 09:27:02
373
原创 Java元注解(Annotation)及注解的解析处理器(AbstractProcessor)
元注解就是注解的注解。java中的四个元注解:@Retention,@Target,@Documented,@Inherited.四个元注解的含义:@Retention 注解的保留策略(该注解在代码中的声明周期)。(值为RetentionPolicy的枚举类型:RESOURCE@Target 注解的作用目标(该注解能应用的位置)。( 值为ElementType[ ]数组类型:@
2018-06-06 08:58:01
2725
原创 Java中的System.currentTimeMillis()和System.nanoTime()的区别
Java提供了两个获取时间的重要方法: 1. long System.currentTimeMillis(); 2. long System.nanoTime();currentTimeMillis()方法的精度是毫秒 milliseconds 可以异步机器同步 nanoTime() 方法的精度是纳秒 不能垮机器使用1 毫秒 = 1000000 纳秒cu...
2018-05-11 11:41:56
1567
原创 SQL语句(statement)预处理(preparedStatement)
javaweb中sql语句的预处理预处理也叫预编译。本来sql每执行一条sql语句,就需要对这条sql语句进行编译,然后执行。预编译采用sql模版。只需要在第一次使用时编译一次。后面传参数调用就可以了。预处理代码如下:try{ Connection con = DriverManager.getConnection(props.getProperty("url"),pro
2016-10-19 14:38:43
3086
设备管理系统
2019-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人