- 博客(125)
- 资源 (5)
- 收藏
- 关注
原创 Kafka零拷贝
通过上述对比,可以看出零拷贝技术减少了数据在内核空间和用户空间之间的拷贝次数,从而降低了 CPU 负载,提高了数据传输性能。Kafka 采用零拷贝(sendfile + mmap),减少数据在内核态和用户态的拷贝,提高吞吐量。在此过程中,数据在内核空间和用户空间之间经历了多次拷贝,增加了 CPU 负载和上下文切换次数,影响了数据传输性能。在零拷贝过程中,数据未经过用户空间,避免了不必要的数据拷贝和上下文切换,提高了传输效率。,如 Kafka、Nginx、大文件传输,提高吞吐量。,这会破坏零拷贝的高效性。
2025-02-28 20:52:57
958
转载 代码中大量的if/else,你有什么优化方案?
观点一(灵剑):前期迭代懒得优化,来一个需求,加一个if,久而久之,就串成了一座金字塔。当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有什么方案可以优雅的优化掉这些多余的if/else?1. 提前return这是判断条件取反的做法,代码在逻辑表达上会更清晰,看下面代码:if (condition) { // do something} else { return xxx;}其实,每次看到上面这种代码,我都心里抓痒,完全可以先判断!condition,干掉else。i
2022-04-17 16:05:57
1284
原创 通过策略 +工厂 + 模板设计模式对if else业务逻辑进行优化
通过工厂 + 策略 + 模板设计模式对f else业务逻辑进行优化需要优化的业务代码:@SpringBootTestclass FansApplicationTests2 { @Test String noDesign2() { String name = "张三"; if (name.equals("张三")) { // 业务逻辑B return "张三完成任务BBB"; } else if (name.equals("李四")) { // 业务逻辑B
2022-04-17 15:47:50
787
原创 工作中常用的设计模式(策略模式、责任链模式、模板方法模式、观察者模式、工厂模式、单例模式)
工作中常用到哪些设计模式使用设计模式的好处重用性高、扩展性性能、灵活性单元测试、结构型设计模式:松耦合、避免了客户端环境与产品对象复杂的构造逻辑耦合1.策略模式1.1 业务场景假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码:if(type=="A"){ //按照A格式解析 }else if(type=="B"){ //按B格式解析}else{ //按照默认格式解析}这个代码可能会存在哪些问题呢?
2022-04-17 15:38:59
1380
原创 java8 新特性
1.概述1.1 生态Lambda 表达式函数式接口方法引用 / 构造器引用Stream API接口中的默认方法 / 静态方法新时间日期 API其他新特性1.2 新特性速度更快代码更少强大的 Stream API便于并行最大化减少空指针异常 Optional (Kotlin ?)1.3 温故而知新Hashmap 底层结构/原理 老话题不再阐述 …并发hashmap …Java虚拟机 …Java内存模型 …2. Lambda2.1 匿名函数Lambda是
2022-04-17 15:33:44
223
原创 大数据之HBase
第 1 章 HBase 简介1.1 HBase 定义HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。1.2 HBase 数据模型逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map。1.2.1 HBase 逻辑结构1.2.2 HBase 物理存储结构1.2.3 数据模型Name Space命名空间,类似于关系型数据
2022-04-11 00:17:40
2217
原创 实现 SpringBoot+WebSocket实时监控异常
前言此异常非彼异常,标题所说的异常是业务上的异常。需求消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理。因为需要服务端主动向客户端发送消息,所以很容易的就想到了用WebSocket来实现这一功能。前端略微复杂,需要在一张位置分布图上进行鼠标描点定位各个设备和根据不同屏幕大小渲染,本文不做介绍,只是简单地用页面样式进行效果呈现。绿色代表正常,红色代表异常预期效果,未接收到请求前----->id为3的提交了异常,id为3的王
2021-11-20 09:57:21
531
转载 Docker + Intellij IDEA,提升生产力
Docker + Intellij IDEA,提升生产力!IDEA是Java开发利器,springboot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢?一、开发前准备1.Docker安装可以参考:https://docs.docker.com/install/2.配置docker远程连接端口vi /usr/lib/systemd/system/docker.service 找到 ExecStart,在最后面添加 -H t
2021-11-19 18:17:10
193
转载 递归算法讲解
递归算法讲解摘要:大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归。毋庸置疑地,递归确实是一个奇妙的思维方式。对一些简单的递归问题,我们总是惊叹于递归描述问题的能力和编写代码的简洁,但要想真正领悟递归的精髓、灵活地运用递归思想来解决问题却并不是一件容易的事情。本文剖析了递归的思想内涵,分析了递归与循环的联系与区别,给出了递归的应用场景和一些典型应用,并利用递归和非递归的方式解决了包括阶乘、斐波那
2021-11-19 11:47:33
519
原创 SpringBoot整合knife4j
SpringBoot整合knife4j1.概述Swagger是一款测试文档Api接口,具体用法见SpringBoot整合Swagger。而knife4j是对Swagger进一步封装,其优化了api文档的界面。官网https://doc.xiaominfo.com/knife4j/documentation/。2.实战演练2.1环境准备新建一个SpringBoot的项目,导入需要的依赖 <dependency> <groupId>org
2021-11-17 14:32:43
274
转载 分布式任务调度平台XXL-JOB搭建教程
关于分布式任务调度平台XXL-JOB,其实作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里我就不做过多的介绍了,关于其搭建教程,本人依照其文档搭建起来基本上也没遇到啥问题,这里通过博客的形式记录下来。回到顶部1、源码下载地址①、GitHub:https://github.com/xuxueli/xxl-job②、码云:https://gitee.com/xuxueli0323/xxl-job回到顶部2、文档地址①、中文文档:http://www.xuxueli.com/xxl-jo.
2021-11-16 18:41:37
825
原创 MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用
MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用实体类@Datapublic class BannerItem { private Long id; private String name; private String img; private String keyword; private Integer type; private Long bannerId;}QueryWrap.
2021-11-15 19:52:01
1233
原创 Kubernetes容器交付介绍
如何在k8s集群中部署Java项目容器交付流程开发代码阶段编写代码编写Dockerfile【打镜像做准备】持续交付/集成代码编译打包制作镜像上传镜像仓库应用部署环境准备PodServiceIngress运维监控故障排查应用升级k8s部署Java项目流程制作镜像【Dockerfile】上传到镜像仓库【Dockerhub、阿里云、网易】控制器部署镜像【Deployment】对外暴露应用【Service、Ingress】运维【监控、升级】
2021-11-14 21:25:41
101
原创 使用kubeadm方式搭建K8S集群
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:# 创建一个 Master 节点kubeadm init# 将一个 Node 节点加入到当前集群中kubeadm join <Master节点的IP和端口 >Kubeadm方式搭建K8S集群使用kubeadm方式搭建K8s集群主要分为以下几步准备三台虚拟机,同时安装操作系统CentOS 7.x对三个安装之后的操作系统进行初始化操作在
2021-11-14 18:31:15
190
原创 Kubernetes简介
Kubernetes简介来源bilibili尚硅谷K8S视频:https://www.bilibili.com/video/BV1GT4y1A756中文官网:https://kubernetes.io/zh中文社区:https://www.kubernetes.org.cn/介绍K8S主要讲的就是Kubernetes,首先Kubernetes首字母为K,末尾为s,中间一共有8个字母,所以简称K8s前置知识Linux操作系统Docker课程简介K8s概念和架构从零搭建K8s集群
2021-11-14 14:17:46
181
转载 postgres-explain使用
前言最近发现有几个接口响应缓慢 看了下 主要是之前偷懒写法 导致网络io过大 当数据量上来之后速度变慢现在把部分业务功能 拆分到不同的sql中 进行处理参考文档explain浅析: http://mysql.taobao.org/monthly/2018/11/06/postgres explain文档(pg11): https://www.postgresql.org/docs/11/using-explain.html命令说明指令格式:CopyEXPLAIN 指令... 要进行分析的sq
2021-11-14 12:35:34
344
原创 聊聊日常开发中,如何减少bug呢?
聊聊日常开发中,如何减少bug呢?原创 捡田螺的小男孩 [捡田螺的小男孩](javascript:void(0)???? 6月20日前言大家好呀~ 我是捡田螺的小男孩,今天跟大家聊聊日常开发中,如何减少bug?本文将从数据库、代码层面、缓存使用篇3个大方向,总结出一共50多个注意点,助大家成为开发质量之星。欢迎关注公众号:捡田螺的小男孩1. 数据库篇慢查询数据库篇的话,哪些地方容易导致bug出现呢?我总结了7个方面:慢查询、数据库字段注意点、事务失效的场景、死锁、主从延迟、新老数据兼容、一
2021-11-13 18:04:00
403
原创 docker概述
docker概述概 述docker是go语言开发的docker官方文档:https://docs.docker.com/get-started/docker hub:https://hub.docker.com/Docker的思想就如它的logo一样:docker就是大鲸鱼,而每个镜像container就是对应的集装箱。那么docker的核心思想是什么呢?答案就是——隔离!!通过隔离机制,既可以保障每个"集装箱里面的东西"是互不影响的,也可以将服务器的资源压榨到最大程
2021-11-13 16:34:18
2093
转载 Springboot打包为Docker镜像并部署的实现
Springboot打包为Docker镜像并部署的实现一、Springboot项目运行正常打包前,Springbooot项目在本地必须是运行正常的。我们这里使用本专栏写起来的项目,如下所示:二、Maven打包项目执行如下命令即可:// 先清空再打包mvn clean package打包成功之后如下所示,提示BUILD SUCCESS,target目录下会有打好的jar包:三、打包镜像前准备1、创建一个文件夹mkdir dockerFile2、进入文件夹,创建文件:Docke
2021-11-13 15:46:03
338
原创 MyBatis 批量插入数据的 3 种方法
批量插入功能是我们日常工作中比较常见的业务功能之一,今天来一个 MyBatis 批量插入的汇总篇,同时对 3 种实现方法做一个性能测试,以及相应的原理分析。先来简单说一下 3 种批量插入功能分别是:循环单次插入;MP 批量插入功能;原生批量插入功能。准备工作开始之前我们先来创建数据库和测试数据,执行的 SQL 脚本如下:-- ------------------------------ 创建数据库-- ----------------------------SET NAMES utf
2021-11-12 13:17:50
27411
5
原创 谷歌浏览器CSND广告屏蔽方法
CSND 写挺爽的但是看博客比较多广告使用csdn_chrome_plugin插件进行过滤点广告,舒适性很多下载链接:https://img-operation.csdnimg.cn/plugin/package/csdn_chrome_plugin_v2.15.3.crx下载到本地后选择设置>扩展工具将文件拖拽到浏览器页面中然后再回到优快云 会发现博客特别干净...
2021-11-12 10:37:40
641
原创 Java程序占用 CPU 过高怎么排查
Java程序占用 CPU 过高怎么排查线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因?这就是一个套路题,所谓套路题就是有标准的套路解法的,掌握了套路,不仅能解决面试官,还能解决问题。不然真的就掉进套路里了。当我们真碰到这个问题的时候应该怎么排查呢?模拟一个高 CPU 场景先用一段程序创建几个线程,将其中一个线程设置成高 CPU 使用率的。public static void main(String[] args) { for (int i = 0;
2021-11-12 10:21:06
5074
原创 多线程实现主线程累加子线程的值
需求分析主线程需要等待子线程执行完后 再将自身业务执行完毕,用于业务上的数据加和等相关联业务多线程有几种实现方法Java多线程实现的方式有四种1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target3.通过Callable和FutureTask创建线程4.通过线程池创建线程前面两种可以归结为一类:无返回值,原因很简单,通过重写run方法,run方式的返回值是void
2021-11-11 22:17:49
431
原创 Spug - 轻量级自动化运维平台
Spug - 轻量级自动化运维平台对于中小型企业而言,进行主机和应用的管理是比较麻烦的,应用部署往往需要直接连接服务器,再进行手动的环境配置、代码拉取、应用构建和部署发布等工作,容易出错,且耗时费力。一个好的自动化运维平台,往往能大大节省人力物力,提高开发部署效率。Spug,正是一个面向中小型企业设计的轻量级自动化运维平台。Spug自动化运维平台简介Spug,是 openspug 在 Github 上开源的自动化运维平台,项目位于 https://github.com/openspug/spug,
2021-11-11 10:29:58
1663
原创 WebSocket和kafka实现数据实时推送到前端
WebSocket和kafka实现数据实时推送到前端一. 需求背景需要将kafka中的数据实时推送到前端展示。最开始想到的是前端轮询接口数据,但是无法保证轮询的频率和消费的频率完全一致,或造成数据缺失等问题。最终确定用利用WebSocket实现数据的实时推送。二. websocket简介WebSocket用于在Web浏览器和服务器之间进行任意的双向数据传输的一种技术。WebSocket协议基于TCP协议实现,包含初始的握手过程,以及后续的多次数据帧双向传输过程。其目的是在WebSocket应用和We
2021-11-10 21:05:13
10124
原创 JVM内存模式
1. 什么是JVM内存结构?jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java堆、方法区;程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址;虚拟机栈:线程私有的,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数、动态链接和方法返回等信息,当线程请求的栈深度超过了虚拟机允许的最大深度时,就会抛出StackOverFlowError;本地方法栈:线程私有的,保存的是native方法的信息,当一个jvm创
2021-11-10 19:34:11
377
原创 Kafka集群部署指南
Kafka集群部署指南一、前言1、ZooKeeper简介ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现。ZooKeeper为分布式应用提供一致性服务,提供的功能包括:分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)、分布式锁(Distributed Lock)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身
2021-11-10 15:32:14
276
原创 linux 常用命令
linux 常用命令查看文件1.文件夹按大小排序:du -sh * |sort -h2.查看文集夹大小的命令 : du -h3.查看文件夹大小 du -h --max-depth=1 /APP/data/docker/volumes/服务开机自启动java restart脚本文件ps auxf|grep -v grep|grep hechi-0.0.1-SNAPSHOT.jar |awk '{print $2}'|xargs kill -9nohup java -jar hechi-0.
2021-08-25 17:12:39
495
原创 推送本地文件到gitee
# 1git init# 2git add .git commit .# 3 git remote add original https://...仓库地址# 5git push original master# 注意:如果gitee仓库中有REDEME.md需要先合并在pushgit pull --rebase original master过程遇到问题 git pull --rebase origin master#解决 git commit -m 'xx'.
2021-07-08 22:39:50
119
原创 JdbcTemplate
JdbcTemplateSpring为传统的jdbc API进行封装,简化持久层操作,虽然jdbcTemplate很灵活,但和ORM框架相比jdbcTemplate功能就显得力不从心了,学习jdbcTemplate是为学习ORM框架做铺垫ORM:对象关系映射 O:对象 R:关系 M:映射传入Jdbc API与Spring jdbcTemplate比较//JDBC APIStatement statement = conn.createStatement();ResultSet r.
2021-06-18 16:00:35
426
原创 Leetcode算法题
反转链表 反转一个单链表。输入: 1->2->3->4->5输出: 5->4->3->2->1解法1:迭代,重复某一过程,每一次处理结果作为下一次处理的初始值,这些初始值类似于状态、每次处理都会改变状态、直至到达最终状态从前往后遍历链表,将当前节点的next指向上一个节点,因此需要一个变量存储上一个节点prev,当前节点处理...
2021-06-10 13:57:30
136
原创 分布式消息中间件-RocketMQ
MQ背景&选型 消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。主要具有以下优势:削峰填⾕谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题)系...
2021-06-09 13:08:23
631
原创 分布式消息中间件-kafka
Kafka Kafka 基础 Kafka 是一个分布式的基于发布/订阅模式的消息引擎系统削峰填谷 应用解耦 异步处理理 高吐出(10-20w的QPS) 高性能架构图 Kafka用zk管理broker搞定术语 生产者:Producer。向主题发布新消息的应用程序。消费者:Consumer...
2021-06-08 11:35:51
206
原创 SpringBoot配置swagger_ui
1.引入依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version
2021-03-14 15:23:02
603
原创 HttpRequestUtil方法get、post、JsonToPost
java后台发起请求使用的工具类package com.cennavi.utils;import org.apache.http.Header;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apach
2020-09-26 14:58:12
946
原创 解决大数据量的遍历读取问题--线程池的调用方式
需求:有大量的数据处理,可以使用线程池,使处理速度加快解决方案:使用线程池创建工具类:MyThreadPoolpackage com.cennavi.audi_data_collect.utils;import java.util.concurrent.ExecutorService;import java.util.concurrent.Future;import java.util.concurrent.LinkedBlockingDeque;import java.uti..
2020-09-11 12:28:07
1053
原创 java实现qq邮箱发送信息
引入maven依赖<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>代码实现import java.util.Properties;import javax.mail.Authenticator;import j..
2020-07-16 12:09:36
372
原创 WGS84、GCJ02、BD09坐标系互转
各坐标系简介与转换,包括WGS84(地球坐标系)、GCJ02(火星坐标系)和BD09(百度坐标系)一、各坐标系简介与转换背景:从GPS和北斗卫星定位得到的定位数据采用的都是WGS84坐标系,即地球坐标系,但是国内不管是高德地图、百度地图采用的并不是WGS84坐标系,所以需要经过转换后才能使用,前端用百度API提供的方法转换速度较慢。通过网上搜索收集资料,然后自己编写代码测试,总结了一下有关坐标系简介与转换的知识,分享给大家!1.各坐标系简介WGS84坐标系 即地球坐标系,国际上通用的坐标系。 设
2020-06-03 18:39:57
2707
原创 jdbcTemplate动态查询且防止sql注入实现
使用jdbcTemplate.update(sql, array);防止sql注入public Object updateCarGroup(CarGroupInfo carGroupInfo) { try { List<Object> param = new ArrayList<>(); String sql = "UPDATE car_grou...
2020-03-06 17:50:19
4833
1
平安科技java面试题
2019-02-19
Springboot基础
2018-12-23
黑马redis教程
2018-12-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人