- 博客(36)
- 收藏
- 关注

原创 Java面试题,看完这一篇就够了,送给正在找工作的你(持续更新)
1.集合为什么要设计出一个迭代器首先使用迭代器适用性强,因为如果用for循环遍历,需要事先知道集合的数据结构,而且当换了一种集合的话代码不可重用要修改,不符合开闭原则。而Iterator是用同一种逻辑来遍历集合。其次使用Iterator可以在不了解集合内部数据结构的情况下直接遍历,这样可以使得集合内部的的数据不暴露。for循环的遍历ArrayList list = new ArrayList<>();for(int i = 0; i < list.size(); i++){
2021-03-22 20:47:35
1058
原创 后台传递的Long类型数据至前端导致精度丢失的问题
在所在的Long类型实体类中添加注解@JsonSerialize(using = ToStringSerializer.class)在遇到时间格式到前端转变成毫秒数时,添加@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)如果还不成功,清除后台target 和前端浏览器缓存...
2021-07-22 11:29:50
248
原创 Select2的使用方式
$("#user").select2({ language: "zh-CN", ajax: { url: "/wms/hr/staff/findStaffByName", dataType: "json", type:'post', de.
2021-07-14 18:46:26
313
原创 tomcat中部署html页面乱码解决
在web.xml中加入 <mime-mapping> <extension>htm</extension> <mime-type>text/html;charset=utf-8</mime-type> </mime-mapping> <mime-mapping> <extension>html</extension> <mime-type>tex
2021-07-06 17:31:43
419
原创 Stream流的谓词逻辑和并行流计算
public class Employer { private Integer id; private Integer age; //年龄 private String gender; //性别 private String firstName; //名字 private String lastName; //姓氏 public static Predicate<Employer> ageGreaterThan70 = x -> x.
2021-05-13 17:13:37
263
原创 Stream流练习
1.将一个数组里面的负数变为正数输出arr = {1, -2, 4, 5, -7}; @Test public void test1() { int[] arr = {1, -2, 4, 5, -7}; Arrays.stream(arr).map(a->Math.abs(a)).forEach(s->System.out.println(s)); }2.有如下7个元素黄药师,冯蘅,郭靖,黄蓉,郭芙,郭襄,郭破虏,使用Stream将以郭字开
2021-05-13 11:36:54
462
原创 Lambda表达式与方法引用
@Test public void test2() { Comparator<Integer> comparator =(a,b)->{ System.out.println("函数式接口"); return Integer.compare(a, b); }; System.out.println(comparator.compare(-10,8)); }输出为-1...
2021-05-13 10:47:58
85
原创 Mysql模拟100W条数据查询对比索引查询
创建user表CREATE TABLE `app_user` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(50) DEFAULT '' COMMENT '用户昵称',`email` varchar(50) NOT NULL COMMENT '用户邮箱',`phone` varchar(20) DEFAULT '' COMMENT '手机号',`gender` tinyint(4) unsigned DEFAUL
2021-04-20 20:41:12
394
原创 Tk-mybatis+pageHelper+elmentUi实现分页
首先注意导包,导完包后我们新建一个品牌类@Table(name = "tb_brand")@Data public class Brand implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id;
2021-04-17 15:08:48
232
原创 Java各种常见锁的机制
公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁公平锁/非公平锁公平锁: (FairSync) 十分公平,可以先来后到公平锁是指多个线程按照申请锁的顺序来获取锁非公平锁:(NonfairSync) 十分不公平,可以插队(ReentrantLock默认采用非公平锁,除非在构造方法中传入参数 true 。)非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先.
2021-04-13 13:00:59
301
原创 SpringBean的生命周期 (流程图)
Spring的生命周期示意图在百度Spring的生命周期时,看到一篇不错的文章http://www.cnblogs.com/zrtqsk/p/3735273.html,但在仔细阅读源码后,发现作者有些地方笔误:源码一.实例化BeanFactoryProcessor实现类二.执行BeanFactoryProcessor的PostProcessFactory方法三.实例化BeanPostProcessor实现类四.实例化InstantiationAwareBeanPostProcessorAd
2021-04-08 18:25:07
1238
原创 线程池的三大方法,七大参数,四大拒绝策略
为什么使用线程池?1.降低资源消耗,提高线程利用率,降低创建和销毁线程的消耗2.提高响应速度,任务来了,直接有线程可用可执行,而不是先创建线程,再执行。3.提高线程的可管理性,线程是稀缺资源,使用线程池可以统一分配调优监控三大方法:newSingleThreadExecutor()newFixedThreadPool()newCachedThreadPoolpublic class demo01 { public static void main(String[] args) {
2021-04-07 10:15:05
214
原创 Jackson之ObjectMapper对象的使用
pom文件<?xml version="1.0" encoding="UTF-8"?><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.xs
2021-03-30 11:38:51
192
原创 在SpringBoot中添加拦截器
首先新建config包下的MvcConfig类@Configuration//配置类 spring-xxx.xmlpublic class MvcConfig implements WebMvcConfigurer { //<bean></bean> @Bean public LoginInterceptor loginInterceptor(){ return new LoginInterceptor(); } //
2021-03-30 11:19:24
310
原创 JSON传入数组至后台通过动态sql进行多删操作
前端页面传入复选框勾选生成一个数组 $("#delete").click(function () { var abc = []; //定义一个空数组 $("input[name='yy']:checked").each(function (i) { //把所有被选中的复选框的值存入数组 abc[i] = $(this).val(); }); $.ajax({ url:
2021-03-24 18:06:41
253
原创 浅谈HashMap的底层
一,什么是hash核心理论: hash也称散列,哈希,基本原理就是把任意长度的输入,通过哈希算法变成固定长度的输出,这个映射的规则就是对应的hash算法,而原始数据映射后的二进制串就是哈希值!hash特点:1.从hash值不可以反向推导出原始的数据2.输入数据的微小变化会得到完全不同的hash值,相同的数据会得到相同的值3.哈希算法的执行效率要高效,长的文本也能快速的计算出哈希值4.hash算法的冲突概率较小二,Hash碰撞当hash表里的数据已经存在,此时再向已存在的hash表存放值,
2021-03-17 18:50:57
221
1
原创 mybatis工作原理及其步骤
一、MyBatis的重要组件mybatis底层封装了JDBC的,使用动态代理模式1.sqlSessionFactoryBulid(构造器):使用Builder模式根据mybatis-config.xml配置或者代码来生成SqISessionFactory。2.SqlSessionFactory (工厂接口):使用工厂模式生成SqlSession。3.SqlSession (会话) : 一个既可以发送 SQL 执行返回结果,也可以获取Mapper的接口。4.SQL Mapper (映射器): 它由
2021-03-13 16:28:25
507
原创 SpringBoot中Shiro与thymeleaf完成登录的拦截实现
首先我们要保证导入的包正确,shiro-spring版本过高会导致某些类比如ShiroFilterFactoryBean找不到,我参照了网上的版本,供大家借鉴 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artif
2021-03-11 12:25:59
450
原创 springboot关于登录时动态随机验证码的操作
第一步,我们定义一个常量类,声明图片名和存放的路径public class Constants { public static final String USER_LOGIN_CODE = "user_login_code" ; public static final String IMAGE_PATH = "D:\\DownLoad\\" ;}第二步,引用CodeUtils类,无需我们编写,复制粘贴即可/** * 用来生成验证码的工具 */public class Co
2021-03-10 09:26:29
742
2
原创 给定一个类,判断它是使用JDK动态代理还是cglib代理,分别使用JDK动态代理或cglib代理去实现切面的功能。
第一步创建一个user接口public interface User { public void say();}创建一个A类,继承User接口public class A implements User { @Override public void say() { System.out.println("AAAAAAAAAA"); }}第二步分别创建Cglib代理类和Jdk动态代理类@AllArgsConstructorpubli
2021-01-18 15:54:45
1902
原创 Java 关于Cglib代理拦截的基本使用
导包 <dependency> <groupId>cglib</groupId> <artifactId>cglib-jmh</artifactId> <version>3.3.0</version> </dependency>紧接着创建一个User类public class User { public
2021-01-15 10:36:50
663
原创 Java EL和JSTL的表达式
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2020-12-12 14:49:18
196
1
原创 JavaWeb 认识JSP(按需掌握)
1、JSP简介jsp全称Java Server Page, 一种动态网页开发技术。它允许使用el表达式、jstl来获取Java代码中的数据,同时允许在jsp中编写html代码,使得jsp可以非常容易的显示页面。Jsp本质是Servlet,最终以Servlet方式运行,所以可以说Jsp是一种特殊的Servlet。2、JSP组成结构2.1、静态内容html静态文本2.2、注释第1种: 第2种: <%-- JSP注释 --%>第3种: <% //java注释 %
2020-12-05 15:38:52
401
原创 JavaWeb Servlet的基础概要
1、网络基础概念互联网,英文是internet,又称国际网络。是网络与网络之间-所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一且巨大的全球化网络,在这个网络中有交换机、路由器等网络设备、各种不同的连接链路、种类繁多的服务器和数不尽的计算机、终端。使用互联网可以将信息瞬间发送到千里之外的人手中,它是信息社会的基础。2、HTTP简介HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wi
2020-12-05 14:56:21
115
原创 Java 用数据库和JDBC的知识完成控制台版本的简易新闻发布系统(MVC架构)
一、功能介绍1、程序运行时,首先显示最近的5条新闻的标题(按照新闻的发布时间排序),然后提示操作菜单,运行效果图如下:2、如果选择菜单A能显示所有的新闻标题(按照新闻的发布时间排序)后提示操作菜单,运行效果图如下:3、如果选择菜单B则根据用户输入的新闻的编号来显示新闻的详细信息(新闻详细内容的显示格式不做要求)以及所有的新闻评论,然后提示操作菜单,运行效果图如下:4、如果选择菜单C,则根据用户输入的新闻编号来添加评论,然后提示操作菜单,运行效果图如下:5、选择D则结束程序。数据库创建表
2020-12-02 19:53:11
412
原创 Java 常见面试题(一)
1,javac java命令javac是将java文件编译成class文件,java是执行你编译的class文件。2,int i=20000000000000;报错吗?为什么?会报错!因为:int max=2147483647;int min=-21474836483, B(browser)/S(server) 跟C(client)/S(server)架构区别是什么?Client/Server是建立在局域网的基础上的,Browser/Server是建立在广域网的基础上的。1.硬件环
2020-12-01 15:05:47
777
2
原创 Java 关于Properties的使用
1. 什么是properties?它是一种文本格式。里面的数据有自己规定的格式,一般存放键值对类型的数据。好处:可以很好很方便的跟java程序进行交互。java提供专门跟properties交互的API。存到properties文件中的内容是可以持久化的。2.properties的使用里面的注释是使用#键值之间一般使用=分割。也可以使用:号跟空格分割,但是尽量使用=号。3. JAVA跟properties的交互3.1 数据的读取// 1, java --- IO ---
2020-11-12 20:43:44
278
原创 Java XML和反射详解
什么是 XML?XML 指可扩展标记语言(EXtensible Markup Language)。 XML 是一种很像HTML的标记语言。XML的设计宗旨是传输数据,而不是显示数据。XML 标签没有被预定义。您需要自行定义标签。XML 被设计为具有自我描述性。 XML 是 W3C的推荐标准。XML 和 HTML 之间的差异XML 不是 HTML 的替代。。XML 和 HTML 为不同的目的而设计:XML 被设计用来传输和存储数据,其焦点是数据的内容。HTML 被设计用来显示数据,其焦点
2020-11-07 16:53:51
820
原创 Java Io流的汇总
一.File类 File类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。File对象代表磁盘中实际存在的文件和目录。通过以下构造方法创建一个File对象。常用构造方法new File(File parent,String child );new File(String parent,String child);new File(String pathName);二、IO流一.流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据
2020-11-07 14:18:02
180
原创 Java中我们所用到的几种常用类
一.比较器Comparator 和 Comparable 比较:1.Comparable是排序接口;若一个类实现了Comparable接口,就意味着“该类支持排序”。(作用在实体类上)2.而Comparator是比较器;我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。(作用在排序类上)总结:Comparable相当于“内部比较器”,而Comparator相当于“外部比较器”。二.内部类1.成员内部类定义在类中,充当类的一个成员。访问权限:内部类可以访问外部类的属性和方
2020-11-07 11:10:54
533
原创 java中最常见的集合框架(List,set,map)以及他们的区别
一.为什么要使用集合在学习集合之前,我们需要思考的是为什么要有集合?集合有什么用?我们知道,在java中有数组的概念,数组可以用来存放一组数据。但是,数组是固定长度的,这样在使用的时候就会有很多的不方便,比如说资源的浪费。这个时候,我们就希望有一种可以动态改变大小的数组,那就是集合的作用了。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。java中的集合主要分为Collection和Map两种:集合
2020-11-05 20:43:10
454
原创 谈谈java中所谓的异常
一、什么是异常?**异常机制:**异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。通俗地说:为了让程序继续执行下去,而不至于中断。程序错误: 程序错误分为三种:1.编译错误;2.运行时错误;3.逻辑错误。(1)编译错误:是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置。(2)运行时错误:是因为程序在执行时,运行环境发现了不能执行的操作。(3)逻辑错误:是因为程序
2020-11-05 19:55:23
89
原创 Java中的封装,继承和多态
封装1.什么是封装?在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装的步骤:1.修改属性的可见性不限制对属性的访问(一般为private)。2.提供公有的get和set方法和set方法,在方法体进行合理值的判断,使用public关键字修饰。3.在构造方法中使用set方法进行合理值的判断。2.包结构:在开发大型项目时,会有很多功能模块的具体划分,这是需要建立很多的类,将同一层级的类放在一个包中,可使程序的层级结构清晰,提高辨识度。类似于在资源管理
2020-11-04 20:11:46
834
原创 Java基础最经典的几种循环
为什么需要循环?我们在Java中的学习当中,有许许多多的程序是反反复复的实现,甚至是重复的实现相同的操作,这会增加我们的巨额代码量,显得十分冗余,接触循环之后,你会发现循环是如此的奇妙!妙不可言!Whlie循环 int i =0; while(i<5){ System.out.println("我爱你"); i++; }上面是一个简单的while循环例子,while循环需要三个条件才能完成第一个是循环变量
2020-10-29 20:34:50
441
1
原创 java基础之一维数组和二维数组
为什么使用数组?1.什么是数组?在Java学习中,我们把一组类型相同的数据称之为数组。当然,有的同学会问了,一个数组可以放数字汉字吗?答案肯定是不可以的,因为每种数据类型在内存空间中占据的大小不同,所以数组里面的成员一定要类型相同,切记切记!数组的使用步骤:1.声明数组 int[] a;2.分配空间 a = new Int[5];3.赋值a[0]=3;4.处理数据a[0]=a[0]*10;以上的步骤是对数组基本的定义和简单的操作,当我们对数组操作熟练之后,可以采用边声明边赋值的方法,提高写代
2020-10-29 19:42:19
357
原创 java排序之冒泡排序和选择排序
冒泡排序:我们在初学Java数组的时候,排序就是数组必不可少的一项,排序分为很多种,这里我就先介绍我们经常遇到的冒泡排序:何为冒泡排序: 顾名思义,将一组无规则的数,打乱顺序存放到一个数组当中,(现在需求是将一组数从小到大排序)例如:int []arr = {1,5,2,9,4,3}; 把这组数的第一个数拿出来和紧跟着它后面的那个数作比较,如果第一个数比第二个数大的话,就将第一个数和第二个数交换位置,然后再将此时的第二个数和第三个数作比较,如果第二个数还是比第三个数大的话,则第二个数就
2020-10-17 17:18:25
194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人