3 12Dong

尚未进行身份认证

我要认证

目标是月薪1w5的java中级攻城狮 嗷呜~

等级
TA的排名 4w+

【Kubernetes】CronJob源码探寻

在我们线上环境,因为CronJob的数量太多(20074个CronJob),导致线上部分CronJob出现了延迟,甚至不再执行。从定性分析上,可以确认是CronJob数量太多导致,因为出现问题是在某一天增加了800 * 6 * 3 = 14400个CronJob之后,我发现原本应该当场执行的CronJob过了两天依然没有执行。现在需要定量确认导致这样现象原因是什么,才能通过某一种方案去优化他,可以通过调参解决?还是需要业务向技术妥协?找到具体做CronJob时间检查的操作 \kubernetes\pk

2020-08-11 20:53:58

【Java】从HashMap源码中获得的代码启示

写代码的时候需要讲究一个说学逗唱,不对,增删改查,也不对,需要讲究一个代码规范。因为代码写出来是给人看的,当然机器也是要看的。为了帮助看的人更好的理解,需要讲究一些方式方法。这些方式方法是谁定的,你可以理解为冥冥中的代码之神,有一天突然拍了一下大腿说,“神说,要有代码规范”,然后托梦给了凡间的程序员。我之前的遵循的代码规范来自两部分,一个是《代码整洁之道》(Clean Code),另一个则是阿里的Java手册。其中有一个代码规范是说,如果你的函数传参有很多,那么为了看的人的体验 ,你要把他们整合为一个新

2020-08-09 18:42:32

【Java】Java8 HashMap 源码阅读

发现HashMap的源码和自己原本看到的文档不同,所以决定看看到底Java是如何实现HashMap的。本文所使用的环境为利用Idea提供的功能直接跳转到HashMap.put();的源码页面 HashMap<String, String> map = new HashMap<>(); map.put("1", "1");接着往下看,如果说这个HashMap第一次调用了put函数,会有一个resize的操作来初始化实际上存储对象的Node数

2020-08-08 22:44:54

【Kubernetes】Prometheus关于内存使用的Metric

今天在翻Prometheus的时候,发现了一个Pod的内存使用居然和另外一个看板显示的不一致。通过查看Prometheus QL发现,两种指标所表示的含义不大一样。上面这张图所使用的Prometheus QL为sum by(container) (container_memory_usage_bytes{pod="istio-tracing-79cfbc6889-vm2vw", container=~".*", container!="POD", container!=""})经过Google一番后.

2020-07-14 22:16:39

【2020年中总结】

2020年上半年也算是神奇的一年,发生了大大小小的事,让我的情绪也受到起起伏伏的冲击。回望半年的时间,感觉在公司工具人的路上越走越远,对于程序的思考越来越少。将上半年的工作笼统地划分为业务和技术:业务部分是在toB业务上做一些公司技术的搬运,把公司原有的技术功能通过现存的接口包装一层部署在我们的集群上,给老外们使用;部分是在修改技术债,把一些以前错误的、不合理的代码逐渐修改成适应当前业务环境的代码。toB业务上,因为对于公司技术架构上比起去年来了解更加深入,各个业务方也混熟了脸,对于功能分析、把握也更

2020-07-10 19:51:29

【Istio】1.5.4版本经过Istio sidecar的请求会有部分503 UC upstream connect error or disconnect/reset before headers

在使用Istio1.5.4进行服务编排的时候,发现了一系列问题,这一系列问题中有一个令人匪夷所思的问题。有一个请求比如说叫做www.12dong.com/api/dong/getinfo?type=1&sort=1这个请求会因为Istio的原因报错这个错503 upstream connect error or disconnect/reset before headers,但是当我改变参数为www.12dong.com/api/dong/getinfo?type=2&sort=1的时候,

2020-06-29 20:39:48

【Chrome Extensions】实现一个可以下载图片的Chrome插件

网上有许多的工具可以做这件事,但我还是自己用Chrome Extensions的方式倒腾倒腾。在google上搜索了一下 Chrome Extensions Tutorial之后,大概了解他的实现框架。实现具体功能的话主要有三个重要模块ManiFest.json,他是实现一个插件的基础,没有你可能无法把东西塞到Chrome里。有了的他的话,你至少可以在Chrome里看到他。background.js,全局的js设置。我不大懂js,看了教程以后,将它定义成配置插件作用域与全局变量的地方。popup

2020-06-13 19:10:30

【Mysql】select 按照自定义顺序排序

这周遇到了一个新的需求,为我们的用户在可用状态之外,再增加一个状态,叫做停用。然后用户列表页的排序按照先按照可用,后停用。在这两个排序中,再按照时间顺序倒叙。对于增加一个状态而言,我们需要在对应的数据库表中新填一个字段 user_status,用来描述用户所处状态。考虑到用户除了正常(可用)状态、停用状态之外,还有其他状态比如说欠费,或者违规状态,就不能使用bit类型,而是使用了tiny int unsigned类型来做数据类型。这样可以使用 八位二进制 256种状态来描述。对于第一个新的功能模块而言,

2020-06-08 21:01:00

【leetcode】1306. 跳跃游戏 III

递归 + 回溯卡了我两天。。。一个运算优先级的问题Java中 !的优先级弱于&& 所以!true&&true 结果是falsepackage pro1306;import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Set;/** * @Author: qiqu */public class Solution { stati

2020-06-06 00:10:02

【leetcode】847. 访问所有节点的最短路径

状态压缩 bfs感觉可以用图论做,但是基本忘掉了。看了一眼,别人的题解。因为存储所有节点可达的问题,所以不用状态压缩的话,就要用多维数组表示结果。感觉还是有些问题。package pro847;import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;/** * @Author: qiqu */public class Solution { public int shortestP

2020-06-04 21:20:30

【leetcode】102. 二叉树的层序遍历

水题 切了package pro102;import java.util.LinkedList;import java.util.List;import java.util.Queue;/** * @Author: qiqu */public class Solution { public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x)

2020-06-03 20:56:59

【Leetcode】未完成的题目

未完成的题目847 访问所有节点的最短路径 状态bfs

2020-06-03 20:55:45

【leetcode】36. 有效的数独

暴力,遍历竖列,横行,九个正方形序列。package pro36;import java.util.Arrays;import java.util.Objects;/** * @Author: qiqu */public class Solution { public static boolean[] c = new boolean[9]; public boolean isValidSudoku(char[][] board) { for(int i=

2020-06-02 21:20:37

【Kubernetes】CronJob 执行时间存在大量延迟

最近在迁移集群CronJob的时候,发现了一个问题:CronJob执行大概差了八个小时。当前的(指写文章)时间是5.18 19:36分,往前推45个小时,大概是5.16 22:36分,和我预设CronJob表达式子里写明的0 14 16 * * 16号14:00相差了八个小时。今天来研究一下这个小时究竟问题出在哪。从八个小时上来判断,正好是UTC +0 和 UTC +8的时差,也正好是我们的美国服务器和上海时间的时差。所以猜测上是集群设置时区的问题。查了一下文档,发现CronJob的执行时间是根据.

2020-05-18 20:19:40

【Kubernetes】通过Shell命令将一整个namespaces的crojob yaml转移到另一个集群

本文中我将通过shell命令将一整个namespaces的crojob 先制成yaml文件。解决这个问题的办法有很多,不一定要局限于我这一种,我的集群环境和当时的工具环境不一定和大多数人一样。先尝试了几种立马能想到的方法,如kubectl get cronjob -o yaml这种方法获取到的是一个cronjob列表,像下面这样:apiVersion: v1items:- apiVersion: batch/v1beta1 kind: CronJob metadata: crea

2020-05-15 19:27:11

【Istio】Virtualservice 因为 galley 证书过期无法部署

因为在部署virtualservice到线上Istio集群的时候,出现了一个问题Internal error occurred: failed calling webhook "pilot.validation.istio.io": Post https://istio-galley.istio-system.svc:443/admitpilot?timeout=30s: x509: certi...

2020-05-07 21:03:04

【Kubernetes】基于SpringBoot的Mutating Admission Webhook Server实现

背景注意事项思路过程背景公司内网的Kubernetes集群因为Istio sidecar的原因,经常会达到公司运维给我们组设置的资源上限。一个我们的业务服务通常由两部分容器组成,一个是我们真实对外服务的容器,另一个则是由Istio sidecar inject也就是Istio框架自动注入的Istio-sidecar。不提我们的业务容器,只针对Istio sidecar,他的resou...

2020-05-04 19:44:21

【Kubernetes】为服务开启Https设置

背景在使用kubernetes mutating webhook admission中,我为测验效果设置了如果不通过检查就无法部署的FailPolicy。遇到了如下问题:http: server gave HTTP response to HTTPS client经过一番google,发现是请求要求是HTTPS,返回却是HTTP这个错误的解决思路大概分两种,需要一一测试:服务内部的实...

2020-04-30 17:15:19

【Istio】像shopify一样免费使用https证书

背景在shopify中可以免费将一个属于自己的网址绑定到shopify指定的域名上,作为门户引流并提供shopify的售卖服务。除此之外,还会提供一张免费的https证书。本文将描述如何将这一套流程经过一定变通(接入手段),自动化地在kubernetes + istio集群中使用。shopify流程原型在shopfiy中,绑定一个域名分为如上三步。据我观察最重要的一步其实就是第一步,将自己...

2020-04-19 18:28:50

【Docker】使用volume挂载的一些限制

背景故事dockerfile volume局限另辟蹊径解决方法背景故事在gitlab-ci中使用acme.sh生成证书的时候,遇上了一些和挂载有关的问题。acme.sh这个开源软件的stateless模式会根据本机的一份配置文件生成一份密文,让服务器特殊接口返回这份密文用以验证域名的所有权,之后会生成一张https证书以供这个域名使用。同时,如果在另外一台机器上的话,就会生成另外一份...

2020-04-06 10:43:23

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。