面经随笔~

存储随笔2024年度技术分享总结 以上是存储随笔2024的部分文章,供大家参考!展望2025,坚持创作,不断学习!2024年度存储随笔的精彩内容!回首2024,波澜起伏的一年,也是收获的一年,继续坚持创作!存储随笔与您一起回顾。 阅读详情

目录

目录

计算机网络

java

MySQL

linux

测试

算法

软件工程

代码

python


计算机网络

  1. TCP三次握手时,第一次传的报文段        SYN报文段(SYN=1的报文段)
  2. TCP为什么要三次握手呢,两次握手可以吗      首先,我们要明确一点,两次握手也是可以建立连接的,三次握手的作用就是防止特殊情况下,比如网络问题,客户端之前发送的连接请求被服务器端接收,但其实这时候客户端是没有数据发送的,这样就造成资源的浪费。第三次握手就是防止这种情况的发生      
  3. session与cookie的区别                                                                                                                   cookie是浏览器访问服务器端时,服务器端给客户端response的一个cookie,由客户端也就是浏览器保存                                                                                                                               session 客户端浏览器访问服务器的时候,服务器把客户端的信息记录在服务器上                 安全性:cookie 没有session安全     性能:cookie的性能更高,因为当访问增多时,大量的session保存在服务器端,影响服务器端的性能
  4. HTTP的报文段是什么样的
    1. 请求方法,url,协议版本,请求头,请求行,请求正文
    2. 请求方法   

      GET:请求获取Request——URL所标识的资源

      POST:在Request——URL所标识的资源后附加资源

      HEAD:请求获取由Request——URL所标识的资源的响应消息报头

      PUT:请求服务器存储一个资源,由Request——URL作为其标识

      DELETE:请求服务器删除由Request——URL所标识的资源

      TRACE:请求服务器回送收到的请求信息(用于测试和诊断)

      CONNECT:保留

      OPTIONS:请求查询服务器性能

    3. URL                                                                                                                                           URI全名为Uniform Resource Indentifier(统一资源标识),用来唯一的标识一个资源,是一个通用的概念,URI由两个主要的子集URL和URN组成。URL全名为Uniform Resource Locator(统一资源定位),通过描述资源的位置来标识资源。URN全名为Uniform Resource Name(统一资源命名),通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置发生变动,其URN也不会变化。

    4. 协议版本                                                                                                                                   格式为HTTP/主版本号.次版本号,常用为:HTTP/1.1 HTTP/1.0

    5. 请求头部

      Host:接受请求的服务器地址,可以是IP或者是域名

      User-Agent:发送请求的应用名称

      Connection:指定与连接相关的属性,例如(Keep_Alive,长连接)

      Accept-Charset:通知服务器端可以发送的编码格式

      Accept-Encoding:通知服务器端可以发送的数据压缩格式

      Accept-Language:通知服务器端可以发送的语言

Get 和 Post 的区别

        1.url可见性 :

                        get :参数url可见      post:url参数不可见

        2.数据传输上:

                        get通过拼接url进行传递参数    post通过body体传输参数

        3.缓存性:

                        get请求是可以缓存的    post请求不可以缓存

        4.后退页面的反应:

                        get请求页面后退时,不产生影响

                        post请求页面后退,会重新提交请求

       状态码

        1xx    (信息状态码)   接受的请求正在处理

        2xx (成功状态码)请求正常处理完毕

        3xx    (请求被重定向)  需要进行附加操作以完成请求

        4xx    (客户端错误)   服务器处理请求出错

        5xx    (服务端错误)   服务器处理请求出错

2XX  请求成功

        200   OK    请求在服务器端被正常处理了

        204   NoContent   返回的报文中不含实体的主体部分

        206   PartrialContent   响应的报文内包含由Content-Range指定范围的实体内容

3XX  重定向

        301  MovedPermanently   永久重定向,301状态码表示请求资源已经分配了新的URL,以后请求该资源该访问新的URL

        302  Found   临时重定向,302表示请求的资源已经被分配了新的URL,希望客户端本次能使用新的URL访问

        303  SeeOther  表示由于请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源

        304  NotModified  表示客户端发送附带条件的请求时,服务器端允许访问资源,但未满足条件的情况

        307 TemporaryRedirect  临时重定向,和302Found状态码有相同的含义,区别在于307不会强制浏览器将POST方法改为GET方法,而是遵循浏览器自身的标准

4XX  客户端错误

        400 BadRequest  表示请求报文中存在语法错误

        401 Unauthorized  表示发送的请求需要有HTTP认证的认证信息

        403 Forbidden    表明对请求资源的访问被服务器拒绝

        404  Not Found   表示服务器上无法找到请求资源

5XX  服务器端错误

        500 Internal ServerError  表明服务器端在执行请求时发生了错误

        503 Service Unavailable   表明服务器暂时处于超负载或正在进行系统维护

      输入URL后的全过程

        域名解析,得到对应的IP地址

                 浏览器搜索自己的DNS缓存,若没有,则操作系统将域名发送至本地域名服务器,查找成功则返回结果,否则本地域名服务器向根域名服务器发起请求

        建立TCP连接(3次握手)

        浏览器向服务器发送HTTP请求

        浏览器发送响应数据给客户端

        浏览器解析http response 

   OSI七层模型

        应用层     HTTP,HTTPS

        表示层   

        会话层  

        传输层    TCP,UDP 

        网络层    IP        数据单位  数据包

        数据链路层      数据单位  帧

        物理层       数据单位   bit        

java

  1. 判断字符c是否是数字字符,是则返回true ,不是则返回false   Character.isDigit(char c)
  2. 判断字符c是否是字母或数字字符,是返回true,否则返回false      Character.isLetterOrDigit(char c)
  3. 判断字符c是否为字母并且为小写字母     Character.isLowerCase(char c)
  4. 判断字符c是否为字母并且为大写字母     Character.isUpperCase(char c)
  5. 链表和数组的区别   
    1. 数组 时间复杂度为O(1)    链表时间复杂度为 O(n)
    2. 数组是顺序的存储结构,链表是链式的存储结构
    3. 数组适合查询      链表适合 插入和删除操作2
  6. java 中的基本数据类型  byte(1字节) short(2字节) int(4字节) long(8字节)        float(4字节)  double(8字节) boolen(1字节) char(2字节)                                                          引用类型  类,数组,接口
  7. 深拷贝 与 浅拷贝
    1. 浅拷贝就是  用clone 方法  复制了引用类型的对象(在栈中) ,但其实还是指向了 同一个内存空间(堆)
    2. 深拷贝    开辟了新的内存空间(在堆中)  利用序列化  将对象写到流中,反序列化 把对象从流中读取出来
  8. try{ //正常执行的代码 }catch (Exception e){ //出错后执行的代码 }finally{ //无论正常执行还是出错,之后都会执行的代码 } //跟上面try catch无关的代码 正常执行的代码如果出现异常,就不会执行出现异常语句后面的所有正常代码.
  9. java中的数据类型     基本类型:byte、short、int、long、float、double、boolean                                                   引用类型:类、数组、接口 ...
  10. StringBuilder  不是线程安全的
  11. java中的线程安全:就是线程同步的意思,当一个程序对一个线程安全的方法或者语句进行访问的时候,其他不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问

MySQL

  1. union 与 union all  的区别   
    1. Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序
    2. Union All:对两个结果集进行并集操作,包括重复行,不进行排序
    3. 简单来说就是 union 去重且排序    union all不去重且不排序
  2. 怎么查看重复的记录    使用count 函数 来统计
  3. regexp     ^ 以字符串开始  比如^a 就代表以字母a开头的字符串
  4. 多表查询     select * from 表1 inner join 表2 on  表1.字段 = 表2.字段
  5. 创建表   create table  表名(字段名  字段类型)
  6. 插入数据   insert into  表名  values(值,值.....)
  7. 修改数据  update 表名  set  字段 = 值  where  条件
  8. 删除记录  delete  from  表名  where  条件 
  9. 删除表  drop table  表名
  10. 约束   主键primary key  非空not null   唯一unique     默认值default
  11. distinct  过滤重复记录   select   distinct   字段名  from  表名
  12. order by 排序   DESC:从大到小             ASC:从小到大
  13. 聚合函数      count:select返回的记录总数  max:查询最大值     min:查询最小值                                     sum:求和    avg:求平均数
  14. select  *  from  表名   where  条件  group  by  字段  order by  字段 limit  
  15. 事务      begin:开始事务    rollback:回滚事务,放弃对表的修改  commit :提交事务,对表的修改生效
  16. 索引: 创建索引    create index 索引名  on  表名(字段)
  17. 删除索引:drop index 索引名 on 表名
  18. 查询结果去重 select 列名 from 表名  group by 列名
  19. 查询结果限制返回行数,比如限制两行   select 列名 from 表名 limit 2
  20. 将查询后的列重新命名  select 列名 新列名  from 表名 
  21. 将查询后的多列进行排序  select  列名1,列名2  from 表名  order by 列名1,列名2
  22. 将查询后的多列进行降序排列  select 列名1,列名2 from 表名 order by 列名1 DESC,列名2 DESC
  23. 修改表的数据类型 alter table 表名 modify 字段名 新字段类型(新字段长度)

并发事务对数据库带来的问题

        丢失更新

        脏读:读取到修改但未提交的数据

        不可重复读

        幻读:读取到新增且已提交的数据

其中丢失更新可以通过对数据加锁(行级锁)来解决                                                             脏读、不可重复读、幻读可以用事务隔离机制来解决

事务的特性:原子性、一致性、隔离性和持久性

数据库的隔离级别

                                     脏读                不可重复读           幻读     (√ 可能出现,×是不会出现)

读未提交                       √                      √                          √

读已提交                       ×                       √                          √                          

可重复读                       ×                       ×                          √

串行化                           ×                       ×                          ×

Innodb存储引擎和MyISAM存储引擎的区别

        InnoDB 支持事务,MyISAM不支持

        InnoDB支持外键,MyISAM不支持

        清空整个表时,InnoDB是一行一行的删除,效率慢,MyISAM则会重建表

锁的级别

        表级锁         不会出现死锁               并发度最低

        行级锁          会出现死锁                  并发度最高

        页面锁          会出现死锁                  并发度一般

MySQL锁的分类

        共享锁(S锁)        对数据进行读操作   因此多个事务可以同时为一个对象加共享锁

        排他锁(X锁)       对数据进行锁操作    一个事务对对象加了排他锁,其他事务就不能再给他加任何锁了

        行锁         对一行记录加锁,只影响一条记录

        意向锁(表级)   意向共享锁,意向排他锁    

linux

  1. 给linux配置一个IP地址         netconfig  命令
  2. 查看环境变量              echo $PATH 
  3. 如何添加环境变量      
    1. vi ~/.bashrc
    2. export  PATH="$HOME/bin:$PATH"
    3. source ~/.bashrc
  4. 查找指定文件   find  / -name    文件名
  5. 查看端口          netstat  -lntup 
  6. 查看进程          ps -aux
  7. 杀死某个进程        kill - 9    进程号
  8. 查看CPU的型号、类型及大小       cat   /proc/cpuinfo
  9. 查看内存使用情况     free  -m   以mb为单位显示内存的情况
  10. 实时的显示系统中各个进程的资源占用情况     top  -c
  11. 显示磁盘的使用量和占用率                              df  -h
  12. 查看一个文件的最后十行       tail -n   10
  13. 查看一个文件的前十行    head -n  10
  14. linux主机之间传输文件,将本地文件拷贝到远程        scp 文件名   -用户名@计算机IP
  15. 查询服务器已经运行多久   Uptime
  16. 识别文件类型     file
  17. 文件重命名  mv 原始文件名  新文件名
  18. vim中高亮搜索    :set hlsearch      然后再  /  +  关键字 搜索
  19. 批量替换文件中的内容   sed  -i  "s/旧内容/新内容/g"  文件路径
  20. 查找子目录中带有关键字的文件   grep -r 关键字  目录

  

测试

  1. alpha测试和beta测试的区别
    1. α是第一阶段,一般只供内部测试使用;
      alpha测试 (由用户、测试人员、开发人员共同参与的内部测试,注意测试员和程序员只是在现场,而测试需要用户来完成)
    2. β是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用;
      beta测试 (内测后的公测,交给最终用户测试 (俗称甲方),公司外部展开的测试,可以由非专业的测试人员执行的测试,注意开发人员和测试人员都不在现场)
    3. λ是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。
  2. 白盒测试的几种方法概念

    语句覆盖                                                                                                                                 主要特点:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。

    判定覆盖                                                                                                                                 主要特点:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。

    条件覆盖                                                                                                                                 主要特点:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。

    判定/条件覆盖                                                                                                                         主要特点:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。

    组合覆盖                                                                                                                                 主要特点:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。

    路径覆盖                                                                                                                                 主要特点:设计足够的测试用例,覆盖程序中所有可能的路径。

  3. 逻辑测试覆盖是白盒测试法常用的技术。主要的覆盖标准有6种                                            强度由弱到强依次是:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖

  4. 增量式集成测试

    自顶向下测试:是从程序的初始模块开始测试。

    (1)该方法便于在早期发现顶层的错误。

    (2)早期的程序框架可以进行演示

    (3)需要开发桩模块辅助测试。有些甚至需要多个桩模块辅助,加大了桩模块本来的错误影响。

    (4)测试完一个上层模块后,挑选哪个模块作为下一个测试模块,以及测试的顺序没有唯一的界定标准。

    优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。

    缺点:柱的开发量大;底层验证被推迟;底层组件测试不充分。

    自底向上测试:是从程序的底层模块开始测试。

    (1)I/O操作可以提前测试,更好提交测试用例。

    (2)测试后比较容易观察输出。

    (3)需要开发驱动模块。

    (4)直到最后一个模块提交,程序才能完整的系统测试。

    优点:对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。

    缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。

  5. 哪个测试颗粒度最大?    验收测试

  6. 哪些是服务器性能测试中的性能指标?  吞吐量,响应时间,CPU使用率

  7. 系统测试:安全,性能,压力,功能,回归

    集成测试:接口测试。

  8. 软件验收测试包括哪些?

    1. 正式验收测试

    2. 非正式验收测试:α测试    β测试

  9. 测试的关键问题是?   如何选择测试用例

  10. 使用语句覆盖对下列代码进行测试用例设计

    1. 语句覆盖:选择足够的测试用例,使程序中的每条语句至少执行一次。所谓足够的指的是越少越好

  11.  集成测试

    非增量:每个模块测试完了再连接;

    增量:测一个模块,就连接一个模块。

  12. 系统集成测试主要包括以下过程:                                                                                                   1. 构建的确认过程。 2. 补丁的确认过程。 3. 系统集成测试测试组提交过程。 4. 测试用例设计过程。 5. 测试代码编写过程。 6. Bug的报告过程。 7. 每周/每两周的构建过程。 8. 点对点的测试过程。 9. 组内培训过程。

  13. 因果图法着重测试规格说明中的输入与输出间的依赖关系。

  14. 根据缺陷放大理论

    单元测试能发现约80%的软件缺陷

  15. 负载测试 :                                                                                                                                      是通过增加系统负载,测试系统性能的变化,并在满足最终确定性能指标的情况下,系统所能承受的最大负载量的测试,是正常范围内的测试

  16. 压力测试  :                                                                                                                                       逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载下系统性能处于失效状态

  17. 既可以用于黑盒测试,也可以用于白盒测试的方法的是:   边界值法

  18. 编写测试用例的目的是什么

    从测试用例追溯回功能需求以确保没有需求被疏忽
    用测试用例来验证产品需求模型的正确性
    通过测试用例以确认是否达到了产品期望的要求
  19. 单元测试主要技术手段有
    驱动代码   Stub代码   Mock代码
  20. 单元测试工具    
    PureCoverage   
    Purify
    Quantify
  21. 系统测试手段
    GUI测试手段
  22. 代码走查和单元测试的区别                                                                                                           

    代码走查:只检查代码中是否有错误。

    单元测试:是指对软件中的最小可测试单元进行检查和验证。

  23. 疲劳测试

    性能测试中的疲劳强度测试。

    疲劳强度测试:

    通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。

    因为疲劳强度测试强调持续执行一段时间业务,故对于软件系统来讲,最容易暴露的性能故障是内存泄漏,以及内存是否不足。

  24. 风险曝光度

    风险曝光度(riskexposure)=错误出现率(风险出现率)X错误造成损失(风险损失) 比方说有一套产品100个,一套产品10元,有60%可以使用,剩下的风险率50%,求风险曝光度 50%*   10 *  100  *(1-60%) = 风险曝光度;

  25. 工作说明书—SOW                   制定测试的进度

    概要设计说明书-HLD               设计测试的用例

    详细设计说明书-LLD                程序员编码实现

    单元测试用例-UTC                   单元测试使用

  26. 测试驱动开发

    测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。测试驱动开发,英文全称Test-Driven Development,简称   TDD   ,是一种不同于传统   软件开发流程   的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。

    1.TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。                                                                                                                          2.TDD的基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。                                                    3.TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求。                                                            4.TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。

  27. 关于软件测试的基本标准链接:
    (1)所有的测试都应追溯到用户需求。
    (2)应当把“尽早地和不断地进行软件测试”作为座右铭。
    (3)pareto原则:测试发现的错误中80%很可能起源于20%的模块中。
    (4)完全测试是不可能的,测试需要终止。
    (5)应由独立的第三方来构造测试。
    (6)充分注意测试中的群集现象。
    (7)尽量避免测试的随意性。
    (8)兼顾合理的输入和不合理的输入数据。
    (9)程序修改后要回归测试。
    (10)应长期保留用例,直至系统废弃。

  28. 自底向上集成需要测试员编写驱动程序(√)

  29. 比较判断与控制流常常紧密相关,测试时注意下列错误:
    1. 不同数据类型的对象之间进行比较;
    2. 错误地使用逻辑运算符或优先级;
    3. 因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;
    4. 比较运算或变量出错;
    5. 循环终止条件或不可能出现;
    6. 迭代发散时不能退出;
    7. 错误地修改了循环变量。

  30. IOS单元测试框架    

    XCTest
    GHUnit
    OCMock
  31. 如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的判定覆盖

    判定覆盖是每个判定的真假一次,就会导致所有的结果路径会实现;

    条件覆盖是每个判定里的条件各取一次,不一定会产生所有的结果;

  32. 静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。

    人工测试技术主要包含三种静态测试技术,分别是代码走查、代码审查和正式评审。

  33. 动态分析:代码运行结束后。模块功能检查和系统压力测试,必须执行代码后才能分析。

    静态分析:代码运行之前。数据流分析和代码覆盖率,不需要执行代码就可分析。

  34. 负载测试:在一定的工作负荷下,系统的负荷及响应时间。
    强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
    容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。

  35. loadrunner包括哪几部分?  脚本编辑工具、测试执行工具、结果分析工具

  36. 软件调试技术:

    试探法(强行排错法);

    回溯法:人工沿着程序的控制流程往跟踪代码,直到找出错误根源为止;

    对分查找法:缩小错误的范围;

    归纳演绎 ;

    原因排除法 ;

  37. 项目立项前测试人员不需要提交任何工件(√)   注:工件是加工过程中的生产对象

  38. 软件验收测试的合格通过准则

    1、软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。    
    2、所有测试项没有残余的一级二级三级的错误。   
    3、立项审批表、需求分析文档、设计文档和编码实现一致。 
    4、验收测试工件齐全(测试计划,测试用例,测试日志,测试通知单,测试分析报告)
  39. 哪些测试阶段涉及到路径测试?      单元测试,集成测试
  40. 对手机软件的压力测试包括    存储压力,边界压力,响应能力压力,网络流量压力
  41. Junit 单元测试

    Junit单元测试框架—基于java语言对的主流单元测试框架

    @beforeClass—位于数据准备前期或者其他前期准备(测试类调用前)

    --用于提取代码中的共用部分减少冗余,只能声明注解一次

    --必须在public static void,方法名随意,,只运行一次。

    @AfterClass—位于所有用例运行之后,处理测试后续工作。

                --测试类被调用运行结束之前,只能声明注解一次。

                --必须在public static void,方法名随意,,只运行一次。

    @Test—在Junit3中通过对测试类和测试方法的命名来确定是否为测试

          --在Junit4中,只要在方法前加@Test就行,此注解必为单元测试。

          --在一个测试类可多次注解,每个只被执行一次,必须是public void

          --可以抛异常

    使用Assert断言

    1、断言相等:assertEquals(100,x),判断对象是否为同一个

    断言不相等:assertNotEquals(100,x),判断对象是否不为同一个

    2、断言数组内容相等:assertArrayEquals({1,2,3},x)

    3、断言浮点数相等:assertEquals(3.1416, x, 0.0001)(必须设置误差值)

    4、断言为null:assertNull(x)

    5、断言真伪性:assertTrue(x > 0)/assertFalse(x < 0)

    6、

    校准测试函数,使用操作符'=='比较实际和预期的是否重复

  42. 对桩函数的描述  : 桩函数(Stub)是指模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。在自顶向下的集成过程中尤其有效。

  43. 测试工具的功能                                                                                                                LoadRunner-负载压力测试:预测系统性能。
    JMeter+Badboy:基于JAVA的压力测试工具,Badboy用来进行脚本的录制
    功能测试:通过自动录制、检测和回放用户的应用操作。将输出记录同预先给定的记录比较。
    Junit:白盒测试工具:针对代码测试
    测试管理工具:对测试需求、计划、用例、实施进行管理
    测试辅助工具:本身不执行,可以生成测试数据,为测试提供数据准备
    负载压力测试:LoadRunner:预测系统行为和性能的工业标准级负载测试工具。模拟上千万用户同时实施并发操作,来实时监控可能发生的问题。
    功能测试: QTP(quicktest professional):自动测试工具
    白盒测试:C++ TEST(做C和C++的白盒测试)、JUnit(Java白盒测试)
    缺陷管理工具:Mantis、BugFree、QC、TD
    用例管理工具:TestLink、QC
    测试辅助工具:SVN

  44. 接口测试用例                                                                                                                                编号、标题、用例名称、优先级、预置条件、接口名称、测试方法、url、请求头、请求数据、预期结果

      

算法

  1. Floyd算法时间复杂度:      O(n^3)
  2. BFS算法   广度优先算法(Breadth-First-Search),简称BFS,是一种图形搜索演算法,最糟糕的情况算法时间复杂度为 O(V+E)。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,则演算终止。
  3. DFS算法   深度优先搜索算法(Depth First Search):一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。属于盲目搜索,最糟糕的情况算法时间复杂度为 O(n^2)。
  4. 快速排序    时间复杂度:平均O(n*log n),最差O(n^2); 空间复杂度:平均O(logn),最差O(n)  
  5. 堆 是程序运行时,而不是在程序编译时,申请的某个大小的内存空间,即动态分配内存
  6. 栈就相当于一个桶,后放进去的数据先拿出来(先进后出)
  7. 队列只能在队头做删除操作,在队尾做插入操作,而栈只能在栈顶做插入和删除操作

B+树的特点

        非叶子节点上不包含真正的数据,只当做索引使用

        每个叶子节点都有一个指针,指向下一个数据,形成一个有序链表

        根节点至少有两个子女

        

软件工程

  1. 在规定的条件下和规定的时间间隔内,软件实现其规定功能的概率称为  可靠性
  2. UML的用例图一般用于描述软件系统的需求
  3. 在软件详细设计阶段,常用的图形描述工具有程序流程图,盒图(NS 图)和问题分析图(PAD) .常用的语言描述工具为 PDL(程序设计语言) ,常用的表格描述工具有判定表和判定树.
  4. 在详细设计阶段,经常采用的工具有PAD
  5. 结构设计是一种应用最广泛的系统设计方法,是以数据流图为基础、自顶向下、逐步求精和模块化的过程。
  6. 进程和线程   进程:资源分配的最小单位           线程:是进程中执行运算的最小单位,是进程中的一个实体
  7. 多进程 是指操作系统能同时运行多个任务(程序)
  8. 多线程 是指在同一个程序中有多个顺序流在执行

对多线程的理解

        线程就是进程中的实际运行单位,它是操作系统中进行运算调度的最小单位。而多线程就是指一个进程中同时有多个执行路径即线程在执行

        优点:可以同一个程序的不同部分并发执行

        缺点:可能会造成线程死锁的情况

如何避免线程死锁?

        加锁时限(超过时间限制则放弃对该锁的请求,并释放自己占有的锁)

    

代码

  1. 快速排序
public class QuickSort {
    public static void main(String[] args) {
        int[] a = {1,5,63,2,4,5,8};
        quickSort(a,0, a.length-1);
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }
    public static void quickSort(int[] arr,int left,int right){
        int i = left;
        int j = right;
        if (i > j){
            return;
        }
        int temp = arr[left];
        while (i != j){
            while ( i < j&& arr[j] >= temp){
                j--;
            }
            while (i < j&& arr[i] <= temp){
                i++;
            }
            if (i < j){
                int a = arr[i];
                int b = arr[j];
                arr[i] = b;
                arr[j] = a;
            }
        }
        arr[left] = arr[i];
        arr[i] = temp;
        quickSort(arr,left,i-1);
        quickSort(arr,i+1,right);
    }
}

python

1. 字符串怎么转成字典

使用eval函数将字符串转换成字典 

2.python自动化测试中常用的库

Selenium,Unittest,pytest,Appium,pytest-html

MacOS下Mixly 2.0安装避坑指南:从Java环境到终端权限全解析 本文详细解析了在MacOS系统上安装Mixly 2.0时可能遇到的核心问题与解决方案。针对Java环境版本不兼容、MacOS Gatekeeper安全机制拦截以及终端权限不足三大常见障碍,提供了从检查并配置正确Java版本、安全设置绕过到彻底解决应用内部工具链权限的完整避坑指南,帮助用户顺利完成安装并正常使用。 阅读详情

相关推荐

SAP固定资产原值与净值取值逻辑全解析:从数据表到ABAP实战

在企业资源计划(ERP)系统中,固定资产的价值管理是财务会计的核心模块,其关键在于准确核算资产原值与净值。从技术原理上看,这涉及对资产全生命周期业务(如购置、折旧、转移、报废)的财务建模,以及底层数据表(如ANLC、ANEP)的精准关联与计算。掌握这一逻辑的技术价值在于,能够确保财务报表数据的准确性,满足合规性要求,并为管理决策提供可靠依据。在SAP ECC或S/4HANA系统的应用场景中,ABAP开发者与财务顾问常需通过编写报表程序,从复杂的数据结构中提取资产价值信息。本文聚焦于SAP资产会计模块,深入剖

weixin_30984001的博客 395

将字符串转换为字典类型

注意,这里使用了 ast.literal_eval 函数来将字符串转换为字典类型,这是一种比 eval 更加安全的做法。同时,这种方法只适用于文件中存储的是单个字典的情况,如果文件中包含多个字典,你需要逐个解析并合并它们。

m0_57236802的博客 971

大白映射 宝马Esys编程设码映射、USB设备映射

大白映射,宝马Esys设码编程、USB设备映射

denson0394的博客 4803

将纯字符串类型数据转换成字典类型

工作中,我们经常遇到这样的需求 : 获得一个纯字符串如 ck = "a=123;b=abc;c=666",需要将ck转换成一个字典类型数据进行传参,这时候,我们只需要写几行简单代码进行封装,后续就可以对该类数据进行转换了. 1.初始化一个类 class changestr: def __init__(self, ck): self.ck = ck 2.在类下面写一个方法,写一个空字典,用split()方法进行分隔后,进行遍历,最后将得到的参数传入字典中 def

wwwww1219271的博客 3880

Halcon手眼标定实战:九点标定法从入门到精通(附完整代码)

本文详细介绍了Halcon环境下九点标定法的完整实现流程,从基础概念到实战技巧,帮助开发者快速掌握手眼标定技术。通过精确采集图像坐标与机械坐标,计算仿射变换矩阵,实现相机与机械臂坐标系的精确映射,适用于工业自动化中的平面定位场景。

v4w5x6的博客 411

Zigbee智能开关和单火取电技术

ZigBee智能开关(单火线)是在ZigBee协议基础上开发由单火线供电的开关,它可以控制各种类型负载的开关,如LED灯,白炽灯,荧光灯和钨丝灯等。配合相应的主机用户可以使用手机远程控制它,进而达到控制灯光开关的目的。它具有自组网功能,使用简单方便,给你的居家生活带来无线享受。可应用于家庭,办公,医院和酒店等场合。

danhuoxian的博客 1万+

JS中字典和字符串的相互转换(学习笔记)

【代码】JS中字典和字符串的相互转换(学习笔记)

廖小生的博客 2617

UE5 Compute Shader实战:从基础到高级应用全解析

本文全面解析了在UE5中应用Compute Shader的完整流程,从基础概念、环境搭建到核心机制与实战应用。详细介绍了如何通过参数传递、线程派遣与数据读写实现GPU并行计算,并深入探讨了GPU粒子模拟、性能优化及结合光线追踪等高级应用场景,为开发者掌握UE5高性能计算提供系统指导。

yhn45678901的博客 501

get请求返回的是字符串,将其改成字典

(void)loginBtnClick:(id)sender{ AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFHTTPResponseSerializer serializer];

春风得意,马蹄仍急;少年豪情,一笑难回。 1492

游戏客户端开发工程师部分笔试题解析

你可以选择任意连续K个宝石合并成一个新的宝石,新宝石保持在原队列的位置且它的能量值是这K个宝石能量值之和。给定一个幸运值N=0、一堆包含能量值的宝石,你的任务是找到将所有宝石合并成一个宝石的最大幸运值。2.在一个二维网格中,有一个起点S、一个终点E和一个必须经过的中间点M。C++ 的多态性正是通过基类指针或引用调用派生类覆盖的虚函数实现的,这是运行时多态的核心机制。光线追踪带来的抗锯齿效果是其渲染方法的自然结果,而不是一个独立的算法。宝石具体能量值:[10, 7, 2, 6, 5, 11, 8];

博客 3030

SMOKE 3D:从 Python 到 C++ 实现车辆与行人单目 3D 视觉识别在 RK3588 上的深度部署

SMOKE的网络结构通常基于高性能的骨干网络(如DLA-34,您使用的模型就是基于此),通过编码器-解码器架构来提取特征。输入:RGB图像(本项目为骨干网络:用于特征提取。检测头热力图分支:预测关键点热力图。通常在热力图上进行NMS来找到局部最大值,即潜在的关键点位置。回归分支:对于每个关键点位置,预测上述的8维3D属性向量。分类分支:预测每个关键点对应的物体类别。置信度分支:预测每个关键点的置信度。本教程详细介绍了SMOKE单目3D目标检测模型在RK3588上的部署。我们从SMOKE的。

LXY_LOVE36的博客 439

使用自定义注解,实现Java后端字典转换

自定义注解,实现字典转换

Amijfea的博客 4157

麒麟V10 SP1系统下编译linuxdeployqt并打包Qt 5.15.2程序完整指南

麒麟V10 SP1系统下编译linuxdeployqt并打包Qt 5.15.2程序完整指南

ChenJin_2的博客 276

存储随笔原创科普视频首播~

(偷偷告诉你,小编一直在用的,非常好用)。持续互动,也有机会得到存储随笔周边产品(小编没有商业赞助,这些都是小编自掏腰包定制的哈,只为回馈支持存储随笔的朋友们)。发现并没有想象的很容易,先花了很长时间准备了一个PPT,再准备演讲大纲,最终磕磕绊绊。如果您也想针对存储行业分享自己的想法和经验,诚挚欢迎您的大作。如果您看完有所受益,欢迎点击文章底部左下角“

存储随笔 983

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

原来发表随笔才能发表在博客里啊~

原来发表随笔才能发表在博客里啊~ 转载于:https://www.cnblogs.com/ccjnet/archive/2008/10/29/1322567.html

weixin_30906701的博客 67

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

博客园随笔导出CHM

有过几段时间特别希望能把自己在博客园发布的随笔整理成PDF或CHM之类的电子档。试用了豆约翰博客备份专家、瑞祥博客备份工具、BlogDown、Blog_Backup等备份工具,给我的感觉都不怎样,对于非注册版本导出有限制,而且导出的样式真心觉得丑!最近在博客园看到使用CHM文档 采集随笔(续),扒拉下来稍微修改后还真可以使用~.~一、针对输入用户名输入用户名得到的CHM效果图主要修改的部...

a86793222的博客 640

随笔 文章 新闻 日记 有啥区别~ - 博问 - 博客园社区

个人理解如下 随笔:是一些比较杂乱的技术类东西且有待修改和讨论的文章,如果是原创则只是作者随时提笔写下的内容,而并没有经过太多的推敲,甚至措辞也没有得到很合理的运用。 文章:直接获得的有正规性质的文章,或当随笔中的原创经过了讨论、分析和修改后,就可以作为正式的文章被发表,此为正式内容,里面的措辞等都应该得到很好的修正,让他人读起来就如同正式文档或书中的某一章节,行云流水般易读懂、理解。 新闻...

weixin_30698527的博客 237

24-7-6-读书笔记(八)-《蒙田随笔集》[法]蒙田 [译]潘丽珍

《蒙田随笔集》蒙田(1533-1592),是个大神人,这本书就是250+页的样子,但是却看了好长好长时间,体会还是挺深的,但看的也是不大仔细,这里的笔记也是挑一些来记录一下,权当回忆了,那么开始~

weixin_42269028的博客 1266

博客园有人随笔总数10000+?

数说博客园之----随笔总数 前两天在博客园首页的一个角落里发现一个有意思的链接:这个页面汇总了博客园积分前3000名的用户。 博客列表(按积分),这里列出了博客园的积分前三千名。恰好这阵子在折腾爬虫,就想着从这张页面上能不能发现一些有意思的东西,就有了这篇文章。 先看一张图: 随笔10000+ 这张图告诉我们:有两个账号的随笔总数,达到了10000+, 截至2017-4-9,分别是: L...

weixin_30872671的博客 162

【随笔】Git 高级篇 -- 快速定位分支 ^|~(二十三)

大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Git】专栏的第二十三篇文章;这是今天学习到Git 高级篇 --快速定位分支 💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。【Git】, 此专栏是我是夜阑的狗对Git,Gitee等工具使用过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。操作符与符一样,后面也可以跟一个数字。但是该操作符后面的数字与后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的某个。

JMFive的博客 1432

Redis实际应用场景之GEO模式,随笔记录~

Redis的GEO模式是一种高级功能,适用于地理位置相关的应用场景,如社交网络中的“附近的人”功能或基于位置的服务(LBS)。本文通过Java代码示例展示了如何使用RedisTemplate实现GEO功能,包括添加地理位置、批量添加、获取坐标、计算距离、删除成员以及查询附近位置等操作。代码中使用了Spring Data Redis库,通过封装工具类简化了GEO操作,并提供了详细的测试代码,帮助开发者快速上手Redis的GEO功能。

过路的旅人^_^的博客 452

云炬随笔集(2016.7~2022.1)

不能"白字黑字"的写出来不能算真正地理解。——云炬随笔20210109 光永远能够给人间带来温暖,就化做一束光去照亮别人照亮自己吧。——云炬随笔20211227心有所感天有所应,内心所执着的终有一天会开花结果。——云炬随笔20211224势均力敌的情形下才能下出精彩绝伦的“棋局”。——云炬随笔20211223“君子坦荡荡,小人长戚戚”;君子和小人之间的区别就在于愿不愿意接受时间的考验,经不经得起时间的考验;宁为君子,不为小人。——云炬随笔20211223心病难医,一病可能就一辈子。——云炬随笔2021122

科大云炬 494

简单随笔~

简单随笔~

TeFuir__Lv的博客 1300

【随笔】在优快云的第一年,你好,桐小白~ —— 在优快云的一岁生日

这次和以往不一样,把学习的东西放一放,写一写随笔,记录一下生活,聊一聊天吧

bay_Tong桐小白的博客 867

Jsp常见问题随笔~

Jsp常见问题随笔~进程和线程的区别转发和重定向JSP九大内置对象JSP四大作用域 进程和线程的区别 进程是操作系统资源分配的最小单位,线程是程序执行的基本单位。 进程之间相互独立,同一进程的各线程间共享 在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行) 系统在运行的时候会为每个进程分配不同的内存空间;而对线程而...

Miyazno的博客 173

~随笔记录

文章目录一、win11 安装了Microsoft 365,再安装visio方法 一、win11 安装了Microsoft 365,再安装visio方法 参考博客: Microsoft365 与 visio2016 共存 office365 与 visio 2016共存安装教程 Note: 命令: setup.exe /configure configuration-Office365-x64.xml ......

CREATED BY RICK. 1522

2025年07月总结及随笔之雨天又摔车

2025年07月总结及随笔之雨天又摔车

lyingSeven的博客 750
上一篇: java 面试高频题(总结来源:B站java面试训练营)
下一篇: 逻辑学
摆正思想
博客等级 码龄8年 16粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值