## java
文章平均质量分 71
striner
这个作者很懒,什么都没留下…
展开
-
有关java对象拷贝操作的总结
一、引言常用的拷贝方式:手动get&set实现。 通过Cglib的BeanCopier实现。 通过Apache的BeanUtils实现。 通过Apache的PropertyUtils实现。 通过Spring的BeanUtils实现。(此模块先对常用拷贝方式进行总结,后文会详细介绍深拷贝&浅拷贝的区别以及实现方式。)二.常用拷贝方式之间的区别1. 手动get&set实现:简单,粗暴,高性能2. 通过Cglib的BeanCopier实现(使用动态原创 2021-12-09 10:25:37 · 1177 阅读 · 0 评论 -
经典算法之分治法 求最大区间和
问题描述:数组中整数有正有负求一连续子段,使得和最大化例如:2,4,-7,5,2,-1,2,-4,3最大连续段:5,2,-1,2其最大和为8解题思路:制造递归条件,将数组分为两部分.将区间和分为三部分计算:第一部分:从begin开始计算[begin, index)第二部分:从end开始计算[index, end)第三部分:原创 2018-04-08 21:23:37 · 1583 阅读 · 0 评论 -
经典算法之博弈论 取球博弈
问题描述:取球博弈.局面上有一堆球,二人博弈,每人一次只能取1,3,7或者8个球.要求输出局面有n个球时的胜负情况.解题思路:这里我提供两种题解,一种是纯递归求解,但纯递归CPU消耗过大,后面我还会提供动态规划+缓存的题解方法.实现方式一:*纯递归解题, 由于纯递归对CPU消耗过大,这里我以1到50个球的局面情况为例public class原创 2018-04-01 18:51:11 · 2438 阅读 · 1 评论 -
经典算法之博弈论 填字母游戏
问题描述:有四种残局,星号'*'代表空格.两人博弈,轮流在空格处填补字母,一次只能填写一个,即'L'或者'O',最先拼出'LOL'字样的获胜.解题思路:每人每次只能填'L'字母或者'O'字母,而填充后局面如何就递归试探交给对方去判断,赢则return 1, 输则return -1, 平局则return 0.试探结束后再回溯用于试探下一个局面.代码实现:p原创 2018-04-01 19:15:50 · 1215 阅读 · 3 评论 -
经典算法之博弈论 高僧斗法
问题描述:两高僧斗法.现有若干级台阶(表示N级浮屠).又有若干小和尚随机的站在某个台阶上.最高一级台阶必须站人,其他任意.两位参加游戏的法师分别指挥某个小和尚向上走任意多级的台阶,但会被站在高级台阶上的小和尚阻挡,不能越过.两个小和尚也不能站在同一台阶,也不能向低级台阶移动.两高僧轮流发出指令,最后所有小和尚必然都会挤在高段台阶上,再也不能向上移动.轮到哪个高僧指挥时无法移动,则游原创 2018-04-02 08:37:18 · 420 阅读 · 1 评论 -
经典算法之辗转相除法(欧几里得定理)
问题描述:两个数a,b,要求求得这两个数的最大公约数和最小公倍数.解题思路:辗转相除法(欧几里得定理)思想:一个数,能整除数a和数b,那么这个数一定可以整除(a-b),即gcd(a, b) = gcd(a, a%b);基于算法基本定理: 质因数分解的一致性代码实现:import java.util.Scanner;public class Main原创 2018-04-01 18:27:00 · 6581 阅读 · 0 评论 -
经典算法之走迷宫
问题描述:...1111111111111111111111111111111.111111........1111111111.111111.111111..111.11111111.....111111.11111111111.1111111111.11111111.111111.................11111111.111111.11111111111.1原创 2018-04-03 11:02:41 · 5801 阅读 · 0 评论 -
经典算法之并查集 合根植物
题目描述:w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入格式:第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1接下来一行原创 2018-04-03 11:16:41 · 775 阅读 · 2 评论 -
经典算法之二分查找 找出刚好比x稍微大点的那个数
题目描述:已知有序的序列,比如:2,3,3,5,9,9,9,12,12,13,15,22,22,22,22,25,25,23,91,95有整数x,比如: x=23要求找到一个刚好比x稍微大一点的元素位置当数组较大的时候,需要二分查找加快速度。思路分析:典型的二分查找问题,定义一个尾指针end和一个头指针begin不断二分递归,当end-begin==1时原创 2018-04-04 21:02:13 · 1768 阅读 · 0 评论 -
经典算法之尼姆堆问题
问题描述:有四堆硬币,数量分别为2, 5, 12, 14两玩家轮流取硬币,每人每次只能从某一堆上取任意数量的硬币,取到最后的玩家胜解题思路:这道题用尼姆堆解题 模2加(异或)解法当每一堆硬币数量异或值为0时,必胜 10 101 1100 1110 ------ 0101代码实现:public cl原创 2018-03-31 20:38:14 · 979 阅读 · 0 评论 -
经典算法之天平称重问题(进制解法)
问题描述:已知所有砝码重量均为3的倍数,且所有重量的砝码有且只有一个要求输出重量1到n的所有物品的称重方式解题思路:用字符串拼接结果三进制的返回值为0 1 2返回值为0则表示该权重不取返回值为1表示加上该权重返回值为2表示该权重需要加上两遍,不符合题意. 故需将其转换为-1减掉该位权重,对商进行改变.如: 2 ÷ 3 - 2 ... 0 == -原创 2018-03-31 20:20:29 · 6089 阅读 · 0 评论 -
事务操作之savePoint保存点
某转账业务有 A B C D 四个事务。 需求:AB(必须),CD(可选)。代码实现如下:Connection conn = null;Savepoint savepoint = null; //保存点,记录操作的当前位置,之后可以回滚到指定的位置。(可以回滚一部分)try{ //1 获得连接 conn = ...; //2 开启事务 conn原创 2018-03-07 08:27:47 · 2200 阅读 · 0 评论 -
百词斩面经
幸运的过了笔试,然而...自己实力太弱怕又要一面挂.....0.0面试问的题不多,和我总共只谈了二十七八分钟,到了后面面试官问我有什么想问的问题没有我寥寥提了几个尴尬终.1. 自我介绍2. 你知道ArrayList吗(刚听到ArrayList时也不知道是紧张还是怎么回事没反应过来....),谈谈ArrayList和LinkedList的区别3. 给ArrayList尾部插入元素的时间复杂度有多少,...原创 2018-03-30 15:45:59 · 1885 阅读 · 1 评论 -
经典算法之全排列(详集)
我总结了全排列的各种题解,若有不全之处还请各位大大们慷慨指出.1. 全排列之取球游戏问题描述: m球中取n个球,共有多少种取法解题思路: 用递归思想解题.乍眼一看貌似递归无下手之处,其实每一个球只有两种情况:要么取, 要么不取. 若用m表示球的个数,n表示需要取的球的总数,那么当前球取则return fun(m - 1, n - 1) ; 不取则原创 2018-03-25 21:34:05 · 791 阅读 · 1 评论 -
Wannafly挑战赛12之银行存款
Wannafly挑战赛12之银行存款 链接:https://www.nowcoder.com/acm/contest/79/A来源:牛客网银行存款时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536KSpecial Judge, 64bit IO Format: %lld题目描述银行的定期存款一般有1年期、2年期、3年期、5年期四种原创 2018-03-24 22:15:51 · 295 阅读 · 0 评论 -
经典算法之出栈情况的模拟
问题: 出栈顺序模拟 求1到n个数的进栈出栈顺序一共有多少种思路讲解: 此题采用递归思想, 用f(n,m)记录第i个数的进出栈情况.n用于表示等待进栈的数的个数,m为栈内已有的个数.将每一时刻分为有数进栈,没有数出栈或者没有数进栈有数出栈两种情况,采用f(n - 1, m + 1) + f(n, m - 1)递归,若n == 0则表示所有数已经进栈,那么出栈顺序只有原创 2018-03-25 09:54:42 · 699 阅读 · 0 评论 -
经典算法之算式符号问题
题目要求给定字符串数组a = {1, 2, 3, 4, 5, 6, 7, 8, 9} a中的每两个元素之间都可以"+", "-"或者什么都不写(表两个元素合起来是一个数如:12,123等)连接进行运算要求输出结果为110的所有组合方式这道题写起来不难,只要思路理清就一切ok. (ps: 用递归解题,别忘了回溯~)代码实现public class Main原创 2018-03-25 14:34:02 · 617 阅读 · 0 评论 -
经典算法之天秤称重问题
问题描述:已知所有砝码重量均为3的倍数,且所有重量的砝码有且只有一个要求输出1到n的所有物品的称重方式解题思路:物品重量砝码1123 - 1334 3 + 159 - 3 - 1......经过对比发现,若物品重量刚刚超过了较大砝码的一原创 2018-03-31 18:47:43 · 8551 阅读 · 0 评论 -
经典算法之分治法 大数相乘
题目描述:用串的形式表示大数的乘法。即求类似: "23234845847839461464158174814792" * "6457847285617487843234535"要求结果返回一个串。解题思路:采用分治法解题.具体方式已在代码中注释.代码实现:import java.util.Scanner;public class Main {原创 2018-04-05 13:29:56 · 2879 阅读 · 0 评论 -
经典算法之求字典序排列的最大子序列
题目描述:解题思路:首先,按字典序排列的最大子序列一定包含最后一个字母从后往前找,后面的总是小于等于前面的元素才能保证子序列按字典序排列代码实现:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner原创 2018-04-24 15:36:00 · 4723 阅读 · 3 评论 -
fail-fast(快速失败)机制和fail-safe(安全失败)机制的介绍和区别
fail-fast和fail-safe的区别: fail-safe允许在遍历的过程中对容器中的数据进行修改,而fail-fast则不允许。fail-fast ( 快速失败 )fail-fast:直接在容器上进行遍历,在遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModificationException异常导致遍历失败。java.util包下的集合类都是快速...原创 2019-01-13 14:59:18 · 13288 阅读 · 7 评论 -
GC-谈谈“生死”
技术点:1、jvm运行时数据区组成结构:方法区、虚拟机栈、本地方法栈、堆和程序计数器。下面是我从百度找的图片:对于每一个模块的作用,笔者就不再展开了,如果需要的话,我会在后面可以专门挑一天写一个博文,专门介绍每个部分的作用和运行状态。话虽如此,知识本来就是比较发散的东西,我就说几点我面试过程中遇到最多问题:①对象实例存在哪?存在堆中。②对象引用存在哪啊?存在虚拟机栈(注意:我们平时...转载 2019-01-13 16:12:11 · 148 阅读 · 0 评论 -
Java中内存泄漏
以下内容转载自:http://blog.csdn.net/anxpp/article/details/51325838 Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占用的内存,都可以被GC回收,但是Java也存在内存泄露,但它的表现与C++不同。JAVA 中的内存管理 要了解Java中...转载 2019-01-13 16:33:59 · 140 阅读 · 0 评论 -
Java8的HashMap详解(存储结构,功能实现,扩容优化,线程安全,遍历方法)
文章转自:https://blog.csdn.net/login_sonata/article/details/76598675JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理,文章末尾附有HashMap的put方法和resize方法的源码解析。简介Java为数...转载 2019-01-13 18:17:45 · 419 阅读 · 0 评论 -
Java 正则表达式
Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如Hello World正则表达式匹配 "Hello World" 字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。下表列出了一...转载 2019-08-25 19:03:00 · 187 阅读 · 0 评论 -
SimpleDateFormat线程不安全及解决办法
以前没有注意到SimpleDateFormat线程不安全的问题,写时间工具类,一般写成静态的成员变量,不知,此种写法的危险性!在此讨论一下SimpleDateFormat线程不安全问题,以及解决方法。为什么SimpleDateFormat不安全?直接上一个例子,日期格式化成字符串:package com.anjz.test.simpleDateFormat;import java....转载 2019-08-27 19:40:23 · 261 阅读 · 0 评论 -
SimpleDateFormat并发隐患及其解决-Joda-Time
SimpleDateFormat被大量使用于处理时间格式化过程,但时间转换过程遇到的多线程并发使用场景并不多见,这其中存在严重并发隐患,本文就此问题展开分析并介绍几种可行的解决方案。SimpleDateFormat被大量使用于处理时间格式化过程,由于该类在创建时会指定一个pattern用于标明固定的时间格式,所以在使用中,一般会创建一个作用域较大(static修饰或某类的私有属性)的对象用于重...转载 2019-08-28 09:33:13 · 289 阅读 · 1 评论 -
基于Redis-bitmaps自动重命名工具类
github链接:https://github.com/striner/javaCode/blob/master/WRedisHelperimport com.bj58.bic.pan.scf.constants.CfgConstant;import com.bj58.bic.pan.scf.exception.WRedisException;import com.bj58.spa...原创 2019-09-12 14:10:16 · 264 阅读 · 0 评论 -
Java集合类之HashMap原理小结
1. 认识HashMapHashMap是用来存储key-value键值对的数据结构。当我们创建HashMap的时候,如果不指定任何参数,它会为我们创建一个初始容量为16,负载因子为0.75的HashMap (load factor,记录数/数组长度)。当loadFactor达到0.75或指定值的时候,HashMap的总容量自动扩展一倍。它的底层采用Entry数组来保存所有的key-val...转载 2019-01-12 18:26:02 · 162 阅读 · 0 评论 -
Java HashMap的死循环
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loo...转载 2019-01-12 18:03:48 · 134 阅读 · 0 评论 -
经典算法之求使三个数相等的操作次数
题目描述解题思路要想使三个数最终相同,就先给三个数排个序,令A > B > C, 若(B-A)%2 == 0,则使用操作2使B和C相等,再使用操作1使ABC均相等.若(B-A)%2 != 0,则先使用操作1让B和C的差值为0或者2的倍数,再使用操作2+操作1使三个数相等.代码实现import java.ut原创 2018-04-24 15:49:02 · 2192 阅读 · 0 评论 -
WebService+CXF+Spring练习之手机号码归属地查询
基础知识简述:WebService:WebService是使用http传输SOAP协议数据的一种远程调用技术,跨防火墙(防火墙默认对http协议不拦截),跨平台(使用XML封装数据),支持面向对象。WSDL: web服务描述语言,是WebService服务端的使用说明书,说明服务、接口、方法、参数和返回值,是伴随服务发布成功自动生成,无需编写。地址: 服务地址+?wsdl 阅读方式: 从下往上...原创 2018-05-06 15:15:46 · 561 阅读 · 0 评论 -
关于反射的知识点总结
反射1.是JAVA API,是java提供的现成的类2.是java提供的动态执行机制,可以动态加载类,动态创建对象,动态访问属性,动态调用方法.静态与动态静态:事先约定的规则,执行期间按照固定的规则执行.java中的静态执行:编译时已经就确定执行规则(执行次序),在运行期间按照编译结果顺序执行.动态:事先没有约定,在执行期间动态确定执行规则.java中的动态执行:运行期间才能确定加载哪些类,创建哪...原创 2018-05-24 20:02:57 · 1715 阅读 · 1 评论 -
有关Spring的知识点总结
Springspring容器:spring框架中的一个核心模块,用于管理对象.通过反射创建对象.创建对象的方式:方式一 使用无参构造器创建对象(常用)step1:给类添加无参构造器(或缺省构造器)step2:配置文件中配置bean. id:bean的名称,唯一 class:类的全限定名 (反射机制,需要找到类的全限定名)step3:调用容器的getBean("id", class名...原创 2018-05-24 20:06:05 · 375 阅读 · 0 评论 -
有关Spring MVC知识点的总结
Spring MVC五大组件DispatcherService (前端控制器)接受请求,请求配置在HandlerMapping中.基于HandlerMapping的配置,调用相应的模型来处理.HandlerMapping包含了请求路径与模型的对应关系.告诉DispatcherService请求路径与模型之间的关系.Controller (处理器)负责处理业务逻辑.modelModelAndView...原创 2018-05-24 20:09:48 · 3160 阅读 · 1 评论 -
Velocity常用语法
一、基本语法1、"#"用来标识Velocity的脚本语句,包括#set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、#macro等;如:#if($info.imgs)<img src="$info.imgs" border=0>#else<img src="noPhoto.jpg">#end2、"$"用来标识一个对象(或理解原创 2018-06-12 13:36:31 · 7105 阅读 · 0 评论 -
IDEA环境下api接口的生成
第一步: 打开“Tools”下的“Generate JavaDoc...”第二步:选择需要生成JavaDoc的范围,选择输出目录,设置编码。然后点击“OK”就一切Okay了~此时打开之前指定的文档输出目录看看:查看文档的方式:双击allclasses-frame.html文件、或者直接把文件拖到浏览器上、再或者右键用浏览器打开 and so on...效果如下:...原创 2018-12-19 20:11:15 · 2555 阅读 · 0 评论 -
AES工具类的实现
AES简介:AES是一种对称加密算法,用来替代原先的DES加密算法。对称加密算法对称加密算法是应用较早的加密算法,技术成熟。加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。常见的对称加密算法有:AES算法,DES算法,3DES算法等等。非对称加密算法非对称加密算法的加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问...原创 2018-12-19 21:27:00 · 1109 阅读 · 0 评论 -
经典算法之巴什博弈变形
这里以2018年全国多校算法寒假训练营练习比赛(第三场)之小牛vs小客为例。题目链接:https://www.nowcoder.com/acm/contest/75/D题目描述 小牛和小客玩石子游戏,他们用n个石子围成一圈,小牛和小客分别从其中取石子,谁先取完谁胜,每次可以从一圈中取一个或者相邻两个,每次都是小牛先取,请输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)(1...原创 2018-02-26 22:55:43 · 1745 阅读 · 0 评论 -
经典算法之01背包
背包问题 一小偷偷东西 商场内有N件货品,每件货物重为wi,自身为价值vi 求小偷背包内所能装的东西的最大价值这里假设一共有5件货品,重量分别为:2 3 4 5 9, 对应的货品价值分别为: 3 4 5 8 10.代码实现:public class Main { public static void main(String[]原创 2017-12-25 21:33:34 · 676 阅读 · 0 评论