JAVA
文章平均质量分 82
Java相关技巧文章,包含java中常见的面试题目
魏小言
BAT资深工程师,Cloud Native 拥护者,敏捷实践者,坚守开发一线打磨工匠技艺的架构师。对基础架构和微服务有丰富的研究和实践。微信群请私信博主
展开
-
解析xml的4种方法详解
1. 介绍1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先转载 2017-11-24 21:40:59 · 248 阅读 · 0 评论 -
相同的数据,Int 强转 Byte 竟然出现了不同的结果!这背后到底隐藏了什么秘密 —— 数据大小端存储
文章目录单一语境 & 多语境 下 Int 与 Byte 互转Int 转 Byte 大小端 类型大小端设计终极原因大小端名称由来解决方案Q&A附录 在应用开发中,经常会用到基本类型相互转换的场景,你是否在一直用的是强转方式进行 Int 转 Byte ?而且至今没发现有什么不妥!byte b = (byte) a Int // int 强转 byte 没毛病,在小型单一应用开发中,纯语言开发,一切正常; 在大型应用组件跨语言交互时,这个方式可能就不奏效了,十有八九会出现不同原创 2021-07-19 10:29:39 · 576 阅读 · 1 评论 -
IDEA中常用的maven指令
Maven库:http://repo2.maven.org/maven2/Maven依赖查询:http://mvnrepository.com/Maven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName&...原创 2018-03-14 15:26:29 · 3493 阅读 · 0 评论 -
Hibernate中配置C3P0数据源步骤及hbm.xml 文件详解
> Hibernate中配置C3P0数据源步骤:1、加入相关jar包:hibernate-release-4.2.4.Final\lib\optional\c3p0 2、在cfg中配置数据源的相关属性: property name="hibernate.c3p0.max_size">10property> property name="hibernate.c3p0.mi原创 2017-06-28 21:43:32 · 805 阅读 · 0 评论 -
sql 中的concat()函数及JAVA时间类在Hibernate中的映射
concat():是sql 中连接字符串函数列表内容select concat(title,’:’,author) from hibernate_1.news; 注意:列表内容1、concat()函数中参数中如果存在NULL,则结果为NULL;2、concat_was():格式为CONCAT_WS(separator,str1,str2,…); mysql> select conca原创 2017-06-29 21:39:49 · 1469 阅读 · 1 评论 -
classLoad()详解
转载:http://blog.csdn.net/xyang81/article/details/7292380#comments 请尊重他人成果,谢谢! 一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用转载 2017-08-03 16:52:56 · 590 阅读 · 0 评论 -
前、中、后缀形式的表达式
35,15,+,80,70,-,*,20,/ //后缀表达方式(((35+15)*(80-70))/20)=25 //中缀表达方式 /,*,+,35,15,-,80,70, 20 //前缀表达方式 人的思维方式很容易固定~~!正如习惯拉10进制。就对2,3,4,8,16等进制不知所措一样~~!人们习惯的运算方式是中缀表达式。转载 2017-08-12 15:31:06 · 2278 阅读 · 0 评论 -
计算机知识思维导图2.0
下面是本人梳理的互联网计算机网络、存储、编程语言、操作系统相关的知识脑图【后续语言,数据结构等模块不断梳理更新】:下载地址:https://download.csdn.net/download/qq_34417408/13609058注:需要脑图中知识点备注中详解内容的同学,可留言;请尊重原创,勿转载。...原创 2020-12-28 11:49:40 · 346 阅读 · 0 评论 -
HashMap与TreeMap对比
排序:treemap有序数据结构:hashMap:hash桶+链表+红黑树treeMap:红黑树时间复杂度:hashMap:Array 快 常量treeMap:树 相对慢 lgN内存占用:HashMap因为要保存一个Array,所以会造成空间的浪费。TreeMap只保存要保持的节点,所以占用的空间比较小。性能:HashMap如果出现hash冲突的话,效率会变差,不过在java 8进行TreeNode转换之后,效率有很大的提升。TreeMap在添加和删除节点的时候会进行重排序,会对原创 2020-12-17 10:28:23 · 428 阅读 · 0 评论 -
十八、最近请求的次数
class Solution{ public Queue<Integer> q ; public Solution(){ q = new LinkedList<>(); } public int print(int t){ q.push(t); while(!q.empty()){ if(t - q.peek() > 3000){ q.poll(); } } return q.size(); }}原创 2020-11-23 16:14:58 · 140 阅读 · 0 评论 -
剑指offer&leetcode
链表类1、反转链表题目描述 输入一个链表,反转链表后,输出链表的所有元素。//反转链表--迭代public NodeList reLinkedNode(NodeList head){ if(head == head || head.next == null){ return head; } ListNode pre = null; ListNode next = null; while(head != null){ next = head.next; head.next =原创 2020-11-02 11:00:17 · 139 阅读 · 0 评论 -
十七、最短的桥梁
class Solution{ List<int[][]> firstLand = new ArrayList<>(); public int shoredBridge(int[][] islands){ //区分记录第一个岛 dfsFirstIsland(islands); //bfs int res=0; for(int count =0;count < (islands.length + islands[0].length);count++){.原创 2020-11-20 15:15:21 · 106 阅读 · 0 评论 -
十六、骑士拨号器
求第n步是0-9的十种可能次数和class Solution{ public int knightDialer(int n){ int[][] dp = new int[][](); int M = 1000000007; //根据日字规则,得出相互跳转的n-1规则-两者可相互跳 int[][] digit = new int[][]{{4.6},{6,8},{7,9},{4,8},{0,3,9},{},{0,1,7},{2,6},{1,3},{2,4}}; for(int I =0原创 2020-11-20 15:14:14 · 134 阅读 · 0 评论 -
关于Cglib的浅述
前些天,和以为前辈聊起来动态代理,发现自己还是有些短板的,这里简单梳理一下。Java中说到动态代理并不陌生,在AOP框架、Spring中、ORM(Hibernate)中等许多情况都会用到;动态代理相对的就有静态代理,不过静态代理使用起来不尽人意,这里不在赘述。这里主要说一下Cglib。在之前的我的博客里浅述过关于JDK和Cglib的区别和各自的使用情景;但经过知识梳理、自省后,发现对Cgl...原创 2018-04-17 15:05:27 · 448 阅读 · 0 评论 -
java对象存活判断
java对象存活判断1.判断对象是否存活的算法 1.1引用计数算法 为每一个对象设置一个对象引用计算器,每当有地方引用到该对象的时候,该对象的引用计算器就自动的加一,如果每当引用失效的时候,该对象的引用计算器就会转载 2018-04-15 19:37:25 · 270 阅读 · 0 评论 -
enumerator迭代器和Iterator迭代器浅述
怎么突然想起这个主题了呢?是在浏览关于HashMap和HashTable的相关性能的时候,了解到他们的迭代机制不同,就深入探讨一下。HashMap和HashTable 主要区别是:线程安全、速度、迭代器;前两个区别之前的博客描述过,这里只讨论迭代器: 上源码: Enumeration是一个接口,它的源码如下:package java.util;public interface Enu...原创 2018-04-22 18:50:34 · 1475 阅读 · 1 评论 -
谈谈高并发系统的限流
谈谈高并发系统的限流 开涛大神在博客中说过:在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文结合作者的一些经验介绍限流的相关概念、算法和常规的实现方式。 缓存 缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。...转载 2018-04-10 11:25:57 · 238 阅读 · 0 评论 -
java ThreadLocal(应用场景及使用方式及原理)
虽然ThreadLocal与并发问题相关,但是许多程序员仅仅将它作为一种用于“方便传参”的工具,胖哥认为这也许并不是ThreadLocal设计的目的,它本身是为线程安全和某些特定场景的问题而设计的。ThreadLocal是什么呢!每个ThreadLocal可以放一个线程级别的变量,但是它本身可以被多个线程共享使用,而且又可以达到线程安全的目的,且绝对线程安全。例如:public final...原创 2019-01-23 16:10:30 · 728 阅读 · 0 评论 -
Synchronized与Lock及相关锁知识串联梳理
最近在整理Synchronized和lock的区别,想起了许多其他相关的知识,这里串联一下,形成知识架构。主要区别有一下几点: 1、实现层次:Syn是基于JVM层,java内置的关键字。在程序编译阶段会在代码块前形成moitorecter、代码后形成moitorexit标识;lock笼统的说是一个java接口,因为Lock有不同的实现类; 2、锁的获取/阻塞:Syn是当获得锁的...原创 2018-04-09 21:19:37 · 275 阅读 · 0 评论 -
理解Java Integer的缓存策略
本文将介绍 Java 中 Integer 缓存的相关知识。这是 Java 5 中引入的一个有助于节省内存、提高性能的特性。首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为。接着我们将学习这种实现的原因和目的。你可以先猜猜下面 Java 程序的输出结果。很明显,这里有一些小陷阱,这也是我们写这篇文章的原因。123456789101112131415161718192...转载 2018-04-18 18:43:35 · 195 阅读 · 0 评论 -
ActiveMQ浅述
最近在看关于Spring源码深入解析的书,里面涉及到了MQ,之前在项目中都是和框架整合在一块或者有封装好的拿来用,这里单纯的介绍一下ActionMQ;首先,什么是Active MQ? Active MQ是Apache出品,最流行的,能力强劲的开源消息总线。这是百科给的官方介绍。具体点说,Active MQ,即Java消息服务(Java Message Service)应用程序接口,是一款面向...原创 2018-04-21 21:53:10 · 301 阅读 · 0 评论 -
深入理解Java并发之synchronized实现原理
最近在梳理关于同步的一些知识,发现知识的海洋无边际,学无止境,这里借鉴以为大佬的文章梳理一下synchronized的底层实现原理。首先是,synchronized都有什么应用场景呢? 概括,进程同步:修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入...转载 2018-05-07 21:06:10 · 274 阅读 · 0 评论 -
JVM的GC-GMS详解
前言CMS,全称Concurrent Low Pause Collector,是jdk1.4后期版本开始引入的新gc算法,在jdk5和jdk6中得到了进一步改进,它的主要适合场景是对响应时间的重要性需求 大于对吞吐量的要求,能够承受垃圾回收线程和应用线程共享处理器资源,并且应用中存在比较多的长生命周期的对象的应用。CMS是用于对tenured generation的回收,也就是...转载 2018-05-14 18:47:27 · 2803 阅读 · 1 评论 -
Java垃圾回收—— 垃圾收集器
概述Stop The World枚举GC Roots安全点安全区域垃圾收集器吞吐量GC的名词并行和并发Serial 收集器单线程垃圾收集新老ParNew 收集器Serial 升级版新Parallel 收集器吞吐量优先新老CMS 收集器停顿时间优先老G1收集器垃圾区域Region优先整个堆垃圾收集器组合概述在我们上一篇文章垃圾回收机制中讲述到了垃圾回收...转载 2019-01-23 19:53:54 · 290 阅读 · 0 评论 -
Class.forName()的作用与使用总结
1、Class类简介:Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。Class 没有公共构造方法。Class 对象是在加载类时由Java 虚拟机以...转载 2019-01-22 16:04:11 · 267 阅读 · 0 评论 -
评教系统v.01
评教系统最近在帮朋友写个小demo,顺便梳理下自己的kno,由于工作项目时间排期较紧,就在demo上花了小部分时间;对于高T来说,可以直接略过;系统比较小众,应用技术广但不深,适合入门小白了解。技术应用SpingMvc+Spting+Mysql+Bootstrap+ Echarts这里后端框架是SpringMvc+Spting,前端框架是Bootstrap,数据分析图表部分用的是百度开源的...原创 2019-05-19 13:14:17 · 2601 阅读 · 12 评论 -
拼凑纸币、大整数问题
/**1、题目描述 给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N员(N为0-10000的非负整数)的不同组合的个数。 输入描述: 输入为一个数字N,即需要拼凑的面额 输出描述: 输出也是一个数字,为组成N的组合个数。 示例1 输入5 输出2 * * @author */public class Money {原创 2017-08-30 21:07:09 · 388 阅读 · 0 评论 -
LRU 缓存编程实现
感觉这个话题,包括代码已经烂大街了。不过写这个还是需要对HashMap系和链表的基础很了解的,最近重新练了练手,附上代码和注释吧。整体可以理解为是链表的结构-根据访问顺序调整节点节点的位置,但存储的时候是K_V的形式存储-添加查询删除的时候首先链表操作 然后在HashMap中添加查询删除-总体结构和LindedHashMap类似,异曲同工,但具体的区别还待继续学习研究, 不过一般都用的是Li...原创 2018-02-11 10:34:26 · 271 阅读 · 0 评论 -
Spring JDK、Cglib动态代理梳理
最近聊起动态代理,想起很早的时候写过一些,但不是很精髓,随着应用的加深,现在在梳理一下吧,经常自省,总结,温故知新。说到代理,有很多说法,比如Ajax通过服务器的反向代理也可以实现跨域呀,Spring AOP实现,Java的多态实现,拦截器的原理、Hibernate懒加载的原理等等都会用的代理。这里主要说下Spring中的JDK静态、动态代理、和Cglib代理; 先说下代理的一些场景:...原创 2018-02-08 18:40:02 · 188 阅读 · 0 评论 -
Gson源码解读
Gson是一个可以用来将Java对象转换为JSON字符串的Java库。当然,它也可以把JSON字符串转换为等价的Java对象。网上已经有了不少可将Java对象转换成JSON的开源项目。但是,大多数都要求你在Java类中加入注解,如果你无法修改源码的话就比较坑爹了,此外大多数开源库并没有对泛型提供完全的支持。于是,Gson在这两个重要的设计目标下诞生了。Gson可以作用于任意的Java对象(包括接触转载 2018-01-18 22:09:31 · 639 阅读 · 0 评论 -
栈为什么效率比堆高
栈为什么效率比堆高总结如下:1、有寄存器直接对栈进行访问(esp,ebp),而对堆访问,只能是间接寻址。 也就是说,可以直接从地址取数据放至目标地址;使用堆时,第一步将分配的地址放到寄存器,然后取出这个地址的值,然后放到目标地址。 2、栈中数据cpu命中率更高,满足局部性原理。 3、栈是编译时系统自动分配空间,而堆是动态分配(运行时分配空间),所以栈的速度快。 4、栈是先进后出的队列结构,比原创 2017-09-20 14:09:34 · 1870 阅读 · 0 评论 -
字符串反转问题总结
题目:写一个函数,将字符串反转,反转方式如下:“I am a student”反转成“student a am I,总结了通过递归,非递归反转字符串代码,并做出两种不同的反转单词情况的代码,因为比较简单,直接上代码,看注释即可:public class ReverseString { /** * * @param args the command line argumen原创 2017-09-01 19:03:16 · 306 阅读 · 0 评论 -
Java8对Java语法的新特性
Java8的一些新的特性,其中我印象最深的就是 lambda表达式,让我们代码变得简洁,可读性高。一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:[java] view plain copy print?interface Formula { double calculate(int a);转载 2017-09-10 19:34:11 · 296 阅读 · 0 评论 -
丑数
先说丑数定义:只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。思路:丑数一定是被2,3,5整除的数,所以对数分别进行整除2,3,5可以判断数是否为丑数。(若是丑数,整除结果为1。) 具体代码如下:public boolean Ugly(int n){while(n%2==0){n/=2;}whil原创 2017-09-10 19:26:18 · 305 阅读 · 0 评论 -
股神、餐馆拼桌问题
* 1、题目描述 * * 有股神吗? 有,小赛就是! * 经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天…依此类推。 * 为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?import java.util.Scanner;/** * * @au原创 2017-08-31 15:35:43 · 367 阅读 · 0 评论 -
树的高度
小米编程2017: /**、 * * 现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度 输入描述: * * 输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组成, * 下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号 * * * 输出描述: * *原创 2017-09-16 10:52:09 · 334 阅读 · 0 评论 -
丢失的三个元素、网格走法
/ *1、题目描述 现在有一个数组,其值为从1到10000的连续增长的数字。出于某次偶然操作,导致这个数组中丢失了某三个元素,同时顺序被打乱,现在需要你用最快的方法找出丢失的这三个元素,并且将这三个元素根据从小到大重新拼接为一个新数字,计算其除以7的余数。 例:丢失的元素为336,10,8435,得到的新数字为103368435,除以七的余数为2。 输入描述: 输入数据为一行,包含9997原创 2017-08-30 08:51:11 · 283 阅读 · 0 评论 -
酒店价格、集合、文件名称
/** * 题目描述 酒店房间的价格录入是通过时间段来录入的,比如10月1日至10月7日800元,10月8日至10月20日500元,请实现以下函数int[][] * merge(int[][] * dateRangePrices),输入是某个酒店多个日期段的价格,每个日期段(终止日期大于等于起始日期)和对应的价格使用长度为3的数组来表示,比如[0, * 19, 300], [10,原创 2017-09-07 09:18:55 · 408 阅读 · 0 评论 -
袋鼠过河问题
题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远。每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5,就代表袋鼠下一跳最多能够跳5米,如果为0,就会陷进去无法继续跳跃。河流一共N米宽,袋鼠初始位置就在第一个弹簧上面,要跳到最后一个弹簧之后就算过河了,给定每个弹簧的力量,求袋鼠最少需要多少跳能够到达原创 2017-08-27 16:34:59 · 1428 阅读 · 1 评论 -
SpringMvc处理请求流程
1:首先客户端发送一个http请求,web服务器接受这个请求,然后web容器交给DispatcherSevlet处理。 2:DispatcherSevlet将负责将请求分发。DispatcherSevlet可以认为是spring提供的前端控制器,所有的请求都要经过他来进行统一的分发。 3:在DispatcherSevlet将请求分发给springcontroller之前,需要借助于spr转载 2017-08-26 19:50:29 · 1191 阅读 · 0 评论