java
文章平均质量分 87
付石头_stone
这个作者很懒,什么都没留下…
展开
-
奇偶链表&按值分割链表(携程笔试)-java实现
一、将单链表的奇数节点和偶数节点分别排在一起,奇数偶数指的是节点编号;保持奇数节点和偶数节点的相对顺序;输入:1->2->3->4->5->null 输出:1->3->5->2->4->null思路: * 1.创建两个链表,奇数链表和偶数链表; * 2.遍历原链表,将奇数节点赋值给奇数链表,偶数节点赋值给偶数链表; * 3...原创 2019-09-05 09:04:16 · 619 阅读 · 0 评论 -
spring Profile
前言本文从如下3方面探讨Spring的Profile:Spring中的Profile是什么为什么要使用Profile如何使用Profile1.Spring中的Profile 是什么?Spring中的Profile功能其实早在Spring 3.1的版本就已经出来,它可以理解为我们在Spring容器中所定义的Bean的逻辑组名称,只有当这些Profile被激活的时候,才会将Profil...转载 2019-05-22 11:32:23 · 6427 阅读 · 0 评论 -
初识@Inject 注解(简单明了)
注解以前学习Java的时候也学过,是在学习Spring的时候,但是@Inject 注解还真是头一次见乘着休息时间赶紧学习一下。正好手里有有本书《Java程序员修炼之道》,书中对@Inject 注解讲解的比较清楚,所以来和大家分享一下。@Inject 注解可以出现...转载 2019-05-22 11:04:23 · 21766 阅读 · 2 评论 -
Spring @Configuration 和 @Component 区别(精简版)
Spring @Configuration 和 @Component 区别内部原理其实也是挺复杂的,用最简单的语言汇总以下两者的区别,只要理解的就ok了,深入了解的话可以继续搜索下其他的文档。汇总版本@Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。 @Configuration&nb...转载 2019-05-22 09:39:18 · 931 阅读 · 0 评论 -
剑指offer-链表中环的入口-java实现(思路详细)
题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:1.快慢指针;快慢指针一起从起点开始移动,快指针每次移动两步,慢指针每次移动一步;2.假设起点到入口点长为y,起点到相遇点长为x,所以相遇点距离入口:x-y;环长为r;3.快慢指针相遇时:快针走的距离 - 慢针走的距离即2x - x = nr (快针可能比慢针多走n个环长) => x =...原创 2019-04-19 09:49:42 · 150 阅读 · 0 评论 -
一文搞定面试中的二叉树题目(Java实现)
一篇文章搞定面试中的二叉树题目(java实现)最近总结了二叉树的题目。先上二叉树的数据结构:class TreeNode{ int val; //左孩子 TreeNode left; //右孩子 TreeNode right;}二叉树的题目普遍可以用递归和迭代的方式来解1.求二叉树的最大深度int maxDeath(TreeNode node...转载 2019-04-16 15:23:07 · 2767 阅读 · 0 评论 -
工厂方法模式(通俗易懂)待修改
前言在上文提到的最易懂的设计模式系列解析:简单工厂模式,发现简单工厂模式存在一系列问题:工厂类集中了所有实例(产品)的创建逻辑,一旦这个工厂不能正常工作,整个系统都会受到影响; 违背“开放 - 关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,这样就会造成工厂逻辑过于复杂。 简单工...转载 2019-04-12 16:37:34 · 163 阅读 · 0 评论 -
java的CAS和AQS(清晰)
本文转自:https://blog.csdn.net/u010862794/article/details/72892300 说起JAVA并发编程,就不得不聊聊CAS(Compare And Swap)和AQS了(AbstractQueuedSynchronizer)。CAS(Compare And Swap)什么是CASCAS(Compare And Swap),即比较并交...转载 2019-04-03 09:43:58 · 922 阅读 · 0 评论 -
用LinkedHashMap实现LRU(Java面试常考)
LRU(Least Recently Used):最近最久未使用策略,优先淘汰最久未使用的数据,也就是上次被访问时间距离现在最久的数据。该策略可以保证内存中的数据都是热点数据,也就是经常被访问的数据,从而保证缓存命中率。使用LinkedHashMap实现LinkedHashMap底层就是用的【**HashMap**】加【**双链表**】实现的,而且本身已经实现了按照访问顺序的存储。此外,L...原创 2019-04-08 15:54:06 · 4082 阅读 · 0 评论 -
java-常量池
一.相关概念1. 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。2. Class文件中的常量池在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,再接着...转载 2019-04-11 17:17:49 · 273 阅读 · 0 评论 -
符号引用和直接引用--java
Java类从加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括,加载 ,验证, 准备, 解析, 初始化, 卸载 ,总共七个阶段。其中验证 ,准备, 解析 统称为连接。 而在解析阶段会有一个步将常量池当中二进制数据当中的符号引用转化为直接引用的过程。符号引用 :符号引用以一组符号来描...转载 2019-04-11 17:05:12 · 1468 阅读 · 0 评论 -
深入理解ThreadLocal(讲解清晰)
彻底理解ThreadLocal参考:http://www.iteye.com/topic/103804http://www.iteye.com/topic/777716源码分析 为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类ThreadLocalMap(内部类)Thread 首先,在Thread类中有一行: /* ThreadLoc...转载 2019-04-02 14:11:24 · 952 阅读 · 0 评论 -
java方法区
目录方法区图例(方法区中都保存什么)类型信息类型的常量池 (即运行时常量池)字段信息方法信息类变量(即static变量)对类加载器的引用对Class类的引用方法表(摘抄)JVM如何使用方法区里面的数据的参考:Java方法区 方法区保存在着被加载过的每一个类的信息;这些信息由类加载器在加载类的时候,从类的源文件中抽取出来;static变量信息也保存在方...转载 2019-04-11 15:13:19 · 775 阅读 · 0 评论 -
线程池深度剖析-全面&易懂
读完本文你将了解:什么是线程池线程池的处理流程保存待执行任务的阻塞队列创建自己的线程池JDK 提供的线程池及使用场景newFixedThreadPoolnewSingleThreadExecutornewCachedThreadPoolnewScheduledThreadPool两种提交任务的方法executesu...转载 2019-04-02 09:59:09 · 528 阅读 · 1 评论 -
动态规划-背包问题-java实现(通俗易懂)
最近在看背包问题,整了一下思路:背包问题具体例子:假设现有容量10kg的背包,另外有3个物品,分别为a1,a2,a3。物品a1重量为3kg,价值为4;物品a2重量为4kg,价值为5;物品a3重量为5kg,价值为6。将哪些物品放入背包可使得背包中的总价值最大?首先想到的,一般是穷举法,一个一个地试,对于数目小的例子适用,如果容量增大,物品增多,这种方法就无用武之地了。其次,可以先把价值最大的物...转载 2019-04-02 09:34:08 · 837 阅读 · 0 评论 -
缓存穿透、缓存击穿、缓存雪崩的区别及解决方案
一、缓存处理流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。 二、缓存穿透 ...转载 2019-04-07 11:56:27 · 212 阅读 · 0 评论 -
初识Junit
最近实习需要用到Junit,记录一下。单元测试的作用:实际项目开发中,往往有很多的单元或者说子模块,要保证项目整体正确运行,首先保证各个单元正确运行,在开发中,通常会出现有的模块在编写、升级或修改过程中会出现一些问题,这时候就可以通过Junit来测试各个模块是否正确运行。maven规范化了单元测试,专门有一个源码文件夹,用于存放测试类和测试用的配置文件,如下:这样做的好处:在最终打包时,...原创 2019-06-01 10:27:02 · 210 阅读 · 0 评论 -
Maven工程 添加的war包war报错 解决方案
这是因为工程中缺少了web.xml文件,(图片中红线位置)比较简单的方法:项目名称---》右键---》Java EE Tools---》generate deployment descriptor stub ,鼠标点击后,系统会自动加入 web.xml 省去手动 复制web.xml的步骤~ ...转载 2019-06-01 11:23:23 · 441 阅读 · 0 评论 -
SpringBoot整合Junit单元测试
公司一直很强调Junit的使用,前段时间写了一篇基础的junit单元测试的文章:初识Junit链接如下:https://blog.csdn.net/u010947534/article/details/90726502今天记录一下如何使用SpringBoot来整合Junit单元测试。step1.创建一个maven项目:![在这里插入图片描述](https://img-blog.csdnim...原创 2019-06-11 17:17:26 · 935 阅读 · 0 评论 -
二叉树的序列化与反序列化
秋招时,华为二面被问到如何实现二叉树的序列化和反序列化。关键点:如果节点值为空,用特殊字符【#】占位。package scu.stone.spring;/** * 华为面试:二叉树的序列化和反序列,空值用特殊值【#】占位 * @author fu_stone *//** 二叉树如下: * 0 * / \ * 1 2 * ...原创 2019-09-02 22:17:19 · 260 阅读 · 0 评论 -
try catch finally中的return问题
参考:https://www.cnblogs.com/fery/p/4709841.html总结1.不管有没有出现异常,finally块中的代码都会执行;2.当try和catch中有return时,finally仍然会执行;3.执行try 或者catch中的return语句之前,都会先执行finally语句。(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码...原创 2019-08-14 18:02:26 · 551 阅读 · 0 评论 -
面试-手撕快排-java实现
快要秋招了,可能会手撕快排,提前准备,记录一下。/*** 快排,是冒泡的一个改进;注意:快排【不稳定】,它有可能打破原来值为相同的元素之间的顺序。* 采用分治法,通过一趟排序将数据分为两部分,比基准值小的元素放在基准值的前面,比基准值大的元素放在基准后面;* 递归子序列* 最好情况和平均时间复杂度都是O(nlogn) ;最坏时间复杂度为O(n^2),空间复杂度为O(1)*/方式1: ...原创 2019-08-08 22:00:22 · 624 阅读 · 0 评论 -
面试-堆排序(heapSort)以及最大/小的k个数-java实现
Q:同学面试腾讯的时候被问到:王者荣耀用户上亿,如何快速的从亿级数据量中找出排名榜首的几位玩家?A:对于这种数据量比较大的情况,堆排序比较合适,而且堆排序每一轮可以找出当前数据中最大(大顶堆)或最小(小顶堆)的数,所以对于以上问题,用堆排序是不错的选择。以找出输入数据中【最小的k个数】为例,java实现如下:package com.sap.stone;import java.util...原创 2019-08-08 14:21:38 · 734 阅读 · 0 评论 -
Java project 前面有红色大感叹号--解决方法
问题如下图:解决方法:1.右键项目2.3.4.大功告成!!!可以看到红色感叹号消失了。记录一下。原创 2019-07-23 15:05:43 · 2448 阅读 · 0 评论 -
笔试面试--总结7大常用排序算法(Java实现&详细)
秋招了,总结整理一下常用的排序算法…tip:文章略长,可直接跳到文末查看总结和巧记口诀。package scu.stone.spring;import java.util.Arrays;public class Sorting { public static void main(String[] args) { int [] array = {3,2,4,1,5,6,9,7,...原创 2019-07-22 20:31:26 · 413 阅读 · 0 评论 -
log4j与logback依赖冲突-解决方案
2019年3月找实习时,曾被阿里面试官问到一个问题,如何解决依赖冲突?当时有点懵,瞎答了一通!今天在做项目的时候切实的遇到了这个问题,所以记录一下。1.问题描述:SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in xxxxxSLF4J: Found binding in xxxxx注:项...原创 2019-07-25 17:32:31 · 6388 阅读 · 0 评论 -
笔试-给定数组,按出现频率递减输出到链表中
*输入:1 1 1 2 2 3 3 3 3 3*输出:3 3 3 3 3 1 1 1 2 2注:3 出现5次,1出现3次,2出现1次。代码实现如下:import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import j...原创 2019-08-02 17:42:01 · 165 阅读 · 0 评论 -
面试之Java线程池--手写自己的线程池
背景:2019年4月春招找实习,面试华为后端开发,面试官上来给了一张A4纸,让手写一个java线程池,要求可运行。使用ExecutorService框架胡乱写了一点线程池的东西,但明显是不足以运行起来的。最后也以至于面试挂掉了。。秋招已经开始了,所以自己查看资料弄清楚了线程池的原理之后,编写了一个自己的线程池,记录一下。============================ 分割线 ==...原创 2019-07-17 22:22:07 · 2397 阅读 · 0 评论 -
lambda表达式的简单例子
学新东西最快的方式就是例子,关于lambda表达式的几个简单例子,记录一下。//旧方法new Thread(new Runnable() { @Override public void run() { System.out.println("Hello from thread"); }}).start();//新方法:new Thread( () -> Sys...原创 2019-07-29 19:31:03 · 821 阅读 · 0 评论 -
Arrays.sort 降序排列
今天一个需求里需要用到降序排列,首先想到了Arrays.sort方法,但是Arrays.sort默认是升序排列,可以使用一下方式来达到降序的需求。Arrays.sort(a,Collections.reverseOrder());但是存在一个问题,Arrays.sort(a,Collections.reverseOrder())不支持基本类型(int,double,char等),如果是in...原创 2019-07-17 16:45:01 · 22421 阅读 · 0 评论 -
运行Eclipse提示No java virtual machine was found after searching the follwing locations
本文转自:https://blog.csdn.net/songyuc/article/details/514905441 致谢感谢小丸子是程序员的博文链接如下:http://blog.sina.com.cn/s/blog_6cd73dfb01013zkg.html2 问题描述今天重装了JDK和JRE 遇到这样一个问题打开Eclipse时报错了 说是“…No java virtual ...转载 2019-07-24 10:55:48 · 423 阅读 · 0 评论 -
eclipse下如何将相同的包名合并在一起
在eclipse 左边 Package Explorer菜单点击一下倒三角 ,点开–Package Presentation —Flat 和 Hierarchical->选择Hierarchical就可以并列显示包了效果如下:原创 2019-07-03 17:26:30 · 4067 阅读 · 0 评论 -
domain、entity和model的package的不同用法
鼓励使用service domain dao 层分层设计概念。其次,对几层作用的理解: 第一:dao层操作单表,不涉及复杂逻辑,主要是表的增删改查操作,完全根据doma...转载 2019-07-02 17:02:00 · 2648 阅读 · 0 评论 -
解决pom文件第一行报错(unknown)-亲测有效
问题:Eclipse导入maven项目时,或者新建一个springboot项目时,pom.xml文件第一行报错,没有错误信息提示,就一个Unknown,但是项目可以正常运行。如下图:解决方案:方案1.看有的博客说是由于网络原因,导致有的包没有下载,在有网络的情况下,勾选强制更新。但是我的问题依旧没有得到解决。方案2:(以下方案亲测可用)原因:由于2.1.5.RELEASE 升级到了...原创 2019-06-26 15:31:11 · 34844 阅读 · 37 评论 -
Java面试之缓存
1、什么是缓存? ☞ 缓存就是数据交换的缓冲区(称作:Cache),当某一硬件要读取数据时,会首先从缓存汇总查询数据,有则直接执行,不存在时从内存中获取。由于缓存的数据比内存快的多,所以缓存的作用就是帮助硬件更快的运行。 ☞ 缓存往往使用的是RAM(断电既掉的非永久存储),...转载 2019-04-06 22:43:49 · 487 阅读 · 0 评论 -
归并排序(自顶向下&自底向上)-有图
自顶向下归并排序和自底向上的归并排序1. 归并排序算法的使用情景归并排序算法和快速排序算法是java.util.Arrays中使用的排序算。对于一般的基本数据类型,Arrays.sort函数使用双轴快速排序算法,而对于对象类型使用归并排序(准确的说使用的是TimSort排序算法,它是归并排序的优化版本)。这样做的原因有两点,第一个原因,归并排序是稳定的,而快速排序不是稳定的。第二个原因,对于基...转载 2019-04-05 16:46:53 · 1369 阅读 · 0 评论 -
JAVA实现IO流读写文件
对包含多行数据的数据集进行预处理,读入文本文件数据集,为每一条记录增加一个唯一的ID,并保存成一个新的文本文件。其中每行的ID生成规则为:每一条记录对应生成0-33随机数,每个数对应一个特定省份,最后原始记录和新生成的省份标签一起写入新的文本文件中Shell终端执行语句#!/bin/bash#下面设置输入文件,把用户执行pre_deal.sh命令时提供的第一个参数作为输入文件名称infile=...转载 2018-11-12 22:24:55 · 1290 阅读 · 0 评论 -
leetcode--二进制求和(AddBinary)--java
package leetcode;/* Given two binary strings, return their sum (also a binary string). * For example, * a = "11" * b = "1" * Return "100". */import java.lang.Math;public class AddBinary { p...原创 2018-11-07 11:40:40 · 433 阅读 · 0 评论 -
图解:String、StringBuffer与StringBuilder的区别
本文转载自:https://blog.csdn.net/weixin_41101173/article/details/79677982 感谢原博主 一、Java String 类——String字符串常量字符串广泛应用 在Java 编程中,在 Java 中字...转载 2018-11-07 11:20:58 · 196 阅读 · 0 评论 -
leetcode--加一(PlusOne)--java实现
题目:加一给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。package stone.scu.cd;//题目:给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。public class OnePlus { public stati...原创 2018-11-07 10:45:41 · 248 阅读 · 0 评论