自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

以后我要当村长

记录学习

  • 博客(37)
  • 收藏
  • 关注

原创 【二本|面试|亲身经历|Java校招干货】二本学校的计算机学生如何拿到30万年薪的大厂Offer?

笔者是一位无名学校的无名学生,在经历疯狂内卷的校招中,也曾受过很过打击,在学历背景下,得到的面试机会寥寥无几,大多在简历关就被淘汰,也曾有过学习的迷茫,下面我将以面向工作的角度,分析我们如何把握学习脉络,让自己在校招的厮杀中拿到一个满意的Offer,希望能够给各位朋友带来一些小小的收获。一、我在秋招中的收获?在秋招中,因为准备的比较充足,很幸运的拿到了美团、京东、深信服SP、哈啰出行SP、唯品会、土巴兔、多益网络的Offer,其中美团、哈啰出行、深信服的年薪总包都接近或超过30万,虽然没有进..

2021-05-15 22:50:46 1522

原创 搞定CAS的原理,看这一篇就够了!

一、什么是CAS?CAS (compareAndSwap),中文叫比较交换,是一种无锁原子算法,映射到操作系统就是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值,其实现方式是基于硬件平台的汇编指令,在intel的CPU中,使用的是cmpxchg指令,就是说CAS是靠硬件实现的,从而在硬件层面提升效率。执行过程是这样:它包含 3 个参数 CAS(V...

2020-04-16 15:59:45 10191 1

原创 从synchronized关键字谈起的一系列问题

若一个方法存在并发安全问题,用synchronized关键字解决最简单的同步问题:public class Test { public static void lockTest(){ synchronized (Test.class) { System.out.println("hello"); } }}synchro...

2020-01-16 20:38:25 1489

原创 竟然会有这么详细的String源码解析?

(一)前言我在阅读一个类的时候习惯把一个类剖析为以下五个部分,因此我在阅读或者写博客的时候都是按照这个思路进行的:1.类定义2.属性字段3.构造方法4.普通方法5.更多扩展String类同样是lang包下的一个类,也是我们编程中最经常使用的一个类,了解它的内部构造则显得尤其重要。(二)类定义public final class String implements ja...

2019-07-22 14:45:12 344

原创 你想知道的Object源码都在这!

Object类是所有类的基类,所有类都默认隐式的继承Object类,该类的背后是面对对象思想的体现。Object类位于java.lang包中,lang包里包含了java最核心和最重要的类,在编译时会自动导入,下面让我们了解Object有哪些方法和属性吧![外链图片转存失败(img-fWR3UcKA-1563777908365)(https://i.loli.net/2019/05/02/5cc...

2019-07-22 14:43:55 456

原创 Maven使用的哪些事:pom继承、私服、镜像

Maven我们使用非常广泛的jar管理工具,一个大型的项目往往依赖非常多的jar包,如果需要我们逐个去下载导入将是一件非常繁琐的事情,Maven就能够帮我们集成jar包管理和自动下载导入的工作。(一)为什么Maven能够帮我们自动下载jar包?1、pom文件的继承关系随便打开一个集成了Maven的项目,我们发现都会存在一个pom文件,即使我们pom没有配置任何的jar包下载路径,我们仍然可以自动下载需要的jar包,这是为何?因为pom文件也有自己的一个继承关系,由此我们可以推知应该存在一个s

2020-11-13 17:02:21 512

转载 秒懂JDK14的几个重要特性

一、instanceof(in 死等 of)的模式匹配Instanceof是java中用于检查对象引用是否为给定Type类型的实例,并返回布尔值。在Java 14之前,我们在完成判断之后,经常需要做一下类型的强制转换,如下:Java 14增强功能特性:注意:仅当object不为null时,instanceOf才会匹配,然后仅将其分配给str。在instanceof中...

2020-04-19 20:52:11 1002

原创 两分钟带你搞定常见垃圾收集器!

(1)JVM的运行模式Server ClientClient的启动比Server模式快,但是长期运行进入稳定期后Server模式的程序运行速度会比Client快,这是因为Server模式启动的是重量级的JVM,对程序进行了更多了优化。命令行执行java -version即可查询自己电脑上的JVM运行模式:(2)垃圾收集器之间的联系不同的垃圾收集器可能针对不...

2020-04-16 23:52:38 226

原创 堆内存划分(新生代、老年代)

在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。堆的内存模型大致如下图所示:从图中可以看出: 堆大小 = 新生代 + 老年代。默认...

2020-04-16 23:07:49 4122

原创 秒懂ThreadLocal及其引发的内存泄露!

ThreadLocal是Java中的一种线程绑定机制,可以为每一个使用该变量的线程都提供一个变量值的副本,并且每一个线程都可以独立地改变自己的副本,而不会与其它线程的副本发生冲突,解决了变量并发访问的冲突问题。每个线程内部有一个 ThreadLocal.ThreadLocalMap 类型的成员变量 threadLocals,这个 threadLocals 存储了与该线程相关的所有ThreadL...

2020-04-16 17:02:56 839

原创 Redis之集群原理及一致Hash算法

一、如何设计系统,能够从Redis服务器的海量数据中快速找到所需?我们可以采用分片,按照Hash算法划分数据,分散存储在多个节点上。但是会涉及到一个问题,如果某个节点失效,那么存储在节点上面的数据也将失效,并且新增定位到该节点的数据将无法存储,容错性很低,利用一致性Hash算法可以解决这个问题。二、利用一致Hash算法来解决分片的问题其原理模于某个数(例如2的32次方),将哈希值空间变成虚...

2020-04-15 15:48:59 385

原创 JUC下的BlockingQueue阻塞队列详解

一、前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。二、认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个队...

2020-04-14 16:24:08 191

原创 什么是线程池?如何创建一个Java线程池?

一个线程池管理了一组工作线程,同时它还包括了一个用于放置等待执行的任务的队列。线程池可以避免线程的频繁创建与销毁,降低资源的消耗,提高系统的反应速度。java.util.concurrent.Executors提供了几个java.util.concurrent.Executor接口的实现用于创建线程池,其主要涉及四个角色:线程池:Executor 工作线程:Worker线程,Worker的r...

2020-04-14 16:04:59 2217

原创 如何让线程返回数据?

从线程中返回数据和向线程传递数据类似,也可以通过类成员以及回调函数来返回数据,但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪。一、通过类变量和方法返回数据使用这种方法返回数据需要在调用start方法后才能通过类变量或方法得到数据,让我们先来看看会得到什么结果:package mythread;public class MyThread extends...

2020-04-13 16:15:01 1465

原创 String、StringBuffer、StringBuilder的区别?我懵了!

String StringBuffer StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间 StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的...

2020-04-13 15:23:07 144

原创 你知道StringBuffer是如何扩容的吗?

来看一下源码,在没有传参的情况下默认构造初始容量为16的空字符缓冲区。public StringBuffer() { super(16);}有参数的情况下,初始容量是16+字符串的长度,然后用append()方法将传入的字符放入字符缓冲区中:public StringBuffer(String str) { super(str.length() + 16); ap...

2020-04-12 21:36:17 706

原创 Class.forName和ClassLoader.loadClass两个方法的区别?

一、类的加载过程类的加载是指将指定的Class文件的二进制数据,加载到JVM的方法区中,并在堆区中创建对应的Class对象,该过程主要分为以下几步:装载:查找并导入对应的Class文件到JVM中链接: (1)检查:检查载入的class文件数据的正确性和完整性      (2)准备:给类的静态变量分配存储空间      (3)解析:将常量池中的符号引用转化为直接引用...

2020-04-12 19:24:36 299

原创 基于NIO的群聊系统简单实现

实例要求:(1)编写一个NIO多人群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞)(2)服务器端:可以监测用户上线、离线,并实现消息转发功能(3)客户端:通过channel可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(都是由服务器转发得到)(4)目的:进一步理解NIO非阻塞网络编程机制服务器package nio.groupchat;import ...

2020-03-16 16:16:26 177

原创 跨域请求遇到的问题记录

由于浏览器同源策略的存在,在进行前后端分离开发中遇到了一些问题.(1)前后端无法通信后台通过过滤器对请求头设置一些字段:Ajax默认不携带Cookie合理的创建标题,有助于目录的生成直接输入1次#,并按下space后,将生成1级标题。输入2次#,并按下space后,将生成2级标题。以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。如何改变文本的样式强调文本 强...

2019-12-15 17:28:39 172

原创 工厂模式?不会还有人不知道吧?

(一)什么是工厂模式?工厂模式具体包括了简单工厂、工厂方法、抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计模式中的创建型。创建型模式将创建对象的过程进行了抽象,也可以理解为将创建对象的过程进行了封装,作为客户程序仅仅需要去使用对象,而不再关心创建对象过程中的逻辑。其中简单工厂并不属于GOF的23种模式,但是它是理解其它的工厂模式的一个很好的基础,所以我们在讲到工厂模式的时候顺便学习它...

2019-07-22 14:44:37 182

原创 代理模式?就这?

(一)什么是代理模式?我们在编程中有一个思想:不要随便改动源代码 !那么我们要给一个对象提供更多的方法功能,我们第一时间想到的是修改源码,实际上这种方法并不可取,我们提供了一个更为科学的方法,大体逻辑如下图:代理(proxy)模式 是一种设计模式,提供了对目标对象的另一种访问形式,也就是通过代理对象来访问目标对象,通过代理对象间接的为目标对象进行功能的增强,扩展目标对象的功能,用户调用代理对...

2019-07-22 14:43:11 114

原创 淦!Spring与JDK之间的版本还有冲突问题?

(一)报错如下:Bean定义存储异常:无法读取候选组件类org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file(二)报错原因:Spring与JDK的版本冲突由官网得知,Spring3.2不能在JDK8的环境下运行,只有Spri...

2019-07-22 14:42:16 438

原创 类加载器和委托机制?平平无奇!

(一)类加载的两种方式1. 隐式加载:通过new等方式生成对象时,隐式调用类装载器加载对应的类到JVM中,也就是自动加载。Student stu =new Student();2. 显式加载:当我们调用Class.fromName()等方法时显式加载对应的类到JVM中。Class stu =Class.fromName("包名.Student");(二)类加载的动态性一个应用程序往...

2019-07-22 14:41:36 173

原创 【javaweb】Maven工程下自带的Tomcat6不支持Jdk8导致的问题

(一)问题描述通过maven插件创建一个WEB项目通过内嵌Tomcat加载项目,启动没问题,一访问页面就报错提示无法将jsp编译为class文件:[外链图片转存失败(img-c7l6DTTG-1563777687931)(https://i.loli.net/2019/04/05/5ca71b22a9110.png)]这是因为maven内嵌的Tomcat6不支持Jdk8导致的问题。(二)解...

2019-07-22 14:40:14 433 1

原创 【java】反射的概念及使用

(一)何为反射JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。(二)反射的内部作用机制通过类加载器将class文件加载到JVM中,构造成class对象,我们通过一些方法获得class对象,然后对class对象进行各种方法的调用能够获得...

2019-07-22 14:39:20 317

原创 【javaweb】Maven工程中jar包冲突

Maven里集成了Tomca,自然也就带上了Tomcat自带的jar包,我们在pom导入本地仓库中的jar包时,如果我们导入的本地仓库的jar包和Tomcat中的jar包存在重复,就会造成jar包冲突问题的出现。(一)例子比如在pom里导入如下本地仓库中与Tomcat相冲突的jar包:<dependency> <groupId>javax.servlet...

2019-07-22 14:37:41 263

原创 【javaweb】实现页面验证码及验证码点击切换

 (一)验证码的实现(1)在内存中创建图片首先必须明确的是:要想操作一张图片,首先必须将其从磁盘加载到内存中,然后才能对图片做进一步的处理。 BufferedImage是Image的一个子类,Image和BufferedImage的主要作用就是将一副图片加载到内存中。 BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图...

2019-01-27 17:05:33 3627 3

原创 【java】JavaFX从零开始实现拼图小游戏

最近java课老师布置了一个作业:制作一个拼图小游戏,关键老师自己说javaGUI编程没用,讲课的时候好像跳过了(没去上课不过我猜应该没讲吧),现在又叫我们做这些,实在是哭笑不得。得了吧,老师的任务只能老老实实完成对吧,但是我又想到像Swing这些工具包已经基本上被淘汰了,做出来的页面有点老土,要学就学点好的,于是我选择用JavaFX来完成这次作业。JavaFX的发展也不容乐观,一直不温不...

2018-12-05 21:14:39 6370 28

转载 【数据库】MySQL 各个版本驱动jar包

http://central.maven.org/maven2/mysql/mysql-connector-java/

2018-10-30 22:28:59 4138

原创 【Java】Map中的keySet()方法

今天可能脑子发胀了吧,一直纠结keySet()方法的返回值到底是什么查了api,又查了百度,终于搞明白了keySet()方法的返回值是Set接口的实现类案例对象!!!!!那么问题来了,究竟是Set接口的哪个实现类对象呢?每个类都有一个继承自Object的getClass()方法,就是返回该类的全称。Set<String> set = map.keySet(); ...

2018-10-20 20:10:36 6513

原创 【java】关于sc.hasNext()在while语句中的使用

代码:while(sc.hasNext()) { int n=sc.nextInt(); System.out.println(n); }关于上面的代码,我觉得是把输入放进一个缓冲区类似于集合,按下结束符后,将缓冲区(集合)里的元素分别一个个取出来,在while语句里进行运算,等到元素全部取出来后,计算机又等待输入。...

2018-09-20 19:08:09 6794 1

原创 【数据结构】实现顺序表以及简单的时间复杂度分析

最近在学数据结构,接下来一段时间我将用java来实现所学的各种数据结构,以加深自己的印象。线性表包括顺序表和链表,其实顺序表就是动态数组,下面我将二次封装实现属于自己的动态数组。数组类:Array数组名:data数组容量:capacity已存放元素个数:size方法:①获取数组中元素个数(getSize)②获取数组容量(getCapacity)③返回数组是否为空...

2018-09-19 23:09:57 8671

原创 【java】substring()常用的两种方法

(1)substring(a,b);含头不含尾,即截取输出第a个和第b-1个之间的字符串(2)substring(a);即去掉第a个之前的字符,返回剩下的字符串

2018-09-16 18:43:45 1836

原创 【java】取绝对值

在Java中可以使用Math.abs()方法来方便的进行绝对值计算,例如 1 Math.abs(1.3-5.6); 当然如果自己写的话也非常的简单,可以这样做: 1 2 3 publicIntegerabs(Integera){ returna>0?a:-a; } ...

2018-09-11 13:12:20 8340

原创 【java】java中输出字符串中的单个字符及获得其长度

Scannersc= newScanner(System.in);String s = sc.next(); //Scanner类没有提供直接接收一个字符的方法,这里当作字符串来接收;char c = s.charAt(0); // 调用字符串的charAt()方法取得第一个字符就是了int n=s.length();//获得字符串s的长度...

2018-09-06 20:16:11 7019

原创 【java】递归次数过多导致堆栈溢出

在写一个算法中,由于递归调用次数过多,堆栈溢出。堆栈的大小是系统控制的,无法改变。如果递归调用出现问题,可以考虑采取循环的方式来解决,将需要的数据在关键的调用点保存下来使用。简单的说,就是用自己的数据保存方法来代替系统递归调用产生的堆栈数据。溢出的意思就是越界,操作系统会给每个进程分配一个最大上限的堆栈空间,如果超过了这个内存空间大小程序就会coredump,就像你创建一个太大的数组会崩溃...

2018-09-03 23:39:04 15409

原创 【java】Java计算一段程序的运行时间

①精确到纳秒long startTime=System.nanoTime();//获取开始时间/*测试的程序代码;*/long endTime=System.nanoTime();//获取结束时间System.out.println("运行时间是:"+(startTime-endTime)+"ns");//输出运行时间②精确到毫秒long startTime=...

2018-09-03 00:00:35 2588 3

空空如也

空空如也

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

TA关注的人

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