框架
文章平均质量分 83
深山猿
不断进化的深山猿
展开
-
预发布相关技术方案与梳理
后端:前端根据用户访问的域名知道当前的环境,预发布环境中添加header后访问后端接口,后端通过header将对应环境的请求路由到对应的环境。需要梳理预发布和线上哪些资源是需要隔离的,确认mysql、nas、oss等存储不隔离,但分支、redis(可以通过)、mq、naocs需要隔离。2)面对线上环境的问题,研发有更多的时间进行解决,相关方案也会更加完备,避免解决一个问题同时带来另一个问题。1)让测试老师有更多时间在线上环境验证问题,能提前暴露部分线上问题,进而提升用户的体验,原创 2023-03-27 17:38:42 · 530 阅读 · 0 评论 -
websocket sse http轮询
适用场景:http轮询:单向http请求,且http连接没有复用。客户端主动发起的轮询sse:半双工,后端持续向客户端推送数据。典型的如评测结果的推送,因为需要评测的中间过程,且要能展示最终结果,所以后端主动多次推送和结束websocket:全双工,客户端和后端可以持续相互推送数据。如运行代码,输入时需要客户端将内容推送给后端,执行结果需要推送给客户端。三者区分:https://blog.gdccwxx.com/http/what-is-sse/https://www.bookstack.cn/转载 2022-05-06 15:51:37 · 740 阅读 · 0 评论 -
http的实现与feign
http的实现方式短连接的服务接口,都是基于应用层Http协议的Http api 或者RESTful api实现,通过JSON文本格式返回数据。如何在Java服务端调用其他节点的Http api 或者RESTful api呢?至少有以下几种方式:(1)JDK原生的URLConnection(2)Apache的Http Client/HttpComponents(3)Netty的异步HTTP Client(4)Spring的RestTemplate:基于以上1、2的Client做的包装(5).原创 2020-12-11 09:48:03 · 2587 阅读 · 0 评论 -
springboot maven父子项目搭建
背景最近接触了一个新项目,已经接触了好几个月,但是一直忙于写代码,没有仔细分析过项目结构,今天开始分析下,包括搭建类似的项目,介绍应用到的一些新的技术点。原创 2020-09-27 14:49:01 · 1080 阅读 · 0 评论 -
BIO\NIO\AIO和对应网络编程的发展
传统的io为bio(blocking i/o),阻塞io;使用bio的网络编程经典方式如下:{ExecutorService executor = Excutors.newFixedThreadPollExecutor(100);//线程池ServerSocket serverSocket = new ServerSocket();serverSocket.bind(8088);...原创 2019-09-19 18:48:21 · 232 阅读 · 0 评论 -
dubbo通信框架 netty reactor模式
Dubbo使用什么通信框架Dubbo使用的是netty,主流通信框架包括netty,mina,GrizzlyMina:Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 Mina 版本2.04支持基于 Java ...原创 2018-07-19 21:32:23 · 12352 阅读 · 0 评论 -
数据库连接池的选择和CommunicationsException
背景,本人多个项目最近用到了多个数据源,但是偶尔会出现如下异常:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure1 druid:mysql异常重启导致的CommunicationsException项目一直正常,突然早晨反馈,系统不可用了,看日志内容如下:Caused...原创 2019-08-30 10:17:01 · 5091 阅读 · 0 评论 -
并发导致的用户信息错乱
问题 多个用户登录bi系统,假设用户1有报表1的权限,用户2有报表2的权限。但是发现有时用户1此时无法访问报表1,提示信息是无权限。。。看下用户信息的设置和获取的相关代码:保存用户信息的实体类,使用了TreadLocal保证线程安全:public class LocalUser { private ThreadLocal<User> localCache = new T...原创 2019-08-02 16:20:31 · 926 阅读 · 4 评论 -
spring Scheduled定时任务配置
spring Scheduled定时任务配置原本感觉很简单,但是配置之后发现不生效,折腾了一小会才找到原因,将具体过程记录如下;1修改spring-context.xml 在配置文件开头声明task <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/s...原创 2018-11-02 17:42:23 · 14394 阅读 · 0 评论 -
Mac下配置Gradle环境
这两天准备看下spring的源码,需要用到gradle,下面是gradle的安装步骤;1下载gradle安装包https://gradle.org/releases/点击complete就开始下载,等待下载完成,解压,放到你想放的位置,我的是/users/dev/gradle-4.10.22配置.bash_profile,并使配置生效cd ~vi .bash_prifile...原创 2018-11-06 21:45:05 · 9830 阅读 · 0 评论 -
mvn多运行环境,用参数来打包不同的配置文件
每一个maven工程(比如web项目),开发人员在开发时,会使用一种配置文件,比如数据库配置,而测试环境可能使用另一种配置文件。打包完成后,手动调整配置文件,工作重复度很高,可以实现maven根据参数区分不同的运行环境,打包不同的配置文件。1为不同的环境分别建配置文件夹,笔者的配置文件目录如下(其实prod和test包中仅仅需要application.properties即可,因为只有...原创 2018-10-30 16:19:34 · 10506 阅读 · 0 评论 -
log4j的使用及其原理
log4j的简单使用方法我的项目是mvn,ssm环境,需要debug环境下mybatis执行sql时打印对应sql和参数1mvn引入相关包,在pom.xml中加入如下配置: <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactI...原创 2018-10-31 11:47:18 · 14669 阅读 · 0 评论 -
多数据源的配置
场景如下:现在使用的是spring+mybatis+mysql 数据源只有一个,mysql的一个库;现在因为其中一个表dau_baseinfo的数据量太大,千万级别。页面查询实在太慢,所以准备把dau_baseinfo表迁移到clickhouse,此时就需要再引入一个数据源,即clickhouse对应的数据源下面开始配置多数据源第一步:创建一个DynamicDataSource的类,继...原创 2018-10-23 20:14:06 · 11810 阅读 · 0 评论 -
Kafaka的消息消费方式
Kafaka的三种消费方式1.消费位移确认Kafka消费者消费位移确认有自动提交与手动提交两种策略。在创建KafkaConsumer对象时,通过参数enable.auto.commit设定,true表示自动提交(默认)。自动提交策略由消费者协调器(ConsumerCoordinator)每隔${auto.commit.interval.ms}毫秒执行一次偏移量的提交。手动提交需要由...原创 2018-09-12 21:59:16 · 13456 阅读 · 0 评论 -
zookeeper怎么扩容,增加server
zookeeper版本3.4.6 现有ZK集群是五台,身份识别码分别为0,1,2,3,4 三地机房 (1)。机房1,现有集群在该机房,主机房,服务的主要流量在该机房。目前ZK的5台机器在该机房。 (2)。机房2,热备机房,有全量服务但是机器数量较机房1少,分担少部分负载,在机房1不可用时,将会对外提供所有服务。 (3)。机房3(延时较大,在100毫秒)。 需...原创 2018-09-12 21:36:16 · 5259 阅读 · 0 评论