首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

好程序员Java教程入门基础之Tomcat学习

Jrebel公布了一份2020 Java生态系统报告,调查结果显示,有61%的开发者们使用的主要应用服务器还是Tomcat。很多初学Java的人不知道怎么入门Tomcat,接下来的好程序员Java学习教程中,给大家做一个简单的知识梳理。 Tomcat是什么 Tomcat是由Apache开发的一个Servlet容器,实现了对Servlet和JSP的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。Tomcat包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。 Tomcat重要目录 /bin - Tomcat 脚本存放目录(如启动、关闭脚本)。 .sh 文件用于 Unix 系统; .bat 文件用于 Windows 系统。 /conf - Tomcat 配置文件目录。 /logs - Tomcat 默认日志目录。 /webapps - webapp 运行的目录。 Tomcat常见组件 1.服务器(server) 实例,通常一个JVM只能包含一个实例,一般情况下,一个物理服务器可以启动多个JVM,从而启动多个实例,但一般不这么做。 2.服务(service) 一个服务组件通常包含一个引擎和此引擎相关联的一个或多个链接服务器。 3.连接器(connectors) 一个引擎能配置多个连接器,但是每个连接器的端口不能冲突。同时,Tomcat也支持AJP JSERV和JK2连接器,实现让Apache反向代理到后端服务器的非常高效的传输协议。 4.引擎 可以自己接收用户的http请求,并构建响应报文,而且可以在内部处理java程序的整个套间 。 5.主机 6.上下文 7.阀门,能够过滤也可以做访问控制。 8.日志记录器 9.领域(Realm),用来实现用户的认证和授权。 任何Tomcat实例就是一个server,而一个server内部要想能够解析JSP页面转义编译serlet程序,要靠其引擎来实现。而引擎才是真正意义上执行JSP代码的容器,都是Tomcat用类来描述这些组件的。同时,为了接受用户的请求,需要基于connector组件,所谓监听的套接字的程序,能够接手用户的请求,被称为连接器。一个server内部可以完全运行N个引擎,无非就是运行多个虚拟机而已。 Tomcat的安装 查看文件: # cat /usr/local/tomcat/conf/server.xml Listener为侦听器,通常实现tomcat内部进行通信的,可在各组件之间完成通信 全局命名资源,方便全局引用,所以为其起完名称后可以随便调用的 type="org.apache.catalina.UserDatabase" description="User databasethat can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> #其调用tomcat-user.xml配置文件进行用户认证 服务类组件配置信息,将连接器关联至引擎上 connectionTimeout="20000" #连接超时时间,单位毫秒 redirectPort="8443" /> #必要的时候可以做重定向,定义在8443 maxThreads="150" scheme="https" secure="true" #最大线程,协议版本,安全的 clientAuth="false" sslProtocol="TLS" /> #不验证客户端 ssl协议用的是tls #引擎,名为catalina resourceName="UserDatabase"/> unpackWARs="true" autoDeploy="true"> #如果是war文件格式,是否解压,是否自动部署 #定义阀门,java中类的记录方式,当前所处域名反过来写的记录方式 prefix="localhost_access_log." suffix=".txt" #日志的命名 suffix表示时间戳 pattern="%h %l %u %t "%r" %s %b" /> #访问日志的格式

优秀的个人博客,低调大师

Python系列-人工智能篇:带你搞懂TensorFlow基础入门

“阅读全文需8.5分钟,关注公众号:【测试开发技术】,后台回复me可免费领取学习资料。” 01 开篇 当今在互联网混,不随口说出深度学习,人工智能,机器学习,神经网络等词,人家都怀疑是个假的互联网人了,但相信大部分没有深入接触这块知识的人来说,对于这几个概念,都还是傻傻分不清? 记得,自从AlphaGo那波,业界似乎对机器学习推到一个新的高度?? 本来是不太想沾这趟混水的,但是作为一名技术控,还是需要了解一下,至少也得对概念有点印象。对于人工智能这块领域,笔者也还是一名小学生,如果对这块有不对的地方,请各位同学及时提出~ 02 扫盲 深度学习,人工智能,机器学习,神经网络,这4个词在近几年出现的比较多,但是它们之间有什么关系呢?尤其,机器学习跟深度学习区别在哪里?? 人工智能,英文Artificial Intelligence,简称AI,那人工智能的目的是什么?网上一大堆,好听的叫解放/发展生产力,解放人类,总的来说是提高效率!!! 但更通俗的理解就是帮助人们:偷懒! 比如当你说一句话时,机器能够识别成文字,并理解你话的意思,进行分析和对话等。 人工智能的核心在于智能两字,那智能怎么来的?主要归功于一种实现人工智能的方法--机器学习; 那目前人工智能的应用场景有哪些:OCR、语音技术(比如Siri)、大数据应用等。 机器学习:一种实现人工智能的方法! 机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对事件做出决策和预测。需要用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。 举个例子,当浏览网上商城时,经常会出现商品推荐的信息。这是商城根据往期的购物记录和冗长的收藏清单,识别出这其中哪些是真正感兴趣,并且愿意购买的产品。这样的决策模型,可以帮助商城为客户提供建议并鼓励产品消费。 机器学习通常分为三类: 第一类是无监督学习,指的是从信息出发自动寻找规律,并将其分成各种类别,有时也称"聚类问题"。 第二类是监督学习,监督学习指的是给历史一个标签,运用模型预测结果。如有一个水果,我们根据水果的形状和颜色去判断到底是香蕉还是苹果,这就是一个监督学习的例子。 最后一类为强化学习,是指可以用来支持人们去做决策和规划的一个学习方式,它是对人的一些动作、行为产生奖励的回馈机制,通过这个回馈机制促进学习,这与人类的学习相似,所以强化学习是目前研究的重要方向之一。 深度学习:一种实现机器学习的技术深度学习是机器学习的一个子领域,是利用深度的神经网络,将模型处理得更为复杂,从而使模型对数据的理解更加深入; 深度学习的核心是,我们现在有足够快的计算机和足够的数据来实际训练大型神经网络 三者的区别和联系:机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。 神经网络:是一种机器学习的算法以“停止(Stop)标志牌”为例,将一个停止标志牌图像的所有元素都打碎,然后用神经元进行“检查”:八边形的外形、消防车般的红颜色、鲜明突出的字母、交通标志的典型尺寸和静止不动运动特性等等。神经网络的任务就是给出结论,它到底是不是一个停止标志牌。神经网络会根据所有权重,给出一个经过深思熟虑的猜测——“概率向量”。 神经网络是需要调制、训练的,不然会很容易出错的。 OK,讲到这里,相信大家对几者之间的概念已经有所了解了,至少知道这些是什么东西了。 简单总结下:机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术,神经网络是一种实现机器学习的算法! 03 TensorFlow简介 TensorFlow是Google在2015年11月份开源的人工智能系统,由Google Brain团队的研发人员负责,该系统可以被用于实现机器学习和深度学习、语音识别、图片识别等多个领域。 官网对TensorFlow的介绍是一个使用数据流图技术来进行数值计算的开源软件库。 数据流图中的节点,代表数值运算; 节点节点之间的边,代表多维数据(tensors)之间的某种联系。 可以在多种设备(含有CPU或GPU)上通过简单的API调用来使用该系统的功能。 官网地址:https://github.com/tensorflow/tensorflow 什么是数据流图?数据流图是描述有向图中的数值计算过程。有向图中的节点通常代表数学运算,但也可以表示数据的输入、输出和读写等操作;有向图中的边表示节点之间的某种联系,它负责传输多维数据(Tensors)。 节点可以被分配到多个计算设备上,可以异步和并行地执行操作。因为是有向图,所以只有等到之前的入度节点们的计算状态完成后,当前节点才能执行操作。 TensorFlow的特性 灵活性,TensorFlow不是一个严格的神经网络工具包,只要你可以使用数据流图来描述你的计算过程,你可以使用TensorFlow做任何事情。你还可以方便地根据需要来构建数据流图,用简单的Python语言来实现高层次的功能。 可移植性,TensorFlow可以在任意具备CPU或者GPU的设备上运行,你可以专注于实现你的想法,而不用去考虑硬件环境问题,你甚至可以利用Docker技术来实现相关的云服务。 提高开发效率,TensorFlow可以提升你所研究的东西产品化的效率,并且可以方便与同行们共享代码- 支持语言选项,目前TensorFlow支持Python和C++语言。 充分利用硬件资源,最大化计算性能。 TensorFlow最新版本为2.0,在TensorFlow2.x中摈弃了TensorFlow 1.x的诸多弊病,进一步整合TensorFlow和Keras,号称能像Numpy一样畅爽运行,快速、可扩展、可投入生产。 目前,TensorFlow包含开源的创新和社区参与,同时也具有大公司的支持,指导和稳定性。 正是因为有着大量的优势,TensorFlow适合个人和企业,从初创公司到大型公司,以及Google。即从2015年11月开源以来,TensorFlow已经成为最为令人兴奋的机器学习库之一。它被越来越多地应用到研究,生产和教育中。 04 TensorFlow安装 如果你已经安装了Python(或者是为了学习TensorFlow的目的安装的),你可以通过下面的pip安装: pip install tensorflow 但是,这个方法的坏处在于,TensorFlow会覆盖现有的包,并安装特定的版本来满足依赖性。 如果你要使用这个Python来做其他用途的话,这个方法是不可行的。一个常见的做法就是在虚拟环境中安装TensorFlow,通过一个叫做virtualenv的软件实现。这取决于你的环境,你可能不需要在你的机器上安装virtualenv。要安装virtualenv的话,输入: pip install virtualenv 可查看http://virtualenv.pypa.io 获取更多的操作指南。 为了在虚拟环境中安装TensorFlow,你必须要先创建虚拟环境,例如将其放在~/envs目录中,可以随意放在你喜欢的任何地方。 cd ~mkdir envsvirtualenv ~/envs/tensorflow 这会在~/envs目录下创建一个名为TensorFlow的虚拟环境(会展现为~/envs/tensorflow目录的形式)。启动这个虚拟环境,使用: source ~/envs/tensorflow/bin/activate 提示会发现变化表明环境已经启动了,再使用输入pip的安装命令: (tensorflow) pip install tensorflow 上面是CPU的版本,或者是安装GPU的版本: pip install tensorflow-gpu 更多详细的安装介绍可参考: https://github.com/jikexueyuanwiki/tensorflow-zh/blob/master/SOURCE/get_started/os_setup.md 05 TensorFlow第一个示例 现在,我们已经安装并设置好了TensorFlow的环境。开始写一个简单的TensorFlow的程序吧,打印当前TensorFlow版本、计算1+2的值,并将“Hello”和“World”结合起来,显示出字段——“HelloWorld”。 import os import tensorflow as tf os.environ["TF_CPP_MIN_LOG_LEVEL"]='2' print(tf.__version__) print(tf.add(1, 2).numpy()) hello = tf.constant('Hello, TensorFlow!') print(hello.numpy()) 如果在运行过程中,提示:image 这是因为tensorflow默认分布是在没有CPU扩展的情况下构建的,例如SSE4.1,SSE4.2,AVX,AVX2,FMA等。默认构建(来自pip3 install tensorflow)可以与尽可能多的CPU兼容。如果没有GPU,并希望尽可能利用CPU的资源。 可以在最顶行增加如下代码 import os # os.environ["TF_CPP_MIN_LOG_LEVEL"]='1' # 这是默认的显示等级,显示所有信息 os.environ["TF_CPP_MIN_LOG_LEVEL"]='2' # 只显示 warning 和 Error # os.environ["TF_CPP_MIN_LOG_LEVEL"]='3' # 只显示 Error 最后,关注公众号「测试开发技术」后台回复me, 可扫码添加作者微信,免费领取学习资料。 更详细,可点击:阅读原文

优秀的个人博客,低调大师

Spring 框架基础(03):核心思想 IOC 说明,案例演示

本文源码:GitHub·点这里 || GitEE·点这里 一、IOC控制反转 1、IOC容器思想 Java系统中对象耦合关系十分复杂,系统的各模块之间依赖,微服务模块之间的相互调用请求,都是这个道理。降低系统模块之间、对象之间、微服务的服务之间耦合度,是软件工程核心问题之一。因为Spring框架中核心思想就是IOC控制反转,用来实现对象之间的解耦。 2、控制反转 传统方式 对象A如果想使用对象B的功能方法,在需要的时候创建对象B的实例,调用需要的方法,对对象B有主动的控制权。 IOC容器 当使用IOC容器之后,对象A和B之间失去了直接联系,对象A如果想使用对象B的功能方法,IOC容器会自动创建一个对象B实例注入到对象A需要的功能模块中,这样对象A失去了主动控制权,也就是控制反转了。 3、依赖注入 IOC给对象直接建立关系的动作,称为DI依赖注入(Dependency Injection);依赖:对象A需要使用对象B的功能,则称对象A依赖对象B。注入:在对象A中实例化对象B,从而使用对象B的功能,该动作称为注入。 二、IOC容器案例 1、买票乘车场景 简单乘车类 public class ByBus { // 方式一:直接实例化 // private BuyTicket buyTicket = new BuyTicket () ; private BuyTicket buyTicket ; public BuyTicket getBuyTicket() { return buyTicket; } public void setBuyTicket(BuyTicket buyTicket) { this.buyTicket = buyTicket; } public void takeBus (){ String myTicket = this.getBuyTicket().getTicket() ; if (myTicket.equals("ticket")){ System.out.println("乘车"); } } } 简单买票类 public class BuyTicket { public String getTicket (){ return "ticket" ; } } 2、Spring配置文件 这里用过Spring配置文件,给乘车类中,注入买票类,进而完成完整动作。 <bean id="byBus" class="com.spring.mvc.entity.ByBus"> <property name="buyTicket" ref="buyTicket" /> </bean> <bean id="buyTicket" class="com.spring.mvc.entity.BuyTicket"/> 3、测试代码 public class Test1 { @Test public void test01 (){ ApplicationContext context = new ClassPathXmlApplicationContext("/ioc-contain-01.xml"); ByBus byBus = (ByBus) context.getBean("byBus"); byBus.takeBus(); } } 三、核心API总结 针对上面用到的几个核心API进行说明,后续持续总结。 1、BeanFactory 这是一个工厂,用于生成任意bean。采取延迟加载,第一次getBean时才会初始化Bean。 2、ApplicationContext 是BeanFactory的子接口,功能更强大。(国际化处理、事件传递、Bean自动装配、各种不同应用层的Context实现)。当配置文件被加载,就进行对象实例化。 3、ClassPathXmlApplicationContext 用于加载classpath(类路径、src)下的xml加载xml运行时位置:/WEB-INF/classes/...xml 4、FileSystemXmlApplicationContext 用于加载指定盘符下的xml加载xml运行时位置:/WEB-INF/...xml,通过ServletContext.getRealPath()获得具体盘符配置。 四、源代码地址 GitHub·地址 https://github.com/cicadasmile/spring-mvc-parent GitEE·地址 https://gitee.com/cicadasmile/spring-mvc-parent

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册