- 每日一题——第九十题
互联网打工人no1
C语言程序设计每日一练c语言
题目:判断子串是否与主串匹配#include#include#include//////判断子串是否在主串中匹配//////主串///子串///boolisSubstring(constchar*str,constchar*substr){intlenstr=strlen(str);//计算主串的长度intlenSub=strlen(substr);//计算子串的长度//遍历主字符串,对每个可能得
- 内网穿透之EW使用、判断服务器是否出网
板栗妖怪
学习内网渗透
环境搭建使用的是下面文章的环境记一次学习--内网穿透-CSDN博客ew代理然后同样通过thinkphp漏洞写入文件,然后通过蚁剑连接然后上传ew的Linux版本,然后加权执行一层代理正向代理设置正向代理(在ubuntu上),然后kali在proxychain配置文件中连接ubuntu的192.168.244.154的代理端口反向代理在ubuntu上设置反向代理,将连接反弹到kali上的某个端口。然
- python基于django/flask的NBA球员大数据分析与可视化python+java+node.js
QQ_511008285
pythondjangoflaskjavaspringboot数据分析
前端开发框架:vue.js数据库mysql版本不限后端语言框架支持:1java(SSM/springboot)-idea/eclipse2.Nodejs+Vue.js-vscode3.python(flask/django)--pycharm/vscode4.php(thinkphp/laravel)-hbuilderx数据库工具:Navicat/SQLyog等都可以本文针对NBA球员的大数据进行
- Java基于spring boot的国产电影数据分析与可视化python+java+node.js
QQ_511008285
javaspringboot数据分析pythondjangovue.jsflask
前端开发框架:vue.js数据库mysql版本不限后端语言框架支持:1java(SSM/springboot)-idea/eclipse2.Nodejs+Vue.js-vscode3.python(flask/django)--pycharm/vscode4.php(thinkphp/laravel)-hbuilderx数据库工具:Navicat/SQLyog等都可以 该系统使用进行大数据处理和
- 5. 最长回文子串
杰克尼
LeetCode算法数据结构leetcode
目录一:题目:二:代码:三:结果:一:题目:给你一个字符串s,找到s中最长的回文子串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"提示:1=0&&rres.size()){res=s.substr(l+1,r-l-1);}}};三:结果:
- 2020-05-10
石呈凯
php常用的系统函数字符串函数strlen:获取字符串长度,字节长度substr_count某字符串出现的次数substr:字符串截取,获取字符串(按照字节进行截取)mb_strlenmb_substrstrchr:与substr相似,从指定位置截取一直到最后strrchr(获取文件后缀名):与strchr一样,只是从右边开始查找字符strtolower:所有的字符都小写(针对英文字母)strto
- Thinkphp中where()条件的使用
2401_84875852
程序员服务器java网络
|notin|notin|$map[‘id’]=array(‘notin’,‘1,5,8’);|idnotin(1,5,8)||and(默认)|and|$map[‘id’]=array(array(‘gt’,1),array(‘lt’,10));|(id>1)AND(id3)OR(idwhere(User->where(User−>where(map)->select();相当于sql语句:nam
- MySQL 字符串操作详解和案例示范
J老熊
MySQL实战秘籍mysql数据库运维面试
MySQL字符串操作详解MySQL提供了丰富的字符串操作函数,能够对这些字符串进行截取、定位、替换等操作。本文将详细讲解MySQL中的字符串操作函数,包括SUBSTRING()、SUBSTR()、LEFT()、RIGHT()、LOCATE()、POSITION()、FIND_IN_SET()、ELT()、INSERT()和REPLACE(),并分析它们的区别和用法。一、SUBSTRING()和SU
- 2024牛客暑期多校训练营2 H Instructions Substring
数学收藏家
算法
链接:登录—专业IT笔试面试备考平台_牛客网来源:牛客网题目描述Redstandsatthecoordinate(0,0)(0,0)(0,0)oftheCartesiancoordinatesystem.Shehasastringofinstructions:up,down,left,right(where`right'increasesthex-coordinateby111,and`up'in
- 【ORACLE】substr() 函数
小雨嗒嗒
数据库oracle数据库
在Oracle数据库中,SUBSTR()函数用于从字符串中提取子字符串。这个函数非常灵活,可以根据不同的需求提取字符串的不同部分。函数语法SUBSTR()函数的基本语法如下:SUBSTR(string,start,length)string:要提取子字符串的原始字符串。start:子字符串开始的位置(基于1的索引)。如果start是正数,则表示从字符串的开头开始计算;如果是负数,则表示从字符串的末
- THINKPHP like between 的array用法
kang1919
TP
if($title!=''){$_where['title']=array('LIKE','%'.$title.'%');}if(''!=$url){$_where['url']=array('LIKE','%'.$url.'%');}if(0<$start_time&&$start_time<$end_time){$_where['create_time']=array('between',ar
- 基于ThinkPHP5的旧衣回收小程序——二手交换废物系统的设计与实现
IT实战课堂—x小凡同学
Java毕业设计项目小程序
摘要:随着社会的快速发展和人们生活水平的提高,旧衣物数量迅速增加,传统的旧衣处理方式已难以满足现代社会的需求。为了有效减少资源浪费,提高旧衣物的利用率,本文基于ThinkPHP5框架设计并实现了一款旧衣回收小程序——二手交换废物系统。该系统通过线上平台,实现旧衣物的回收、分类、展示、交换等功能,为用户提供了一种便捷、环保的旧衣处理方式。本文将从系统需求分析、系统设计、系统实现、系统测试与评估等方面
- thinkphp5支持php,如何让swoole完美支持ThinkPHP5呢
坎布里奇大脸猫
thinkphp5支持php
视频教程推荐TP5与workerman实战在线客服首先开启swoole的http服务开启swoole的http服务并设置提供给url访问页面的文件的根目录,代码如下。这样在浏览器只能访问…static下面的文件,而无法访问其他目录下的文件。http.serverset(['enable_static_handler'=>true,'document_root'=>"/usr/local/openr
- ThinkPHP发邮件配置教程?群发功能安全吗?
Aoksend
服务器运维java开发语言sql数据库安全
ThinkPHP发邮件的注意事项?如何优化邮件发送的性能?无论是用户注册、密码重置还是消息提醒,发送邮件都是一个常见的需求。AokSend将详细介绍如何在ThinkPHP框架中配置和发送邮件,帮助开发者轻松实现邮件功能。ThinkPHP发邮件:了解需求在开始配置之前,我们需要明确邮件发送的具体需求。在ThinkPHP发邮件的过程中,常见的需求包括注册验证邮件、密码重置邮件、用户通知邮件等。了解这些
- thinkphp如何使用jwt
Coding Is Fun
php安全web安全
首先安装JWTcomposerrequirefirebase/php-jwt生成token数据准备准备一个需要的用户信息$account=['id'=>'root','password'=>123456];准备一个$payload$payload=["userinfo"=>$account,"exp"=>time()+3600*24//过期时间];不限于以下iss:发行人exp:到期时间sub:主
- 【算法】单词出现次数和位置统计
Chase-Hart
算法算法java开发语言intellij-ideaeclipse
【算法】单词出现次数和位置统计题目描述编写一个程序,用于统计一个给定单词在一段文本中出现的次数以及第一次出现的位置。如果单词在文本中出现,则输出出现次数和第一次出现的位置(位置从0开始计算)。如果单词没有出现,则输出-1。思路分析使用Scanner类从控制台读取两个字符串:要搜索的文本str和要统计的单词substring。定义一个方法countStr,该方法接收两个字符串参数,返回单词在文本中出
- 132. Palindrome Partitioning II (Hard)
Ysgc
Description:Givenastrings,partitionssuchthateverysubstringofthepartitionisapalindrome.Returntheminimumcutsneededforapalindromepartitioningofs.Example:Input:"aab"Output:1Explanation:Thepalindromepartit
- 给出两个字符串,求最长的相同子串的C语言实现
DarthP
c语言c++算法开发语言
下面是求最长公共子串的C语言代码实现:#include#includeintmax(inta,intb){return(a>b)?a:b;}intlongestCommonSubstring(char*s1,char*s2){intm=
- 寻找两个字符串的最长公共子串
乐小琛
算法字符串算法java
题目:给定两个字符串str1和str2,输出两个字符串的最长公共子串[题目保证str1和str2的最长公共子串存在且唯一]。实例:输入"1AB2345CD","12345EF"返回值:"2345"算法思想:本题调用了String类的Substring方法,及设置两个int型变量:start,end。调用Sunstring(start,end)来截取字符串,获得子字符串。若子字符串包含在另一个字符串
- 探索C++编程技巧:计算两个字符串的最长公共子串
清水白石008
C++C++题库面试试题c++代理模式开发语言
探索C++编程技巧:计算两个字符串的最长公共子串在C++面试中,考官通常会关注候选人的编程能力、问题解决能力以及对C++语言特性的理解。一个常见且经典的问题是计算两个字符串的最长公共子串(LongestCommonSubstring,LCS)。本文将详细介绍如何编写一个函数来解决这个问题,并深入探讨相关的编程技巧和优化方法。目录引言问题描述解决思路实现步骤基础实现动态规划优化代码示例复杂度分析总结
- LeetcodeDay15 不定长滑动窗口
比起村村长
leetcode算法python数据结构
模版l=0forrinrange(n):count[r]+=1while(不满足):count[l]-=1l+=13无重复的最长连续子串classSolution:deflengthOfLongestSubstring(self,s:str)->int:count={}res=0n=len(s)l=0forrinrange(n):c=s[r]count[c]=count.get(c,0)+1whi
- 2021-12-20
Sertraline_1560
varurl=location.search;console.log(location);vartheRequest=newObject();if(location.search.indexOf("?")!=-1){varstr=url.substr(1);varstrs=str.split("&");for(vari=0;i{////to即将要访问的页面////from从哪个页面跳转过来的///
- thinkphp6 数据库字段不存在的错误提示
tv002
在开发的过程中,我们经常会调整数据表的字段,于是经常会出现“字段不存在”的错误提示,fieldsnotexists:[status]这个问题是因为数据表调整了,但是thinkphp的表字段缓存还没有更新的原因,解决方法如下:1如果是文件缓存,尝试删除runtime目录下的所有缓存文件周易大学2如果开启redis之类的缓存,thinkphp也会把字段数据存到缓存中,也要清空;3如果问题还不解决,修改
- 【GaussDB】分布式性能分析常用的SQL
俊男无期
gaussdb分布式sql数据库
--查看连接数selectcoorname,usename,application_name,substr(query,1,50)asquery,statefrompgxc_stat_activitywherestate='active'andusename='xxx';selectcoorname,count()frompgxc_stat_activitywhereusename='cbsprd
- Dot Leap 20 中文版
区块链生存指南
原文作者:BrunoŠkvorc原文链接:DotLeap.com订阅链接:dotleap.substack.comSubstrate区块链工具和界面开发教程,访问DotLeap.com(CANAAN注:中文教程可以访问Boka.network)DotLeap上线SubsocialSubsocial是一个基于substrate开发的社交链,功能上整合了Reddit,Twitter,Facebook,
- tp6 购买商品送积分,上级也送积分,签到、推荐都送积分如何实现?
m0_69254007
开发语言php
在ThinkPHP6中实现购买商品送积分、上级也送积分、签到、推荐都送积分的功能,需要涉及后端逻辑处理、数据库设计以及可能的前端交互。以下是一个大致的实现方案:1.数据库设计首先,需要设计几个关键的数据库表来支持这些功能:用户表(users)字段名字段类型字段含义idINT(11)UNSIGNED用户IDusernameVARCHAR(255)用户名integralINT(10)UNSIGNED用
- php二维数组合并成字符串
可乐_加冰_
是咧图foreach($queryas$v){$v=join(",",$v);$temp[]=$v;}$t="";foreach($tempas$v){$t.=$v.";";}$t=substr($t,0,-1);摘自:https://www.jb51.net/article/46887.htm
- substring() 方法
人不风流只为贫
substring()方法返回一个字符串在开始索引到结束索引之间的一个子集,或从开始索引直到字符串的末尾的一个子集。语法·str.substring(indexStart[,indexEnd])·参数indexStart:需要截取的第一个字符的索引,该字符作为返回的字符串的首字母。(就是起始的截取位置)indexEnd:可选。一个0到字符串长度之间的整数,以该数字为索引的字符不包含在截取的字符串内
- ThinkPHP5.1学习--ThinkPHP5.1 入门开启
Cure The World
PHPThinkPHPphpthinkphp后端
一.框架简介ThinkPHP5.1是目前框架正式版的最新版本;ThinkPHP6.0目前是预览版(尚未稳定的测试版),正式版后考虑制作;TP框架是免费开源的、轻量级的、简单快速且敏捷的PHP框架;你可以免费使用TP框架,甚至可以将你的项目商用;ThinkPHP5.1要求PHP版本是5.6+以上(目前最新版本是7.x);我们采用最新7.x来运行TP5.1,而预览版TP6需要7.1+;集成环境这里采用
- thinkPhp 6 从入门到精通(入门篇)
歌齽雪默萧
thinkphp6php后端
众所周知PHP是全世界最好的语言,没有之一(一个php程序员最后的倔强)。thinkPHP6作为主流框架被广泛使用下面教学thinkphp6的安装1.开发tp6之前得把小皮版本调到php7.3.4.nts没有就安装域名可以自己设置,跟目录写自己的,同步到hosts包括composer1.8.5也需要安装,后期多数代码都需要composer创建管理里面倒数第二个就是“composer”2.在控制面板
- Enum 枚举
120153216
enum枚举
原文地址:http://www.cnblogs.com/Kavlez/p/4268601.html Enumeration
于Java 1.5增加的enum type...enum type是由一组固定的常量组成的类型,比如四个季节、扑克花色。在出现enum type之前,通常用一组int常量表示枚举类型。比如这样:
public static final int APPLE_FUJI = 0
- Java8简明教程
bijian1013
javajdk1.8
Java 8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java 8的全新特性。
一.允许在接口中有默认方法实现
Java 8 允许我们使用default关键字,为接口声明添
- Oracle表维护 快速备份删除数据
cuisuqiang
oracle索引快速备份删除
我知道oracle表分区,不过那是数据库设计阶段的事情,目前是远水解不了近渴。
当前的数据库表,要求保留一个月数据,且表存在大量录入更新,不存在程序删除。
为了解决频繁查询和更新的瓶颈,我在oracle内根据需要创建了索引。但是随着数据量的增加,一个半月数据就要超千万,此时就算有索引,对高并发的查询和更新来说,让然有所拖累。
为了解决这个问题,我一般一个月会进行一次数据库维护,主要工作就是备
- java多态内存分析
麦田的设计者
java内存分析多态原理接口和抽象类
“ 时针如果可以回头,熟悉那张脸,重温嬉戏这乐园,墙壁的松脱涂鸦已经褪色才明白存在的价值归于记忆。街角小店尚存在吗?这大时代会不会牵挂,过去现在花开怎么会等待。
但有种意外不管痛不痛都有伤害,光阴远远离开,那笑声徘徊与脑海。但这一秒可笑不再可爱,当天心
- Xshell实现Windows上传文件到Linux主机
被触发
windows
经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下;之前我的做法现在看来好笨好繁琐,不过也达到了目的,笨人有本方法嘛;
我是怎么操作的:
1、打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面;(经常第一步都不顺利,无法挂载Windo
- 类的加载ClassLoader
肆无忌惮_
ClassLoader
类加载器ClassLoader是用来将java的类加载到虚拟机中,类加载器负责读取class字节文件到内存中,并将它转为Class的对象(类对象),通过此实例的 newInstance()方法就可以创建出该类的一个对象。
其中重要的方法为findClass(String name)。
如何写一个自己的类加载器呢?
首先写一个便于测试的类Student
- html5写的玫瑰花
知了ing
html5
<html>
<head>
<title>I Love You!</title>
<meta charset="utf-8" />
</head>
<body>
<canvas id="c"></canvas>
- google的ConcurrentLinkedHashmap源代码解析
矮蛋蛋
LRU
原文地址:
http://janeky.iteye.com/blog/1534352
简述
ConcurrentLinkedHashMap 是google团队提供的一个容器。它有什么用呢?其实它本身是对
ConcurrentHashMap的封装,可以用来实现一个基于LRU策略的缓存。详细介绍可以参见
http://code.google.com/p/concurrentlinke
- webservice获取访问服务的ip地址
alleni123
webservice
1. 首先注入javax.xml.ws.WebServiceContext,
@Resource
private WebServiceContext context;
2. 在方法中获取交换请求的对象。
javax.xml.ws.handler.MessageContext mc=context.getMessageContext();
com.sun.net.http
- 菜鸟的java基础提升之道——————>是否值得拥有
百合不是茶
1,c++,java是面向对象编程的语言,将万事万物都看成是对象;java做一件事情关注的是人物,java是c++继承过来的,java没有直接更改地址的权限但是可以通过引用来传值操作地址,java也没有c++中繁琐的操作,java以其优越的可移植型,平台的安全型,高效性赢得了广泛的认同,全世界越来越多的人去学习java,我也是其中的一员
java组成:
- 通过修改Linux服务自动启动指定应用程序
bijian1013
linux
Linux中修改系统服务的命令是chkconfig (check config),命令的详细解释如下: chkconfig
功能说明:检查,设置系统的各种服务。
语 法:chkconfig [ -- add][ -- del][ -- list][系统服务] 或 chkconfig [ -- level <</SPAN>
- spring拦截器的一个简单实例
bijian1013
javaspring拦截器Interceptor
Purview接口
package aop;
public interface Purview {
void checkLogin();
}
Purview接口的实现类PurviesImpl.java
package aop;
public class PurviewImpl implements Purview {
public void check
- [Velocity二]自定义Velocity指令
bit1129
velocity
什么是Velocity指令
在Velocity中,#set,#if, #foreach, #elseif, #parse等,以#开头的称之为指令,Velocity内置的这些指令可以用来做赋值,条件判断,循环控制等脚本语言必备的逻辑控制等语句,Velocity的指令是可扩展的,即用户可以根据实际的需要自定义Velocity指令
自定义指令(Directive)的一般步骤
&nbs
- 【Hive十】Programming Hive学习笔记
bit1129
programming
第二章 Getting Started
1.Hive最大的局限性是什么?一是不支持行级别的增删改(insert, delete, update)二是查询性能非常差(基于Hadoop MapReduce),不适合延迟小的交互式任务三是不支持事务2. Hive MetaStore是干什么的?Hive persists table schemas and other system metadata.
- nginx有选择性进行限制
ronin47
nginx 动静 限制
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;...
server {...
location ~.*\.(gif|png|css|js|icon)$ {
- java-4.-在二元树中找出和为某一值的所有路径 .
bylijinnan
java
/*
* 0.use a TwoWayLinkedList to store the path.when the node can't be path,you should/can delete it.
* 1.curSum==exceptedSum:if the lastNode is TreeNode,printPath();delete the node otherwise
- Netty学习笔记
bylijinnan
javanetty
本文是阅读以下两篇文章时:
http://seeallhearall.blogspot.com/2012/05/netty-tutorial-part-1-introduction-to.html
http://seeallhearall.blogspot.com/2012/06/netty-tutorial-part-15-on-channel.html
我的一些笔记
===
- js获取项目路径
cngolon
js
//js获取项目根路径,如: http://localhost:8083/uimcardprj
function getRootPath(){
//获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
var curWwwPath=window.document.locati
- oracle 的性能优化
cuishikuan
oracleSQL Server
在网上搜索了一些Oracle性能优化的文章,为了更加深层次的巩固[边写边记],也为了可以随时查看,所以发表这篇文章。
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。(这点本人曾经做过实例验证过,的确如此哦!
- Shell变量和数组使用详解
daizj
linuxshell变量数组
Shell 变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
your_name="w3cschool.cc"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用ba
- 编程中的一些概念,KISS、DRY、MVC、OOP、REST
dcj3sjt126com
REST
KISS、DRY、MVC、OOP、REST (1)KISS是指Keep It Simple,Stupid(摘自wikipedia),指设计时要坚持简约原则,避免不必要的复杂化。 (2)DRY是指Don't Repeat Yourself(摘自wikipedia),特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性、简洁性,并且可能导致代码之间的矛盾。 (3)OOP 即Object-Orie
- [Android]设置Activity为全屏显示的两种方法
dcj3sjt126com
Activity
1. 方法1:AndroidManifest.xml 里,Activity的 android:theme 指定为" @android:style/Theme.NoTitleBar.Fullscreen" 示例: <application
- solrcloud 部署方式比较
eksliang
solrCloud
solrcloud 的部署其实有两种方式可选,那么我们在实践开发中应该怎样选择呢? 第一种:当启动solr服务器时,内嵌的启动一个Zookeeper服务器,然后将这些内嵌的Zookeeper服务器组成一个集群。 第二种:将Zookeeper服务器独立的配置一个集群,然后将solr交给Zookeeper进行管理
谈谈第一种:每启动一个solr服务器就内嵌的启动一个Zoo
- Java synchronized关键字详解
gqdy365
synchronized
转载自:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。
同步机制可以使用synchronized关键字实现。
当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。
当s
- js实现登录时记住用户名
hw1287789687
记住我记住密码cookie记住用户名记住账号
在页面中如何获取cookie值呢?
如果是JSP的话,可以通过servlet的对象request 获取cookie,可以
参考:http://hw1287789687.iteye.com/blog/2050040
如果要求登录页面是html呢?html页面中如何获取cookie呢?
直接上代码了
页面:loginInput.html
代码:
<!DOCTYPE html PUB
- 开发者必备的 Chrome 扩展
justjavac
chrome
Firebug:不用多介绍了吧https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench
ChromeSnifferPlus:Chrome 探测器,可以探测正在使用的开源软件或者 js 类库https://chrome.google.com/webstore/detail/chrome-sniffer-pl
- 算法机试题
李亚飞
java算法机试题
在面试机试时,遇到一个算法题,当时没能写出来,最后是同学帮忙解决的。
这道题大致意思是:输入一个数,比如4,。这时会输出:
&n
- 正确配置Linux系统ulimit值
字符串
ulimit
在Linux下面部 署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用 其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进
- hibernate调用返回游标的存储过程
Supanccy2013
javaDAOoracleHibernatejdbc
注:原创作品,转载请注明出处。
上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程。
此此扁博文的存储过程的功能相当于是jdbc调用select 的作用。
1,创建oracle中的包,并在该包中创建的游标类型。
---创建oracle的程
- Spring 4.2新特性-更简单的Application Event
wiselyman
application
1.1 Application Event
Spring 4.1的写法请参考10点睛Spring4.1-Application Event
请对比10点睛Spring4.1-Application Event
使用一个@EventListener取代了实现ApplicationListener接口,使耦合度降低;
1.2 示例
包依赖
<p