【gitee使用教程】(创建项目仓库并上传代码简易版) 第一步:打开file-点击new projects setup ->Settings for new Projects。点击Define_remote 把刚刚复制的仓库的地址填入URL。点击OK就成功上传了。第二步:找到gitee,找到并填入路径,点击OK。
【项目】论坛系统项目自动化测试 测试登录页面,注册页面,论坛列表页展示页面以及论坛帖子发布页面,个人信息展示,退出操作功能。很容易出现报错,对前端页面的不熟悉导致按钮使用的形式不正确,需要合理设置等待时间,以确保页面元素加载完成。在单独进行该案例测试的时候,可以检测是否弹出了警告或者回到了登陆页面,用来判断未登录状态下的,列表页面功能是否正常。登录状态下,进入博客列表页,点击我的帖子,跳转到个人中心页面,查看是否有用户昵称电话等信息。中提供的注解:避免生成过多的对象,造成资源和时间的浪费,提高了自动化的执行效率。
【找到端口被哪个进程占用或者修改端口】 Spring Boot 报错:Web server failed to start. Port 8080 was already in use. Spring Boot 报错:Web server failed to start. Port 8080 was already in use.
【SpringBoot项目常见细化错误】(保姆级教程)Result Maps collection already contains value for Result Maps collection already contains value for 报错解决
Spring AOP(实现,动态原理)详解版 AOP是⾯向切⾯编程切⾯。什么是⾯向特定⽅法编程呢?⽐如 登录校验拦截器, 就是对"登录校验"这类问题的统⼀处理. 所以, 拦截器也是AOP的⼀种应⽤. AOP是⼀种思想, 拦截器是AOP思想的⼀种实现.AOP是⼀种思想, 是对某⼀类事情的集中处理。
【Selenium+java环境配置】(超详细教程常见问题解决) 2)创建驱动对象之前手动指定chromedriver.exe所在路径:System.setProperty(“webdriver.chrome.driver”,“C:\Program Files\Java\jdk1.8.0_192\chromedriver.exe”);//根据自己的安装路径而变。下载地址:https://chromedriver.chromium.org/downloads。原因:浏览器版本和驱动版本不匹配,重新在官网下载对应版本的驱动。//注意:自己的Chrome.exe所在路径。
【无标题】(网络原理(中)TCP机制) 当到达一定的时间,感情趋于平稳,增长速度缓慢了一些,呈线性增长。如果接收端稍微等一会再应答,比如等待200ms再应答,那么这个时候返回的窗口大小就是1M;我没有先回复,而是熬了一个通宵赶了五天的作业,然后再给老师发过去。在每次超时重发的时候,慢启动阈值会变成原来的一半,同时拥塞窗口置回1;TCP的可靠传输,是会影响传输效率的,多了等待ack的时间,单位时间内能传输的数据就少了。3.收到第一个ACK后,滑动窗口向后移动,继续发送第五个段的数据;2.发送前四个段的时候,不需要等待任何ACK,直接发送;
【TCP协议】(三次握手和四次挥手) ACK和第二个FIN的触发时机是不同的。ACK是内核响应的,B收到FIN,就会立即返回ACK。第二个FIN是应用程序的代码触发 ,B这边调用了close方法就会触发FIN。解析:前面的1001-2000这个数据没了,此处返回的ack 任然是索要1001.如何连接建立(三次握手),如何断开连接(四次挥手)。3.TCP面向字节流的→(以字节为单位),UDP面向数据报的。无论当前传输的数据具体是几,都在索要1001这个数据。注意:建立连接,一般都是客户端主动发起的。1.TCP是有连接的,UDP无连接。
【滑动窗口】无重复字符的最长子串-java 详解+代码 第二步:此时left指针向右移动,移动到先前重复元素的下一个位置,与此同时,hash表需要剔除重复元素及排在他之前的元素。此时right指针开始向右移动(重复操作一),直到right遍历到数组的最后,得到的新的长度与原来旧的长度比较,留下更长的那一个。第一步:right指针从0位置开始依次遍历,从0位置开始,把hash表里没有的元素依次丢到hash表里,直到right遍历到和之前有重复的元素为止,right停止。给定一个字符串s,找出其中不含有重复字符的最长子串的长度。时间复杂度为O(n)
【网络编程】编写TCP版的客户端和服务器代码详解版(echoserver 和echoclient) 1.next作为读取请求的方式,next 的规则是遇到“空白符”就返回。(服务器这里以作为空白符)2.根据请求计算响应。3.把响应写回到客户端。4.打印请求交互的内容System . out . println("服务器启动");//通过accept方法,把内核中已经建立好的连接拿到应用程序中 //tcp建立连接的细节都是内核自动完成的,应用程序只要直接拿来用就行 Socket clientSocket = serverSocket . accept();
【start和run的区别(面试题)及创建线程的五种写法】 2.run方法,单纯的描述了该线程要执行什么内容,会在start 创建好线程之后自动被调用的。1.start方法内部,是会调用到系统api,来在系统的内核中创建出线程。调用start 方法,才真的在操作系统的底层创建出一个线程。*调用start方法相当于喊一声命令去执行。lambada表达式是更简化的语法表示方式。Main和run兵分两路,并发执行。相当于“匿名内部类”的代替写法。*线程对象相当于执行任务的人。*run方法相当于执行清单。
【多线程、(进程与线程之间的区别与联系)(图文解析) 】 两条生产线独立生产,共用一个院子,共用一组工人,共用一套物流系统…2.同一个进程的多个线程之间,共用同一份内存空间,资源文件**。2.进程是资源分配的基本单元,线程是调度执行的基本单元。1**.每个线程都有可以独立的去CPU上调度执行。1.进程包含线程,一个进程可以有一个线程,也可以。同一个进程内的线程与线程之间,可能相互影响。两个院子的成本比较高(场地,资源,时间…5.进程和线程都是实现并发编程的,每个PCB用来表示一个线程。个进程挂了,不会影响别人。4.同一个进程的线程之间,3.进程和进程之间,
【线程wait() 和notify()方法有趣详解】 在第一个人发现没钱的时候,就进行wait(wait本身就会释放锁,并且进入阻塞) 第一个人就不会参与后续的锁竞争了,也就是把锁释放出来让别人来获取,后面的人就有机会了。把wait要放在synchronized里面调用,确保是拿了锁的。3.当线程被唤醒的时候,重新获取到锁。使用notify()方法唤醒线程。2.让线程进入阻塞。
【数据库重点 (增删改查进阶版)】 确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。COUNT([DISTINCT] expr) 返回查询到的数据的。AVG([DISTINCT] expr)返回查询到的数据的 平均值。MAX([DISTINCT] expr)返回查询到的数据的 最大值。MIN([DISTINCT] expr)返回查询到的数据的 最小值。SUM([DISTINCT] expr)返回查询到的数据的。
【 MySQL的增删改查(基础 详解+案例)】 注意:1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个(未定义的)顺序。2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面。插入两条记录,value_list 数量必须和指定列数量及顺序一致。指定列的顺序不需要按定义表的顺序来,列从表中选取需要查询的。对某列重复出现的数据进行删除,即去重。
【数据结构——八大排序】(全方面总结) 计数排序算法的原理是基于待排序的数列中各个数值的频数(即每个值出现的次数)来进行排序的。时间复杂度:平均情况为O(nlogn),最坏情况为O(n^2)。时间复杂度:O(nlogn),无论数据情况如何,时间复杂度都是对数级别的。时间复杂度:O(nlogn),无论数据情况如何,时间复杂度都是对数级别的。时间复杂度:依赖于增量序列的选择,通常介于O(n)和O(n^2)之间。时间复杂度:O(n^2),无论数据情况如何,时间复杂度都是平方级别的。时间复杂度:平均和最坏情况为O(n^2),最好情况为O(n)。
【一篇带你吃透接口】(详解版) 11.一个类可以通过extends来继承普通类或抽象类但只能继承一个类,同时也可以通过implements来实现多个接口接口之间用逗号隔开;2.接口当中不能有被实现的方法,只能有抽象类,两个方法除外:static修饰的方法,被default修饰的方法;12.接口和接口之间可以用extends来操作他们之间的关系 通过extends来拓展自己的功能;例:拓展了,也是自己拥有了该功能,B接口不仅具备了B接口自己的功能,还具备了A接口的功能。7.类和接口之间的关系是通过关键字implement来实现的;