- 博客(220)
- 资源 (19)
- 收藏
- 关注
原创 k8s部署jenkins集群时,使用ThinBackup进行定期备份
使用k8s部署jenkins集群的时候,一般会把$JENKSIN_HOME(默认是/var/jenkins_home)进行持久化。这样,机器重启,保证不会丢失文件。本文要讲述的是如何及时对Jenkins进行备份,也存放在$JENKSIN_HOME目录下。
2024-09-20 14:23:18 593
原创 Java编程语言,使用时间戳机制实现分页查询的示例
这种分页查询,以时间戳为增量更新的标记,好处是,不用去组装分页语句,只需要传入每页数量,不用根据当前页码和每页数量而计算。使用时,需要注意的是,如果记录的更新时间频繁更新,会导致结果一会在当前页,一会在上一页。(因为在你刷新页面的时候,该记录正好更新了)所以,客户端不要缓存上一次的查询结果集,如果要,那也得区分用户是下拉刷新还是上拉查询。总之,要小心同一个记录被重复出现在次增量查询的结果集里。如果是以创建时间为准,然后时间戳对比创建时间来增量查询,那么就不会出现这个问题了。
2024-09-10 13:18:07 368
原创 Java应用对接pinpoint监控工具的时候,应用名称长度超出限制而导致接入失败
从这个接入案例中,再次告诫我们,没有理所当然的事情。环境都一样,不同的应用就是可能不同。要排查问题,还得是查看日志。也提醒我们开发人员,日志打印是多么重要。
2024-09-06 10:32:52 494
原创 npm打包报错解决办法--因网络问题,node-gyp依赖的node-headers无法下载
node-v16.13.0-headers.tar.gz 文件是 Node.js 的 C/C++ 头文件包,它包含了 Node.js 运行时所需的所有头文件。这个文件通常用于以下场景:构建原生模块:如果你在使用 Node.js 构建或安装需要编译原生代码的模块(例如,使用 node-gyp 构建的模块),这个头文件包是必须的。开发 Node.js 插件:开发者在开发 Node.js 的 C/C++ 插件时,需要这些头文件来编译他们的代码。
2024-08-20 10:21:12 1735
原创 maven私有仓库nexus2如何找回用户的登录密码
下载nexus-2.14.2-01-bundle.tar.gz并解压至nexus-2.14.2-01,启动nexus进程,注意切换到nexus用户。
2024-08-06 18:37:18 288
原创 对接浦发银行支付(十)-- 支持多个浦发银行商户
为了保证浦发银行支付的高可用以及多业务的支付需要,在微服务–支付服务中,需要同时支持多个浦发银行商户。本文主要是介绍如何配置多商户的实现。
2024-08-04 19:00:11 66
原创 Charles抓包工具系列文章(七)-- Rewrite工具的应用示例
客户端通过域名访问后端服务,在api网关层,会判断path的前缀,默认/api开头的请求都转发至后端服务A。当前缀是/assist/api开头,请求将转发至后端服务B(部署在192.168.80.226,便于测试对比)在不改动kong网关配置的情况下,现需要把后者的请求转发至192.168.8.28机器上的后端服务B,并且前者的请求转发保持不变,仍旧是服务A。借助于charles抓包工具之Rewrite,我们可以轻松实现。
2024-07-31 14:21:28 300
原创 mysql数据库运维之创建数据库及赋权限
在公司多部门多业务场景的情况下,每个微服务使用自己的数据库,互相不可见。mysql数据库是可以创建多个schema,一般是由数据库管理员,给单个微服务的库单独赋权限。也就是说,用户服务对应数据库的账户密码是不能访问订单服务对应的数据库。二者应该使用独立的schema, 独立的用户名和密码,不能共用。
2024-07-30 11:19:53 486
原创 android应用的持续构建CI(五)-- 应用管理
本文梳理了android应用的管理办法,可以说是持续构建CI的“尾巴”,至此,android应用的持续构建就完成了。
2024-07-05 12:34:31 66
原创 android应用的持续构建CI(四)-- 依赖环境(兼容多版本的gradle和jdk)
android应用的构建前提是,安装好了gradle和jdk。在实际使用的过程中,不同的android应用,对gradle和jdk的版本要求不一。于是,在jenkins服务器上,我们需要安装多种版本的gradle和jdk。安装过jdk的小伙伴应该知晓,一台机器虽然可以安装多个jdk,但是环境变量生效的版本只能是其中的一个。gradle也一样,除非你调用gradle的时候,不使用环境变量下的,而是全路径。就算gradle可以,jdk却做不到,后者是被依赖的对象,无法显示指明。
2024-07-05 00:22:25 367
原创 android应用的持续构建CI(三)-- 手动签名
android应用程序的打包,总是绕不开应用签名。本文仅从运维的角度,梳理了其如何生成和使用的步骤。
2024-07-05 00:21:01 54
原创 android应用的持续构建CI(二)-- jenkins集成
本文梳理了jenkins如何集成各个技术组件,构建android应用,并上传到管理后台的整个流图。
2024-07-04 21:10:03 236
原创 android应用的持续构建CI(一)-- 总体设计
下面是各技术组件的交互流程图,jenkins是主角,下一篇将重点梳理如何配置jenkins的job。
2024-07-04 21:07:12 412
原创 记一次android打包,因路由规则设置不合理而导致pom文件无法访问的错误
nexus的路由规则还是慎用,个人建议是不需要使用。起初是想要禁用nexus的swagger,拒绝访问接口“/service/rest/swagger.json”。想通过路由规则来禁用swagger,无意间捅马蜂窝了,导致android打包的时候,pom全部无法访问。于是出现了上文的问题。
2024-07-03 11:02:06 911
原创 nexus未开启匿名访问Anonymous Access,访问maven元数据maven-metadata,报401未授权Unauthorized错误
开启匿名访问后,再次访问maven-metadata.xml,不再让我们输入用户名和密码了。这时,android打包成功,不再报错401未授权Unauthorized了。
2024-07-02 19:09:44 541
原创 商城积分系统的代码实现(下)-- 积分订单的退款与结算
至此,关于商城的积分系统,其详细实现就介绍完了。希望通过整个系列的五篇文章,帮助你搭建一套灵活多变的积分系统,服务于整个公司的所有业务。
2024-07-01 08:00:00 374
原创 商城积分系统的代码实现(上)-- 积分账户及收支记录
本文详细介绍了积分操作的五个方法,总体的实现逻辑都是更新账户的余额、保存账户的收支记录、最后通知用户其账户余额有变更。无非是他们的校验逻辑不一样罢了,所以逻辑实现的方法必须复用。1、是否更新积分订单表2、前者是减少账户的余额,后者是增加账户的余额。后文,我们将梳理积分订单的实现。
2024-06-28 14:43:35 196
原创 商城积分系统的设计方案(中)-- 数模设计
积分和积分渠道,实现积分种类和发放的动态配置,是设计中的关键之处。积分订单表是不必要的,视具体业务需求而定。积分账户和账户收支是核心的两个表。后面三个表都有一个school_id, 其实就是租户编号,不同的学校或租户,互不共享。
2024-06-28 11:18:37 301
原创 confluence集成LDAP
一、confluence的权限管理在集成前,我们必须得知道confluence自身的权限管理是如何做的。用户组对应空间权限,用户组可以是一个项目,也可以是一个部门或组。一个用户组里的用户,可以读写本空间的页面,而把其他组隔离开来。二、confluence配置LDAPimage.pngconfluence配置LDAP.png这里不大容易出错,填入相应的group和p...
2024-06-28 11:17:29 519
原创 ubuntu16安装DHCP
一、安装dns server软件包$ apt-get install bind9二、配置BIND9配置文件的目录默认为/etc/bindcd /etc/bind 进入该目录。。。1、vi /etc/bind/named.conf.localzone "xuehai.com" { type master; file "/etc/bind/db.xuehai...
2024-06-27 19:58:18 277
原创 商城积分系统的设计方案(上)-- 需求分析
本文重点在积分系统的设计,不涉及商品、订单、支付和促销等模块,限于篇幅,我们将分为上中下三篇来阐述我们的设计思路。上文也说了,积分在这里不仅仅是支付宝积分商城的“积分”,更侧重于虚拟货币的概念。所以,我们是把积分赋给商品的价格里,包括积分数points和现金金额price,重复说一遍!!!@Column(name = "points_type", columnDefinition = "VARCHAR(32) COMMENT '积分类别'")
2024-06-27 16:37:20 688
原创 Charles抓包工具系列文章(六)-- Block List 和 Allow List (黑白名单)
黑名单启用的情况下,白名单也启用,访问某个接口,会发生什么呢?匹配白名单匹配黑名单结果否是黑名单生效,Tags = Block List,请求被拒是否请求正常否否白名单生效,Tags = Allow List,请求被拒是是黑名单生效,Tags = Block List (同只匹配黑名单一样),请求被拒所以它的逻辑是:先判断是否匹配黑名单,如果请求接口在黑名单里,则请求被拒。再判断是否匹配白名单,如果不在白名单里,则请求也被拒;反之,请求正常通过。
2024-06-26 11:15:55 496
原创 Charles抓包工具系列文章(五)-- DNS spoofing (DNS域名伪装)
本文通过对baidu.com和localhost两个域名的伪装,讲述了charles的DNS spoofing的配置及使用实践。
2024-06-26 10:17:37 423
原创 Charles抓包工具系列文章(四)-- Rewrite 重写工具
因为重写的规则比较细,如何使用要视具体情况,可以替换上一篇文的Map Local/Remote。也正因为如此,使用起来相对复杂。最后说一句,重写规则是可以同时维护多个规则的,不仅限为一个规则。所以说,Rewrite工具是Map Local 和 Map Remote两者的综合体。
2024-06-25 20:22:05 877
原创 Charles抓包工具系列文章(三)-- 接口映射工具(Map Remote和Map Local)
通过接口映射工具,可以轻松修改客户端的响应报文,注意不能修改请求报文!!如果需要修改请求报文,需借助于另外一款工具: Rewrite。从这里也可以看出来,如果你的服务使用http协议,使用代理工具charles后,就可以随意修改接口的响应报文。期望展示的是图片A,结果看到的是图片B,出现“宜春是一座叫春的城市”,也就不奇怪了。
2024-06-25 20:20:33 1148
原创 Charles抓包工具系列文章(二)-- Repeat 回放http请求
本文告诉你,charles可以对已抓到的报文进行重装,还可以重复发起N次请求。可以说,测试人员必须掌握这一部分的技能了,对接口进行并发请求,最后分析结果。对回放的http请求可以进行Sort By排序。(选择已执行的http请求,右键选择“Sort By”)DurationSizeStart TimeEnd TimeName。
2024-06-24 22:14:50 426
原创 Charles抓包工具系列文章(一)-- Compose 拼接http请求
本文举例了http的两种最常见的get请求方式和post请求方式,像postman那样拼接http请求并测试。其他的请求方式大同小异,遇到的时候略微修改即可。
2024-06-24 22:14:14 631
原创 CD工具awx之通知NOTIFICATIONS,及时发送消息到企业微信机器人
如果你发送的消息通知,不是直接对接企业微信,而是自定义接口。只要在把企业微信的机器人修改你的接口地址即可。关于awx如何实现回调通知,就梳理到这里了。可以看到,消息体还是比较有限的,只能从awx官方文档里寻找。如果你要更加灵活的消息通知,建议在playbook脚本里实现,可以读取到更多信息,比如程序的版本号。版本号,对以应用为中心的程序部署来说,非常关键。
2024-06-14 11:20:19 511
原创 CD工具awx之清单Inventory,管理应用与主机的多对多关系
本文讲述了awx的清单Inventory,它维护了组与主机的关联关系。通俗地说, 就是应用部署在哪些机器上,反之,机器上都部署了哪些应用。因为awx是抽象的CD持续部署工具,所以它定义的很多概念,并非我们通常所说的应用等。你可以把组当做应用,毕竟大多数运维思路都是以应用为中心,一下子突然找不到应用了,会让你无从下手。顺便说一下,你看到的"项目"不是你以为的项目,看到的"清单"才可能是你想要的项目。
2024-06-14 09:50:27 191
原创 pinpoint agent 接入apm,负责采集java应用的数据,发送给远端collector
前文我们使用docker-compose已搭建好了pinpoint的服务端,现在需要在java应用侧,也即客户端部署pinpoint的agent。agent负责采集数据,并发送给远端的pinpoint collector,最后在pinpoint web展示。本文主要是以一个java应用程序为例,讲述如何接入pinpoint 这款apm。
2024-06-12 17:06:44 654
原创 docker-compose部署一款老牌apm监控软件-- pinpoint(需定制docker镜像)
镜像redis下载超时镜像pinpoint-batch下载超时容器pinpoint-mysql启动失败修改完docker-compose.yml后再次执行 docker-compose up -d 启动所有的镜像。可以看到, 最新版本的pinpoint比之前的组件变多了。访问pinpoint-web(8080端口), http://localhost:8080/这是因为在docker-compose里有部署一个quickapp示例程序。
2024-06-12 14:20:24 1229
原创 CD工具AWX之作业模板与工作流模板
本文以php和h5项目为示例,讲述从初始化项目到更新发布的实现详情。它们跟java/go等进程程序不同,只需要下发.php等静态文件即可,不涉及进程的重启。对于php项目,除了php文件外,还包括.env配置文件。(需要根据不同环境的具体值进行修改)
2024-06-11 11:02:46 361
原创 微服务框架下,因发送端与消费端的vhost不一致,导致rabbitmq出现严重的消息堆积
在生产环境下,rabbitmq机器出现磁盘空间不足的报警,发现是某个队列的消息只有生产,迟迟没有消费。之所以出现rabbitmq消息堆积,是因为消费程序所在的vhost与消息生产者所在的vhost不是同一个。下面将逐步说明其排查过程,以及解决方法。
2024-06-07 13:24:03 889
原创 nexus搭建npm前端项目的私服
构件,好比我们的藏书,去书店或商城买书是有成本的,一般先看看自己的书柜里是否有无该书,再考虑去外面买。书柜就是本地仓库, 其他的都是远程仓库。在家里看书的成本最小,高效且方便;当然也就减少了快递小哥的配送压力。
2024-06-05 20:25:30 470
原创 从一个netty程序说一说TCP三次握手的总结及参数优化
TCP连接经历了三次握手,当我们开发一个netty程序,运行在线上环境后,如何对其进行监控,并适时地进行参数调优。本文以我们生产环境的一个通道程序,看一看三次握手的过程,以及Linux系统关于创建http连接的参数设置情况。
2024-06-01 00:00:06 1537
原创 CD工具awx之公司生产环境的操作与部署说明
作为入口程序,它比较简单,通过roles指定了运行脚本roles/k8s_control/main.yaml。变量get_md5和cat_md5是否相等,如果不同,则报错"MD5 file is different"。在docker images查询镜像的时候,过滤得到镜像ID,然后赋值给变量“image_id”。凭证有很多种,包括gitlab等中间件的用户名密码、k8s api的令牌、机器的用户名密码等等。使用语法with_items和template,使得在一个任务中循环执行,而不用创建两个任务。
2024-05-31 14:48:51 693
原创 api网关kong对高频的慢接口进行熔断
本文通过线上实际发生的一个生产事故,梳理了我们的解决思路,对于高频慢接口的访问,最后只能通过kong的熔断来解决。事实证明,重启银弹和扩容银弹并不适用此,对于fullgc等jvm内存问题可能适用。这个生产事故,也给我们一个提醒,需要及时排查慢接口和数据库的慢查询,它们就像是航船的漏洞一样,小洞如果不及时堵上,等变大了,想堵就来不及了。
2024-05-30 10:39:43 954
原创 mongodb数据库备份到远程机器
生产环境的mongodb数据库是直接购买阿里云的云数据库,但是在公司研发环境,我们是自己手动部署的。开发和测试的数据当然没有生产环境那么重要,但备份也是必要的,只不过容忍一定的数据丢失。
2024-05-28 16:59:19 223
浦发银行支付api对接
2024-04-21
Software-Transactional-Memory.pptx
2019-06-14
MyDac 7.0.1 ODAC 8.0.1 for Delphi 7 / 2010 Delphi XE2
2015-03-13
Packet.Tracer5.2.0.0068-汉化包
2010-07-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人