自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Springboot 循环依赖

springboot 循环依赖 @Aysnc注解

2022-06-10 16:19:09 16462

原创 Redis缓存雪崩 击穿 穿透 保证redis中的热点数据

雪崩1.含义 同一时刻,大量的缓存同时过期失效。2.产生原因和后果(1).原因:由于开发人员经验不足或失误,大量热点缓存设置了统一的过期时间。(2).产生后果:恰逢秒杀高峰,缓存过期,瞬间海量的QPS(每秒查询次数)直接打到DB上,如果系统架构没有熔断机制,直接将导致系统全线崩溃。3.处理方案(1).设置不同的缓存失效时间,比如可以在缓存过期时间后面加个随机数,这样就避免同一时刻缓存大量过期失效。setRedis(key,value,time + Math....

2021-12-02 10:14:30 431

原创 Redis 哨兵模式

网上有关redis哨兵模式的介绍、安装部署很多也很完善,本文主要记录自己在安装使用redis哨兵模式中的一些问题过程的记录(比较简单的配置使用,详情的配置使用另行百度)。本文介绍基于windows系统。Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。sentinel是redis高可用的解决方案,sentinel系统可以监视一个或者多个redis m...

2021-11-30 16:10:26 1049

转载 xxl-job任务触发流程

xxl-job老版本是依赖quartz的定时任务触发,在v2.1.0版本开始 移除quartz依赖:一方面是为了精简系统降低冗余依赖,另一方面是为了提供系统的可控度与稳定性。(本文 相应代码版本2.2.0-SNAPSHOT)以下是本文的目录大纲:一.任务触发执行总体流程  二.任务定时触发流程  三.关于这么设计的感悟请尊重作者劳动成果,转载请标明原文链接:xxl-job任务定时触发流程 - 王小森# - 博客园一 任务触发执行总体流程先来看下任务触发和执行的完整的...

2021-11-26 11:56:15 2929

转载 static 使用

静态什么时候用 1,成员变量是否被static修饰 该成员变量的值是否每一个对象相同,是,用static修饰 不是,不用static修饰,让这些存储到每个对象中。 2,成员函数是否需要被静态修饰呢? 当函数中访问到了对象的特有属性是,该函数不能被静态修饰 如果该函数中没有访问到对象的特有属性,就可以被静态修饰。 简单说:如果函数中访问了成员变量(实例变量),不能静态,否则就可以静态化。 直接被类名调用即可 如果一个...

2021-11-22 16:11:45 193

转载 static变量 类实例变量 局部变量的 线程安全问题

线程,是我们项目中绕不过的重点领域。提到线程,就常会听到线程安全的术语。那什么是线程安全呢?通俗点说,就是线程访问时不产生资源冲突。其实,这是一个有点难以定义的概念,不是很容易让人一听就懂的概念。“一个类可以被多个线程安全调用就是线程安全的”《Java编程并发实践》。来说说静态变量、实例变量、局部变量在多线程下的安全问题吧!(一)静态变量:线程非安全 1、静态变量:使用static关键字定义的变量。static可以修饰变量和方法,也有static静态代码块。被stati...

2021-11-22 15:58:06 2636

转载 JVM 简析

1,什么是JVM?JVM 是 java虚拟机,是用来执行java字节码(二进制的形式)的虚拟计算机。 jvm是运行在操作系统之上的,与硬件没有任何关系。 注:字节码是Java虚拟机的机器语言。是独立于平台的,由运行在windows中的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码(二进制)是特定于平台的,如果它是在Windows x86中编译的,它将仅在Windows x86中运行。2,JVM的分类类加载子系统。...

2021-11-22 15:26:35 158

原创 Mysql 性能优化部分总结

1、选择最合适的字段属性Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的查询也就越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度舍得尽可能小。例如:在定义邮政编码这个字段时,如果将其设置为char(255),显然给数据库增加了不必要的空间,甚至使用varchar这种类型也是多余的,因为char(6)就可以很好地完成了任务。同样的如果可以的话,我们应该是用MEDIUMINT而不是BIGINT来定义整形字段2、..

2021-11-15 10:50:44 863

原创 springboot jenkins docker Dockerfile 打包发布项目

利用docker 发布镜像,运行项目有两种方式:1、通过dockerfile,手动编写docker命令 项目代码无侵入式 创建、运行镜像2、通过插件(maven插件、idea插件)自动打包发布、运行镜像本文详细介绍第一种使用方式,本文仅供学习,生产环境的使用还需要完善优化。至于第二中 需要在pom.xml文件中加入docker的plugin的配置项目环境 springboot + springcloudAlibaba + nacos maven jenkins docker1、在..

2021-10-22 11:10:28 501

原创 jenkins发布项目

一、从git上拉取代码,打包发布1、springboot 项目 maven配置如下: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artif

2021-10-09 16:28:20 832

原创 rocketmq 双主双从(2服务器)

一、rocketmq几种配置模式对比1.单个Master这种方式风险较大,一旦Broker 重启或者宕机时,会导致整个服务不可用,不建议线上环境使用。2.多Master 模式一个集群无Slave,全是Master,例如2 个Master 或者3 个Master优点:配置简单,单个Master 宕机或重启维护对应用无影响,在磁盘配置为RAID10 时,即使机器宕机不可恢复情况下,由与RAID10 磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢...

2020-11-10 18:21:48 939

原创 vue 打包 tomcat下启动运行

一、简介说明本文的背景是基于iview_admin2.0, 配置文件package.json如下进行的vue打包,即打包后在tomcat下运行的说明。npm run dev 运行开发测试环境npm run build 打包正式环境二、打包、运行1、修改配置文件src/config/index.js如下其中baseUrl中的pro即为正式环境运行...

2019-05-11 17:40:02 2828 1

转载 使用newCachedThreadPool创建线程池——造成OOM(内存溢出)

一、Java通过Executors提供四种线程池,分别为:1、newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。2、newFixedThreadPool:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。3、newScheduledThreadPool:创建一个定长线程池,支持定时及周...

2019-05-10 16:36:19 9238

原创 idea 搭建多模块 spring boot项目框架—1:创建项目

本文只是一种创建方式,但不局限此种方式,且此种方式也可能是比较复杂的方式,只要能达到目的即可。注:前面几张的创建过程图片是借鉴别人的,在此谢谢原作者。先展示LZ创建的项目效果1.创建一个Maven项目注:1、删除src 等不需要的文件 2、在pom文件中添加 &lt;packaging&gt;pom&lt;/pac...

2019-03-06 22:10:28 351

原创 Centos7 mysql5.5.6 安装步骤

网上有很多介绍centos下安装mysql的方法,但是由于centos、mysql的版本不同,安装方法略有不同,导致LZ安装遇到了很多坑,在此记录。一、准备安装由于CentOS7自带的是Mariadb, 所以先来删除他吧...1. 查找版本 # rpm -qa|grep mariadb执行命令后会出现类似 MariaDB-server-5.5.49-1...

2019-03-01 18:32:56 867

转载 EOS的理解

 前言什么是EOS,如果你还没有开始投资数字货币,可能你根本不知道EOS是什么,那么就首先从比特币开始说起。从上一篇中我们可以知道比特币就一个功能,就是转账,让比特币这种数字货币在各个比特币节点之间转移,底层的区块链技术保证了整个比特币网络的去中心化等特性。后来人们发现比特币网络太简单了,区块链技术本身的特点可以有更广阔的应用,比如彩票业使用区块链技术,不可篡改的特性可以防止内部人员的...

2018-08-30 16:02:25 610

转载 const var let

js中const,var,let区别今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章。主要内容是:js中三种定义变量的方式const, var, let的区别。1.const定义的变量不可以修改,而且必须初始化。1 const b = 2;//正确2 // const b;//错误,必须初始化 3 console.log('函数外const定义b:' + b);//有输出值4...

2018-04-27 14:34:03 231

转载 vue项目实现按需加载

1. vue异步组件技术vue-router配置路由,使用vue的异步组件技术,可以实现按需加载。但是,这种情况下一个组件生成一个js文件。举例如下: { path: '/promisedemo', name: 'PromiseDemo', component: resolve =&gt; require(['....

2018-04-25 10:06:08 1170

原创 ES6 rxjs Observable

一、拉取(Pull)  、 推送(Push)介绍 Observable 之前,要先了解两个设计模式:Observer Pattern - (观察者模式)Iterator Pattern - (迭代器模式)这两个模式是 Observable 的基础。Observable(可观察对象)是基于推送(Push)运行时执行(lazy)的多值集合。下方表格对Observable进行了定位(为解决基于推送的多...

2018-04-12 11:29:04 1916

原创 Axios

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。具体使用方法可参看官方文档(介绍相当详细)功能特性从浏览器中创建 XMLHttpRequests从 node.js 创建 http 请求支持 Promise API拦截请求和响应转换请求数据和响应数据取消请求自动转换 JSON 数据客户端支持防御 XSRF与ajax区别axios是通过promise实现...

2018-04-11 17:17:40 2858

原创 es6 Promise

一、Promise产生想必接触过Node的人都知道,Node是以异步(Async)回调著称的,其异步性提高了程序的执行效率,但同时也减少了程序的可读性。如果我们有几个异步操作,并且后一个操作需要前一个操作返回的数据才能执行,这样按照Node的一般执行规律,要实现有序的异步操作,通常是一层加一层嵌套下去。为了解决这个问题,ES6提出了Promise的实现。二、Promise 用法讲解Promise是...

2018-04-11 16:54:59 167

原创 idea vue高亮(使vue组件代码提示)

原理就是用.html的方式打开.vue文件。这个idea的打开方式跟eclipse不同(这点比较恶心)希望对大家有所帮助。cltr+alt+s 设置界面,打开方式修改 

2018-03-28 14:57:22 10416 4

转载 多线程(线程池ThreadPoolExecutor)

线程池的意义    多线程开发中,由于线程数量多,并且每个线程执行一段时间就结束,所以要频繁的创建线程,但是这样频繁的创建线程会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。在这种情况下,人们就想要一种可以线程执行完后不用销毁,同时该线程还可以去执行其他任务,在这样的情况下线程池就出现了。     线程池就是线程的池子,任务提交到线程池后,就从线程池中取出一个空闲的线程为之服务,服务完后...

2018-03-26 17:30:58 289

原创 设计模式一:生产者消费者模式(及LinkedBlockingQueue的介绍使用)

  在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。一、为什么要使用生产者和消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那...

2018-03-26 16:44:22 513

原创 Spring 在多线程中,bean的注入问题

一、问题:在线程中使用注解注入失败(@Resource或者@Autowired注入全部为NULL),原因就是spring和多线程安全的问题,不让注入。二、主要解决方法有:方法一:将需要的Bean作为线程的的构造函数的参数传入方法二:使用ApplicationContext.getBean方法来静态的获取Bean方法三:使用内部类的方法,在内部类中创建线程,然后就可以使用需要的Bean线程中所需要的...

2018-03-23 17:05:49 3140 1

原创 tomcat+nginx 分布式集群 redis实现session共享

一、理解session、cookie首先要明确session和cookie的区别。浏览器端 存的是cookie每次浏览器发请求到服务端是http 报文头是会自动加上你的cookie信息的。服务端拿着用户的cookie作为key去存储里找对应的value(session).同一域名下的网站的cookie都是一样的。所以无论几台服务器,无路请求分配到哪一台服务器上同一用户的cookie是不变的。也就是...

2018-03-15 16:25:31 727 1

转载 Nginx+Tomcat搭建高性能负载均衡集群

一、    目标实现高性能负载均衡的Tomcat集群:  二、    步骤1、首先下载Nginx,要下载稳定版:   2、然后解压两个Tomcat,分别命名为apache-tomcat-6.0.33-1和apache-tomcat-6.0.33-2: 3、然后修改这两个Tomcat的启动端口,分别为18080和28080,下面以修改第一台Tomcat为例,打开Tomcat的conf目录下的serv...

2018-03-15 10:02:10 270 1

转载 Nginx+Tomcat实现动静分离

      为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。用户请求的动态文件比如servlet,jsp则转发给Tomcat服务器处理,这就是动静分离。这也是反向代理服务器的一个重要的作用。     本文的...

2018-03-15 09:55:54 2054 1

原创 TCP/IP UDP HTTP

一、IP TCP HTTPTPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、...

2018-03-14 16:30:41 376

原创 java编译时与运行时

1、java编译执行代码程序过程java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程。      首先两张图,描述编译和执行的过程:Java代码编译是由Java源码编译器来完成,流程图如下所示:Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:     Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode)  ...

2018-03-14 16:16:44 564

原创 Eclipse/myEclipse项目迁移到idea上注意点

1、 Artifact xxx:war exploded: Server is not connected.Deploy is not available.原因:Idea使用tomcat部署工程时,启动出现:Serveris not connected. Deploy is not available异常,未加载到工程。原因:catalina.bat设置了内存配置 set JAVA_OPTS=-s...

2018-03-07 16:36:57 1475

原创 Mysql 优化总结

对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。一般来说,要保证数据库的效率,要做好以下四个方面的工作:数据库设计、sql语句优化、数据库参数配置、恰当的硬件资源和操作系统,这个顺序也表现了这四个工作对性能影响的大小。下面我们逐个阐明:一、数据库设计  适度的反范式,注意是适度的  我们都知道三范式,基于三范式建立的模型是最有效保存数 据的方式

2018-02-02 16:30:23 275

原创 java 动态代理

java动态代理(JDK和cglib)JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理...

2018-02-02 16:27:57 212

原创 正向代理与反向代理的区别【Nginx】

正向代理与反向代理的区别【Nginx】  正向代理的概念正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容代理服务器去取回来,然后返回给我从网站的角度,只在代理服务器来取内容的时候有一次记录有时候并不知道是用户的请求,也隐...

2018-02-02 16:26:51 354

原创 .net动态调用webservice的三种方式

动态调用webservice的三种方式  多数时候我们通过 "添加 Web 引用..." 创建客户端代理类的方式调用WebService,但在某些情况下我们可能需要在程序运行期间动态调用一个未知的服务。在 .NET Framework 的 System.Web.Services.Description 命名空间中有我们需要的东西。具体步骤:1. 从目标 URL 下载 W

2018-02-02 16:17:54 11852

原创 .net MVC的理解

.net MVC的理解 一、ASP.Net的两种开发模式1.1 ASP.Net WebForm的开发模式(1)处理流程在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/blog/index.aspx的URL,那么我们的WebForm程序会到网站根目录下去寻找blog目录下的index.aspx文件,然后由index.

2018-02-02 16:14:41 802

转载 Maven SSH

一、新建maven项目  选中maven-aechetype-webappgroup Id一般为公司域 ;Artifact Id相当于项目名称 ;version不需要更改;Package不使用默认,手动清空Finish项目结构如图 报错是因为没有加入servlet API 暂时不用管。二、配置pom.xml 1    properties>

2017-11-30 11:05:37 249

原创 Sql Server STUFF与FOR XML PATH

要求按type分组查询后,把相同type的,name列值合并,达到如下效果:解析如下:一、FOR xml path     FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主.假设有张查询表如下sql 一:select t

2017-05-10 16:20:56 1668

原创 StringBuffer StringBuilder

1、基本原则:如果要操作少量的数据,用String ;单线程操作大量数据,用StringBuilder (线程不安全);多线程操作大量数据,用StringBuffer(线程安全)。2、不要使用String类的"+"来进行频繁的拼接,因为那样的性能极差的,应该使用StringBuffer或StringBuilder类,这在Java的优化上是一条比较重要的原则。3、为了获得

2017-05-10 11:21:36 331

原创 Java Project项目打成可运行的jar包

1、java项目没有导入第三方jar包的情况这时候打包就比较简单: ①首先在MyEclipse中打开项目, 右键点击项目,选择“Export”; ②选择Java/JAR file,Next; ③Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间; 这里有几个选项:   

2017-05-10 11:04:35 454

空空如也

空空如也

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

TA关注的人

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