node环境canvas安装慢、安装失败的解决方法
摘自:https://blog.csdn.net/EverRose/article/details/122846767 node是跨平台的,那么对于任何的node模块理论也是应该是跨平台的。然而,有些node模块直接或间接使用原生C/C++代码,这些东西要跨平台,就需要使用源码根据实际的操作平台环境进行原生模块编译。这也是canvas、SQLite3等模块安装的折磨之源。 canvas的安装过程 npm下载在仓库中的canvas包 执行canvas的package.json中的install命令(node-pre-gyp install --fallback-to-build) node-pre-gyp下载canvas已编译好的 macOS、Linux 和 Windows 的二进制文件,如果预构建的二进制文件不存在或不可用,则回退到从源代码构建 node-gyp编译为当前平台可用的node模块 为什么安装慢,还容易失败从安装过程可以发现, 步骤3和步骤4是核心问题区, canvas的二进制文件托管在https://github.com/Automattic/nod...
minimum_should_match最低匹配度
minimum_should_match顾名思义:最低匹配度,即条件在倒排索引中最低的匹配度。 1. minimum_should_match的使用1.1 数据准备1234567891011121314151617181920212223242526# 创建索引PUT test_match# 创建映射PUT test_match/_mapping{ "properties":{ "price":{ "type":"double" }, "name":{ "type":"text" } }}# 批量导入数据PUT _bulk{"create":{"_index":"test_match","_type":"...
java项目加载so/dll文件库
参考: https://stackoverflow.com/questions/1403788/java-lang-unsatisfiedlinkerror-no-dll-in-java-library-path https://www.cnblogs.com/eason-d/p/12401371.html 首先需要保证使用带有传统libc库的系统system.loadxxx的用法System.loadLibrary(“HelloWorld”);这句话是在执行java代码之前加载动态库System.load 参数必须为库文件的绝对全路径,可以是任意路径System.loadLibrary 参数为库文件名,不需要写库文件的扩展名, 注意:如果是linux系统库文件名需要以lib开头, 然后作为参数需要去掉lib例子(一般放在static代码块做加载,确保仅执行一次):1234567System.load("/user/src/app/lib/hello.dll"); // Load native library at runtimeSystem.loadLib...
利用fabric8结合git-hook动态配置k8s资源
背景 在多分支并行开发的集群下,新建分支以及删除分支都需要开发人员手动维护Istio/K8s的资源对象 目的 结合git hook -》 sync程序 -》 kubernetes API 流程,自动维护k8s以及istio资源对象,减少成本,提高开发效率 技术栈GitLab Api 使用GitLab Api,获取项目分支信息 123456 <!-- https://mvnrepository.com/artifact/org.gitlab/java-gitlab-api --><dependency> <groupId>org.gitlab</groupId> <artifactId>java-gitlab-api</artifactId> <version>${gitlab.version}</version></dependency> gitlab api认证 123456789101112131415161...
kafka生产调优
一、Kafka 硬件 配置选择1、场景说明 2、服务器台数选择 3、磁盘选择 4、内存选择Kafka 内存组成:堆内存 + 页缓存 1)Kafka 堆内存建议每个节点:10g ~ 15g 在 kafka-server-start.sh 中修改 123if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx10G -Xms10G"fi 查看 Kafka 进程号: 1234[atguigu@hadoop102 kafka]$ jps2321 Kafka5255 Jps1931 QuorumPeerMain 根据 Kafka 进程号,查看 Kafka 的 GC 情况: 1jstat -gc 2321 1s 10 新生代GC次数 根据 Kafka 进程号,查看 Kafka 的堆内存: 12345678910111213141516171819202122232425262728293031323334353637383940414243...
nginx-sticky安装及负载均衡使用
转自: https://blog.csdn.net/yyysylvia/article/details/80198021 sticky的工作原理Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route 客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。 后端服务器处理完请求,将响应数据返回给nginx。 此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值 客户端接收请求,并保存带route的cookie。 当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。 nginx+sticky安装nginx安装最好采用编译安装的方式,这样可以很方便的找到nginx的安装位置,方便添加nginx-sticky模块。如果之前已经编译安装过nginx,...
分析Alertmanager发送告警消息的逻辑
摘自: https://blog.csdn.net/qq_35952638/article/details/108077895 本文使用 Prometheus v2.18.1 ,Alertmanager v0.20.0本文主要分析 Alertmanager 什么情况下会发送告警消息,避免对用户造成消息轰炸。 Alertmanager 的一般工作流程 Prometheus 每隔 interval 时长执行一次 alert rule 。如果执行结果包含 n 个时间序列,则认为存在 n 个警报,通过 HTTP 通信发送 alerting 状态的消息给 Alertmanager 。 Alertmanager 收到之后, 先根据 route 判断它属于哪个 group 、应该发送给哪个 receiver 。 再判断该 group 当前是否处于冷却阶段、是否被 Silence 静音、是否被 Inhibit 抑制。如果都没有,则立即发送告警消息给用户。 如果 Prometheus 再次执行 alert rule 时,发现执行结果为空,则认为警报已解决,立即产生 resolved 状态的...
保证缓存数据库数据一致性
更新数据时的操作主要分为两种:写时更新和读时更新 什么是写时更新和读时更新写时更新:当我们往数据库写数据的时候我们去更新缓存,包括先更新缓存再更新数据库和先更新数据库再更新缓存。写时删除,读时更新:当我们往数据库写数据的时候我们直接删除缓存,然后其他请求读数据的时候更新缓存。包括先删除缓存再更新数据和先更新数据库再删除缓存。 缓存更新到底是读更新好还是写更新好?对比写时更新方案,读时更新更好,为什么? 如果你是一个写数据库场景比较多,而读数据场景比较少的业务需求,采用这种方案就会导致,数据压根还没读到,缓存就被频繁的更新,浪费性能。 同时有请求A和请求B进行更新操作,那么会出现 (1)线程A更新了数据库 (2)线程B更新了数据库 (3)线程B更新了缓存 (4)线程A更新了缓存。这就出现请求A更新缓存应该比请求B更新缓存早才对,但是因为网络等原因,B却比A更早更新了缓存。这就导致了脏数据,因此不考虑。 那么也就是说,如果是写更新的话,不管从性能的角度还是从线程安全的角度来说这种方案都不好。 读时更新有没有什么问题?前面我们说了,如果是写更新,会有效率和线程安全性的问题,那如...
vagrant+virtualbox
virtualbox下载地址:https://www.virtualbox.org/wiki/Downloads vagrant下载地址:https://developer.hashicorp.com/vagrant/downloads virtualbox安装添加box1vagrant box add --name centos/7 D:\HashiCorp\Vagrant\boxes\CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box 安装插件/配置环境变量(修改disksize需要)1234567# 解决centos7下使用synced_folder报错,https://stackoverflow.com/a/65545379/14936119vagrant plugin install vagrant-vbguest --plugin-version 0.21# 配合config.disksize.size使用(非必要,目前vagrant已支持实验参数node.vm.disk)# vagrant plugin inst...
Docker部署Jenkins以及更新版本
安装Jenkinsdocker-compose.yml 1234567891011121314151617181920212223version: '3.1'services: jenkins: restart: always image: jenkins/jenkins:2.395 container_name: jenkins user: root ports: # 发布端口 - 12012:8080 # 基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信 #- 50000:50000 environment: - "TZ=Asia/Shanghai" - "PATH=$PATH:$HOME/bin:/var/local/apache-maven-3.6.3/bin" volumes: # jenkins clone下来的项目会在`/var/...
