- 高通CamX分析---01
疯狂敲bug
xml
文章目录1.camx的入口2.硬件初始化HwEnvironment()3.XML文件解析3.1ProbeImageSensorModules3.2sensor模块创建3.2.1加载XML中数据3.2.2根据不同的entry->Type进入不同的module进行解析3.2.3解析actuatorXML数据3.2.4解析oisXML数据3.2.5解析sensorXML数据4.初始化sensor模块(s
- camera热插拔
rachel_rq
videoshellfpcommandfilesystem
usb到camera本来是支持热插拔的,但是由于正在preview时拔出camera,再插入时,camera注册到设备节点会由/dev/video0变为/dev/video1,或者插入多个video设备时,会变为/dev/video1、/dev/video2.。。。。。。而HAL层的代码是固定打开/dev/video0,所以就会打开失败。方法1对video0到video63循环打开。inti;ch
- docker-compose部署onlyoffice8.3.0并支持ssl,且支持通过nginx代理,关闭JWT配置
luopeng207663436
dockersslnginx
编写docker-compose文件mkdir-p/data/onlyoffice&&echo"version:'3'services:onlyoffice:container_name:OnlyOfficeimage:onlyoffice/documentserver:8.3.0restart:alwaysports:-8088:80-64431:443environment:TZ:Asia/S
- QNAP DOCKER 镜像拉取ddns-go
仒雨
威联通docker容器运维
1、通过putty,管理员账号登陆qnap;2、使用一键脚本bash-c"$(curl-sSLfhttps://xy.ggbond.org/xy/docker_pull.sh)"-s完整镜像名这个可以拉取到(至于镜像被拉取到哪里,这完全取决于docker_pull.sh脚本的内容。通常,Docker镜像会被拉取到本地的Docker镜像库中);3、通过dockerimages查看本地已有的Docke
- YOLOv11-ultralytics-8.3.67部分代码阅读笔记-VOC.yaml
红色的山茶花
YOLO笔记深度学习
VOC.yamlultralytics\cfg\datasets\VOC.yaml目录VOC.yaml1.YAML文件内容2.所需的库和模块3.defconvert_label(path,lb_path,year,image_id):4.Download5.Convert1.YAML文件内容#UltralyticsAGPL-3.0License-https://ultralytics.com/li
- Android Kotlin 系列:深入理解高级项目架构模式 - MVVM
安静旅者
androidkotlin架构Android
AndroidKotlin系列:深入理解高级项目架构模式-MVVM在本篇文章中,我们将详细讲解Android应用程序开发中的高级项目架构模式-MVVM(Model-View-ViewModel)。MVVM是一种用于构建用户界面的现代化架构模式,它能够有效地分离界面逻辑和业务逻辑,并提供良好的可测试性和可维护性。MVVM由三个主要组件组成:Model(模型)、View(视图)和ViewModel(视
- 全渠道小程序引流指南
爱分享的程序员
微信小程序小程序
一、微信生态内部渠道1.会话场景1.1好友会话点击查看商品详情onShareAppMessage(){return{title:'爆款特惠',path:'/pages/goods?id=123',imageUrl:'/images/share.jpg'}}1.2微信群//获取群ID实现群场景服务wx.getGroupEnterInfo({success(res){console.log('群ID:
- Ubuntu 18.04 Vscode配置OpenGL 记录
chase。
openglubuntuc++
首先配置OpenGL的开发环境,使用apt安装OpenGL及相关的开发包。安装在终端中,配置步骤如下:sudoapt-getinstallbuild-essentiallibgl1-mesa-devsudoapt-getinstallfreeglut3-devsudoapt-getinstalllibglew-devlibsdl2-devlibsdl2-image-devlibglm-devlib
- 【Spring MVC】基本原理和工作流程
cangloe
javaspringmvcjava
SpringMVC是SpringFramework提供的一个基于Model-View-Controller(MVC)模式的Web框架。它用于构建灵活且可扩展的Web应用程序。SpringMVC将应用程序的业务逻辑、用户界面和导航逻辑分开,从而简化开发过程,提高代码的可维护性和可测试性。以下是对SpringMVC的基本原理和工作流程的详细讲解。SpringMVC基本原理1.MVC架构Model(模型
- Spring MVC的工作流程
ItKevin爱java
javawebjavajavaSpringMVC
SpringMVC的工作流程是一个典型的MVC(Model-View-Controller)架构在Web开发中的应用。下面将详细描述SpringMVC的工作流程:一、用户发起请求用户请求:用户通过浏览器向服务器发送HTTP请求,这个请求首先被SpringMVC的前端控制器(DispatcherServlet)拦截。二、DispatcherServlet处理请求请求转发:DispatcherServ
- Microsoft.Office.Interop.Excel 的简单操作
中游鱼
OfficeC#数据处理excelInterop.ExcelExcel读写
Microsoft.Office.Interop.Excel的简单操作1、安装Microsoft.Office.Interop.Excel2、声明引用Microsoft.Office.Interop.Excel3、简单的新建EXCEL操作代码4、将DataGridView表数据写到EXCEL操作代码5、将EXCEL表数据读取到C#数据表DataTable操作代码1、安装Microsoft.Offi
- 【数据库】隔离级别 MVCC 乐观锁悲观锁
快乐小羊没烦恼
数据库计算机基础数据库databaseMVCC
文章目录一、脏读、不可重复读、幻读1、脏读2、不可重复读3、幻读二、数据库隔离级别1、读未提交2、读已提交3、可重复读4、可串行化三、MVCC快照读和当前读快照读例子当前读例子当前读,快照读和MVCC的关系四、MVCC实现原理(重要)实现要素1——三个隐式字段(1)DB_TRX_ID(2)DB_ROLL_PTR(3)DB_ROW_ID实现要素2——Undo回滚日志实现要素3——ReadView读视
- 开机出现fixing(c:) stage...问题解决方案
QuartusII7
KMJ公司运维
1.使用官方提供的疑难解答程序后并更新系统https://aka.ms/wudiag2.修复系统文件要检查和修复系统文件,请执行以下操作:请您启动管理员模式的命令提示符,依次输入以下命令并回车,之后重新启动计算机。sfc/scannowDism/Online/Cleanup-Image/ScanHealthDism/Online/Cleanup-Image/CheckHealthDISM/Onli
- 机器学习与深度学习资料
JasonDing1354
【MachineLearning】
《BriefHistoryofMachineLearning》介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、DeepLearning.《DeepLearninginNeuralNetworks:AnOverview》介绍:这是瑞士人工智能实验室JurgenSchmidhuber写的最新版本《神经网络与深度学习综述》本综述的特点是以
- wpf ,实现MainView中的UserControrl控件内的button的点击事件及属性引出来
观无
wpf
背景WPF在组件用户控件UserControl的应用中,对于UserControl的组件操作是必然的,然而,如何被UserControl内的操作事件引出来,由实际的业务窗体调用,就是当下的需要事件的案例。技术案例本次案例使用ToggleButton的自定义控件作为最小元素嵌入到UserControl中,在将UserControl动态加载到WrapPanel内,实现WrapPanel内的元素点击事件
- uview2.0封装http请求实战以及常见请求传参实录
卖柴火的小伙子
http前端uview2.0uniapppost传参
1.前言2.使用步骤2.1配置请求拦截器以及api集中管理配置2.2main.js中进行引入请求拦截器2.3页面中引入请求方法并使用1.前言uview2.0是uniapp开发中使用频率相对来讲比较高的一款框架,今天从实战角度介绍一下关于http请求uview是如何进行封装.该插件支持post、get、put和delete,以及上传下载等请求,有如下特点:基于Promise对象实现更简单的reque
- 西工大航海学院,新一代电子信息复试资料911电子版!资料全
weixin_aaa722509
电子信息复试资料西工大航海学院
西工大航海学院已上岸,出新一代电子信息复试资料911(电子版!资料全),西工大911重点题型资料资料完整齐全,复习学习用这套足够,通过无忧!点此获取资料:https://www.yiwanma.com/product/view1679.html911大纲与真题信号检测与估值知识点总结数字信号处理本校PPT数字信号处理真题和本校期末考试题数字信号处理知识点与问答题纸质资料拍照汇总通信原理PPT通信原
- 解决 OBS 摄像头源预览与录制冲突问题
吃面不喝汤66
OBS二次开发音视频
在使用OBS进行摄像头源的预览与录制时,许多开发者会遇到一个常见问题:当开始录制时,预览窗口中的摄像头画面会停止显示。本文将深入分析该问题的原因,并提供合理的解决方案。1.问题背景假设有以下两个场景:预览模式:创建一个CameraModePreviewSource源,并添加到预览窗口中的场景MyPreviewScene。录制模式:创建一个CameraCapture源,并添加到MainScene,然
- docker快速安装带认证Es和Kinbana
大大大大肉包
dockerdockerelasticsearch容器
es安装1、进行拉取镜像dockerpullelasticsearch:7.17.16dockerpullkinbana:7.17.162、查看下载的镜像:dockerimages;3、创建虚拟网络:dockernetworkcreatees-net4、创建挂载目录mkdir-p/usr/local/elasticsearch/pluginsmkdir-p/usr/local/elasticsea
- 鸿蒙系统的代码审查特点
荔枝寄
harmonyos华为
在软件开发过程中,代码审查(CodeReview)是确保代码质量、提高团队协作效率以及预防潜在错误的重要环节。对于使用鸿蒙操作系统进行应用或系统级开发的开发者而言,了解并遵循有效的代码审查流程尤为重要。鸿蒙操作系统作为一个开源项目,其社区贡献者众多,代码审查不仅是保证代码库稳定性的手段,也是促进知识交流和成长的机会。什么是代码审查代码审查是指一个或多个开发者对另一位开发者的代码进行检查的过程。目的
- kotlin的lateinit声明 的变量可能为null吗?
yzpyzp
kotlin
kotlin的lateinit声明的变量可能为null吗?DeepSeekR1思考26秒思考过程嗯,用户问的是Kotlin中的lateinit变量是否可能为null。首先,我需要回顾一下lateinit的作用和特性。lateinit用于延迟初始化一个非空类型的变量,这样可以在声明时不立即初始化,而是在后续某个时刻赋值。这样做的常见场景比如在Android开发中,某些View需要在onCreate方
- IOS-iphone端WKWebView开发者模式
Gaos的BLOG
IOS开发iosiphonesafari
WKWebView调试App内嵌网页手机端开启Web检查器:设置->通用->Safari->高级->Web检查器Mac端Safari显示开发菜单:Safari浏览器->偏好设置->高级->勾选在菜单中显示“开发”设置启动APP,加载WKWebView后即可在Mac端看到H5页面。这时即可连接手机通过Safari中进行调试,Safari开发中看到设备,可以查看当前的HTML代码,JS代码,网络情况等
- 【java面试题】2017.11.17
还没入门的大菜狗
每日一问java面试题
来源:https://github.com/tangyouhua/program-resource/blob/master/program-interview/java-baidu-200.md操作系统中heap和stack的区别emmm。。。操作系统里面没讲过这玩意啊???于是。。。参考大佬http://blog.csdn.net/u014306011/article/details/51044
- from PIL import Image ModuleNotFoundError: No module named ‘PIL‘
万年枝
服务器使用linux常见运行错误pythonlinux前端
问题报错:Traceback(mostrecentcalllast):File"examples/inference_demo.py",line10,infromPILimportImageModuleNotFoundError:Nomodulenamed'PIL'已知环境为python=3.7.16,Pillow=9.0.1;问题解决:使用命令pipinstallpillow--upgradeI
- Touchmove获取当前触摸的Dom节点
会做饭的技术男
前端
原文链接:https://www.jianshu.com/p/a2a41fe20790Touchmove获取当前触摸的Dom节点近期为自己的app增加一个通讯录首字母导航的功能,如下图蓝色框部分,需求很好理解,在手指触摸相应字母时,通讯录自动滚动到相应首字母的联系人。image.png这边通过需求分析,很容易联想到,使用touchstart和touchmove这两个方法来处理响应操作,touchs
- Minio(已有镜像)部署在Docker上
Peacock Ming King
MinioDockerdocker
Minio(已有镜像)部署在Docker上通过MobaXterm保存images(镜像)存放路径:/var/lib/docker/minio/(与pull存放地址一致,也可以自定义,文件夹不存在就新建)从文件载入imagesdockerload--input文件文件路径是全路径(含文件名,需要后缀)如:dockerload--input/var/lib/docker/minio/minio.tar
- 安装skimage库经验
PeterClerk
python深度学习人工智能
方法一:使用pip安装1.在安装scikit-image之前,确保系统已经安装了Python和pip(Python的包管理工具)。在命令行中输入以下命令来检查:python--versionpip--version2.使用pip来安装scikit-image。在命令行中输入以下命令:pipinstallscikit-image3.安装完成后,通过以下Python代码来验证scikit-image是
- VUE + iView table render渲染i-switch
LEON劉先森
javascript前端html
{title:"显示/隐藏",tooltip:true,align:'center',minWidth:120,render:(h,params)=>{returnh("div",{},[h("i-switch",{props:{value:params.row.show,size:"large",trueColor:"#FF5C58",},scopedSlots:{open:()=>h("spa
- uniapp框架基础,一文搞定uniapp(全集)
都叫我闫工
uniapp飞升利器uni-appnotepad++
UNI-App框架基础部分文章目录一、全局配置和页面配置1.globalStyle全局外观配置2.page配置3.tabbar配置4.condition启动模式配置二、组件的基本使用1.text组件文本组件2.view组件3.Bottom组件4.image组件三、uni-app中的样式四、数据绑定1.插值2.v-bind3.v-for五、uni中的事件1.v-on事件绑定六、uniapp生命周期1
- 模型和视图变换 Model and View Transform
你一身傲骨怎能输
图形引擎底层基本知识专栏模型和视图变换
在计算机图形学中,模型和视图变换是渲染管线中的重要步骤。它们的主要目的是将三维模型的坐标转换到适合于显示的二维坐标系统中。以下是对模型变换和视图变换的详细解释,以及它们在渲染过程中的作用。1.模型变换(ModelTransformation)模型变换是将模型的局部坐标系(模型坐标)转换到世界坐标系的过程。这个过程通常涉及以下几种变换:平移(Translation):移动模型到世界空间中的特定位置。
- java线程Thread和Runnable区别和联系
zx_code
javajvmthread多线程Runnable
我们都晓得java实现线程2种方式,一个是继承Thread,另一个是实现Runnable。
模拟窗口买票,第一例子继承thread,代码如下
package thread;
public class ThreadTest {
public static void main(String[] args) {
Thread1 t1 = new Thread1(
- 【转】JSON与XML的区别比较
丁_新
jsonxml
1.定义介绍
(1).XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标
- c++ 实现五种基础的排序算法
CrazyMizzz
C++c算法
#include<iostream>
using namespace std;
//辅助函数,交换两数之值
template<class T>
void mySwap(T &x, T &y){
T temp = x;
x = y;
y = temp;
}
const int size = 10;
//一、用直接插入排
- 我的软件
麦田的设计者
我的软件音乐类娱乐放松
这是我写的一款app软件,耗时三个月,是一个根据央视节目开门大吉改变的,提供音调,猜歌曲名。1、手机拥有者在android手机市场下载本APP,同意权限,安装到手机上。2、游客初次进入时会有引导页面提醒用户注册。(同时软件自动播放背景音乐)。3、用户登录到主页后,会有五个模块。a、点击不胫而走,用户得到开门大吉首页部分新闻,点击进入有新闻详情。b、
- linux awk命令详解
被触发
linux awk
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
awk命令形式:
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v]大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=val
- 各种语言比较
_wy_
编程语言
Java Ruby PHP 擅长领域
- oracle 中数据类型为clob的编辑
知了ing
oracle clob
public void updateKpiStatus(String kpiStatus,String taskId){
Connection dbc=null;
Statement stmt=null;
PreparedStatement ps=null;
try {
dbc = new DBConn().getNewConnection();
//stmt = db
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
矮蛋蛋
zookeeper
原文地址:
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
安装和配置详解
本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两
- tomcat数据源
alafqq
tomcat
数据库
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。
没有使用JNDI时我用要这样连接数据库:
03. Class.forName("com.mysql.jdbc.Driver");
04. conn
- 遍历的方法
百合不是茶
遍历
遍历
在java的泛
- linux查看硬件信息的命令
bijian1013
linux
linux查看硬件信息的命令
一.查看CPU:
cat /proc/cpuinfo
二.查看内存:
free
三.查看硬盘:
df
linux下查看硬件信息
1、lspci 列出所有PCI 设备;
lspci - list all PCI devices:列出机器中的PCI设备(声卡、显卡、Modem、网卡、USB、主板集成设备也能
- java常见的ClassNotFoundException
bijian1013
java
1.java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 添加包common-logging.jar2.java.lang.ClassNotFoundException: javax.transaction.Synchronization
- 【Gson五】日期对象的序列化和反序列化
bit1129
反序列化
对日期类型的数据进行序列化和反序列化时,需要考虑如下问题:
1. 序列化时,Date对象序列化的字符串日期格式如何
2. 反序列化时,把日期字符串序列化为Date对象,也需要考虑日期格式问题
3. Date A -> str -> Date B,A和B对象是否equals
默认序列化和反序列化
import com
- 【Spark八十六】Spark Streaming之DStream vs. InputDStream
bit1129
Stream
1. DStream的类说明文档:
/**
* A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous
* sequence of RDDs (of the same type) representing a continuous st
- 通过nginx获取header信息
ronin47
nginx header
1. 提取整个的Cookies内容到一个变量,然后可以在需要时引用,比如记录到日志里面,
if ( $http_cookie ~* "(.*)$") {
set $all_cookie $1;
}
变量$all_cookie就获得了cookie的值,可以用于运算了
- java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
bylijinnan
java
参考了网上的http://blog.csdn.net/peasking_dd/article/details/6342984
写了个java版的:
public class Print_1_To_NDigit {
/**
* Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
* 1.使用字符串
- Netty源码学习-ReplayingDecoder
bylijinnan
javanetty
ReplayingDecoder是FrameDecoder的子类,不熟悉FrameDecoder的,可以先看看
http://bylijinnan.iteye.com/blog/1982618
API说,ReplayingDecoder简化了操作,比如:
FrameDecoder在decode时,需要判断数据是否接收完全:
public class IntegerH
- js特殊字符过滤
cngolon
js特殊字符js特殊字符过滤
1.js中用正则表达式 过滤特殊字符, 校验所有输入域是否含有特殊符号function stripscript(s) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"
- hibernate使用sql查询
ctrain
Hibernate
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transa
- linux shell脚本中切换用户执行命令方法
daizj
linuxshell命令切换用户
经常在写shell脚本时,会碰到要以另外一个用户来执行相关命令,其方法简单记下:
1、执行单个命令:su - user -c "command"
如:下面命令是以test用户在/data目录下创建test123目录
[root@slave19 /data]# su - test -c "mkdir /data/test123" 
- 好的代码里只要一个 return 语句
dcj3sjt126com
return
别再这样写了:public boolean foo() { if (true) { return true; } else { return false;
- Android动画效果学习
dcj3sjt126com
android
1、透明动画效果
方法一:代码实现
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_main, container, fals
- linux复习笔记之bash shell (4)管道命令
eksliang
linux管道命令汇总linux管道命令linux常用管道命令
转载请出自出处:
http://eksliang.iteye.com/blog/2105461
bash命令执行的完毕以后,通常这个命令都会有返回结果,怎么对这个返回的结果做一些操作呢?那就得用管道命令‘|’。
上面那段话,简单说了下管道命令的作用,那什么事管道命令呢?
答:非常的经典的一句话,记住了,何为管
- Android系统中自定义按键的短按、双击、长按事件
gqdy365
android
在项目中碰到这样的问题:
由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成:
1、单击事件:就是普通key的单击;
2、双击事件:500ms内同一按键单击两次;
3、长按事件:同一按键长按超过1000ms(系统中长按事件为500ms);
4、组合按键:两个以上按键同时按住;
- asp.net获取站点根目录下子目录的名称
hvt
.netC#asp.nethovertreeWeb Forms
使用Visual Studio建立一个.aspx文件(Web Forms),例如hovertree.aspx,在页面上加入一个ListBox代码如下:
<asp:ListBox runat="server" ID="lbKeleyiFolder" />
那么在页面上显示根目录子文件夹的代码如下:
string[] m_sub
- Eclipse程序员要掌握的常用快捷键
justjavac
javaeclipse快捷键ide
判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。 曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。 写道 程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可
- c++编程随记
lx.asymmetric
C++笔记
为了字体更好看,改变了格式……
&&运算符:
#include<iostream>
using namespace std;
int main(){
int a=-1,b=4,k;
k=(++a<0)&&!(b--
- linux标准IO缓冲机制研究
音频数据
linux
一、什么是缓存I/O(Buffered I/O)缓存I/O又被称作标准I/O,大多数文件系统默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,操作系统会将I/O的数据缓存在文件系统的页缓存(page cache)中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。1.缓存I/O有以下优点:A.缓存I/O使用了操作系统内核缓冲区,
- 随想 生活
暗黑小菠萝
生活
其实账户之前就申请了,但是决定要自己更新一些东西看也是最近。从毕业到现在已经一年了。没有进步是假的,但是有多大的进步可能只有我自己知道。
毕业的时候班里12个女生,真正最后做到软件开发的只要两个包括我,PS:我不是说测试不好。当时因为考研完全放弃找工作,考研失败,我想这只是我的借口。那个时候才想到为什么大学的时候不能好好的学习技术,增强自己的实战能力,以至于后来找工作比较费劲。我
- 我认为POJO是一个错误的概念
windshome
javaPOJO编程J2EE设计
这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。
&