
其他
文章平均质量分 80
什么啊什么Q
keep slow
展开
-
RocketMq实现分布式事务
这篇讲有关RocketMQ实现分布式事务的理论知识,下篇也会示例 通过SpringCloud来实例RocketMQ实现分布式事务的项目。一、举个分布式事务场景列子:假设A给B转100块钱,同时它们不是同一个服务上。目标:就是A减100块钱,B加100块钱。实际情况可能有四种:1)就是A账户减100 (成功),B账户加100 (成功)2)就是A账户减100(失败),B账户加100 (失败)3)就是A账户减100(成功),B账户加100 (失败)4)就是A账户减...转载 2021-03-11 14:57:48 · 264 阅读 · 0 评论 -
html中script脚本的位置
首先需要知道:html文件是自上而下的执行方式,但引入的css和javascript的顺序有所不同,css引入执行加载时,程序仍然往下执行,而执行到<script>脚本是则中断线程,待该script脚本执行结束之后程序才继续往下执行。 所以,大部分网上讨论是将script脚本放在<body>之后,那样dom的生成就不会因为长时间执行script脚本而延迟阻塞,加快了页面的加载速度。 但又不能将所有的script放在body之后,因为有一些页面的效果的实现,是需转载 2021-02-22 16:51:57 · 959 阅读 · 0 评论 -
nginx基本功能
本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完。1Nginx能做什么——反向代理——负载均衡——HTTP服务器(动静分离)——正向代理以上就是我了解到的Nginx在不依赖第三方模块能处理的事情,下面详细说明每种功能怎么做。2反向代理反向代理应该是Nginx做的最多的一件事了。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果..转载 2021-02-19 17:12:44 · 95 阅读 · 0 评论 -
零拷贝原理
引言传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。这样做最大的好处是可以减少磁盘 I/O 的操作,因为如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进行实际的物理磁盘 I/O 操作。但是数据传输过程中的数据拷贝操作却导致了极大的 CPU 开销,限制了操作系统有效进行数据传输操作的能力。零拷贝( zero-copy )技术可以有效地改善数据传输的性能,在内核转载 2021-02-09 14:12:00 · 175 阅读 · 0 评论 -
用户态和内核态区别
操作系统用户态和内核态之间的切换过程1. 用户态和内核态的概念区别究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:1)例子 void testfork(){ if(0 = = fork()){ printf(“create new process success!/n”);}printf(“te...转载 2021-02-09 14:04:23 · 2368 阅读 · 0 评论 -
容错、高可用、灾备的区别
标题里面的三个术语,很容易混淆,专业人员有时也会用错。本文就用图片解释它们有何区别。容错容错(fault tolerance)指的是,发生故障时,系统还能继续运行。飞机有四个引擎,如果一个引擎坏了,剩下三个引擎,还能继续飞,这就是"容错"。同样的,汽车的一个轮子扎破了,剩下三个轮子,也还是勉强能行驶。容错的目的是,发生故障时,系统的运行水平可能有所下降,但是依然可用,不会完全失败。高可用高可用(high availability)指的是,系统能够比正常时...转载 2021-02-09 10:37:57 · 1180 阅读 · 0 评论 -
Iaas,Paas,Saas的区别
看到一片文章,讲的很形象。看完后,个人理解,iaas比如阿里云服务器,paas比如小程序平台,saas比如专门提供给各个企业的内部管理系统。越来越多的软件,开始采用云服务。云服务只是一个统称,可以分成三大类。IaaS:基础设施服务,Infrastructure-as-a-service PaaS:平台服务,Platform-as-a-service SaaS:软件服务,Software-as-a-service它们有什么区别呢?IBM 的软件架构师 Albert Barron转载 2021-02-09 10:32:55 · 293 阅读 · 0 评论 -
k8s容器通讯
概述首先k8s里面容器是存在于pod里面的,所以容器之间通讯,一般分为三种类型:1. pod内部容器之间2. pod 与 pod 容器之间3. pod 访问service服务pod内部容器之间这种情况下容器通讯比较简单,因为k8s pod内部容器是共享网络空间的,所以容器直接可以使用localhost访问其他容器。k8s在启动容器的时候会先启动一个pause容器,这个容器就是实现这个功能的。pod 与 pod 容器之间这种类型又可以分为两种情况:1. 两个pod在一台转载 2021-01-21 10:33:24 · 245 阅读 · 0 评论 -
高/低方差、高/低偏差
概念偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据集。(Ps:假设靶心是最适合给定数据的模型,离靶心越远,我们的预测就越糟糕)方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,预测结果数据的分布越散。基于偏差的误差:所谓基于偏差的误差是我们模型预期的预测与我们将要预测的真实值之间的差值。偏差是用来衡量我们的模型的预测同真实值的差异。基于方差的误差:基于方差的误差描述了一个模型对给定的数据进行预测的可变性。比如,当你多...转载 2020-12-24 16:50:14 · 823 阅读 · 2 评论 -
神经网络的隐藏层
通常,卷积神经网络除了输入和输出层之外还有四个基本的神经元层,在三层神经网络中,这基层被称为隐藏层卷积层(Convolution)激活层(Activation)池化层(Pooling)完全连接层(Fully connected)卷积层在最初的卷积层中,成千上万的神经元充当第一组过滤器,搜寻图像中的每个部分和像素,找出模式(pattern)。随着越来越多的图像被处理,每个神经元逐渐学习过滤特定的特征,这提高了准确性。比如图像是苹果,一个过滤器可能专注于发现“红色”这一颜色,而另..转载 2020-12-24 11:24:14 · 8720 阅读 · 0 评论 -
maven-assembly-plugin介绍
在Maven中,主要有3个插件可以用来打包:maven-jar-plugin,默认的打包插件,用来打普通的project JAR包; maven-shade-plugin,用来打可执行JAR包,也就是所谓的fat JAR包; maven-assembly-plugin,支持自定义的打包结构,也可以定制依赖项等。我们日常使用的以maven-assembly-plugin为最多,因为大数据项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以转载 2020-12-09 10:42:35 · 245 阅读 · 0 评论 -
标量、向量、矩阵和张量的区别
深度学习中会经常涉及到张量的维数、向量的维数的概念,我发现自己一直把它们给混淆了,原因是被一些约定俗成的叫法扰乱了,下面来介绍一下它们的区别。首先,张量的维数等价于张量的阶数。0维的张量就是标量,1维的张量就是向量,2维的张量就是矩阵,大于等于3维的张量没有名称,统一叫做张量。下面举例:标量:很简单,就是一个数,1,2,5,108等等向量:[1,2],[1,2,3],[1,2,3,4],[3,5,67,·······,n]都是向量矩阵:[[1,3],[3,5]],[[1,2,3],[2,3,4]转载 2020-12-08 10:34:03 · 2060 阅读 · 1 评论 -
人工智能、机器学习、深度学习的概念区别
雷锋网按:2016是人工智能爆发的一年,各种层出不穷的新技术、新概念让人眼花缭乱。很多人都分不清人工智能(Artificial Intelligence,简称AI)、机器学习(Machine Learning,简称ML)以及深度学习(Deep Learning,简称DL)概念之间的不同。本文为理解机器学习和深度学习提供了不同的视角。本文作者为Intuition Machine联合创始人Carlos Perez ,由雷锋网编译,未经允许不可转载。由于AI的大热,媒体上关于AI的文章狂轰乱炸,人工智转载 2020-12-04 16:28:13 · 229 阅读 · 0 评论 -
mock和spy的不同点
1、默认行为对于未指定mock的方法,spy默认会调用真实的方法,有返回值的返回真实的返回值,而mock默认不执行,有返回值的,默认返回null2、调用方法当我们对@Mock的类(@Mock private OrderDao dao;)进行模拟方法时,会像下面这样去做: when(dao.getOrder()).thenReturn("returened by mock "); // 或者使用更为推荐的given方法但如果想对@Spy的类(@Spy private Price...转载 2020-11-20 15:40:44 · 4557 阅读 · 0 评论 -
maven中dependency标签介绍
groupId,artfactId,version,type,classifier,scope,systemPath,exclusions,optional 是 maven的9种依赖属性,其中groupId,artfactId,version是三个基本的依赖坐标,不可缺少。groupId------包名(一般为域名的反写)。artfactId------项目名。version-------版本。-----------------------------------------------转载 2020-11-19 10:52:00 · 1663 阅读 · 0 评论 -
什么是uber-jar
在maven的一些文档中我们会发现 "uber-jar"这个术语,许多人看到后感到困惑。其实在很多编程语言中会把super叫做uber (因为suber可能是关键字), 这是上世纪80年代开始流行的,比如管superman叫uberman。所以uber-jar从字面上理解就是super-jar,这样的jar不但包含自己代码中的class ,也会包含一些第三方依赖的jar,也就是把自身的代码和其依赖的jar全打包在一个jar里面了,所以就很形象的称其为super-jar ,呵呵,uber-jar来历就是这样的转载 2020-11-14 11:48:39 · 1999 阅读 · 1 评论 -
Junit @Rule
JUnit Rule的两个注解需要用于实现了TestRule或MethodRule接口的成员变量(@Rule)或静态变量(@ClassRule)上。@Rule注解是方法级别的,每个测试方法执行时都会执行被@Rule注解的成员变量的方法(类似于@Before)。 @ClassRule注解是类级别的,测试类执行时仅会执行一次被@ClassRule注解的静态变量的方法(类似于@BeforeClass)。JUnit Rule和@Before注解的区别@Before注解的方法只能作用于当前测试类及其子类,转载 2020-11-10 11:26:09 · 903 阅读 · 0 评论 -
grpc简单教程
简介: grpc是谷歌的一个开源的rpc(远程服务调用)框架,可以让各个语言按照指定的规则通过http2协议相互调用,这个规则是用Protocol Buffer(谷歌的一个数据描述语言)写的一个.proto文件,grpc的目的就是为了让服务调用更方便。目前支持的语言有C, C++,C#,Java, Node.js, Python,Go等,大部分语言都是通过插件根据.proto文件生成对应的代码,用生成好的代码,创建或调用grpc服务。这是grpc的官方文档 grpc的接口调...转载 2020-11-03 18:17:41 · 1152 阅读 · 0 评论 -
maven的filter使用
maven的资源过滤maven的过滤资源需要结合maven的2个定义才能实现,分别是:profile resources下面分开来做介绍。profileprofile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。需要掌握profile的定义以及激活条件。后面结合resources会介绍。resourcesresources是指定maven编译资源转载 2020-11-03 10:36:26 · 2943 阅读 · 0 评论 -
maven的profile标签的使用
文章目录 前言 1. 原理 2. 应用演示 2.1 项目结构 2.2 激活方式 1. 通过maven命令参数 2. 通过pom文件里的activation属性 3. settings.xml中使用activeProfiles指定(了解即可) 前言 在开发过程中,我们的项目会存在不同的运行环境,比如开发环境、测试环境、生产环境,而我们的项目在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及...转载 2020-11-02 16:39:58 · 3261 阅读 · 0 评论 -
POM详解
什么是POM?POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。概览下面是一个POM项目中的pom.xml文件中包含的元素。注意,其转载 2020-10-30 18:17:56 · 5606 阅读 · 0 评论 -
pull fork介绍
我尝试用类比的方法来解释一下 pull reqeust。想想我们中学考试,老师改卷的场景吧。你做的试卷就像仓库,你的试卷肯定会有很多错误,就相当于程序里的 bug。老师把你的试卷拿过来,相当于先 fork。在你的卷子上做一些修改批注,相当于 git commit。最后把改好的试卷给你,相当于发 pull request,你拿到试卷重新改正错误,相当于 merge。当你想更正别人仓库里的错误时,要走一个流程:先 fork 别人的仓库,相当于拷贝一份,相信我,不会有人直接让你改修原仓库的 clone转载 2020-10-30 16:27:49 · 262 阅读 · 0 评论 -
slf4j,log4j,log back之间的关系和区别
1.SLF4J(Simple logging Facade for Java)意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接口方法进行调用即可,由于它只是一个接口,并不是一个具体的可以直接单独使用的日志框架,所以最终日志的格式、记录级别、输出方式等都要通过接口绑定的具体的日志系统来实现,这些具体的日志系统就有log4j,logback,java.util.logging等,它们才实现了具体的日志系统的功能。如何使用SLF4J?转载 2020-10-30 15:19:58 · 911 阅读 · 0 评论 -
蓝绿发布、滚动发布和金丝雀发布
在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。为了解决这些问题,人们研究出了多种发布策略,下面我们一一介绍。蓝绿部署所谓蓝绿部署,是指同时运行两个版本的应用,如上图所示,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量切换到新版转载 2020-10-28 14:52:55 · 158 阅读 · 0 评论 -
虚拟机三种网络工作模式
由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations和virtual box等。在使用虚拟机软件的时候,很多初学者都会遇到很多问题,而vmware的网络连接问题是大家遇到最多问题之一。在学习交流群里面,几乎每天都会有同学问到这些问题,写这篇详解也是因为群里童鞋网络出故障,然后在帮他解决的过程中,对自己的理解也做一个总结。接下来,我们就一起来探讨一下关于vmwar转载 2020-10-28 10:44:10 · 240 阅读 · 0 评论 -
maven的编码设置
<properties> <!-- resource拷贝时的编码格式 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <...转载 2020-10-26 15:44:05 · 714 阅读 · 0 评论 -
maven的target和source版本
1.使用方式 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <con...转载 2020-10-26 15:39:28 · 1398 阅读 · 0 评论 -
彻底透析SpringBoot jar可执行原理
文章篇幅较长,但是包含了SpringBoot 可执行jar包从头到尾的原理,请读者耐心观看。同时文章是基于SpringBoot-2.1.3进行分析。涉及的知识点主要包括Maven的生命周期以及自定义插件,JDK提供关于jar包的工具类以及Springboot如何扩展,最后是自定义类加载器。spring-boot-maven-plugin SpringBoot 的可执行jar包又称fat jar,是包含所有依赖的 jar 包,jar 包中嵌入了除 java 虚拟机以外的所有依赖,是一个 ...转载 2020-10-21 11:18:00 · 243 阅读 · 0 评论 -
spring-boot-starter-parent作用
SpringBoot项目一般都会配置starter-parent依赖。示例: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version>转载 2020-10-21 10:33:45 · 280 阅读 · 0 评论 -
grpc的服务发现和负载均衡
1、集中式LB(Proxy Model)在服务消费者和服务提供者之间有一个独立的LB,通常是专门的硬件设备如 F5,或者基于软件如 LVS,HAproxy等实现。LB上有所有服务的地址映射表,通常由运维配置注册,当服务消费方调用某个目标服务时,它向LB发起请求,由LB以某种策略,比如轮询(Round-Robin)做负载均衡后将请求转发到目标服务。LB一般具备健康检查能力,能自动摘除不健康的服务实例。 该方案主要问题: 单点问题,所有服务调用流量都经过LB,当服务数量和调用量大的时候,LB容易成为瓶转载 2020-10-21 09:38:23 · 903 阅读 · 1 评论 -
RPC原理简介
1. 基本的RPC模型主要介绍RPC是什么,基本的RPC代码,RPC与REST的区别,gRPC的使用1.1 基本概念RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务 本地过程调用:如果需要将本地student对象的age+1,可以实现一个addAge()方法,将student对象传入,对年龄进行更新之后返回即可,本地方法调用的函数体通过函数指针来指定。 远程过程调用:上述操作的过程中,如果addAge()这个方法在服务端,执行函数转载 2020-10-20 19:07:58 · 339 阅读 · 1 评论 -
RPC底层协议
经过很长一段时间的开发,TiDB 终于发了 RC3。RC3 版本对于 TiKV 来说最重要的功能就是支持了 gRPC,也就意味着后面大家可以非常方便的使用自己喜欢的语言对接 TiKV 了。gRPC 是基于 HTTP/2 协议的,要深刻理解 gRPC,理解下 HTTP/2 是必要的,这里先简单介绍一下 HTTP/2 相关的知识,然后在介绍下 gRPC 是如何基于 HTTP/2 构建的。HTTP/1.xHTTP 协议可以算是现阶段 Web 上面最通用的协议了,在之前很长一段时间,很多应用都是基于 H转载 2020-10-20 19:06:28 · 668 阅读 · 0 评论 -
什么是互联网生态
互联网巨头都在做生态喊生态,那么什么是生态呢?马化腾说生态就是把半条命交出去,交给合作伙伴;美国上市后的马云一再向投资者强调,阿里要打造一个生态系统而不是一个帝国,因为帝国迟早是要消亡的,只有生态会生生不息;小米手机成功后,雷军号称要投资50-100家小米生态链企业,打造软件+硬件+互联网服务的生态系统;后起之秀乐视喊得最绝,号称自己是中国第一家“互联网生态企业”,高调邀请马蔚华成立乐视生态研究院,言下之意对BAT的生态属性并不认可。反观功成名就的BAT对乐视的生态常常面有不屑,谈到下一个阶段的挑战者,也是转载 2020-10-20 16:37:38 · 11751 阅读 · 2 评论 -
如何管理团队(可以学习阿里巴巴)
以下分享阿里巴巴的绩效考核管理制度:转载 2020-10-15 11:15:25 · 259 阅读 · 0 评论 -
缓存技术
网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验。 网站缓存按照存放的地点不同,可以分为客户端缓存、服务端缓存。客户端缓存 客户端缓存又可分为:浏览器缓存、网关或代理服务器缓存 网关或代理服务器缓存是将网页缓存中网关服务器上,多用户访问同一个页面时,将直接从网关服务器把页面传送给用户。 浏览器缓存是最靠近用户的缓存,如果启用缓存,用户在访问同一个页面时,将不再从服...转载 2020-09-12 11:05:48 · 301 阅读 · 0 评论 -
阿里高级开发的要求
之前有很多读者会经常问我类似的问题:达到什么水品才能进阿里? 阿里的P6有哪些要求? 我想进阿里,我要准备什么?这些问题我之前从来都是不回答的,因为我那个时候也不太知道标准答案是什么。前几天,写了一篇《没想到,我都来阿里5年了》,总结了一下自己这五年的经历与成长。在这过去的5年里,真的经历了太多太多,我也从一个刚刚毕业的懵懂少年,成长成一个独当一面的技术专家了。也回过头思考了很多很多。刚好现在自己在阿里待了5年了,前4年里经历了两次晋升,从P5到P7,算是大概了解了一些阿里对于人才的要求。转载 2020-09-09 15:15:17 · 1197 阅读 · 0 评论 -
8个影响我职业生涯的重要技能
我是上个世纪, 1998 年考入浙江大学的,读的是电子工程,但是在大学期间情不自禁爱地上了计算机,当时在学校学的是汇编语言,C 和 C++ ,也钻研过微软的 VC++ 。经历过点亮第一个 8051 板子的 LED 灯而兴奋不已,虽然当时的 LED 灯珠是直接用 8051 的 GPIO 口驱动的(没有考虑驱动电流能力)。后来大三的时候,闲不住的自己,直接去外面的软件公司兼职打工,在其中一家通信设备公司做 PPP、PPPOE 开发,在这家公司,让我见识了什么是超大规模代码开发(比 Hello World 要转载 2020-08-06 14:29:52 · 788 阅读 · 0 评论 -
Mac彻底删除Idea
除了删除包内容:还要删除一些缓存、日志、设置等内容:~/Library/Caches/IntelliJIdea2019.1~/Library/Logs/IntelliJIdea2019.1~/Library/Preferences/IntelliJIdea2019.1~/Library/Application Support/IntelliJIdea2019.1其中,~表示用户目录(此处是zhangwenhao),Library为资源库文件夹...原创 2020-08-03 18:31:01 · 2592 阅读 · 2 评论 -
Idea清除索引和缓存
在博文「详述 IntelliJ IDEA 的使用界面」中,博主说过这样一句话“对于首次创建或打开的新项目,IntelliJ IDEA 都会创建项目索引,大型项目在创建索引的过程中可能会出现卡顿的现象,因此强烈建议在 IntelliJ IDEA 创建索引的过程中不要动项目。”那么,索引到底是干什么用的呢?在本篇博文中,就让我们一起了解索引的用途,对了,还有缓存。IntelliJ IDEA 的缓存和索引主要是用来加快文件查询的速度,从而提高各种查找、代码提示等操作的速度,因此索引对 IntelliJ IDE转载 2020-07-28 15:55:18 · 1358 阅读 · 0 评论 -
SSH、公钥和私钥
首先我们需要区分加密和认证这两个基本概念。 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。 公钥和私钥 其次我们还要了解公钥和私钥的概念和作用。 在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即转载 2020-06-05 21:09:59 · 1222 阅读 · 0 评论