刷完3个Java教程后不再犹豫

成年人最大的底气是你拥有一技之长,人生才不会被动。从事测试开发岗位,需要精通一门编程语言,是核心,是大招,是招牌技能。我内心一直在Java和Python之间选择,反复横跳。

JavaWeb开发基础Servlet简介

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 Servlet是什么? 现在的Java Web开发,很少直接接触到Servlet。在Spring项目中,Spring Boot基于Spring Framework,简化了Spring应用程序开发,Spring Framework是一个全面的Java应用程序框架,其中包含Spring MVC模块,Spring MVC封装了Servlet,以实现Web功能。Servlet不属于Spirng项目,而是Java EE(后改名为Jakarta EE)的一部分。 Oracle将Java EE(Java SE还自己保留)交给开源组织,Eclipse基金会接手。但Oracle不允许开源组织使用Java名号,所以Jakarta EE名称于2018.02.26应运而生。 Servlet可以有很多种描述: Servlet是一个技术,用来创建Web应用程序 Servlet是一个API,提供了很多接口、类和文档 Servlet是一个接口,必须实现该接口来创建Servlet Servlet是一个类,位于服务端,接收请求,返回响应 Servlet是一个Web组件,用来创建动态Web页面 CGI与Servlet 在Servlet技术出现以前,Web应用程序是通过CGI(Common Gateway Interface),一种脚本语言,来实现的。 但是CGI存在很多缺点: 如果客户端增多,服务端响应会变慢 对于每个请求,CGI都会创建一个进程,进程数有限 依赖C、C++、perl等编程语言 Servlet技术出现以后,解决了很多CGI问题: 性能:每个请求创建一个线程,而不是进程 可移植性:因为使用了Java语言 健壮性:JVM管理Servlet,无需关心内存泄漏、垃圾回收等 安全性:因为使用了Java语言 总的来说,Servlet是Server Applet,服务端小程序。它是单例多线程的,每个Servlet类在Web容器中只有一个实例,每次客户端请求,Web Server都会从线程池中分配一个线程去创建Servlet,每个请求由一个独立的线程处理,这些线程共享同一个Servlet实例,通过HTTP协议接收和响应来自Web Client的请求。 参考资料: https://www.javatpoint.com/servlet-tutorial

Java高级编程精华笔记

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 学习路线 本文是Java高级编程精华笔记,是对菜鸟教程中Java面向对象和Java高级编程的重要章节进行了学习,整理形成的学习笔记,知识图谱如下图所示: 如果想对Java深入学习,可以参考阿里巴巴的技术图谱: https://developer.aliyun.com/graph/java 继承 Java使用extends关键字来声明继承: class 父类 { } class 子类 extends 父类 { } 示例,子类企鹅和子类老鼠继承父类动物: //父类:动物 public class Animal { private String name; private int id; public Animal(String myName, int myid) { name = myName; id = myid; } public void eat() { System.out.println(name + "正在吃"); } public void sleep() { System.out.println(name + "正在睡"); } public void introduction() { System.out.println("大家好!我是" + id + "号" + name + "."); } } //子类:企鹅 public class Penguin extends Animal { public Penguin(String myName, int myid) { super(myName, myid); } } //子类:老鼠 public class Mouse extends Animal { public Mouse(String myName, int myid) { super(myName, myid); } } Java只支持单继承,不支持多继承,但可以多重继承: ...

多线程简单斗地主

多线程,通道,读写锁(单写多读),随机(洗牌),是本文涉及的主要知识点。

2026-01-02 · 2 分钟 · 291 字 · 测试开发刚哥 · Java生态 · #Golang

开发你的第一个SpringBoot应用

创建SpringBoot项目最便捷的方式一是在https://start.spring.io/根据步骤选择后,下载项目工程压缩包:

JavaWeb开发基础7个Web术语解析

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 7个Web术语 Website: static vs dynamic HTTP HTTP Requests GET vs POST Servlet Container Server: Web vs Application Content Type Website: static vs dynamic 网站内容包括文本、图片、音频、视频,通过URL来访问。网站分为静态网站和动态网站。 静态网站 静态网站是用HTML编写的,所有内容都包含在网页内,就像是打印出来的一样。 动态网站 动态网站分为客户端和服务端,内容是可以动态变化的,可以根据用户请求动态更新网页内容。服务端语言有Servlet、ASP.NET等。 HTTP HTTP是Hypertext Transfer Protocol缩写,超文本传输协议,位于OSI网络分层模型的应用层(第七层)。 超文本(Hypertext)是一种文本形式,它不仅包含普通的文本内容,还包含了可以链接到其他文本或资源的元素。这些链接通常称为“超链接”(Hyperlinks)。超文本的概念由Ted Nelson在1960年代提出,并在万维网(World Wide Web)的发展中得到了广泛应用。 HTTP具有以下特点: media independent:支持任何类型的媒体内容 connectionless:无连接,客户端发送请求后,就断开了连接 stateless:无状态,服务端不会保留客户端请求的状态,不知道谁是谁 HTTP是基于TCP/IP协议的,通过TCP建立可靠连接。为什么说HTTP是无连接的,但又是基于TCP可靠连接的?如果想要可靠地传输数据,那么就必须要有稳定可靠的连接,保证数据不丢失,这个连接就是TCP连接。HTTP正是通过TCP连接来发送和接收数据的。 在HTTP/1.0中,每次请求都会建立一个新的TCP连接,完成请求后立即关闭连接。在HTTP/1.1中,引入了持久连接,允许多个请求/响应在同一个TCP连接上进行,但每个请求/响应对话仍然是独立的。HTTP/1.1是持久连接,那么还能叫做无连接吗?是的,仍然是无连接。持久连接是通过 Connection: keep-alive 头部实现的,允许连接在一段时间内保持打开状态,不需要重新建立和关闭连接。无连接的本质是每个请求/响应对话都是独立的,强调的是独立。 HTTP Requests HTTP请求是客户端发送给服务端的请求,包含以下内容: The Request-line(请求行) The analysis of source IP address, proxy and port(源信息) The analysis of destination IP address, protocol, port and host(目标信息) The Requested URI (Uniform Resource Identifier)(链接) The Request method and Content(方法和内容) The User-Agent header(请求头) The Connection control header(请求头) The Cache control header(请求头) 可以在浏览器中通过F12开发者工具,查看HTTP请求信息。 ...

SpringBoot简介与安装

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 SpringBoot简介 SpringBoot是Java技术栈的一个Web开发框架,在整个Web开发框架领域中,说SpringBoot是最成熟、最稳定、生态最强大的,一点也不为过。它最伟大的变革是让Java的Web框架也变得便捷起来,开箱即用,只需要简单配置就能快速搭建起一个后端应用,这也是它出现后迅速抢占市场,实现技术更替的重要原因。 除了Web应用开发外,SpringBoot还提供了内嵌服务器(Tomcat等)、安全、监控、健康检查等能力。 SpringBoot安装 本文主要介绍Maven这种方式: 第一步,安装Java,SpringBoot 2.5.6版本需要Java8及以上版本,最新的Java17也兼容。 第二步,安装Maven,不需要单独安装,下载一个IntelliJ就可以了,详细步骤可以参考我博客中这篇文章: 001-2021年搭建Java环境最快办法 第三步,在pom.xml中配置SpringBoot: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>myproject</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> </parent> <!-- Additional lines to be added here... --> </project> 下篇文章《开发你的第一个SpringBoot应用》将继续探究SpringBoot安装后的使用。 参考资料: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started

测试人员学Java入门指南

本书作者:测试开发刚哥,文章版权归个人所有,未经授权请勿转载。 目标读者 本指南特别适合有Python基础的同学学习Java入门,对于没有任何编程经验的同学可能会存在困难。 为什么测试人员要学Java 选择Java,应该不错。TesterHome测试论坛知名大佬基本都是以Java技术栈为主,少部分是Golang和Python。我公司2021年校招的两个同济大学研究生,测试开发,也是以Java为主。有一个测开同事跳槽去了美团,拿了高薪,只会Java。有一个测开同事跳槽去了创业公司做了测试架构师,只会Java。招聘网站搜索测试开发20K以上职位,基本都要求会Java。我接触到的开发,Java程序员占80%以上。 测试人员用Java能干嘛 如果你的公司是以Java技术栈为主,那么你可以用Java做所有事情,而且有些事情只能用Java来做。这个问题挺关键的,学习一门语言肯定是要能够学以致用。在自动化测试,Java会显得稍微有点笨重,而Python会适合一点。你可以用Python来写接口自动化脚本,在小范围内使用,但是当团队变大以后,脚本如何规范如何维护,就成了一个很大的问题,而Java由于静态语言特性和面向对象编程,正好可以用来解决这个问题。在测试平台和性能测试,Java有很成熟的Web开发框架和配套的生态。在测试工具开发,公司封装好的Java库可以拿来即用,碰到问题也可以找开发帮忙。白盒测试,基本上都是要靠Java来做的,看代码,用JaCoCo统计代码覆盖率。其他专项比如流量录制回放、全链路压测、Dubbo接口测试,都只能使用Java来做。 测试人员怎么学Java 我推荐刷完一遍基础语法后,在LeetCode上面刷算法题来加强练习。Java还是有一定的学习门槛的,初学者可能学起来会有些吃力,可以先从Python入手,了解编程语言的底层逻辑,等对编程有些许感知以后,再学习Java。基础语法可以快速浏览一遍,一遍并不会就能记住了,需要在编码中持续加强记忆。光学语法也不行,学习Java和其他编程语言一样,需要多敲多练,刷算法题,既能熟悉Java语法,也能熟悉算法,一举两得,题做不来就先把答案背一遍再做。另外,可以在工作中主动找研发开通下代码权限,尝试Review开发代码,看多了,有些技巧也会知道了。有机会,可以用Java写点工具或者平台,实践出真知。 搭建环境 安装Java Java的安装包是个.exe文件,特殊地方在于文件名不是java-xxx.exe而是jdk-xxx.exe,比如jdk-8u281-windows-x64.exe,jdk是Java Development Kit 的缩写,指Java开发工具包,包括以下内容: JDK的最新版本为15,但是国内大多数公司仍然使用的是JDK8,这是因为JDK8是各方面都很成熟稳定的版本,并且基于JDK8开发的业务系统已经具有一定规模,新版本JDK并不能完全无感知的迁移,需要做代码修改和测试,会是一笔巨大开销,为了降低成本和规避兼容问题风险,JDK8沿用到了至今。JDK8的下载地址如下: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 选择相应的版本下载: 比如我的电脑是Windows 64位的系统,就选择了Windows x64这个版本,会下载到一个jdk-8u281-windows-x64.exe文件。Java已经被Oracle收购了,需要登录Oracle账号后才能下载,没有账号注册一个也很方便: 下载后可以开始安装了: 安装到默认位置即可,直接下一步。中途会让选择JRE(Java Runtime Environment,Java运行环境)的目标文件夹: 依然保持默认即可。安装结束后就能看到两个新文件夹了: 以前,还需要配置系统环境变量,设置JAVA_HOME和CLASSPATH才能使用Java(具体方法百度有很多)。现在,安装完成即可用,省去了不少麻烦,速度加快。打开cmd输入java -version,命令能执行成功就表示Java已经安装好了: 安装IntelliJ IDEA JetBrains全家桶中也有专门用来写Java的,叫做IntelliJ IDEA,一般只说后面一个单词“哎迪儿”就知道是这个东西了。下载地址为: https://www.jetbrains.com/idea/download/#section=windows 个人建议选择旗舰版,看着齐全。下载后双击ideaIU-2020.3.2.exe安装,先别忙着打开。 Maven仓库 Maven是用来管理Java第三方包的主流仓库工具,通过pom.xml文件来配置安装即可,在mvnrepository网站上能检索到所需配置信息: https://mvnrepository.com/ 官方仓库有时候下载速度很慢,本文用国内镜像替代,提高首次打开时同步仓库速度。我们先把Maven中央仓库从Apache替换成阿里云。打开本地目录D:\Program Files\JetBrains\IntelliJ IDEA 2020.3.2\plugins\maven\lib\maven3\conf: 编辑settings.xml文件,找到<mirrors>标签,添加代码: <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> 这是新版写法,官网https://maven.aliyun.com/mvn/guide有说明。 接着可以打开IDEA了,欢迎界面映入眼帘: 新建项目 选择新建Maven项目: 填写项目名和存放位置: 在pom.xml文件中添加仓库配置: <repositories> <repository> <id>public</id> <url>https://maven.aliyun.com/repository/public</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>public</id> <url>https://maven.aliyun.com/repository/public</url> </pluginRepository> </pluginRepositories> ...

怎么写Go代码

安装过程略过,网上搜一大把。

2026-01-01 · 3 分钟 · 522 字 · 测试开发刚哥 · Java生态 · #Golang