Java 【LeetCode】53. Maximum Subarray 问题描述 https://leetcode.com/problems/maximum-subarray/#/description Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [-2,1,-3,4,
Java 【LeetCode】52. N-Queens II 问题描述 https://leetcode.com/problems/n-queens-ii/#/description Follow up for N-Queens problem. Now, instead outputting board configurations, return the total number of distinct solutions. 比N-Queens [http://www.zgljl2012.com/leetcode-51-n-queens/] 反倒容易一点了,因为不需要存储解法,只需要计算数目。
Java 【LeetCode】51. N-Queens 问题描述 https://leetcode.com/problems/n-queens/#/description The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other. Given an integer
Java 【LeetCode】50. Pow(x, n) 问题描述 https://leetcode.com/problems/powx-n/#/description Implement pow(x, n). 实现pow(x,n),及实现幂运算。 算法分析 这个题目的难度是中等,所以如果用显而易见的那个O(n)算法,即直接循环n次,将n个x乘起来的话是肯定会超时的,所以,只能用递归分治算法,即一次只乘一半,设值为A ,即当n为偶数时,结果是A*A;当n为奇数时,结果为A*A*x;
Java 【LeetCode】49. Group Anagrams 问题描述 https://leetcode.com/problems/anagrams/#/description Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ] Note: All
Java 【LeetCode】48. Rotate Image 问题描述 https://leetcode.com/problems/rotate-image/#/description You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place?
Java 【LeetCode】46. Permutations 问题链接:https://leetcode.com/problems/permutations/#/description 求数组的全排列 算法 一个个的将每一个数插入数组,如数组[1,2,3],设结果二重数组为r,初始化r中只有一个数组r=[[1]], 然后要插入数据2,有两种插法,[1,2]和[2,1],即插在1前面和后面,从而r里有了两个数组r=[[1,2],[2,1]],接下来插入数据3,对于数组 [1,
Java 【LeetCode】43. Multiply Strings 问题描述 https://leetcode.com/problems/multiply-strings/#/description Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2. Note: * The length of both num1 and num2 is
Java 【LeetCode】42. Trapping Rain Water 问题描述 https://leetcode.com/problems/trapping-rain-water/#/description Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after
Java 【LeetCode】41. First Missing Positive 问题描述 https://leetcode.com/problems/first-missing-positive/#/description Given an unsorted integer array, find the first missing positive integer. For example, Given [1,2,0] return 3, and [3,4,-1,1] return 2.
Java 【LeetCode】40. Combination Sum II 问题描述 Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. Each number in C may only be
Java 【LeetCode】39. Combination Sum 问题描述 https://leetcode.com/problems/combination-sum/#/description Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all unique combinations in C where the candidate numbers sums to
Java 【算法学习】二分查找算法 二分查找算法用于在一列已排序的数组中找出一个数的位置。 假设下面有一列已排序的数:[a1,a2,a3,a4,...an],有a1<=a2<=a3<=a4<=...<=an 当我们要查询一个数a是否在数组中,直接的办法就是一个个比对,找到了即返回所在位置,没找到就返回-1;这种方法的时间复杂度是O(n)。 设有n个数,二分查找是先找数组[1..n]中间的那个数M,设其位置为i 1. 如果a比M小,则a肯定在M的左边,下一轮查数组[1..i-1]; 2. 如果a比M大,那a肯定在M的右边,
Java Gradle打包时指定JDK路径 在使用Gradle打包时,如果需要特别指定JDK路径,但又不想更改配置文件的话,可以直接进行文件夹,使用下述命令打包: gradlew build -Dorg.gradle.java.home=/JDK_PATH
设计模式 Java动态代理的异常处理问题 今天在使用Java动态代理时出现了一个很棘手的问题,实现类里抛出了一个自定义异常,但外面捕获不到。 虽然使用printStack可以输出调试信息,但通过getMessage获取不到提示,因为项目需求是捕捉到同一种自定义异常的不同异常情况,通过 getMessage获取异常提示反馈给用户,但因为使用了动态代理所以出现了异常捕获不到的情况。 具体原因是因为我们通过动态代理最终捕获到的异常时经过加工了的,也就是捕获的已不再是最开始我们希望抛出的异常,加工抛出的异常有两种: java.lang.reflect.UndeclaredThrowableException java.lang.reflect.InvocationTargetException 经过实验,最终的解决办法为: 在动态代理的方法执行时捕获异常,然后抛出exception.getCause() 这样,就能抛出你所希望抛出的那个异常里。 try{ method.invoke(fun, args); } catch(
Java 【Java基础】InputStream 、 InputStreamReader和BufferedReader 在Java中,上述三个类经常用于处理数据流,下面介绍一下三个类的不同之处以及各自的用法。 * InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流; * InputStreamReader : 是字节流与字符流之间的桥梁,能将字节流输出为字符流,并且能为字节流指定字符集,可输出一个个的字符; * BufferedReader : 提供通用的缓冲方式文本读取,readLine读取一个文本行, 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。 下面有三个Demo(Demo访问百度主页获取字节流然后输出)来分别说明三个类的作用: -------------------------------------------------------------------------------- * InputStream package 数据流; import java.io.IOException; import java.
Java Java计算两个日期之间的天数差 public long days(Date d1, Date d2) { long gap = 0; if(d1.before(d2)) { gap = d2.getTime() - d1.getTime(); } else { gap = d1.getTime() - d2.getTime(); } return TimeUnit.DAYS.convert(gap, TimeUnit.
Java 【消息队列】ActiveMQ的简单实例 - 生产者消费者模式 Github上项目地址:https://github.com/zgljl2012/activemq-learn 安装 首先,需要去官网下载windows版本(如果使用的是Linux,就下载对应Linux的)的ActiveMQ并安装,下载地址 [http://archive.apache.org/dist/activemq/5.14.1/apache-activemq-5.14.1-bin.zip] 下载完后解压缩,进入bin目录,打开一个控制台,输入: activemq.bat start
Java Java 获取Date的“昨天”和“明天” Java 获取Date的“昨天”和“明天” 使用日历类:Calendar @Test public void dateTest() { Date today = new Date(); for(int i=0;i<10;i++) { today = yesterday(today); System.out.println(today); } System.out.println("------------"); for(int i=0;i<10;i++) { today = tomorrow(today); System.out.println(today); } } /** * 返回昨天 * @param today * @return */ public Date yesterday(Date today) {
Java Maven内置变量 Maven内置变量说明 * ${basedir} 项目根目录 * ${project.build.directory} 构建目录,缺省为target * ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes * ${project.xxx} 当前pom文件的任意节点的内容,比方说version等 * ${project.build.finalName} 产出物名称,缺省为${project.artifactId}${project.version} * ${project.packaging} 打包类型,缺省为jar
Java Maven Install 报错:...... was cached in the local repository, resolution will not be reattempted until the update interval of nexus ...... Maven install时报错: ...... was cached in the local repository, resolution will not be reattempted until the update interval of nexus ...... 这是在本地对应的Jar包路径(本地仓库,比方说test-1.0.0.jar,文件夹默认为是:C://user/<用户名>/.m2/repository/test/test/
Java Java获取当前进程ID以及所有Java进程的进程ID 首先是获取当前Java运行的Java进程ID,这个是网上常见的,也就是Java程序自身将进程ID打印出来: package com.test; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; public class Target { public static void main(String[] args) throws InterruptedException { System.out.println(getProcessID()); while(true)
Java Java正则表达式实现${name}形式的字符串模板 在开发中类似站内信的需求时,我们经常要使用字符串模板,比如 尊敬的用户${name}。。。。 里面的${name}就可以替换为用户的用户名。 下面使用正则表达式简单实现一下这个功能: /** * 根据键值对填充字符串,如("hello ${name}",{name:"xiaoming"}) * 输出: * @param content * @param map * @return */ public static String renderString(String content, Map map){ Set
设计模式 动态代理 代理模式是设计模式中一个非常重要的模式,代理模式有两个角色,一个是代理类,一个是委托类,委托类也是真正的业务类,两者都有相同的接口; 代理类主要负责为委托类预处理消息、过滤消息、把消息转发 给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象并不真正实现服务,而是通过 调用委托类的对象的相关方法,来提供特定的服务。 Spring中的AOP基本原理就是动态代理。 代理模式可以根据代理类创建时期的不同分为两种: * 静态代理:程序员需要编写特定的源代码,在程序运行前,.class已存在 * 动态代理:在系统运行时,Java反射自动生成 静态代理就不记录了,值得好好学学的是动态代理。学习动态代理首先要学一下Java反射,它的实现常见的有两种: * JDK提供的InvocationHandler 接口和java.lang.