JDK

Tomcat服务器的下载与安装。并配置到 idear中

强颜欢笑 提交于 2021-02-02 10:33:02
文章目录 前言 一、Tomcat服务器(重点) 软件架构 常见的web服务器 二、下载步骤 注意: 二、将Tomcat配置到 idear中 三、新建一个web项目(重要) 四、IDEA中热部署【重点掌握】 总结 前言   Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。 一、Tomcat服务器(重点) 软件架构   1).C/S(Client/Server)(客户端/服务器)结构:桌面、网络版应用程序。例如:QQ,暴风,百度网盘,各种游戏的客户端 特点:在客户端电脑需要安装后才能使用,启动后都有自己的“界面”,运行时,需要要联网。 缺点:制作困难(至少要有客户端程序、服务器程序)、客户端使用麻烦(需要下载安装程序,安装)、后期维护,更新困难(尤其是客户端)。 优点:可以充分的利用客户端硬件资源(CPU、显卡…)可以在界面上显示非常酷炫的效果。   2).B/S

MyBatis架构和源码

孤街浪徒 提交于 2021-02-02 07:25:56
Mybatis架构解读 1. 架构图 如题,这就是 MyBatis 的执行架构图。 解释一下: 我们在使用 MyBatis 的 CRUD 操作的时候,一般有两种方式,一、直接调用 sqlSession 的 crud 方法;二、通过调用 getMapper 获取到接口代理的实现类,然后在代理方法中调用了 crud 方法。 可以看到,本质相同,最终调用的都是 sqlSession 的方法,上图就是 CRUD 执行的流程 2. 执行流程图 我们先来看一下我们执行一个 MyBatis 的查询,需要做什么。 //加载一个配置文件 InputStream resourceAsStream = Resources.getResourceAsStream( "main.xml" ); SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper

Java核心复习—— 原子性、有序性与Happens-Before

眉间皱痕 提交于 2021-02-02 06:42:51
一、 产生并发Bug的源头 可见性 缓存导致的可见性问题 原子性 线程切换带来的原子性问题 有序性 编译优化带来的有序性问题 上面讲到了 volatile 与可见性 ,本章再主要讲下原子性、有序性与Happens-Before规则。 二、线程切换带来的原子性问题 count += 1 这一句高级语言的语句,往往需要多条CPU执令。可以分为3步: 将count值加载到寄存器 在寄存器中对count进行+1操作 将count值写回内存 所以,我们需要在高级语言的层面上,确保一些操作是原子性操作。 三、编译优化带来的有序性问题 编译器为了优化性能,有时会改变程序中语句的先后顺序。 a = 6; b = 7; 经过编译优化后,可能会变成 b = 7; a = 6 双重检查创建单例对象 public class Singleton{ static Singleton instance; static Singleton getInstance(){ if(instance == null){ synchronized(Singleton.class){ if(instance == null){ instance = new Singleton(); } } } } } 这个例子看似很完美,但其实是可能触发空指针异常。 为什么可能会触发空指针异常。 假设getInstance(

收藏,吊打面试官的kafka知识!

此生再无相见时 提交于 2021-02-02 06:09:48
1 什么是kafka Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。 2 为什么要使用 kafka,为什么要使用消息队列 缓冲和削峰: 上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性: 项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。 冗余: 可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。 健壮性: 消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。 异步通信: 很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。 3.Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么 ISR:In-Sync Replicas 副本同步队列 AR:Assigned Replicas 所有副本

JAVA兼职架构师

自古美人都是妖i 提交于 2021-02-02 06:04:49
在一些小企业或者公司人力不足的时候,经常会出现一个人干多个人的活。开发可能会干架构、测试、运维,一些小项目可能需要一个人完成。我把这些角色合并在一起称之为兼职架构师。 我用我的经历来说说兼职架构师的需要干的事吧。 1.首先,幸运的事情至少我还有一个产品经理,可以给出RoadMap,比如下: 单独项目的唯一好处是,产品经理会给你安排一个大致时间,可以把控一下时间和进度。你也不需要开会,因为就你一个人,不过看过《人月神话》的都知道,1+1有时并不能大于2。当然我们底层功能的版本有人C++的人来支持,这边不叙说了。 first,你拿到roadmap心中需要有个大致安排时间,技术选型,功能组织架构。尽量多思考,花多一点时间去想如何实现比较好,哪些重点功能,哪些列出来可以不需要首先完成的(可以自由安排优先级,一般周末很少需要加班,效率非常高) second,因为我们测试人少,基本一个月一个小版本(小版本自己测试),一个季度保持一个大版本(大版本有测试帮测)。没有运维,就要考虑到部署人员通俗易懂,一个脚本需要执行所有环境的安排(内网实体机,需要安装包带所有功能,jdk,tomcat,mysql等脚本安装),所以非常考验脚本功底。尽量多想、多测,你也不想实施人员半夜打你电话吧? at last,你需要geek最新技术,我重构的项目经历过struts2 到spring mvc

05

心已入冬 提交于 2021-02-02 05:04:28
 在使用Jmeter进行接口的性能测试时, 由于Jmeter是JAVA应用, 对于CPU的内存消耗比较大, 所以, 当需要模拟数以万计的的并发用户时, 使用单台机器模拟所有用户并发就会有些力不从心了, 还会引起JAVA的内存溢出错误, 为了让Jmeter工具提供更大的负载能力, 这时可以使用Jmeter提供的分布式功能来启动多来电脑实施压力测试。 Jmeter分布式原理 Jmeter分布式执行时,选择其中一台作为控制机(Controller),其它机器作为代理机(Agent); 执行时,Controller会把脚本发送到Agent上,Agent拿到脚本后开始执行,Agent执行时不需要打开Jmeter, 只需要打开Jmeter-server.bat Agent会把结果回传给Controller, Controller会收集所有Agent信息并且汇总; 控制机(Controller)配置: Controller需要安装JDK、Jmeter,并且配置好环境变量; 查看本机IP ipconfig  例如:192.168.10.180; 打开Jmeter/bin/jmeter.properties,找到 remote_hosts=127.0.0.1 , 把这一行修改为 emote_hosts=192.168.8.1789:1099,192.168.10.180 ; 如果有多台代理机

JMeter如何和Charles进行接口测试

◇◆丶佛笑我妖孽 提交于 2021-02-02 03:56:22
  什么是接口测试,接口测试到底如何开展,我相信任何一个软件测试人员都会有这样的疑问, 这里我以接口测试自动化平台的登录接口进行讲解。 一、什么是接口测试?   接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。 测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。--------->摘自百度百科   通俗的讲,就是对人扒了皮之后对这个人进行检测,可以直观的看心脏跳不跳动,而不再是依靠听啊或者脉搏来判断心脏是否 在跳动。对应到程序上来讲的话,就是不需要再UI上进行点击来猜测这个数据能否调通,可以直接通过接口返回直观的看到数据是 否已调通。 二、接口测试的好处   2.1、前后端bug分离,更好的将问题指定给对应的开发人员   2.1、缩短项目周期,接口测试可以在开发给出对应的接口后就能够进行测试,理论上来说,开发好一个接口,就可以测试一个 接口,减少联调的时间,后期进行功能测试的时候只需要对应前端开发人员即可 三、接口测试如何开展   3.1、优良的接口文档   3.2、接口测试工具 这里我用到的接口测试工具是JMeter    首先 说明一下什么是优良的接口文档:优良的接口文档必定具有两个特性,可读性和可执行性。对于接口文档来说,我们必定会 在里面看到接口的定义(包含:入参、出参、请求方式

Spring boot 项目导出可执行jar

。_饼干妹妹 提交于 2021-02-02 03:43:44
配置文件中添加插件 < plugin > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-maven-plugin </ artifactId > < version > 2.0.5.RELEASE </ version > < executions > < execution > < goals > < goal > repackage </ goal > </ goals > </ execution > </ executions > </ plugin > 示例如下: 1. 新建Maven 项目 exejar 2. pom.xml < 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 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 </ modelVersion > < groupId > com.java </

JAVA AIO

烂漫一生 提交于 2021-02-02 00:39:45
AIO 与NIO不同,当进行读写操作时,只须直接调用API的read或write方法即可。这两种方法均为异步的,对于读操作而言,当有流可读取时,操作系统会将可读的流传入read方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将write方法传递的流写入完毕时,操作系统主动通知应用程序。 即可以理解为,read/write方法都是异步的,完成后会主动调用回调函数。 在JDK1.7中,这部分内容被称作NIO.2,主要在java.nio.channels包下增加了下面四个异步通道: AsynchronousSocketChannel AsynchronousServerSocketChannel AsynchronousFileChannel AsynchronousDatagramChannel 其中的read/write方法,会返回一个带回调函数的对象,当执行完读取/写入操作后,直接调用回调函数。 BIO是一个连接一个线程。 NIO是一个请求一个线程。 AIO是一个有效请求一个线程。 来源: oschina 链接: https://my.oschina.net/u/4120502/blog/3074960

新手IntelliJ IDEA入门指南

落花浮王杯 提交于 2021-02-01 13:17:33
IntelliJ IDEA 2018.1.5 x64 新手入门配置 1.设置JDK ---> File菜单 ---> Project Structure ---> Project ---> Project SDK下拉框 ---> 如果下拉框显示'No SDK'说明还没有设置JDK ---> New按钮 -> JDK ---> 选择你的JDK安装目录 ---> OK 2.设置Tomcat ---> File菜单 ---> Settings ---> 输入'server',搜索 ---> Application Servers ---> 点中间上面绿色加号 ---> Tomcat Server ---> 选择你的Tomcat安装目录 ---> OK 3.普通项目改为Maven项目 选中项目 ---> 右键 ---> Add Frameworks Support ---> Maven ---> OK 会按Maven规范生成代码目录,可能还需要手动标记目录的用途(如果IDEA未自动设置): 选中src/main/java目录,右键 -> Mark Directory as -> Sources Root 选中src/main/resources目录,右键 -> Mark Directory as -> Resources Root 选中src/test/java目录,右键 -> Mark