自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(330)
  • 资源 (7)
  • 论坛 (1)
  • 收藏
  • 关注

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

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

2020-04-01 15:59:04 239

原创 Jedis的使用

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

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

原创 20201113 心跳检测

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

2020-11-13 14:25:39 80

原创 20201113 equals()与hashcode()

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

2020-11-13 14:20:35 31

原创 20201110 Fabric SDK区块链

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

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

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

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

2020-11-02 17:36:23 169

原创 20201102 Thread和Runnable的区别

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

2020-11-02 15:28:29 31

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

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

2020-11-02 15:16:42 47

原创 20201102 布隆过滤器

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

2020-11-02 14:40:00 30

原创 20201102 门面设计模式

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

2020-11-02 11:45:59 18

原创 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 247

原创 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 22

原创 20201029 Actuator监控

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

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

原创 20201029 责任链模式

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

2020-10-29 15:18:33 21

原创 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 184

原创 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 159

原创 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 26

原创 后端跨域设置

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

2020-10-24 22:05:14 143

原创 zuul网关

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

2020-10-23 16:21:18 79

原创 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 103

原创 20200714 Dubbo+Zookeeper技术栈

Dubbo+Zookeeper 分布式项目搭建dubbo主要核心组件:1、Remoting:网络通信框架,实现了 sync-over-async 和request-response 消息机制.2、RPC:一个远程过程调用的抽象,支持负载均衡、容灾和集群功能3、Registry:服务目录框架用于服务的注册和服务事件发布和订阅工作原理:Provider 暴露服务方称之为“服务提供者”。Consumer 调用远程服务方称之为“服务消费者”。Registry 服务注册与...

2020-07-15 15:01:10 102

原创 20200428 线程安全(上)--彻底搞懂volatile关键字

计算机在处理数据的过程中为什么会出现线程不安全的问题。计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中会涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令...

2020-04-28 18:31:43 115

原创 20200428 Java中Lock和synchronized的比较和应用

synchronized在语法上已经足够简单了,在JDK 5之前只能借助此实现,但是由于是独占锁,性能却不高,因此JDK 5以后就开始借助于JNI来完成更高级的锁实现。JDK 5中的锁是接口java.util.concurrent.locks.Lock。另外java.util.concurrent.locks.ReadWriteLock提供了一对可供读写并发的锁。线程获取锁和释放锁的方...

2020-04-28 18:28:59 108

原创 20200427 补偿模式

微服务架构应满足数据最终一致性,实现最终一致性的三种模式:可靠事件模式、补偿模式、TCC模式。事务补偿机制事务补偿即在事务链中的任何一个正向事务操作,都必须存在一个完全符合回滚规则的可逆事务。如果是一个完整的事务链,则必须事务链中的每一个业务服务或操作都有对应的可逆服务。实现真正的预提交和正式提交的分离。需要手工编写大量的代码来处理以保证事务的完整性。考虑实现一个通用的事...

2020-04-27 11:46:45 226

原创 20200426 如何进行缓存维护(缓存一致性)

缓存一致性问题写数据频繁而读数据少的场景。 删除而不是更新。删除缓存,而不是更新缓存,就是一个lazy计算的思想。先删除缓存,再更新数据库 && 先更新数据库,再删除缓存的比较考虑到并发问题,不能只是单线程的操作。1、更新的时候,为什么先删除缓存,然后再更新数据库?写数据频繁而读数据少的场景并不合适这种解决方案,因为也许还没有查询就被删除或修改了,这样...

2020-04-26 11:45:54 211

原创 20200426 synchronized底层原理

对象锁和类锁1. 对象锁在 Java 中,每个对象都会有一个 monitor 对象,这个对象其实就是 Java 对象的锁,通常会被称为“内置锁”或“对象锁”。类的对象可以有多个,所以每个对象有其独立的对象锁,互不干扰。2. 类锁在 Java 中,针对每个类也有一个锁,可以称为“类锁”,类锁实际上是通过对象锁实现的,即类的 Class 对象锁。每个类只有一个 Class 对象,所以每...

2020-04-26 10:28:59 80

原创 20200423 值传递和引用传递

int属于基本数据类型,因此在方法中进行传递和引用时,并不会改变该变量的数值而arr属于数组,是引用数据类型,因此在方法引用时,实际传递的是该数组在堆内存中的物理内存地址,在方法中对该数组进行操作,则会影响到该数组内部的数值,会发生改变.在java中,基本数据类型作为参数传递的时候叫做值传递,传的是值本身,值传递:值在该方法中改变属于局部变量改变当出了该方法就没有作用了(方法...

2020-04-23 18:28:37 82

原创 20200423 订单幂等处理

订单幂等性1、联合唯一索引,进行去重复;用户id+商品id建立唯一索引。2、通过状态机保证接口幂等;后端可以根据不同的状态去保证幂等性,比如在退款的时候,一定要保证这笔订单是已支付的状态。3、TOKEN机制,针对客户端连续点击或者调用方的超时重试等情况,例如提交订单,此种操作就可以用Token的机制实现防止重复提交。TOKEN机制如何实现?简单的说就是调用方在调用接口的时候先向后端请求...

2020-04-23 16:07:39 303

原创 20200423 Java公平锁与非公平锁

通过CAS算法保证操作的可靠性,正确性。不断尝试修改值,最快失败,保证了结果的最终一致性。一、synchronized与Lock的区别1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类;2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;3.synchronized会自动释放锁 (a线程执行完同步代码会释...

2020-04-23 13:30:01 133

原创 Spring cloud 灰度发布

Spring Cloud灰度发布之Nepxion Discovery架构升级,有单体架构升级为微服务架构。服务的灰度发布,根据访问量逐渐切换用新版本替换老版本,并且能够做到代码零入侵的。Nepxion Discovery是一款对Spring Cloud Discovery服务注册发现、Ribbon负载均衡、Feign和RestTemplate调用的增强中间件,其功能包括灰度发布(包括切...

2020-04-22 13:58:29 190

原创 20200422 Eureka Server结点之间如何同步数据

搭建Eureka Server集群,对外暴露集群地址,让客户端进行注册。Eureka Server结点之间如何同步数据?1、相同的服务名称但有不同的实例id,所以拉取的是服务列表。最终通过负载均衡来获取一个服务,这样可以均衡各个服务器上的服务。2、服务提供者向注册中心注册服务,并每隔30秒发送一次心跳,就如同人还活着存在的信号一样,如果Eureka在90秒后还未收到服务提供者发来...

2020-04-22 13:03:26 1268

原创 20200420 Hikali连接池

最小空闲连接数量;空闲连接存活最大时间,默认600000(10分钟);连接池最大连接数,默认是10;此属性控制从池返回的连接的默认自动提交行为,默认值:true;连接池名称;此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟;数据库连接超时时间,默认30秒,即30000;1、数据库配置;2、连接池的配置;read...

2020-04-20 17:42:06 739

原创 20200420 maven私服配置

Maven私服配置的两种方式以下配置均在settings.xml中配置,私服配置不建议配置在某个项目的 pom.xml文件中。1、镜像方式配置。maven 在默认情况下是从中央仓库下载构建,也就是 id 为 central 的仓库。如果没有特殊需求,一般只需要将私服地址配置为镜像,同时配置其代理所有的仓库就可以实现通过私服下载依赖的功能。(通过私服代理所有的仓库)当按照以上方...

2020-04-20 16:57:10 82 1

原创 20200115 k8s的原理

Docker:开源的容器引擎。Images(Docker镜像)Container(容器)容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。Docker Registry是一个集中存储与分发镜像的服务。构建完Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助Docker Registry来避免镜像的手动复...

2020-04-15 11:39:20 76

原创 20200409 ThreadLocal

ThreadLocal,并发编程ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程...

2020-04-09 19:14:52 63

原创 20200409 日志配置文件

log4j2.xml 配置文件xml文件,定义一些属性,propertieslog4j2.xml的配置,log4j2.xml配置文件中各项标签的意义。配置文件的名称以及在项目中的存放位置;1)2.x版本配置文件后缀名只能为".xml",".json"或者".jsn".2)系统选择配置文件的优先级(从先到后),项目resoureces目录下。3)一般默认使用log4j2.xm...

2020-04-09 18:27:24 147

原创 20200119 日志框架

日志体系与SringBoot的日志应用开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;日志抽象层----->日志实现层。调用日志抽象层里面的方法。把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口。使用时只需要按照其提供的接口方法进行调用即可,由于它只是一个接口,并不是一个具体的可以直接单独使用的日志框架,所以最终...

2020-01-19 17:25:43 105

原创 20200119 config server服务

把密钥放在配置中心进行保密,配置中心的代码由专人进行维护。(安全性)配置中心http://192.168.110.123:7892/com.pica.cloud.trade/dev/publish。 测试配置中心是否通?url组成:Eureka Server上Config Server的地址,组名,环境名,分支名。不是git代码的地址。Config配置中心在配置中心更...

2020-01-19 13:36:18 132

原创 20200117 实现接口幂等的几种方式

实现接口幂等性,防止并发操作,如何设计接口幂等方案?当前是否有高并发的场景,如果是才需要处理接口幂等操作,如果不是就不需要处理。插入更改操作,都要考虑高并发条件下的幂等性。接口的幂等性实际上就是接口可重复调用,在调用方多次调用的情况下,接口最终得到的结果是一致的。1、redis:setNX实现分布式锁,防止多个相同操作同时执行。2、mysql:select......fo...

2020-01-17 15:16:07 296

原创 20200114 ASM框架

用了一下BeanUtils.copyPropertie和PropertyUtils.copyProperties()的方法,发现其效率非常低。原理是通过JDK自带的反射机制动态的去get,set从而去转换我们的类。使用ASM框架来动态生成ASM 让我们有能力在运行的过程中动态生成一个新的类并加载和运行它。ASM是一个通用的 Java 字节码操控和分析框架。它可以用于修改已有的类也可...

2020-01-14 16:39:48 84

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

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

2016-07-19

.net服务器端性能优化

.net服务器端性能优化

2016-12-20

c#基础编程小程序

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

2014-08-21

数据库基础操作

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

2016-10-25

自定义对话框

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

2016-07-29

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

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

2016-05-05

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

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

2016-05-21

陈如水的留言板

发表于 2020-01-02 最后回复 2020-05-16

空空如也

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

TA关注的人 TA的粉丝

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