学习笔记

你必须知道的容器监控 (3) Prometheus

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。上一篇介绍了Google开发的容器监控工具cAdvisor,但是其提供的操作界面较为简陋,且不支持监控多Host,实用性有待提高。因此,本篇会介绍一个流行的生产级监控工具,不,准确说来应该是一个监控方案,它就是Prometheus! # 实验环境:阿里云ECS主机(两台),CentOS 7.4 一、Prometheus简介 1.1 关于Prometheus   Prometheus是由SoundCloud开发的开源监控系统的开源版本。2016年,由Google发起的云原生基金会CNCF (Cloud Native Computing Foundation) 将其纳入为其第二大开源项目(第一大开源项目是Kubernetes)。Prometheus提供了一整套的包括监控数据搜集、存储、处理、可视化和告警的完整解决方案。 ...

(23)ASP.NET Core EF关系数据库建模

1.简介 一般而言,本部分中的配置适用于关系数据库。安装关系数据库提供程序时,此处显示的变为可用扩展方法(原因在于共享的Microsoft.EntityFrameworkCore.Relational包)。 2.表映射 表映射标识在数据库中哪张表应该进行内容查询和保存操作。 2.1约定 按照约定,每个实体将设置为映射到名称与DbSet 属性(公开派生上下文中的实体)相同的表中。如果给定DbSet实体中不包含,则使用类名称。 2.2数据注释 可以使用数据注释来配置类型映射表。 ...

一分钟带你了解JWT认证!

目录 一、JWT简介 二、JWT认证和session认证的区别 三、JWT认证流程 四、JWT组成 五、JWT使用场景 一、JWT简介 JSON Web Token(JWT)是一个开放的标准(RFC 7519),它定义了一个紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。由于此信息是经过数字签名的,因此可以被验证和信任。 更多信息可以查看官网:https://jwt.io/introduction/ 二、JWT认证和session认证的区别 session认证 http协议是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行用户认证才行,因为根据http协议,我们并不能知道是哪个用户发送的请求,所以为了让我们的应用能识别是哪个用户发出的,我们只能在服务器存储一份用户登陆的信息,这份登陆信息会在响应时传递给浏览器,告诉其保存为cookie,以便下次请求时发送给我们的应用,这样我们的应用个就能识别请求来自哪个用户了,这就是传统的基于sessino认证。 ...

linux C进程常用操作

不登高山,不知天之高也; 不临深溪,不知地之厚也。 荀子《劝学》 linux应用层主要是一个个独立任务的进程在运行,但是很多时候,在工作中我们可能很少去重新写一个进程, 大部分的工作都是分配到了一个进程内的模块或者提供进程内特定功能的接口开发,这篇文章是想简单说明下, 作为一个进程,在实际开发过程中,可能用到的一些编程方法比如:main参数解析,信号注册、回调函数、 线程创建、文件操作(FIFE *fp)、进程间通信(socket);每一种我都会附一个简单的实例。 1、main参数解析,参数较少,使用简单判断argc并取出对应的argv[i]值就就可以处理,代码如下: ...

CSAPP:代码优化【矩阵运算】

 编程除了使程序在所有可能的情况下都正确工作,还需要考虑程序的运行效率,上一节主要介绍了关于读写的优化,本节将对运算的优化进行分析。读写优化...

匹马行天下之思维决定高度篇——道道道,学习Java之道

致Java星球的程序员兄弟们的一封信 亲爱的Java星球的程序员兄弟们:   你们好!我是来自地球的一名Java程序员,首先我代表地球人对贵星球的高司令来到地球传授Java语言,造福了全人类,造福了整个地球表示由衷的感谢! 还记得高司令刚来地球的时候,他不会说中国普通话,也不会说国际通用语之一的英语,为了能跟地球人进行正常沟通,他决定给地球人传授他们星球的Java语言。考虑到人类从小就学习自己的母语,突然学习全新的语言肯定困难重重。可作为Java星球的精英,James Gosling认为方法总比困难多。 ...

如何用好redis pipeline

编者注:pipeline是Redis的一个提高吞吐量的机制,适用于多key读写场景,比如同时读取多个key的value,或者更新多个key的value。工作过程中发现挺多小伙伴都对pipeline多少有些了解,但是更深入的理解或者说有哪些坑就不知道了,下面咱们就一起分析下redis pipeline机制,揭开它的神秘面纱。 Redis本身是基于Request/Response协议(停等机制)的,正常情况下,客户端发送一个命令,等待Redis返回结果,Redis接收到命令,处理后响应。在这种情况下,如果同时需要执行大量的命令,那就是等待上一条命令应答后再执行,这中间不仅仅多了RTT(Round Time Trip),而且还频繁调用系统IO,发送网络请求。为了提升效率,这时候pipeline出现了,它允许客户端可以一次发送多条命令,而不等待上一条命令执行的结果,这和网络的Nagel算法有点像(TCP_NODELAY选项)。pipeline不仅减少了RTT,同时也减少了IO调用次数(IO调用涉及到用户态到内核态之间的切换)。 ...

【阿里云IoT+YF3300】8.物联网设备用户脚本开发

  除了我们必须熟悉的网页脚本,比如JavaScript。其实在工业自动化中,组态软件是必备脚本的,只是有的脚本语言风格类似C或类似Basic而已。比如昆仑通泰的组态屏中的组态软件。通过安装组态软件可以简单实现一些设备(目前支持串口设备和网口设备)的快速连接,还可以进行一些控件以及整体画面的脚本命令编写。在推广物联网的过程中,会出现一部分用户希望自己也可以对产品进行简单编程,这其中有编程大牛,但是也有刚接触到编程的人。如何让组态拥有更友好的体验?脚本开发首当其中,无需环境搭建,基于组态就能简单对现有驱动进行逻辑判断和分析处理,而且更多的是我们支持相关功能操作点击式插入,无论你是何种语言编程人员,无论开发经验多寡,都可以快速实现简单开发。 ...

并发中如何保证缓存DB双写一致性(JAVA栗子)

  并发场景中大部分处理的是先更新DB,再(删缓、更新)缓存的处理方式,但是在实际场景中有可能DB更新成功了,但是缓存设置失败了,就造成了缓存与DB数据不一致的问题,下面就以实际情况说下怎么解决此类问题。   名词 Cache:本文内指redis,ReadRequest:请求从Cache、Db中拿去数据,WriteRequest:数据写入DB并删除缓存   若要保证数据库与缓存一直,我们需要采用先删缓存,在更新DB的情况,这时候有的同学可能会问,如果缓存删除成功了,而DB更新失败了怎么办,其实仔细考虑一下,DB虽然失败了,那真正是不会产生数据影响的,而当下次一次请求进来的时候,我们重新把DB中未更新的数据重新塞入缓存,从结果上来看是没有影响的。我们把请求分为ReadRequest 、WriteRequest,大部分同学都知道我们在使用Cache时 首先都会去Cache内查一下,如果Cache中没有拿到数据我们在从数据库中去获取数据,这个时候在高并发的场景的踩过坑的同学都知道恰巧在这时候有更新请求把缓存删除了,这时候大量请求进来,Cache内没有此项数据,请求就会直接落在DB上,就很容易造成缓存雪崩,数据库很可能瞬时就挂掉了,所以处理方案就是我们需要对查询写入的缓存进行排队处理,而正确从cache内获取的姿势: ...

这一次,终于系统的学习了 JVM 内存结构

 最近在看《 JAVA并发编程实践 》这本书,里面涉及到了 Java 内存模型,通过 Java 内存模型顺理成章的来到的 JVM 内存结构,关于 JVM 内存结构的认知还停留在上大学那会的课堂上,一直没有系统的学习这一块的知识,所以这一次我把《 深入理解Java虚拟机JVM高级特性与最佳实践 》、《 Java虚拟机规范 Java SE 8版 》这两本书中关于 JVM 内存结构的部分都看了

Okhttp 请求流程梳理

最近在看 Okhttp 的源码。不得不说源码设计的很巧妙,从中能学到很多。其实网上关于 Okhttp 的文章已经很多了,自己也看了很多。但是俗话说得好,好记性不如烂笔头,当你动手的时候,你会发现你在看的时候没有注意到的很多细节。 本次要分析的 Okhttp 版本是 3.8.1,在 gradle 中引用如下: implementation 'com.squareup.okhttp3:okhttp:3.8.1' implementation 'com.squareup.okio:okio:1.7.0' ...

ArcGIS Engine空间分析之缓冲区分析的实现

缓冲分析(BufferAnalysis)的结果是一个面状要素——即缓冲要素,点状要素、线状要素和面状要素,被缓冲分析功能处理过之后,它们的周围产生一个缓冲区域,该区域即新产生的面状要素。 在缓冲方向上,点状要素和线状要素只能进行向外缓冲,面状要素可以双向缓冲——向外缓冲和向内缓冲。 在ArcGIS Engine中,缓冲分析由ITopologicalOperator.Buffer(double Distance)来实现,函数的返回值为IGeometry(表5-12)。其中,输入的参数为正时向外缓冲,为负时向内缓冲。 ...
青岛软件培训

可能你正在寻找一家靠谱的IT培训机构,学习一些专业的软件开发技术,找一份得体的工作。恰巧我们就是一家踏踏实实做教育的IT人才培养机构,我们咨询电话是 0532-85025005,如果你确实对IT感兴趣,我们不妨交流一下。

申请免费试听课程