发个通知,过段时间学习计划相关的东西就出来了,上次写了篇指引文章后有些好奇心颇重的人跟我说:“发现最近群知识库和技能库更新的频率有点大,这是要放大招的节奏啊!” 很多想学习却不知道如何规划的人想要一个学习计划表,于是乎,我们就做了个大的~~~(运维的东西会逐渐添加在技能点中的)先发个大概的导图,技能部分已更新,这些东西都是为了新手快速融入,挤时间出来更新的项目技能,希望海涵,毕竟平时要工作又要生活,再加上快成家了,中国人结婚~~这个压力你们懂的...      为了计划不胎死腹中,希望感兴趣的帮…
引言 看过前文的博友可能注意到我是把 部署dll文件拷贝到生产机器,之后在生产机器上使用docker-compose即时创建镜像, 并没有完成CI/CD, 只是在原来传统部署方式下 将部署文件容器化. 经过长时间实操验证,终于完成基于Gitlab的CI/CD实践,本次实践的坑位很多, 实操的过程尽量接近 最佳实践(不做hack, 不做骚操作),记录下来也方便自己加深理解. 第一部分: Gitlab CI/CD 原理 和 Gitlab Runner 安装(这里使用shell执行器) 第二部分: G…
http是我们最常见的客户端/服务端传输协议,在golang中,默认的net/http包有一些坑位,需要调整以获得更加性能. 在golang程序中,我也遇到因为不合理使用 http client导致的程序崩溃问题. 坑:1:默认的HttpClient 默认的HttpClient不包含请求超时时间,如果你使用http.Get(url)或者&Client{}, 这将会使用http.DefaultClient,这个结构体内no timeout. 假如发出请求的服务端API有问题:没有及时响应httpc…
在做项目的时候,无意发现了一个小东西. new Date('2018-05-15') new Date('2018-5-15') 输出的结果是不同的,相差了8小时.然后让我回忆到之前看的一个时间转换函数,把-替换成/.于是,我把它替换了一下.问题就解决了,返回的就是相同的时间.所以可以简单地得出一个结论: 其实不关是否加了0的问题 把-替换成/,可以躲过这个坑 本来这个日记已经完结,我没死心又跑去MDN找了Date对象的知识.其中有一个写着new Date(dateString),接着,我们看到…
本文目的是为了更好的理解指针和内存管理 背景 我们定义一个变量A,修改另外一个一个变量B,导致A的值被修改,我们称它为内存污染. 案例 如下程序,正常的预期输出应该是:97 98 256 ,但正确的结果却是1 0 256 ,意不意外,惊不惊喜 这时候主要问题发生在int *ptr = (int *)&b; 这里,对&b 强类型转换,污染了a 的内存 a 的地址比b 地址大(堆从低到高, 栈从高到低分配地址 ) ------------ #include <stdio.h> in…
<script> function test(link) { link = link || 'none'; alert(link); } function test2(){ var link = ''; if(link){ alert(1); }else{ alert(2);//2 } } test2(); test('')//弹出none </script> if判断空字符串是没有,所以弹出2 if(link=="") 就弹出1…
mysql登陆错误:error: 'Plugin '*2A8AF30E682613A2F1CE1E28BA11D8560B294DCE' is not loaded' http://stackoverflow.com/questions/30680865/mysql-java-sql-sqlexception-plugin-765c23fcc8127a2234dbcfb6e5207d82ed86264e http://blog.csdn.net/gavinking0110/article/det…
问题产生背景 在使用Spring Cloud Gateway过程中,希望配置多Routes映射不同的微服务,因为Gateway 和Zuul的访问路径不同(zuul 会带有服务service Id),造成错误. 现象表现 问题定位 认为是配置Predicate问题. routes: - id: after_route uri: lb://user-center predicates: # 当当前时间晚于设置时间之后,才能访问 # 否则得到404错误 #- After=2010-01-01T18:0…
首先,根据书中想要实现的结果,看了下书中代码,大致知道布局是怎么样的,然后根据图片自己写xml, 1.运行时第一个坑是 忘记在AndroidManifest.xml里先注册activity,导致运行时找不到class(未申明就使用的错误),然后补上: <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <act…
<property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/springmybaitis?useUnicode=true&characterEncoding=UTF-8&…
译文:https://github.com/wuYin/blog/blob/master/50-shades-of-golang-traps-gotchas-mistakes.md 原文:50 Shades of Go: Traps, Gotchas, and Common Mistakes,翻译已获作者 kcqon 授权. 不久前发现在知乎这篇质量很高的文章,打算加上自己的理解翻译一遍.文章分为三部分:初级篇 1-34,中级篇 35-50,高级篇 51-57 前言 Go 是一门简单有趣的编程语…
前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷.如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到. 如果花时间学习官方 doc.wiki.讨论邮件列表. Rob Pike 的大量文章以及 Go 的源码,会发现这篇文章中的坑是很常见的,新手跳过这些坑,能减少大量调试代码的时间. 初级篇:1-34 1. 左大括号 { 不能单独放一行 在其他大多数语言中,{ 的位置你自行决定.Go 比较特别,遵守分号注入规则(automa…
<!-- 定位有三种: 1.相对定位 2.绝对定位 3.固定定位 这三种定位,每种定位都暗藏玄机,所以我们要一一单讲 position:relative; position:absolute; position:fixed; 1.相对定位 .box1{ width: 200px; height: 200px; background-color: red; /*如果对当前元素仅仅设置相对定位,那么与标准流下的盒子没有什么区别*/ position: relative; /*设置相对定位 我们就可以…
let  全面取代var 大概相似于C++的定义,一个变量必须得先定义后使用,没有预编译 注意let的作用域,一个{}就是一个作用域,上述规则须在一个作用于内 坑:for(let i =0;i < 10; i++){ let i=20; } 这个例子存在父子作用域,即(){}各为一个作用域,所以i可以重复let const 即静态变量值不允许改变,常用于声明为一个常量 坑:let arr=new array(1,2,3); arr.push(4);//arr:1,2,3,4 因为数组为引用,引用…
代码改变世界,世界改变码农,码农改变代码! 我就是我,我就是一个码农的武林. 前方JS巨坑出没,请注意集中力! 巨坑1:js精度问题 前段时间去一家物流公司面试,做了一个js题,印象尤为深刻: var one=0.1; var two=0.2; var six=0.6; var eight=0.8; console.log([two-one==one,eight-six==two]); 当时的我是反应速度极快的,这是考数学吗,当然全true啊?回头再电脑上一试,发现是[true,false].坑…
由于写EFLAGE博文中,有关C位,P位,O位,我觉得我没有描述清楚,而且C位也没有演示过借位情况,P位中也有些坑没讲,我还是决定再补一篇,争取把每个标志位描述清楚,不光是让看我文章的人能看的明白,也是自己对知识的巩固加深,虽然没什么技术性的东西,但我一直觉得,再牛的花招它都是由基础构建而出的,相信经过1年,2年,甚至5,6年的积累,也能极大丰富我的知识视野,尽管不一定会记得,但是好记性不如烂笔头,当我遗忘再次不会时,翻开博文一查,肯定会有一种豁然开朗的感觉,那时,我肯定会感激现在的我.千里之行…
前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷.如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到. 如果花时间学习官方 doc.wiki.讨论邮件列表. Rob Pike 的大量文章以及 Go 的源码,会发现这篇文章中的坑是很常见的,新手跳过这些坑,能减少大量调试代码的时间. 初级篇:1-35(二) 18. string 与索引操作符 对字符串用索引访问返回的不是字符,而是一个 byte 值. 这种处理方式和其他语言…
前言 Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷.如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到. 如果花时间学习官方 doc.wiki.讨论邮件列表. Rob Pike 的大量文章以及 Go 的源码,会发现这篇文章中的坑是很常见的,跳过这些坑,能减少大量调试代码的时间. 1.1.1. 初级篇:1-35 1.左大括号 { 不能单独放一行 在其他大多数语言中,{ 的位置你自行决定.Go比较特别,遵守分号注入规则(aut…
/// <summary> /// 根据Int类型的值,返回用1或0(对应True或Flase)填充的数组 /// <remarks>从右侧开始向左索引(0~31)</remarks> /// </summary> /// <param name="value"></param> /// <returns></returns> public static IEnumerable<boo…
题目链接 给出n个数, 每个数有特定的一种操作, &|^三种, 给出一个m, 初始值属于[0,m],选定一个初始值, 使所有操作做完之后的值最大, 输出这个最大值. 1, 从最高位贪心, 如果初始这一位为0的时候, 所有操作进行完之后结果为1, 那么这一位就已经确定位0. 2, 初始为0, 如果所有操作进行完之后这一位为0, 那么就试初始为1的条件. 设当前位是第pos位, 如果之前已经有的数加上(1<<pos)小于m, 那么这一位为1就是可以的. 当初始为1的时候, 所有操作进行完之…
UiAutomator2.0升级填坑记 SkySeraph May. 28th 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com 啰嗦 Google Android Developers 在2015年3月就发布了UiAutomator 2.0版本(下文简称U2),而公司的核心产品中用到还是UiAutomator老版本(下文简称U1),业界用U2的也不是很多,虽然有诸多问题和不便(如高版本OS中不支持Re…
一位IT男的7年工作经验总结 1.分享第一条经验:"学历代表过去.能力代表现在.学习力代表未来." 其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这个道理有些体会吧.但我相信这一点也很重要:"重要的道理明白太晚将抱憾终生!"所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2.一定要确定自己的发展方向,并为此目的制定可行的计划. 不要说什么,"我刚毕业,还不知道将来可能做什么?","跟着感觉走,先做做看&quo…
前言 继上次爬完了热修复的坑位,中途爬了各种各样的坑.今天我们来说说插件化Replugin的坑位.Replugin刚出的时候我就看过了.第一次看的时候可能心态不好.没看懂= =第二次重头在看,发现蛮简单的,可能一两个小时就搞定了.但是这玩意出来我就知道了.今天才整理.这就可想而知,坑位多的有点可怕.好了.下面,我们一一整理这些各式各样的坑. 主程序接入 gradle的依赖 在整个项目的build.gradle中添加如下代码: buildscript { dependencies { classp…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第二十章:按位与.按位或.异或.反码.位运算 下一章 "全栈2019"Java第二十一章:流程控制语句中的决策语句if 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"…
目的 热修复去年年底出的时候,变成了今年最火的技术之一.依旧记得去年面试的时候统一的MVP,然而今年却变成了RN,热修复.这不得不导致我们需要随时掌握最新的技术.不然可能随时会被淘汰.记得刚进公司,技术总监就给我们布置了学习RN和热修复的任务.不过因为临时调整去了产品部.学习的时间变少了.最近抽空看了关于热修复.于是,便有了此文. 概述 关于热修复,说白了就是线上修复,这个基本就不用多解释了.因为如果出了紧急bug.天天更新.用户不嫌烦我都嫌烦.而且频繁更新会导致用户的损失. 现在热修复的技术基…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 坑后扩展 1.4.1 扩展知识 1.4.1 技术关键字 1.5 填坑总结 1.1 踩坑案例 踩坑的程序是个常驻的Agent类管理进程, 包括但不限于如下类型的任务在执行: a. 多线程的网络通信包处理 和控制Master节点交互 有固定Listen端口 b. 定期作业任务, 通过subprocess.Pipe执行shell命令 c. etc 发现坑的过程很有意思: a.重启Agent发现Port被占用了 => 立刻想到可能进程没…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4.1 技术关键字 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 Github: https://github.com/baidu/CUP 1.1 踩坑案例 pid, ppid是大家比较常见的术语, 代表进程号,父进程号. 但pgid是个什么鬼? 了解pgid之前, 我们先复习下: 进程篇其一 里面场景是: 一个进程通过os.system或者Popen家族启动子进程 后通过杀死父进程的方式无…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 公众号点击 踩坑之旅菜单 或者 https://github.com/mythmgn/awesome_py_traps 1.1 踩坑案例 小明是个服务器管理员, 他从老管理员手里接手了一个非常繁琐的运维工作: 短暂授权root 账号给不同的 team 接口人运行备份任务 该运维任务有几个特点: 任务需…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 技术关键字 1.5 坑后思考 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: 2.7.14 代码示例: 菜单 - Python踩坑指南代码示例 1.1 踩坑案例 小明是个服务器管理员, 他从老管理员手里接手了一个非常繁琐的运维工作: 短暂授权root 账号给不同的 team 接口人运行备份任务 该运维任务有几个特点: 任务需且仅需运行在 root 下 root 账号只能短暂授权给各个小组 通过账号管理平…
目录 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4.1 技术关键字 1.5 填坑总结 2. 前坑回顾 2.1 Linux中, 子进程拷贝父进程哪些信息 2.2 Agent常驻进程选择>60000端口的意义 代码示例支持 平台: Centos 6.3 Python: 2.7.14 Github: https://github.com/baidu/CUP 1.1 踩坑案例 今天的坑不仅包括裸用os.system还包括裸用相关的家族: os.popen subprocess家族 sub…