当前位置: 首页 > article >正文

Java 学习记录:基础到进阶之路(一)

今天,让我们深入到 Java 项目构建、基础语法及核心编程概念的领域,一探究竟。

软件安装及环境配置请查看之前更新的博客有着详细的介绍:

IDEA软件安装&环境配置&中文插件-CSDN博客

目录

1.Java 项目构建基础

1.项目中的 SRC 目录

2.包结构的奥秘

2.第一个 Java 项目

3.Java 注释

4.变量:程序中的动态元素

变量的基本概念

变量使用注意事项

5.数组:数据的有序集合

1.数组的定义与特点

2.数组的遍历与应用

6.循环:程序的 “重复执行者”

1.for 循环的使用

2.用循环遍历数组

7.数据筛选与处理

1.筛选数据

2.数据统计

3.数据最值

4.逻辑运算

8.未来企业工作小技巧


1.Java 项目构建基础

1.项目中的 SRC 目录

在 Java 项目里,SRC(Source 的缩写)目录可谓是重中之重,它是我们放置源代码的地方。就如同图书馆里分类摆放书籍的书架,SRC 将我们的代码有序地组织起来。

2.包结构的奥秘

包结构在 Java 中为代码提供了一种命名空间和组织结构,像是给每个代码模块贴上独特的标签,方便管理和识别。

  • 第一层包结构:这一层揭示了项目的性质。
    • com代表商业类型的项目,是 “company” 的缩写。商业项目往往注重功能实现与商业价值,像电商平台的后端代码可能就以com开头。
    • org用于开源组织的项目,源自 “organization”。开源项目强调社区协作与代码共享,比如 Apache 基金会下众多的开源项目,为全球开发者提供了丰富的工具和框架。
    • edu对应教育类型的项目,即 “education”。教育项目常作为教学案例或学生实践的成果,帮助大家更好地理解和掌握 Java 编程。
    • gov则是政府类型的项目,全称为 “government”。政府项目通常对安全性、稳定性有极高要求,用于政务处理、公共服务等领域。

  • 第二层包结构:这里代表公司或团队名称。例如com.alibaba,一看便知是阿里巴巴公司相关的项目。在 Java 全栈开发中,无论是前端页面与后端服务的交互,还是数据库的操作,清晰的包结构能让不同模块的代码各司其职,提高开发效率。像在一个大型电商项目中,阿里巴巴可能会将用户管理、商品管理等不同功能模块放在以com.alibaba开头的不同子包中。
  • 第三层包结构:代表项目名称。以com.alibaba.druid为例,druid就是阿里巴巴开源的一个数据库连接池项目名称。合理的包结构设计,有助于在团队协作开发中,快速定位和理解代码的功能归属,避免命名冲突,就如同清晰的街道地址能让人迅速找到目的地一样。

2.第一个 Java 项目

当我们开启第一个 Java 项目时,就像踏上一段全新的冒险之旅。

package com.iw.day01;
public class Hellworld{//主函数,为程序员提供一个启动入口public static void main(String[] args){System.out.println("Hello World!");}
}

这段简单的代码,package声明了该类所在的包,就像是给代码安排了一个 “住址”。而public class Hellworld定义了一个公共类,类名是Hellworldmain方法则是 Java 程序的入口,程序从这里开始执行,System.out.println("Hello World!");语句会在控制台输出 “Hello World!”,这是我们向 Java 编程世界发出的第一声问候。

3.Java 注释

注释在代码中扮演着至关重要的角色,它就像是代码中的 “贴心注释员”。

  • 注释的作用:一方面,注释用于解释代码,帮助其他开发者(甚至未来的自己)快速理解代码的意图和功能。另一方面,当我们暂时不想删除某些代码,但又希望它不参与程序运行时,可以将其注释掉,起到废弃代码的作用。
  • 注释的分类
    • 单行注释:使用//,可以在一行代码的末尾或者单独一行对代码进行简短说明。例如//输出:姓名,它能让阅读代码的人一目了然这行代码的目的。在 Java 全栈开发中,前端 JavaScript 代码与后端 Java 代码交互时,单行注释可以清晰标注数据传递的逻辑。快捷键Ctrl + /能快速添加或取消单行注释,极大提高开发效率。
    • 多行注释:用/**/包裹起来,可以对一段代码进行详细解释。比如/* 以下4行代码:做简单的自我介绍 */,适用于注释内容较多的情况。其快捷键为Ctrl + Shift + / 。
    • 文档注释:以/**开头,*/结尾,通常放置在方法上方或类的上方。它的作用是为未来导出代码文档做准备,通过工具可以将这些注释提取出来生成详细的 API 文档,方便团队成员查阅和使用。例如:
public class Introduce {/*** 文档注释:通常放置在 方法上方 & 类的上方* 作用:为未来导出代码文档做准备* @param args*/public static void main(String[] args){//输出:姓名System.out.println("Aphelios");//输出:年龄System.out.println(21);System.out.println("Male");System.out.println("hobbies:music,game,coding");}
}

4.变量:程序中的动态元素

变量的基本概念

变量,简单来说,就是在一定范围内内容可以改变的量。从本质上讲,它是一块可以改变内容的内存空间。在 Java 中,定义变量的语法为数据类型 变量的名称 = 初始值; ,例如int age = 18;,这里int是数据类型,表示整数,age是变量名,18是初始值。=是赋值运算符,它将右边的值赋给左边的变量。在 Java 全栈开发的后端代码中,变量用于存储从数据库查询到的数据、计算过程中的中间结果等;在前端代码中,变量可用于存储用户输入的数据、页面元素的状态等。

public class test01{public static void main(String[] args){//变量语法:  数据类型 变量的名称 = 初始值;//=赋值运算符 作用:将右边的东西 赋值 给左边的变量int age = 18;System.out.println(age);age = 22;System.out.println(age);}
}

变量使用注意事项

  • 初始值的重要性:变量一定要赋初始值,否则在使用时可能会引发编译错误。这就好比我们出门前要确保车子有油,才能顺利行驶。
  • 变量名的唯一性:变量名不能重复,在同一个作用域内,每个变量都要有独一无二的名字,否则程序会混淆,不知道操作的是哪个变量。
  • 作用范围的界定:变量有其作用范围,可分为局部变量和全局变量。局部变量在方法内部定义,作用范围仅限于该方法内;全局变量定义在类中方法外,作用范围是整个类。例如:
public class VariableScope {//全局变量static int globalVar = 10;public static void main(String[] args) {//局部变量int localVar = 20;System.out.println(globalVar);System.out.println(localVar);}
}

5.数组:数据的有序集合

1.数组的定义与特点

数组是一种存储大量相同类型数据的数据结构。它具有以下特点:

  • 数据类型相同:数组中每个元素的数据类型必须一致,比如int[]类型的数组只能存储整数。
  • 存储空间连续:数组在内存中的存储空间是连续的,这使得数据的访问和处理效率较高。
  • 数组长度固定:一旦数组被创建,其长度就固定下来,不能随意改变。
    数组的定义方式有两种:

//方式一:指定数组长度
数据类型[] 变量名称 = new 数据类型[数组的长度]; 
//方式二:直接初始化数据
数据类型[] 变量名称 = {初始数据}; 

例如:

public class Test01 { public static void main(String[] args) { int[] arrs = new int[6]; //数组操作方式:采用下标 arrs[0] = 11; arrs[1] = 23; arrs[2] = 22; arrs[5] = 45; /*打印整个数组,需导入java.util.Arrays包*/System.out.println(Arrays.toString(arrs)); /*打印特定位置的值:*/ System.out.println(arrs[0]); System.out.println(arrs[1]); } 
}
public class Test02 { public static void main(String[] args) { int[] arrs = {11,23,12,22,14};//更推荐 System.out.println(Arrays.toString(arrs)); arrs[2] = 50; System.out.println(Arrays.toString(arrs)); } 
} 

2.数组的遍历与应用

当数组元素个数较多时,我们需要通过循环遍历的方式来访问每一个元素。在 Java 全栈开发中,后端从数据库获取的数据集可能以数组形式存储,通过遍历数组可以对数据进行处理,然后传递给前端展示。

public static void main(String[] args) { int[] arrs = {11,22,23,12,32,44,55}; //获得数组长度 int length = arrs.length; //遍历整个数组 for (int i = 0; i < length; i ++){ System.out.println(arrs[i]); } 
}

6.循环:程序的 “重复执行者”

循环的作用是让程序周而复始地做相同的事情。在 Java 编程中,循环是控制程序流程的重要手段,在 Java 全栈开发中广泛应用于数据处理、页面渲染等环节。

1.for 循环的使用

for循环的语法为for(初始变量; 循环判断条件; 控制变量的改变){ //循环体 }。例如,使用for循环打印输出 0 - 100 的数:

for(int i = 0; i <= 100; i++){System.out.println(i);
}

2.用循环遍历数组

通过for循环可以方便地遍历数组,例如:

public static void main(String[] args) { int[] arrs = {11,22,23,12,32,44,55}; int length = arrs.length; for (int i = 0; i < length; i ++){ System.out.println(arrs[i]); } 
}

练习题:对于int[] arrs = {44,54,43,23,11};,使用循环遍历该数组。

7.数据筛选与处理

1.筛选数据

后端程序员的重要工作之一就是捣腾数据,if语句在数据筛选中起着关键作用。例如,从数组中筛选出偶数:

public class Test04 { public static void main(String[] args) { int[] arrs = {44,54,43,23,11,34,33}; int length = arrs.length; for (int i = 0; i < length; i ++){ //偶数:余2 == 0 if(arrs[i] % 2 == 0){ System.out.println("偶数:" + arrs[i]); } } } 
} 

练习题:

  1. 找出数组中的奇数。
  2. 找出数组中大于 30 的数。

2.数据统计

在实际开发中,我们常常需要对数据进行统计。比如统计数组中有多少个负数:

public static void main(String[] args) { int[] arrs = {44,54,-43,-23,11,-34,33}; int count = 0;//计数器 for(int i = 0; i < arrs.length; i++){ //判断:是否是负数 if(arrs[i]<0) { count++; } }//遍历结束:给出结果 System.out.println(count); 
}

3.数据最值

寻找数组中的最大值和最小值也是常见的需求。例如,寻找数组中的最小值:

public static void main(String[] args) { int[] arrs = {44,54,-43,-23,11,-34,33}; int min = arrs[0]; /*开始遍历,判断*/ for (int i = 0 ; i < arrs.length; i ++){ if(min > arrs[i]){ min = arrs[i]; } }//遍历结束 System.out.println("最小数:" + min); 
}

4.逻辑运算

逻辑运算符&&(逻辑与)、||(逻辑或)、!(逻辑非)在 Java 编程中用于组合条件判断。

  • 逻辑与(&&):条件必须全部满足,且自带短路效果。例如,找男朋友的条件:首先是个男的,身高 1.8m ,学历本科以上,有车有房,这几个条件必须同时满足才为true
  • 逻辑或(||):条件任意满足,也自带短路效果。
    例如,从数组{11,30,23,22,50,33,45,48}中找出既能被 2 整除,又能被 5 整除的数:
public static void main(String[] args) { int[] arrs = {11,30,23,22,50,33,45,48}; //找出既能被2整除,又能被5整除的数 for (int i = 0; i < arrs.length; i ++){ if(arrs[i] % 2 == 0 && arrs[i] % 5 == 0 ){ System.out.println(arrs[i]); } } 
}

练习题:

  1. 从数组{11,30,23,22,50,33,45,48}中找出既能被 2 整除,或能被 5 整除的数。
  2. 从数组{11,30,23,22,50,33,45,48}中找出既不能被 2 整除,又不能被 5 整除的数 。

8.未来企业工作小技巧

  • 代码规范遵循:在企业中,遵循统一的代码规范至关重要。阿里巴巴的 Java 开发手册是很好的参考,它涵盖了命名规范、代码结构、异常处理等多方面内容,能让团队协作开发更加顺畅,减少沟通成本。例如,类名使用大驼峰命名法,方法名使用小驼峰命名法等。
  • 版本控制工具使用:学会使用 Git 进行版本控制。在 Java 全栈项目开发中,无论是前端代码还是后端代码,通过 Git 可以方便地管理代码版本,实现多人协作开发。例如,创建不同的分支进行功能开发,定期将代码合并到主分支等操作。
  • 日志记录与调试:在开发过程中,合理使用日志记录工具(如 Log4j)。在遇到问题时,详细的日志信息能帮助快速定位和解决问题。比如在后端服务器出现错误时,通过查看日志可以了解错误发生的时间、位置以及相关变量的值,提高调试效率。

随着对这些基础概念的深入理解和不断实践,我们在 Java 编程的道路上又迈出了坚实的一步。持续学习,不断探索,相信在未来的 Java 全栈开发工作中,这些知识将成为我们攻克难题、创造价值的有力武器。

相关文章:

Java 学习记录:基础到进阶之路(一)

今天&#xff0c;让我们深入到 Java 项目构建、基础语法及核心编程概念的领域&#xff0c;一探究竟。 软件安装及环境配置请查看之前更新的博客有着详细的介绍&#xff1a; IDEA软件安装&环境配置&中文插件-CSDN博客 目录 1.Java 项目构建基础 1.项目中的 SRC 目录…...

3.3-3.9 蓝桥杯备赛周记

斜率关系 14届省赛 ![[Pasted image 20250205145241.png]] NE555频率解算温度 频率范围外 无效 unsigned int Freq; if(Freq<200) {humnity0;} else if(Freq>2000) {humnity0;} else{ humnity80.0/1800.0 *(float)(Freq-200)10.0;} 斜率计算题 需要类型转换 和数据需要…...

系统架构设计师—系统架构设计篇—软件架构风格

文章目录 概述经典体系结构风格数据流风格批处理管道过滤器对比 调用/返回风格主程序/子程序面向对象架构风格层次架构风格 独立构件风格进程通信事件驱动的系统 虚拟机风格解释器基于规则的系统 仓库风格&#xff08;数据共享风格&#xff09;数据库系统黑板系统超文本系统 闭…...

工厂模式加策略模式 -- 具体实现

这里写目录标题 定义接口定义抽象类定义主处理器分支处理器定义工厂demo 定义接口 public interface EntityHandler extends InitializingBean {MatchContentDTO match(MatchEntityDTO matchEntityDTO);String supportEntityType(); }定义抽象类 public abstract class Abstr…...

STM32---FreeRTOS消息队列

一、简介 1、队列简介&#xff1a; 队列&#xff1a;是任务到任务&#xff0c;任务到中断、中断到任务数据交流的一种机制&#xff08;消息传递&#xff09;。 FreeRTOS基于队列&#xff0c;实现了多种功能&#xff0c;其中包括队列集、互斥信号量、计数型信号量、二值信号量…...

python-leetcode-删掉一个元素以后全为 1 的最长子数组

1493. 删掉一个元素以后全为 1 的最长子数组 - 力扣(LeetCode) 可以使用滑动窗口的方式来解决这个问题。我们要找到最长的全 1 子数组,但必须删除一个元素,因此可以将问题转化为寻找最多包含一个 0 的最长子数组。 解题思路 使用双指针(滑动窗口),维护窗口内最多包含一…...

【赵渝强老师】PostgreSQL的模板数据库

在PostgreSQL中&#xff0c;创建数据库时实际上通过拷贝一个已有数据库进行工作的。在默认情况下&#xff0c;将拷贝名为template1的标准系统数据库。所以该数据库是创建新数据库的“模板”。如果为template1数据库增加对象&#xff0c;这些对象将被拷贝到后续创建的用户数据库…...

vue2中,在table单元格上右键,对行、列的增删操作(模拟wps里的表格交互)

HTML <template><div><divclass"editable-area"v-html"htmlContent"contenteditableblur"handleBlur"contextmenu.prevent"showContextMenu"></div><button click"transformToMd">点击转成M…...

使用DeepSeek+蓝耘快速设计网页简易版《我的世界》小游戏

前言&#xff1a;如今&#xff0c;借助先进的人工智能模型与便捷的云平台&#xff0c;即便是新手开发者&#xff0c;也能开启创意游戏的设计之旅。DeepSeek 作为前沿的人工智能模型&#xff0c;具备强大的功能与潜力&#xff0c;而蓝耘智算云平台则为其提供了稳定高效的运行环境…...

解决微信小程序中调用流式接口,处理二进制数据时 TextDecoder 不兼容的问题

问题复现 最近在开发一个 AI 问答小程序时&#xff0c;由于接口返回的是流式二进制数据&#xff0c;因此我使用了 TextDecoder 的 decode 方法将二进制数据转换为文本。在开发环境中&#xff0c;数据处理一直没有问题&#xff0c;但在真机测试及上线后&#xff0c;发现调用接口…...

DeepSeek与QWQ大模型对比

题目为《deepseek和qwq大模型对比》1000字 DeepSeek与QWQ大模型对比 引言 在人工智能领域&#xff0c;大模型的发展日新月异。DeepSeek和QWQ作为两种具有代表性的大模型&#xff0c;各自在技术架构、应用场景和性能表现上展现出独特优势。本文将从多个维度对这两种模型进行详细…...

Java 大视界 -- Java 大数据在智慧农业农产品质量追溯与品牌建设中的应用(124)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

c++介绍信号六

信号量是c中实现对有限资源访问控制&#xff0c;现成通过信号量获得对资源访问的许可。可用资源大于0&#xff0c;线程可以对资源进行访问&#xff0c;此时计数器减1。当计数器为0时&#xff0c;不可访问资源&#xff0c;线程进入等待。当资源释放时&#xff0c;线程结束等待&a…...

DeepSeek 本地部署全流程指南:畅享专属AI体验

DeepSeek本地部署全流程指南&#xff1a;畅享专属AI体验 一、部署优势剖析 在本地部署DeepSeek大模型&#xff0c;能带来诸多好处。一方面&#xff0c;数据隐私更有保障&#xff0c;所有运算都在本地独立完成&#xff0c;无需联网&#xff0c;有效避免了数据泄露的风险。另一…...

GStreamer —— 2.18、Windows下Qt加载GStreamer库后运行 - “播放教程 6:音频可视化“(附:完整源码)

运行效果 介绍 GStreamer 带有一组将音频转换为视频的元素。他们 可用于科学可视化或为您的音乐增添趣味 player 的本教程展示了&#xff1a; • 如何启用音频可视化 • 如何选择可视化元素 启用音频可视化实际上非常简单。设置相应的标志&#xff0c;当纯音频流为 found&#…...

IP 地址与端口号:网络通信的双重坐标解析

IP 地址与端口号&#xff1a;网络通信的双重坐标解析 在互联网广袤无垠的世界里&#xff0c;数据恰似无数灵动的信息精灵&#xff0c;在复杂的网络脉络中穿梭往来。而确保这些数据能够精准无误地抵达目的地的关键&#xff0c;便是两个至关重要的核心标识符&#xff1a;IP 地址…...

用Deepseek写一个 HTML 和 JavaScript 实现一个简单的飞机游戏

大家好&#xff01;今天我将分享如何使用 HTML 和 JavaScript 编写一个简单的飞机游戏。这个游戏的核心功能包括&#xff1a;控制飞机移动、发射子弹、敌机生成、碰撞检测和得分统计。代码简洁易懂&#xff0c;适合初学者学习和实践。 游戏功能概述 玩家控制&#xff1a;使用键…...

【从零开始学习计算机科学】操作系统(三)进程的互斥、同步与通信

【从零开始学习计算机科学】操作系统(三)进程的互斥、同步与通信 进程的互斥、同步与通信进程的互斥进程的同步进程的通信进程的互斥、同步与通信 进程的互斥 两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称…...

Android Compose MutableInteractionSource介绍

在 Android 开发中&#xff0c;Compose 是 Google 推出的现代化 UI 工具包&#xff0c;它让开发者能够更简洁高效地构建应用界面。而 MutableInteractionSource 是 Compose 中一个重要的组件&#xff0c;它可以帮助你处理用户与界面交互时的状态变化&#xff0c;尤其在处理交互…...

[杂学笔记] TCP和UDP的区别,对http接口解释 , Cookie和Session的区别 ,http和https的区别 , 智能指针 ,断点续传

文章目录 1. TCP和UDP的区别2. 对http接口解释3. Cookie和Session的区别4. http和https的区别5. 智能指针6.断点续传 1. TCP和UDP的区别 tcp的特点&#xff1a; 面向连接&#xff0c;可靠性高&#xff0c;全双工&#xff0c;面向字节流udp特点&#xff1a;无连接&#xff0c;不…...

Ubuntu 源码安装 Qt5

1.开发背景 Ubuntu 下安装指定版本的 Qt&#xff0c;最新的Qt官方已经不支持 Qt5.15.2 版本以下版本&#xff0c;所以有必要用旧的源码编译 Qt 库。 2.开发需求 源码安装 Qt5.12.2 3.开发环境 开发环境&#xff1a;Ubuntu18.04 目标版本&#xff1a;Qt5.12.2 4.实现步骤 4…...

【NLP 29、项目 Ⅰ:电商评论分类(好评 / 差评) 】

目录 项目介绍 一、训练及测试数据 二、代码实现 1.配置文件 config.py 2.分割训练集和验证集 split_train_valid.py 3.数据加载文件 loader.py Ⅰ、 加载和处理数据 DataGenerator ① 初始化 ② 数据加载 ③ 文本编码 ④ 补齐 / 截断 ⑤ 获取数据集长度和指定索引的数据 Ⅱ、加…...

Linux进程基础知识

1. 什么是进程&#xff1f; 进程就是运行中的程序&#xff0c;是系统资源分配的基本单位 每个进程都有唯一的PID&#xff08;进程ID&#xff09; 进程有父子关系&#xff0c;通过ps -ef可以查看 2. 进程的创建 - fork() pid_t pid fork(); - 简单理解&#xff1a;fork()…...

halcon deeplearn 语义分割经验分享 1

本人因为公司遗留问题,为了解决识别错误的问题。尝试过yolo12进行目标检测。初步测试良好但是是halcon的socket通信不行。故而去测试halcon 的deeplearn。自己标注数据。 注: 这个软件使用非常无脑。推荐没有基础的人去用 语义分割 以下是halcon的调用模型 *读取模型 read_dl_…...

从零开始的python学习(五)P75+P76+P77+P78+P79+P80

本文章记录观看B站python教程学习笔记和实践感悟&#xff0c;视频链接&#xff1a;【花了2万多买的Python教程全套&#xff0c;现在分享给大家&#xff0c;入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…...

Kylin麒麟操作系统服务部署 | ISCSI存储服务

以下所使用的环境为&#xff1a; 虚拟化软件&#xff1a;VMware Workstation 17 Pro 麒麟系统版本&#xff1a;Kylin-Server-V10-SP3-2403-Release-20240426-x86_64 一、网络存储结构 网络存储技术&#xff08;Network Storage Technologies&#xff09;是基于数据存储的一种通…...

数据结构_单链表

今天我们要开启链表的学习 &#x1f58b;️&#x1f58b;️&#x1f58b;️ 学了顺序表我们可以知道&#xff1a; &#x1f388;链表其实就是争对顺序表的缺点来设计的&#xff0c;补足的就是顺序表的缺点 &#x1f388;链表在物理上是上一个节点存放的下一个节点的地址 链表 …...

深陷帕金森困境,怎样重燃生活信心?

帕金森&#xff0c;这个悄然影响无数中老年人生活的神经系统疾病&#xff0c;正逐渐走进大众视野。患病后&#xff0c;患者常出现静止性震颤&#xff0c;安静时手部、下肢不自主抖动&#xff0c;如同在默默诉说着身体的异常。肢体变得僵硬&#xff0c;行动迟缓&#xff0c;起步…...

C语言(23)

字符串函数 11.strstr函数 1.1函数介绍&#xff1a; 头文件&#xff1a;string.h char *strstr ( const char * str1,const char *str2); 作用&#xff1a;在一个字符串&#xff08;str1&#xff09;中寻找另外一个字符串&#xff08;str2&#xff09;是否出现过 如果找到…...

Docker运行hello-world镜像失败或超时:Unable to find image ‘hello-world:latest‘ locally Trying to pull reposi

Docker运行hello-world镜像失败或超时&#xff0c;报错&#xff1a;Unable to find image ‘hello-world:latest’ locally Trying to pull repository docker.io/library/hello-world … /usr/bin/docker-current: missing signature key. See ‘/usr/bin/docker-current run …...