数据结构
文章平均质量分 83
司腾
程序不是年轻的专利,但是,它属于年轻!
展开
-
被裁后重振旗鼓突击一个月,靠访问量破百万Java10W字面经再进大厂
今年春天,“裁员”这个tag充斥了打工人的朋友圈。疫情袭来,「金三银四」变成了「铜三铁四」,各个大厂裁员的新闻在热搜榜上此起彼伏。阿里腾讯被传裁员比例10%-30%,京东被曝各业务线启动裁员,最狠要属有赞,回收的工牌堆积如山。裸辞的打工人本来指望着三四月好好谋个新岗位,却看着各家砍掉的headcount傻了眼。困境之中,各路神仙开始出没,兜售被裁心得,教导打工人如何评估自身被裁风险。有人开始担忧:卷王虽然被迫离开大厂,可去中小厂照样拿达不溜,还能挤压你我的生存空间。也有人不禁感叹,幸亏编程太难,如果原创 2022-05-06 16:51:44 · 115 阅读 · 0 评论 -
经典动态规划问题详细解析:最短编辑距离算法原理分析和解法实现
基本概念编辑距离问题: 编辑距离问题困难,解法却是很漂亮,而且也是少有的比较实用的算法 编辑距离使用场景: 对于修改文章的错位内容.限制文章只能修改20个字,且支持增,删,替换操作,求修改的最优方案 对于衡量DNA的相似程度.DNA序列是由A, G, C, T组成的序列,可以类比成字符串,可以通过编辑距离衡量两个DNA序列的相似度,编辑距离越小,说明这两个DNA序列越相似 思路分析编辑距离问题: 给定两个字符串s1和s2,只能使用3种操作,将s1变成s2,求最小的操...原创 2022-01-20 21:55:18 · 476 阅读 · 0 评论 -
这个反编译工具真正强大,绝逼Java 开发神
在上一期的开源项目推荐中,我推荐了一款强大的反编译工具,我在文中提到说要写一篇专门来介绍这个神器,今天这篇文章就来了。稍有迟到,抱歉(。・_・。)ノjadx 是一款功能强大的反编译工具,使用起来简单方便(拖拽式操作),不光提供了命令行程序,还提供了 GUI 程序。一般情况下,我们直接使用 GUI 程序就可以了。jadx 支持 Windows、Linux、 macOS,能够帮我们打开.apk,.dex,.jar,.zip等格式的文件就比如说我们需要反编译一个 jar 包查看其源码的...原创 2022-01-14 01:18:44 · 4464 阅读 · 1 评论 -
用规则引擎让你一天上线十个需求
业务背景我在一家打车公司上班,运营大佬们认为不同用户在不同场景下有不同打车需求,设计出来很多子品类。于是我们组会承接这样一类需求:计算用户不同品类的各种实时单量,如:快车呼单量、拼车完单量。这样的需求,一般处理流程是这样的:描述一下这个图:用户在订单流转状态关键节点发生动作时,系统会发一个MQ消息让供其他系统消费。其他系统通过一个明确的据口径判断这条msg是否符合当前业务逻辑,进而存db或是丢弃。比如一个需求要计算:拼车完单量,一个靠谱的拼车rd告诉你口径是:Ifaa.bb.cc=..原创 2022-01-13 14:18:40 · 440 阅读 · 0 评论 -
不会一致性hash算法,劝你简历别写搞过负载均衡
这两天看到技术群里,有小伙伴在讨论一致性hash算法的问题,正愁没啥写的题目就来了,那就简单介绍下它的原理。下边我们以分布式缓存中经典场景举例,面试中也是经常提及的一些话题,看看什么是一致性hash算法以及它有那些过人之处。构建场景假如我们有三台缓存服务器编号node0、node1、node2,现在有3000万个key,希望可以将这些个key均匀的缓存到三台机器上,你会想到什么方案呢?我们可能首先想到的方案,是取模算法hash(key)% N,对key进行hash运算后取模,N是机器的数..原创 2022-01-12 14:49:47 · 116 阅读 · 0 评论 -
面试中经常被问到Java引用类型原理,带你深入剖析
仅仅是学习了架构的人:架构是设计出来的。实际干了n年架构的人:架构是被甲方多变的业务需求逼出来的。新入行的人:我这个软件采用国际最为先进的xxx架构。。。行业老鸟:(会心泯然一笑)初学者以为的学架构和系统设计的目的...原创 2022-01-12 14:47:17 · 177 阅读 · 0 评论 -
一文了解 MySQL 事务和隔离级别
1. 什么是事务事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位(不可再进行分割),由一个有限的数据库操作序列构成(多个DML语句,select语句不包含事务),要不全部成功,要不全部不成功。如 A 给 B 要划钱,A 的账户-1000 元, B 的账户就要+1000 元,这两个 update 语句必须作为一个整体来执行,不然 A 扣钱了,B 没有加钱这种情况就是错误的。那么事务就可以保证 A 、B 账户的变动要么全部一起发生,要么全部一起不发生。2. 事务特性事务具有 4 个属..原创 2022-01-12 14:38:50 · 160 阅读 · 0 评论 -
java 8 - java 17 升级指北
2014年发布的java SE 8和2017年发布的java EE 8,至今还是使用最广泛的java版本,大部分java开发者对于java 8之后的升级总是敬而远之,这跟java 9以后的破坏性升级和oracle的商用协议有关,但随着9月java 17的发布,我们有更多理由去升级和在新项目中使用更新的java了。为什么要升级?java 9之后的Java改变了更新策略,java 11是8之后的第一个LTS版本,之后每隔半年更新一个小版本,三年更新一个LTS版本,所以java 17是下一个LTS版本。原创 2022-01-11 14:20:19 · 7161 阅读 · 0 评论 -
基于ffmpeg实现音视频转码
一、背景偶然的机会接触了ffmpeg,当时是从B站下载的视频转移到笔记本上看。使用b站手机客户端下载的视频格式为m4s的两个文件(video.m4s和audio.m4s),需要转成普通播放器支持的mp4格式,得以知道支持音视频转码的ffmpeg这个强大的开源工具。二、软件介绍ffmpeg支持windows、linux和mac,安装简单,使用方便。Windows:官网ffmpeg.org/ 下载,官网只提供源码,初次学习可以从github下载编译后的可执行文件github.com/BtbN原创 2022-01-11 13:50:46 · 1978 阅读 · 0 评论 -
线程池源码撸完,面试还怕被问线程池
前言我们知道不论是面试还是工作当中,都会接触到线程池,线程池更是面试官爱问的知识点,今天我带着大家来看一看线程池的源码,虽然看源码是一件十分枯燥无味的事情,但是你不卷,总有人卷,谁也不甘心被优化!!!跟着我,卷起来!!!继承体系线程池的继承体系如下图所示线程池状态线程池状态转换如下图所示 首先创建出线程池,并且没有调用shutdown方法之前,线程池就处于正常的运行状态,即RUNNING。处于RUNNING状态的线程池,你提交的任务(调用submit或者execute方法)原创 2022-01-11 13:27:04 · 150 阅读 · 0 评论 -
Java8-15的新特性,你知道几个?
0. 阅读完本文你将会学到6个实用的Java新特性自从2018年开始,Java采用了每六个月发布一次新版本的策略。这样的策略使得Java保持了新鲜感以及强劲的生命力,在这篇文章中,我将会为大家带来6个实用的Java新特性。1. Optioal类NullPointerException是Java所有异常中最经典的一种。大家肯定对它不陌生,它经常出乎意料地出现,让人头疼不已。好在Java 8为我们引入了Optional类,Java 10完善了这一机制。从本质上讲,Optional类允许你包装一原创 2022-01-10 23:10:45 · 175 阅读 · 0 评论 -
查询 MySQL 字段注释的 5 种方法~
很多场景下,我们需要查看 MySQL 中表注释,或者是某张表下所有字段的注释,所以本文就来盘点和对比一下查询注释的几种方式。创建测试数据库开始之前咱们先创建一个数据库,以备下面演示使用。-- 如果存在就先删除数据库drop database if exists test2022;-- 创建数据库create database test2022;-- 切换数据库use test2022;-- 创建表和字段(以及相应的注释)CREATE TABLE `student` ( `..原创 2022-01-10 14:08:47 · 330 阅读 · 0 评论 -
玩转设计模式-多来源的数据结构统一
看完本文????你将:清楚多来源的数据如果做到结构统一 对模板方法模式有更多的了解 对简单工厂(虽说不是设计模式中的一种,但是用的还是挺多的)能有更深的理解 知道设计模式之间的组合使用前言本文主要是记录和分享我在做ETL的业务时解决多种不同来源的数据进行结构化统一的问题。本文涉及了23种设计模式中的工厂模式和模板方法模式。业务说明在消息队列中,有各种不同平台的素材数据,但是每个平台的素材数据可能都稍有不同,我们需要将这些数据处理一下,最后输出统一的数据格式供下游进行计算处理;同.原创 2022-01-10 13:46:56 · 895 阅读 · 0 评论 -
Maven最全使用指南,都在这里了
张三最近做了个项目,但是这个项目需要 30 多个 jar包。他只能从网上一个个去下载,下载完还要一个一个手动导入。好不容易搞完了,结果却发现有些 jar 包版本竟然不兼容,搞了一天也没搞好。真的是“豆腐拌腐乳-越搞越糊涂!。”经过一个多月的疯狂加班,这个项目终于做好了,张三部署好测试环境之后就交给测试人员李四了。张三想着终于能好好摸鱼了,谁知道李四工作特认真,一会就测出来一堆 bug。张三只能立即去更改 bug,改完还要手动编译、打包项目。最多的时候一天打包了十几次,可把张三累坏了。那如原创 2022-01-10 13:33:05 · 2031 阅读 · 0 评论 -
数据库与缓存一致性方案分享
前言 做C端相关业务,目前主流的关系型数据库在高并发的查询请求场景下,很难做到低延迟的高并发,甚至有可能被打挂。因此引入缓存中间件是一个常见的解决方案,但如何保证缓存与数据库的一致性,便成为了一个棘手的问题,这次我们拿常见的Mysql和Redis举例。正文 保持缓存和数据库的一致性,最简单的做法就是直接在业务中去双写或删除保持一致性;如果要跟业务解耦,就要采用订阅binlog或者定时刷新的方式完成。业务耦合的一致性方案业务中耦合更新缓存 其中...原创 2022-01-08 20:49:59 · 125 阅读 · 0 评论 -
我的天,速度提升了8倍的Maven来了,速看~
周末被 maven-mvnd 刷屏了,于是我也下载了一个 mvnd 体验了一把。虽然测试的数据都是基于我本地项目,不具备普适性和权威性,但也足以说明问题。它的测试结果远远超出我的预期,下面一起来看。什么是 mvnd?mvnd 是 Maven Daemon 的缩写 ,翻译成中文就是 Maven 守护进程。mvnd 是 apache/maven 的一个子项目,它并不是一个全新的构建工具,而是对 maven 的扩展。它内置了 maven,其实现原理是构建了一个或者多个 maven 守护进程来执行..原创 2021-12-27 14:45:57 · 261 阅读 · 0 评论 -
用Java手写Redis服务端,从设计者的角度聊一聊Redis本身
零,起因我为什么要造redis这个轮子? 1,破除对redis神秘感。 2,“基础服务中台”的同事们在开会讨论redis云,以及redis代理。 3,开一个redis资源并不是容易事,为什么不可以不可以写成java直接推送到未来云上,简单方便。 以这个思路我开始使用业余时间研究了redis的tcp通讯原理与redis命令,出发点是写一个redis云代理之类的云管理软件,但是还是忍不住写成了java版的redis,本文章主要分享redis的编写心路历程。复制代码...原创 2021-12-25 23:48:57 · 3626 阅读 · 1 评论 -
更快的Maven来了
Maven经常被拿来和Gradle做对比,最大的劣势之一就是Maven构建慢,Gradle比Maven构建速度快2到10倍,而如今Maven也可以更快了。Apache Maven团队从Gradle和Takari(Maven生命周期优化器)中获得灵感对Maven进行了强化,衍生出maven-mvnd项目,今天带你来尝尝鲜。简单介绍mvnd并不是对Maven进行了重构,而是内置了Maven。它实际上是一个或者多个Maven守护进程,用来执行实际的构建服务。一个守护进程实例可以为来自mvnd客户端的...原创 2021-12-25 23:38:06 · 389 阅读 · 0 评论 -
全网最详细RocketMQ教程之RocketMQ特性和术语
RocketMQ特性和术语RocketMQ基本特性1、订阅与发布消息的发布是指某个生产者向某个topic发送消息;消息的订阅是指某个消费者关注了某个topic中带有某些tag的消息。2、消息顺序消息有序指的是一类消息消费时,能按照发送的顺序来消费。例如:一个订单产生了三条消息分别是订单创建、订单付款、订单完成。消费时要按照这个顺序消费才能有意义,但是同时订单之间是可以并行消费的。RocketMQ可以严格的保证消息有序。3、消息过滤RocketMQ的消费者可以根据Tag进行消息过滤原创 2021-12-25 23:35:19 · 479 阅读 · 0 评论 -
Alibaba内部的“实战Redis手册” 去其糟粕,取其精华
近几年,随着移动互联网的飞速发展,我们享受着整个社会的技术进步带来的便利,但同时也给从业者带来了如何保证项目的高并发、低延时的技术挑战,相应的互联网技术也随之发生了重大变革,NoSQL技术得到了蓬勃的发展。Redis作为基于键值对的NoSQL数据库,具有高性能、丰富的数据结构、持久化、高可用、分布式等特性,同时Redis本身非常稳定,已经得到业界的广泛认可和使用。掌握Redis已经逐步成为开发和运维人员的必备技能之一。基于上述情况,本次将给大家分享我的珍藏《阿里内部Redis学习笔记》这本笔记对Re原创 2021-12-24 16:48:29 · 209 阅读 · 0 评论 -
一线互联网Java面经(阿里,远算,有赞,大疆,华为)已拿offer
阿里中间件一面:40多分钟,以下顺序可能是乱的: 自我介绍 本科和研究生期间成绩 散列表什么实现 冲突了怎么解决 HashMap中扩容和缩容怎么做 dfs和bfs区别 TCP怎么保证连接的唯一性(答案: TCP的源端口、目的端口、以及IP层的源IP地址、目的IP地址四元组唯一的标识了一一个TCP连接) TCP怎么断开连接(四次挥手) 什么是进程上下文 上下文中要保存哪些信息(憋住了不知道说啥,让我大胆猜,..原创 2021-12-24 16:22:35 · 310 阅读 · 0 评论 -
一起讨论下,消息幂等(去重)通用解决方案
消息中间件是分布式系统常用的组件,无论是异步化、解耦、削峰等都有广泛的应用价值。我们通常会认为,消息中间件是一个可靠的组件——这里所谓的可靠是指,只要我把消息成功投递到了消息中间件,消息就不会丢失,即消息肯定会至少保证消息能被消费者成功消费一次,这是消息中间件最基本的特性之一,也就是我们常说的“AT LEAST ONCE”,即消息至少会被“成功消费一遍”。举个例子,一个消息M发送到了消息中间件,消息投递到了消费程序A,A接受到了消息,然后进行消费,但在消费到一半的时候程序重启了,这时候这个消息并没有标记原创 2021-12-24 16:16:25 · 184 阅读 · 0 评论 -
让我们一起探索一下Netty(Java)底层的“零拷贝Zero-Copy”技术
Netty的零拷贝Netty中的零拷贝与我们传统理解的零拷贝不太一样。传统的零拷贝指的是数据传输过程中,不需要CPU进行数据的拷贝。主要是数据在用户空间与内核中间之间的拷贝。传统意义的零拷贝Zero-Copy describes computer operations in which the CPU does not perform the task of copying data from one memory area to another.在发送数据的时候,传统的实现方式..原创 2021-12-24 13:32:18 · 207 阅读 · 0 评论 -
面试官:Redis 分布式锁如何自动续期?
1、Redis 实现分布式锁 指定一个 key 作为锁标记,存入 Redis 中,指定一个 唯一的用户标识作为 value。 当 key 不存在时才能设置值,确保同一时间只有一个客户端进程获得锁,满足互斥性特性。 设置一个过期时间,防止因系统异常导致没能删除这个 key,满足防死锁特性。 当处理完业务之后需要清除这个 key 来释放锁,清除 key 时需要校验 value 值,需要满足只有加锁的人才能释放锁 。 2、问题如果这个锁的过期时间是30秒,但是业务运行超原创 2021-12-23 21:46:10 · 251 阅读 · 0 评论 -
北京JAVA开发3年,拿到美团35K的offer面试心得
前言长文干货提示,文章为大家完整记录了一位在北京做了3年的JAVA开发的朋友,如何通过美团的面试及拿到35K的offer,请记得点赞收藏支持哦!文章末尾有为大家准备好的JAVA面试资料。面试总结JAVA基础1. JAVA中的几种基本数据类型是什么,各自占用多少字节,Integer占几个字节. 1 2 3 4 5 八种基本数据类型,int(4),short(2),byte(1),long(8),float(4),double(8原创 2021-12-23 21:18:11 · 373 阅读 · 0 评论 -
Java垃圾收集器
今天就来详细讲讲HotSpot经典的几款垃圾收集器。一、各款经典收集器之间的关系图1、图片展示了各种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用(这个关系不是一成不变的,由于维护和兼容性测试的成本,在JDK 8时将 Serial + CMS、ParNew + Serial Old这两个组合声明为废弃,并在JDK 9中完全取消了这些组合的支持),图中收集器所处的区域,则表示它是属于新生代收集器或是老年代收集器。2、在介绍这些收集器各自的特性之前,需要明确一个原创 2021-12-23 14:52:39 · 172 阅读 · 0 评论 -
一文搞懂java中的定时任务框架-分布式(xxl-job)
阅读收获✔️1. 了解常用的分布式应用定时任务框架✔️2. 掌握xxl-job定时任务框架搭建及使用常用的分布式任务调度系统xxl-job: 是大众点评员工徐雪里于2015年发布的分布式任务调度平台,是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 Quartz:Java事实上的定时任务标准。但Quartz关注点在于定时任务而非数据,并无一套根据数据处理而定制化的流程。虽然Quartz可以基于数据库实现作业的高可用,但缺少分布式并行调度的功能 TB..原创 2021-12-21 14:33:48 · 7188 阅读 · 0 评论 -
springboot-如何开启debug日志?
如何开启?在配置文件,配置debug=true。输入的时候,会有智能提示。启动成功,打印debug日志其实就是打印了debug日志,然后具体多了什么日志信息呢?springboot自动配置有哪些? 有哪些servlet请求映射? 有哪些拦截器?springboot有哪些自动配置?servlet请求映射拦截器参考...原创 2021-12-20 21:55:09 · 4059 阅读 · 0 评论 -
RTO, RPO是啥?是割韭菜的意思么?
从嫩芽初发到绿意灼灼,韭菜到底经历了什么?想IPO想疯了的创业者最清楚。第一次听到RPO,我以为是专门割韭菜的IPO,加上说这话的人不断对我挤眉弄眼,以至于我手抖,怎么搜都搜不到这个技术名词。到了最后我才弄明白,他说的是RPO,而不是IPO,是灾备场景中的名词。好家伙,又是缩写!不过经过多年的宣传,它俨然成了标准,反而全称没几个人记得住。打个比方,你知道HIV,但是并不知道HIV的英文全称是啥,就是这么朗朗上口。但我们今天就非要看一下它的全称。RTO = Recovery Time O原创 2021-12-20 21:50:36 · 466 阅读 · 0 评论 -
数据库读写分离同步延时问题怎么解决?
数据库读写分离是很多公司绕不过去的一个发展阶段,从单体数据库,到主备模式,再到读写分离,分库分表。每一个阶段都能为我们解决一些问题,但也带来了新的挑战。本篇文章我们就主要研究一下数据库读写分离及其带来的问题如何解决。1 数据库架构的发展历程首先简单介绍一下数据库架构的发展历程,基本就是单体、主备、读写分离、分库分表,下面我们分别进行介绍。1.1 单体架构业务发展初期,数据库的压力相对较小,这时候使用单独一个库就可以。引出的问题:如果数据库出现故障,我们的业务就不能使用,只能说.原创 2021-12-18 14:13:31 · 3955 阅读 · 0 评论 -
百度搜索中“鱼龙混杂”的加盟信息,如何靠AI 解决?
百度Geek说正在上传…重新上传取消架构师 @ 百度导读:从粗放式流量覆盖到精细化用户时长提升的转变,以及构建个性化、场景化文案创意的生成,迫切需要一套自动化、系统化的智能内容生成解决方案,来缓解人工创作下的耗时长、成本高等问题。本文将从行业背景出发,全面介绍下招商加盟行业下内容场景的特点,最后重点介绍加盟星在招商加盟行业下探索的 AI 创作解决方案。全文5103字,预计阅读时间16分钟在百度搜索引擎中,每天有几百万的流量是招商加盟相关的,但招商加盟行业的信息鱼龙混杂,仿冒、虚假的...原创 2021-12-15 13:24:31 · 193 阅读 · 0 评论 -
因为LRU设计效率太低被pass了
最近有个小伙伴跟我诉苦,说他没面到LRU,他说他很久前知道有被问过LRU的但是心想自己应该不会遇到,所以暂时就没准备。奈何不巧,这还就真的考到了!他此刻的心情,可以用一张图来证明:他说他最终踉踉跄跄的写了一个效率不是很高的LRU,面试官看着不是很满意……后来果真GG了。防止日后再碰到这个坑,今天和大家一起把这个坑踩了,这道题我自身刚开始也是用较为普通的方法,但是好的方法虽然不是很难但是想了真的很久才想到,虽然花了太多时间不太值,总算是自己想出来了,将这个过程给大家分享一下(只从算法的角度,不原创 2021-12-10 13:26:34 · 176 阅读 · 0 评论 -
面试官:如何理解JVM中的强引用、软引用、弱引用、虚引用?
整体架构强引用强引用是默认支持,当内存不足的时候,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会回收对象。强引用是最常见的普通对象引用,只要还有强引用指向对象,对象就存活,垃圾回收器不会处理存活对象。一般把一个对象赋给一个引用变量,这个引用变量就是强引用。当一个对象被强引用变量所引用,它就处于可达状态,是不会被垃圾回收的,即使之后都不会再用到了,也不会回收。因此强引用是造成Java内存泄漏的主要原因之一。对于一个普通对象,如果没有其他引用关系,只要超过了引用的作用域或原创 2021-12-07 17:21:23 · 237 阅读 · 0 评论 -
Spring Cloud Gateway 修改响应数据
背景介绍有个金融类项目,客户对系统安全性比较看重,要求接口请求和响应的数据,都要按特定要求进行加密,防止敏感业务数据被抓包截取。现在设计流程已经拟定,客户端也解决了如何解密响应数据。服务端还没实现对响应数据进行加密。抽象出来,本质上要解决的问题是,如何修改响应数据。问题描述项目已经使用了Spring Cloud Gateway技术,响应数据可以在网关拦截。现在的问题是,如何修改响应数据。关键词:spring cloud gateway modify response body原创 2021-12-07 13:08:16 · 3390 阅读 · 0 评论 -
Talent Plan TinyKV Project1 StandaloneKV
6.824做完了,代码写的乱糟糟,想着重写一遍,整理下思路,后来发现了tinykv,相比于6.824还多了个事务,就准备把tinykv也做一下。文档翻译在本项目中,实现一个单机的、支持Column Family的KV存储服务。Column Family表示Key的命名空间,不同Column Family间可以有相同的Key存在。服务提供Put/Delete/Get/Scan四种基本操作。本项目可以拆解为两步去实现:实现单机的存储引擎。 实现原生的服务接口。tinykvpb.proto原创 2021-12-06 22:24:59 · 732 阅读 · 0 评论 -
原来获取Jvm信息如此简单
前言当线上出现问题的时候,最最最重要的是定位问题。一旦定位到问题了,一切都好办了。但是这个定位问题,需要的不仅仅是理论知识,还需要丰富的实操经验。而丰富的经验从哪里来呢,就是对于工具的运用和数据的分析中来,接下来主要介绍一下java中如何去获取JVM跟os的信息?下面让我们直接进入主题:JAVA代码里如何去获取JVM/OS的运行信息呢?Jvm信息使用ManagementFactory去获取 OS运行信息推荐使用oshi去获取<dependency>原创 2021-12-04 22:28:00 · 1249 阅读 · 0 评论 -
Spring中使用RestTemplate发送Http请求
作为一个Java开发选手,平时调用外部服务都是通过PRC接口,而这次业务下游只提供Http接口,就有点捉急...RestTemplate的基本使用RestTemplate是spring实现的,基于restful风格的http请求模板。使用RestTemplate可以简化请求操作的复杂性,同时规范了代码风格。Get请求// 将返回结果转换成POJO对象public <T> T getForObject(String url, Class<T> responseTyp原创 2021-12-04 22:15:55 · 472 阅读 · 0 评论 -
网络协议之:还在用HTTP代理?弱爆了, 快试试SOCKS5
简介存在即是合理,SOCKS5的出现是为了解决SOCKS4中不支持身份认证的大问题而出现的,毕竟大家对网络中的安全越来越重视了。没有认证的网络就好像是生活在摄像头下的人生,毫无隐私可言,实在是太可怕了。今天给大家深入讲解一下SOCKS5和它的应用。为什么要使用SOCKSSOCKS是一种代理服务协议,为什么会要有代理服务协议呢?因为在现代网络中,很多情况下,由于网络或者防火墙的原因,我们很难直接去访问对方的网络,所以需要一种代理机制来充当本地网络和大型网络之间的网关。代理服务器通过拦截原创 2021-12-03 20:36:08 · 414 阅读 · 0 评论 -
Protobuf 为啥比 JSON、XML 牛?
今天,我带大家更深层次的认识认识 Protobuf,如果你对 Protobuf 的用法还不熟悉,直接前往:developers.google.com/protocol-bu…。当对 Protobuf 有了基本的认识后,就会明白了 Protobuf 序列化的数据会比 JSON、XML 传输效率更高。那为啥会高呢?本篇就带着这个问题一探究竟。看表面对于 JSON、XML,为了便于数据传输时的可阅读性,会保留数据的结构化信息,举个 JSON 例子,如下:{ "name": "laomi原创 2021-11-30 16:01:53 · 1807 阅读 · 0 评论 -
异或运算的巧用→不用额外的变量,如何交换两个变量的值?
开心一刻 两头奶牛在一起吃草,其中一头(奶牛甲)越吃越慢,一副若有所思的模样,另一头奶牛(奶牛乙)发觉了,开始了对话 奶牛乙:搁那合计啥呢? 奶牛甲:你帮我合计合计 奶牛乙:咋地了 奶牛甲:我吃的是草,挤出来的是奶,也就是说我把没用的变成有用的了 奶牛乙:是这个事 奶牛甲:人呢,喝的是奶,拉出来的是粑粑 奶牛乙:咋地了 奶牛甲:他又把有用的变成没用的了,我这不白干了吗 奶牛乙:你说的不对 奶牛甲:不对吗? 奶牛乙:那粑粑做成化肥,有..原创 2021-11-30 14:26:45 · 455 阅读 · 0 评论