自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(347)
  • 资源 (7)
  • 收藏
  • 关注

原创 Spring Cloud项目开发中遇到的问题

Spring Cloud微服务1、某个微服务是供内部调用还是前端调用?如果是内部调用,直接引用jar即可;如果是前端调用,需要通过api-ws进行访问。(doctor服务,hospital服务)上游服务和下游服务之分,只有上游服务才能暴露给前端。微服务层级之分。接口单一职责原则:在api-ws这一层合并接口, 把所有的数据都封装到一个接口里面。2、Nginx与Eureka Serv...

2020-04-01 15:59:04 685

原创 Jedis的使用

redis的使用:1)redis相比mysql,速度比较快,用户体验好。2)不经常变化的数据,可以使用redis存储,比如公司介绍等。3)在mysql中操作后,存储到数据库中;下次在获取数据的时候,先从redis中查询,如果有就直接获取,如果没有在查询数据库。4)过期时间设置:过期后,就会删除此条数据;然后数据只能从mysql中查询。redis配置文件:redis.con...

2017-11-30 15:06:45 33963 1

原创 es常见操作

es常用api

2022-09-28 13:56:36 514 1

原创 apollo配置中心

apollo

2022-08-30 16:06:54 13921

原创 zookeeper集群

zookeeper集群

2022-08-30 15:19:52 1024

原创 oracle面试题

oracle常见面试题

2022-08-30 13:07:09 454

原创 20211117 项目原型的制作与使用

GroupId和ArtifactId1、groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。(项目的唯一性,maven管理项目包时,artifactId一般是项目名或者模块名,groupId点分命名法,artifactId中画线命名法)2、groupId和artifactId是maven管理项目包时用作区分的字段,就像是地图上的坐标。3、artifactId:artifactId

2021-11-17 19:19:20 895

原创 20210616 日千万级流量架构优化策略

千万级流量架构策略了解现状:架构,业务特点;应急方案:改造时间短,可以短期支撑住访问压力。隔离热点,单独部署。就算热点挂了,也不影响其他功能。峰值QPS=(日总PV数*80%)/(日总秒数*20%) 这只是理论值pv*0.8/17280 pv/21600 每秒的峰值每天千万级流量1000万/21600=463QPS/s如果每台机器100QPS463/100 = 5台机器。我的单机可以支撑日千万级流量访问,但是 当前服务100QPS/S...

2021-06-16 21:06:40 517

原创 20210610 线程数不断飙升问题定位

1)现象通过监控发现,2)分析3)解决

2021-06-10 20:49:57 1356 1

原创 20210609 redis中info命令使用

info命令使用总结一,info Server包含了Redis服务本身的一些信息,例如版本号、运行模式、操作系统的版本、TCP端口等。

2021-06-09 16:55:49 2016

原创 20210608 由永久代到元空间

永久代(perm)永久代是Hotspot虚拟机特有的概念,是方法区的一种实现。在Java 8中,永久代被彻底移除,取而代之的是另一块与堆不相连的本地内存——元空间。永久代或者“Perm Gen”包含了JVM需要的应用元数据,这些元数据描述了在应用里使用的类和方法。注意,永久代不是Java堆内存的一部分。永久代存放JVM运行时使用的类。永久代同样包含了Java SE库的类和方法。永久代的对象在full GC时进行垃圾收集。在Java8中,元空间(Metaspace)登上舞台,方法区存在于元空间(M

2021-06-08 20:10:20 151

原创 20210608 对象的内存大小计算

1,对象在堆内存中的存储格式;2,数据类型的大小;3,使用工具获取对象大小;1,对象在堆内存中的存储格式;

2021-06-08 17:52:17 488 1

原创 20210605 缓存一致性方案

测试

2021-06-05 23:34:29 113

原创 20210604 Redis连接池常用配置

测试

2021-06-04 17:20:50 2351

原创 20210601 线程池中的异常处理

线程池异常处理1,Runnable接口的run方法的完整签名,没有标识throws语句,所以方法是不会抛出checked异常的。至于RuntimeException这样的unchecked异常,由于新线程由JVM进行调度执行,如果发生了异常,也不会通知到父线程。即:子线程中发生了异常,如果没有任何类来接手处理的话,是会直接退出的,虚拟机直接杀死线程,而不会记录任何日志。所以,如果什么都不做的话,是会出现子线程任务既没执行成功,也没有任何日志提示的“诡异”现象的。java线程中,如果抛出未被捕获的

2021-06-03 18:29:23 802

原创 20210531 Synchronized三种用法

Synchronized三种用法类锁,对象锁,普通同步方法,静态同步方法,同步代码块。先来看下利用synchronized实现同步的基础:Java中的每一个对象都可以作为锁,即一个对象一把锁。具体表现为以下3种形式。1,对于普通同步方法,锁是当前实例对象;进入同步代码前要获得当前实例的锁;2,对于静态同步方法,锁是当前类的Class对象;当前类加锁,进去同步代码前要获得当前类对象的锁;3,对于同步方法块,锁是Synchonized括号里配置的对象。这需要指定加锁的对象,进入同步代码前要获

2021-05-31 20:38:38 712

原创 20210523 rpc调用和http调用的区别

测试

2021-05-23 23:36:49 380

原创 20210522 SL4J+LOG4J2日志框架

测试

2021-05-22 22:42:17 142

原创 20210521 Mysql索引底层原理和索引优化

一,MySQL索引底层的实现索引是帮助MySQL高效获取数据的排好序的数据结构;上图中有一张表,表名为 t ,表中有7条数据;使用select * from t where t.clo2 = 89查询;1、若表中没有创建索引,则会全表扫描,一条一条的遍历查询,需要遍历 6 次,查询一行数据至少和磁盘做一次I/O操作(I/O是很耗性能的),至少要做 6 次 I/O 操作;2、表中建立了索引:1)若索引底层是二叉树(左边的子元素小于父元素,右边的子元素大于父元素)存储的,则如下图所示..

2021-05-21 20:29:21 354 3

原创 20210520 使用jmap分析虚拟机内存状况

堆(Heap)和非堆(Non-heap)内存按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的。栈与堆栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;堆解决的是数据存储的问题,即数据怎么放、

2021-05-20 16:11:18 1315 1

原创 20210520 使用jstat分析垃圾收集状况

常用命令:jstat -gcutil <pid> 1000gc垃圾回收信息gcXXX各区域GC的详细信息,如-gcoldJava 堆分为新生代和老年代,新生代一般划分为三块区域,Eden + From Survivor + To Survivor,Eden 和 Survivor 的内存比为8:1,每次只使用一个Eden 和一个 Survivor 区域,另一个 Survivor 用于复制收集算法回收内存。对象一般尽量分配到新生代中,而对于大对象(长字符串和大数组)直接分配

2021-05-20 14:33:30 197 1

原创 20210519 使用jstack命令排查线程死锁问题

jstack主要用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。1,死锁代码如下/** * 测试死锁问题 */public class DeadLockDemo { public static

2021-05-19 15:44:51 1407 1

原创 20201113 心跳检测

作用:监视机器的运行状况,提高系统可用性的措施;分类:心跳检测有2种: 主动和被动;实现:定时线程池,发送心跳包;缺陷:收不到心跳,并不能说明系统宕机;在集群环境中,一台主Master机器会管理好几台slave机器,Master机器的一个重要功能是如何在运行过程中监视slave机器的运行异常状态,如网络断链,系统崩溃,从而对这些异常状态进行处理。采取的方式是心跳检测。心跳检测有2种: 主动和被动主动是指Master节点定时向所有节点发送心跳检测请求,所有节点响应后返回一个状态码.

2020-11-13 14:25:39 911

原创 20201113 equals()与hashcode()

思考:使用equal的对比字符串是否相同的代码可以简化;先对比hashcode值看看是否相等;几类常见的hash码算法两个一定。三千次对比;降低 equals方法的调用次数;提高对比的效率。使用hash算法提高在散列结构中查找的效率。hashset集合如何保证元素唯一的,通过什么提升对比效率?(hash容器中)重写了equals方法后,为什么要重写hashCode方法? 该类无法结合所有基于散列的集合一起正常运作。hashcode方法只有在集合中用到equals方法的作.

2020-11-13 14:20:35 87

原创 20201110 Fabric SDK区块链

Fabric区块链网络Fabric整体架构Fabric共识排序Fabric账本存储Fabric智能合约配置文件,网络部署,合约交互。链码编写,链码交互。区块链基础知识,GO语言编程技能。Fabric基础架构,部署运维,链码;基础概念:交易Transaction:一次状态转移操作,比如一次转账,一次对键值对的增删改查;区块Block:交易的集合, 把某一时间段内的交易打包,就形成了一个区块。链Chain:区块的顺序排列。 单链表结构。每个区块都又一个自己的.

2020-11-10 16:31:06 194 1

原创 20201102 java静态变量Map设置为空

static变量的性质:初始化只有一次,但是可以多次赋值。静态变量可以重新赋值(即多次赋值)除了final声明的外,其他的都可以赋值。静态变量也是变量,只有静态常量才只能赋值一次。静态变量,静态方法;被所有对象共享;static优先于对象存在,随着类的加载已经存在。共享数据,特有数据;成员变量与静态变量的生命周期不同。数据存储位置不同:堆内存的对象中,方法区(共享数据区)的静态区。也叫对象的共享数据。JAVA的static的特点,以及成员变量和静态变量..

2020-11-02 17:36:23 794

原创 20201102 Thread和Runnable的区别

new Thread的弊端如下a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。c. 缺乏更多功能,如定时执行、定期执行、线程中断。相比new Thread,Java提供的四种线程池的好处在于:a. 重用存在的线程,减少对象创建、消亡的开销,性能佳。b. 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。c. 提供定时执行、定期执行、单线程、并发数控制等功能

2020-11-02 15:28:29 155

原创 20201102 Spring中自定义事件及监听

Spring自定义事件及监听,底层是观察者模式核心类:ApplicationEvent与ApplicationListenerApplicationListener是Spring事件机制的一部分,与抽象类ApplicationEvent类配合来完成ApplicationContext的事件机制。如果容器中存在ApplicationListener的Bean,当ApplicationContext调用publishEvent方法时,对应的Bean会被触发。这一过程是典型的观察者模式的实现。1,

2020-11-02 15:16:42 162

原创 20201102 布隆过滤器解决缓存穿透

字节数组,元素是0或者1.添加元素的时候,判断元素是否存在的时候。它可以通过一个Hash函数将一个元素映射成一个位阵列(Bit array)中的一个点。这样一来,我们只要看看这个点是不是1就可以知道集合中有没有它了。这就是布隆过滤器的基本思想。判断元素在不在一个集合里面,如果集合里面的元素非常大,这个判断过程是非常耗时的,而且集合占用空间也很大。布隆过滤器存储空间和插入/查询时间都是常数。Hash函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不需要存储元素本身,在某些对保密要求非常严格

2020-11-02 14:40:00 168

原创 20201102 门面设计模式

门面设计模式: response中getWriter方法就是封装了outputStream三个角色:子系统角色,门面角色,客户端角色。持有对方的实例。门面设计模式相当于聚合层,就像云鹊的api-ws微服务。子系统中有些方法对外提供暴露,有些方法仅仅对其他子系统提供。在哪些情况下使用门面设计模式?医院的例子现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为.

2020-11-02 11:45:59 198 2

原创 20201030使用jvisualvm排查内存溢出(OOM)过程

内存溢出在开发中或者线上出现的概率很高,造成的直接结果是系统运行缓慢,或者直接宕机。在这里模拟下内存溢出的情况以防患于线上出现内存溢出要如何排查问题,线上出问题需要生成一个快照(hprof文件),在本地查看问题。其他工具调试如阿里的Arthas、MAT、jvisualvm。1,准备一个可以出现内存溢出的代码:public class TestOOM { public static void main(String[] args) { List<Object&

2020-10-30 14:58:14 1256

原创 20201030ThreadPoolExecutor线程池

如何模拟高并发场景? public static void main(String[] args) { //模拟高并发场景 ExecutorService service = Executors.newFixedThreadPool(100); //模拟多少的并发 for (int i = 0; i < 2000; i++) { service.submit(new Callable<Object

2020-10-30 10:43:13 172

原创 20201029 Actuator监控

一,Spring Boot Actuator将核心的微服务应用全部监控起来,借助Spring Boot 的Actuator 模块。SpringBoot 微服务应用集成Prometheus + Grafana实现监控告警。Spring Boot Actuator 模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用。这个模块是一个采集应用内部信息暴露给外部的模块,上述的功能可以通过HTTP访问。因为暴露内部信息的特..

2020-10-29 21:17:26 660 1

原创 20201029 责任链模式

对责任链的理解,关键在于对链的理解,即包含如下三点:1,链是一系列节点的集合,在责任链中,节点实质上是指请求的处理者;2,链的各节点可灵活拆分再重组,在责任链中,实质上就是请求发送者与请求处理者的解耦。3,责任链模式并不创建职责链,职责链的创建工作必须由系统的其他部分来完成,一般由使用该责任链的客户端创建。职责链模式降低了请求的发送者和请求处理者之间的耦合,从而使得多个请求处理者都有机会处理这个请求。两个主体:(请求的)抽象处理者 (请求的)具体处理者使用场景:如果if ....

2020-10-29 15:18:33 84 1

原创 20201029 Tomcat中的几种日志

Tomcat主要由connector连接器和容器组成 ,有四大容器(engine 、host、context、wrapper)。1,Engine 引擎, 启动一个tomcat服务,也就是启动一个引擎2,host 虚拟主机, 一个Engine启动,下面项目都会启动,localhost:8080/work1,work23,context 上下文, 一个项目对应一个上下文,通过map映射到不同的servlet。4,wrapper 包装器, 一个wrapper对应一个servlet。1, .

2020-10-29 11:49:21 1419

原创 20201029 Tomcat与JDK的版本兼容问题

Tomcat7只支持jdk1.7及以下,若是jdk1.8则需要用tomcat8及以上,否则可能会报错,比如default关键字的使用。现象:war包本地运行没问题,一到uat环境启动就报错。继承Filter时,因为init(),destroy()有关键字default修饰,没有重写。@Slf4j@Component@Order(Ordered.HIGHEST_PRECEDENCE)public class ForwardFilter implements Filter { @Ove

2020-10-29 10:38:51 2901

原创 20201028 Java web三大利器

Java web三大利器:过滤器,监听器,拦截器HttpServlet是Servlet接口的一个实现类,并且它是一个抽象类,servlet.http包中定义了采用HTTP通信协议(一个无状态协议)的HttpServlet类。Servlet容器:tomcatHttpServlet的部分方法,如doGet()或doPost()方法web容器是管理servlet(通过servlet容器),以及监听器(Listener)和过滤器(Filter)的。Tomcat结构目录/bin:包含启动.

2020-10-28 20:20:42 120

原创 后端跨域设置

为什么会出现跨域问题出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)当一个请求url的协议、域名、端口三者之间任意.

2020-10-24 22:05:14 1014

原创 zuul网关

敏感信息传递,跨域问题,路由规则,负载均衡,静态资源处理。springcloud中zuul向下传递请求头丢失的情况? 允许敏感信息向下传递。Springboot+SpringCloud zuul网关跨域问题/fliters 端点会返回 Zuul 中所有过滤器的信息,可以清楚地了解 Zuul 中目前有哪些过滤器,哪些过滤器被禁用了等详细信息.查看路由配置信息 http://localhost:8000/actuator/routes查看路由详情 http://localhost:8..

2020-10-23 16:21:18 425

原创 202007219 Oracle建表语句

在一般性的项目里面,可以参照这个顺序来:一、建表,指定列类型,指定约束,设置主键;二、加表注释,列注释,方便其它开发人员使用;三、加索引,提高表查询速度;四、加自增序列,新增数据时会用到。建表语句模板:-- 建表语句create table ORD_CANCEL( ORD_CANCEL_ID number(11) not null, CANCLE_SERIALNO VARCHAR2(200) not null, CANCLE_TYP.

2020-07-19 15:59:10 396

.net服务器端性能优化

.net服务器端性能优化

2016-12-20

数据库基础操作

数据库基本操作:增删改查

2016-10-25

自定义对话框

自定义对话框,直接可以拿来用的。

2016-07-29

图片多点触控代码案例 可以直接拿来用

图片多点触控功能的实现、特别好用、能够减少很多时间。原理是手势识别和边界控制

2016-07-19

安卓开发中的图片加载框架Glide 案例源码

安卓开发中的图片加载框架Glide 案例源码

2016-05-21

安卓开发中的mvp模式、小案例源码

安卓开发中的mvp模式、小案例源码

2016-05-05

c#基础编程小程序

一些简单的小程序,求水仙花数,进行异常检测等等

2014-08-21

空空如也

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

TA关注的人

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