![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 51
dannie吖
这个作者很懒,什么都没留下…
展开
-
equals方法的四个属性
1、自反性:对于任何非空引用x,x.equals(x)必须返回true;2、对称性:对于任何非空引用x和y,如果且仅当y.equals(x)返回true时,x.equals(y)必须返回true;3、传递性:对于任何非空引用x、y、z,如果x.equals(y)返回true,y.equals(z)返回true,则x.equals(z)必须返回true;4、一致性:对于任何非空引用x和y,如果在equals比较中使用的信息没有修改,则x.equals(y)的多次调用必须始终返回true或false。对原创 2021-12-09 14:44:42 · 384 阅读 · 0 评论 -
部分视频上传后无法回显问题
1、背景:上传mp4格式的视频,发现虽上传成功,但无法回显至video标签。2、原因:mp4格式的视频,其编码格式有h264与mpeg4,而html5中的video标签只支持h264编码格式的视频。3、解决:限制上传视频的编码格式,若非h264格式,则不支持上传。pom.xml文件中导入jave-1.0.2.jar包 <dependency> <groupId>it.sauronsoftware</groupId> <artifactId>原创 2021-05-12 17:53:07 · 549 阅读 · 0 评论 -
算法—根据概率抽奖
一、背景:奖项集合为items,每个奖项拥有自己的概率,根据其概率抽取奖项,并返回被抽中的奖项。二、思想:1、算法思想:构造概率区间,如:A奖项概率为2,B奖项为4,C奖项为3,构造概率区间[0, 2, (2+4), (2+4+9)],即[0, 2, 6, 9],之后生成一个0到9的随机数,如3,3落到2到6的区间里,小于区间里第3个元素,取其下标2,对应抽中的就是奖项种类中下标为2的奖项,就是B。2、优点:效率较高,推荐。三、代码:public Comment randomGetItem(原创 2020-11-16 15:01:56 · 1038 阅读 · 0 评论 -
Java使用Apache POI生成与读取excel表格
一、Apache POI是什么?Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 ---摘自百度二、利用POI生成excel表格:注意:此例仅支持生成xls文件。/** * 下载模板 */@RequestMapping(value = "/downloadTemplate")public void downloadTemplate() {原创 2020-06-09 18:43:24 · 582 阅读 · 0 评论 -
关于后台接收前端传递值的简单总结
1、后台接收类型为String字符串:JS文件:function click() { ······ var ids = new Array(); var checked = $('#table').bootstrapTable('getSelections'); $.each(checked, function(i, item) { ids.push(item.id); } delete(ids);}/* -------中间省略部分代码------ */funct原创 2020-05-26 18:21:57 · 2341 阅读 · 0 评论 -
fastJson中的@JsonProperty(value = "")与@JSONField(name = "")注解
两注解均用于属性上。本人使用两个注解的场景:涉及到与第三方接口对接中,第三方的属性名与我方属性名不同,我方属性名均为请求与响应中的属性定义,在MyRequest中,第三方属性为ProductId,而我方属性为productID,此时,使用JSONFeild属性即可解决第三方与我方属性名不一致问题;而在第三方请求我方接口后,返回的响应中(MyResponse),我方最终返回的属性名为produc...原创 2020-04-30 16:58:14 · 3584 阅读 · 0 评论 -
@RequestBody的使用
本文转载自https://blog.csdn.net/justry_deng/article/details/80972817转载 2020-03-20 18:42:43 · 116 阅读 · 0 评论 -
List求交集、并集、差集、去重
本文转载自https://www.cnblogs.com/qlqwjy/p/9812919.htmlhttps://blog.csdn.net/qq_32452623/article/details/78087752转载 2020-03-20 18:38:37 · 375 阅读 · 0 评论 -
系统登录增加密码错误等错误信息弹窗
UserLoginController.java:@Controller@RequestMapping("admin")public class UserLoginController { static Logger logger = LoggerFactory.getLogger(UserLoginController.class); private Map<String, O...原创 2020-01-03 18:41:18 · 3083 阅读 · 0 评论 -
操作日志记录实战总结
本文旨在实现注解式操作日志记录:实现步骤:1、定义注解式接口:OperationLog.java:/** * 标记需要记录操作日志的方法 */@Inherited@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})public @interface OperationLog { /** ...原创 2019-12-24 16:18:41 · 998 阅读 · 0 评论 -
Java:List判空的条件:List=null 和 List.size = 0
本文转自https://www.cnblogs.com/huiAlex/p/8594270.html转载 2019-12-13 18:27:00 · 259 阅读 · 0 评论 -
为什么要设置Java环境变量
转载自https://www.cnblogs.com/wkrbky/p/6351235.html转载 2019-08-29 11:10:52 · 84 阅读 · 0 评论 -
Java反射机制
本文转自https://blog.csdn.net/sinat_38259539/article/details/71799078转载 2019-08-27 10:10:23 · 77 阅读 · 0 评论 -
cookie和session的区别
Cookie:通过在客户端记录信息确定用户身份Session:通过在服务器端记录信息确定用户身份区别:cookie数据存放在客户端上,而session数据存放在服务器上;cookie安全性不够;cookie性能更好:session会在一定时间内保存在服务器上,随着访问量的增多,会降低服务器性能;单个cookie保存的数据不能超过4KB,session不存在这个问题;总结:一般,将...原创 2019-08-21 18:45:19 · 64 阅读 · 0 评论 -
Statement、PreparedStatement和CallableStatement有什么区别?
1. 区别:Statement:用于执行不带参数的简单SQL语句,返回生成结果的对象,每次执行SQL语句时,数据库都要编译该语句。PreparedStatement:表示预编译的SQL语句的对象,用于执行带参数的预编译SQL语句。CallableStatement:提供了用来调用数据库中存储过程的接口,如果有输出参数要注册,说明是输出参数。2. PreparedStatement优点...原创 2019-08-21 18:44:58 · 1025 阅读 · 0 评论 -
Java实现单例的5种方式
https://blog.csdn.net/u014672511/article/details/79774847转载 2019-08-21 18:31:38 · 104 阅读 · 0 评论 -
Java定时器和Quartz
https://blog.csdn.net/qq_28702545/article/details/70185101转载 2019-08-21 18:30:47 · 144 阅读 · 0 评论 -
深入理解java之线程池
https://www.cnblogs.com/exe19/p/5359885.html转载 2019-08-21 18:35:15 · 120 阅读 · 0 评论 -
线程的优先级
每一个 Java 线程都有一个优先级,这样有助于操作系统确定线程的调度顺序。Java 线程的优先级是一个整数,其取值范围是:1(Thread.MIN_PRIORITY)-10(Thread.MAX_PRIORITY)。默认情况下,每一个线程都会分配一个优先级NORM_PRIORITY(5)。具有较高优先级的线程对程序更重要,并且应该在低优先级的线程之前分配处理器资源。但是,线程优先...原创 2019-08-21 18:35:24 · 252 阅读 · 0 评论 -
java集合排序(如ArrayList排序)
可以利用Collections工具类中的sort方法,可以对数字、字母、对象进行排序。通过Comparable接口进行排序:(1)普通数字、字母排序(Integer、String类均已经实现了compareTo()方法):Integer类源码: public final class Integer extends Number implements Comparable<Inte...原创 2019-09-06 19:13:49 · 1083 阅读 · 1 评论 -
join()方法的作用
让调用该方法的线程在执行完run()方法后,再执行join()方法后面的代码。即,将两个线程合并,实现同步的功能。具体,可以通过线程A的join()方法来等待线程A的结束,或者使用线程A的join(2000)方法来等待线程A的结束,但最多等待2s,示例如下:public class JoinTest() { public static void main(String[] args)...原创 2019-08-21 18:35:32 · 3124 阅读 · 0 评论 -
是否可以在static环境中访问非static变量?
不可以。静态成员在Java中属于类,在类被Java虚拟机加载的时候,会对static变量进行初始化,这个时候不一定有实例创建,没有实例,就不可以访问非静态的成员。摘自牛客网...原创 2019-09-04 10:23:57 · 196 阅读 · 0 评论 -
Java创建对象的方式
利用new关键字(最常见,调用了构造函数); Student student = new Student();运用反射机制,调用java.lang.Class或java.lang.reflect.Constructor类的newInstance()实例方法(调用了构造函数); Student student = Student.class.newInstance(); Stud...原创 2019-09-04 12:05:52 · 100 阅读 · 0 评论 -
Java8之Stream API
1、Stream关注的是对数据的运算,与CPU打交道;集合关注的是数据的存储,与内存打交道。2、(1)Stream不会存储元素;(2)Stream不会改变源对象,相反,会返回一个持有结果的新Stream;(3)Stream操作是延迟执行的,意味着会等到需要结果的时候才执行。3、Stream API执行流程:(1)Stream的实例化; //创建Stream的方法1:通过集合 ...原创 2019-10-08 18:16:12 · 105 阅读 · 0 评论 -
Java8之构造器引用与数组引用
1、构造器引用:与方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致,抽象方法的返回值烈性即为构造器所属的类的类型。2、数组引用可以将数组视为特殊的类,则写法与构造器引用一致。3、代码: // Supplier中的T get() // Employee的空参构造器 @Test public void test1() { Suppli...原创 2019-09-30 14:37:12 · 330 阅读 · 0 评论 -
Java8之方法引用
1、使用情境:当要传递给lambda体的操作,已经有实现的方法时,可以使用方法引用;2、方法引用,本质上就是lambda表达式,而lambda表达式作为函数式接口的实例,所以方法引用也是函数式接口的实例。3、使用格式:类(或对象)::方法名4、具体分为如下三种情况:(1)对象 :: 非静态方法(2)类 :: 静态方法(3)类 :: 非静态方法5、方法引用使用的要求:要求接口中的...原创 2019-09-30 14:07:28 · 250 阅读 · 0 评论 -
Java8之函数式接口
一、定义:如果一个接口只包含一个抽象方法,则为函数式接口,自定义的接口可用@FunctionalInterface注解为函数式接口。二、四大核心函数式接口:1、Consumer消费型接口:对类型为T的对象应用操作,包含方法:void accept(T t);2、Supplier供给型接口:返回类型为T的对象,包含方法:T get();3、Function<T,R>函数型接口:...原创 2019-09-29 17:00:22 · 138 阅读 · 0 评论 -
Java8之Lambda表达式
lambda表达式使用:1、例子:(o1,o2) -> Integer.compare(o1,o2);2、格式:->:lambda操作符或箭头操作符->左边:lambda形参列表(即接口中的抽象方法的形参列表)->右边:lambda(即重写的抽象方法的方法体)3、lambda表达式的使用:(6种情况)总结: ->左边:形参的参数类型可省略(类型推...原创 2019-09-29 16:03:43 · 137 阅读 · 0 评论 -
&与&&的区别
运算数类型的区别:a&b只能为布尔值。a&&b可以为布尔类型,也可为数值。运算过程存在区别:a&b(按位与)均先被转换为二进制,再进行运算,且两边都会计算,若a为false,会继续计算b的值;a&&b(逻辑与):只要a为false,结果即为false,无需b的值。&&的效率更高。...原创 2019-09-05 20:32:35 · 432 阅读 · 0 评论 -
方法覆盖(Override)和方法重载(Overload)的区别
方法覆盖:一个同一个类中有多个同名、不同参(个数或类型或参数顺序不同)的方法;方法重载:子类覆盖父类的方法,并对其进行重写,以达到不同作用。...原创 2019-09-04 12:51:44 · 370 阅读 · 0 评论 -
Java程序初始化的顺序
初始化顺序:父类静态代码块>子类静态代码块>父类非静态代码块>父类构造方法>子类非静态代码块>子类构造方法测试代码: public class Test{ public static void main(String[] args) { SubClass subClass = new SubClass(); }...原创 2019-09-04 12:34:40 · 86 阅读 · 0 评论 -
常用设计模式
1. 单例模式一个类只有一个实例,且构造函数必须是私有的,必须提供一个全局访问点。实现一个单例模式的代码如下:public class Test() { private Test(){} private static Test uniqueInstance = new Test(); public static Test getInstance() { return uniqu...原创 2019-08-21 18:40:02 · 75 阅读 · 0 评论 -
【Java】基本数据类型和包装类的区别
https://blog.csdn.net/xiaoblank/article/details/81503713转载 2019-08-21 18:41:25 · 111 阅读 · 0 评论 -
多线程同步的实现方法
1、synchronized关键字两种用法:synchronized方法:public synchronized void mutiThreadAccess();synchronized代码块:synchronized(syncObject) { //访问syncObject的代码}2、wait()方法和notify()方法3、Locklock(): 以阻塞方式获得锁。...原创 2019-08-21 18:46:21 · 128 阅读 · 0 评论 -
Java之创建线程
有3种方法,前两种最常用:1、继承Thread类,重写run()方法;2、实现Runnable接口,并实现该接口的run()方法;3、实现Callable接口,重写call()方法。原创 2019-08-21 18:34:56 · 73 阅读 · 0 评论 -
Collection与Conlections区别
Conllection是一个集合接口,提供了对集合对象进行基本操作的通用接口方法。Conllections是一个包装类,包含有各种有关集合操作的静态多态方法。不能实例化,类似一个工具类,服务于Java的Collection框架。...原创 2019-08-21 18:46:42 · 590 阅读 · 0 评论 -
Map、HashMap、HashTable、TreeMap与WeakHashMap
HashMap:线程不安全;允许空键值(最多一条)HashTable:线程安全;不允许空键值TreeMap:有序键值对WeakHashMap:与HashMap类似,不同之处在于WeakHashMap的“key”采用的是“弱引用”,只要key不再被外部引用,便会被垃圾回收器回收;...原创 2019-08-21 18:46:51 · 77 阅读 · 0 评论 -
Servlet与JSP
Servlet:在Java代码中通过HttpServletResponse对象动态输出HTML内容。JSP:在静态HTML内容中嵌入Java代码,Java代码被动态执行后生成HTML内容。总结:Servlet可以很好组织业务逻辑代码,但在Java源文件中通过字符串拼接的方式生成动态HTML内容会导致代码维护困难,可读性差。...原创 2019-08-21 18:47:32 · 81 阅读 · 0 评论 -
Servlet生命周期
init():当servlet第一次被容器加载进入内存后调用,一般用于载入一些特定的资源和配置。service();一旦有对应URL的HTTP请求访问即被调用,会根据HTTP请求中的method信息将请求分发至对应的方法进行处理(doGet()、doPost()),service()一般不需要开发者重写。destroy();servlet被销毁时,一般用来释放、清理资源。注意: in...原创 2019-08-21 18:47:41 · 63 阅读 · 0 评论 -
数据库表中存储的某个字段是json字符串,前台如何获取
可以将json字符串转换为map,从而获得key与value。 Map jsonMap = JSONObject.parseObject(approval.getEntity(), Map.class); Map<Object, Object> entityMap = new HashMap<>(); for (Object obj : ...原创 2019-08-21 18:47:49 · 555 阅读 · 0 评论