不懂的记录

这篇博客探讨了电商模式的分类,包括B2C、C2C等,并解释了网站门户与门户网站的差异。同时,文章详细介绍了跨域问题及其解决方案,并讨论了Spring框架中的注解如@Controller、@Service的作用。此外,还涉及了枚举、日志记录、webpack打包优化、JSON与对象转换等相关技术话题。

1、 电商模式或者业务模式具体有哪些?

B2C
C2C (代表企业:淘宝)
B2BC (代表企业:京东、天猫、学成在线)
B2B(代表企业:阿里巴巴)
还有很多新型模式,这里还需要百度一下。

2、一个网站的门户和门户网站的区别?或者各是什么?

一个网站的门户: 这个网站的入口或者就是该网站的首页
门户网站: 最初有两个功能是搜索和目录;主要是收集互联网上的信息和资源,这些资源是具有某类型综合性的。
这些资源是收集互联网的还是该门户网站提供的?还是都有?

3、跨域是什么?怎么解决跨域?学成在线前端代码独立运行,通过Nginx调用也是独立部署的微服务,这个过程存在跨域。

4、有个问题是 xc-framework-parent 的管理的版本号是否和 spring-boot-starter-parent 的管理的版本号冲突?

5、定义接口时,一个接口当中,可以看其返回值和参数,他们的继承/实现关系。看他们其中的编写是怎么样的?

6、以下代码块中的relativePath标签是什么意思?

<parent>
        <artifactId>xc-framework-parent</artifactId>
        <groupId>com.xuecheng</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../xc-framework-parent/pom.xml</relativePath>
</parent>

说明:某个模块中,在pom文件中为了继承另外一个,作为父类,所写的标签

7、xc-service-manage-cms模块中的springboot启动类中的,@entityScan和@componentScan所扫描的API接口包和实体类包的意义是什么?

8、@Controller和@Service注解是谁提供的?他们能做什么?即他的作用是什么?

一道相关面试题:这两个注解是否可以互换?答:自己亲自测了一下是可以的。

9、了解一下枚举。什么是枚举?为什么要使用枚举?枚举能干什么?

答:枚举是只能创建有限个对象。单例的创建的最有效,最快速,最安全的就是用枚举。枚举的构造是私有的,
枚举其中的对象名之间用“,”隔开,最后用“;”结束。
单例模式,懒汉式模式,饿汉式模式。
—————— 在controller层,如果返回一个枚举类的话,浏览器只能接受枚举的构造方法对象的名字。

10、不懂一个注解是什么意思时,按住Ctrl+鼠标左键。(例如:@RestController)

11、webpack打包工具为什么说一次请求要比多次请求要快,一次请求的文件大,而多次请求的其中一次的文件比较小吗?

12、optional判断是否为空 optional adj.可选择的

optional.isPresent()

13、编解码和序列化有什么区别?

14、记录日志用@Slf4j放在类名上(这个注解是lombok提供的)

就可以直接使用log单词来记录日志
log.info()
log.erro()

15、流的转换—IOUtils (字符串和流的转换)

//获取站点物理路径
        String sitePhysicalPath = cmsSite.getSitePhysicalPath();

        //获取页面的物理路径
        String pagePhysicalPath = cmsPage.getPagePhysicalPath();

        //获取页面名称
        String pageName = cmsPage.getPageName();

        String pagePath = sitePhysicalPath + pagePhysicalPath + pageName;
fileOutputStream = new FileOutputStream(new File(pagePath));
            IOUtils.copy(inputStream,fileOutputStream);

JSON字符串和Map的转换

16、objectId中的toString()和toHexString()方法的区别

ObjectId objectId = gridFsTemplate.store(inputStream, cmsPage.getPageName());
//文件id
String fileId = objectId.toString();
String string = objectId.toHexString();

17、将对象序列化和反序列化到流的方式(该问题来源对象的克隆

18、List,如何转成JSON字符串的数组?

19、日志是怎么记录的?@slfj这个注解的用法。事务具体的要研究一下,尤其是springboot整合后的事务是怎么做的?

<think>好的,我现在需要处理用户的问题。用户之前询问了关于手动实现全排列算法的问题,现在回复说“看不懂思密达”,看起来用户对之前的解释不太理解,需要更简单的解释和示例。用户可能对C++代码中的某些部分感到困惑,比如Heap排列算法的实现,或者条件判断部分。首先,我需要确定用户的具体困惑点。用户可能对迭代生成排列的过程不太清楚,或者对代码中的交换逻辑和堆栈数组的作用不明白。另外,用户可能对条件判断中的异或操作(使用!=)不理解,或者对提前终止循环的逻辑感到困惑。接下来,我应该用更简单的语言重新解释代码的结构和原理。可能需要分步骤说明代码的执行流程,比如如何生成每个排列,如何检查条件,以及如何提前终止循环。同时,需要将技术术语转化为更易懂的词汇,例如将“堆栈”解释为“记录步骤的数组”,或者将“异或逻辑”解释为“两个条件只能满足其中一个”。 然后,我应该考虑提供一个更简化的示例,可能减少元素的数量,比如使用三个数字的排列,这样用户可以更容易跟踪代码的执行过程。同时,添加更多的注释和输出语句,帮助用户理解每一步发生了什么。 此外,用户可能希望看到代码的逐步执行过程,包括每次交换后的数组状态,以及条件检查的结果。这可以通过在关键位置插入输出语句来实现,这样用户可以看到排列生成和条件检查的具体步骤。 最后,我需要确保回答的结构符合用户的要求,即先回答问题,给出代码和解释,然后提出相关问题。同时,要避免使用复杂的术语,保持解释的直观和易懂。</think>我重新用更简单的方式解释,并用更直观的示例说明: ```cpp #include <iostream> using namespace std; int main() { int arr[] = {1,2,3}; // 以3个元素为例 int n = 3; // 生成全排列的核心逻辑 for(int i=0; i<n; ){ // 1. 打印当前排列 cout << arr[0] << arr[1] << arr[2] << endl; // 2. 寻找要交换的位置 int j = i; while(j < n && arr[j] == n-j) j++; // 找到可交换点 // 3. 终止条件:所有元素都按降序排列 if(j >= n) break; // 4. 执行交换 swap(arr[j], arr[j]+1); // 交换相邻元素 // 5. 重置前部元素 for(int k=0; k<j; k++) arr[k] = k+1; // 重新初始化前段 i = 0; // 从头开始 } } ``` **运行示例**: ``` 123 (初始) 132 (交换2和3) 213 (交换1和2) 231 (交换1和3) 312 (交换2和3) 321 (交换1和2) ``` **通俗解释原理**: 1. 像转密码锁一样生成排列组合 2. 每次只交换相邻两个数字 3. 当某位数字达到最大值时(比如最右位是3),就向左移动一位操作 4. 类似"进位"机制:个位满3进十位,十位满2进百位 **条件判断部分**: 原题中的`(nums[1]==3) != (nums[3]==2)`可以理解为: - 这两个条件必须恰好有一个成立 - 相当于异或(XOR)逻辑 - 例如:要么甲说"第二位置是3",要么乙说"第四位置是2",但不会同时成立
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值