Java EE学习
文章平均质量分 82
InterestAndFun
JVM垃圾回收为何不使用360安全卫士?
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java异步调用接口实现方式
使用异步技术在大多情况下能够提升性能,而且会很显著,但不是盲目地使用多线程就能提高性能了。要合理考虑多个线程之间的协助,避免线程挂起阻塞太久,额外开启线程的性能开销不可忽视。可以在开启子线程的同时,主线程继续执行其它的操作,执行完成之后再判断子线程是否完成。如果想使用多线程提高系统的tps,一定要分析瓶颈所在之处。比如文中举的案例,如果瓶颈在接口响应的时间上,把调用A接口和调用B接口异步处理,并不能提升整体的性能,只能改进整体的响应时间。原创 2023-12-20 11:34:25 · 5918 阅读 · 0 评论 -
maven项目可以运行但是打包后执行报错
导入maven插件工具shade即可解决该问题,在开发工具中,下面的goals -> goal中的shade会变红色,我也不知道为什么,但是我可以很确定告诉你,就是这么配置的。根据上面的报错原因,是找不到我导入的maven的依赖,我很确定我在dependencies中是有导入了的,不然我开发的时候怎么执行的呢。真的除了我代码中的文件,maven依赖的包它是一个都没给我放进去,难怪会找不到文件呢。也可以,不过这个通常会在线上拉包,我个人不太喜欢,不过也给出示范了。是要共存的,否则会无法打包。原创 2023-12-18 16:07:19 · 1450 阅读 · 0 评论 -
Java list安全删除元素详解
分析了一下ArrayList的源码,原来增强for循环的实现原理是使用了Iterator迭代器,而ArrayList重写了迭代器的next方法,每次迭代时会检查是否做了新增或者删除操作(modCount++),而这些操作都会导致期待值与实际值不对等,从而抛出异常。我不理解什么是安全删除,我开发的业务中也很少说需要用到remove的,我只记得一般用的话,都是remove(index)这样。其实原理很简单,就是因为List.remove删除元素后,数组的整体下标会往前移动,原本的位置被遍历过了,就会被跳过。原创 2023-06-14 14:57:40 · 4072 阅读 · 0 评论 -
抽象类中有一个空实现方法A,部分子类重写方法A,抽象类B调用方法A会发生什么
在看别人写过的代码的时候,发现了一个很有意思的设计。学艺不精一时之间不知道这代码是怎么调用的,做了一个简单的代码模型分析了一下,感觉比较有意思,就分享一下。子类Son1继承Father类,并重写了AFunc()其中,otherFunc()中调用了父类的BFunc()方法子类Son2继承Father类,不重写AFunc()其中,otherFunc()中调用了父类的BFunc()方法这是基于我所接触的代码中的一个简化模型,项目中原本是有几十个子类实现了AFunc()与几十个不实现AFunc原创 2022-12-26 11:07:09 · 270 阅读 · 0 评论 -
Java8 重要新特性 Lambda表达式
函数式编程思想概述在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作”。面向对象思想强调“必须通过对象的形式来做事情”,函数式思想则尽量忽略面向对象的复杂语句:“强调做什么,而不是以什么形式去做”。而我们学习的Lambda表达式就是函数式思想的体现。基本语法组成Lambda表达式的三要素:形式参数,箭头,代码块(形式参数) -> {代码块}形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可-> :由英文划线和大于符号组成的固定写法,代表指向动作原创 2021-12-06 16:50:18 · 371 阅读 · 0 评论 -
Java多线程快速入门学习
进程与线程的区别进程进程是正在运行的程序,是系统进行资源分配和调用的独立单位,没一个进程都有它自己的内存空间和系统资源。线程线程是进程中的单个顺序控制流,是一条执行路径。单线程程序和多线程程序的区分,就在于进程中是否有多条执行路径。如果你还是不知道执行路径是什么的话,那就看看这些例子:你打开了一个【记事本】程序,然后打开它的【页面设置】界面,这时候你再点击输入框,先输入点东西,你发现一直在提醒你先把【页面设置】关闭再尝试输入。这就是只有一条执行路径的应用程序。扫雷游戏,当你点击了一下其中原创 2021-11-18 11:06:41 · 685 阅读 · 0 评论 -
实验七:springboot的使用 用springboot做的第一个项目
题目使用SpringBoot完成以下项目:客户端发初请求:http://localhost:8080/hello?username=张三,服务器根据本地时间生成相应问候(0-5点:早上好;6-11点:上午好;12-17点:下午好;18-23点:晚上好)用户的语句,并以JSON方式返回客户端。题解作为第一个SpringBoot的项目,就从怎么创建SpringBoot项目开始讲解。1. 创建SpringBoot项目完成该项目只需要导入web依赖即可点击完成,等候项目初始化完成2. 创建Con原创 2021-05-25 19:25:07 · 1091 阅读 · 6 评论 -
实验七的实验内容二(期末) SpringBoot整合ssm项目,超详细分析
题目某书店库存图书与售出图书如下表所示,当客户来购买图书时,书店会减少库存图书数量,并增加相应的售出图书数量。使用Spring声明事务控制来保证库存图书数量和售出图书数量的二者变化一致。用SpringBoot整合实现上述实验内容,从底层数据库经过Repository、Service、Controller到客户端,完成一个完整的SpringBoot项目。讲解根据上面的表得知,该项目并不难实现(就3个字段,能难到什么程度)。先思考一下开发步骤在数据库中创建表创建项目并导入所需的包编写实体类编原创 2021-05-17 19:27:33 · 1437 阅读 · 5 评论 -
实验六:使用SpringMVC完成下面的项目
一、实验内容使用SpringMVC框架完成下面项目,对候选人(下图知识演示样式,换成自己喜欢的人)的投票选择后,跳转道相应页面。并增加一个年龄填空和输出以练习前后端的传入传出练习。二、实验解法根据题目的要求,本次实验并不难,实验目的实质是熟悉SpringMVC开发步骤。在这里主要讲的是SpringMVC的开发步骤,前端并没有什么复杂操作,所以略过。1. 创建web项目由于省事,web项目推荐使用maven骨架来创建,当然,不使用骨架也是可以的,参考不使用骨架创建web项目然后next,填写原创 2021-05-14 12:26:58 · 1332 阅读 · 9 评论 -
Spring数据库的编程(spring整合mybatis)
1. Spring中配置数据库连接源的方式Spring中万物皆bean,包括数据库资源。Spring数据库编程中,Spring为我们提供了简单易用的数据库连接接口,我们只要提供driverclassname、url、username、password即可帮我们返回一个连接对象,而不需要原生的JDBC连接那么繁琐。Spring中将数据源转化成bean的方式有:使用Spring自带的DriverManagerDataSource进行简单数据库资源配置。该类位于 Spring 的org.springfra原创 2021-04-29 17:48:48 · 591 阅读 · 0 评论 -
实验五:SpringAOP案例实现
题目要求有VisitService接口和它的实现类,作为切入类public interface VisitService { void visit(String str) throws Exception;}public class VisitServiceImpl implements VisitService { @Override public void visit(String str) throws Exception { System.out.p原创 2021-04-28 22:23:52 · 1000 阅读 · 3 评论 -
Spring AOP详解
在讲AOP之前,我们需要了解一点前置知识:动态代理在设计模式中,有一种设计模式称为代理模式。代理模式是由代理类与委托类来组成,代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。举个现实生活中的代理例子:你去餐厅吃饭,你吆喝服务员来点餐,服务员把你的订单和厨师说,完成你的点餐操作。在这个过程中,你是属于客户,需要点餐服务,服务员是代理对象,厨师才是干活的那个委托类。按照代理的创建时期,代理原创 2021-04-26 20:10:59 · 581 阅读 · 5 评论 -
Spring中基于注解的配置详解
在现在的框架开发中,大多数用的都是注解开发技术。注解配置要实现的功能和XML实现的功能都是一样的,只是配置的形式不同。注解的标签可以分为3类:创建对象、注入数据、其他配置。XML配置文件亦是如此。看一个简单的例子:例子中的3个框就是分成了3类,这三类标签最后都可以用注解来代替。现在开始详细介绍spring中的标签。一、Spring中的标签汇总用于创建对象: @Component、@Controller、@Service、@Repository用于注入数据: @Value、@Resource、@原创 2021-04-20 10:30:32 · 1374 阅读 · 3 评论 -
实验四(增强版):完成一个练习Spring框架IoC基本适用的小程序(Spring整合Mybatis版本)
实验内容题目: 有一个Person类public class Person { private String name; private Pet pet; public String getName() { return name; } public void setName(String name) { this.name = name; } public Pet getPet() { ret原创 2021-04-15 00:28:07 · 682 阅读 · 1 评论 -
<T>T getBean(Class<T> requiredType):方法描述中的“唯一的bean实例”是什么意思?唯一体现在哪里?
先来看方法的描述与正确的用法<T>T getBean(Class requiredType): 返回容器中属于requiredType类型的、唯一的bean实例。<bean id="person" class="com.test.pojo.Person" scope="prototype"> <property name="name" value="Zhangsan"/> <property name="pet" ref="pet"/><原创 2021-04-14 15:08:46 · 1602 阅读 · 4 评论 -
spring获取容器对象 getBean()方法的使用
getBean中有两种方法可以获取对象1. getBean(String name)通过配置文件中id的方式获取对象ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");Book b = (Book) app.getBean("配置文件中的id");可以看到,通过id方式获取对象,返回的是Object类型,需要强制转换类型2. getBean(Class requiredTyp原创 2021-01-13 13:21:01 · 14688 阅读 · 0 评论 -
Spring IoC(控制反转)与DI(依赖注入)的区别
当某个java 实例需要另一个java实例时,创建被调用者的工作不是由调用者实现,而是由spring容器来完成,然后注入调用者,因此称为依赖注入。原创 2021-04-14 13:32:31 · 5583 阅读 · 2 评论 -
实验四:完成一个练习Spring框架IoC基本适用的小程序
实验内容**题目:**有一个Person类public class Person { private String name; private Pet pet; public String getName() { return name; } public void setName(String name) { this.name = name; } public Pet getPet() {原创 2021-04-13 23:05:50 · 945 阅读 · 4 评论 -
实验三 在实验二的基础上使用注解在Mybatis框架中完成增删改查操作
Mybatis的xml映射文件与注解方式有些许区别,具体体现在Mybatis配置文件与Mapper接口中。1. mybatis配置文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><c原创 2021-04-01 21:44:40 · 445 阅读 · 0 评论
分享