- 博客(67)
- 资源 (6)
- 收藏
- 关注
原创 HashMap和Hashtable的区别(绝对经典)
相同点:hashmap和Hashtable都实现了map接口不同点:Hashtable 是不允许键或值为 null 的,HashMap 的键值则都可以为 null。实现方式不同:Hashtable 继承了 Dictionary类,而 HashMap 继承的是 AbstractMap 类。初始化容量不同:HashMap 的初始容量为:16,Hashtable 初始容量为:11,两者的负载因子默认都是:0.75。扩容机制不同:当已用容量>总容量 * 负载因子时,HashMap 扩容规则为当前
2020-08-04 09:26:49 72055 20
转载 关于rty,catch,finally中代码的运行顺序的总结
废话不多说,直接上代码public class test3 { public static void main(String[] args) { System.out.println(add()); } public static int add() { int i= 0; try { return i; } finally { i++; } }
2020-06-07 20:19:20 813 12
原创 请求状态码(Http常见状态码总结)
201-206都表示服务器成功处理了请求的状态代码,说明网页可以正常访问。300-307表示的意思是:要完成请求,您需要进一步进行操作。通常,这些状态代码是永远重定向的。4XX HTTP状态码表示请求可能出错,会妨碍服务器的处理。500-505表示的意思是:服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。2XX 成功200 OK表示请求被服务器正常处理 ,最常见的就是这个201(已创建)注册成功请求成功且服务器已创建了新的资源202(已接受) 服务器
2020-06-04 14:58:12 4300
原创 mybatis中Mapper接口如何实例化的(为什么mybatis的mapper没有实现类)
public class UserMapperTest { @Test public void testQueryUserById() throws IOException { String resource ="mybatis/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(re...
2020-04-21 22:02:05 1508
原创 mybatis内部运行原理
由下面这个测试类开始分析其内部运行原理:public class UserMapperTest { @Test public void testQueryUserById() throws IOException { String resource ="mybatis/mybatis-config.xml"; InputStream inputStream = Resources.g...
2020-04-21 19:09:16 597 1
转载 @Transactional事务几点注意(不定时更新)
这里面有几点需要大家留意:A. 一个功能是否要事务,必须纳入设计、编码考虑。不能仅仅完成了基本功能就ok。B. 如果加了事务,必须做好开发环境测试(测试环境也尽量触发异常、测试回滚),确保事务生效。C. 以下列了事务使用过程的注意事项,请大家留意。不要在接口上声明@Transactional ,而要在具体类的方法上使用 @Transactional 注解,否则注解可能无效。2.不要图省...
2020-04-15 16:46:17 1398 10
原创 Navicat可视化界面导入SQL文件生成数据库表
首先登陆navicat,如图鼠标放在localhost2上,鼠标右击选择"新建数据库",如图出现如下界面填写数据库名,点确定,数据库创建完成,后双击数据库启用数据库,后鼠标选中数据库右击,选择运行SQL文件,如下图选择好SQL文件,点开始就ok.运行成功后关闭.后选择数据库下面的表,鼠标右击刷新,表就出来了....
2020-02-29 20:30:44 1995
转载 JAVA中堆与栈的区别
简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同
2020-08-16 21:24:06 419 4
转载 java中int和Integer的区别
1、Integer是int的包装类,int则是java的一种基本数据类型2、Integer变量必须实例化后才能使用,而int变量不需要3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值4、Integer的默认值是null,int的默认值是0延伸:关于Integer和int的比较1、由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对
2020-08-16 19:13:56 396
原创 jdbc执行流程(绝对经典)
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import org.junit.Test;public class Demo2 { public void executeQueryTest() throws Exception { // 1.注册驱动 Class.forName("com.mysql.jdbc.Dri
2020-08-15 22:35:27 1716
原创 面向对象有哪些特性?以及你对这些特性的理解
1)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。2) 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简
2020-08-13 09:39:32 1228
原创 接口和抽象类的区别(绝对经典)
A:成员的区别抽象类:构造方法:有构造方法,用于子类实例化使用。成员变量:可以是变量,也可以是常量。成员方法:可以是抽象的,也可以是非抽象的。接口:构造方法:没有构造方法成员变量:只能是常量。默认修饰符:public static final成员方法:只能是抽象的。默认修饰符:public abstract (推荐:默认修饰符请自己永远手动给出)B:类和接口的关系区别类与类:继承关系,只能单继承。可以多层继承。类与接口:实现关系,可以单实现,也可以多实现。类还可以在继承一个类的
2020-08-12 17:40:36 78946 26
转载 线程池的参数设置
(1)corePoolSize:核心线程数,核心线程会一直存活,即使没有任务需要处理。当一个任务通过execute(Runnable)方法欲添加到线程池时:如果此时线程池中的线程数小于corePoolSize,即使线程池中的线程空闲,线程池也会优先创建新线程来处理任务,而不是直接交给现有的线程处理。如果此时线程池中的数量等于 corePoolSize,但是缓冲队列 workQueue未满,那么任务被放入缓冲队列。如果此时线程池中的数量大于corePoolSize,缓冲队列workQueue满,并
2020-08-11 22:37:46 489
原创 两个BeanUtils.copyProperties() 用法及区别(总结)
这两个类在不同的包下面,而这两个类的copyProperties()方法里面传递的参数赋值是相反的。例如:a,b为对象BeanUtils.copyProperties(a, b);BeanUtils是org.springframework.beans.BeanUtils, a拷贝到bpublic static void copyProperties(Object source, Object target)//source 源文件,target 目标文件 throws BeansE
2020-08-10 16:56:03 1154
转载 vue项目部署方式:tomcat部署和nginx部署
关于vue部署1.nginx转发一般项目前后端分离得话,都会用nginx作为反向代理转发的。因为项目要兼容ie9,使用axios发ajax请求的时候,不能通过CORS解决跨域的问题,所以尝试部署nginx作反向代理.参考:vue+webpack+vue-router(history) 部署到nginx服务器下,非根目录,前后端怎样配置文件?Nginx配置proxy_passNginx反向代理解决前后端联调跨域问题1.1vue打包其中vue+webpack+vue-router(history
2020-08-10 11:04:56 2592
转载 tomcat+nginx实现项目部署
本文主要讲述的项目部署方面的一些基础知识,tomcat+nginx的环境。 nginx是常用的web服务器,用于获取静态资源,类似的服务器还有apache。 tomcat是基于java servlet 的 web 容器,用于获取动态资源。 一般的web服务架构:前端部署nginx,后端部署tomcat。用户访问nginx,静态资源nginx直接返回,动态资源的请求被nginx转发到tomcat,tomcat将处理完的结构返回给nginx,然后到浏览器。一、tomcat的介绍 二、ngin
2020-08-10 10:53:58 7090
转载 Nginx + Tomcat + SpringBoot 部署项目
项目打包mvn clean instal上传到服务器上通过FTP或者其他方式上传到服务器的目录内CP到项目部署的文件夹内确保Tomcat是运行的状态复制过去后Tomcat会自动部署项目Nginx代理Tomcat提供的端口在conf/vhost内添加配置文件upstream xxxx-host{server 192.168.1.104:8077;}server {listen 80;server_name xxx.xxx.xx;access_log /usr/local
2020-08-10 10:25:49 598
转载 TCP/IP协议三次握手四次挥手
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务端保存的一份关于对方的信息,如ip地址、端口号等。TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。一个TCP连接由一个4元组构成,分别是两个IP地址和两个端口号。一个TCP连接通常分为三个阶段:连接、数据传输、退出(关闭)。通过三次握手建立一个链接,通过四次挥
2020-08-09 14:14:09 219
转载 什么是HTTP,HTTP 与 HTTPS 的区别
HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范区别HTTPHTTPS协议运行在 TCP 之上,明文传输,客户端与服务器端都无法验证对方的身份身披 SSL( Secure Socket Layer )外壳的 HTTP,运行于 SSL 上,SSL 运行于 TCP 之上, 是添加了加密和认证机制的 HTTP。端口80443资源消耗较少由于加解密处理,会消耗更多的 CPU 和内存资源开销无需证书需要证书,而证书
2020-08-08 21:58:51 1141
转载 SpringBoot项目去除内嵌tomcat
SpringBoot内嵌tomcat,直接run Application即可,那么我们如何去除内嵌的tomcat,使用自己的呢?一、pom.xml(去除内嵌tomcat后,需要添加servlet依赖) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 去除内
2020-08-08 09:51:49 944
原创 idea中,实体类省略get、set方法
1.在pom.xml中加入lombok的依赖:<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.2</version></dependency>2.同时在idea中安装lombok插件:File→Settings→plugins3.在实体
2020-08-05 19:00:18 1667
原创 后端响应json格式的数据到前端页面,前端页面文字乱码解决
表现层用的springMVC方案1:在springMVC的配置文件中加入全局配置(推荐使用)<!-- 配置注解驱动,String转json默认使用ISO-8859-1,手动设置为UTF-8 --> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMes
2020-08-05 15:12:47 811
原创 List,Set,Map三者的区别(不同点)
List:是有序的(有序指插入元素的顺序) 可以存放重复的值和null值Set: 元素唯一 所以只能放一个null值Map:里面存放的是entry 键值对,键是唯一的,在map里面只能存放一个键为null的值,但是可以存放多个值为null的entry键值对....
2020-08-04 09:09:43 660
转载 Spring中涉及到的设计模式
1.简单工厂(非23种设计模式中的一种)实现方式:BeanFactory。 Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。实现原理:bean容器的启动阶段:读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。然后通过BeanDefinitionRegistry将这些bea
2020-08-03 10:48:45 327 14
转载 springboot项目打包成jar包
方式一:在pom.xml文件中定义启动类的名称<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId>
2020-08-02 20:46:33 7723 3
转载 Spring事务管理实现方式:编程式事务和声明式事务
1.编程式事务:编码方式实现事务管理(代码演示为JDBC事务管理)Spring实现编程式事务,依赖于2大类,分别是PlatformTransactionManager,与模版类TransactionTemplate(推荐使用)。下面分别详细介绍Spring是如何通过该类实现事务管理。1)PlatformTransactionManager事务管理器配置<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"&
2020-08-01 10:53:14 385
原创 内存分布总结
堆内存是用来存放由new创建的对象和数组,即动态申请的内存都存放在堆区栈内存是用来存放在函数中定义的一些基本类型的变量和对象的引用变量函数调用参数,函数返回值,函数返回地址存放在栈全局变量,静态变量----存于数据区;局部变量,函数形参----存于栈;...
2020-07-26 20:48:51 241
原创 java中实例化(创建)对象有哪几种方式
1.用new 创建对象,这是最常用的创建对象的方法。User user1 = new User(2,"柳岩");2.运用反射,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。Class<?> c = Class.forName("com.itheima.User");//获取字节码文件对象User user=(User)c.newInstance();3.调用对象的clone()方法clone
2020-07-25 20:56:55 1407
转载 数据库 索引创建默认是非聚集索引及建立索引的原则(重要)
SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱。1.1 什么是索引?SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间下面举两个简单的例子:图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作者的,不知
2020-07-22 22:03:01 5021
转载 synchronized与Lock的区别
Java语言提供了两种锁机制来实现对某个共享资源的同步:synchronized和Lock.其中,synchronized使用Object对象本身的notify,wait,notifyAll调度机制,而Lock可以使用Condition进行线程之间的调度,完成synchronized实现的所有功能.具体而言,二者的主要区别主要表现在以下几个方法的内容:1)用法不一样.在需要同步的对象中加入synchronized控制,synchronized既可以加载方法上,也可以加在特定代码块中,括号中表示需要锁的对
2020-07-16 17:14:00 382
转载 ArrayList和LinkedList的区别
ArrayList和LinkedList都实现了List接口,用于存储一系列的对象引用。他们都可以对元素的增删改查进行操作。对于ArrayList,它在集合的末尾删除或添加元素所用的时间是一致的,但是在列表中间的部分添加或删除时所用时间就会大大增加。但是它在根据索引查找元素的时候速度很快。对于LinkedList则相反,它在插入、删除集合中任何位置的元素所花费的时间都是一样的,但是它根据索引查询一个元素的时候却比较慢。ArrayList和LinkedList的大致区别:1.ArrayList是实现了
2020-07-13 22:48:23 208
转载 mysql 索引类型以及创建
关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了BTREE索引。一个简单的对比测试以我去年测试的数据作为一个简单示例,20多条数据源随机生成200万条数据,平均每
2020-07-13 20:10:41 352
原创 ==和equals的区别(绝对经典)
==对于基本数据类型,比较的是 “值”是否相等;对于引用类型,则比较的是所指向的对象的地址是否相同equals注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是 是否是同一个对象如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址值是否一样,和==一样;如果对equals方法重写了,如String、Date等类对equals方法进行了重写,比较的是所指向的对象的内容是否相同。...
2020-07-10 14:29:49 272
转载 使用@JsonIgnore遇到的问题
今天使用到了@JsonIgnore这一注解,记录一下遇到的问题。项目背景:这是一个springboot+vue前后端分离的项目,其中有一个功能是新增用户,前端post请求提交用户表单数据,后端在Controller层使用@RequestBody+实体类User进行接收,user中包含用户名,密码等信息。问题描述:在接收时发现密码字段得到的是空值,其他数据均为正常接收,问题定位:我已确认前端把所有数据都传过来了,所以问题定位在后端这里,然后我将接收的实体类User改为Map接收,数据都能正常接收到,然后
2020-06-28 14:02:50 502
原创 如何在idea中使用git将项目上传到码云
首先注册一个码云证号:码云注册点仓库后面的+,创建仓库后填写内容即可,填完点创建.后到Idea中VCS→Import into Version Control→Create Repository选中之后会弹出一个窗口选中当前项目为Git仓库,后点Ok点击ok后项目代码会变红,主要我们没有将代码添加到Git仓库中接下来选中项目鼠标右键Git→Add添加成功后,颜色就变了.将项目成功添加到创建的Git仓库后,我们就要开始提交项目代码到码云上了接下来选中项目鼠标右键Git→Comm
2020-06-28 10:53:26 1130 3
原创 idea项目名出现中括号如何修改
如下图:修改的方式1:File→Project Structure→project:修改Project name同时选Modules:修改Name,后点Apply.修改方式二:鼠标放在项目名上面,鼠标右击选Refactor→Rename.修改名字即可
2020-06-25 20:33:07 4369
转载 NAT模式下虚拟机centOs和主机ping不通解决方法
一般由于工作环境的变化,导致网络的改变,有时候会导致虚拟机网段改变,从而与主机连不通,在centOs下使用ifconfig发现eth0ip不再192.168.145这个段上,这时,重置eth0的ip即可,方法:ifconfig eth0 192.168.145.xxx然而,重装了系统,或是原先虚拟机卸载过没卸干净或是网卡驱动故障等其他因素,都有可能导致主机和虚拟机之间的连接发生问题,这里提供个人的一个解决方案:右击wifi图标→疑难解答→打开网络诊断点击后选择检查所有,待修复好问题后进入虚拟机,点
2020-06-06 15:14:27 979 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人