自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

那些年的代码

梅花香自古寒来

  • 博客(137)
  • 资源 (3)
  • 收藏
  • 关注

原创 java字符串原理及其效率

java字符串类基本特点String类是final的,不可继承 String类源码实现通过字符数组实现,长度不可改变 可以通过String str = "123"来创建一个String对象 通过+可以将两个String对象串联,生成新的字符串 java运行时会维护一个字符串池,String池会保存程序运行中产生的各种字符串,这些字符串内容不能相同字符串创建的几种方式使用new...

2019-12-26 17:47:14 218

原创 堆、栈和堆栈的区别

堆(heap):堆是一种经过排序的树形数据结构,每个结点都有一个值。栈(stack):它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。(PS:颇有砌墙的砖——后来者居上的赶脚。)1,申请方式heap:程序员自己申请,并指明大小。stack:由系统分配。2,申请效率原为:heap:效率较高,速度较快,但程序员无法对其进行控制。stack:由ne...

2019-12-31 16:39:34 385

原创 java中堆栈(stack)和堆(heap)

(1)内存分配的策略  按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编 译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为 它们都会导致编译程序无法计算准确的存储空间需求. 栈...

2019-12-31 16:39:06 96

原创 深入理解Java内存(图解堆栈)

深入理解Java内存(图解)这篇文章是转自http://blog.csdn.net/shimiso/article/details/8595564博文,自己对其中一些东西加入了自己的理解和补充。 进入正题前首先要知道的是Java程序运行在JVM(Java Virtual Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关...

2019-12-31 16:37:24 295

原创 java堆栈区别

1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(对象可能在常量池里)(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public s...

2019-12-31 16:34:29 103

原创 Java之堆栈的区别

在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式都不同,所以要单独进行管理。 JVM内存的划分有五片: 1.寄存器;...

2019-12-31 16:33:38 127

原创 堆栈的区别

在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教...

2019-12-31 12:05:36 174

原创 Java堆栈简介

JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。基本,栈stack和堆heap这两个概念很重要,不了解清楚,后面就不用学了。以下是这几天栈和堆的学习记录和心得。得些记录下来。以后有学到新的,会慢慢补充。一、先说一下最基本的要点基本数据类型、局部变量都是存放在栈内存中的,用完就消失。new创建的实例化对...

2019-12-30 18:47:40 161

原创 浅谈Java中的克隆机制

从JDK1.0版本开始,Java语言就提供了克隆机制。看到“克隆”二字,我们可能会有一些疑问。克隆针对的是类还是对象? Java如何实现克隆?“克隆”二字对于我们并不陌生,克隆就是进行复制。现实生活中也有很多克隆的案例,比如克隆鱼、克隆羊等。从面向对象的角度来看,鱼、羊就是我们抽象出来的类,克隆鱼、克隆羊就是类的实例。所以,Java语言中克隆针对的是类的实例。克隆羊、克隆鱼都是基于细胞实现...

2019-12-30 17:53:54 113

原创 java克隆

java克隆分为浅克隆和深克隆,概念如下:浅拷贝(浅克隆)克隆出来的对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。深拷贝(深克隆)克隆出来的所有变量都含有与原来的对象相同的值,那些引用其他对象的变量将指向复制出来的新对象,而不再是原有的那些被引用的对象。换言之,深克隆把要克隆的对象所引用的对象都克隆了一遍。测试:​ 接下来我们新建两个实体...

2019-12-30 17:34:40 494

原创 由Object.clone()方法引出的访问权限问题

在学习Java的过程中,在《Java核心技术》(卷一)中看到这样一句话“因为Object类中的clone()方法是protected,所以不能直接以anObject.clone()这样的形式调用。当时看到的时候有些不解,之前学习的时候,对protected的认识是这样的protected 修饰的类和属性,对于自己、本包和其子类可见Object默认是所有类的超类,clone()方法是Ob...

2019-12-30 14:24:33 237

原创 通过javap命令分析java汇编指令

一、javap命令简述javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。当然这些信息中,有些信息(如本地变量表、指令和代码行偏移量映射表、常量池中方法的参数名称等等)需要在使用javac编译成class文件时,指定参数才能输出,比如,你直接javac xx.java,就...

2019-12-27 10:48:04 167

原创 Integer a = 1; Integer b = 1;

Integer a = 1;Integer b = 1;Integer c = 500;Integer d = 500;System.out.println(a == b);System.out.println(c == d);Integer aa=new Integer(10);Integer bb=new Integer(10);int cc=10;System.out.p...

2019-12-27 10:41:11 3873 1

原创 Integer n=new Integer(1)和int n=1的区别

首先从最基本的说起,int属于基本数据类型,Integer属于类封装的对象,两者的定义本身就不同,但两者又是直接相关的,在java中,最核心的就是对象,万物皆对象,所以每个基本数据类型都与类相对应的,int对应的类是Integer,char对应的类是Character,float对应的类是Float等等。在Integer n=new Integer(1)中,n是一个对象,继承关系如下:java...

2019-12-26 18:46:23 642

原创 面试题:兔子搬运萝卜

一只兔子旁边有100根萝卜, 兔子想把它们搬回家, 离家50米, 一次最多能搬运50根, 每走一米吃一根, 问:兔子最多能搬运多少根萝卜回家。答:16根问题分析:兔子如果只取一次到家, 他是不可能再回去取剩下的,所以必须中途返回取, 但是中途返回取消耗的代价是直接一次弄回家的3倍,故思路应该是中途回去取, 然后一次性取回家。每次从萝卜堆背多少根呢?如果背的少返回的...

2019-12-26 17:49:33 626

原创 深入java字符串原理及其效率分析

java字符串类基本特点String类是final的,不可继承String类源码实现通过字符数组实现,长度不可改变可以通过String str = "123"来创建一个String对象通过+可以将两个String对象串联,生成新的字符串java运行时会维护一个字符串池,String池会保存程序运行中产生的各种字符串,这些字符串内容不能相同字符串创建的几种方式...

2019-12-26 17:48:00 24

原创 5分钟理解String的'+'的性能及原理

1、String的‘+’,底层执行,及效率问题2、StringBilder与StringBuffer的比较本篇博文先介绍第一个问题为了让大家看明白,我们举例说明吧!为了加深理解,我们可以来做几个小实验。javac Test 编译文件javap -c Test 查看虚拟机指令实验一:纯字符串 public class Test {...

2019-12-26 11:24:01 362 1

原创 字符串"+"操作的原理

字符串"+"操作的原理在阿里手册上意外的看到了一段关于java中对字符串的“+”运算的处理 突然间想到要详细了解下这个知识点,于是从网上找资料学习了一下。代码测试地址一、"+"操作内部原理到底是如何实?我们知道这里我们是无法像其他方法一样看到实现的逻辑的,原因很简单“+”拼接的字符串其实是Java提供的一个语法糖,其目的更方便程序员使用,让程序更加简洁,有更高的可读性。要想看到内部原...

2019-12-25 16:30:30 404

原创 required string parameter 'XXX'is not present 的几种情况

required string parameter 'XXX'is not present 的几种情况情况一:原因是由于头文件类型不对,可以在MediaType中选择合适的类型,例如GET和POST情况二:jquery提交delete时,不支持@RequestParam,只支持@PathVariable形式情况三:若api在调用的时候,如果存在重类型,但不重名;例如:/id与/name...

2019-12-25 15:26:36 8749

原创 在map中根据value获取key

//根据map的value获取map的key private static String getKey(Map<String,String> map,String value){ String key=""; for (Map.Entry<String, String> entry : map.entrySet()) {...

2019-12-25 15:26:30 2838

原创 Mybatis批处理(批量查询,更新,插入)

mybatis批量查询注意这里的in和 <trimprefix="("suffix=")"> 以及in ( )的三种方式的(例1(推荐),例2,例3(推荐))等价使用例1: 1 List<UBaseMenu> findMenuName(List<String> valueList); ...

2019-12-25 15:26:22 306

原创 实现MyBatis批量查询

Servicepublic List<DeviceBean> getDeviceList(Map<String, Object> parameter);ServiceImpl @Override public Map<String, DeviceBean> getDeviceCollectStateIdByBean(Map&l...

2019-12-25 15:26:21 370

原创 解决Shell脚本$'\r': command not found问题

造成这个问题的原因是Windows下的空行,我们只需要把文件转成unix就好Centos下,执行yum install dos2unix,然后dos2unix [file],再执行shell命令就好了

2019-12-25 15:26:18 369

原创 Linux 定时任务

fileclear.shtamcdir=${HOME}/ora/user_projects/domains/tamccd ${tamcdir}echo rm -f `ls heapdump*.phd`rm -f heapdump*.phdecho rm -f `ls javacore*.txt`rm -f javacore*.txtecho rm -f `ls Snap*.t...

2019-12-25 15:26:11 227

原创 git与github区别与简介

git与github区别与简介原创skyxmstar 发布于2017-03-24 16:04:27 阅读数 41243 收藏展开git和github是两个完全不同的概念。git 是一个版本管理工具,是可以在你电脑不联网的情况下,只在本地使用的一个版本管理工具,其作用就是可以让你更好的管理你的程序,比如你原来提交过的内容,以后虽然修改了,但是通过git这个工具,...

2019-12-24 11:33:03 254

原创 java中sleep()的用法

Thread.sleep(long millis)和Thread.sleep(long millis, int nanos)静态方法强制当前正在执行的线程休眠(暂停执行),以“减慢线程”。当线程睡眠时,它睡在某个地方,在苏醒之前不会返回到可运行状态。当睡眠时间到期,则返回到可运行状态。线程睡眠的原因:线程执行太快,或者需要强制进入下一轮,因为Java规范不保证合理的轮换。...

2019-12-24 11:32:48 942

原创 java连接redis中的数据查、增、改、删操作的方法

package com.lml.redis;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import redis.clients.jedis.Jedis;public class...

2019-12-24 11:32:43 207

原创 构建一个给爬虫使用的代理IP池

做网络爬虫时,一般对代理IP的需求量比较大。因为在爬取网站信息的过程中,很多网站做了反爬虫策略,可能会对每个IP做频次控制。这样我们在爬取网站时就需要很多代理IP。代理IP的获取,可以从以下几个途径得到:从免费的网站上获取,质量很低,能用的IP极少 购买收费的代理服务,质量高很多 自己搭建代理服务器,稳定,但需要大量的服务器资源。本文的代理IP池是通过爬虫事先从多个免费网站上获取代理...

2019-12-24 11:32:37 322

原创 创建java类中类出现is not an enclosing class

publicclassA{ publicclassB{ } };需要实例B类时,按照正逻辑是,A.B ab = new A.B();那么编译器就会出现一个错误--"is not an enclosing class"再翻看相关的Java代码,发现原来写法出错了!正确的做法是[java]...

2019-12-24 11:32:26 379

原创 SCAN----Redis检索键值对

转载地址:http://redis.readthedocs.org/en/latest/key/scan.htmlSCANSCAN cursor [MATCH pattern] [COUNT count]SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代(incrementally iterate)一集元素(a collection of...

2019-12-24 11:32:23 173

原创 redis 键值对 有效期设置

redis 键值对 有效期设置redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它<-----> 类比于javaweb系统临时数据 过期删除功能expire设置失效时间(单位/秒)persist取消失效时间ttl/pttl(单位为 秒/毫秒)查看键的剩余时间返回三种值 -2(健已经不存在了) -1(表示永久有效)...

2019-12-24 11:32:15 1219 2

原创 Redis有效时间设置及时间过期处理

本文对redis的过期处理机制做个简单的概述,让大家有个基本的认识。Redis中有个设置时间过期的功能,即对存储在redis数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的token或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。一、有效时间设置:redis对存储值的过...

2019-12-24 11:32:09 692

原创 MySQL索引-B+树(看完你就明白了)

索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。索引在 MySQL 数据库中分三类:B+ 树索引 Hash 索引 全文索引我们今天要介绍的是工作开发中最常接触到的 Inn...

2019-12-24 11:32:04 85

原创 Shell脚本实现对文件编辑

常见Linux文件的编辑命令 vi/vim,有时候我们想写一个脚本实现对文件编辑,这个时候,可能就不够用了,下面介绍一些办法1、echo命令Shell的echo命令常用于字符串的输出例如:[root@mdw zxy]# echo 'Hello World !' > file1[root@mdw zxy]# cat file1Hello World ![root@mdw ...

2019-12-24 11:31:59 373

原创 mysql关于聚集索引、非聚集索引的总结

总结:1、mysql的innodb表,就是索引组织表,表中的所有数据行都放在索引上,这就约定了数据是严格按照顺序存放的,所以不管插入的先后顺序,它在那个物理上的那个位置与插入的先后顺序无关。2、聚集索引,叶子节点存的是整行数据,直接通过这个聚集索引的键值找到某行3、聚集索引,数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。4、聚...

2019-12-23 17:16:00 17

原创 Redis Zrevrank 命令

Redis Zrevrank 命令返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。使用 ZRANK 命令可以获得成员按分数值递增(从小到大)排列的排名。语法redis Zrevrank 命令基本语法如下:redis 127.0.0.1:6379> ZREVRANK key member可...

2019-12-23 10:51:11 151

原创 Java中的long类型和Long类型比较大小

Java中我们经常要做一些判断,而对于判断的话,用的最多的便是“>”、“==”、“<”的比较,这里我们进行一个Long类型数据和long类型数据的比较大小的讲解。Java中Long和long的区别Java的数据类型分为两种:1、基本类型:byte(8),short(16),int(32),long(64),float(32),double(64),char(16),boolea...

2019-12-23 10:51:02 352

原创 redis 下key的过期时间详解 :expire

memcached 和 redis 的set命令都有expire参数,可以设置key的过期时间。但是redis是一个可以对数据持久化的key-value database,它的key过期策略还是和memcached有所不同的。梳理,整理如下:redis通过expire命令来设置key的过期时间。语法:redis.expire(key, expiration)1. 在小于2....

2019-12-23 10:50:58 686

原创 随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value

利用Java提供的Random类。从List或Set中随机取出一个元素,从Map中随机获取一个key或value。因为Set没有提供get(int index)方法,仅仅能先获取一个随机数后。利用一个计数器,对Set进行循环,当计数器等于随机数时返回当前元素,对于Map的处理也类似。不知有没有更好的方法……package com.xjj.util;import java.u...

2019-12-23 10:50:51 1055

原创 Java中Set真的是无序的吗?

我们经常听说List是有序且可重复的,Set是无序且不重复的。这是一个误区,这里所说的顺序有两个概念,一是按照添加的顺序排列,二是按,照自然顺序a-z排列。Set并不是无序的传统所说的Set无序指的是HashSet,它不能保证元素的添加顺序,更不能保证自然顺序,而Set的其他实现类是可以实现这两种顺序的。1,LinkedHashset : 保证元素添加的自然顺序2,TreeSet : 保...

2019-12-23 10:50:42 234

Java异常面试题.pdf

Java异常面试题

2021-04-07

设计模式面试题.pdf

设计模式面试题

2021-04-07

BIO,NIO,AIO,Netty面试题.pdf

BIO,NIO,AIO,Netty面试题

2021-04-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除