java
李斯大炮
这个作者很懒,什么都没留下…
展开
-
负载均衡策略问题导致服务宕机(记一次生产问题)
tags : 避坑指南一.问题2019年12月4日上午11点左右收到线上报警,核心服务CPU使用率达到了3000%,看了下进程的线程信息都是active。因为使用的容器是weblogic,所以在console平台查看线程相关信息。信息整理如下:活动线程43个,队列的长度已经到了23个数据库连接为不可用连接数为5,活动连接数为5,可用连接数为15线程池 线程空闲指标大部分都是fals...原创 2019-12-22 23:32:40 · 1000 阅读 · 0 评论 -
接口的幂等性设计
1.概念幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是...原创 2019-11-19 19:50:33 · 356 阅读 · 0 评论 -
SpringCloud学习五-GateWay网关
1.GateWay是什么?GateWay 是SpringCloud 生态系统中的网关,目标是替代Zuul,同样提供了限流,监控,路由转发、权限校验等功能。相关名词:Route(路由):这是网关的基本构建块。它由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配。Predicate(断言):这是一个 Java 8 的 Predicate。输入类型是一个 Ser...原创 2019-10-10 23:53:59 · 275 阅读 · 0 评论 -
SpringCloud学习四-服务消费者
前面讲了服务的注册和发现,在微服务架构中,业务会被拆分成一个个的微服务,服务与服务又是如何通讯的?SpringCloud中的通信协议是基于HTTP restful的,其中有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。ribbonribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。1.依赖 &l...原创 2019-10-09 23:17:13 · 110 阅读 · 0 评论 -
SpringCloud学习三-zuul网关搭建
由于最后技术选型使用的是GateWay,所以zuul只是搭建的基本功能。基本配置1.依赖 <properties> <java.version>1.8</java.version> <spring-cloud.version>Dalston.SR1</spring-cloud.version> ...原创 2019-10-08 23:34:38 · 110 阅读 · 0 评论 -
SpringCloud学习二-网关技术选型
什么是网关?Eureka用于服务的注册和发现,在发现服务后外部的客户端请求如何访问到服务呢?在微服务中,后端服务一般不会直接对外开放,而是通过一个API网关根据请求的url路由到对应的服务中去。就像家里的路由器一样在服务和客户端之间作为中转,来保护内部的服务,也可以将请求进行负载均衡。网关的基本功能如下:技术选型网关相当于微服务世界的大门,可以说是微服务中的核心组件,那么网关的选择又有哪...原创 2019-10-08 23:33:32 · 1498 阅读 · 0 评论 -
SpringCloud 学习笔记(资源整合)
一、微服务单体架构:——优点:1、易于开发:开发的方式简单,方便运行也容易调试。2、易于测试。3、易于部署。——缺点:1、项目过于臃肿,维护成本大,出现bug难定位。2、资源无法隔离:共享一个数据库,或者一块内存。如果一个功能模块突然访问量过大,可能影响整个系统的性能。3、无法灵活扩展:单体系统也可以集群部署,但是不够灵活,我明明只是订单系统遇到了瓶颈,只需要将订单模块水平...原创 2019-10-08 23:28:36 · 154 阅读 · 0 评论 -
SpringMVC学习一
一、是什么?MVC是一种设计思想既模型(Model)、视图(View)和控制器(Controller)使用这种分层的形式对其进行职能的划分。而springMVC就是使用这种设计理念来快捷开发的web端框架。二、技术对比说到Java的web开发就不得不提Struts2(没办法谁让我一开始学的就是这个),Struts2也是控制层的框架那么springMVC与它的差别在哪呢?1.首先Strut...原创 2019-08-18 22:46:53 · 109 阅读 · 0 评论 -
HashMap多线程环境下死循环问题(记一次生产问题)
HashMap多线程环境下死循环问题(记一次生产问题)tags : 避坑指南一.问题今天在工作的时候项目组的同事说他们系统生产环境有线程stuck了,我抱着学习生产问题定位的心态凑合过去。了解到出现此问题时,操作员有多人使用同一帐号在系统中进行操作,且此种情况之前因为大批量的人员登录系统出现过。在拿到了报错日志时,在其中一段日志细节中突然发现了些许端倪。下面连接防止图片连接失效备份图库...原创 2019-08-02 14:49:44 · 511 阅读 · 0 评论 -
Spring-事务管理
什么是事务Spring事务控制的目的是为了达到控制一组操作,要么都执行要么都不执行的一种操作。ACID四大特性:原子性 :最小执行单位,不可分割,要么都完成要么无效。一致性 :保证数据库数据整体完整性,事务成功则整体数据修改,事务失败则数据回滚到之前的状态。隔离性 :各事务之间是独立的,多个事务操作同一对象时,会串行等待方式执行,保证事务之间互不干扰。持久性 :事务提交后数据会保存到...原创 2019-08-05 22:20:33 · 135 阅读 · 0 评论 -
Spring学习九-AOP
AOP概念1.什么是AOP?AOP:全称是 Aspect Oriented Programming 即:面向切面编程。简单来说AOP就是在程序中将重复的代码提取出来,在需要的时候,通过预编译方式运行时动态代理实现在不修改源代码的情况下,对已有的方法进行增强。2.Spring AOP代理机制1.若目标对象实现了若干接口,spring使用JDK的java.lang.reflect.Proxy类...原创 2019-06-30 00:02:55 · 131 阅读 · 0 评论 -
String 知必会
String 对象实现方式在众多版本中,String对象做了大量优化,下图是版本推进的演化过程:1.在Java1.6之前的版本中,String对象是对char数组进行了封装实现的对象。2.而从Java1.7到1.8版本,Java对String类做了一些改变。String类不在有offset和count两个变量。3.从Java1.9开始,则将char[]字段改为了byte[]字段,又维护了...原创 2019-07-10 00:24:50 · 97 阅读 · 0 评论 -
Spring学习八-之动态代理
一、问题来源在进行软件设计的时候往往会将一个大的系统按照业务模块拆分成一个个的低耦合、高内聚的模块,分而治之。如图:拆分后发现一些问题,这些问题是通用的,跨模块的。比如:1.日志:对执行某些操作分支判断时输出日志。2.安全:在执行某些操作前进行权限检查。3.事务:在方法开始前开始事务,方法结束时提交或者回滚事务。4.性能统计:统计某些方法的执行时间。以上这些属于非功能型需求,是多...原创 2019-06-23 22:48:22 · 116 阅读 · 0 评论 -
Spring学习三-ApplicationContext
Spring中的Resource接口在Spring内部实现机制,针对于资源文件(配置的xml文件)有一个统一的接口Resource。Resource具体实现类:ClassPathResource:类路径下的资源,位置在classes路径下FileSystemResource:文件系统资源,资源以文件系统路径的方式表示,如:D:/File/conf.xml;InputStreamReso...转载 2019-06-05 00:20:35 · 125 阅读 · 0 评论 -
Spirng学习五-依赖注入的几种方式
在学习的第一天就跟着demo练习了一番spring依赖注入的具体操作,在接下来的几天对于为什么要这么做有了一定的认识,今天对于依赖注入的具体方式来进行一下细分。一、构造函数注入通过构造函数来进行依赖关系的设定,默认是使用的无参构造,如果重写了构造函数改成带参数的而没有无参构造,直接使用如下注入会失败。 String name; Integer price; Date ...原创 2019-06-10 22:56:49 · 148 阅读 · 0 评论 -
Spirng学习四-SpringBean的作用域
Bean注入的三种方式1:使用默认的构造函数在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时采用的就是默认的构造函数常见bean对象,此时如果没有默认构造函数则对象无法创建。<bean name="car" class="impl.Car"/> 2.使用普通工厂的方法创建对象(使用某个类中的方法创建对象,交给spring管理)...原创 2019-06-09 00:13:23 · 157 阅读 · 0 评论 -
volatile详解(一)
因为看了多个博主写的单例模式的博文仿照了一个双重校验锁的单例方法导致系统出现问题特此针对volatile进行整理总结。一、基本概念Java 内存模型的三种特性 可见性、原子性和有序性。这三种特性主要体现在多线程环境下对变量的操作,这些变量包括:实例字段、静态字段、构成数组对象的元素。这些变量都保存在堆中,堆是线程共享的。那么这些变量在多线程环境下就有可能出现所谓“线程不安全”的问题。 局部...转载 2018-06-17 00:19:04 · 129 阅读 · 0 评论 -
Servlet 实现文件的下载
编写一个用于处理文件下载的Servlet base = request.getContextPath(); String fileName = request.getParameter("CFileAddress"); fileName = new String(fileName.getBytes("iso8859-1"),"UTF-8"); FileInputStream in=n...原创 2018-07-02 23:26:05 · 115 阅读 · 0 评论