- Sa-Token v1.41.0 发布 ,来看看有没有令你心动的功能!
数据库
Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、微服务网关鉴权等一系列权限相关问题。目前最新版本v1.41.0已推送至Maven中央仓库,大家可以通过如下方式引入:cn.dev33sa-token-spring-boot-starter1.41.0该版本包含大量⛏️️️新增特性、⛏️底层重构、⛏️️️代码优化等,下面容我列举几条比较重要的
- Unity3D中ProtoBuf的编译与使用详解
你一身傲骨怎能输
商业化游戏开发技术专栏游戏引擎
ProtoBuf(ProtocolBuffers)是一种由Google开发的高效、跨平台的序列化协议。它常用于数据交换和存储,特别是在需要高性能和低开销的场景中。本文将详细介绍如何在Unity3D中编译和使用ProtoBuf。1.安装ProtoBuf工具首先,你需要安装ProtoBuf编译器protoc。你可以从ProtocolBuffers官方GitHub页面下载适用于你操作系统的编译器。2.定
- gradio调用多个CSS的HTML页
li_li_rui
csshtml前端gradio大语言模型
很多博客介绍的gradio读取html和css比较简单,如果要做很细致的前端页面优化,比如丰富的响应式的css+js,至少要有html+多个css,是暂不能实现的。bootstrap、font-awesome、jquery等方案一当然是直接更换html+css为主的部署方式,仅用gradio传回的数据,重新设计前端方案二可以考虑把多个css直接拼接后再生效,举例如下:1.原html404PageO
- Spring、Spring Boot与Spring Cloud深度解析:核心关系与实战应用指南
小小鸭程序员
javaspringbootspringspringcloud后端
1.技术定位SpringFramework:企业级Java开发的基础框架SpringBoot:快速构建独立运行的Spring应用SpringCloud:分布式系统开发的微服务全家桶二、SpringFramework核心解析1.关键特性//典型SpringMVC控制器示例@Controller@RequestMapping("/users")publicclassUserController{@Au
- Spring Boot 和 My Batis 常用注解总结及解析
上官箫羽
springbootjava数据库
一、SpringBoot核心注解1.1启动类注解@SpringBootApplication:作用:标记SpringBoot应用的启动类,是@Configuration、@EnableAutoConfiguration和@ComponentScan的组合注解。使用场景:用于主启动类,启动SpringBoot应用。示例:@SpringBootApplicationpublicclassMyAppli
- leetcode 20.有效括号
ranzhiyimu
leetcodepython算法
20.有效的括号-力扣(LeetCode)classSolution:defisValid(self,s:str)->bool:stack=[]foriins:ifiin('(','{','['):stack.append(i)elifiin(')'):#这种情况是栈弹出元素为空时候,右半部分的括号多出来一些比如:[()]}ifnotstack:returnFalsetemp=stack.pop(
- Spring-data-jpa最全的查询语法总结,直入超神
香菜+
Java超神之路springjavaspringboot
♂️个人主页:@香菜的个人主页,加ischongxin,备注csdn✍作者简介:csdn认证博客专家,游戏开发领域优质创作者,华为云享专家,2021年度华为云年度十佳博主希望大家多多支持,我们一起进步!如果文章对你有帮助的话,欢迎评论点赞收藏加关注+系列文章:SpringBoot学习大纲,可以留言自己想了解的技术点前言之前文章已经写过一次springdata,链接:
- 【LeetCode】 五月打卡-day01
王六六同学
#每日打卡题leetcode算法java
必须拿下五月勋章2022.5.11305.两棵二叉搜索树中的所有元素中序遍历+归并排序中序遍历这两棵二叉搜索树,可以得到两个有序数组。然后可以使用双指针方法来合并这两个有序数组,这一方法将两个数组看作两个队列,每次从队列头部取出比较小的数字放到结果中(头部相同时可任取一个)。https://www.runoob.com/java/java-arraylist-sublist.htmlsubList
- Hutool 日期时间工具-DateUtil
Full Stack Developme
第三方类库java前端javascript
格式化输出StringdateStr="2021-04-2101:02:03";Datedate=DateUtil.parse(dateStr);//结果2021/04/21Stringformat=DateUtil.format(date,"yyyy/MM/dd");//常用格式的格式化,结果:2021-04-21StringformatDate=DateUtil.formatDate(date
- Ubuntu与Windows之间相互复制粘贴的方法
是覆盖对于变化
Linuxubuntulinux
一、打开Ubuntu终端二、卸载已有的工具sudoapt-getautoremoveopen-vm-tools三、安装工具sudoapt-getinstallopen-vm-tools-desktop四、重启直接输入reboot注:有任何问题欢迎评论区交流讨论或者私信!
- leetcode day30 同构字符串
RickyGuo00
leetcode算法职场和发展
day30笔记1.题目描述2.代码构思(debug)1.题目描述2.代码构思(debug)classSolution:defisIsomorphic(self,s:str,t:str)->bool:s2t,t2s={},{}fora,binzip(s,t):#对于已有映射a->s2t[a],若和当前字符映射a->b不匹配,#说明有一对多的映射关系,则返回false;#对于映射b->a也同理ifai
- ElasticSearch保姆级教程[1]——SpringBoot 项目中使用 ES
云淡风轻~~
#ElasticSearchelasticsearchspringboot
该教程主要分为三篇文章。此为第一篇——主要介绍ElasticSearch、Kibana的安装以及如何通过Http和JavaAPI的方式使用ElasticSearch。学完本文,你就可以在SpringBoot项目中使用ES了。第二篇超链接、第三篇超链接文章目录一、实现ElasticSearch单机运行1.1安装运行ElasticSearch1.2安装运行Kibana二、ElasticSearch基础
- springboot整合shardingjdbc实现简单水平分表
xc979906570
学习日记mysqlspringboot后端
springboot整合shardingjdbc1.引入依赖这里是整合mybatis,都一样,shardingjdbc通过自定义的数据源来拦住你的sql语句进行改写一定要注意druid数据源,不能使用自动装配的,要通过shardingjdbc去实例化数据源,那个自动装配会spring去实例化,用了自动装配也可以通过启动类注解排除@SpringBootApplication(scanBasePack
- uv:Rust 驱动的 Python 包管理新时代
救救孩子把
Pythonuvuvrustpython
在Python包管理工具层出不穷的今天,pip、pip-tools、poetry、conda等各有千秋。而今天要介绍的uv,则是一款由Astral团队推出、采用Rust编写的全新工具,目标直指成为“Python的Cargo”。它不仅在性能上表现优异,而且在功能和易用性上都为开发者提供了一站式的解决方案。1.uv的亮点与传统工具相比,uv在以下几个方面脱颖而出:极速安装得益于Rust的高性能,uv在
- pytest的钩子函数介绍
测试盐
pytestpytest
官方文档:APIReference-pytestdocumentation前言hook函数,pytest框架预留的函数,在测试执行的生命周期内不同阶段会调用,分为引导钩子、初始化钩子、用例收集钩子、用例执行钩子、测试报告钩子、调试钩子。介绍几个常用的hook函数:一、pytest_collection_modifyitems测试用例收集结束后调用,可用于调整测试用例的顺序。1.conftest.p
- SpringBoot+MybatisPlus+shardingsphere 使用年月分表
热诚丶
springbootmybatis后端java
先引入依赖1.2.83.5.18.0.305.0.0org.springframework.bootspring-boot-starter-weborg.apache.shardingsphereshardingsphere-jdbc-core-spring-boot-starter${shardingsphere.version}com.alibabadruid${druid.version}c
- Climate Change 1:The Impact of Climate Change on Floods and Droughts
Hardess-god
ClimateChange能源
TheImpactofClimateChangeonFloodsandDroughts:WaterAvailabilityDynamicsAbstractThearticleunderdiscussiondelvesintotheimpactsofclimatechangeonthewatercycle,emphasizingthegrowingemissionsofgreenhousegases
- java Spring Cloud+Spring boot+mybatis企业快速开发架构之云架构系统管理平台
微服务 spring cloud
直播电商springcloudjavaspringboot架构spring
鸿鹄云架构一系统管理平台鸿鹄云架构【系统管理平台】使用J2EE技术来实施,是一个大型分布式的面向服务的JavaEE体系快速研发平台,基于模块化、服务化、原子化、热部署的设计思想,使用成熟领先的无商业限制的主流开源框架(SpringCloud+SpringBoot+Mybatis+Oauth2+SpringSecurity)构建。采用服务化的组件开发模式,可实现复杂的业务功能。提供驱动式开发模式,整
- Docker安装 Nacos 微服务
咯拉咯啦
Dockerdocker微服务
在Docker中安装Nacosv2.5.1并配置完整的文件映射(配置文件、日志、数据持久化),步骤如下:1.创建宿主机目录结构mkdir-p/root/docker/nacos/{conf,logs,data}2.拉取镜像dockerpullnacos/nacos-server:v2.5.13.复制容器默认配置文件到宿主机运行临时容器复制默认配置文件到宿主机:dockerrun-d--namena
- 代码随想录day23
想进个大厂
算法leetcode职场和发展
538把二叉搜索树转化为累加树classSolution{public:TreeNode*convertBST(TreeNode*root){dg(root);returnroot;}intsum=0;voiddg(TreeNode*root){if(root==nullptr)return;dg(root->right);sum+=root->val;root->val=sum;dg(root-
- Rust从入门到精通
莲华君
rust开发语言后端
目录第一部分:入门篇(基础概念与语法)第一章:Rust简介1.1Rust的历史与发展1.2Rust的设计哲学1.3Rust的应用领域1.4安装Rust开发环境1.5第一个Rust程序:Hello,World!第二章:基本语法2.1变量与可变性2.2数据类型2.3控制流(if、loop、while、for)2.4函数与模块2.5注释与文档第三章:所有权与借用3.1所有权概念3.2移动与克隆3.3借用
- Rust从入门到精通之入门篇:5.控制流
aimmon
Rust从入门到精通系列rust开发语言后端
控制流学习目标完成本章学习后,你将能够:使用if和elseif表达式进行条件判断在let语句中使用if表达式掌握match表达式进行模式匹配使用loop创建无限循环并从循环返回值应用while循环在条件为真时执行代码使用for循环遍历集合和范围理解循环标签在嵌套循环中的应用在本章中,我们将学习Rust中的控制流结构,包括条件判断和循环。控制流允许程序根据条件执行不同的代码块,或者重复执行某些代码块
- spring cloud+cicd[gitlabci-runner]+docker-compose 微服务框架
水木天狼
devopsdevelopcentosdockerspringjenkins
文章目录springboot小微服务框架-docker-composeeurekaapollodocker/docker-composeDocker资源限制之内gitlabgitlab仓库docker-registry直接使用搭建Harbor镜像私仓cicdgitlabci-runner注册Runnersrunner-shellrunner-dockerdocker开启认证的远程端口2376cid
- Spring Boot 3.2性能优化:响应速度提升50%方案
知识产权13937636601
计算机springboot性能优化后端
本文深入解析SpringBoot3.2性能优化全链路方案,涵盖启动优化、运行时加速、数据库访问提速等六大核心模块。通过电商系统、物联网平台、金融交易系统三大高并发场景的实战案例,详解线程池配置、JVM参数调优、SQL执行计划优化等15项关键技术,助您实现平均响应时间从300ms降至150ms以下,系统吞吐量提升3倍的工业级优化效果。第一章性能瓶颈定位方法论1.1全链路监控体系构建监控层级推荐工具核
- 计算机答辩
java资料站
java面试八股文springspringboot
你的项目架构是什么?你用的是什么技术我是选择了springboot+vue技术,然后前台采用了springboot和vue技术,加上mysql数据库做的数据存储。软件测试有哪些方法?你采用了什么方法?我是采用了单元测试和功能测试两种测试的方法对该系统做了功能做了测试,使用单元测试时,对该某些类进行了测试,比如一些获取前台登录信息,查看数据库等,还做了一些功能测试,主要是系统的增删改查进行了简单的测
- 2025年主流测试框架趋势
lifewange
Python自动化测试自动化
1.单元测试框架Pythonunittest:内置库,适合简单测试。pytest:更灵活,支持参数化测试和插件扩展。JavaJUnit:行业标准,支持注解和断言。TestNG:支持并行测试和更复杂的测试配置。JavaScriptJest:Facebook出品,内置Mock和快照测试,适合React。Mocha:灵活,需搭配断言库(如Chai)。2.端到端(E2E)测试工具Web应用Selenium
- SpringBoot万能启停脚本
You Only Live Once_2
springboot
startup.sh#!/bin/bashmkdir-plogmkdir-puploadPathrm-rflog/*shstop.shCUR_DIR="$(cd"$(dirname"$0")"&&pwd)"echo"CUR_DIR=$CUR_DIR"cd$CUR_DIRAPP_NAME=exampleAPP_JAR_NAME="$APP_NAME.jar"nohupjava-jar-Xms128m
- 如何利用AOP切面实现多数据源切换
昔我往昔
框架java
在SpringBoot中使用AOP切面实现多数据源切换是一个非常常见的需求。你可以通过AOP(面向切面编程)来动态地切换数据源,通常是基于方法的参数或方法名来决定使用哪个数据源。以下是一个基于SpringBoot和AOP实现多数据源切换的示例。1.配置多个数据源首先,我们需要在application.yml或application.properties配置多个数据源。假设我们有两个数据源:data
- 探索高效电机控制新境界:dsPIC33CK256MP508下的PLL估计算法揭秘
吉莉卿Gregory
探索高效电机控制新境界:dsPIC33CK256MP508下的PLL估计算法揭秘【下载地址】AN1299源代码dsPIC33CK256MP508MCLVMCHVPLL估算器AN1299源代码:dsPIC33CK256MP508MCLV/MCHVPLL估算器项目地址:https://gitcode.com/open-source-toolkit/942b7项目简介AN1299源代码项目,专为追求卓越
- Buildroot学习笔记
憨猪在度假
学习笔记
一、什么是BuildrootBuildroot是一个工具,它使用交叉编译,可以简化和自动化为嵌入式系统构建一个完整Linux系统的过程。Buildroot能够为您的目标对象生成交叉编译工具链、根文件系统、Linux内核镜像和bootloader引导加载程序。Buildroot可以独立应用于这些选项的任意组合(例如,您可以使用现有的交叉编译工具链,通过Buildroot来单独构建根文件系统)。Bui
- 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设计
这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。
&