JAVA
文章平均质量分 74
童话ing
放弃不难,但坚持一定很酷。
展开
-
【数据结构】HashMap、LinkedHashMap和TreeMap区别和使用
文章目录前言1、HashMap2、LinkedHashMap3、TreeMap前言关于HashMap、ConcurrentHashMap底层知识前面已有文章进行分析了,因此,在本文中只会介绍HashMap、LinkedHashMap和TreeMap的一些明显区别。1、HashMapHashMap是无序的数据结构,也就是说,插入顺序和读取顺序不一致,下面简单验证即可。class Test{ public static void main(String[] args) { Ma原创 2022-03-22 16:06:34 · 4588 阅读 · 1 评论 -
【笔试】虾皮2022秋招提前批SER笔试
1、重排字符串和数字思路:就按照题目要求来写就好了,有一点需要注意的是,再对数字排序时候要考虑最极端的情况可能出现100位左右的数字,这个只能String存了,看到别人Long也过了,但应该是数据不严。排序时候由于是String,因此重新定义排序规则。代码:import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @par原创 2022-03-02 16:23:36 · 582 阅读 · 0 评论 -
【笔试题目】9.26笔试记录
1、有T组输入,给定一个x,找寻满足下面条件的最小的数。这个数必须包含四个及以上因子(6的因子为1,2,3,6)任意两个因子之差不小于x数据范围:T<=1000,x<=10000;思路:任意一个合数都能分解为素数相乘形式,一个数的因子包含1和本身,因此只需要再找最小的两个满足条件的素数因子即可。想到素数,就很好利用素筛来解决问题,而且可以使用离线处理比较好。代码:import java.util.Scanner;public class tencentExam {原创 2021-09-27 16:46:19 · 133 阅读 · 0 评论 -
关于加@Transactional注解的方法之间调用,事务是否生效的问题
如果使用的Spring进行测试,则需要在xml中开启基于注解的事务:<tx:annotation-driven></tx:annotation-driven><!--配置事务管理器--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSourc原创 2021-06-27 17:13:11 · 11109 阅读 · 7 评论 -
【牛客网】括号字符串的最长有效长度
题目链接:括号字符串的最长有效长度题目描述:给定一个括号字符串str,返回最长的能够完全正确匹配括号字符字串的长度。输入一行字符串,输出一个整数,代表括号字符串的最长有效长度。样例:输入:(()())输出:6输入:())输出:2思路:利用两个变量left和right分别记录当前字串左括号和右括号的数量,正着检查一遍,再倒着检查一遍。正着做的时候,以左括号为参照,如果当前左括号数量等于右括号,记录答案为右括号数量的两倍,如果当前左括号数量小于右括号,重置left和right。倒着遍历原创 2021-05-09 10:36:43 · 1173 阅读 · 0 评论 -
20个常用正则表达式
原文地址:https://www.cnblogs.com/shenbing/p/5494428.html详细见开源中国的在线测试:http://tool.oschina.net/regex/正则表达式元字符查询:https://www.cnblogs.com/shenbing/p/5718413.html正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便...转载 2019-05-30 12:42:13 · 309 阅读 · 0 评论 -
【Java】实现对象克隆的三种方式(Cloneable接口、Java自身序列化、FastJson序列化)
前言常见的创建对象有两种方式: new 和 clone当一个对象创建过程复杂,我们是否可以根据已有的对象直接来克隆一份,而不必关系创建的细节呢(原型模式)。1、实现Cloneable接口,重写clone方法Object默认的clone方法实际是对域的简单拷贝,对于简单数据类型,是值的拷贝;对于复杂类型的字段,则是指针地址的拷贝,clone后的对象和原对象指向的还是一个地址空间。所以说默认的clone方法是浅克隆。我们用下面例子验证一下:package com.dl.JavaBase;cla原创 2021-03-14 15:44:00 · 6705 阅读 · 0 评论 -
【Java】POI和EasyExcel操作Excel及通用POI操作Excel工具类
前言我们知道Excel在2003版本和2007版本有区别,03版本excel后缀未.xls,而07版本后缀未.xlsx,其次03版本最多只能有65536条记录,07版本的最多1048576条记录。简单了解下Excel的简单组成:整个excel文件叫做工作簿。有这些知识之后看下面的内容就很轻松了。一、POIAPI文档地址:https://tool.oschina.net/apidocs/apidoc?api=apache-POI中文文档参照:https://www.cnblogs.com/fqf原创 2021-03-10 21:03:35 · 760 阅读 · 0 评论 -
【JUC学习】——生产者消费者问题
生产者消费者问题用于很好的解释线程间通信的问题,大致意思可以解释为如果货架上物品为空,则通知生产者开始生产物品,如果货架上的物品满了,就通知消费者进行消费。在JUC中实现主要是通过synchronized和lock实现,对于synchronized,一般采用wait(等待)和notify(唤醒)进行线程的同步通信。在juc并发包下对应的lock方法为await和signal,同时使用资源监视器Condition来进行精准唤醒。一、Synchronized(wait和notify)下面看一下第一版的原创 2021-01-21 21:33:10 · 283 阅读 · 4 评论 -
【JUC学习】——线程池常见面试问题及基本使用案例
线程池是面试的热点,常见的面试问题如下:1、池化思想,还知道哪些地方池化技术? 程序的运行本质上来说就是占用系统的资源,频繁创建和销毁对象十分占用系统资源,因此使用池化技术优化资源的使用。池化技术我们接触的很多,比如数据库连接池, HTTP 连接池,Redis 连接池等。池化技术的思想: 核心思想是空间换时间,期望使用预先创建好的对象来减少频繁创建对象的性能开销,同时还可以对对象进行统一管理,减少对象使用成本。池化思想最大的作用是支持复用,避免出现空间过度使用出现内存泄露或者频繁垃圾回收等问题。2、原创 2021-01-20 21:47:48 · 625 阅读 · 5 评论 -
【JUC学习】——Lock和Synchronized使用及二者区别
众所周知,在JUC中常见的锁就是Lock和Synchronized了,主要是用于并发多线程的同步执行问题,用于在许多线程执行时对资源的限制。锁通常需要硬件支持才可以有效实施。这种支持通常采用一个或多个原子指令,测试单个线程是否空闲。Lock是显式加锁,锁释放。而synchronized是隐式锁,出了作用域自动释放,Lock只有代码块锁,synchronized有代码块锁和方法锁。使用Lock锁,JVM将花费较少的时间来调度线程,性能更好。并且具有更好的扩展性(提供更多的子类ReentrantLock()原创 2021-01-20 20:42:58 · 403 阅读 · 0 评论 -
【JUC学习】——线程的常见方法使用
线程的常见方法描述:序号方法功能1public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。2public void run()如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。3public final void setName(String name)改变线程名称,使之与参数 name 相同。4public fina原创 2021-01-19 20:30:30 · 163 阅读 · 0 评论 -
【JUC学习】——静态代理模式和Lambda表达式
我们根据加载被代理类的时机不同,将代理分为静态代理和动态代理。如果我们在代码编译时就确定了被代理的类是哪一个,那么就可以直接使用静态代理;如果不能确定,那么可以使用类的动态加载机制,在代码运行期间加载被代理的类这就是动态代理,比如RPC框架和Spring AOP机制。静态代理方式代理类和被代理类需要实现相同的接口。/** * 静态代理模式总结: * 真实对象和代理对象都要实现同一接口,代理对象要代理真实角色 * 好处: * 代理对象可以做很多真实对象做不了的事情 * 真实对象原创 2021-01-19 20:09:17 · 155 阅读 · 0 评论 -
【JUC学习】——线程创建的几种方式
Java的线程Thread位于java.lang包下,JUC表示的就是java.util.concurrent,java并发包下常用类的学习。文章来自狂神教学【狂神说Java】多线程详解一、线程创建的三种方式1、继承Thread类(不建议使用:避免OOP单继承局限性)步骤:继承Thread类,重写run方法。/** * Thread其实也是实现了Runnable接口 * 子类继承Thread类具备多线程能力,启动线程,子类对象.start() * 不建议使用:避免OOP单继承局限性 */原创 2021-01-19 19:49:33 · 184 阅读 · 0 评论 -
【Java基础】Comparable和Comparator两种比较器的区别(原理+实现)
一、概述 Comparable和Comparator都是两个接口,接口都可以用来实现集合中元素的比较、排序,Comparator位于包java.util下,而Comparable位于包java.lang下,Comparable接口将比较代码嵌入自身类中,而Comparator既可以嵌入到自身类中,也可以在一个独立的类中实现比较。Integer、String等这些基本类型的JAVA封装类都已经实现了Comparable接口,这些类对象本身就支持自比较,直接调用Collections.sort()就可以对原创 2021-01-17 11:27:27 · 1289 阅读 · 0 评论 -
【Java】Java高级开发的50个性能优化的细节
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。●1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生,以达到节约资源的目的;第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。●2. 尽量避..转载 2020-12-27 22:21:34 · 155 阅读 · 0 评论 -
【博客插件】Live2d看板娘放到自己的博客上(黑白猫猫+恶魔少女)
文章目录一、前言二、操作步骤一、前言 live2D是一种应用于电子游戏的绘图渲染技术,技术由日本Cybernoids公司开发,通过一系列的连续图像和人物建模来生成一种类似三维模型的二维图像。 live2d官方提供了很多平台的SDK,包括iOS,Android,Flash,Unity,openGL等,然后如果要在网页中呈现,则可以提供了WebGL SDK,可以参照官方网站:https://www.live2d.com/效果截图:二、操作步骤1、文件下载:下载文件解压放入自己的插件目录。如原创 2020-12-24 11:10:28 · 2197 阅读 · 8 评论 -
JavaSE、JavaEE和JavaWeb的区别以及各自的知识体系
最近好多初学者说不知道JavaSe、JavaEE、JavaWeb的区别,自己又比较懒,刚好看到有总结比较好的,就搬过来了,原文地址:javaee, javaweb和javase的区别以及各自的知识体系文章目录1、JavaSE2、JavaEE3、JavaWeb1、JavaSEJava SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterpri.转载 2020-12-13 10:15:48 · 34023 阅读 · 0 评论 -
Java 对HashMap 进行排序的几种场景
Java中HashMap不同于Array、ArrayList和LinkedLists,它不会维持插入元素的顺序。因此对HashMap排序的掌握很重要。HashMap排序有两个步骤:1、通过map.entrySet()方法获取键值对;并将键值对传递给链表list;2、自定义比较器来使用Collections.sort()方法排序链表。例如下面的按照value降序排列:Collections.sort(list, new Comparator<Entry<String,Integer&g原创 2020-11-30 08:50:08 · 532 阅读 · 0 评论 -
【SpringBoot】拦截器处理JWT验证
在上文一文读懂JWT+JAVA的两种实现方式中,我们已经了解到了JWT并进行了实现,但是在每个接口都进行验证会使得代码非常冗余,因此本文中,我们将结合SpringBoot2.x进行整合,将JWT验证放到拦截器中进行实现。JWT认证流程图如下:创建包结构:Maven依赖信息: <!--java-jwt--> <dependency> <groupId>com.auth0</groupId> .原创 2020-11-23 20:54:33 · 1123 阅读 · 1 评论 -
一文读懂JWT+JAVA的两种实现方式
在上文一文读懂Cookie、Session、Token中,我们已经了解到了Token,本文中,我们将详细介绍JWT并进行实现。文章目录1、JWT概述2、JWT组成2.1 Header2.2 Payload2.3 Signature三、JWT的应用四、JWT的实现4.1 java-jwt实现4.2 采用JJWT实现:1、JWT概述 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特.原创 2020-11-23 17:53:20 · 1396 阅读 · 0 评论 -
【JVM】一文了解双亲委派机制及其作用
双亲委派机制 双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此(递归的去查找),只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。显然,在介绍双亲委派机制的时候,不得不提ClassLoader。再说ClassLoader之前,我们得先了解下Java的基本知识。Java是运行在Java的虚拟机(JVM)中的,但是它是怎么就运行在JVM中了呢?我们在IDE中编写的Java源代码被编译器编译成.class的字节码原创 2020-11-23 09:51:28 · 2306 阅读 · 8 评论 -
java中Map的七种遍历方法
学了一年,到头来连个Map遍历都还要靠百度,真的已经面向了百度了,大概这就是基础没打好吧!且转这儿大家翻翻吧!首先在java中所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都实现了Map接口,因此所有的Map都可以用下面的几种方式去遍历,可根据业务需要进行选择。方式一、在for循环中使用entries实现Map的遍历:Map <String,String>map = new HashMap<String,String>(原创 2020-11-05 22:15:30 · 1407 阅读 · 0 评论 -
移动2020面试题:斗地主
题意:在互联网上,有一种很流行的扑克牌的玩法,叫”斗地主“,其中有一个规则就是玩家可以出连续的牌,一般要求连续的5张(含)以上,例如:56789.现在要求写一个程序,找出玩家手里最长的连牌。规则如下:1、为简单起见,只考虑包含1-9数字的牌,不考虑JQKA;2、假设牌已经排好了顺序,例如:2334455678;3、输出连续张数最多的连牌。如果有两个序列长度一样,输出后面那个序列,如:234678,输出678这个序列;4、输出结果是一个字符串,如”678“、”3456“,数字之间不含空格;5、字符原创 2020-10-12 11:25:14 · 1173 阅读 · 0 评论 -
LeetCode704. 二分查找+牛客二分查找
题目链接:704. 二分查找题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1原创 2020-10-09 21:02:20 · 169 阅读 · 0 评论 -
一文读懂Cookie、Session、Token
本文找了几篇网上讲的不错的文章,将几着合在一起,便于直接对cookie、session、token一次性理解,前一部分通俗易懂地讲解了token来源,后部分对cookie、session、token进行书面解释。便于读者一文找到想要的答案。1、很久很久以前,Web基本上就是文档的浏览而已,既然是浏览,作为服务器,不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议,就是请求加响应,尤其是我不用记住是谁刚刚发了HTTP请求,每个请求对我来说都是全新的。这段时间很嗨皮2、但是随着交互原创 2020-10-05 21:43:08 · 414 阅读 · 0 评论 -
中文字体的英文名称
宋体:SimSuncss中中文字体(font-family)的英文名称Mac OS的一些:华文细黑:STHeiti Light [STXihei]华文黑体:STHeiti华文楷体:STKaiti华文宋体:STSong华文仿宋:STFangsong儷黑 Pro:LiHei Pro Medium儷宋 Pro:LiSong Pro Light標楷體:BiauKai蘋果儷中黑:Apple LiGothic Medium蘋果儷細宋:Apple LiSung LightWindows的一些:新原创 2020-09-14 09:58:20 · 630 阅读 · 0 评论 -
leetcode47(动态规划//记忆化)
题目链接:剑指 Offer 47. 礼物的最大价值题目描述:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例1:输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物数据范围:0 < grid.原创 2020-09-05 13:40:27 · 137 阅读 · 0 评论 -
Spring系列 官方文档(中文翻译)
以下所有文档均包含多个版本,并支持多语言(英文及中文),后端福利。Spring Framework 中文文档Spring Boot 中文文档Spring Cloud 中文文档Spring Security 中文文档Spring AMQP 中文文档Spring Session 中文文档Spring Data:Spring Data JPASpring Data JDBCSpring Data Redis更多中文文档,请参看:https://www.docs4dev.com/amp原创 2020-09-04 09:45:41 · 1423 阅读 · 0 评论 -
最长上升子序列(序列长度+序列输出)
一、LIS的定义:最长上升子序列(Longest Increasing Subsequence),简称LIS,也有些情况求的是最长非降序子序列,二者区别就是序列中是否可以有相等的数。假设我们有一个序列 b i,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们也可以从中得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N,但必原创 2020-07-18 20:54:02 · 7917 阅读 · 2 评论 -
HJ(华为机试104-108)
好久没做了,练习一下。虽然几个都是水题。还是要注意一些java细节处理。这里给出传送门104字符串分割思路:直接暴力求解,利用java的substring,用一个答案数组之类的记录一下答案即可。注意需要及时跳出循环。import java.util.*;import java.io.*;public class Main{ public static void main(String[] args) { Scanner cin=new Scanner(System.in)原创 2020-07-15 20:56:26 · 375 阅读 · 0 评论 -
Java中遍历指定路径下的文件夹查找出文件并打印出路径
方式一、直接遍历import java.io.File;import java.util.LinkedList;public class FileSystemWithoutRecurisive { public static void main(String[] args) { long a = System.currentTimeMillis(); LinkedList list = new LinkedList(); File dir =转载 2020-07-01 16:06:11 · 747 阅读 · 0 评论 -
[SpringBoot]@RequestParam和@PathVariable的用法与区别
文章目录一、SpringBoot——@PathVariable二、SpringBoot——@RequestParam三、@RequestParam和@PathVariable一、SpringBoot——@PathVariableURL变量 Web应用中的URL通常不是一成不变的,例如微博两个不同用户的个人主页对应两个不同的URL:http://weibo.com/user1和http://weibo.com/user2。我们不能对于每一个用户都编写一个被@Requ转载 2020-05-18 11:56:33 · 2000 阅读 · 0 评论 -
Java基础--内部类
文章目录1、成员内部类2、静态内部类3、局部内部类4、匿名内部类5、对比和总结6、面试题内部类(inner class)是定义在另一个类中的类内部类的好处:隐藏机制:内部类封装性更好,隐藏在一个类之中,同一包中的其他类也不能访问内部类可以访问外围类的私有数据1、成员内部类member inner class可以访问外部类的所有成员变量和方法(无论静态、非静态)自身没有静态成员外部类里面创建成员内部类的实例:this.new Innerclass();在外部类之外创建内部类的实例:转载 2020-05-12 11:25:06 · 276 阅读 · 0 评论 -
Java请求转发和重定向区别
一、请求转发和重定向1)请求转发:request.getRequestDispatcher(URL地址).forward(request, response)处理流程:1、客户端发送请求,Servlet做出业务逻辑处理。2、Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。2)重定向:response.sendRedirect(URL地址)处理流程:1、客户端发送请求,Servlet做出业务逻辑处理。2、Servlet调用response.se转载 2020-05-10 10:12:54 · 215 阅读 · 0 评论 -
idea2017.1 thymeleaf 前端html页面中表达式下面红色波浪线+ @Autowire自动注入对象下面红色波浪线
问题描述:IDEA2017.1使用thymeleaf模板时候,表达式报错。虽然不影响运行,但是太多了看着就难受。解决方法1、修改idea对thymeleaf表达式的报错提醒级别:·选择File->Settings->Editor->Inspections,然后搜索thymeleaf,修改Severity的级别不是Error就好:如下修改为Warning2、在html...原创 2020-05-07 21:22:22 · 1179 阅读 · 0 评论 -
@Component, @Repository, @Service的区别+@Autowired 和@Resource 的区别
之前在看spring的时候,学的是xml方式,导致现在对许多注解不太了解,看到文章比较好,转载记录一下,希望不要介意。文章目录一、@Component, @Repository, @Service的区别二、其他网上资料三、Spring 注释 @Autowired 和@Resource 的区别一、@Component, @Repository, @Service的区别官网引用引用sprin...转载 2020-05-05 22:21:15 · 3808 阅读 · 0 评论 -
[SpringBoot]配置文件写法+自动配置原理
申明:本文来自b站springboot视频讲解笔记部分。b站链接:自动配置原理本文主要讲三点:配置文件到底能写什么?怎么写?自动配置原理;配置文件能配置的属性参照1、自动配置原理:1)、SpringBoot启动的时候加载主配置类,开启了自动配置功能 @EnableAutoConfiguration2)、@EnableAutoConfiguration 作用:利用EnableAuto...原创 2020-05-05 20:16:53 · 339 阅读 · 0 评论 -
[SpringBoot]@Value和@ConfigurationProperties注解取值比较+yml/properties配置文件简介
1、二者比较@ConfigurationProperties@Value功能批量注入配置文件中的属性一个个指定松散绑定(松散语法)支持不支持SPEL表达式不支持支持JSR303数据校验支持不支持复杂类型数据封装支持不支持二者都能获取yml或者properties配置文件中的相应属性的值。@Value为spring底层注解...原创 2020-05-04 10:38:05 · 946 阅读 · 0 评论 -
SpringBoot使用Junit测试报错:Exception in thread “main” java.lang.NoSuchMethodError: org.junit.platform.c
文章目录1、问题描述2、解决方法1、问题描述SpringBoot在使用Junit时候报错如下:测试单元导入如下:可以看到我们使用的是org.junit.jupiter.api.Test,而这个模块的测试是Junit5特有的,并且Junit官网对这个模块使用有一定的要求,也就是IDEA的版本必须要是2017.3及以后的。而自己的IDEA版本为2017.1,因此,不想升级IDEA的参...原创 2020-05-03 18:09:33 · 7509 阅读 · 0 评论