
Java
文章平均质量分 87
mr.zjx
要得到你想要的某样东西,最好的办法是让你自己配得上它。
展开
-
深入理解volatile关键字
volatile 翻译:不稳定的。它时一种比synchronized关键字更轻量级的同步机制,访问volatile变量时,不会执行加锁操作。用在哪?volatile关键字可以修饰在类变量或者实例变量上,不能修饰在方法参数,局部变量,实例常量以及类常量上。volatile的两个作用1、保证可见性一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就说明:保证了不同线程对这个变量进行操作时的可见性,即线程修改了某个变量的值,这线程对其他线程来说是立即可见的。原创 2021-02-24 09:39:49 · 1355 阅读 · 4 评论 -
Lambda表达式与Stream流的结合
之前我们说过为什么要用函数式接口以及函数式接口的好处,本篇文章我们就开始介绍lambda表达式与stream流。还是要先跟大家说一下函数式接口的特点:函数式接口只有一个抽象方法 允许定义静态非抽象方法 允许定义默认default非抽象方法 允许Java.lang.Object中的public方法 FunctionInterface注解不是必须的(当我们把该注解定义在接口上方时,如果接口是函数式接口,编译通过;如果不是,编译失败。),因为只要保证满足函数式接口定义的条件,也照样是函数式接口。但原创 2020-08-27 07:58:01 · 872 阅读 · 2 评论 -
Transfer重定向
一、Server.Transfer与Response.Redirect的执行过程Response.Redirect:执行过程:浏览器ASP文件请求--服务器执行--遇到response.redirect语句--服务器发送response.redirect后面的地址给客户机端的浏览器--浏览器请求执行新的地址--服务器执行。也就是说,使用Response.Redirect方法时重定向操作发生...原创 2019-10-22 11:28:40 · 263 阅读 · 1 评论 -
解决Port 8080 is already in use
前言在运行项目的时候报错显示端口号已被占用,如下图解决方法:第一步:win+R打开,输入cmd进入命令窗口第二步:输入netstat -ano回车找到对应的进程PID为14472第三步:输入命令tasklist回车找到对应的进程名称:node.exe第四步:打开任务管理器,点击详细信息,根据查到的进程名称和PID找到正在运行的任务,点击结束任务然后重启程序,即可正常启动...原创 2020-06-28 11:45:52 · 20625 阅读 · 5 评论 -
如何保障多线程高并发
并发编程的三大概念:原子性、有序性、可见性。这篇文章保你看完就懂我们知道volatile可以保证并发编程的可见性和有序性。想要理解volatile为什么能确保可见性,就先理解Java中的内存模型是什么样的。看完下面这两句话,你就明白了↓↓↓Java内存模型规定了所有的变量都要存储在主内存中。(因为每条线程中还有自己的工作内存,线程的工作内存中保存了该线程所使用的变量,这些变量都是从主内存中拷贝而来的)线程对变量的所有操作(读取、赋值)都必须在工作内存中进行。不同线程之间也无法直接访问对方工作原创 2021-02-22 15:26:37 · 1328 阅读 · 4 评论 -
GateWay网关访问服务出现503的问题解决
问题描述在分布式服务中,使用GateWay网关进行服务请求路由的统一管理,它是系统对外的唯一入口。为了让网关能正常发送调用其他服务,我使用到了Nacos服务注册中心。正是这样出现了,我通过服务端口,能正常访问接口返回数据,通过网关访问有时可以有时不行的情况(也就是出现503的状态码反馈)。HTTP状态码503指的是web服务器不能处理HTTP请求。原因大致如下:站点遭到攻击,在超过限制时报503错误,待攻击停止就可以恢复了 站点规模较大,并发请求过多,这种建议修改优化程序或需要升级更...原创 2021-01-31 16:15:37 · 33718 阅读 · 15 评论 -
深入理解ThreadPoolExecutor中execute()方法原理
前言为什么要使用线程池1.在Java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。2.除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个jvm里创建太多的线程,可能会是系统由于过度消耗内存或“切换过度”而导致系统资源不足。3.为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁的线程的次数原创 2021-01-24 21:42:23 · 3761 阅读 · 6 评论 -
Java代码编写中所用到的一些注解
注解:概念:说明程序的,给计算机看的。注释:用文字描述程序的,给程序员看的JDK中预定义的一些注解@Override:检测被该注解标注的方法是否是继承自父类(接口)的@Deprecated:该注解标注的内容,表示已过时@SuppressWarnings:压制警告一般传递参数all @SuppressWarnings("all")get与post的区别https://blog.youkuaiyun.com/ever_siyan/article/details/87935455..原创 2020-11-29 08:14:25 · 278 阅读 · 3 评论 -
.class文件的生成及加载过程
.java文件和.class文件.java文件:用于保存源代码的文本文件(通俗的说:就是我们写的代码).class文件:生成:使用javac命令可以编译该文件-----生成.class文件加载过程:当运行Java程序是,首先运行JVM(Java虚拟机),然后再把class文件加载到JVM的方法区里,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构,并向程序员提供访问方法区内的数据结构的接口。在加载class文件的时候,JVM会先加载类中的所有静态成原创 2020-07-05 09:44:44 · 2190 阅读 · 3 评论 -
理解反射机制并学习反射的方法
在说反射之前我们先来了解一下,类加载与类加载器类加载类加载的三个步骤:类的加载、类的连接、类的初始化类的加载:就是指将class文件读入内存,并为它创建一个Java.lang.Class对象;同理任何类被使用时,系统都会为之建立一个Java.lang.Class对象 类的连接: 验证阶段:用于检验被加载的类是否由正确的内部结构,并和其他类协调一致 准备阶段:负责为类的类变量分配内存,并设置默认初始化值 解析阶段:...原创 2020-07-04 09:53:32 · 980 阅读 · 1 评论 -
mybatis框架详细总结
明天补上原创 2020-05-17 21:36:51 · 317 阅读 · 3 评论 -
springMVC框架详细总结
什么是MVCMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。 是将业务逻辑、数据、显示分离的方法来组织代码。 MVC主要作用是降低了视图与业务逻辑间的双向偶合。 MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为S原创 2020-06-13 16:04:17 · 787 阅读 · 3 评论 -
Spring框架详细总结
Spring:是Java企业级应用的开源开发框架。IOC和DIIOC:控制反转也就是使用了spring之后,对象的创建方式从我们自己创建反转给了程序创建(spring)DI:依赖注入组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造.原创 2020-05-23 15:05:25 · 423 阅读 · 3 评论 -
java函数式编程的好处
函数式编程的好处Java引入了函数式编程,这表示Java从此不在是一个单纯的面向对象语言,现在他同时混合了函数式编程。这是巨大的改变,需要我们调整面对对象的编程习惯,以适应这些变化。但是为什么我们需要去适应这些改变?为什么我们需要花费时间精力上手函数式编程而不是直接用面对对象解决问题?函数式编程的引入,帮助我们减少业务逻辑和代码的分歧。他允许我们在更高层次更自然的描述业务逻辑。让代码直...原创 2020-05-05 11:28:59 · 3456 阅读 · 2 评论 -
java多线程编程
定义:线程是进程中单个顺序控制流,是一条执行路径单线程:一个进程如果只有一条执行路径,则称为单线程程序多线程:一个进程如果有多条执行路径,则称为多线程程序多线程的两种实现方式多线程的实现方案有两种:1、继承Thread类2、实现Runnable接口相比继承Thread类,实现Runnable接口的好处:避免了Java单继承局限性;适合多个相同程序的代码去处理同一...原创 2020-05-05 09:26:37 · 249 阅读 · 1 评论 -
IO流--字符流
为什么会出现字符流?由于字节流操作中文不是特别的方便,所以Java就提供字符流字符流=字节流+编码表用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别中文的呢?汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数编码与解码 String s ="中国"; //编码 ...原创 2020-05-03 11:34:53 · 206 阅读 · 3 评论 -
IO流--字节流
IO:输入输出流:是一种抽象概念,是对数据传输的总称,也就是说数据在设备间的传输成为流,流的本质是数据传输。IO流就是用来处理设备间数据传输问题的常见的应用:文件复制,文件上传,文件下载IO流分类:按数据的流向:输入流(读数据)、输出流(写数据)按数据类型:字节流、字符流(一般来说,我们说IO流的分类是按照数据类型来分的。)那么这两种流都在什么情况下使用呢?如果数据...原创 2020-04-20 13:48:10 · 282 阅读 · 5 评论 -
Collection集合-(set集合)
Collection集合体系set集合特点不包含重复元素的集合(即使添加重复元素之后,最终也只能显示一个)没有带索引的方法,所以不能使用普通的for循环遍历HashSet:对集合的迭代顺序不作任何保证哈希值哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值(我们要知道哈希值不是对象的地址值,它是一个int类型的数值)object类中有一个方法...原创 2020-04-12 14:34:33 · 553 阅读 · 4 评论 -
Collection集合-(List集合)
Collection集合体系其中蓝色框为接口,红色框为具体实现类Collection集合概述和使用Collection是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素JDK不提供此接口的任何直接实现,它提供更具体的子接口(如list和set)实现创建Collection集合的对象:多态的方式、具体的实现类为ArrayList集合使用步骤:...原创 2020-01-20 19:58:25 · 384 阅读 · 10 评论 -
IDEA简介
什么是IDEA?IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,...原创 2020-01-20 11:54:16 · 23738 阅读 · 9 评论