TASK_1深度思考

1.maven是什么,和Ant有什么区别?

Maven是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

  • pom文件用于配置需要引用的jar包以及一些诸如jdk版本配置的功能
  • clean、compile、package等对项目进行生命周期管理来适应后期对项目打包的需求

而ant是一个java的build工具,也是apache的项目,不过各方面都被maven代替并超越。

2.clean,install,package,deploy分别代表什么含义?

clean 可将根目录下生成的target文件移除
install 项目安装到本地仓库了,并且是jar和pom同时安装。
package 项目打包到项目的target目录下。
deploy 是将jar包上传远程库的命令。

3.怎么样能让Maven跳过JUnit?

在pom的build标签下加入下面的代码。

    <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <version> 2.19.1</version>
         <configuration>
             <skipTests>true</skipTests>
         </configuration>
    </plugin>
4.为什么要用Log4j来替代System.out.println?

log4j可以指定输出内容的级别,进行信息的筛选,而且可以输出到文本,方便发现问题和维护。

5.为什么DB的设计中要使用Long来替换掉Date类型?

Long类型方便传输与增改,date有点事直观,而在数据库中的时间往往不会直接提取给用户,数据库中的时间用来保存数据创建修改的时间戳。如create_at、update_at这种不会被用户直接读取的字段,就可以用long来提高效率。

6.自增ID有什么坏处?什么样的场景下不使用自增ID?

自增id首先需要是表的主键,在删除一行记录后,id也随之删除,但之后添加的一行记录中的id会在被删除的id后+1,而不是保持id连续性。
在需要该字段保持连续性的时候,不会使用自增id。、

7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?

一个索引是存储的表中一个特定列的值数据结构(最常见的是B-Tree)。
索引是在表的列上创建。所以,要记住的关键点是索引包含一个表中列的值,并且这些值存储在一个数据结构中,索引是一种数据结构,一般是B-TREE 。
在数据量达到几万时,性能差别就比较直观。
使用索引的原则:  

  • 1、装载数据后再建立索引。
  • 2、频繁搜索的列可以作为索引。
  • 3、在联接属性上建立索引(主外键)。
  • 4、经常排序分组的列。
  • 5、删除不经常使用的索引。
  • 6、指定索引块的参数,如果将来会在表上执行大量的insert操作,建立索引时设定较大的ptcfree。
  • 7、指定索引所在的表空间,将表和索引放在不同的表空间上可以提高性能。   
  • 8、对大型索引,考试使用NOLOGGING子句创建大型索引。
8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
普通索引

普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。
只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
mysql > ALTER TABLE {table_name} ADD INDEX index_name ( {column} )

唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
在对该列进行增或改时,首先会检查是否重复,在执行增改操作,否则报出duplica错误,拒绝操作。
mysql > ALTER TABLE {table_name} ADD UNIQUE index_name ( {lolumn} )

对于经常修改或者作为where子句对象的字段,需要为该字段添加索引以增加效率。

9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?

对一个字段做唯一索引之后,在执行sql语句时,会自动在后台根据索引查询是否有重复的值,不需要手动判断qq号是否存在。

10.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?

create_at是在行插入时以当时的时间为值插入。
update_at实在行一旦被修改的时候,以当时时间为值插入。
这两个字段作为数据的属性,不应该调用给外部的接口。

11.修真类型应该是直接存储Varchar,还是应该存储int?

修真类型用varchar不如用int查询效率高,但是用int需要对每个特定的值做一个对应修真类型的映射或定义。如该字段值为1,代表修真类型为“css”等。

12.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?

创建表时或者对已存在的表格的类型为varchar的字段的修改时,在varchar后括号内的数字即能存放的最大长度,这个长度是字符个数而不是字节数。
varchar目前的mysql版本最高支持65535字节,按照不同编码规则,对应20000左右或30000个左右的中文字符。
text的长度为存放最大长度为 65,535 个字符的字符串。
longtext存放最大长度为 4,294,967,295 个字符的字符串。

13.怎么进行分页数据的查询,如何判断是否有下一页?

MySQL数据库实现分页比较简单,提供了LIMIT函数。一般只需要直接写到sql语句后面就行了。
LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。例如:
select * from table WHERE … LIMIT 10; #返回前10行
select * from table WHERE … LIMIT 0,10; #返回前10行
select * from table WHERE … LIMIT 10,20; #返回第10-20行数据

14.为什么不可以用Select * from table?

select * from table 查询的是这个表中的所有列,但是一般情况下我们只需要查询某一个或多个字段,而不需要所有字段都查询,这样会影响效率,所以在明确知道自己所需字段的情况下不推荐使用SELECT FROM TABLE。
另外如果是要查询总条数,也不推荐使用SELECT count(*) FROM TABLE; 而推荐使用SELECT count(0) FROM TABLE。

15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?

贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。

充血模型:层次结构和上面的差不多,不过大多业务逻辑和持久化放在Domain Object里面,Business Logic(业务逻辑层)只是简单封装部分业务逻辑以及控制事务、权限等。

贫血模型在实体类中没有逻辑,更适合大型项目开发和合作开发,解耦也方便后期维护。

16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?

ioc 控制反转,也就是通过spring来控制类的创建和注入,避免了A类依赖B中方法时new B()类时造成的耦合,通过配置文件定义类的模型,在需要的时候由ioc容器创建并注入。

17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?

接口和实现类分离,一方面是为了封装,还有接口不一定只有一种实现,同一个方法也可能不止一个类调用。这个时候用接口实现分离的方法更好实现,耦合度更低。

18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?

异常exception
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
异常发生的原因有很多,通常包含以下几大类:
1.用户输入了非法数据。
2.要打开的文件不存在。
3.网络通信时连接中断,或者JVM内存溢出。
Try/catch语法
使用 try 和 catch 关键字可以捕获异常。
try/catch 代码块放在异常可能发生的地方。try/catch代码块中的代码称为保护代码。
一个 try 代码块可以后面跟随多个 catch 代码块,叫多重捕获。
如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
java提供了抛出异常捕获异常的逻辑用于处理异常,当程序抛出异常时,如果不存在捕获异常逻辑,正在执行的方法将停止执行,并将该异常向外抛出,调用该方法的程序进行同样的处理,如果也没有进行捕获,则将一层一层的向外抛出,直到到达当前线程处时将会终止线程的执行。
正常情况下mysql对于空闲的连接可能会8小时自动关闭。

19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?

在业务执行中,每一个步骤判断执行成功与否都要打日志,对于异常,视情况记录日志并进行相应处理。
需要打印出当前执行操作的如id,正在操作的对象,异常的具体内容等等。

20.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?

单步调试是指程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。

21.可否远程连接到线上直接调试?真实的项目中,遇到问题的排查方案是什么?

在本地写代码时,如果程序出现问题了,在程序中打的各种log,可以帮助我们调试,找出问题,修改,测试,部署到服务器,再测试。但如果在真实项目中的呢,这样做虽然也可以,显然是不方便的。
真实项目中通过远程连接进行调试,服务端执行代码,而本地通过远程连接,到服务器获取数据和运行结果的方法。方式有很多如web、ide等。

项目没有设计的知识点理解不太够。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: WiFi短距测试是指在短距离范围内对WiFi信号进行测试和评估的过程。在进行WiFi短距测试时,可以使用专业的测试设备或者手机等智能设备来测量WiFi信号的强度、速度和稳定性等指标。通过WiFi短距测试,可以评估WiFi信号在不同位置的覆盖范围和质量,并找可能存在的干扰源或信号弱点。这样可以帮助用户优化WiFi网络设置,提高网络连接质量和用户体验。引用\[1\]提到了微波炉对WiFi信号的干扰问题,这也是在进行WiFi短距测试时可能需要考虑的一个因素。此外,引用\[2\]提到了利用深度学习方案和热成像技术进行非接触式测温的方法,这也可以在WiFi短距测试应用到测量设备的选择和性能评估。总之,WiFi短距测试是一个重要的步骤,可以帮助用户了解和改善WiFi网络的性能和覆盖范围。 #### 引用[.reference_title] - *1* [阻容感基础05:电容器原理(2)-电容器参数](https://blog.csdn.net/WKEZHENG/article/details/127705518)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [人工智能目前有哪些突破?](https://blog.csdn.net/weixin_42137700/article/details/107528106)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值