- 博客(68)
- 收藏
- 关注
原创 白话TCP/IP原理
TCP/IP(Transmission-Control-Protocol/Internet-Protocol),中文译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、也是Internet国际互联网络的基础。我上大学的时候就是一门必修课。工作后我还专门重新看了一遍,觉得比上学时理解的多了些。但是书本上东西毕竟不贴合工作。本文结合工作中常用的方面以及现实中出现过的线上问题来讲解说明。TCP/IP协议栈为什么是“栈”?大学的时候课本上讲过:开放系统互联参
2022-01-18 15:20:30
325
原创 k8s的应用包管理工具helm的部署和使用
1、概述我们一般是在k8s里面部署一些简单的应用,比如用deployment,daemonset,statefuleset的方式来部署应用,但是如果要部署一些复杂的应用,那么整个配置的编写、部署的过程就会变的更加的复杂,那么helm这个工具就可以来帮助解决这个复杂应用的部署问题。helm可以类比与linux环境下yum部署应用的方式,只需要执行几条命令,就可以将应用需要的配置、依赖都部署到环境中。同样,helm也是通过几条简单的命令,将某个应用需要的配置、依赖都部署到了k8s集群上。
2022-01-18 15:19:36
1227
原创 RabbitMQ 中的分布式,普通 cluster 模式的构建
RabbitMQ 如何做分布式前言前面几篇文章介绍了消息队列中遇到的问题,这篇来聊聊 RabbitMQ 的集群搭建。集群配置方案RabbitMQ 中集群的部署方案有三种 cluster,federation,shovel。clustercluster 有两种模式,分别是普通模式和镜像模式cluster 的特点:1、不支持跨网段,用于同一个网段内的局域网;2、可以随意的动态增加或者减少;3、节点之间需要运行相同版本的 RabbitMQ 和 Erlang 。普通模式
2022-01-18 15:18:40
1954
原创 线程池如何观测?这个方案让你对线程池的运行情况了如指掌
今天我们来聊一个比较实用的话题,动态可监控可观测的线程池实践。这是个全新的开源项目,作者提供了一种非常好的思路解决了线程池的可观测问题。这个开源项目叫:DynamicTp地址在文章末尾。写在前面稍微有些Java编程经验的小伙伴都知道,Java的精髓在juc包,这是大名鼎鼎的Doug Lea老爷子的杰作,评价一个程序员Java水平怎么样,一定程度上看他对juc包下的一些技术掌握的怎么样,这也是面试中的基本上必问的一些技术点之一。juc包主要包括:1.原子类(AtomicXXX..
2022-01-18 15:17:54
692
原创 Nginx 代理解决跨域问题分析
当你遇到跨域问题,不要立刻就选择复制去尝试。请详细看完这篇文章再处理 。我相信它能帮到你。分析前准备:前端网站地址:http://localhost:8080服务端网址:http://localhost:59200首先保证服务端是没有处理跨域的,其次,先用postman测试服务端接口是正常的当网站8080去访问服务端接口时,就产生了跨域问题,那么如何解决?接下来我把跨域遇到的各种情况都列举出来并通过nginx代理的方式解决(后台也是一样的,只要你理解的原理)。跨域主要涉及4个响.
2022-01-18 15:16:57
2163
2
原创 常见聚类算法总结
目录一.关于聚类 什么是聚类: 什么不是聚类: 聚类的种类: 数据间的相似度度量: 簇间相似度度量: 评估不同聚类方案的优劣: 聚类方法的分类: 聚类算法之外的处理方法: 二.划分式聚类方法 k-means: 三.基于密度的聚类: DBSCAN 算法: 四.层次聚类: 凝聚式聚类: 分裂式聚类: 治愈算法(CURE(Clustering Using Representative)): 稀疏化邻近图: 变色龙算法: 五.基.
2022-01-06 15:44:06
12628
原创 Java高效开发-SSH+Wireshark+tcpdump组合拳
目标实现抓取远程服务器的数据包在wireshark中展示,不需要频繁使用tcpdump抓包后保存为cap数据包,在进行从服务器下载进行解析;工具1.sshwin10默认没有开启ssh服务端的,打开方式:搜索-->可选功能-->添加功能-->openSSH服务器-->安装即可2.wireshark抓包工具官网下载:Wireshark · Download本人提供的阿里云盘下载链接:https://www.aliyundrive.com/s/XDHMTb835
2022-01-06 15:42:31
308
原创 MySQL中的数据类型JSON
今天介绍一个MySQL中的数据类型-JSON,相信大家对JSON都不陌生,在日常工作中使用到的频率也很高,话不多说,直接开始。何谓JSON看下RFC文档对于JSON的描述1.基于 JavaScript 语言的轻量级的数据交换格式2.基于文本3.语言无关JSON应用场景我大概使用过以下两类:1.接口的数据交换,比如ajax请求时的application/json、rpc调用时的JSON序列化\反序列化;2.以JSON格式存储数据,我接触过以下两种:...
2022-01-06 15:41:45
1904
2
原创 图解四种 IO 模型
最近越来越认为,在讲解技术相关问题时,大白话固然很重要,通俗易懂,让人有想读下去的欲望。但几乎所有的事,都有两面性,在看到其带来好处时,不妨想想是否也引入了不好的地方。例如在博客中,过于大白话的语言的确会让你阅读起来更加顺畅,也更容易理解。但这都是其他人理解,已经咀嚼过了的,人家是已经完全理解了,你从这些信息中大概可能会观察不到全貌。所以,适当的白话是很好的,但这个度得控制一下。接下来切入正文。相信大家经常看到这个问题:BIO、NIO 和 AIO 有什么区别?看到这个问题,可能你脑海
2022-01-06 15:39:16
731
原创 Java 16 中新增的 Stream 接口的一些思考
这里先提一个题外话,如果想看 JDK 不同版本之间有何差异,增加或者删除了哪些 API,可以通过下面这个链接查看:New APIs in Java 17 - javaalmanac.io路径中的两个版本就是要对比的两个版本,其界面如下:同时,我们也可以通过 JDK 内置 jdeps 工具查找过期以及废弃API以及对应的替换jdeps --jdk-internals -R --class-path 'libs/*' $projectlibs是你的所有依赖的目录,$project是你
2022-01-06 15:37:58
95
原创 Java:对一个对象序列化和反序列化的简单实现
名词解释序列化:将Java对象转化成字节的过程反序列化:将字节转化成Java对象的过程字节:1字节(byte)= 8bit,bit就是计算机认识的二进制序列化的作用Java对象是在Java虚拟机中使用的,一旦Java进程结束,对象就会消失,要将只有虚拟机才认识的对象,保存在磁盘中,必须将对象转化成字节。在RPC中的用处:序列化将对象转换为字节流,然后通过网络传输进行发送 保存对象的状态:当Java进程需要重启时,可以将对象序列化后保存在文件中,对象的状态不会因为进程的关闭而丢失如
2022-01-06 15:30:37
143
原创 JUC之多线程锁问题
多线程锁8种问题锁状态:该部分全部围绕的是以下内容并结合相应的例子:synchronized实现同步的基础:Java中每个对象都可以作为锁。具体表现为以下三种形式:(之前只是简单的了解)对于普通同步方法,锁是当前实例对象。 对于静态同步方法,锁是当前类的Class对象。 对于同步方法块,锁是Synchonized括号里配置的对象当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁也就是说如果一个实例对象的普通同步方法获取锁后,该实例对象的其他普通方法必须等
2022-01-06 15:29:17
260
原创 在 GitHub 复活 80 年代的游戏代码,它们出自第一本售出百万册的计算机书籍
今儿我在 GitHub 看到了一个很眼熟的名字和头像,但是第一时间没想起来他是谁。算了先看看是个什么神仙开源项目,竟然能登上今天的 GitHub 趋势榜首。该项目是把《BASIC Computer Games》一书中的 BASIC 代码,采用比如:Java、Python、C#、JavaScript 等 8 种流行的编程语言重写一遍。项目地址:GitHub - coding-horror/basic-computer-games: An updated version of the clas..
2022-01-06 15:27:18
2079
转载 netty系列之:netty对SOCKS协议的支持
目录简介 SocksMessage Socks4Message Socks5Message 总结简介SOCKS是一个优秀的网络协议,主要被用来做代理,它的两个主要版本是SOCKS4和SOCKS5,其中SOCKS5提供了对认证的支持。通常来说我们使用SSH工具可以构建简单的SOCKS协议通道,那么对于netty来说,是怎么提供对SOCKS的支持呢?一起来看看吧。SocksMessage首先是代表SOCKS消息对象的SocksMessage。SocksMessage是一个接口
2022-01-06 15:26:28
190
原创 Kafka和RabbitMQ有哪些区别,各自适合什么场景?
经常有人问我有个 xx 需求,我应该用 Kafka 还是 RabbitMQ ?这个问题很常见,而且很多人对二者的选择也把握不好。所以我决定写篇文章来详细说一下:Kafka 和 RabbitMQ 的区别,适用于什么场景?同时,这个问题在面试中也经常问到。下面我会通过 6 个场景,来对比分析一下 Kafka 和 RabbitMQ 的优劣。一、消息的顺序有这样一个需求:当订单状态变化的时候,把订单状态变化的消息发送给所有关心订单变化的系统。订单会有创建成功、待付款、已支付、已发
2022-01-06 15:25:20
160
原创 写给程序员的机器学习入门 (九) - 对象识别 RCNN 与 Fast-RCNN
因为这几个月饭店生意恢复,加上研究 Faster-RCNN 用掉了很多时间,就没有更新博客了????。这篇开始会介绍对象识别的模型与实现方法,首先会介绍最简单的 RCNN 与 Fast-RCNN 模型,下一篇会介绍 Faster-RCNN 模型,再下一篇会介绍 YOLO 模型。图片分类与对象识别在前面的文章中我们看到了如何使用 CNN 模型识别图片里面的物体是什么类型,或者识别图片中固定的文字 (即验证码),因为模型会把整个图片当作输入并输出固定的结果,所以图片中只能有一个主要的物体或者固定数量的文
2021-12-30 21:34:58
211
原创 写给程序员的机器学习入门 (九) - 对象识别 RCNN 与 Fast-RCNN
因为这几个月饭店生意恢复,加上研究 Faster-RCNN 用掉了很多时间,就没有更新博客了????。这篇开始会介绍对象识别的模型与实现方法,首先会介绍最简单的 RCNN 与 Fast-RCNN 模型,下一篇会介绍 Faster-RCNN 模型,再下一篇会介绍 YOLO 模型。图片分类与对象识别在前面的文章中我们看到了如何使用 CNN 模型识别图片里面的物体是什么类型,或者识别图片中固定的文字 (即验证码),因为模型会把整个图片当作输入并输出固定的结果,所以图片中只能有一个主要的物体或者固定数量的文
2021-12-30 21:34:12
115
原创 写给程序员的机器学习入门 (九) - 对象识别 RCNN 与 Fast-RCNN
因为这几个月饭店生意恢复,加上研究 Faster-RCNN 用掉了很多时间,就没有更新博客了????。这篇开始会介绍对象识别的模型与实现方法,首先会介绍最简单的 RCNN 与 Fast-RCNN 模型,下一篇会介绍 Faster-RCNN 模型,再下一篇会介绍 YOLO 模型。图片分类与对象识别在前面的文章中我们看到了如何使用 CNN 模型识别图片里面的物体是什么类型,或者识别图片中固定的文字 (即验证码),因为模型会把整个图片当作输入并输出固定的结果,所以图片中只能有一个主要的物体或者固定数量的文
2021-12-30 21:09:12
4958
原创 Dapr 知多少 | 分布式应用运行时
IntroDapr 官方团队已于最近(2021.2.17)正式发布Dapr v1.0,Dapr已正式生产可用,可以部署到自托管环境或 Kubernetes 集群。对于绝大多数开发者来说,想必对Dapr只是有所耳闻,而具体是什么(What),可以解决什么样的问题(Why&How),有怎样的应用场景(Where),并不知悉。本文就尝试简要梳理下Dapr,并尝试回答以上问题。What's DaprDistributed Application Runtime. An event-dr...
2021-12-30 21:05:14
122
原创 图解 | 原来这就是网络
你是一台电脑,你的名字叫 A很久很久之前,你不与任何其他电脑相连接,孤苦伶仃。直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起来。用一根网线连接起来怎么就能"通信"了呢?我可以给你讲 IO、讲中断、讲缓冲区,但这不是研究网络时该关心的问题。如果你纠结,要么去研究一下操作系统是如何处理网络 IO 的,要么去研究一下包是如何被网卡转换成电信号发送出去的,要么就仅仅把它当做电脑里有个小人在开枪吧~反正,你们就是连起来了,并且可以.
2021-12-30 21:03:45
95
原创 MySQL慢日志优化
慢日志的性能问题造成 I/O 和 CPU 资源消耗:慢日志通常会扫描大量非目的的数据,自然就会造成 I/O 和 CPU 的资源消耗,影响到其他业务的正常使用,有可能因为单个慢 SQL 就能拖慢整个数据库的性能,而且这种慢 SQL,在实际业务场景下,通常都是程序发起数个 SQL 请求,通过 SHOW PROCESSLIST 命令可以捕捉到同时有 N 个类似的 SQL 请求在执行。 锁等待消耗:由于慢 SQL(select 查询)会阻塞 MDL 锁的获取,所以针对 XtraBackup 全量备份和针对表的
2021-12-17 20:52:01
983
原创 MySQL基础之DML语句
DML 语句DML(Data Manipulation Language)语句:数据操纵语句。用途:用于添加、修改、删除和查询数据库记录,并检查数据完整性。常用关键字:insert、update、delete、select等。DML 操作的对象是库表的数据(记录)。主要包括插入(insert)、更新(update)、删除(delete)和查询(select)。DML 语句是开发人员使用最频繁的操作。1.插入记录插入一条记录insert into tablename (f
2021-12-17 20:51:28
1774
原创 如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目
目录前言 项目目录 搭建项目 1. docker安装启动mysql以及redis 1.1 安装mysql 1.2 安装redis 2. 初始化数据库 3.创建项目 4.初始化代码 4.1 全局配置文件以及启动类 4.2 实体类 4.3 Redis工具类 4.4 Mysql 数据库操作 4.5 Service层 4.6 Controller 控制层 4.7 pom依赖 测试前言有时候我们需要快速启动一些项目,但
2021-12-17 20:49:51
261
原创 IO多路复用技术总结
目录IO 多路复用概述 网络IO模型 同步/异步 阻塞/非阻塞 IO多路复用 select select调用 timeval结构体 select置位 fd_set结构体 select使用 Server client 简易聊天室select版本 server client poll调用 struct pollfd nfds timeout 返回值 poll使用 epoll调用 epoll_create epoll_ct
2021-12-17 20:48:26
244
原创 单例设计模式
一、概述1、什么是单例设计模式?在某些特殊场合中,一个类只能够产生一个实例对象,并且这个实例对象要可以对外提供访问。这样的类叫做单例类, 而设计单例的流程和思想叫做单例设计模式。单例模式属于设计模式三大类中的创建型模式。2、单例设计模式的特点单例模式具有典型的三个特点:只有一个实例。 自我实例化。 提供全局访问点。注意:注:注意单例模式所属类的构造方法是私有的,所以单例类是不能被继承的。(这句话表述的有点问题,单例类一般情况只想内部保留一个实例对象,所以会选择将构造函数声.
2021-12-17 20:47:28
324
原创 最左前缀有手就会,那索引下推呢?
联合索引的最左前缀原则属于面试高频题,想必大部分同学都知道一些,但是,那些不符合最左前缀的部分,会怎么样呢(索引下推)索引下推不算高频题,知道的同学应该不是很多(不过并不代表有啥难度哈,挺简单的),学起来装波杯老规矩,背诵版在文末。点击大厂面试火箭计划可以直达我收录整理的各大厂面试真题引子看下面这张用户表,包含主键 id、身份证号 id_card、姓名 name、年龄 age和性别 sex,并且在 id_card 上建立了辅助索引(普通索引/非聚集索引)如果现在有一个高频..
2021-12-17 20:46:45
103
原创 HDD深圳站:全生命周期赋能开发者,华为引领应用生态升级
12月14日,由华为开发者联盟主办的HDD(HUAWEI Developer Day)于深圳举行。此次HDD主论坛,围绕打造应用全生命周期服务,介绍了华为在创新孵化、开发测试、应用分发和运营增长阶段的对应方案,并就移动互联网2021年的挑战和变化、以及2022年的新方向,和互联网各行业大咖展开圆桌谈论。沙龙特设创新开发分论坛和运营增长分论坛,围绕应用的开发与运营,更加有针对性地为开发者展示包括HarmonyOS Codelabs、HMS Core、HUAWEI AppGallery Connect、AppT
2021-12-17 20:45:43
136
原创 JUC之Lock接口以及Synchronized回顾
Lock接口Synchronized关键字回顾:多线程编程步骤(上):创建资源类,在资源类创建属性和操作方法 创建多个线程,调用资源类的操作方法创建线程的四种方式:继承Thread 实现Runnable接口 使用Callable接口 使用线程池使用synchronized同步实现售票问题:只有当资源是空闲的时候,线程才能访问。/** * 创建资源 */class ticket{ private int number = 30; pub...
2021-12-17 20:44:56
647
原创 面向深度学习的缓存替换算法
面向深度学习的缓存替换算法摘要:本文针对深度学习的落地痛点进行了分析并提出通过改善高速缓存替换算法的方式来提升深度学习的落地能力。具体而言,我们从降低能耗、存储介质材料、降低算法实现难度、综合考虑各级存储、结合机器(深度)学习等方面都进行了详细的分析并给出了几种可行的改进思路。关键字:缓存;替换算法;深度学习;机器学习1. 引言今天的人工智能可以取得如此辉煌的进步,很大程度上要归功于深度学习的蓬勃发展。虽然近几年来深度学习在图像识别、语音处理、机器翻译、智慧城市等领域都取得了一些落地成果,但
2021-12-17 20:44:14
355
原创 RocketMQ源码详解 | Broker篇 · 其五:高可用之主从架构
概述对于一个消息中间件来讲,高可用功能是极其重要的,RocketMQ 当然也具有其对应的高可用方案。在 RocketMQ 中,有主从架构和 Dledger 两种高可用方案:第一种通过主 Broker 将消息发送到从 Broker 实现高可用,在主 Broker IO 压力大或宕机的时候,从 Broker 可以接管读请求,但这种方案不支持在主 Broker 宕机后自动进行故障转移,且从 Broker 不支持写请求,也就是说在主 Broker 宕机后我们只能手动处理。第二种是在 RocketMQ
2021-12-17 20:42:01
774
原创 面试常遇的打家劫舍问题你学会了吗~
打家劫舍I问题描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。分析问
2021-11-27 21:16:51
243
原创 字节面试官狂问我:设计模式了
面试官:我看你的简历写着熟悉常见的设计模式,要不你来简单聊聊你熟悉哪几个吧?候选者:常见的工厂模式、代理模式、模板方法模式、责任链模式、单例模式、包装设计模式、策略模式等都是有所了解的候选者:项目手写代码用得比较多的,一般就模板方法模式、责任链模式、策略模式、单例模式吧候选者:像工厂模式、代理模式这种,手写倒是不多,但毕竟Java后端一般环境下都用Spring嘛,所以还是比较熟悉的。面试官:要不你来手写下单例模式呗?候选者:单例模式一般会有好几种写法候选者:饿汉式、简单懒汉式(在方法
2021-11-27 21:14:50
139
原创 单例模式,真不简单
一、前言单例模式无论在我们面试,还是日常工作中,都会面对的问题。但很多单例模式的细节,值得我们深入探索一下。这篇文章透过单例模式,串联了多方面基础知识,非常值得一读。1、什么是单例模式?单例模式是一种非常常用的软件设计模式,它定义是单例对象的类只能允许一个实例存在。该类负责创建自己的对象,同时确保只有一个对象被创建。一般常用在工具类的实现或创建对象需要消耗资源的业务场景。单例模式的特点:类构造器私有 持有自己类的引用 对外提供获取实例的静态方法我们先用一个简单示例了解一.
2021-11-27 21:13:11
190
原创 简单的线程池
概要此线程池拥有一个被所有工作线程共享的任务队列。线程池用户提交的任务,被线程池保存在任务队列中,工作线程从任务队列中获取任务并执行。任务是可拥有返回值的、无参数的可调用(callable)对象,或者是经 std::bind 绑定了可调用对象及其参数后的调用包装器。具体而言可以是自由函数(也称为全局函数) lambda 函数对象(也称为函数符) 类成员函数 包装了上述类型的 std::function bind 调用包装器该线程池异步地执行任务。当任务被提交进线程池后,用户不必等
2021-11-27 21:12:26
161
原创 耗时一年,终于斩获了阿里38*16薪的offer(Java岗)
双非一本、二本能进大厂么?能!我,双非18线小城市二本,今年上岸阿里的P7岗(Java)但是作为一个错过秋招,学历不漂亮,实习转正被忽悠,从18线小城市到北京实习,投了上百份简历的苦逼双非学生,还是想说一句:进大厂太难难难难了据说有6成的大学生都相信在毕业十年内能年薪过百万,而我就是其中的一员,在校时就对毕业找工作充满了信心,用蛮王一句话就是“我的大刀早已饥渴难耐了”。理想是丰满的现实是残酷的,说是投了上百份简历真的不过分,然而最后只混到了一个外包的工作(XX国际),天天工作就是CRU...
2021-11-27 21:10:45
337
原创 面试官问我JVM调优,我忍不住了
面试官:今天要不来聊聊JVM调优相关的吧?面试官:你曾经在生产环境下有过调优JVM的经历吗?候选者:没有面试官:...候选者:嗯...是这样的,我们一般优化系统的思路是这样的候选者:1. 一般来说关系型数据库是先到瓶颈,首先排查是否为数据库的问题候选者:(这个过程中就需要评估自己建的索引是否合理、是否需要引入分布式缓存、是否需要分库分表等等)候选者:2. 然后,我们会考虑是否需要扩容(横向和纵向都会考虑)候选者:(这个过程中我们会怀疑是系统的压力过大或者是系统的硬件能力不足导
2021-11-27 20:42:56
132
原创 深度剖析Spring Boot自动装配机制实现原理
在前面的分析中,Spring Framework一直在致力于解决一个问题,就是如何让bean的管理变得更简单,如何让开发者尽可能的少关注一些基础化的bean的配置,从而实现自动装配。所以,所谓的自动装配,实际上就是如何自动将bean装载到Ioc容器中来。实际上在spring 3.x版本中,Enable模块驱动注解的出现,已经有了一定的自动装配的雏形,而真正能够实现这一机制,还是在spirng 4.x版本中,conditional条件注解的出现。ok,我们来看一下spring boot的自动装配是怎么一回
2021-11-27 20:40:48
121
原创 k8s网络模型与集群通信
在k8s中,我们的应用会以pod的形式被调度到各个node节点上,在设计集群如何处理容器之间的网络时是一个不小的挑战,今天我们会从pod(应用)通信来展开关于k8s网络的讨论。小作文包含如下内容:k8s网络模型与实现方案 pod内容器通信 pod与pod通信 pod与service通信 外网与service通信k8s网络模型与实现方案k8s集群中的每一个Pod(最小调度单位)都有自己的IP地址,即ip-per-pod模型。在ip-per-pod模型中每一个pod在集群中保持唯一性,
2021-11-16 21:47:57
1204
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人