
Java基础
文章平均质量分 67
涯一涯二涯三
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JAVA经典算法34题
JAVA经典算法34题转载 2022-08-20 16:26:57 · 380 阅读 · 0 评论 -
单元测试的写法(JUnit 5 )
单元测试的写法(JUnit 5 ) 1 单元测试概念单元测试时指针对最小的功能单元编写的测试代码,以判定实际结果与期望结果一致。java中最小的功能单元就是方法。在针对方法的功能进行单元测试时不必关心方法的具体实现逻辑,只要结果与期望一致。方法中改动了代码,如果通过了单元测试,也意味着改动成功。单元测试可以通过mock来取代业务代码逻辑的强依赖性。2 单元测试规则单元测试规则3 单元测试写法3.1 关于mockitomockito既能mock接口也能mock实体类。@RunWith注解什么原创 2021-10-27 08:00:00 · 1940 阅读 · 2 评论 -
开发日常遇见的问题
question: 1.springcloud 启动时出现莫名的ipFetching config from server at http://192.1.1.133:8888answer:还有种场景是 Fetching config from server at : http://192.1.1.133:8888 这里的192.1.1.133是指镜像布置后自键overlay类型网段下的ip ,与本地开发机网不通question: 2.Spring Cloud基于Spring Boot,为微服原创 2020-09-22 11:04:16 · 232 阅读 · 1 评论 -
Garbage Collector Ergonomics
Garbage Collector Ergonomics垃圾收集策略Note: For Java SE 8 and later, see Java HotSpot Virtual Machine Garbage Collection Tuning Guide.注意:对于JavaSE8和更高版本,请参阅JavaHotspot虚拟机垃圾收集优化指南。The following changes take effect with Java SE 5.0.以下更改在JavaSE5.0中生效。Garbage转载 2020-06-08 23:37:00 · 266 阅读 · 0 评论 -
后端接收不到前端传入的自定义header
请求参数HttpServletRequest request在request.getHeader(“header名称”)代码之前加if (request.getMethod().equals("OPTIONS")) { response.setStatus(HttpServletResponse.SC_OK);}浏览器会在发送真正请求之前,先发送一个方法为OPTIONS的预检请求...原创 2020-05-07 23:03:06 · 3221 阅读 · 0 评论 -
java控制台输出字变颜色
import java.util.HashMap;import java.util.Map;import java.util.Objects;import java.util.Scanner;/** * @Description 根据用户输入变更控制台字的颜色 * @Author jp * @Date 2020/2/22 17:58 **/public class UserIm...原创 2020-02-22 20:42:00 · 6188 阅读 · 0 评论 -
入参限制常用注解
1、类注解@NotNull(message = "缺少入参")2、属性注解@NotEmpty(message = "不能为空")@Length(max = 1024, message = "长度不能超过1024个字符")@Size(max = 100, message = "个数不能超过100个")@Pattern(regexp = "^\\d{4}-[01]?\\d-[0123]?\...原创 2020-02-17 15:10:31 · 2368 阅读 · 1 评论 -
Java 通过byte[]修改上传图片的尺寸、压缩图片尺寸
Java 通过byte[]修改上传图片的尺寸、压缩图片尺寸原创 2020-01-30 15:33:14 · 969 阅读 · 0 评论 -
springboot启动如何初始化找到对应的环境配置文件
一个应用最少分为开发,测试和生产,可是应用启动是如何找到相应环境的配置文件呢?从启动类中进入run方法,可以找到prepareEnvironment在这个方法中找到目前使用的配置文件环境是dev。这个属性是在主yml中配置的。使用的就是开发环境的配置文件,一般有数据库信息,redis,调用的第三方服务的地址等。但是测试环境和生产环境是如果找到的呢?首先有一个启动指令配置优先初始化...原创 2019-10-20 16:14:23 · 808 阅读 · 0 评论 -
StopWatch类
System.out.println(stopWatch.getTotalTimeSeconds() + "s");System.out.println(stopWatch.getTotalTimeMillis() + "ms");秒表类可以计算一段代码的执行时间,以毫秒计。原创 2019-10-20 15:56:10 · 528 阅读 · 1 评论 -
java中判空
类型判空1、int 在初始化的时候=0,使用0==a判断 int a = 0; if (0 == a) { System.out.println(true); }2、Integer 初始化为null。 Integer a1 = null; if(a1==null){ System...原创 2019-10-20 15:30:32 · 1796 阅读 · 5 评论 -
EJB,What's that
EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具...转载 2018-11-22 20:01:53 · 172 阅读 · 0 评论 -
描述 J2EE 框架的多层结构,并简要说明各层的作用。
答:Presentation layer(表示层)a. 表示逻辑(生成界面代码)b. 接收请求c. 处理业务层抛出的异常d. 负责规则验证(数据格式,数据非空等)e. 流程控制Service layer(服务层/业务层)a.封装业务逻辑处理,并且对外暴露接口b.负责事务,安全等服务Persistence layer(持久层)a 封装数据访问的逻辑,暴露接口b.提供方便的数...转载 2018-11-22 19:55:26 · 1720 阅读 · 0 评论 -
XSS,SQl注入与防范
XSS攻击全称跨站脚本攻击(cross-site scripting ),是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。XSS攻击的危害包括1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号2、控制企业...转载 2018-11-22 22:14:45 · 185 阅读 · 0 评论 -
javax.Servlet 的包中,属于类的是
javax.Servlet 的包中,属于类的是。(选择1项)A、ServletB、GenericServletC、ServletRequestD、ServletContext解答:BServletContext 和 ServletRequest 是该包下的接口。api:http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax...转载 2018-11-22 19:37:32 · 5048 阅读 · 0 评论 -
与 HttpSessionListener 接口有关的方法是?
与 HttpSessionListener 接口有关的方法是()A.sessionInitialized()B.sessionCreated()C.sessionFinialized()D.sessionDestroyed()答:BD接口HttpSessionListener有两个方法,分别为:VoidsessionCreated(HttpSessionEvent se):当sess...转载 2018-11-22 18:59:19 · 2915 阅读 · 0 评论 -
JDK, JRE 和 JVM 的区别?
JDK, JRE 和 JVM 的区别?JDK, JRE 和 JVM 是 Java 编程语言的核心概念。尽管它们看起来差不多,作为程序员我们也不怎么关心这些 概念,但是它们是不同的针对特定目的的产品。这是一道常见的 Java 面试题,而本文则会一一解释这些概念并给出它们之间的区别。Java 开发工具包 (JDK)Java 开发工具包是 Java 环境的核心组件,并提供编译、调试和运行一个 Ja...转载 2018-11-15 09:14:46 · 146 阅读 · 0 评论 -
Serializable序列化与transient关键字
阅读 Shape 和 Circle 两个类的定义。在序列化一个 Circle 的对象 circle 到 文件时,下面哪个字段会被保存到文件中?class Shape {public String name;}class Circle extends Shape implements Serializable{private float radius;transient int colo...转载 2018-11-16 14:28:06 · 906 阅读 · 0 评论 -
Http 缺省的请求方法是?缺省的HTTP端口是?
“缺省”最初来源于计算机英文文档中的单词"default","default”有很多意思:违约、缺省、拖欠、默认,由于当时计算机方面的翻译水平不高,于是就把这个词直译成了“缺省”,其实应该取它的引申意思“默认”。后来的人们发现,无论怎么解释,缺省好像都说不通,但是由于之前的人们已经习惯了“缺省”这个用法,故依旧延续了这个用法。后来的新一辈的人们觉得说起来很拗口,就使用了"default”的引申意思...转载 2018-11-22 19:42:05 · 7238 阅读 · 2 评论 -
解释内存中的栈(stack)、堆(heap)和静态存储区的用法。
String str = new String(“hello”);答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100、“hello”和常量都是放在静态存储区中。栈空间操作最快但是也很小,通常大量的对象都是放在堆空间,整个内存包括 硬盘上的虚拟内存...转载 2018-11-16 13:21:53 · 787 阅读 · 0 评论 -
GC线程是否为守护线程?()
答案:是解析:线程分为守护线程和非守护线程(即用户线程)。只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结 束时,守护线程随着 JVM 一同结束工作。 守护线程最典型的应用就是 GC (垃圾回收器)。Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一...转载 2018-11-16 13:18:48 · 13058 阅读 · 0 评论 -
ArrayList 和 LinkedList 有什么区别?
ArrayList 和 LinkedList 都实现了 List 接口,他们有以下的不同点:ArrayList 是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对 应,LinkedList 是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这 种情况下,查找某个元素的时间复杂度是O(n)。相对于 ArrayList,Lin...转载 2018-11-16 13:07:53 · 557 阅读 · 0 评论 -
数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用 Array 而不是 ArrayList?
下面列出了 Array 和 ArrayList 的不同点:Array 可以包含基本类型和对象类型,ArrayList 只能包含对象类型。 Array 大小是固定的,ArrayList 的大小是动态变化的。ArrayList 提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。 对于基本类型数据,集合 使用自动装箱来减少编码工作量。但是,当处理固定大...转载 2018-11-16 13:02:59 · 5467 阅读 · 1 评论 -
如何优化数据库,如何提高数据库的性能?
答:1)硬件调整性能最有可能影响性能的是磁盘和网络吞吐量,解决办法扩大虚拟内存,并保证有足够可以扩充的空间;把数据库服务器上的不必要服务关闭掉;把数据库服务器和主域服务器分开;把 SQL 数据库服务器的吞吐量调为最大;在具有一个以上处理器的机器上运行SQL 。2)调整数据库若对该表的查询频率比较高,则建立索引;建立索引时,想尽对该表的所有查询搜索操作, 按照 where 选择条件建立索引,尽...转载 2018-11-20 20:03:55 · 1131 阅读 · 0 评论 -
你认为在表上建立索引可以提高数据库系统的效率吗,为什么?
答:不一定建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入 的表格,就没有必要为一个很少使用的 where 子句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。...转载 2018-11-20 19:56:55 · 1856 阅读 · 0 评论 -
JDBC 中如何进行事务处理,事务的 ACID 是指什么
JDBC 中如何进行事务处理?答:Connection 提供了事务处理的方法,通过调用setAutoCommit(false)可以设置手动提交事务;当事务完成 后用 commit()显式提交事务;如果在事务处理过程中发生异常则通过 rollback() 进行事务回滚。除此之外,较新 的 JDBC 标准还引入了Savepoint(保存点)的概念,允许事务回滚到指定的保存点。事务的 ACID 是指...转载 2018-11-20 19:47:53 · 2175 阅读 · 0 评论 -
为什么要有dao接口存在
什么是 DAO 模式?答:DAO(DataAccess Object)顾名思义是一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露数据库实现细节的前提下提供了各种数据操作。为了建立一个健壮的 Java EE 应用,应该将所有对数据源的访问操作进行抽象化后封装在一个公共 API 中。用程序设计语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当...转载 2018-11-20 19:44:06 · 1495 阅读 · 0 评论 -
在进行数据库编程时,连接池有什么作用?
答:由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每次建立连接都需要进行 TCP 的三次握手,再加上网络延迟,造成的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若 干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免频繁创建和 释放连接所造成的开销,这是典型的用空间换取时间的策略(浪费了空间存储连接,但节省了创建和释放连接...转载 2018-11-20 19:41:05 · 664 阅读 · 0 评论 -
请写出 5 种常见到的runtime exception
答:NullPointerException:当操作一个空引用时会出现此错误。 NumberFormatException:数据格式转换出现问题时出现此异常。 ClassCastException:强制类型转换类型不匹配时出现此异常。 ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在的数组下标时出现此异常。 ArithmeticException:数学...转载 2018-11-20 14:09:50 · 765 阅读 · 0 评论 -
Struts1和Struts2的区别和对比
转自:https://www.nowcoder.com/test/question/done?tid=20190461&qid=15081#summaryStruts1和Struts2的区别和对比:Action 类:• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Action是接口。• Struts 2...转载 2018-11-26 21:42:00 · 174 阅读 · 0 评论 -
java中流程控制的简单理解
本篇文章是读java编程的逻辑(java核心技术系列)作者马俊昌。强烈推荐这本书,结合计算机的远离和java基础进行分析,容易理解。首先,流程控制主要有两种:一种是条件执行,一种是循环执行。最基本的是条件执行,就是满足了一定的条件才可以执行某种操作,在另外一些条件下执行另外的操作。ifelseint age;if(age>10){System.out.println("我是大...原创 2018-12-07 17:03:06 · 345 阅读 · 0 评论 -
mysql+mybatis的使用标签<selectKey>返回主键一直是1
其实是生效的。当你发现你的insert的sql语句,明明使用了标签标签,明明property属性也跟id字段对应的上。可就是返回的一直是1。第一点要明确,直接返回的这个Integer并不是你新增的主键id。你想要的主键id在插入成功后需要从你的入参中取。入参是map正常取。那么问题来了,如果入参是对象的话,发现取了但是是null,可就要注意下了。因为在...原创 2019-09-28 22:32:48 · 455 阅读 · 0 评论 -
java树形加工
当需要树形结构时,可以考虑一次性把树从sql查出,通过加工得到。实现类代码package com.jp.demo.service.impl;import com.jp.demo.dao.mapper.RegionMapper;import com.jp.demo.pojo.vo.RegionVO;import com.jp.demo.service.RegionService;imp...原创 2019-08-29 16:16:07 · 194 阅读 · 0 评论 -
mysql与oracle在mybatis批量更新的区别
mysql首先需要在datasource的url连接串上增加&allowMultiQueries=true代码是 <update id="updateUser" parameterType="com.jp.demo.pojo.bo.UserInfoBO"> <foreach collection="list" item="item" sep...原创 2019-08-22 19:11:30 · 299 阅读 · 0 评论 -
mysql增加索引不生效的几种情况
增加索引可以提高查询效率。增加索引就是增加一个索引文件,存放的是数据的地址,类似与我们文档的目录,在查找过程中可以不用从书的内容查找,直接根据目录对应的页码查找。索引是根据地址查找。创建索引,索引使用的数据结构也有很多种。常见的是B-tree,哈希等。mysql默认使用的数据库索引是innerDB,innerDB的索引结构是B-tree。但是在使用过程中哪些情况增加索引无法达到预期的效果呢?...原创 2019-08-23 19:12:39 · 7985 阅读 · 1 评论 -
mysql从一个字段里面查出数据排序,一表取当多表用
创建2张表需求是查出每个符合score_id条件的值,按照一个um对应的score_type的score从高到底排序select b.`um` ,p.score ,i.score,r.score from base_info b left join score_info p on b.`um`=p.um and p.score_type='procuct' left join ...原创 2019-07-25 00:48:05 · 185 阅读 · 0 评论 -
mysql按照中文姓名排序
ORDER BY CONVERT(name USING gbk) ascname字段名,gbk字符集转载 2019-07-25 00:23:25 · 1980 阅读 · 0 评论 -
bigdecimal格式化小数点注意事项
1.引言 float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。先看下面代码public class Test { public stat...转载 2019-02-09 15:12:33 · 1929 阅读 · 0 评论 -
arraylist、LinkedList、Vector
arraylist、LinkedList、Vector.arraylist是连续的空间,遍历速度快,插入和删除就比较慢。arrayList底层是数组。linkedList是一个双向链表存放数据。如果删除和添加元素比较多的话,要效率高的就可以使用LinkedList。vector和arraylist的功能一样,唯一的区别就是vector是线程安全的,而arraylist是线程不安全的。...原创 2018-12-23 18:46:41 · 158 阅读 · 0 评论 -
list、map的遍历方式
list的remove()方法有2个remove(int index) 这个是下标remove(元素内容)package com.smart.domain;import java.util.*;/** * @ProjectName chapter2 * @ClassName ListRemove * @Description TODO * @Author jing * @D...原创 2018-12-21 10:43:03 · 4345 阅读 · 0 评论