我们在初学 jsp 加 tomcat 的时候,可能会遇到一个问题,就是无论怎么配置,使用 tomcat 的 service install 来创建服务的时候, 要么不成功就是提示没有创建服务,要么是你配置成功之后,这个服务并没有办法正常的启动。实际上这个问题有可能是 tomcat 版本和 java 的版本不匹配,你可以看到我这里使用的 tomcat 是十点一点五,然后我的 gdk 的版本是一点八,实际上就相当于 java 八。 在唐快乐官方网站里边有一个 which version, 在这个页面里面列出了 tom kite 和所支持的 java 的版本的列表。在这里呢,你可以看到九点零的 tom cat 支持的才是八和八以上,而十点一的版本支持的是至少加 十一以上的版本。所以其实这个解决的办法非常简单,就是你要么把同看的版本替换一下,要么把加瓦的版本替换一下,实时匹配就可以了,根据你的项目或者你学习的内容来判断是改哪一个不改哪一个。 我这里把 tomcat 换成九点零点七一,然后重新运行 serious install, 这个时候就能够成功的创建 tomcat 的服务。
粉丝1.2万获赞16.9万


一分钟在 idea 里配置项目的 tomcat, 这是一个没有配置 tomcat 的 javae 项目,它现在是不能运行的。接下来配置一下 tomcat, 点击 current file, 选择 edit configurations, 点击加号,选择 tom cat server 下面的 local, 点击 application server 这里的 configuation, 在这里可以选择 tom cat 的路径。 现在 tom cat 已经配置到项目里了。在 after launch, 这里可以配置启动时的浏览器。在 j r e 这里配置一下 tom cat 的 j r e 版本,使用和项 项目一样的 j d k 就可以了。 h t t p post 是项目的端口号。进入 deployment, 这里可以配置项目的弓箭,点击加号,选择 artifact, 选择有 were exploded 的弓箭。 这里的上下文路径可删可不删。回到 sava 页面,更改一下名称, 保存并回到 idr 启动项目,测试一下是否可以运行, 没有问题可以启动。

和大家分享一下 host 是如何修改的,因为有时候我们搭建网站,搭建本地域名的时候,他是要修改 host 的域名,我们可以看一下到 windows, 然后 system 三二,然后是 drivers etc。 好,这边有个 host, 假设我们打开。 好,这是我们想加一个域名, hello further did you come, 因为我们访问域名的时候,他是先访问本地的 logo host。 好,假设我们已经设置好, 然后我们保存, ctrl s 保存,但是他保存不了,他会让我们另存,这个是如何解决呢?好, 我们点击右键,然后属性看一下,安全。好,这时我们可以选择组获用户名, 好,我们选择我们登录的用户名编辑,然后都是允许允许修改登录的用户名,可以修改,确定好,确定这是我们再次修改,打开右键。 好,假设我们修改,把它删掉, ctrl s 保存一下, 这时就没有另存。为了好,我们用这种方式来修改 host 来添加自己的域名。

好,变头发,看屏幕,那我这里呢有一个 web 项目,我们来展示一下如何呀?在 idea 里面配置小猫咪,也就是我们的汤姆凯特来去启动咱们这个 web 项目,那么下面呢我就实际操作一下,首先点这里,点这里,再点加号,然后呢往下翻,找到小猫咪,我们装本地的小猫咪, 那么此时呢弹出了一个小猫咪的配置界面,我们给它起个名字就叫叉叉叉吧。啊,这边呢是可以配置端口号的, 接下来呢我们配置他的 diplomment, 怎么来进行发布部署的时候呢?我们以袜包的形式点击, ok, 那这样的话呢,整个一个配置就结束掉了, 那么最后呢点击 ok, 让其立即生效。然后呢点击启动按钮,启动我们的小猫咪,那么我们发现呢它是可以正常启动的,并且呢打开了我们的页面,巴特这里面呢会有乱码,那这个乱码是怎么产生的呢?我们下一个视频再讲解。

好,刚刚我们了解了这个 b s 结构的一个特点啊,说白了这一个最根本的特点就是 好,他是通过互联网,然后我们通过这个浏览器发请求,然后呢服务器端来响应,这是我们最经典的请求响应模型。 好,这个推送模型的话呢,后面也会看到简单的案例啊,那么下面接下来看看我们开发嘉娃外婆应用的步骤,应该改成嘉娃外婆应用。 好,首先的画面是 创建一个 wifi 项目。好,这里用到的工具好,我们是直接使用这个。呃, equips, 然后是 java 一一版本吧, java 一一版本就是我们现在在用的这个软件。 好,可以创建外国项目。当然原先一度的话呢,就是还有另外一个工具,比较流行的这个工具好,叫 mail, 但现在的话这个是要收费的啊,收费的啊,在国内的话原先都用盗版的,但盗版的话后面一度就是 好买。 gbs 公司的话好,针对中国区域,然后就做了限制,很多的限制,因为中国的基本都是盗版的,大部分都是盗版的,所以这个限制了之后就麻烦一点啊,现在还是 有盗版的还是可以用,但是的话呢,好,这个标准的这个好,一个 hips 的加瓦一版本呢,也已经够好了,对吧?啊,虽然还比不上麦 hips 那么快捷方便,但是基本上也差不多了, 所以,呃,公司的话也一般都转到这个佳娃一上面来了,把这个啊工具上面来了,所以我们现在讲的话,改造成用这个版本啊,这个工具啊,就是我们天天在用的这个工具,对吧?用这个好, 下面的话呢,好,看看这个步骤,首先是我们新建一个项目, 然后把这个项目的目录结构准备好,以及编写相关的 gsp 啊, separate 之类的一些外部组件,还有加瓦类似之类的,写好之后能把它部署到我们的一个 唐家塔这里的外国服务器上面啊,要支持 java, 支持 java 外国接视频, severta 的这类服务器上面也可以叫做好 severt 引擎部署项目等。 好,应该是这么说把, seven 引擎上面, 这里搜不到引擎呢。好,这个有多种服务器啊?好,我们用的最多的是 tonkat, 所以后面的话主要是用这种 tonkat 服务器,这个也是阿发起的的一个服务器。 好,然后把我们写好的 web 应用部署到谈 get 上面之后就可以运行服务器啊。好,服务器的话会把部署到这个服务器上面的 web 项目呢,给它装载进来就可以用了啊,就可以用,是这么一个步骤, 所以接下来的话呢,我们需要把 ton cat 把这个准备好,到 totttttttttottet 服务器呢到可以到这个网站上面下载。 好,官方网站上面我所本地已经有了啊。好,当然这一个 equips 里面它也自带了一个基于 ton cat 的一个服务器,待会会看到 我们还是用外国 top cat 相对来说最好啊,所以可以进到阿发起点 o r g 到这一个网站上面,阿发起基金会啊,阿发起是一个软件基金会,到这里的话 ibm 啊等等这个公司呢?好,他是对他进行了这个投资啊,投资 好,这里面阿发企业服务器也好, top cat 服务器也好,都是他的一些呃,流行的这一个服务器,还有架网上面的很多的框架,很多的一些组件都是在这个阿发企业上面 这个基金会里面贡献出来的,所以加瓦开放的人的话,对阿发起还是心诚感激的啊。对,这一个基金会啊,里面大量的框架,包括原先流行的是叉十框架,是叉十二框架, 都是阿发型组织这个基金会下面的。啊。好,那么你可以看这里面的 projects, 就是你们的项目,阿发企基金会的项目的项目,项目的话各种各样的,这个显示原网也不要放一样。 好,各种各样的项目,找大量的项目,大量的项目。这里的话呢,好, http, 这个就是阿发企服务器,还有唐开头,唐开头找到 t 开头的, 踢开了,这里面一个汤开的,看到没有,他们开的,他是一个解释的话,加瓦 survey and gsp 的碳碳的容器 叫做是外国容器或者 select 引擎。好,这个容器容器的话呢?好,所谓的容器或者引擎都是相同的概念啊。容器容器呢?好,说白了就是好管理我们一些组建的 生命周期的一个引擎,所以这个 select 引擎的 select 容器的话,实际上就是好,无论我们 gsp, select 部署到上面,然后它管理这些家务外部组件 哦,包括嘉宝那个对象的创纪,然后对对象的销毁,这些都是由他去做的。嘉宝组成的生育周期的管理是交给这个容器管理的,相当于保姆一样。他的容器的。好,那么这个汤开的就是一个 select 和 jsp 这个 java web 组成的容器吧。好,点开它,这是市场份额最高的一个容器啊。好,然后你可以下载哪一个版本?下载版本的话, 这不是说下载最新的啊,而是下载相应我们这个工具它支持的的相应的这个服务器啊,所以说这个我们这个工具它支持到最高版本是什么?那我们可以下载这个版本 啊,如果你呃这个工具这个软件 ps 他不支持这个弹开的九的话,你下载过来用的话啊,会有些问题吧,所以可以看看窗口 window 首选项 c, 然后下面的话有一个 sever, sever 里面看看运行时环境的。运行时环境 朗泰呢,是吧?这个运行时环境啊,点开啊,点开,点开可以看到啊,这边的话我是配了一个阿发解弹开的。好,你可以编辑一下,看此地方,下面我安装了这个弹开的。好, 这个八点五点六,然后的话如果没有,你可以 add 添加一个,添加一个就可以看到里面支持的各种各样的这个服务器,大量的这个好接头仪的服务器啊, 好,各种各样的。二路口的啊,其实就是三公司的这一个格莱斯 fish, 这个也是啊,免费开源的,这是二路口官方的,就是嘉瓦官方的。 好,然后的话还有啊捷 boss 啊,捷 boss 的各种版本的服务器啊, ibm 的外波斯菲尔啊。 好,我们选择阿发启,下面看看,这个已经支持到了九点零,所以下载九点零应该也没有问题,对吧?这看到这个支持的版本啊,如果他没有支持最新版本的话,那你就不能下最新版本啊, 否则的话他是没有经过测试的,你用的话那可能有问题。好,所以我们现在他既然已经支持这个阿发曲弹开的酒,所以我们可以下载这最新的酒,当然这个酒不不知道是不是稳定版本, 点一下看看,如果不是稳定版本的话,还最好不要用啊。点开 好这个软件,下载镜像 发布包哈,二金制发布包,还有源代码,唐店的他也是免费开源的,都可以跟踪到这个。呃,内部去到内部去,其实就是一个 什么烧铁的啊,就是一个服务提档套节字啊,我们浏览器的话是客户端套节字吧,只不过现在不需要我们写的,不需要我们写罢了。 好,然后九点零,里程碑二十六,这个还不是稳定版本,所以最好不要下, 不要用最新的。这个地方 m 二六的话 m 往往叫就是里程碑的意思啊,里程碑的啊,这个意思。里程碑的话表示现在还不是稳定版本,现在还在逐步的 更新的,所以现在你下的话可能有一些问题你发现了,结果你没能解决的了,只有他们公司的程序员看看后续有时间能不能解决, 所以这个的话我们最好不要充当这一个小白鼠,是吧?用稳定版本出了问题,你到互联网上百度上面可以找到别人有解决方案的,对吧?别人用过的稳定版,何况有一些问题官方就已经发现了,对吧?所以还是选择坦克的吧。坦克的吧, 常见的八的话,这个看看,八点,五点,二点后面没写这个 m 什么之类的,往往这个可以认为是一个稳定版本,所以我下的就是这一个。等下下的话呢,你可以把下载 这个啊,这 ip 格式的啊,他点击这一格式的,他不同的格式不带一样啊,不带一样就安装方式不一样,然后我们可以看看这 ip 格式的核心,这批格式,还有带文档的,我们有核心就行了。 点击这个 vip 格式,这个他点击这往往是。另一个是 unic, 是苹果机上面用的啊,就是 unic 系列的,因为苹果机其实也是一种 unix 啊,对吧。另一个是 unix 系列的,好下载 哦,这个九点五兆,应该还要安装的时候再再去下载踏顶机,这个也可以哦,这个有六十四位的 win windows vip 啊,就不要下载。这个好,这个可以不用 样 啊,这个可以取消。这上面下面有啊,我看到了一个六十四位的 windows zip。 六十四位的啊,下面这个 windows 设为是因此到的话,这个相当于是 windows 下面有一个安装的这个工具包,双击打开安装的时候他再去自动去下载啊,我们就用这个六十四位的 windows vip, 那么应该这个解压就可以运行,那就最好的啊,解压就可以运行,那就是属绿色版本啊,加瓦相关的软件的话,基本上都是这个绿色版本的,用 解压就可以用就好了。哎,这个好像也十点五 k 啊。十点五兆也不大啊,我看看我这里安装的团盖的,八点五 点六啊,四十十多兆。十多兆可以啊,就是这个啊,就是这个下载过来,这里下载的比较慢啊, 还挺慢的,才十多二十兆。怎么搞的今天这么慢 啊,十多二十 k 啊,才造起来。好,不管他,让他好在那个地方下载,我把我这个好 copy 过来。绿色软件啊,你直接 copy 过去就可以用了。我把它放到这个加我外婆视频给目录下面。好,大伙可以直接考过去,十多兆, 我这个下的还是更新一点的版本,八点五点六。好,把这个考过去,整个文件夹考过去就行了,这个文件夹 好,把它考过去。考过去之后呢,接下来我们可以看看配置和配置 好,就是在窗口首选项 window 或者 finance, 打开之后找到这个,下面一个 several 就是福气吧,福气下面有一个运行时环境,然后这里可以添加 删除编辑服务器运行环境,我们这个 java rap 应用,那么必须要有一个服务器吧。好,我们把我们自己写的 java rap 组件扔到服务器上面,不使到服务器上面就可以用啊。 好,这里现在没有一个服务器环境,可以添加一个吧。 a d d a d d a, d d, 你就要根据你用的服务器是哪一个来选择吧,这里可以支持的,大量的服务器都可以支持啊。啊,我们啊用这个市场份额最高的阿发奇汤 cat, 那这里的话就根据你的版本来选择哪一个吧,我们最好是用八点五,虽然现在支持九点零,但是啊,阿发奇网站上面看到唐哥的九点零,他还是里程碑版本,不是稳定版本,不是稳定版本 的话,那可能出现了问题啊,可能没多少人能够解决啊。好,这时候的话啊, bug 你自己搞定,那就麻烦了,所以选择八点五版本,好,把它扣笔过去啊,把这个阿法写八点五点六,然后好下一步, 下一步的话一个就是这个名字,就是刚才这个地方出现的名字吧,名字你可以设置一下,好,就保持这个默认的默认,然后这个地方的话就是你的,你拷贝过去的,我这个目录在哪个地方?我是在地盘吧,地盘下面, 然后下面这个 g r e 的话,就是加瓦运行环境,因为唐太太的话它需要什么?需要我们 g r e 加瓦运行环境,我们前面安装 g d k 配置的时候,有一个加瓦下划线 home 吧,这环境电量好,这时候如果单独用的话,不是通过这个工具来用它捏的,这时候我们需要配置加瓦下划线 home 啊,如果没有配置话,通过这个工具用的话,这个地方也要指定,也可以指定你像我们这个 jdk 一点八。好,这个是我们安装的 jdk 吧,好,选中他啊,也可以分离去。完成,这样的话这个地方 就出来了,这个服务器基本上就已经配置好了,在工具当中已经配置好了,就是这个工具可以用这个服务器啊,可以用这个服务器。 好,那么把这一个打开,那么接住下面的话呢?其实这个地方 severs 下 就会出现这个福气吧,看到没有?左边这个地方,前面这几个项目我们可以删除了,可以删除对面的删除。 好,这里面 severs 就是服务器吧,这里面只有一个吧啊,他这里面可以配置多个服务器啊,然后这里面的话就是里面的相关配置信息啊,相关配置信息。 好,这些配置信息的话,后面可能我们会去配置像这个服务器上面的用户。 好,这个后面我们会用到做配置的时候,配置角色用户权限,然后这个 severed xml, 那么这个的话就是我们弹开的像他监听的东口, 他默认端口是八零八零端口,搜索一下看看到这个地方好,这里面他通过这个 xml 作为配置文件啊,作为配置文件,然后的话, 好,原先是用 proportition 文件,后来改成了用 x metal, 这里面这个 connector 就是一个连接器, 连接器的话,说白了就是他在哪个地方进行好连接,进行等待客户端的连接,在哪个地方进行倾听,这里的话指定了一个端口号,这里默认端口号就是八零八零, 所以说我们向这个唐盖的发请求的时候,是向这个八零八零东口发请求的是这个地方,当然这个八零八零 往往是用来做测试的,到后面的话,真正部署到互联网上的服务器上面的时候,往往最后需要把它改成八零端口, 这个就是 http 协议的默认端口是八零啊, tongata 里面用八零八零啊,就是以免跟好八零端口冲突,你像阿发起运行的话,他默能的端口号就是八零端口,说阿发起运行的话, tonkat 再去运行,如果还是八零端口运行的话,就会冲突啊,端口冲突, 所以这个地方八零八零,我们自己写的程序就不要在这个端口鉴定,因为往往他就是被汤汤盖盖所占用啊,是这样的好,因此你要改的话可以改这个 seven 什么的配置文件,好,这个可以不用管,他都不用管好,实际上是在硬盘上面,这个配置文件有啊,在硬盘 地盘这里面有个咖啡格目录,阿萨奇的这个,下面这个汤盖牌,这个咖啡格目录,配置目录,这里面就有这个三个点,怎么样可以在里面做配置啊?在里面做配置好, 那么接下来的话呢?好,我们来看看现在这个 sever 配置好了,配置好了之后呢?好,我们可以 好写这个外部应用程序啊。写外部应用程序好,看看拍照好没有 啊? 你这个不是交了一百元重新下载,也是加了版本的啊,大伙就是这个工具是加了版本的啊, 好,是加瓦一版本,大家要重新下载一个加瓦一一版本看看,大伙看看,这里是上面是加瓦一一啊, 我看到你们大伙都是加瓦啊,也就是下载一个不死的时候呢。你下载的不是这个加瓦一版本,我现在给大家共享一下这个版本,这也是绿色软件,有的是加瓦一,有的是加瓦, 所以这个地方的话呢,好,看看地盘软件下面我共享一下, 我原先记得放了上去啊,嘉娃版视频是嘉娃版本要,要的是嘉娃一一版本啊, 那软件没放上去吗?就把我这个立旁软件这个 elips 共享一下, 这汤盖的也有,我就把我用的这个 copy 过去, 这个后来又下了很多差劲,所以说就挺大的。挺大 哎,没考过来吗?啊?没考完怎么取消了?删掉重新我共享啊,共享就行, 因为挺大,我都没多少空间了。

哈喽,大家好,我是加瓦小黄豆啊,那么第一步呢,创建一个新的 pro, 创建一个新的项目,然后第二步呢,我们选中这里的眉尾,然后的话呢接力 k 版本一点八,然后 nice, 注意这里什么都不要选啊, nice, 然后的话给出你的名称,然后的话给出你的这样一个阿迪 fex 的 gep id, 阿迪 fex id 以及莴笋啊,然后我这里都可以默认,然后呢非你, 那么第二步呢,就是把这个整体的眉纹给他配置一下啊,那么首先是 fel, fel 呢, sititsitits 里边的话呢,我们在这个地方呢,输入 maven m a v 音啊,然后的话找到这里, 找到这里来了之后,我们来看一看,这里有一个梅文候母,是吧?梅文候母的话呢,找到你这个梅文的这样一个存放的路径,我呢存放的 是 f 盘啊,然后的话呢第二步就是 usithreel, 然后就是这个没文的一配置文件,我的没文配置文件就在我的目录里面藏着债啊, 然后的话 f 盘的这个眉尾的这样一个康菲格里面的塞挺石就是他了,然后注意这边要打上勾勾啊,欧尔瑞的,然后的话呢,你这个本地仓库,那么我的本地仓库也在 f 盘,然后也打上勾勾啊,这些地址呢?这 要按你们的情况来设置啊,那么接下来我们就对这个碰点插面文件进行一些配置啊,好,那么碰点插麦文件的话,我们首先是要配置 jdk 的变音版本, jdk 的变音版本的话是一点八啊,他们他在这个 beaut 里面, 然后呢配的一个插件帕拉格印,然后的话配的 jdk 的版本呢?好,那么大家可以看我的 jdk 版本是一点八啊,所以说我要 配置成这样一个一点八的版本,在这,然后的话我们加上一个依赖啊,那么依赖的话就拍的立克斯,然后的话我们加上这个 sorry 的依赖啊, 那么索尔里特的依赖的话呢?尽量是去加这个四点零点幺的啊,哎,这个啊,然后叫我差点索尔里特点 ap i 啊,然后他们再加上一个依赖了,就是底盘的那一刻 gstl, 那么 gstl 的话呢?也就是我们的这样一个标签库,是吧?有这个家伙了啊,好,至少我们加这两个依赖就足够了啊。如果说你需要测试的话,你可以 加这个解忧力特啊,然后再接下来我们就要对这个整个项目呢目录做一个知识,我们要加一个这个歪不差秒进去啊,那怎么加呢?我们可以看啊,我们选中这样一个项目,然后在这里 flow 里面呢,选中这个 progx gex, 也就是项目的结构,在项目的结构里面,我们选中这样一个 model, 然后这个模块啊,在这个模块里边的话呢,我们点击一个加号啊,我们加上一个什么样的模块呢?我们加上一个外部模块啊, 加上卖外部模块之后,大家注意啊,他会默认的给我们来上一个外部的这样一个目录,然后里面有外部杠衣服,然后外部杠衣服里面有一个外部点擦秒, 然后的话呢,这个跟路径是杠啊,我们先用这个跟路径是杠,然后他会警告你注意这里有个警告,他说呢,这个目录还并不存在,你是不是要加好, ok, 我们创建一下子啊,然后创建完了 之后呢,他就会有一个阿里 fax, 阿里 fax 的话呢,然后呢我们在这里呢,我们可以看到一个他会输出这么一个目录,然后这是我们的原目录啊,好,我们先 这个碰的啊不对,然后 ok, 然后 ok 之后我们来看看整个的项目多了一个外部目录啊,注意这个外部目录他是和 sr 评级的,然后在外部目录里面有个外部音凤目录,外部音凤目录一个外部插苗,然后我们打开外部插苗,我们来看一看,这就是整个的他们开头的一个支撑啊, 那么紧接着我们在这个外部目录里面呢,我们新建一个 gsp 啊, gsp 文件做一个支撑,然后的话我们把 gsp 文件的名称取成 endx 啊,然后 endx 之后这里有一个 gsp 文件,我们把这些乱七八糟给他删掉,然后第一卡 讲的话呢,就是这个配件啊,然后的话呢,这不算是由 tf 杠八这他默认给我们的,哎呀,还是不错的啊。然后的话呢,我们要加上这样一个标签库进去啊, c 标签啊加一下, 然后我们加完 c 标签之后他是这个样子的啊,好,那么这里是红色的话呢,就因为我们这个眉尾啊 需要刷新哎,就点这个没有刷新一下就 ok 了啊,然后我们整个的这样一个标签库就进去了,进去之后呢,对这个我们目前的这个当前页面的这样一个标签库的支撑做了一个 ok 的啊, 做了一个 ok 的支撑,然后就是说标签库已经进去了,因为他变成一个绿色的了,然后随便写上一句话啊, ok, 然后这个 gsp 就 ok 了啊,那么紧接着的话呢,我们 sp 已经有了之后,我们就可以运行这样一个项目了,然后让这个汤 cat 可以启动,并且可以直接加载我们的 endxygsp。 那么这个时候的话呢,我们看在这里啊,在这个地方的话呢,我们就需要去 点这个加号啊,我们先点击这个 a、 d、 d, 看这个微信,添加一个环境,然后点这里一个加号,加一个什么样的环境呢?加上一个汤姆凯特斯瑞斯的环境啊,不要点错,然后点 loco, 本地的汤姆凯特, 点完本地的汤姆盖特之后,然后我们在这边的话呢,随便取上一个名字啊,当然也可以不取名字,是吧?然后的话呢,我们在这里呢要选中我们的本地鸡的汤姆盖特点这个康菲格瑞犬。那么 我的本地机的他们看到的话呢,是在 f 盘上面啊,然后的话呢目录也是在 f 盘上面啊,然后 ok 一下,那么你们的话可以自己选择一下你们的这样一个他们看到的目录在哪 啊?直接选中这个跟目录就可以了,然后 ok, 那么下面的话呢,这个他们看的贝斯目他会自动跟出来啊, ok, ok, 完毕了之后,这里要注意 选中第二项啊,然后下面呢要注意你的这样一个端口号,八零八零是不是一致的,然后选中第二项,选中第二项的话呢,我们这里有一个什么东西呢?我们添加一个加号, 好,在这里啊添加一个加号,加上我们的这个整个这个这个项目的阿里 fx, 还记得吗?这么一个东西啊,然后的话呢,我们加完了之后,我们再往下面, 再往下面的话呢,我们会把这个整个的这个啊,不是 kitty 抗泰克斯,也就上下文把它改掉啊,当然你要是不改的话,你要加这个项目名称的啊,就是这么个意思,我们把它改成一个盖,就代表着呢,我们可以不用加这个项目的名称啊,然后 ok, 然后 ok, 那么刚刚加的阿迪 faker 在哪呢?实际上啊,就在这个地方, 我们再往这边挪啊,挪到这样一个项目里边来,项目里边来了之后的话,大家还记得我们在这里加了一个 model, 是 model youd 之后,他自动帮我们加了一个阿迪 fx, 实际上就是他这个东西实际上就是我们的输出目录啊,大家可以看阿沃特 potelelee 而成啊, 好, ok, 然后的话呢,现在我们干什么呢?现在我们只需要去点这个按钮啊,这里有一个运行按钮就可以了,点击一下运行,点击一下运行之后,你会发现在下面就会有一个汤盖的出现啊,在这, 然后呢他就会去运行了,运行我们主要是看这个输出路径啊,输出的这个日字啊, 好,那么说出来的 之后大家可以看啊,在这里的话呢,哎,有一个 logo boss 八零八零已经出来,但是呢有一个五百错误啊,那么这个错误是什么错误呢?我们看到这里, 这里看什么呢?看这个他们开的 logo hold 的这个 logo 二字啊,点进去之后我们会发现一个问题,他有个什么东西不支撑呢?实际上就是那个标签库啊,往上翻,他会告诉你什么东西呢? 好,我们来看一看啊,他告诉你这个 htvp 啊,什么家啊,点丧啊,是吧?然后的话是什么东西呢? 然后呢是画什么 come 点 g s p 啊, g s t 二啊,那就是标线库没有支撑,标线库没有支撑的意思是什么意思呢? 实际上呢,我们可以看这个整个项目多了一个阿瓦特沐浴露啊,阿沃特沐浴露的话,我们展开展开再展开,然后呢这里有一个外波音符啊,实际上在这里面我们拆个勒波沐浴露啊,拆个勒波沐浴露, 也就是说我们这个没问里边的这个东西是需要进去的,是需要支撑的。 gst, 我们还是选中这个费用,费用的话选中这个 proutex, 然后是项目的结构,项目的结构呢,我们选中阿迪 fx, 然后选中我们刚刚这个给我们创建的这个阿迪 fx, 然后就输出目录,输出目录的话大家注意啊,我们再来挪过来看一看啊,输出目录呢,在这边展开来,哎,这边只有克拉斯一是吧,然后这是我们的原目录啊,然后这边再展开,这边多了一个什么东西呢?你看啊,多了一个 gst 是吧,然后怎么办呢?很简单,我们把哎这个鼠标啊, 就像这个原木的跟目录鼠标右键,然后有一个破音 two 啊 twouch 啊, ok, 点击一下你会发现这边多了一个内部目录,也就说呢,这个包我们就进去了啊,然后还是一样的,啊呸,然后 ok, ok, 之后的话我们再次去执行这个项目啊,就没有问题了啊,那么我们在这边的话,在主要是在这下面去点啊你,当然呢,你去点这个这个东西啊,也是没有问题的啊。 好,然后我们把它暂停,暂停之后呢,重启,好,我们等待这个 sorrys 的启动,也就等待这个汤姆凯特的启动啊, 我们等它启动之后我们再去看啊,结果怎么样?大家可以看啊,这个 ok 就出来了,也就是说的话呢,我们这样做的话,就轻松轻轻松松的去打造了整个他们开的这样一个环境啊,利用这个 id 啊,打造了一个他们开的环境,然后就可以愉快的开发了。好了,然后点赞加关注啊。

刚面试一个八年扎瓦老开发,简历上写着精通高并发,优化过千万级流量系统。我问他,现在有一个典型的 i o 密集型服务,需要处理大量的数据库查询和外部 api 调用。 qps 五零零零,你怎么设计现成模型?他毫不犹豫用现成尺啊, 根据 cpu 核心数和 i o 时间比例算最佳现成数,比如核心现成一千,最大两千队列用 sigma。 我 点点头,继续追问,好, 那如果每个请求都阻滞等待 i o m, 这两千个县城都在等待县城上下文切换,开销多大你知道吗?如果某个外部接口响应变慢,县城池迅速占满,导致整个应用瘫痪,你怎么隔离?他想了想, 用 histrix 那 样的县城池隔离不同的依赖,用不同的县城池。我接着问,那如果泵发再高一倍到一万 qps, 你 打算开多少县城?每个县城 emb 的 占内存,光是县城占用的内存就要十 gb, 你 的服务器扛得住吗? 如果告诉你有一种技术可以让你轻松创建几十万个虚拟县城,每个开销微乎其微,堵塞时不会消耗操作系统资源,你会用它吗? 他一脸茫然,吱吱呜呜的说,虚拟县城是,是携程吗?这就是很多老 java 工程师的认知盲区,守着传统的县城池模型,用物理县城去硬扛高并发,却不知道 jdk 二一已经全面普及的虚拟县城,彻底颠覆了 i o 密集场景的编程模型, 八年开发还是没有与时俱进啊。面试到此结束,如果这道题目你也不会回答的话,我整理了让大厂 hr 沉默的必考题库,包含 jvm 夺命连环问 spring 灵魂八谷高并发必杀场景、 radis 深度陷阱点个赞,评论区甩六六六,打包带走 nice! 今天我花三分钟带你摸清虚拟县城在二零二六年的实战三部曲,别再让你的县城池堵塞到怀疑人生。第一版斧,场景识别什么时候该拥抱虚拟县城? 虚拟现成不是万能药,但它专治 i o 密集型的疑难杂症。完美匹配大量阻设操作,如 rest api 调用数据库访问文件读写消息、队列消费用虚拟现成,你可以直接写同步代码,不用硬啃 webflex 的 响应式编程,性能依然炸裂。 不是场景, cpu 密集型任务,虚拟现成并不能加速,该用多少 cpu 核心还是多少。此时传统现成池加定型流更合适。 迁移成本,如果你的框架和中间件已经适配虚拟现成,只需把 executeer 换成 executeer's new virtual thread protask executeers, 其他代码几乎零改动。 记住口诀, i o 秘籍,无脑换虚拟计算秘籍,继续用物理。第二版斧,迁移手术 三步让你的老项目跑上虚拟现成,不用重构,不用学习新 api 三步完成升级,升级 jdk 和框架 jdk 二十一加, spring boot 三点二加,确保内嵌容器支持虚拟现成 替换县城池所有 new thread 或 executeers new cache terseflame 全部换成 execters new virtual thread per tasker。 每个任务都会创建一个全新的虚拟县城,用完集坟清亮高效。测试关键路径 虚拟县城在遇到 cyclonized 或 native 方法时,会固定到在体县城,可能导致堵塞扩散。 检查代码,把 secondes 换成 reentrant lock 或 java 点 util 点 concurrent 的 并发工具,避免盯住问题。进阶技巧,用 thread dot off virtual dot name unstarted 定制虚拟县城,还能用 thread bundle 统一管理。 第三版斧,监控与调优,别让虚拟县城变成黑盒儿。虚拟县城数量可以轻松突破系统县城上限,但监控和调优不能缺位 观测性, jdk flight recorder 已经支持虚拟县城事件,可以监控虚拟县城的创建。挂起恢复使用 jcmd 或 jdk mission control 查看虚拟县城站定位。阻测点 限流垄断,虽然虚拟县城清亮,但后端资源仍然是有限资源,配合信号量或阻测队列做限流,防止瞬间百万请求打爆数据库连接池县城局部变量, 虚拟县城支持县城局部变量,但数量多了会占用内存,可以用 scoped value 替代。 thread local jdk 二十一家引入的 scoped value 专门为虚拟县城优化,用完即释放内存更友好。 记住,虚拟县城只是县城,不是银弹,端到端的容量规划才是王道。看到没有?好厉害呦! 这套从场景识别、平滑迁移、监控调优的虚拟县城实战方法论,是二零二六年 java 高级工程师的必修课。别再让传统的县城池模型限制你的系统吞吐量。最后,你的项目开始用虚拟县城了吗?有没有遇到盯住问题或者框架不兼容的坑?

就业篇 top 下载安装 打开他们看的官网 左侧单漏的下载,咱们下载逃不开的酒啊 六十四匹温州 欢迎下载完毕解压, 试着启动一下啊啊这个乱码 咱们需要配一下配置文件 啊,能防盗这个页面就代表启动成功啊, 让咱们停掉。

新建 melvin 项目 melvin demo 完成,打开新窗口 src 梦想新建文件夹微博 a p p 打开项目设置,添加 web 目录修改路径 src 下慢方法下微博 a p p 确认修改路径确认应用 can just 输出 添加 tomcat 地盘沙 tomcat 酒确认添加名称 melvin demo 修改端口号添加输出修改访问路径应用确定 添加 seven light 加包四点零的复制粘贴引入 新建文件夹十一万点 seven light 新建类 seven light 代码 访问路径 index home 继承 h t d p civil 的重写 do get 方法重写 do post 方法 设置编码格式 utf 杠八 设置返回的输出你好 mara missing。



什么是 tomcat? 很多同学刚接触时都会懵, tomcat 到底是干嘛用的?我写好的代码为什么非要放在它里面才能跑?今天我用最简单的话讲明白,首先你要先记住一句话, tomcat 是 一个外部服务器加容器, 专门用来运行 java web 项目的。我们平时上网浏览器访问一个网站,背后要有服务器处理请求,但你写好的 java 代码只是一堆类方法逻辑,它自己不能直接对外提供网站服务,需要一个能把它拖起来,让别人能访问到的东西,这个东西就是 tomcat。 你可以这么理解,你写的扎巴巴布项目是一辆车,而 tomcat 就是 停车场加管理员加公路入口,车不能自己在路上接待乘客,必须停在停车场里,由管理员管理,再让乘客进来。而 tomcat 就是 干这个的,接收用户请求,找到你的代码,然后执行,最后返回结果。 他主要干这几件事,第一,接收请求,用户在浏览器点一下请求,先到 tomcat。 第二,分配请求,找到对应代码处理。第三, 运行项目,把你的 java web 应用启动起来。第四,返回结果,把页面或数据还给用户。所以, tomcat 是 一个专门给 java web 用的中间件外部容器,它的特点也很明显,免费开源、清亮好用,学习成本低,是学习 java web 最经典的服务器。 再给大家一句话,总结一下,你写好的 java 外部程序自己跑不起来, tomcat 就是 负责把它运行起来,让别人能访问的外部容器。最后,你知道 tomcat 和 nix 的 区别是什么吗?可以在评论区说说你的理解。今天的科普就到这里结束了,我们下期再见,拜拜。

有个 size, 系统出大事了,客服接到投诉,用户登录后看到的是别人的订单, a 用户能看到 b 用户的数据,这是数据泄露啊。排查之后发现 tomcat 现成池,两百个现成用户上下文用 threadlocal 存储, filter 里 set 了用户数据,但是没有 remove。 为什么 threadlocal 会导致用户数据串呢? tomcat 现成池在这里扮演了什么 角色?评论区咸菜,这期我们聊 threadlocal 的 底层原理,内存泄露的根源,以及现成池场景下怎么正确使用。把 threadlocal 想象成健身房的储物柜,每个人都有自己的柜子,互不干扰,这就是现成隔离,用完要清空,不清空的话下个人看到的就是你的东西了。关键是健身房的柜子是可附用的, tomcat 的 现成也是可附用的。 red logo 的 核心价值是避免参数层层传递,实现县城内数据共享,但是用完一定要清。很多人以为数据存在 red logo 里,其实不是数据存在 red 的 对象里,每一个 red 持有一个 red local map, redlocal 只有 key, y 六存在县城的 map 里,一个县城可以有多个 threadlocal 变量,最关键的是,县城不死, map 就 不清。看 set 方法的源码,先拿当前县城,再拿现成的 map, 然后用 this, 也就是 threadlocal 自己作为 key 存值,第一次用的话会创建 map get。 同理,从当前县城的 map 里用 threadlocal 作为 key 取 值,所以 threadlocal 本身不存数据,它只是一把钥匙。关键来了,看阴 tree 的 结构, key 是 弱引用, y 六是强引用,这就是问题的根源。泄露链条是这样的, red 的 logo 对 象被回收,若引用嘛, g c 会干掉它。 intre 的 key 变成了 no, 但 intre 还在 y 六被 y 六强引着无法回收。县城不死,比如县城池, y 六就永远留着。 tomcat 的 县城池会放大这个问题, 两百个县城附用等于两百个不清空的储物柜。看这段 filter 代码, set 了用户信息,业务处理完了,但是没有复位,请求结束,县城回到池子,下一个请求附用。这个县城如果没走 set 分 支, 比如说未登录用户 get 拿到的就是上一个用户的数据, tomcat 默认两百现成,最多能串两百个用户的数据,这是严重的安全事故。用代码复现一下,三个现成的现成池跑四个任务,只有 data 为 null 才 set, 否则直接 get 执行任务四可能拿到一二三的某个值。 原因是县城一执行完任务,一回到池子又被分配执行任务四,但 data 里还是任务一的值。阿里规范要求用完必须 remove, 正确的写法是 try finally, try 里面 set 用户信息和业务逻辑, finally 里面 remove。 为什么用 finally 呢?业务代码可能抛异常, finally 能保证一定执行 remove。 第一个坑, 父子县城不共享, thread local 是 县城隔离的,你有 thread, 里面拿不到副县城的值,要传递用 inheritable thread local, 但县城池里也有坑。第二个坑,县城池里加了 inheritable thread local, 县城池的县城只 在创建时继承一次,后续任务拿到的还是第一次的旧址。阿里开源了 transmittable threadlocal, 解决了这个问题。第三个坑, static 修饰更危险,生命周期等于累,加载器比县城还长,但实际项目基本上都是 static 的, 所以更要注意 remove 回到开头的那个数据串的问题 怎么改?加上 try finally, finally 里边 remove 就 这么简单,改完上线之后数据串问题就消失了。系统稳定运行为什么能被县城隔离?数据存在 thread map 里, 每个县城独立为什么会内存泄露? key 若引用被回收, y 六强引用留着为什么会数据串?县城池敷用现成?上个请求的数据还在,怎么避免 try finally 里边 remove 养成习惯?下期聊 summerfall 与 countdown latch 怎么实现?限流和 cyclic barrier 怎么选?实战并行调用多个接口汇总结果。