- 时间复杂度分为几种
青云游子
算法算法排序算法数据结构
按照快到慢排序O(1)O(logN)O(N)O(NlogN)O(N^2)例子O(1)hashsethashmap数组下标O(logN)折半查找树形遍历O(N)list查询值数组查询值O(NlogN)进阶排序快排堆排归并O(N^2)简单排序冒泡插入选择ChatGPT时间复杂度是衡量算法执行时间随输入规模增长而变化的度量。它用大O符号表示,表示算法执行时间的增长率。在算法分析中,常见的时间复杂度有以下
- Linux中yum问题
xin-zfyyz
linux运维服务器
出现错误Loadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfileCouldnotretrievemirrorlisthttp://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stockerrorwas14:curl#6-"Couldnotresolveh
- Python subprocess.run 使用注意事项,避免出现list index out of range
Jasper张
iOSUI自动化Appiumpythonpytestpythoniosui自动化
在执行iOSUI自动化专项测试的时候,在运行第一遍的时候遇到了这样的错误:2024-12-0420:22:27ERRORconftestpytest_runtest_makereport106Testtest_open_stream.py::TestOpenStream::test_xxx_open_stream[iPhoneX-xxx-1-250]failedwitherror:listinde
- 使用分库分表技术,解决了亿级订单数据存储问题?思维导图 代码示例(java 架构)
用心去追梦
java架构开发语言
分库分表技术是解决大规模数据存储问题的一种常见策略,特别是在处理亿级订单数据时。通过将数据分散到多个数据库和表中,可以有效地提高系统的可扩展性和性能。以下是一个思维导图结构,以及一个简化的Java架构代码示例,展示了如何使用分库分表技术来管理亿级订单数据。思维导图结构分库分表解决方案设计原则数据分布算法哈希取模(HashModulo)范围划分(RangePartitioning)列表划分(List
- react-quill报错Listener added for a ‘DOMNodeInserted‘ mutation event.Support for this event type has..
lryh_
插件react.js前端
1、删除node_modules和package-lock.json2、重装依赖npmi3、找到node_modules中quill==》dist==》quill.js文件中修改代码//_this.domNode.addEventListener('DOMNodeInserted',function(){});newMutationObserver(()=>{}).observe(_this.do
- 创建一个CMake项目
ke_wu
linuxc++c语言开发语言后端unix
本文将演示如何使用CMake管理一个中等复杂度的项目,从创建项目到编译和运行的整个过程,涵盖了从基本配置到高级特性的实际应用。实战内容如下:创建CMakeLists.txt文件:定义项目、库、可执行文件和测试。编写源代码和测试:编写代码和测试文件。创建构建目录:保持源代码目录整洁。配置项目:生成构建系统文件。编译项目:生成目标文件。运行可执行文件:执行程序。运行测试:验证功能正确性。使用自定义命令
- Java集合中List,Set以及Map等集合体系详解
菜头丸
学习笔记ListSetMapJava菜头丸
参见文章https://blog.csdn.net/zhangqunshuai/article/details/80660974
- java中如何在集合遍历过程中删除元素(5种方法对比、案例、常见的错误及其后果)
小胡说技书
Java+SSM+DBjavaList开发语言
文章目录一、问题背景二、不同解决方案的对比1.使用`Iterator.remove()`2.`for-each`+手动删除3.`for`循环反向遍历4.`List.removeIf()`(Java8+)5.使用`Stream.filter()`(Java8+)三、常见的错误及其后果四、通过案例展示具体应用案例:删除列表中的偶数五、总结与补充在Java开发中,集合遍历过程中删除元素是一个常见但容易出
- vscode项目依赖问题
.弗兰克
vscode
必读一定要将前端下拉的项目备份一下,很容易运行导致依赖报错,重新下载命令使用幽灵分解器安装pnpminstall替代npminstall设置淘宝NPM镜像源yarnconfigsetregistryhttps://registry.npmmirror.com查看目前依赖包的版本npmlist@ant-design/icons-angular查看有哪些版本npmview@ant-design/ico
- 【纯血鸿蒙】hdc常用命令汇总
新时代农民工007
HarmonyOSNEXTharmonyos华为
1.查看工具版本hdc-v输出版本号,证明可以用了2.查看当前连接设备查看当前连接所有设备,-v显示详情hdclisttargetshdclisttargets-vhdc-t设备shellhdc-t7001005458323933328a250f004e3900shell3.安装指定的应用package文件hdcinstall[happath]交互命令hdcinstallpackageFileWi
- HarmonyOS ArkUi Tabs+TabContent+List实现tab吸顶功能
Join下班了吗
harmonyos
Demo效果@Entry@ComponentstructStickyNestedScroll{@Statemessage:string='HelloWorld'@Statearr:number[]=[]scroller=newScroller()@StyleslistCard(){.backgroundColor(Color.White).height(72).width("100%").bord
- Python+Vue计算机毕业设计新新中草药管理系统06s87(源码+程序+LW+部署)
永毅科技
课程设计
该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程项目运行环境配置:Python3.7.7+Django+Mysql5.7+piplist+HBuilderX(Vscode也行)+Vue+Pychram社区版。项目技术:Django+Vue+Python+Mysql等等组成,B/S模式等等。环境需要1.运行环境:最好是安装Python3.7.7,我们在这个平台上运行的。其他版本理论上也
- 力扣——搜索二维矩阵(python)
朗朗乾坤.py
力扣刷题leetcode矩阵算法
##题目##解析解法一:直接把二维列表变为一维列表,然后遍历进行比较解法二:将二位列表使用二分查找来加快效率“01234567891011”i=num//4j=num%4;不太稳定不建议使用##代码解法一classSolution(object):defsearchMatrix(self,matrix,target):""":typematrix:List[List[int]]:typetarge
- CMake找不到Boost?
catxl313
c++开发语言1024程序员节
背景说明版本:cmake3.24.2/boost1.80.0环境:win11问题描述在CMakeList.txt中设置SET(BOOST_ROOT${CMAKE_SOURCE_DIR}/ext/boost})find_package(BoostREQUIREDCOMPONENTSthread)后报错CouldNOTfindBoost(missing:Boost_INCLUDE_DIRthread)
- python中zip函数的琐记
weixin_33719619
python
定义:zip([iterable,...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将listunzip(解压),看下面的例子就明白了:>>>a=[1,2,3]>>>b=[4,
- 算法之图论
专业刷题Pia
算法图论
连接图有向图问题无向图问题无向图最短路径127.单词接龙-力扣(LeetCode)分析:对于无向图最短路径问题,建议使用BFS(对点的扩展关联(扩散迭代方式))。同时由于无向性注意建立查找集合Visit(防止进入循环)。建立uset方便查找。建立umap方便查重并记录。思路:uset记录所有wordlist中的word,通过bfs获得满足条件(uset找到,umap未出现)的点,并在umap记录(
- list底层详解
啊QQQQQ
C++liststl
目录介绍list的实现1.自定义节点2.迭代器封装构造函数前置++和后置++前置--和后置--*操作符和->操作符==和!=操作符iterator和const_iterator3.list类构造函数和析构函数=赋值操作头尾迭代器插入和删除头插头删尾插尾删list接口函数总代码介绍1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2.list的底层是双向
- 【python】zip()函数介绍
叶阿猪
pythonpython开发语言
一、说明zip是Python中一个非常实用的内置函数,用于将可迭代的对象(如列表、元组、字典等)作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象(注意,返回的其实是一个迭代器)。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。二、zip函数的基本用法示例1:两个列表list1=[1,2,3]list2=['a','b','c']zipped=zip(lis
- python列表
[禾火]
链表数据结构散列表
目录1.列表(list(线性表))2.定义一个列表1.直接用2.用list()3.常见的方法1.append(object)-------向列表尾部追加元素2.insert(index,object)-----向指定位置(index)添加元素3.sort()-----列表进行排序4.index()-------查找元素的位置5.reverse()------将列表进行翻转6.remove()---
- Java中的Lambda表达式:让代码更“性感”
莫非技术栈
javajava开发语言
Java中的Lambda表达式:让代码更“性感”1.引言:代码的“颜值”很重要作为一名程序员,我们不仅要写出功能正确的代码,还要追求代码的“颜值”。毕竟,谁愿意看一堆冗长、复杂的代码呢?比如下面这段代码:Listnames=newArrayList18){names.add(user.getName());}}虽然功能没问题,但看起来就像穿着一件臃肿的羽绒服,毫无美感。幸运的是,Java8引入了L
- ubuntu命令“sudo apt-get install”无法定位软件包?
__Benco
Linuxlinux
解决ubuntu命令“sudoapt-getinstall”无法定位软件包的问题:1、添加镜像源,修改软件源列表:sudovim/etc/apt/sources.list#阿里云源地址debhttp://mirrors.aliyun.com/ubuntu/bionicmainrestricteduniversemultiversedebhttp://mirrors.aliyun.com/ubunt
- Python列表
柠檬不甜也不嫌
Python列表
Python列表列表拼接添加元素追加序列的值删除元素反向输出统计次数列表排序序列是Python中最基本的数据结构。序列中的每一个元素都分配一个数字,它的位置,或索引,索引从0开始。Python有6个序列的内置类型,最常见的是列表和元组,序列可以进行的操作包括:索引,切片,加,乘,检查成员。列表通过索引获取列表[索引]定义一个空列表:list=[]定义一个有5个元素的列表:list=[1,2,3,4
- Java中的高效集合操作:Stream API实战指南
莫非技术栈
javajava开发语言
Java中的高效集合操作:StreamAPI实战指南1.引言:集合操作的痛点在日常开发中,我们经常需要对集合进行各种操作,比如过滤、映射、排序、聚合等。传统的做法是使用for循环或Iterator,代码冗长且容易出错。比如:Listnames=newArrayList18){names.add(user.getName().toUpperCase());}}这样的代码不仅难以维护,还容易引入bug
- Rust 强制类型转换和动态指针类型的转换
Uncomfortableskiy
Rustrust开发语言
在Rust中的强制类型转换(Coercion)语义,与Java或C++中的子类到父类的转换有某些相似之处,但两者的实现机制和使用场景有很大的区别。我们将从Java/C++的子类到父类转换和Rust的强制类型转换的角度进行比较,帮助你更好地理解它们的异同。1.Java和C++中子类到父类的转换在Java和C++中,子类到父类的转换是继承关系的直接结果。Java示例classParent{public
- ubuntu20:04快速安装docker教程
与君相识
dockerdocker容器运维ubuntu
1.使用国内镜像替代官方源先删除可能已有的apt官方源:sudorm-f/etc/apt/sources.list.d/docker.list然后配置国内源(以阿里云为例):aptinstallcurlsudomkdir-p/etc/apt/keyringscurl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudogpg-
- aliyun redis lua脚本检测
lmsnice
redislua数据库
aliyun-redis:ERRbadluascriptforrediscluster,redis.call/pcall问题描述问题产生原因解决方法:官方文档问题描述使用redissonClient.getBucket(key).expire(expire,timeUnit);设置redis的某个key值的过期时间。发生报错如下:[ErrorEvent]Listentothe[HapiErrorE
- 代码随想录 Day 8 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字
Accept17
算法
一、344.反转字符串建议:本题是字符串基础题目,就是考察reverse函数的实现,同时也明确一下平时刷题什么时候用库函数,什么时候不用库函数题目链接/文章讲解/视频讲解:代码随想录1.看到这道题的第一想法因为题目要求时间复杂度为O(1),不可以另外申请空间,所以直接调用reverse()函数。已AC的代码如下:classSolution:defreverseString(self,s:List[
- C# List Contains判断引用对象
Daniel的万事通杂货铺
c#listwindows
在C#中,List.Contains方法用于确定列表是否包含特定元素。对于引用类型的对象(如自定义类的实例),默认情况下Contains使用的是对象引用的比较,而不是对象内容的比较。这意味着,如果你有多个对象,即使它们的内容完全相同,但它们是不同的实例(即有不同的引用),那么Contains将不会认为它们相等。例如:Csharp深色版本publicclassPerson{publicstringN
- 2024最新「阿里」Java高级工程师面试高频题:JVM+Redis+并发+算法+框架
2401_89285777
java面试jvm
Java集合22题ArrayList和Vector的区别。说说ArrayList,Vector,LinkedList的存储性能和特性。快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?hashmap的数据结构。HashMap的工作原理是什么?Hashmap什么时候进行扩容呢?List、Map、Set三个接口,存取元素时,各有什么特点?Set里的元素是不能重复的,那么用什么
- Java练习
5xidixi
java算法开发语言
1.给定两个整数数组nums1,nums2,找到它们的公共元素并返回。将其中一个数组放入哈希表中,再遍历另一个数组进行判断即可。可以通过布尔数组来实现一个哈希集合,在遍历nums1时,对于每个x,将hash[x]设为true。之后再对nums2进行遍历,对于nums2中的x,在hash[x]中进行对比,如果为真,将x存入结果中。publicclassSolution{publicArrayList
- 关于旗正规则引擎下载页面需要弹窗保存到本地目录的问题
何必如此
jsp超链接文件下载窗口
生成下载页面是需要选择“录入提交页面”,生成之后默认的下载页面<a>标签超链接为:<a href="<%=root_stimage%>stimage/image.jsp?filename=<%=strfile234%>&attachname=<%=java.net.URLEncoder.encode(file234filesourc
- 【Spark九十八】Standalone Cluster Mode下的资源调度源代码分析
bit1129
cluster
在分析源代码之前,首先对Standalone Cluster Mode的资源调度有一个基本的认识:
首先,运行一个Application需要Driver进程和一组Executor进程。在Standalone Cluster Mode下,Driver和Executor都是在Master的监护下给Worker发消息创建(Driver进程和Executor进程都需要分配内存和CPU,这就需要Maste
- linux上独立安装部署spark
daizj
linux安装spark1.4部署
下面讲一下linux上安装spark,以 Standalone Mode 安装
1)首先安装JDK
下载JDK:jdk-7u79-linux-x64.tar.gz ,版本是1.7以上都行,解压 tar -zxvf jdk-7u79-linux-x64.tar.gz
然后配置 ~/.bashrc&nb
- Java 字节码之解析一
周凡杨
java字节码javap
一: Java 字节代码的组织形式
类文件 {
OxCAFEBABE ,小版本号,大版本号,常量池大小,常量池数组,访问控制标记,当前类信息,父类信息,实现的接口个数,实现的接口信息数组,域个数,域信息数组,方法个数,方法信息数组,属性个数,属性信息数组
}
&nbs
- java各种小工具代码
g21121
java
1.数组转换成List
import java.util.Arrays;
Arrays.asList(Object[] obj); 2.判断一个String型是否有值
import org.springframework.util.StringUtils;
if (StringUtils.hasText(str)) 3.判断一个List是否有值
import org.spring
- 加快FineReport报表设计的几个心得体会
老A不折腾
finereport
一、从远程服务器大批量取数进行表样设计时,最好按“列顺序”取一个“空的SQL语句”,这样可提高设计速度。否则每次设计时模板均要从远程读取数据,速度相当慢!!
二、找一个富文本编辑软件(如NOTEPAD+)编辑SQL语句,这样会很好地检查语法。有时候带参数较多检查语法复杂时,结合FineReport中生成的日志,再找一个第三方数据库访问软件(如PL/SQL)进行数据检索,可以很快定位语法错误。
- mysql linux启动与停止
墙头上一根草
如何启动/停止/重启MySQL一、启动方式1、使用 service 启动:service mysqld start2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start3、使用 safe_mysqld 启动:safe_mysqld&二、停止1、使用 service 启动:service mysqld stop2、使用 mysqld 脚本启动:/etc/inin
- Spring中事务管理浅谈
aijuans
spring事务管理
Spring中事务管理浅谈
By Tony Jiang@2012-1-20 Spring中对事务的声明式管理
拿一个XML举例
[html]
view plain
copy
print
?
<?xml version="1.0" encoding="UTF-8"?>&nb
- php中隐形字符65279(utf-8的BOM头)问题
alxw4616
php中隐形字符65279(utf-8的BOM头)问题
今天遇到一个问题. php输出JSON 前端在解析时发生问题:parsererror.
调试:
1.仔细对比字符串发现字符串拼写正确.怀疑是 非打印字符的问题.
2.逐一将字符串还原为unicode编码. 发现在字符串头的位置出现了一个 65279的非打印字符.
 
- 调用对象是否需要传递对象(初学者一定要注意这个问题)
百合不是茶
对象的传递与调用技巧
类和对象的简单的复习,在做项目的过程中有时候不知道怎样来调用类创建的对象,简单的几个类可以看清楚,一般在项目中创建十几个类往往就不知道怎么来看
为了以后能够看清楚,现在来回顾一下类和对象的创建,对象的调用和传递(前面写过一篇)
类和对象的基础概念:
JAVA中万事万物都是类 类有字段(属性),方法,嵌套类和嵌套接
- JDK1.5 AtomicLong实例
bijian1013
javathreadjava多线程AtomicLong
JDK1.5 AtomicLong实例
类 AtomicLong
可以用原子方式更新的 long 值。有关原子变量属性的描述,请参阅 java.util.concurrent.atomic 包规范。AtomicLong 可用在应用程序中(如以原子方式增加的序列号),并且不能用于替换 Long。但是,此类确实扩展了 Number,允许那些处理基于数字类的工具和实用工具进行统一访问。
 
- 自定义的RPC的Java实现
bijian1013
javarpc
网上看到纯java实现的RPC,很不错。
RPC的全名Remote Process Call,即远程过程调用。使用RPC,可以像使用本地的程序一样使用远程服务器上的程序。下面是一个简单的RPC 调用实例,从中可以看到RPC如何
- 【RPC框架Hessian一】Hessian RPC Hello World
bit1129
Hello world
什么是Hessian
The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary p
- 【Spark九十五】Spark Shell操作Spark SQL
bit1129
shell
在Spark Shell上,通过创建HiveContext可以直接进行Hive操作
1. 操作Hive中已存在的表
[hadoop@hadoop bin]$ ./spark-shell
Spark assembly has been built with Hive, including Datanucleus jars on classpath
Welcom
- F5 往header加入客户端的ip
ronin47
when HTTP_RESPONSE {if {[HTTP::is_redirect]}{ HTTP::header replace Location [string map {:port/ /} [HTTP::header value Location]]HTTP::header replace Lo
- java-61-在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差. 求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5,
bylijinnan
java
思路来自:
http://zhedahht.blog.163.com/blog/static/2541117420116135376632/
写了个java版的
public class GreatestLeftRightDiff {
/**
* Q61.在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差。
* 求所有数对之差的最大值。例如在数组
- mongoDB 索引
开窍的石头
mongoDB索引
在这一节中我们讲讲在mongo中如何创建索引
得到当前查询的索引信息
db.user.find(_id:12).explain();
cursor: basicCoursor 指的是没有索引
&
- [硬件和系统]迎峰度夏
comsci
系统
从这几天的气温来看,今年夏天的高温天气可能会维持在一个比较长的时间内
所以,从现在开始准备渡过炎热的夏天。。。。
每间房屋要有一个落地电风扇,一个空调(空调的功率和房间的面积有密切的关系)
坐的,躺的地方要有凉垫,床上要有凉席
电脑的机箱
- 基于ThinkPHP开发的公司官网
cuiyadll
行业系统
后端基于ThinkPHP,前端基于jQuery和BootstrapCo.MZ 企业系统
轻量级企业网站管理系统
运行环境:PHP5.3+, MySQL5.0
系统预览
系统下载:http://www.tecmz.com
预览地址:http://co.tecmz.com
各种设备自适应
响应式的网站设计能够对用户产生友好度,并且对于
- Transaction and redelivery in JMS (JMS的事务和失败消息重发机制)
darrenzhu
jms事务承认MQacknowledge
JMS Message Delivery Reliability and Acknowledgement Patterns
http://wso2.com/library/articles/2013/01/jms-message-delivery-reliability-acknowledgement-patterns/
Transaction and redelivery in
- Centos添加硬盘完全教程
dcj3sjt126com
linuxcentoshardware
Linux的硬盘识别:
sda 表示第1块SCSI硬盘
hda 表示第1块IDE硬盘
scd0 表示第1个USB光驱
一般使用“fdisk -l”命
- yii2 restful web服务路由
dcj3sjt126com
PHPyii2
路由
随着资源和控制器类准备,您可以使用URL如 http://localhost/index.php?r=user/create访问资源,类似于你可以用正常的Web应用程序做法。
在实践中,你通常要用美观的URL并采取有优势的HTTP动词。 例如,请求POST /users意味着访问user/create动作。 这可以很容易地通过配置urlManager应用程序组件来完成 如下所示
- MongoDB查询(4)——游标和分页[八]
eksliang
mongodbMongoDB游标MongoDB深分页
转载请出自出处:http://eksliang.iteye.com/blog/2177567 一、游标
数据库使用游标返回find的执行结果。客户端对游标的实现通常能够对最终结果进行有效控制,从shell中定义一个游标非常简单,就是将查询结果分配给一个变量(用var声明的变量就是局部变量),便创建了一个游标,如下所示:
> var
- Activity的四种启动模式和onNewIntent()
gundumw100
android
Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。
Android总Activity的启动模式分为四种:
Activity启动模式设置:
<acti
- 攻城狮送女友的CSS3生日蛋糕
ini
htmlWebhtml5csscss3
在线预览:http://keleyi.com/keleyi/phtml/html5/29.htm
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>攻城狮送女友的CSS3生日蛋糕-柯乐义<
- 读源码学Servlet(1)GenericServlet 源码分析
jzinfo
tomcatWebservlet网络应用网络协议
Servlet API的核心就是javax.servlet.Servlet接口,所有的Servlet 类(抽象的或者自己写的)都必须实现这个接口。在Servlet接口中定义了5个方法,其中有3个方法是由Servlet 容器在Servlet的生命周期的不同阶段来调用的特定方法。
先看javax.servlet.servlet接口源码:
package
- JAVA进阶:VO(DTO)与PO(DAO)之间的转换
snoopy7713
javaVOHibernatepo
PO即 Persistence Object VO即 Value Object
VO和PO的主要区别在于: VO是独立的Java Object。 PO是由Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。
实际上,这个VO被用作Data Transfer
- mongodb group by date 聚合查询日期 统计每天数据(信息量)
qiaolevip
每天进步一点点学习永无止境mongodb纵观千象
/* 1 */
{
"_id" : ObjectId("557ac1e2153c43c320393d9d"),
"msgType" : "text",
"sendTime" : ISODate("2015-06-12T11:26:26.000Z")
- java之18天 常用的类(一)
Luob.
MathDateSystemRuntimeRundom
System类
import java.util.Properties;
/**
* System:
* out:标准输出,默认是控制台
* in:标准输入,默认是键盘
*
* 描述系统的一些信息
* 获取系统的属性信息:Properties getProperties();
*
*
*
*/
public class Sy
- maven
wuai
maven
1、安装maven:解压缩、添加M2_HOME、添加环境变量path
2、创建maven_home文件夹,创建项目mvn_ch01,在其下面建立src、pom.xml,在src下面简历main、test、main下面建立java文件夹
3、编写类,在java文件夹下面依照类的包逐层创建文件夹,将此类放入最后一级文件夹
4、进入mvn_ch01
4.1、mvn compile ,执行后会在