自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 Java中难理解的四个概念

前言Java 是很多人一直在用的编程语言,但是有些 Java 概念是非常难以理解的,哪怕是一些多年的老手,对某些 Java 概念也存在一些混淆和困惑。所以,在这篇文章里,会介绍四个 Java 中最难理解的四个概念,去帮助开发者更清晰的理解这些概念:匿名内部类的用法多线程如何实现同步序列化匿名内部类匿名内部类又叫匿名类,它有点像局部类(Local Class)或者内部类(Inner Class),只是匿名内部类没有名字,我们可以同时声明并实例化一个匿名内部类。一个匿名内部类仅适用在想使用

2021-05-31 20:15:48 587 1

原创 Spring5学习之基础知识总结

1.概述1、Spring 是轻量级的开源的 JavaEE 框架2、 Spring 可以解决企业应用开发的复杂性3、Spring 有两个核心部分:IOC 和 AopIOC:控制反转,把创建对象过程交给 Spring 进行管理Aop:面向切面,不修改源代码进行功能增强4、Spring 特点方便解耦,简化开发Aop 编程支持方便程序测试方便和其他框架进行整合方便进行事务操作降低 API 开发难度2.入门Demo1.jar包引入<project xmlns="http://maven

2021-05-30 22:13:17 466 3

原创 请允许我说一句:“这方面我最细”——Java类加载相关知识总结

类加载器类加载器作用负责将.class文件(存储的物理文件)加载到内存中类加载器过程加载:通过全类名获取这个类准备用流传输,加载进内存,加载完毕创建一个Class对象链接验证:确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身安全(文件中的信息是否符合虚拟机规范有没有安全隐患)准备:负责为类的类变量(被static修饰的变量)分配内存,并设置默认初始化值(初始化静态变量)解析:将类的二进制数据流中的符号引用替换为直接引用(本类中如果用到了其他类,此

2021-05-28 22:03:12 426 11

原创 面试官问我:如何理解BIO、NIO、AIO的区别?我差点拉胯!

很多文章在谈论到BIO、NIO、AIO的时候仅仅是抛出一堆定义,以及一些生动的例子。看似很好理解。但是并没有将最基础的本质原理显现出来,如果没有没有从IO的原理出发的话是很难理解这三者之间的区别的。所以本篇文章从Java是如何进行IO操作为开头进行分析。Java中的IO原理首先Java中的IO都是依赖操作系统内核进行的,我们程序中的IO读写其实调用的是操作系统内核中的read&write两大系统调用。那内核是如何进行IO交互的呢?1.网卡收到经过网线传来的网络数据,并将网络数据写到内存中.

2021-05-27 15:30:47 745 31

原创 Java基础学习之字符串知识总结,小白必看!

一、前言字符串是多个字符连接起来组合成的字符序列。字符串分为可变的字符串和不可变的字符串两种。(1)不可变的字符串:当字符串对象创建完毕之后,该对象的内容(上述的字符序列)是不能改变的,一旦内容改变就会创建一个新的字符串对象。Java中的String类的对象就是不可变的。(2)可变的字符串:StringBuilder类和StringBuffer类的对象就是可变的;当对象创建完毕之后,该对象的内容发生改变时不会创建新的对象,也就是说对象的内容可以发生改变,当对象的内容发生改变时,对象保持不变,还是同一个

2021-05-26 21:40:27 246 6

原创 程序猿是如此!人亦是如此!

Bob 大叔的《代码整洁之道》一书,曾经让我受益匪浅,这本书从编码上很小的细节着手,讲解如何编写出高质量的代码。Bob 大叔还写过一本《程序员的职业素养》,这本书未深入讲解编程的知识细节,而是从程序员工作的角度描述哪些行为是不专业的、哪些行为可能会导致项目延期、哪些行为会导致工作效率低下等等事情,其中也有很多非常好的专业建议。提升职业素养,使自己成为一个专业的程序员,这并非一件简单的事情,技术能力、沟通技巧、工作态度等等都构成了评价一个员工专业性的因素,缺少任何一个可能都会令我们显得不够专业,如果能把书中

2021-05-25 16:59:42 173 7

原创 优秀程序员经验之谈:必须要注意的十个点,少走弯路,提高效率 爆赞!

1. 多走半里路很多事情并不难,只是缺乏多走半里路的习惯!反例public boolean isInValid(String str) { if (str == null || str.trim().length() == 0) { return true; } return false;}多走一步,海阔天空public boolean isInValid(String str) { return (str == null) || (st

2021-05-24 14:59:33 169

原创 JVM的内存结构详解

一、JVM基础知识1、什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。2、JRE/JDK/JVM是什么关系JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台。所有的Java程序都要在JRE下才能运行。普通用户只需要运行已开发

2021-05-21 21:32:02 293 1

原创 一文弄懂 Gitflow、Github flow、Gitlab flow 的工作流

Git 作为一个源码管理系统,不可避免涉及到多人协作。协作必须有一个规范的工作流程,让大家有效地合作,使得项目井井有条地发展下去。”工作流程”在英语里,叫做”workflow”或者”flow”,原意是水流,比喻项目像水流那样,顺畅、自然地向前流动,不会发生冲击、对撞、甚至漩涡。本文介绍三种广泛使用的工作流程:Git flowGithub flowGitlab flow一、功能驱动本文的三种工作流程,有一个共同点:都采用”功能驱动式开发”(Feature-driven developmen

2021-05-21 21:07:45 3057

原创 今天5.20我把女朋友都忘了,花了几个小时整理出来超详细的Java尾递归。

一、序言尾调用维基百科在计算机学里,尾调用是指一个函数里的最后一个动作是返回一个函数的调用结果的情形,即最后一步新调用的返回值直接被当前函数的返回结果。此时,该尾部调用位置被称为尾位置。尾调用中有一种重要而特殊的情形叫做尾递归。经过适当处理,尾递归形式的函数的运行效率可以被极大地优化。尾调用原则上都可以通过简化函数调用栈的结构而获得性能优化(称为“尾调用消除”),但是优化尾调用是否方便可行取决于运行环境对此类优化的支持程度如何。尾递归维基百科:若函数在尾位置调用自身(或是一个尾调用本身的其

2021-05-20 20:23:53 184 1

原创 Java基础篇—— 构造器与方法重载

显式初始化要求我们在写程序时就确定初始值,这有时很不方便。我们可以使用构造器(constructor)来初始化对象。构造器可以初始化数据成员,还可以规定特定的操作。这些操作会在创建对象时自动执行。定义构造器构造器是一个方法。像普通方法一样,我们在类中定义构造器。构造器有如下基本特征:构造器的名字和类的名字相同构造器没有返回值我们定义Human类的构造器:public class Test{ public static void main(String[] args) {

2021-05-18 20:23:22 220 1

原创 Java基础篇——方法与数据成员

调用同一对象的数据成员方法可以调用该对象的数据成员。比如下面我们给Human类增加一个getHeight()的方法。该方法返回height数据成员的值:public class Test{ public static void main(String[] args) { Human aPerson = new Human(); System.out.println(aPerson.getHeight()); }}class Human{

2021-05-17 19:11:57 226

转载 Java基础篇——从HelloWorld到面向对象

作者:Vamei 出处:http://www.cnblogs.com/vamei“Hello World!”先来看一个HelloWorld.java程序。这个程序在屏幕上打印出一串字符"Hello World!":public class HelloWorld{ public static void main(String[] args) { System.out.println("Hello World!"); }}程序中包括Java的一些基本特征:

2021-05-17 17:34:01 120

原创 WebUploader实现图片上传功能

本文实例为大家分享了WebUploader实现图片上传的具体代码,供大家参考,具体内容如下**描述:**springmvc 在jsp页面实现 WebUploader插件上传图片, 上传到 oss阿里云存储上。预览:理解: 前端 WebUploader插件(这个得去看官网)调起后台,后台 request 接收文件参数,重新拼装图片url,oss创建连接上传图片提交图片,最后返回图片绝对url和相对url给前端。先实现前端:1.定义js 2.定义页面//导入 WebUploader插件js、css

2021-05-15 19:52:24 758

转载 上网时遇到的 404 是什么意思?

随着网络时代的发展与进步,我们的学习工作和生活早已离不开互联网,智能家居、网上购物、日常出行都需要互联网的支持。互联网切切实实地给生活带来了诸多便利。那大家有没有碰到过这么一个情况呢?当我们在使用手机或者电脑浏览一些信息的时候,或者在搜索引擎中搜索资料,点击搜索结果跳转后,浏览器跳出一个 404 Not Found 的空白页。相信各位老网民都很熟悉“404”这个数字了,这个错误代码代表着服务器未找到文件,通常出访问的页面已经被更改或者移除,或是输入了错误的访问地址错误。那为什么用 404 而不是其他

2021-05-15 19:32:39 1938

原创 Java logback日志的简单使用

说明logback作为log4j的替代,有很多优势。要将logback应用到项目中,步骤很简单。加入依赖的jar包和配置文件即可。logback.xml中主要元素:property定义属性,定义之后,后文可以通过该变量引用。appender定义日志输出格式、位置、文件分割等。被或引用。logger定义日志名称及对应的级别。name可以是包名、类名或者单纯的字符串。如果是包名或者类名,那么该包或类中的日志级别,对应这里的设置;如果是单纯的字符串名,那么通过getLogger({name})获

2021-05-14 20:31:38 1030 2

原创 JAVA和JVM运行原理

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。编译器负责把Java程序转成Class文件,方便Jvm来读取它.Jvm是java虚拟机,其实它就是解释器,把Class文件中的命令转成某种平台的命令,比如把Java命令转成Windows下的命令,然后Java程序就执行了.这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无

2021-05-14 19:42:42 120

原创 Java如何发起http请求的实现(GET/POST)

前言在未来做项目中,一些功能模块可能会采用不同的语言进行编写。这就需要http请求进行模块的调用。那么下面,我将以Java为例,详细说明如何发起http请求。一、GET与POSTGET和POST是HTTP的两个常用方法。GET指从指定的服务器中获取数据POST指提交数据给指定的服务器处理1.GET方法使用GET方法,需要传递的参数被附加在URL地址后面一起发送到服务器。例如:http://121.41.111.94/submit?name=zxy&age=21特点:GET请求能

2021-05-13 16:57:46 6870

原创 面试合集|各个大厂的面试问题

1:微盟一面:系统是什么功能系统之间怎么通信会不会查询数据库的一个开销定时任务怎么处理重复任务线程池的参数怎么设置分布式锁怎么实现怎么优化数据库索引的结构是什么aop怎么用的aop的底层怎么实现反转字符串2:多益一面:项目的整体架构是什么?用了什么技术?为什么要用两种缓存?怎么保证缓存的一致性?怎么优化的?定时任务怎么保证实时性?表是怎么设计的?3:字节抖音电商一面:后序和中序,确定一棵树口述算法:n的平方根2T的文件 加载2G 出现次数top10

2021-05-13 15:53:21 267 2

转载 Java多线程面试题(面试官常问)

进程和线程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是从一个进程从创建、运行到消亡的过程。在Java中,当我们启动main函数时其实就是启动了一个JVM的进程,而mian函数所在的线程就是这个进程中的一个线程,称为主线程。线程是比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程都有自己的程序计数器、虚拟机和本地方法栈,所以系统在产生一个线程,或在各个线程之间切换工作是,负担要比进程

2021-05-12 21:10:19 118

转载 成年人的崩溃瞬间,从这三个问题开始

作者 | 艾菲来源 | 艾菲的理想之前看过一篇文章,印象深刻。文章说现在中国成年人的生活都是填空题,互相打招呼也都是填空题。我,今年____岁,一年挣_元,住平米,有___个孩子。所以,只要其中任一数字填不出,就会被他人当作“失败者”。相反,只要这几个数字都填满了,且看着不错,就算你的内心十分痛苦,也能获得众人称羡。等等,这还没完。填完空后,还有关键一步,那就是去比较究竟是你的数据好,还是她的数据好。这就是“填空题”式的人生,而它也正是很多成年人内心崩溃的原因。为什么崩溃?可能原因..

2021-05-12 20:41:44 348

原创 收藏!17 张程序员专属壁纸(使用频率很高)

1、三思后再写代码!!!2、从世界上搜索喜欢你的人!!!3、代码没写完,哪里有脸睡觉!!!4、程序员的 Home 键!!!5、编程是一门艺术!!!*6、云 ~~~~ 雨!!!*7、程序人生!!!8、只有极客才懂!!!9、黑客的世界!!!10、黑~~~人!!!11、PHP(拍黄片) 专属!!!12、程序 ~ 代码!!!13、我就是一个极客!!!14、CODE!!!15、源代码!!!16、CODE PARTICLE!!!17、一个While 引发的

2021-05-12 20:31:52 405

原创 面试必备:2021年最新面试题 200+

面试题模块介绍说了这么多,下面进入我们本文的主题,我们这份面试题,包含的内容了十九了模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示:可能对于初学者不需要看后面的框架和 JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读

2021-05-12 14:43:02 126

原创 今天去公司面试面试官给我的问题我想分享给你们

今天面试公司对公司提的问题做了个解答 希望对大家有帮助吧面试题目:【数据结构和算法】解码异或后的排列做这题之前先看一下异或运算的几个规律a^a=0; 任何数字和自己异或都是00^a=a; 任何数字和0异或还是他自己a^b^c=a^c^b 异或运算具有交换律这题只要找出数组encoded中的第一个元素,后面做起来就简单了。那么怎么找encoded中的第一个元素呢,题中有个暗示就是n 是个奇数,我们画个图来看一下可以看到encoded数组中所有偶数位(下标从0开始的,是

2021-05-11 15:38:16 94

原创 解决idea找不到或无法加载主类的错误处理

错误: 找不到或无法加载主类 com.yan.ms.work.WorkServiceApplicationDisconnected from the target VM, address: ‘127.0.0.1:51456’, transport: ‘socket’有时候更新gradle后,启动项目就报错了,错误: 找不到或无法加载主类 com.yan.ms.work.WorkServiceApplicationDisconnected from the target VM, address: ‘

2021-05-11 14:32:17 2175

原创 Java的第一次!!

はじめてのJava初识Java本章将会对Java的执行顺序、Java的构成要素、Java平台这三点进行解释说明目录Java的执行顺序Java的构成要素Java平台Java的执行顺序Java程序的执行需要经过以下阶段。图片含义如下:1.Java源代码程序2.编译器编译3.在JVM执行byte字节码①Java编译器会将Java源代码编译成byte字节码②在JVM(Java虚拟机)上执行byte字节码。Java byte字节码只能在JVM上执行。不能直接在OS上

2021-05-10 15:47:04 2175

原创 千万注意!下载java不要踩的坑!!

下载java,就遇到下面三个网站https://www.oracle.com/java/t…https://www.java.com/zh-CN/https://openjdk.java.net/第一个是最好的第二个是下载jre的,也就是用来运行java class的,不是用来开发和学习的,想当程序员请远离第三个是java的开源版本,最新只有9(或许有新的,但肯定很难找到),不推荐以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持,需要更多资料的同学可以评论私信我,记得一键三

2021-05-10 15:33:08 320

转载 Java 开发环境的搭建,开启你的编程之旅

Java 是一门跨平台的高级程序设计语言,可运行在linux、Windows、Mac OS及其他多种UNIX版本的系统。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等Java 版本Java Platform, Standard Edition (Java SE)Java SE 使您可以在台式机和服务器上开发和部署Java应用程序。Java SE和组件技术提供了当今应用程序所需

2021-05-10 15:27:57 276

原创 重点!面试官:JDK、JRE、JVM 三者什么关系?

这个题目在面试题中基本没怎么出现,但在笔试题中倒是经常见到。所以还是有必要拉出来溜溜~JDK: java development kit, java开发工具包,用来开发Java程序的,针对java开发者。JRE: java runtime environment, java运行时环境,针对java用户JVM: java virtual machine,java虚拟机 用来解释执行字节码文件(class文件)的。JDKJDK 即为 Java 开发工具包,包含编写 Java 程序所必须的编译、运行

2021-05-08 19:43:14 122

转载 Java之父:詹姆斯·高斯林 (James Gosling)

Java之父:詹姆斯·高斯林 (James Gosling)Java自1995诞生,至今已经20多年的历史。Java的名字的来源:Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。据James Gosling回忆,最初这个为TV机顶盒所设计的语言在Sun内部一直称为Green项目。我们的新语言需要一个

2021-05-08 17:10:56 5498

原创 类似QQ聊天软件也能用Java实现啦!(多人聊天原理附源码)

多人聊天室原理图源码工具类:该类用于关闭各种流。public class CloseUtil { public static void CloseAll(Closeable... closeable){ for(Closeable c:closeable){ if (c != null) { try { c.close(); } catch (IOException e) { e.printStackTrace(); } } }

2021-05-07 20:53:57 604

原创 Java到底好在哪里?Java的发展前景趋势如何?

大多数人选择Java可能只是因为听说Java前景好、Java比较好找工作、Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具体好在哪里,心里却是没有什么概念的。本文就为你解答学Java的前景与趋势。01Java工程师发展前景作为一种最流行的网络编程语言之一,Java语言在当今信息化社会中发挥了重要的作用。Java语言具有面向对象、跨平台、安全性、多线程等特点,这使得Java成为许多应用系统的理想开发语言。Java的应用可以说是无处不在,从桌面办公应用到网络数据库等应用,从P

2021-05-07 17:18:53 222

转载 Java学习之路(书籍篇)

一直有这么个想法,列一下我个人认为在学习和使用Java过程中可以推荐一读的书籍,给初学者或者想深入的朋友一些建议,帮助成长。推荐的的都是我自己读过,也会推荐一些朋友读过并且口碑不错的书籍。一、基础类1、《Thinking in java》(阅读2遍),入门第一位是建立正确的概念。2、《Core Java》,我没系统读过,这本书更贴近实践,更多API的介绍,同样,更新也更频繁。(可以选重点章节读一下)二、进阶类1、《Effective Java》(阅读1遍),在熟悉语法、API之后,你需要知道最佳

2021-05-07 15:48:09 117

转载 Java高并发情况下高效的随机数生成器

前言在代码中生成随机数,是一个非常常用的功能,并且JDK已经提供了一个现成的Random类来实现它,并且Random类是线程安全的。下面是Random.next()生成一个随机整数的实现:protected int next(int bits) { long oldseed, nextseed; AtomicLong seed = this.seed; do { oldseed = seed.get(); nextseed = (oldseed

2021-05-06 20:55:00 506

原创 Java 使用反射调用jar包中的类方式

下面讲展示的是从image.jar包中调用image.Buddy类的方法。public class Main { public static void main(String[] args) { try { // 两种方式都可以 URL url = new File("/Users/wuchen/Documents/IntelliJIDEA/Applet/out/production/Applet/image.jar").toURI

2021-05-06 19:45:28 1767

原创 JAVA多线程-线程生命周期

线程生命周期1. 线程的生命周期包括新建、就绪、运行、阻塞、销毁五中状态新建:使用new方法,实例化一个线程Thread thread = new Thread();就绪:调用start() 方法后,这时候线程处于等待CPU分配资源阶段​ 调用yeild()方法,让出cpu资源,程序由运行状态变为就绪状态​ 当阻塞的状态通过notify()和notifyAll()方法唤醒以后thread.start();运行:当就绪的线程获取到CUP资源以后, 便进入运行

2021-05-05 20:54:08 340

转载 Java多线程-线程的概念和创建

前言声明:该文章中所有测试都是在JDK1.8的环境下。该文章是我在学习Java中的多线程这方面知识时,做的一些总结和记录。如果有不正确的地方请大家多多包涵并作出指点,谢谢!一、基础概念我们知道CPU执行代码都是一条一条顺序执行的,所以本质上单核CPU的电脑不会在同一个时间点执行多个任务。但是在现实中,我们在使用电脑的时候,可以一边聊微信,一边听歌。那这是怎么做到的呢?其实操作系统多任务就是让CPU对多个任务轮流交替执行。举个例子:在一个教室中同时坐着一年级,二年级,三年级三批学生,老师花一分钟教

2021-05-05 17:24:11 128

原创 程序员为什么不写文档?

为什么程序员不写文档?是不想写吗?最近,资深软件工程师 Kislay Verma 分析了背后的深层原因。他认为软件工程师不写文档有以下两个主要原因。写作太难了和所有人一样,软件工程师不写文档的原因是写作非常难。写作本身是一件要求很高的任务,需要写作者将想法清晰地组织起来,进行批判性思考,最后再清楚表达出来。在编程世界中,最佳答案等所有事情都基于一定程度的权衡,这也就使得写作更加困难。程序员在写作时需要先说明背景,证明决策的正确性,再将低级思考引入代码。这类写作如果做好的话往往很有用,但想做好并非易

2021-05-05 16:53:23 412 4

空空如也

空空如也

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

TA关注的人

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