
java
w_rcss
他山之石,可以攻玉。
展开
-
Docker安装Es+kibana
文章目录安装docker安装es安装kibana既然是docker安装ES+KIBANA,首先得安装docker安装docker如果已经安装过,卸载旧版本:yum -y remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docke原创 2022-02-24 17:22:02 · 1730 阅读 · 0 评论 -
Java如何关联源码
通过本篇文章,解决第三个问题,你可以掌握:更改项目的jre项目引入第三方的jar解决debug到源码,找不到代码,无法获取值的问题具体描述如下:key cannot be resolved to a variablenot available [local varibales unavilable]解决方案:获取Jsrc.jar...原创 2020-03-12 14:33:16 · 672 阅读 · 0 评论 -
一看就懂,不要再问我快排了
引子最近有童鞋问我快排算法,为了一劳永逸,所以放一把"矢"。快排的思想总的来说,是“先二分,再归并”二分:有如下数组:int[] data = { 9, -16, 30, 23, -30, -49, 25, 21, 30 };取数组第一个元素 作为基准data数组中基准为9有两个指针 i 和 j,数组左边的指针i指向数组第二个元素,数组右边的指针j指向最后一个元素初始状态...原创 2020-03-05 19:10:38 · 355 阅读 · 1 评论 -
一文读懂G1
G1(garbage—first)G1是JVM中的一种垃圾回收器,garbage-first意思是总是优先回收价值最大的区域。G1长什么样?Serial,Parallel,CMS将整个堆按年代划分,进行分代回收。G1依然是分代垃圾回收器,G1将堆划分为2048个region(大小为1~32M),每个region从属不同的年代,每个年代都是一部分region的集合。如图:为什么要使用G1?...原创 2019-10-21 21:45:01 · 2182 阅读 · 3 评论 -
抽象类可以继承实体类吗?
答案是:yes!举例:java中object是一个实体类,其他的类包括抽象类大多继承object。但是有一个前提条件是实体类必须有明确的构造函数。什么是明确的构造函数?首先要了解java的继承:子类继承父类的所有但是不包括父类构造,子类只能调用父类构造。我个人对明确构造函数的理解为:可供子类调用的构造(子类调用父类构造是继承的前提),主要有以下3点。①父类写了无参构造,或者不写(不写会默认生成无参...原创 2018-04-24 03:03:56 · 4126 阅读 · 1 评论 -
快速了解服务器IO的实现
①单线程处理所有请求:通过while(true)循环缺点:等待IO的阶段浪费大量cpu资源,cpu性能浪费。解决思路 :增加线程并发,充分利用cpu资源。②使用单独线程处理IO操作:一个连接建立后,通过new Thread执行具体的IO操作。优点:相比①充分利用了cpu资源。缺点:连接过多会造成线程过多,多线程竞争引起上下文切换开销。解决思路:通过使用线程池合理有效控制线程数量。③使用线程池处理I...原创 2018-04-19 02:38:04 · 1560 阅读 · 0 评论 -
service单元测试如何忽略ranner实例
在commandLineRanner实例上加注解可以解决service单元测试忽略ranner实例的问题。但不太适合。(运行环境和绩效的问题)具体解决如下:import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import org.junit.runner.RunWith;...原创 2017-07-19 11:05:25 · 259 阅读 · 0 评论 -
多线程的两种通信方式
1:线程之间共享变量:object的wait(),notify(),notifyAll(),需要结合synchronized使用。condition的await()和signal()配合lock.lock和lock.unlock使用。2:阻塞队列:Concurrent包中的LinkedBlockingQueen实现生产者,消费者通信。 ...原创 2018-03-11 18:11:28 · 283 阅读 · 0 评论 -
jvm的5种垃圾回收器
jdk7下的5种gc回收器:1. Serial GC (-XX:+UseSerialGC)算法:mark-sweep-compact(1)标记老年代中依然存活的对象。(标记)(2)从头开始检查堆内存空间,并且只留下依然幸存的对象。(清理)(3)从头开始,顺序地填满堆内存空间,并且将对内存空间分成两部分:一个保存着对象,另一个空着(压缩)。2. Parallel GC (-XX:+UseParall...原创 2017-12-16 15:02:56 · 471 阅读 · 0 评论 -
Lambda Exception
写了个简单的Lambda表达式:new Thread(()-> System.out.println("lambda表达式")).start();结果报了个Lambda Exception are not suppored at this language level 1.5的编译异常。 原因也很简单,jdk版本没有正确设置。 解决方法: 1. File->P...原创 2018-05-15 14:39:59 · 459 阅读 · 0 评论 -
为什么要重写equals和hashcode?
为什么要重写equals?重写equals是为了把地址值的比较换成内容的比较,以此来判断是否为相同的对象。为什么要重写hashcode?既然重写了equals则应该重写hashcode。如果重写了equals而不重写hashcode,则默认使用Object的hashcode方法,这将导致equals相等的两个对象hashcode不同,hashcode不同会认为是有两个对象,原则上违背了...原创 2018-11-28 12:18:50 · 432 阅读 · 0 评论 -
CompareTo和compare的区别
compareTo和compare的区别compareTo是comparable(可比较的)接口的方法。当需要对一个对象或一个数组进行排序时,必须实现comparable接口,重写compareTo方法。重写compareTo方法的对象进行自然排序(也叫整体排序,内部排序)。通过Collections.sort()或Array.sort()自然排序;通过TreeSet树形结构自然排...原创 2019-03-29 14:44:16 · 4699 阅读 · 0 评论 -
mybatis:mapper.xml不执行的问题
mybaits:mapper不执行的问题最近帮一个小老弟解决一个小bug。问题描述:login登录,服务器不响应。debug执行到mapper调用xml时不执行,且没有报错。问题排错:页面请求进入了controller,确定是服务器的问题。mapper和xml是mybatis generator自动生成的,不存在错误。检查两个主要配置文件,如下:spring-bean.xml ...原创 2019-06-05 16:45:40 · 2770 阅读 · 1 评论 -
编程题:统计字符串中出现次数最多的字母
题目如下:1个字符串中可能包含a-z中的多个字符,字符也可能重复,例如:String data = “aabcexmkduyruieiopxzkkkkasdfjxjdsds”;写一个程序,对于给定一个这样的字符串求出字符串出现次数最多的那个话不多说,上代码:用collections.sort()来解决 String str = "sdnasjhdasdaksnfcjdshdfu...原创 2019-06-14 16:23:59 · 10283 阅读 · 1 评论 -
mysql安装报错2502,2503解决方案
问题如题,mysql安装直接报2503,2502错误。分析:这个问题主要是权限不够,常见于家庭版系统。解决自然是通过提升权限。方法一: 命令行安装win+x ,打开管理员命令行。执行命令msiexec /package "D:\soft_backup\project\数据库\mysql-5.5.62-winx64.msi"""中的路径为安装包路径+文件名。方法二:任务管理器...原创 2019-07-01 20:50:58 · 6638 阅读 · 3 评论 -
线程,看这一篇就够啦
文章目录多线程一 进程和多线程进程线程并发和并行上下文切换CAS算法协程死锁为什么要使用多线程二 使用多线程2.1继承Thread类2.2实现Runnable接口2.3实现Callable接口,callable+futureTask2.4实现Callable接口,线程池+future三 线程的状态:新建状态 new就绪状态 runnable运行状态 running阻塞状态 blocked死亡状态 ...原创 2019-07-30 21:53:13 · 544 阅读 · 0 评论 -
java如何自定义类库
工具:eclipse1:写一个hello word方法:public void sayHello() {System.out.print("hello");}2:右键本项目,export--java--java file,选择jar包保存位置。3:右键新工程的jre system library--build path--config build path--add external jar(添加...原创 2017-12-26 21:00:08 · 1475 阅读 · 0 评论 -
快速了解IO模型
同步与异步的区别:多个任务或事件必须逐个进行,一个任务或事件的执行会导致整个流程的等待是同步。异步不会导致整个流程的等待。异步是宏观上的一种模式,通过多线程可以实现异步,单线程也可以通过NIO的方式达到异步效果。同步IO与异步IO的区别:数据没有就绪,内核或者用户线程会去轮询数据是否就绪直到数据就绪,然后拷贝数据到用户线程,拷贝数据阶段是由用户线程操作,所以此阶段用户线程阻塞;用户线程发起请求操作...原创 2018-03-14 21:08:35 · 212 阅读 · 2 评论 -
初始化的五种必要情况
初始化是类加载的最后阶段(初始化之前分别为加载,验证,准备,解析。验证,准备,解析统称连接),有以下5种情况发生时必须对类进行初始化。1:new,getstatic,putstatic,invokestatic会在类没有初始化时先触发初始化,final在编译期把结果放入常量池,即使被调用也不会触发初始化。2:java.lang.refect包的方法进行反射调用的时候,会先触发初始化。3:触发子类初...原创 2018-01-25 17:15:19 · 535 阅读 · 0 评论 -
java的锁分类
主要分乐观锁和悲观锁。悲观锁:悲观思想,认为写操作频繁,所以每次读写都会上锁。sycchronized就是悲观锁的一种实现,同时也是一种重量级锁。乐观锁:乐观思想,认为读多写少(并发写的可能性低),所以不上锁。每次更新前读取版本号,并比较版本号,如果一致则认为没有其他线程的写操作而完成更新,若版本号不一致则放弃此次更新,并重复此次更新(读版本号,比较,更新)操作。java的乐观锁主要靠volati...原创 2018-03-24 00:48:10 · 710 阅读 · 0 评论 -
三分钟快速了解jvm的内存结构
jvm主要分3大块:堆heap,栈stack,持久区permanent(也叫方法区)。1:堆是gc的主要区域,主要存放对象实例,分为新生代young和老年代old(默认young占堆的1/3,old占2/3)。新生代分:Eden伊甸,To,From三部分(默认8:1:1)。Eden存放新建的对象,当Eden满了(jvm内存分配技术Bump-the-pointer可以快速检测,加快Eden内存分配)...原创 2018-03-20 01:45:15 · 236 阅读 · 0 评论 -
java的4种内部类
原文链接:https://blog.youkuaiyun.com/ll530304349/article/details/52926848一直对内部类、静态内部类这些名词的认识不太清晰,做一些小小的总结。 一、什么是嵌套类(nested class)? 首先Java中的嵌套类(nested class)是指定义在另一个类的内部的类,所以叫嵌套类。它有很多种分类的方式,从类型上分,有成员类(member cla...转载 2018-03-26 19:59:58 · 356 阅读 · 0 评论 -
如何确保新生代对象被老年代对象引用的时候不被gc
stop-the-world:Stop-the-world会在任何一种GC算法中发生。Stop-the-world意味着 JVM 因为要执行GC而停止了应用程序的执行。当Stop-the-world发生时,除了GC所需的线程以外,所有线程都处于等待状态,直到GC任务完成。GC优化很多时候就是指减少Stop-the-world发生的时间。minor gc:发生在新生代的gc(minor:次要的)。m...原创 2018-04-15 04:25:05 · 3050 阅读 · 1 评论 -
快速失败和安全失败
fail-fast:util包下集合类都是快速失败,不能在多线程下并发修改。fail-safe: current包下的类都是安全失败,可以在多线程下并发修改。先说一下ConcurrentModificationException:并发修改异常。这是一个迭代器遍历才会抛出的异常,迭代器通过hasNext()和next()遍历集合元素,并且是modcount等于expectedmodcount时遍历(...原创 2018-04-02 19:10:29 · 1011 阅读 · 0 评论 -
intern方法简介
String的常量池一般称为StringConstant Pool(实质是一个数组),StringConstant Pool作为运行时数据存放在permanent区(方法区),jdk1.7之后放在堆空间中。String str="123"; str这个引用存放在栈中,123这个字符串存放在常量池。String st=new String("123");会生成3个对象:st这个引用存放在栈中,堆中的...原创 2018-03-27 23:48:10 · 1655 阅读 · 0 评论 -
ArrayList的交集,差集,并集,去重并集
//创建两个ArrayList并添加元素 List<Integer> list1 = new ArrayList<Integer>(); list1.add(1); list1.add(2); list1.add(3); list1.add(4); List<Intege...原创 2018-04-10 15:41:07 · 5999 阅读 · 0 评论 -
java字符串反向输出
String input="i love you";String[] s=input.split(" ");//用空格切割并存入数组String output="";for(int i=s.length-1;i>=0;i--){//for遍历 output=output+s[i]+" ";}System.out.println(output);输出:you love i ...原创 2018-03-28 14:07:29 · 2202 阅读 · 1 评论 -
mybatis generator如何配置
翻看17年笔记整理的,分享一下。springboot下mybatis实现自动生成。pom设置:<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> &l...原创 2018-03-28 14:37:29 · 674 阅读 · 0 评论 -
浏览器的一个请求从发送到返回经历了什么
client与server通过http协议传输数据。http(Hyper Text Transfer Protocol)协议是无状态协议,基于tcp协议,属于应用层协议。DNS(Domain Name System 域名系统)主要的功能就是将不容易记住的“IP Address”(IP地址)转换成易于记忆的“DomainName”(域名)。SSL(Secure Socket Layer 安全套接字协...原创 2018-04-11 02:42:45 · 1636 阅读 · 0 评论 -
static的四种用法
静态与非静态的区别:①用static修饰意味着属于类,非静态属于类的实例。②静态意味着类加载准备阶段的时候static加入了内存,所以非静态可以引用静态(因为静态存在),而静态无法引用非静态。static修饰属变量和方法:修饰变量和方法是最常见的。静态方法区别于非静态方法是:静态方法只能访问静态变量。static代码块:静态代码块在类加载时主动执行,普通代码块在实例化时主动执行。静态代码块与静态方...原创 2018-04-11 03:40:46 · 450 阅读 · 0 评论 -
controller单元测试代码
import org.junit.Test;import org.junit.runner.RunWith;import org.mockito.Matchers;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.autoconfigure.w...原创 2017-07-13 14:45:23 · 603 阅读 · 0 评论 -
快速了解java线程池
1.newCachedThreadPool:缓存线程池线程数量不固定,需要的时候创建新线程,灵活回收不用的线程。优先使用不用的线程来避免每次创建新线程。2. newFixedThreadPool:固定线程池线程数量固定,超出线程数量的任务需要等待。3. newScheduledThreadPool:预定线程池主要用于定时和周期性的执行任务4.newSingleThreadExecutor:单线程顺...原创 2018-01-12 14:21:22 · 171 阅读 · 0 评论