Java
文章平均质量分 62
mango_54
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
分治策略-LeetCode解题java实现
2.1 基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题…直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并。这个技巧是很多高校算法的基础,如排序算法(快速排序,归并排序),傅里叶变换(快速傅里叶变换)…最优子结构是依赖特定问题和子问题的分割方式而成立的条件。各个子问题具有最优解,就能求出整个问题的最优解,此时条件成立。比如求广州到北京的最短距离,建设这个路径必经过中间的南京,那原创 2020-06-11 11:03:31 · 964 阅读 · 0 评论 -
递归思想-LeetCode解题java实现
1.1 递归介绍递归是一种编程技巧,一种解决问题的思维方式;严格来说,递归并不是一种算法。简单地说,就是如果在函数中存在着调用函数本身的情况,这种现象就叫递归。递归的思想就是,将大问题分解为小问题来求解,然后再讲小问题分解为更小的问题。这样一层一层的分解,直到问题规模被分解的足够小,不用继续分解,可以直接计算结果为止。如果把这个一层一层分解过程画成图,他其实就是一棵树。我们给这棵树起一个名字,叫做递归树。递归在”归”的过程中,符合后进先出的规则,所以需要用一个堆栈的数据结构。递归过程中函数调用会自原创 2020-06-09 20:28:45 · 479 阅读 · 0 评论 -
如何正确使用不可变的静态集合,MS_MUTABLE_COLLECTION问题
在代码中定义了public static final 类型的Map但是在使用代码监测工具进行检查时,提示MS_MUTABLE_COLLECTION问题MS_MUTABLE_COLLECTION问题查看问题原因,可变集合实例被分配给final的静态字段,因此可以被恶意代码或意外更改。需要修改为private类型,防止被篡改,->private static final修改成私有类型外面怎么访问呢?提供一个公共方法调用,使用Collections.unmodifiableMap()对返回的内容原创 2020-05-29 16:25:09 · 4770 阅读 · 0 评论 -
获取文件SHA256值 java实现
java如何获取文件的sha256值。代码如下import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.security.MessageDigest;/** * 计算文件sha256值 * * @author ryz * @since 2020-05-12 */public class GetFileSHA256 { public static void原创 2020-05-12 11:15:47 · 8652 阅读 · 2 评论 -
使用jackson封装JsonUtil工具类,对象之间属性值拷贝
package com...utils;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;原创 2020-05-11 14:26:56 · 1514 阅读 · 0 评论 -
利用Jackson封装常用JsonUtil工具类
在日常的项目开发中,接口与接口之间、前后端之间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类。原创 2020-05-11 11:14:51 · 3531 阅读 · 0 评论 -
Spring Data JPA 基本使用
前言 Spring Data JPA简介Spring Data JPA:Spring Data JPA 是 spring data 项目下的一个模块。提供了一套基于 JPA标准操作数据库的简化方案。底层默认的是依赖 Hibernate JPA 来实现的。Spring Data JPA 的技术特点:我们只需要定义接口并集成 Spring Data JPA 中所提供的接口就可以了。不需要编写接...原创 2020-04-30 17:36:26 · 473 阅读 · 0 评论 -
byte数组转换成十六进制(bytesToHexString)
将byte数组转换成十六进制字符串输出private String byteToHexString(byte[] bytes) { StringBuilder resultHexString = new StringBuilder(); String tempStr; for (byte b: bytes) { //...原创 2020-04-24 10:59:02 · 10075 阅读 · 1 评论 -
springboot集成logback
springboot中使用logback默认命名为logback-spring.xml并且放在src/main/resources下面即可。在application.properties中添加logback-spring.xml的配置logging.path=/push/logslogging.config=classpath:/logback-spring.xmllogback-spr...原创 2020-03-13 14:36:28 · 200 阅读 · 0 评论 -
SpringBoot集成日志系统logback的问题解决
问题 :java.lang.IllegalStateException: java.io.FileNotFoundException: class path resource [/logback-spring.xml] cannot be resolved to URL because it does not exist配置内容logging.config=classpath:/logback...原创 2020-03-03 14:33:58 · 4049 阅读 · 0 评论 -
maven工程添加servlet依赖
创建java web项目之后,需要添加servlet依赖之后,才可以在项目中使用HttpServlet.在pom.xml文件中添加servlet的maven坐标<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</ar...原创 2020-02-24 19:06:04 · 4852 阅读 · 0 评论 -
java调用sql server存储过程
使用java调用带有输出参数的存储过程本例存储过程的作用为:查询用户输入的ip地址所在的位置信息(国家,省份,城市)USE [databaseName]GO/****** Object: StoredProcedure [dbo].[procedureName] Script Date: 12/27/2019 01:31:46 ******/SET ANSI_NULLS ONG...原创 2019-12-30 09:13:12 · 1145 阅读 · 0 评论 -
有return的情况下try catch finally的执行顺序
1.如果try代码块里有return语句,而finally代码块里没有return语句,程序会先执行finally代码块里的代码然后再执行try代码块里的return语句;2.如果try代码块和finally代码块里都有return语句,try代码块里的return语句会优先finally代码块里的return语句执行,但不会把返回的结果返回给主函数,而是会把finally代码块里return的...原创 2019-12-26 17:15:29 · 162 阅读 · 0 评论 -
线程池ThreadPoolExecutor使用
ThreadPoolExecutor是线程池中最核心的一个类,它提供了四个构造方法:查看一下参数最多的构造函数:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTi...原创 2019-12-16 22:08:47 · 296 阅读 · 0 评论 -
JVM参数分类
标准:-开头,所有的HotSpot都支持非标准:-X开头,特定版本HotSpot支持特定命令不稳定:-XX开头,下个版本可能取消-XX:+PrintCommandLineFlags JVM设置过的详细的XX参数的名称和值-XX:+PrintFlagsFinal 最终参数值-XX:+PrintFlagsInitial 默认参数值...原创 2019-12-13 16:20:32 · 181 阅读 · 0 评论 -
JAVA中,哪些对象可以作为GC Roots?
JVM内存模型Java数据区域分为五大数据区域。这些区域各有各的用途,创建及销毁时间。其中方法区和堆是所有线程共享的,栈,本地方法栈和程序虚拟机则为线程私有的。根据java虚拟机规范,java虚拟机管理的内存将分为下面五大区域。其中三个是线程私有:程序计数器,虚拟机栈,本地方法栈,两个是线程共享:堆,方法区。线程私有的区域等到线程结束时(栈帧出栈时)会自动被释放,空间比较容易清理。而...原创 2019-12-13 14:16:49 · 2808 阅读 · 0 评论 -
mybatisPlus中的updateById无法更新null值的字段
今天遇到了一个问题,至今未找到原因(只好换了一种方式解决问题先)本人使用的mybatis-plus 版本是2.0.7很多人都碰到过这个问题,使用mybatis-plus时,更新操作时,默认情况下如果字段为null是不会进行修改的查询了网上的一些解决办法,【第一种方法】:全局配置方式在MyBatis-Plus配置文件中修改field-strategy字段验证的值为0,即忽略判断。但是这样...原创 2019-12-06 16:56:02 · 4933 阅读 · 0 评论 -
spring定时任务详解(@Scheduled注解)
(一)在xml里加入task的命名空间xmlns:task=“http://www.springframework.org/schema/task”http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"(二)启用注解驱动的定时任务<ta...原创 2019-12-03 17:00:33 · 736 阅读 · 0 评论 -
【笔记】Redis深度历险-------使用HyperLogLog 数据结构进行估数(JAVA)
HyperLogLog 数据结构进行估数,用于统计 如计算网页每天的用户的访问数量UV, 可以解决很多精度要求不是很高的统计问题package com.ryz2593.happy.study.redis;import redis.clients.jedis.Jedis;/** * HyperLogLog 数据结构进行估数,用于统计 如计算网页每天的用户的访问数量UV * 可以解决很多精...原创 2019-11-25 11:08:54 · 177 阅读 · 0 评论 -
【笔记】Redis深度历险-------使用Redis来实现简单限流策略
问题描述限流的目的主要是控制用户行为,避免垃圾请求,比如在一些社区论坛中,用户的发帖,回复、点赞等行为都要严格受控。一般要严格限定某行为在规定时间内被运行的次数,超过了次数就是非法行为。对非法行为做相应的处理。一般在应用场景中,会限制用户的某个行为在规定的时间内只能允许发生N次。解决方案使用滑动时间窗口(定宽),只需要保留这个时间窗口,窗口之外的数据都可以砍掉。zset中的value没有什...原创 2019-11-25 10:46:14 · 271 阅读 · 0 评论 -
【笔记】Redis深度历险-------使用Redis中的zset(有序列表)实现延时队列 JAVA实现
延时队列可以通过Redis的zset(有序列表)来实现。将消息序列化成一个字符串作为zset的value这个消息的到期处理时间作为score然后用多个线程轮训zset获取到期的任务进行处理多个线程处理是为了保障可用性,万一挂了一个线程还有其他线程可以处理。package com.ryz2593.happy.study.redis;import com.alibaba....原创 2019-11-22 10:50:48 · 2196 阅读 · 0 评论 -
转载 九大Java性能调试工具,必备至少一款
转载 九大Java性能调试工具,必备至少一款 ...转载 2019-11-21 16:32:21 · 172 阅读 · 0 评论 -
【笔记】Redis深度历险-------redis分布式锁原理与实现
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。分布式锁:线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(s...原创 2019-11-21 09:33:08 · 168 阅读 · 0 评论 -
调换List集合中任意两个元素的位置
调换任意类型列表中两个元素的位置,定义一个临时变量用户暂存数据,然后在调换元素swap()方法:public void swap(List<E> list, int pos1, int pos2) { //判断list是否为空 if (CollectionUtils.isEmpty(list)) { return; } ...原创 2019-11-19 16:57:52 · 7159 阅读 · 2 评论 -
实现生产者消费者模式的四种方式(Synchronized、Lock、BlockingQueue、Semaphore)
一、问题描述生产者消费者问题(Producer-consumer problem),也称有限缓冲问题(Bounded-buffer problem),是一个多线程同步问题的经典案例。生产者生成一定量的数据放到缓冲区中,然后重复此过程;与此同时,消费者也在缓冲区消耗这些数据。生产者和消费者之间必须保持同步,要保证生产者不会在缓冲区满时放入数据,消费者也不会在缓冲区空时消耗数据。不够完善的解决方法...原创 2019-11-18 14:45:02 · 797 阅读 · 0 评论 -
Spring常见面试题,附带详细答案----大厂面试必备
Spring IocSpring Ioc就是控制发转,是指创建对象的控制权的转移,以前创建对象的主动权和时机由我们自己把控的,而现在这种权利转移到spring容器中,并由容器根据配置文件去创建实例和管理各实例之间的依赖关系,对象和对象之间松散耦合,也利于功能的复用。DI依赖注入,和控制反转是同一个概念的不同角度的描述,即应用程序在运行时依赖Ioc容器来动态注入对象需要的外部资源。 最直观的表...原创 2019-11-02 22:29:48 · 251 阅读 · 1 评论 -
Synchronized面试常见知识点
### synchronized关键字最主要的三种使用方式的总结- **修饰实例方法,作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁**- **修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁** 。也就是给当前类加锁,会作用于类的所有对象实例,因为静态成员不属于任何一个实例对象,是类成员( static 表明这是该类的一个静态资源,不管ne...原创 2019-10-23 15:13:12 · 512 阅读 · 0 评论
分享