自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入理解volatile关键字

volatile 翻译:不稳定的。它时一种比synchronized关键字更轻量级的同步机制,访问volatile变量时,不会执行加锁操作。用在哪?volatile关键字可以修饰在类变量或者实例变量上,不能修饰在方法参数,局部变量,实例常量以及类常量上。volatile的两个作用1、保证可见性一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就说明:保证了不同线程对这个变量进行操作时的可见性,即线程修改了某个变量的值,这线程对其他线程来说是立即可见的。

2021-02-24 09:39:49 1141 4

原创 如何保障多线程高并发

并发编程的三大概念:原子性、有序性、可见性。这篇文章保你看完就懂我们知道volatile可以保证并发编程的可见性和有序性。想要理解volatile为什么能确保可见性,就先理解Java中的内存模型是什么样的。看完下面这两句话,你就明白了↓↓↓Java内存模型规定了所有的变量都要存储在主内存中。(因为每条线程中还有自己的工作内存,线程的工作内存中保存了该线程所使用的变量,这些变量都是从主内存中拷贝而来的)线程对变量的所有操作(读取、赋值)都必须在工作内存中进行。不同线程之间也无法直接访问对方工作

2021-02-22 15:26:37 1261 4

原创 Spring Cache缓存

为什么要用springcache?它解决了什么问题?springcache 是spring3.1版本发布出来的,他是对使用缓存进行封装和抽象,通过在方法上使用annotation注解就能拿到缓存结果。正时因为用来annotation,所以它解决了业务代码和缓存代码的耦合度问题,即再不侵入业务代码的基础上让现有代码即刻支持缓存,它让开发人员无感知的使用了缓存。特别注意:(注意:对于redis的缓存,springcache只支持string)使用步骤: pom文件加入依赖包 &l

2021-01-31 21:10:46 1885 4

原创 GateWay网关访问服务出现503的问题解决

问题描述在分布式服务中,使用GateWay网关进行服务请求路由的统一管理,它是系统对外的唯一入口。为了让网关能正常发送调用其他服务,我使用到了Nacos服务注册中心。正是这样出现了,我通过服务端口,能正常访问接口返回数据,通过网关访问有时可以有时不行的情况(也就是出现503的状态码反馈)。HTTP状态码503指的是web服务器不能处理HTTP请求。原因大致如下:站点遭到攻击,在超过限制时报503错误,待攻击停止就可以恢复了 站点规模较大,并发请求过多,这种建议修改优化程序或需要升级更...

2021-01-31 16:15:37 30379 15

原创 深入理解ThreadPoolExecutor中execute()方法原理

前言为什么要使用线程池1.在Java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。2.除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个jvm里创建太多的线程,可能会是系统由于过度消耗内存或“切换过度”而导致系统资源不足。3.为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁的线程的次数

2021-01-24 21:42:23 3651 6

原创 Spring Data JPA 多条件判空查询

Spring Data JPA虽然大大的简化了持久层的开发,但是在实际开发中,很多地方都需要高级动态查询。使用@Query注解,这种方式可以直接在Repository里面写sql,但是这种方式的问题就是太麻烦了,而且非常容易出错,扩展性也很差,还不如直接用mybatis,奈何项目用到是jpa...mysql判空:if(条件, 表达式1 ,表达式2)如果条件满足,返回表达式1;条件不满足,返回表达式2代码我的业务:高级搜索,根据条件进行动态查询并判断是否为空@Repos...

2021-01-09 17:01:18 6112 5

原创 从两个方面将redis剖析

前言为什么要使用redis?剖析:一般主要是从两个角度出发---性能和并发。(虽然它还可以做分布式锁的功能,但博主这里主要方面是从性能和并发角度来分析,分布式锁的话暂时不做讲解)性能:在我们调用某个方法时,如果这个方法的SQL耗时比较久,并且对应的结果不会频繁的变动,这时我们将运行的结果放入redis中,再去请求这个方法,直接从redis中获取,使得请求能够迅速响应。这时就有人问我,什么是迅速响应,多长时间才叫迅速响应?这里我只能用书中的话来回答他:在理想状态下,我们的页面跳转需要在瞬间

2020-12-06 23:15:49 330 3

原创 三分钟深入了解Spring底层

Pivotal中国研发中心, EMC,VMware和通用电气(GE)的联合投资说说你对spring的了解,是IOC、AOP吗?spring中有很多项目,IOC-AOP是spring framework中的核心技术的一部分一个springbean一定是一个对象spring bean---object经过一个完整的生命周期bean的生命周期: 先明确两个概念spring bean和对象1、spring bean——受spring容器管理的对象,可能经过了完整的spri...

2020-11-29 08:43:11 611 4

原创 Java集合

Java集合:List、Set、MapConnection接口List (有序,可重复) ArrayList 优点:底层数据结构是数组,查询快,增删慢(数组是连续的,并且浪费内存空间) 缺点:线程不安全,效率高 Vector 优点:底层数据结构是数组,查询快,增删慢(数组是连续的) 缺点:线程安全,效率低(因为加了synchronized锁) LinkedList 优点:底层数据结构是链表,...

2020-11-29 08:25:23 827 3

原创 Java代码编写中所用到的一些注解

注解:概念:说明程序的,给计算机看的。注释:用文字描述程序的,给程序员看的JDK中预定义的一些注解@Override:检测被该注解标注的方法是否是继承自父类(接口)的@Deprecated:该注解标注的内容,表示已过时@SuppressWarnings:压制警告一般传递参数all @SuppressWarnings("all")get与post的区别https://blog.csdn.net/ever_siyan/article/details/87935455..

2020-11-29 08:14:25 249 3

原创 自考总结.

又一次的自考结束了,这次自考报了三科。下面说一下我的自考准备过程这次的三科自考分别是:网络经济与企业管理、C++程序设计、英语二。准备时间:7天准备工具:番茄工具方法:快速阅读、思维导图、二八定律、三遍读书法首先我对三科的总体章节有了一个大概的了解。然后每天指定严格的时间计划安排,并根据番茄时间来落到实际。劳逸结合,有一定的休息时间。整体了解之后,进行详细的章节学习。然后进行书本的课后题学习。并进行小组讨论,讨论之后进行深刻的总结。不断的看书学习之后,就开始了试卷做题。做题,讨.

2020-10-19 14:30:29 229 6

原创 IDEA里String、Long等基本类型显示红色的处理(Java)

自己在导入一个新的项目的时候,发现Java的基本数据类型都爆红了。经过查资料之后,这是因为JDK配置的问题,找到解决方法如下:首先点击File,选择Project Structure进入发现没有选择JDK然后选择JDK就好了。(建议大家记住这个快捷键)...

2020-10-02 16:58:09 6443 3

原创 Ribbon本地负载均衡客户端及轮询算法

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套 客户端 负载均衡的工具提供客户端的软件负载均衡算法和服务调用(ribbon负载均衡+restTemplate)LB负载均衡(LoadBalance):将用户的请求平摊的分配到多个服务器上,从而达到系统的HA(高可用)常见的负载均衡软件:Nginx,LVS,硬件 F5等Ribbon本地负载均衡客户端、Nginx服务端负载均衡区别Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实

2020-08-31 11:04:52 671 5

原创 Lambda表达式与Stream流的结合

之前我们说过为什么要用函数式接口以及函数式接口的好处,本篇文章我们就开始介绍lambda表达式与stream流。还是要先跟大家说一下函数式接口的特点:函数式接口只有一个抽象方法 允许定义静态非抽象方法 允许定义默认default非抽象方法 允许Java.lang.Object中的public方法 FunctionInterface注解不是必须的(当我们把该注解定义在接口上方时,如果接口是函数式接口,编译通过;如果不是,编译失败。),因为只要保证满足函数式接口定义的条件,也照样是函数式接口。但

2020-08-27 07:58:01 760 2

原创 注册中心-Eureka

注册中心-Eureka介绍又称服务中心,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等。任何一个服务都不能直接去掉用,都需要通过注册中心来调用。通过服务中心来获取服务你不需要关注你调用的项目IP地址,由几台服务器组成,每次直接去服务中心获取可以使用的服务去调用既可。Eureka集群原理说明 先启动eureka注册中心 启动服务提供者payment支付服务 支付服务启动后会吧自身信息以别名方式注册进eureka 消费者order服务在需要调用接..

2020-08-24 16:42:36 306 2

原创 把握细节

“细节决定成败”是一句俗语,也是一种哲理哲思,指的是讲究细节能决定事件的走向。对于不清楚,不了解的事物不要轻易下定论,不要让机遇悄悄溜走。也许一个决定,一个微不足道的细节,恰恰决定了你的成败。查理三世(理查三世)坠马身亡1485年,英王理查三世与亨利伯爵在波斯沃斯展开决战。此役将决定英国王位新的得主。战前,马夫为国王备马掌钉。铁匠因近日来一直忙于为国王军队的军马掌钉,铁片已用尽。请求去找。马夫不耐烦地催促道:“国王要打头阵,等不及了!”铁匠只好将一根铁条截为四份加工成马掌。当钉完第三个马掌时,铁匠又发现

2020-08-22 15:33:18 254 2

原创 如何创建SpringCloud项目

创建步骤字符编码注解生效激活Java编译版本选8微服务模块 建module 改POM 父pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation...

2020-08-20 11:24:03 850 2

原创 学习软件设计

经过一个个的小程序,一步步的深入软件设计的层次,预知后面如何,待-明-天

2020-08-04 21:37:09 237 1

原创 .class文件的生成及加载过程

.java文件和.class文件.java文件:用于保存源代码的文本文件(通俗的说:就是我们写的代码).class文件:生成:使用javac命令可以编译该文件-----生成.class文件加载过程:当运行Java程序是,首先运行JVM(Java虚拟机),然后再把class文件加载到JVM的方法区里,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构,并向程序员提供访问方法区内的数据结构的接口。在加载class文件的时候,JVM会先加载类中的所有静态成

2020-07-05 09:44:44 2006 3

原创 理解反射机制并学习反射的方法

在说反射之前我们先来了解一下,类加载与类加载器类加载类加载的三个步骤:类的加载、类的连接、类的初始化类的加载:就是指将class文件读入内存,并为它创建一个Java.lang.Class对象;同理任何类被使用时,系统都会为之建立一个Java.lang.Class对象 类的连接: 验证阶段:用于检验被加载的类是否由正确的内部结构,并和其他类协调一致 准备阶段:负责为类的类变量分配内存,并设置默认初始化值 解析阶段:...

2020-07-04 09:53:32 944 1

原创 解决Port 8080 is already in use

前言在运行项目的时候报错显示端口号已被占用,如下图解决方法:第一步:win+R打开,输入cmd进入命令窗口第二步:输入netstat -ano回车找到对应的进程PID为14472第三步:输入命令tasklist回车找到对应的进程名称:node.exe第四步:打开任务管理器,点击详细信息,根据查到的进程名称和PID找到正在运行的任务,点击结束任务然后重启程序,即可正常启动...

2020-06-28 11:45:52 18976 5

原创 解决Microsoft.NET Framework 3.5Service Pack1失败问题

在下载SQL Sever2014是耗费了很长的时间,下载了整整一天,在安装过程中也遇到了麻烦,刚开始安装就遇到了问题,Microsoft.NET Framework 3.5Service Pack1显示失败,重新运行很多次也不行,然后就去下载一个Microsoft.NET Framework 3.5Service Pack1,但下载之后的根本用不了,同时还会附带很多其他的软件。于是就接着继续寻找其他的解决办法,最终方法如下:1.打开控制面板2.找到程序3.点击启用或关闭Windows功能

2020-06-27 15:01:52 4713 2

原创 springMVC框架详细总结

什么是MVCMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。 是将业务逻辑、数据、显示分离的方法来组织代码。 MVC主要作用是降低了视图与业务逻辑间的双向偶合。 MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为S

2020-06-13 16:04:17 700 3

原创 Explain详解

通俗的讲:就是这篇博客,现在我没有时间写或没想好怎么写,但我就是想发表一篇等有时间再写。

2020-05-31 21:15:37 895 11

原创 Spring框架详细总结

Spring:是Java企业级应用的开源开发框架。IOC和DIIOC:控制反转也就是使用了spring之后,对象的创建方式从我们自己创建反转给了程序创建(spring)DI:依赖注入组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造.

2020-05-23 15:05:25 382 3

原创 mybatis框架详细总结

明天补上

2020-05-17 21:36:51 235 3

原创 java函数式编程的好处

函数式编程的好处Java引入了函数式编程,这表示Java从此不在是一个单纯的面向对象语言,现在他同时混合了函数式编程。这是巨大的改变,需要我们调整面对对象的编程习惯,以适应这些变化。但是为什么我们需要去适应这些改变?为什么我们需要花费时间精力上手函数式编程而不是直接用面对对象解决问题?函数式编程的引入,帮助我们减少业务逻辑和代码的分歧。他允许我们在更高层次更自然的描述业务逻辑。让代码直...

2020-05-05 11:28:59 3293 2

原创 java多线程编程

定义:线程是进程中单个顺序控制流,是一条执行路径单线程:一个进程如果只有一条执行路径,则称为单线程程序多线程:一个进程如果有多条执行路径,则称为多线程程序多线程的两种实现方式多线程的实现方案有两种:1、继承Thread类2、实现Runnable接口相比继承Thread类,实现Runnable接口的好处:避免了Java单继承局限性;适合多个相同程序的代码去处理同一...

2020-05-05 09:26:37 208 1

原创 IO流--字符流

为什么会出现字符流?由于字节流操作中文不是特别的方便,所以Java就提供字符流字符流=字节流+编码表用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文,如何识别中文的呢?汉字在存储的时候,无论选择哪种编码存储,第一个字节都是负数编码与解码 String s ="中国"; //编码 ...

2020-05-03 11:34:53 171 3

原创 IO流--字节流

IO:输入输出流:是一种抽象概念,是对数据传输的总称,也就是说数据在设备间的传输成为流,流的本质是数据传输。IO流就是用来处理设备间数据传输问题的常见的应用:文件复制,文件上传,文件下载IO流分类:按数据的流向:输入流(读数据)、输出流(写数据)按数据类型:字节流、字符流(一般来说,我们说IO流的分类是按照数据类型来分的。)那么这两种流都在什么情况下使用呢?如果数据...

2020-04-20 13:48:10 236 5

原创 Collection集合-(set集合)

Collection集合体系set集合特点不包含重复元素的集合(即使添加重复元素之后,最终也只能显示一个)没有带索引的方法,所以不能使用普通的for循环遍历HashSet:对集合的迭代顺序不作任何保证哈希值哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值(我们要知道哈希值不是对象的地址值,它是一个int类型的数值)object类中有一个方法...

2020-04-12 14:34:33 501 4

原创 Collection集合-(List集合)

Collection集合体系其中蓝色框为接口,红色框为具体实现类Collection集合概述和使用Collection是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素JDK不提供此接口的任何直接实现,它提供更具体的子接口(如list和set)实现创建Collection集合的对象:多态的方式、具体的实现类为ArrayList集合使用步骤:...

2020-01-20 19:58:25 330 10

原创 IDEA简介

什么是IDEA?IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,...

2020-01-20 11:54:16 22943 9

原创 高效人士的七个习惯

如何改变自己?随着年龄的增长,我们每个人也逐渐确立自己的目标和追求。当我们经历过一些事情后,自己的优缺点也就逐渐的显露出来。如同爱美之心每个人都希望自己变得更加优秀。最近我的有人问我,如何才能彻底改变自己,我想这并没有一个标准的答案,不过我觉得当你了解下面的内容之后,你离成功就不远了。人不成熟的五大特征1、付出努力立马想要得到回报 改变是一个长久的事,如同种...

2020-01-12 22:29:12 210 6

原创 时间管理--GTD

什么是GTD就是Getting Things Done的缩写,翻译过来就是"把事情做完",是一个管理时间的方法。GTD的核心理念概括就是必须记录下来要做的事,然后整理安排并使自己一一去执行。GTD的五个核心原则是:收集、整理、组织、回顾、执行。GTD的核心理念在于清空大脑,然后一步步按照设定的路线去努力执行。两分钟原则:任何事情如果花的时间少于两分钟,那么马上就去执行。两分钟是一个...

2019-12-01 16:36:33 738 11

原创 什么是AJAX

AJAX就是运用Javascript 在后台悄悄帮你去跟服务器要资料,最后再由Javascript 或DOM 来帮你呈现结果,因为所有动作都是由Javascript 代劳,所以省去了网页重载的麻烦,使用者也感受不到等待的痛苦。Ajax应用程序的核心就是XMLHttpRequest(它可以异步从服务器端获取txt或者xml数据)区别普通提交按钮:点击按钮向服务器发送POST请求,而...

2019-11-21 20:39:09 409 10

原创 关于session和cookie的关系

session的由来首先我们用浏览器打开一个网页用到的是HTTP协议,是无状态的(就是这一次的请求和上一次的请求是没有任何关系的)这时候,如果两个页面都要用到登陆状态的话,每次都去查数据库的话,就会使数据库有很大的压力。这时候cookie就诞生了,它是把少量的信息存储在用户自己的电脑上,它在一个域名下使一个全局的,只要设置它的存储路径在域名www.a.com下,那么当用户用浏览器访问...

2019-11-18 15:40:11 1305 8

原创 redis发布订阅模式

redis是一款内存高速缓存数据库,遵守BSD协议,是一个高性能的键值数据库。是当前最热门的Nosql数据库之一,也被人们成为数据结构服务器。redis是以内存作为数据存储介质,可想而知它的读写数据的速度要远远超过数据库。它与memcache不同的是,存储在redis中的数据是持久化的,断电或重启后,数据也不会丢失。因为Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,re...

2019-10-24 09:48:08 1311 9

原创 Transfer重定向

一、Server.Transfer与Response.Redirect的执行过程Response.Redirect:执行过程:浏览器ASP文件请求--服务器执行--遇到response.redirect语句--服务器发送response.redirect后面的地址给客户机端的浏览器--浏览器请求执行新的地址--服务器执行。也就是说,使用Response.Redirect方法时重定向操作发生...

2019-10-22 11:28:40 219 1

原创 指针和引用

以前对指针这一块的知识点总是停留在表面的理解,往深了思考就感觉什么都不懂,最近在学习C++的时候,也总是一头雾水,所以为了解决这些问题,查阅资料总结了一下。*和&的概念*:是解引用运算符,他的作用是将一个指针解引用,也就是获取指针所指向内存地址的内容&:是取地址运算符,它的作用刚好与解引用运算符相反,是获取一个变量的地址下面通过小例子来阐述他们的概念和他们之间的关系...

2019-09-24 15:56:30 120 7

空空如也

空空如也

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

TA关注的人

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