自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

没有简介

没有描述

  • 博客(42)
  • 收藏
  • 关注

原创 风控平台设计

背景:由于我们是做数据的公司,有很多竞争对手在我们平台注册账号然后爬数据,这种账号如果不及时处理会对系统带来极大的风险。风控平台分为管理和控制两个系统。

2023-09-18 16:42:37 209

原创 pgsql/mysql/clickhouse性能对比

目前公司使用的关系型数据库版本较老,有计划对关系型数据库进行一次升级。有两个方案,一是将现在的mysql5.7升级到8.0,二是将数据库替换成pgsql15,所以对这两个库的查询写入和资源损耗进行一次对比。

2023-09-12 14:46:35 1003 1

原创 OAuth 2.0介绍

OAuth 2.0是一种授权框架,用于授权第三方应用访问用户的资源,比如用户的照片、个人信息等。OAuth 2.0定义了四种授权方式:授权码模式、隐式授权模式、密码模式和客户端模式。OAuth 2.0具有高度的安全性和可扩展性,被广泛应用于各种开放平台的接口鉴权,是目前应用最广泛的开放平台鉴权方式之一。

2023-08-24 11:32:57 2848

原创 DevOps应用方案

以jekins为核心,实现自动化部署。开发人员推送代码到GitLab,触发事件推送到Jekins,Jekins拉取代码构建/检测,生成镜像放到镜像仓库,kubernetes拉取最新镜像执行部署。总之现有的发布机制,所带来的的沉没成本不容忽视,甚至需要专门设置岗位来执行发布,耗费人力物力且收效甚微。当达到流量阈值,会触发自动扩容机制,而当流量很少,会自动关掉多余服务,整个步骤对用户几乎无感。线上服务突然宕机,会自动记录宕机前日志,并重新启动服务。容器部署成功后,原服务才会停掉,对线上用户几乎无感。

2023-07-12 10:19:19 169

原创 Mysql find_in_set()函数

str--查询的字符串strlist---字段名,参数以”,”分隔 如:(1,2,6,8)查询字段(strlist)中包含(str)的结果,返回结果为null或记录-> 3 因为c 在strlist集合中放在3的位置 从1开始。

2023-06-20 14:32:01 3144

原创 Gradle使用http://开头的仓库构建时报错

需要在maven里添加参数才可以访问http地址。使用vpn不安全连接下载依赖。

2023-06-20 11:20:34 2021

原创 Skywalking

SkyWalking 的后端服务,⼀个是负责接收 Agent 上报上来的 Trace、Metrics 等数据,进⾏流式分析,最终将分析得到的结果写⼊持久化存储中,另⼀个是负责响应 SkyWalking UI 界⾯发送来的查询请求。使⽤ Instrumentation,开发者可以构建⼀个独⽴于应⽤程序的代理程序(Agent),⽤来监测和协助运⾏在 JVM 上的程序,甚⾄能够替换和修改某些类的定义。这种⽅式下,在应⽤程序的任何代码被执⾏之前,就加载Agent以修改字节码。Java Agent的两种加载⽅式。

2023-06-02 10:01:44 222

原创 mysql索引忽略字段内容的大小写

utf8_general_ci校对规则进行的比较速度很快,但是与使用 utf8mb4_unicode_ci的校对规则相比,比较正确性较差。是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。其实这个问题取决于索引字段的排序规则-如果是排序规则是ci 就不会区分大小写,如果排序规则是cs就会区分大小写。也就是说,排序时 e,è,é,ê 和 ë 之间没有区别。也就是说,排序时 p 和 P 之间没有区别。

2023-04-13 11:22:28 225 1

原创 开源容器平台调研

KubeSphere 是在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大减轻开发、测试、运维的日常工作的复杂度,旨在解决 Kubernetes 本身存在的存储、网络、安全和易用性等痛点。

2023-03-27 10:40:58 1016

原创 RESTful API 最佳实践

强调组件间的 统一接口 是 REST 架构风格与其他基于网络的风格区分开来的核心特征,基于此特征,本文梳理了RSETful 最佳实践,以帮助更好的设计 API。

2023-03-16 18:41:39 141

原创 从Joda Time转换为java.Time

Joda Time是一个非常成功的日期和时间库,在过去12年左右的时间里,它被广泛使用并对许多应用程序产生了重要影响。但是,如果要将应用程序迁移到Java SE 8,那么就需要把Joda考虑迁移到Java.Time(以前称为JSR-310)了。java.time库包含了从Joda time中学到的许多经验,包括更严格的空值处理和对多个日历系统的更好方法。

2023-02-23 15:02:25 253

转载 知识总结--设计模式(转载)

设计模式在开发应用时,要牢记六大原则:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、开闭原则。传说中的23种设计模式都是从这六大原则演化而来。23种设计模式有:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模...

2023-01-16 11:34:53 204 2

原创 后端日志规范

常见的日志级别有5种,分别是error、warn、info、debug、trace。日常开发中,我们需要选择恰当的日志级别error:错误日志,指比较严重的错误,对正常业务有影响,需要运维配置监控的;warn:警告日志,一般的错误,对业务影响不大,但是需要开发关注;info:信息日志,记录排查问题的关键信息,如调用时间、出参入参等等;debug:用于开发DEBUG的,关键逻辑里面的运行时数据;trace:最详细的信息,一般这些信息只记录到日志文件中。

2023-01-05 18:15:40 987

原创 消息平台设计

随着公司发展,消息量和推送渠道越来越多,需要有一个对各类消息进行统一发送处理的平台。有利于对功能的收拢,以及提高业务需求开发的效率。

2022-12-22 17:14:23 1459 1

原创 SonarQube

Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其

2022-12-08 11:18:45 506

原创 Spring Cloud(netflix)第一次请求超时优化

修改完成后再次重启服务,超时情况得到改善,请求多次未出现超时情况。本文记录Spring Cloud的服务第一次请求超时的优化方式。排查结果是因为Ribbon客户端懒加载造成,然后分别对zuul网关和服务之间调用的Ribbon客户端进行配置,使其启动时加载好Ribbon客户端。

2022-11-29 10:10:41 906

原创 HTML <iframe> sandbox属性

沙箱属性的值将被简单地沙箱化(然后应用所有限制),或者以空格分隔的预定义值列表将消除实际限制。支持的浏览器:下面列出了HTML video preload属性支持的浏览器。sandbox属性允许对iframe中的内容进行其他限制。

2022-11-24 14:23:43 2428

原创 JDK8升至JDK11 新特性整理

lines()字符串实例方法,使用专门的 Spliterator 来懒惰地提供源字符串中的行。按照参数 int 提供的次数来重复字符串的运行次数。isBlank()验证当前字符串是否为空,或者是否只包括空白字符(空白字符由 Character.isWhiteSpace(int) 验证)。

2022-11-14 15:46:27 973

原创 Apache commons lang3--NumberUtils使用小结

检查字符串是否为数字,isCreatable最新, isNumer为过时方法,isDigits判断是否全是数字。

2022-11-03 15:14:18 842

原创 升级springBoot 2.2-->2.6.10改动点

公司springBoot版本用的还是2.2.X,前面抽空调研了springBoot版本变化,最后决定升级到2.6最新小版本2.6.10版本,记录下boot升级带来的改动点。

2022-08-01 15:11:02 2363 2

原创 项目结构规范

背景公司以前没有规范,导致项目结构混乱,不利于以后维护。经过多次设计讨论,最终确定以下结构规范。

2022-07-28 13:43:00 178

原创 ES压缩算法测试

LZ4 具有更快的压缩与解压速度,而 Deflate 在压缩率上更占优势。两者在性能与压缩率上存在明显的差异,基于现有的压缩算法,用户不能很好的兼容压缩比和性能,Lucene 默认的压缩算法是 LZ4。LZ4与Deflate算法压缩率对比(来源腾讯云/阿里云)压缩算法加载时间(1 Shard)加载时间(5 Shards)Fields(*fdt)文件大小索引总大小写入TPS(doc/s)Deflate对比LZ4写入性能下降10%,压缩率提升20%公司对手数据分别写入5.6.16和7.10.1两个es版本 >

2022-07-04 16:42:59 2595

原创 JAVA单元测试插件汇总

1、idea自带功能直接右键执行 Run with coverage ,计算单元测试覆盖率2、JaCoCo(使用最多)DevOps流水线上用的 SonarQube就是用的这个插件。idea自带插件,计算单元测试覆盖率 开启方式:idea 使用JaCoCo插件测试覆盖率并展示Branch,%(分支覆盖率_萝卜猪骨番茄面的博客-CSDN博客_idea jacoco插件3、EvoSuite开源插件,idea安装比较麻烦IntelliJ IDEA plugin | EvoSuite ,需要在项目中引入 。可以自动生

2022-07-04 10:58:35 2052

原创 SpringBoot 2.3--2.7版本更新汇总

1、最低要求变更Gradle 6.3+(如果您使用 Gradle 构建)。Jetty 9.4.22+(如果您使用 Jetty 作为嵌入式容器)2、jdk支持添加了对 Java 14 的支持。也支持 Java 8 和 11。3、ElasticSearchNative Elasticsearch transport 已被删除,默认使用Elasticsearch 7.5+。4、MongoDB切换到mongodb4,并适配 reactive 和 imperative drivers。如果你使用 `spring-bo

2022-06-24 13:44:47 13108

原创 项目现状分析及新分层架构落地方案

采用DDD分层架构和调用流程目前项目采用传统三层架构(MVC架构),三层架构就是一种严格分层模式,它把职责划分为界面展示、业务逻辑、数据访问三层,还有一个业务实体,前面三层都要依赖它,所以它并不构成一个层。这里有个问题,严格分层架构只能上层访问相邻的下层所以我们时常会遇到这个问题,action想直接从dao拿数据,但非要经过service,虽然可以提升安全性和使组织架构更严密,但却写了很多重复的代码(空壳调用)。正在上传…重新上传取消分层太粗,模型层混乱模型层逻辑太重,所有业务逻辑和代码组装都在模型层,导

2022-06-24 09:51:33 432

原创 网页翻译调研

目前市面上没有免费的网页翻译API。各版本收费翻译标准:国内翻译API新用户注册账户时,系统会向您账户赠予50元体验资金。按月调用字符数 中文与常见语种互译--50元/百万字每月翻译 100 万字之内都是免费的,如果您每月超过 100 万字,我们会按照 20 元 / 100 万字 的费率收费。(字数按照翻译原文字符计算,包含空格和标点)国外翻译API(需要翻墙)每月 50 万到 10 亿个字符*每月 50 万到 10 亿个字符* 每 100 万个字符 $20#每月超过 10 亿个字符* 请与销售代表联系商谈

2022-06-22 17:12:30 335

原创 面试问题集锦

1、List和Set的区别List:有序,按对象进⼊的顺序保存对象,可重复,允许多个Null元素对象,可以使⽤Iterator取出 所有元素,在逐⼀遍历,还可以使⽤get(int index)获取指定下标的元素。Set:⽆序,不可重复,最多允许有⼀个Null元素对象,取元素时只能⽤Iterator接⼝取得所有元 素,在逐⼀遍历各个元素。2、ArrayList和LinkedList区别ArrayList:底层是基于数组实现,更适合随机查找...

2022-04-05 18:35:26 1567

原创 springCloud与Dubbo对比

springCloud与Dubbo对比

2022-03-27 20:30:33 2533

原创 分支拉取规范

分支拉取规范:重要:所有代码分支必须要从master拉取1、开发根据功能模块拉取自己的开发分支 :命名:feature+年月日+业务+自己名字缩写 例如:feature/20220218_allot_wgj2、拉取确定上线时间点的qa分支 。命名:release+年月日+QA 例如:release/20220218_QA 。需要deploy或发布到QA时,先将代码合并到该分支再进行操作。3、拉取确定上线时间的release分支。命名:release+年月日 例如:release/2022..

2022-01-25 13:38:01 720

原创 一次线上问题记录,以及后续优化思路梳理

一次线上问题记录,以及后续优化思路梳理

2022-01-23 19:09:39 353

原创 一次使用kerberos加密连接hbase错误记录

项目中要使用公司hbase,但是公司hbase时通过kerberos加密的,在通过运维同学给的加密文件连接hbase时,一直报Unable to obtain password from user\u00A\u00A\u009,看错误是用户名或加密文件不对,经过多次核对配置文件里的用户名没有问题,keytab文件也是直接放到配置目录没有改过。于是我在启动加入代码打开了kerberos debug开关。System.setProperty("sun.security.krb5.debug", "

2021-07-03 18:11:33 493 1

原创 RPC调用方式比较

RestTemplateRestTemplate是Spring提供的用于访问Rest服务的客户端,开发语言JAVA。是一个对resful访问封装的模板。可以进行跨语言通信,支持多种序列化方式,底层使用HTTP协议,用了spring框架都可以直接使用学习成本低。FeignFeign是一个http请求调用的轻量级框架,是springcloud重要组成部分。在springcloud中使用fe...

2020-04-27 20:20:01 1016

原创 某中心现架构分析及优化思考

为了响应某号召,现在的中心正在进行自研替代计划,这一计划已经实行三四年了,现在来看一下替代的结果。 先写一下架构: 这里的数据链路分两个大类。 1、专用线路 各大银行、大基金公司等,数量不多。使用的是专用网络。架构见图: 2、互联网线路 其他机构使用互联网线路,要使用专用的useb才可以访问中心网络。架构见图: ...

2020-03-17 18:36:00 130

原创 高并发架构思考

高并发问题是互联网架构设计中必须要考虑的因素之一。高并发设计所要达到的效果就是让系统具有并行处理更多请求的能力。一家公司在刚成立时,通常使用的是单机系统,就是一台服务器干所有事情。随着公司业务的发展流量的增多,单机无法满足业务的需求,可能出现系统卡顿、经常宕机等问题,这时就需要对当前系统扩展...

2020-03-12 20:36:53 379

原创 知识总结-常用框架相关(摘录+转载)

Spring 是为了简化开发复杂度而诞生,其简单、强大、可测试、耦合性低是目前最流行的开发框架,广泛应用于java开发中,几乎超过百分之八十的java项目都与spring有关。Spring是一个轻量级的控制反转(IOC和DI)和面向切面(AOP)容器框架。轻量:完整包总大小不到1M。控制反转:原本由人工手动管理的bean由spring统一管理。面向切面:使用动态代理设计模式,将功能横向切入,极...

2020-03-09 20:12:34 213

原创 知识总结--其他应用组件(转载)

强大的搜索引擎框架:elastaticsearchelastaticsearch设计之初的目标就是:让每个公司可以轻松搭建自己的搜索引擎,它的确做到了。它可以用于全文搜索、结构化搜索以及数据分析,它基于Lucene框架 ,Lucene是当今世上最高效、最先进的搜索引擎框架。Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需...

2020-03-09 20:10:46 89

原创 知识总结--消息中间件(摘录+转载)

程序解耦神器:消息中间件(MQ)目前市面上消息中间件有很多,比如商业MQ:MSMQ、IBM MQ、JBoss MQ,开源免费的如:ActiveMQ、RabbitMQ、RocketMQ、Kafka等等,各种MQ特点不同使用场景也不一样。对于商业MQ而言其稳定安全效率高,常用于政府或金融机构。而开源MQ则常见于互联网公司。我用过其中的三个MQ:IBMMQ、RabbitMQ和Kafka。IBMM...

2020-03-09 20:08:36 983 2

原创 知识总结--JVM相关(摘录+转载)

JVM在java中及其重要,java是编译型语言,所写的代码需要编译成静态块后才可以正常使用。而负责编译管理的就是jvm,可以说没有jvm那么java就没有办法正常执行。jvm通过类加载器加载应用,再通过java API执行。java设计成基于虚拟机的语言而不是物理机,正因为如此才有了一次编译到处执行的特性,只要有jvm的机器就可以执行java代码。JVM的基本特性:基于栈(Stack-b...

2020-03-09 19:59:53 184 1

原创 知识总结--关系型数据库相关

表锁,给这个表加上锁。对于数据库而言,如果在对自增id进行增长操作时,它默认是表锁,如果操作的记录不存在默认也是表锁,如果存在那条记录那就是行锁,如果对连续的id记录操作那就是范围锁。但是免费有免费的道理,mysql的性能远不及oracle和db2,性能大概是他们的10分之一,而且对数据的可靠性和事务性的支持也没有这两个数据库强大,它内置执行引擎效率不高因此在写mysql sql语句时要注意当使用多表关联时一定要用join,对于同样的一条连表查询sql加join和不加join差别是极大的。

2020-03-09 19:48:24 378 1

原创 知识总结--缓存相关(摘录+转载)

缓存分为进程内缓存和进程外缓存。所谓进程内缓存就是在本地程序创建一个存储数据空间,相比进程外缓存由于没有网络开销效率更高,常见框架如:EhCache。但进程内缓存有一个致命的缺点,在分布式环境下无法保证多台机器缓存的一致性,需要额外写通知代码,即便是有通知也无法保证百分百的一致性,所以进程内缓存一般用于保存系统启动时及加载完成的数据并且在系统运行过程中不需要改变,例如系统配置参数等。在使用进程...

2020-03-09 19:31:15 171 1

空空如也

空空如也

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

TA关注的人

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