自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Lambda 表达式

什么是Lambda表达式?语法:(形式参数) -> {代码块}1、形式参数,如果有多个参数,参数之间用逗号隔开,没有参数就留空。2、->英文中画线和大于符合组成,固定语法,代表指向动作3、代码块,具体要做的事情,指的是方法体中的内容。 new Thread(new Runnable() { @Override public void run() { System.out.println("原生匿名内部类实现方式"); } }).start();

2021-08-01 13:41:30 165

原创 消息中间件-RocketMQ

1、MQ1、mq?所谓mq(message queue)是一种跨进程的通信机制,用于传递消息,就是一个先进先出的数据结构,俗称消息队列。2、mq的主要作用mq并不是凭空出来的,但凡一个技术的出现肯定是为了解决某些实际问题而产生的,同样的道理,mq也不例外。比如早期用户注册或者下订单发送短信、发送邮件业务,众所周知发送一条邮件是十分耗时的,如果并发情况下都在访问这个接口,那么会有大量的线程阻塞在此,很容易压垮这个服务,微服务中任何一个服务的不可用都有可能引发雪崩效应,所以说为了避免这种情况

2021-05-31 23:51:08 583 1

原创 SpringCloudAlibaba微服务一站式解决方案-09热点规则

一、热点规则热点参数流控是一种更为细粒度的流控规则,它允许将规则具体到参数上。热点规则简单使用1、新建Controllerpackage com.chenchen.controller;import com.alibaba.csp.sentinel.annotation.SentinelResource;import com.chenchen.entity.User;import com.chenchen.service.impl.OrderServiceImpl3;import lomb

2021-05-22 15:40:20 172

原创 SpringCloudAlibaba微服务一站式解决方案-08Sentinel之降级规则

一、Sentinel容错降级规则降级规则就是设置当满足什么条件的时候,对服务进行降级。Sentinel提供了三个降级的衡量条件1、平均响应时间: 当资源的平均响应时间超过阈值(以ms为单位),资源进入准降级状态,如果接下来1s内持续进入5个请求,他们的RT都持续超过这个阈值,那么接下来的时间窗口(以s为单位)之内,就会对这个方法进行服务降级。(Sentinel默认统计的RT上限是4900ms,超出此阈值的都会算作4900ms,若需要变更此上限可以通过启动配置项-Dcsp.sentinel.sta

2021-05-22 15:12:37 130

原创 SpringCloudAlibaba微服务一站式解决方案-07Sentinel之流控模式、流控效果

一、Sentinel规则1 、流控规则流控规则就是监控应用流量QPS(每秒查询率)或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保证应用的高可用性2、使用步骤点击簇点链路,看到访问过的接口地址,点击对应的流控按钮,进入流控规则配置页面。2.1 名称解释1、资源名:唯一名称,默认是请求路径,可以自定义,一般请求下保存默认即可2、针对来源:指定对那个微服务进行限流,默认default,不区分来源,全部限制。3、阈值类型/单机阈值* QPS(每秒请

2021-05-20 20:09:31 156

原创 SpringCloudAlibaba微服务一站式解决方案-06Sentinel

针对上述出现的问题,市面上有了 对应的解决方案。如Hystrix、Resilience4j、Sentinel。一、Sentinel1、什么是Sentinel? Sentinel(分布式系统的流量防卫兵)是阿里开源的一套服务容错的综合性解决方案,以流量为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。 特点: 1、应用场景丰富:消息削峰填谷、集群流量控制、实施熔断下游不可用服务、突发流量控制等 2、实时监控:通过控制台查看接入应用的单台机器秒级数据。 3、开源生

2021-05-19 19:37:07 98

原创 浅谈多线程

进程?线程?多任务?电脑中运行着很多软件程序,如QQ、微信、浏览器、酷狗音乐、优酷视频等等,每个软件其实就是一个进程。而线程则是进程中的一个分支。一个进程中至少包括一个线程。线程可以理解为提高程序运行的效率,或者各司其职,如QQ中既可以同时打字聊天也可以语音,再比如高速路有三个车道,车辆就可以同时跑,充分利用道路,大大提高了通行效率。...

2021-05-18 15:52:40 106

原创 SpringCloudAlibaba微服务一站式解决方案-05服务容错

一、服务容错1、高并发带来的问题现在我们有了订单微服务、商品微服务、用户微服务,服务与服务之间可以相互调用,但是由于网络或者自身原因,微服务不能保证100%都是可用,如果其中一个服务出现问题,那么调用它的服务就会出现网络延迟,此时如果有大量网络涌入,会形成任务堆积,最终导致服务瘫痪。如图所示,serviceB出现故障,此时serviceA中的a1()方法去调用b1()方法,得不到响应信息,一直调用,如果按照tomcat最大线程数400来说,那么service中a1()方法一直拿到400位置,如果

2021-05-17 21:33:28 161

原创 SpringCloudAlibaba微服务一站式解决方案-04FeignClients

//下单,使用rebbion组件实现负载均衡。 @RequestMapping("/createOrder/{pid}") public Order createOrder(@PathVariable Integer pid) { //使用微服务的名字,从注册中心Nacos中获取 String url = "service-product2021"; Product product = restTemplate.getForObjec

2021-05-16 15:51:01 229

原创 SpringCloudAlibaba微服务一站式解决方案-03负载均衡

上回说到了商品微服务可以从注册中心拿到商品微服务的信息,进行下单操作.请看下面的代码 //获取商品微服务集合和信息 List<ServiceInstance> instances = discoveryClient.getInstances("service-product2021"); //获取第一个实例 ServiceInstance serviceInstance = instances.get(0); //host ip

2021-05-13 22:48:43 226 1

原创 SpringCloudAlibaba微服务一站式解决方案-02服务治理

一、前面说到订单微服务和商品微服务都已正常跑通,但是不完整,会有问题。如 String url="http://localhost:8081/findProductById/"; Product product = restTemplate.getForObject(url+pid, Product.class);下订单产生的问题1、如果服务提供者(商品微服务)地址信息变化了,此时调用方(订单微服务)不得不去修改源代码。2、或者说服务提供者(商品微服务)做了集群,那么调用者(订单

2021-05-13 21:37:43 152

原创 SpringCloudAlibaba微服务一站式解决方案-01服务调用

一、SpringCloudAlibaba介绍1、SpringCloudAlibaba致力于提供微服务开发的一站式解决方案,此项目包含分布式应用微服务的必须组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务。开发者只需要添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件迅速搭建分布式应用系统。2、主要功能1、==服务限流降级==:默认支持WebServlet、WebFlux、OpenFeign、RestTemplate、

2021-05-13 21:36:56 251

原创 370万条数据查询优化问题

3707307条数据优化背景:单表数据目前370万,主要就是存储的IPV4,如 ip_begin(int)、ip_end(int)、经度(longitude)、纬度(latitude)、city_code(城市编码)等,将ip使用int存储是因为占用的数据量小,在4个字节,如果选用字符串增大了表中存储数据压力,另外大数量使用字符串性能相当低效。需求:接收前端传递过来的一个ip(字符串类型),根据这个ip查询在ip_begin与ip_end 范围内的数据,其实也就是一条数据而已,开始觉得这个需求很简单,一

2021-05-12 10:50:04 90

原创 SpringCloudAlibaba微服务一站式解决方案-00微服务起源

所谓微服务泛指由原来的大型系统,拆分成一个个独立的小系统,而且独立部署、独立运行,而我们所要关注的是 服务是如何注册的,服务与服务之间如何调用的,服务之间的事务如何处理的,面对并发访问时如何限流、熔断的,以及如何负载均衡的,微服务时代1、系统架构演变:从互联网兴起到目前为止,系统架构大致经历了几个过程:单体应用>垂直应用>分布式架构>SOA架构>到了目前很火的微服务。1.1 单体应用架构 优点:1、架构简单。 2、相对于小型项目,开发简单、易于维护 3、服务部署在一

2021-05-12 10:48:01 152 1

原创 java虚拟机

1、JVM初识jvm本身和其他程序一样,本身就是一段程序,运行在操作系统上。只不过是自己写的代码运行在虚拟机上而已。2、JVM的体系结构3、类加载机制由.java 编译为 java.class文件,经过ClassLoader类加载器加载,完成初始化,生成Class对象,然后实例化对象。public class Test { public static void main(String[] args) { //类是模板,对象是具体的 Test test = new

2021-04-05 17:36:38 136 1

原创 解决坑----Unsupported major.minor version 51.0

新接手一个项目有点老旧,需求是将Membercache切换成Redis,切完之后然后就是打包,部署到服务器呗。然后就出现了这个问题:Unsupported major.minor version 51.0,大致意思说当前运行jdk版本低,不支持高版本编译过的项目。java-version 查看服务器版本,jdk还蛮高的1.6!!!,编辑器中jdk是1.8。那么接下来好办了,切换jdk吧。1、File>Setting2 、File>Project Structure>Project(此

2021-03-26 09:09:35 18363

原创 浅谈Redis

在早期的架构中,用户请求都是直接操纵数据库,如果请求的数据量不是很大,这是没有问题的,但是如果数据量上来了,即使表中添加了索引,那么并发访问对数据库的压力依然很大,很可能直接拖垮数据库。在此场景下产生了高性能的非关系型数据库 如:redis 、也称远程字典服务。传统的数据库表与表之间都有一定的关系,大部分情况下都是通过表关联查询,而redis则不同,它仅仅是通过键值对存储,没有所谓表的概念。1、什么是Redis官方回答:Redis是开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代

2021-03-23 20:47:44 523

原创 反射

反射:将类的各个组成部分封装为其他对象,这就是反射,或者说当加载完类之后,在堆内存的方法区就产生 一个Class类型的对象,(一个类只有一个Class对象),这个对象就包含了完整类型的结构信息,我们可以通过这个对象看到类的结构,这个对象就像一面镜子,通过镜子看到类的结构。优点:1、可以在程序运行过程中,操作这些对象2、可以解耦,提高程序的可扩展性。类在程序中的三个阶段:获取Class对象的方式: /**多用于配置文件,将类名定义在配置文件中,读取文件,加载类**/1、class.for

2021-03-02 19:54:59 398 2

原创 代理模式

代理模式的由来: 为什么会出现代理模式呢?其实这个和我们的生活息息相关,比如早期的时候我们买电视或者电脑都可以去厂家哪儿购买,因为厂家需要在各个地方租赁店铺,还要招聘销售人员,另外还要有库房等等,人员成本消耗太大还不划算,此时就有商人发现了这样的一个商机,我可以去厂家拿货,每卖一台我就收取个差价,这样以后大家就不能从厂家那儿购买电器,只能从中间商哪儿购买,比如现在的苏宁、国美都是这样的套路,自己虽然不生产东西,但是我拥有这个地区的代理销售权,类似的还有我们的房屋中介,现在我们很难从房东那儿租到房子,只能从中

2021-02-28 15:58:11 94 2

原创 mySql知识点梳理

数值int 整数型 4个字节float 浮点数 4个字节double 浮点数 4个字节(四舍五入 存在精度丢失问题)decimal 字符串形式的浮点数 ,涉及到精密计算就使用该类型(对应java中的BigDecimal)字符串char 字符型 0~255varcher 可变字符串 0~65535text 大文本 2^16-1时间类型datetim

2021-02-17 16:51:29 77 1

原创 java中对象创建

java中使用一个类的时候,我们往往习惯使用new关键字生成它的实例,但是new关键字背后到底做了哪些事情?为什么new 之后就可以使用,对象的属性就会有值... 下面简单聊下创建过程,不足之处 还希望留言指正。下面我们创建一个User类,给User类添加几个属性 name age phonepackage com.chenchen.entity;import java.io.Serializable;public class User implements Serializable {

2021-02-06 18:10:48 108

原创 Filter过滤器

Filter的概念伴随着 servlet出现而提出的,在早期servlet中,客户端请求到服务器时,很多时候会遇到用户输入的中文参数、以及响应给客户端中文数据,在或者需要处理用户登录验证等…。如果每个servlet都处理一遍,不仅仅是工作量大,代码严重冗余,其次有些资源是不需要过滤的,比如初始化加载的静态资源,直接放行就好了,那么有没有这样的一个组件,在客户端和服务器端之间做这个事情,答案是显而易见的,借用B站狂神说一句话:没有什么是中间加一层,解决不了问题的,在这样的一个场景下Filter的概念就出来了。

2021-02-04 21:13:44 133

原创 springboot 实现定时发送邮件任务

功能实现需要两个知识点:1 定时任务 2 邮件服务先说SringBoot定时任务:SpringBoot自带定时任务处理,开箱即用 方便快捷以及灵活配置等特点。实现需要两个注解,@EnableScheduling //表示开启定时任务注解支持@Scheduled //自带cron表达式,方便用户自定义。示例如下:/** * @ClassName ApplicationTest * @Description TODO * @Author 86150 * @Date 2021/1/20 21:0

2021-01-30 15:49:17 1269

原创 关于导入导出

↵首次接触导入导出使用的的Apache下的POI技术,需要自己手动去创建excel,然后创建sheel,再去创建每行,为每行添加数据(Cell),另外手动去调整它的行高 宽度.....,一个方法下来,相当的冗余。如果有改动相当痛苦。后来在项目中 看到有更加简便的方法,特此记录下。 1 文件导出@AutoLog(value = "测试--导出excel")@PostMapping(value = "/test")public ModelAndView exportXls(HttpServl...

2020-09-16 09:52:10 665

原创  记录一次Spring源码导入idea项目中的坑

记录一次Spring源码导入idea项目中的坑导入之前自己也是参考了很多文档,可能每个人导入方式不一样或者说编辑器不同,导致出现的问题也都是五花八门。我目前导入成功的Spring版本5.0,Gradle 版本4.10.2 JDK版本12(刚开始使用的1.8版本,结果一直报jdk.jfr这个jar包不存在,实际上确实是这样,官方文档这个包是在11 开始支持的),IDEA 版本是202...

2020-08-28 16:26:51 890 9

原创 SpringBoot+自定义注解+AOP实现角色编码控制

接到一个需求,某些特定的方法需要指定的用户角色,刚开始想的比较简单,直接在方法中添加几行代码就完事了,后来发现好多方法都有这个功能点,工作量偏大。子曰:多个地方实现同一个功能时,务必封装工具类实现。再然后发现即使封装了工具类,还是会在每个方法中依次调用,不够优雅。故引出了自定义一个注解,只要在方法上添加就可以。注解的定义比较简单,在这儿我只是给了一个字符串,如果大家角色需求是个 数组的话,同样可以定义成数组的。1 定义注解/** *角色编码权限 *使用时 直接在方法上添加该注解,并且添加角

2020-08-27 14:14:08 507

原创 简述Java之IO流

IO流是Java中很重要的一块知识,但凡项目中十有八九会用到这块,比如上传、下载,或者导入导出也是基于流操作资源。Java中流 一共分为两个大类,一字符流Reader,二 字节流OutputStream。字符流:顾名思义就是操作存文本数据。字节流:可操作音频、视频、图片以及其他多媒体资源。能有字符流操作的数据,都可以使用字节流,反过来就不行,因为会乱码。字符流又分为字符输入流FileReader、字符输出流FileWriter字符流有read()重载方法,可以读取一个字符,也可以读取一个

2020-05-17 18:19:56 167

原创 java中选择排序算法

这里写自定义目录标题java中选择排序算法java中选择排序算法以一个int数组为例int[] arr = {12, 32, 5, 88, 99, 45};选择排序说白了就是拿当前数组中的第一个元素和其他元素比较,小的往前排,大的往后排,第一轮比较之后,拿第二个和剩下的其他元素比较,以此类推。使用两个for循环就可以实现,外循环控制比较几轮,内循环控制比较的次数,外循环中剩下一个元素时...

2020-05-06 13:50:53 188

空空如也

空空如也

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

TA关注的人

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