JDK

Java8 新特性之Lambda表达式

有些话、适合烂在心里 提交于 2020-10-01 11:39:42
Java8 新特性之Lambda表达式 一. 接口中定义普通方法 在jdk1.8之前,接口是不允许定义普通函数的,之后通过添加default进行定义默认普通函数,例: public interface Method(){ //抽象函数 void method1(); //默认普通函数 default void method2(){ System.out.print("我是默认普通函数") } } 我们需要对接口进行实现: public class MethodImpl implements Method{ @Overrid public void method1(){ System.out.print("我是method1") } //第一种情况不对method2进行实现 //第二种情况对method2进行实现 @Overrid public void method2(){ System.out.print("我是method2子类") } } 如何对父类接口的默认函数调用?? 对于第一种情况:我们直接使用 Method method = new MethodImpl(); method.method2(); 就可以直接调用,default 的意思其实就是默认 对于第二种情况,我们有两种解决方案进行调用 1:内部匿名类 Method method = new Method(){

Java20-day11【实现多线程(进程、线程-调度-控制-生命周期)、线程同步(同步代码块、线程安全、Lock)、生产者消费者(模式概述、案例)】

余生长醉 提交于 2020-10-01 09:36:25
视频+资料 【链接: https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs】 Java基础--学习笔记(零起点打开java世界的大门)--博客汇总表 目 录 01_进程和线程 1.1、进程 1.2、线程 02_继承Thread类的方式实现多线程 1.3、多线程的实现方式 03_设置和获取线程名称 1.4、设置和获取线程名称 04_线程优先级 1.5、线程调度 05_线程控制 1.6、线程控制 06_线程的生命周期 1.7、线程生命周期 07_实现Runnable接口的方式实现多线程 1.8、多线程的实现方式 08_卖票 案例:卖票 09_卖票案例的思考 2.1、卖票案例的思考 10_同步代码块解决数据安全问题 2.2、卖票案例数据安全问题的解决 2.3、同步代码块 11_同步方法解决数据安全问题 2.4、同步方法 12_线程安全的类 2.5、线程安全的类 13_Lock锁 2.6、Lock锁 14_生产者和消费者模式概述 3.1、生产者和消费者模式概述 15_生产者和消费者案例 3.2、生产者和消费者案例 01_进程和线程 1.1、进程 进程: 是正在运行的程序。 是系统进行资源分配和调用的独立单位。 每一个进程都有它自己的内存空间和系统资源。 线程依赖于进程而存在。 在一个进程内部,可以执行一个或多个任务

Java多线程 开发中避免死锁的八种方法

跟風遠走 提交于 2020-10-01 09:00:18
原文链接: https://blog.csdn.net/qq_33229669/article/details/108552331?utm_medium=distribute.pc_feed.none-task-blog-personrec_tag-6.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-personrec_tag-6.nonecase&request_id=5f6435ebdfc5717f9a1d8903 1. 设置超时时间 使用JUC包中的Lock接口提供的tryLock方法. 该方法在获取锁的时候, 可以设置超时时间, 如果超过了这个时间还没拿到这把锁, 那么就可以做其他的事情, 而不是像 synchronized 如果没有拿到锁会一直等待下去. boolean tryLock(long time, TimeUnit unit) throws InterruptedException; 造成超时的原因有很多种:发生了死锁, 线程进入了死循环, 线程逻辑复杂执行慢. 到了超时时间, 那么就获取锁失败, 就可以做一些记录操作, 例如 打印错误日志, 发送报警邮件,提示运维人员重启服务等等. 如下的代码演示了 使用tryLock 来避免死锁的案例. 线程1 如果拿到了锁1 ,

搭建ESP32-IDF开发环境

泪湿孤枕 提交于 2020-10-01 06:24:03
这里介绍WIN10系统下使用ubuntu虚拟机搭建ESP32-IDF开发环境。 一、安装虚拟机。 安装 lubuntu 和 Vmware ,还有 ESP-IDF 。 但是ESP-IDF在github上下载不了,可以在乐鑫官网上下。 https://dl.espressif.com/dl/esp-idf/releases/esp-idf-v4.1.zip 二、设置共享文件夹。 在VMware上设置共享文件夹,方便把Windows的文件传入到虚拟机中,前提是vmware tools要装好。 共享文件夹在 目录中。 三、更换ubuntu软件源。 请参考 这里 。我换了清华的源,然后再安装aptitude。使用安信可提供的lubuntu,密码是aithinker。 sudo apt-get install aptitude 如果安装不了aptitude,显示软件包保持现状,就再换个软件源。 四、安装python。 五、更换pip软件源。 mkdir ~/.pip vi ~/.pip/pip.conf 再写入以下内容。 [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple 六、安装并使用ESP32-IDF。 先安装所需要的软件。 sudo apt-get install gcc git wget make

Java基础-集合

喜你入骨 提交于 2020-10-01 05:45:04
集合 集合的概念 集合是对象的容器,定义了对多个对象进行操作的常用方法,可实现数组的功能 集合和数组的区别: 数组长度固定,集合长度不固定 数组可以存储基本类型和引用类型,集合只能存储引用类型 Collection体系集合 Collection父接口方法 Iterator<E>iterator() 返回一个用于访问集合中各个元素的迭代器 int size() 返回当前存储在集合中的元素个数 boolean isEmpty() 如果集合中没有元素,返回true boolean contains(Object obj) 如果集合中包含了一个与obj相等的对象,返回true boolean containsAll(Collection<?> other) 如果这个集合包含other集合中的所以元素,返回true boolean add(E element) 将一个元素添加到集合中,如果由于这个调用改变了集合,返回true boolean addAll(Collection<? extends E> other) 将other集合中所以元素添加到这个集合.如果由于这个调用改变了集合,返回true boolean remove(Object obj) 从这个集合中删除等于obj的对象.如果有匹配的对象被删除,返回true boolean removeAll(Collectin<?>

关于Windows10下Linux子系统Ubuntu的JDK环境、Hadoop环境配置以及Scala安装中出现的问题

吃可爱长大的小学妹 提交于 2020-10-01 01:48:00
Windows10下Linux子系统Ubuntu的JDK环境、Hadoop环境配置以及Scala安装中出现的问题 安装前提: 平台:Windows10电脑,预先下载好的Ubuntu子系统,不会下载的见教程: Windows10使用Linux子系统 这里我使用的是Ubuntu18.04.2 我们要开始学习大数据的相关内容,老师要求我们自行安装好Linux系统下的Scala软件并且配置好它所需要的JDK 环境和Hadoop环境。这里我主要参考了林子雨老师的安装教程,不得不说,林老师的安装教程太太太太太赞了!感谢林老师! 附上林子雨老师的安装链接: spark2.1.0入门:spark的安装与使用 Hadoop安装教程 注:链接的安装教程中老师已经给出他提供的百度网盘资源,包含这次教程所需要的全部安装文件,大家不必费心去找,再次感谢林子雨老师(太感动了)! 选择Windows下Linux子系统的优点:没有虚拟机+Ubuntu镜像文件配置那么繁琐,就Scala的学习还是够用的; 但是据我下载了VirtualBox并且安装完Ubuntu系统的室友说,按照林子雨老师的教程安装这两者也没出现多大问题,想要安装VirtualBox的同学也可一试。 教程中的步骤已经很完备,下面我主要说说我在安装过程中出现的问题: 关于hadoop用户的创建之后的登陆

java加载国际化

﹥>﹥吖頭↗ 提交于 2020-10-01 00:00:53
方式一: 通过util包中的ResourceBundle加载: 首先国际化资源文件放在了classpath下的i18n目录下: 基本命名格式: 基名_语言_地区.properties 常见的资源文件命名格式: i18n_en.properties:所有英文语言的资源 i18n_en_US.properties:美国地区,英文语言的资源 i18n_zh.properties:所有中文语言的资源 i18n_zh_CN.properties:中国大陆的,中文语言的资源 i18n_zh_HK.properties:中国香港,中文语言的资源 基名.properties:默认资源文件,如果请求相应的资源文件不存在,将使用此资源文件 mymessage_en_US.properties: com.website.operation=\u67e5\u8be2\u64cd\u4f5c\u65e5\u5fd7 com.website.write=\u5199\u65e5\u5fd7 com.website.writeLog=\u5199 {0} \u65e5\u5fd7 mymessage_en_US.properties: com.website.operation=queryOperationLog com.website.write=recordLog com.website.writeLog

基于Ansible和Devops的一键测试环境部署实践

十年热恋 提交于 2020-09-30 21:01:52
​转载本文需注明出处:微信公众号EAWorld,违者必究。 随着网络架构的不断升级和业务的复杂化,对产品多环境支持的要求越来越高。产品支持的数据库、应用服务器、中间件、操作系统等的多样化,使测试环境的组合越来越多,导致测试环境的部署难度不断增加。 如何选择一个合适的工具,实现多样化环境部署的同时保证部署操作的易用性。下面分享一下我们基于Ansible和Devops实现的一键式测试环境部署的过程。 Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(Saltstack、puppet、chef等)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible是基于模块工作,具有丰富的内置模块,同时也支持自定义模块开发 1。以下是对Ansible和其他常见运维工具的对比2 : 而ansible在自动化运维过程时具有如下优势: 1.基于模块运行,有丰富的内置模块支持 2. 基于Python开发,方便二次开发 3. 基于SSH 交互,被管机器不要安装 Agent 4. 无Server,在任何安装ansible的机器上执行命令即可 5. 脚本用YAML编写,易读和易维护 正因为ansible操作简单、易上手,功能丰富,已被很多公司纳入使用。 Ansible主要有ad-hoc和playbook两种执行方式,Ansible Ad-hoc是一次性命令

滴滴CTO五轮面试真是太刺激了,Java高级工程师一二三四五面面经(已拿到offer)

拟墨画扇 提交于 2020-09-30 18:12:32
滴滴CTO五轮面试真是太刺激了,之前看到好多面经难度极大,感觉运气还行,面试难度虽然挺大,但面试官人还都不错。而且面试完马上出结果,非常刺激! 本文分享给需要面试刷题的朋友,也祝愿大家顺利拿到自己想要的offer,这份资料主要包含了Java基础,数据结构,jvm,多线程等等,由于篇幅有限,以下只展示小部分面试题,有需要完整版的朋友可以点一点链接跳转领取:链接: 点击即可!!! 暗号:CSDN 9月9日下午1:00 一面 自我介绍+介绍项目 项目中难点及解决办法 Java线程的状态及转换 Java创建线程的方式 创建线程池的方式有哪些 JUC包下的类,能说多少说多少 ReentranLock与sychronized的区别 volitile的内存语义,底层如何实现 解释一下happens-before,有哪些规则 CurrentHashMap源码 MySQL的索引及区别 算法题:顺时针打印矩阵 9月10日下午1:00二面,深挖项目为主(45min) 介绍项目,项目中的难点(15min) MySQL是如何优化的,数据量有多少 倒排索引与正排索引的区别 ElasticSearch的原理(倒排索引+TF/IDF) Zookeeper用过吗,介绍一下 Zookeeper一般用在什么场景 除了ZAB协议,在介绍几个分布式一致性协议(Paxos、Raft) 线程池的几种拒绝策略及其应用场景

如何真正学好java

青春壹個敷衍的年華 提交于 2020-09-30 16:56:00
谈谈如何学好java 学好与“差不多的区别” 1、java是一门非常火的语言,为什么我说非常火呢,相对于今天2020年9月6号而言,java编程语言的使用量是排在前茅,但是以后咋样,我不知道,也不想知道,无所谓对吧。 区别: 差不多:如果仅仅是为了一些比较入门的项目学习java 只学会其基本语法,常用内置包的使用,以及面向对象的思想,五天可以搞定。随着一边做项目,一边开发,你会越来越会使用java,因为语言万通的,基本使用没问题,喝水一样。但是也仅仅是这样, 会用 真正学好java语言,在以上的基础上,有自己的理解,有更底层的认知,便是真正学好了java 遇到问题能快速解决问题,能有效的避免代码细节上的bug,能够通过原码了解自己有兴趣的工具类等等,能快速上手自己不熟悉的工具类等等。 学好 第一步:(重要) 一:了解jdk,jre,jvm之前的关系 二:记住:封装,继承,多态三大特性(刚刚开始不了解可以,但是要记住) 三:明白其java为什么跨平台,是为什么,而不是仅仅知道其跨平台 四:学会在命令行编写和编译和运行代码,各种方式(很多人觉得无所谓,但是这一步熟悉的话,会帮你在后面认知编译,jvm加载类有一定的帮助) 五:记住jvm的结构,相应区的功能,记住哪些是线程共享区,哪些是线程独享区(线程是什么现在不懂无所谓,记住些),记住类加载机制,知道什么是class文件,与源代码的区别