- 博客(91)
- 资源 (2)
- 收藏
- 关注
原创 2022-07-10企业构建云原生应用上云知识库最佳实践
本课程从云原生时代大背景下分析应用上云带来的的优势与对业务开发人员带来的挑战,从而说明构建业务-应用服务上云知识库的重要性与必要性;主要根据知识库建设的通用性原理,从知识生产到消费再到知识再生产的完整闭环阐述知识库的核心建设过程,并根据上云知识库的特点围绕上云前、上云中和上云后,提出上云内容分类建议与技术实现建议供企业参考。...
2022-07-10 10:41:08 463 1
原创 K8S认证工程师(CKA)考试必过指南
关于CKACKA全称为(Certificated Kubernetes Administrator)即为官方认证的Kubernetes管理员。管理员认证(CKA)旨在确保认证持有者具备履行Kubernetes管理员职责的技能,知识和能力。那么CKA认证有什么用呢?提升专业能力:CKA 是 CNCF 致力于发展 Kubernetes 管理员社区,是促进公司和组织广泛使用 Kubernetes 进行落地实践过程中的关键步骤。证明你的实力:通过 CKA 认证的管理人员可迅速建立在就业市场上的信誉和价值。
2021-11-07 20:12:00 11198 1
原创 内存条玄学之四槽插满就这么难么?
内存条玄学之四槽插满就这么难么?背景最近准备折腾下虚拟机搭OpenShift集群,内存不够使了,本来是两条8G共16G,想要扩展到32G,于是咸鱼入手了2根8G,频率也是2400(其中一根是宽版,颗粒和窄版不相同),情况如下1和2我自己的能组成双通道,一共16G;3和4我咸鱼上入手的能组成双通道,一共也是16G,唯一的不同是第4条颗粒不同,是宽版的,直观感受下四槽插满指的是主板上的四个槽位插满,即4 * 8G =32G,其他信息如下主板:华硕 B350 PLUSCPU:AMD 2600X系统:
2021-08-06 22:09:58 4764
原创 CentOS7.9上部署OpenShift3.11集群
CentOS7.9上部署OpenShift3.11集群OCP官网文档:https://docs.openshift.com/container-platform/3.11/welcome/index.html版本:openshift 3.11.0centos7.9ansible 2.6.5环境信息主机名IP系统版本配置master.ocp.cn192.168.108.110CentOS 7.94C2Gnode1.ocp.cn192.168.108.11
2021-07-25 20:57:07 881
原创 如何用五千块的电脑弹奏出价值十万钢琴的效果
如何用五千块的电脑弹奏出价值十万钢琴的效果免责声明:本文所涉及资源包括采样器,音源等仅供个人学习交流,商业用途请自行购买正式版本,否则后果自负,本文概不承担一切责任五千块的电脑?不用纠结,这里是一个泛指,泛指一台办公级别的或者叫入门级别的Windows操作系统的台式或者笔记本电脑。价值十万的钢琴?不用纠结,这个不是泛指,这里是针对YAMAHA C7 GRAND PIANO(雅马哈C7三角钢琴),这货大概长下面这样这款钢琴黑色的价格大约是4.2W美元,约合人民币27W;白色的价格是5W美元,约合人民
2021-07-11 13:06:51 972
原创 Windows下Tesseract训练音符识别
Windows下Tesseract训练音符识别背景开局一张图:现在有这么一个需求,要将数字简谱中的数字带点的内容识别出来做进一步的处理,比如6 1 6 641 533. . ...识别成F 1 F FDA 5 3 3其实就是通过下面的映射关系识别# 原简谱 .1 2 3 4 5 6 7
2021-06-27 11:35:23 700 1
原创 K8S原理架构与实战(基础篇)
K8S原理架构与实战(基础篇)背景容器时代的到来在介绍K8S之前,先来看看服务器的演变过程:物理机时代、虚拟机时代、容器化时代物理机时代的缺点:部署慢 :每台服务器都要安装操作系统、相关的应用程序所需要的环境,各种配置成本高:物理服务器的价格十分昂贵资源浪费:硬件资源不能充分利用扩展和迁移成本高:扩展和迁移需要重新配置一模一样的环境虚拟机时代很好的解决了物理机时代的缺点,虚拟机时代的特点是:易部署:每台物理机可部署多台虚拟机,且可以通过模板,部署快,成本低资源池:开出
2021-06-19 22:19:09 792
原创 「30天制作操作系统系列」5~8天C语言处理鼠标键盘与中断
目录14天的时候我们已经完成了启动代码的编写并且从16位实模式转换到了32位保护模式,如果不清楚可以看看《2021-05-11【30天制作操作系统系列】14天从汇编到C语言》这篇,同时也从汇编过渡到了C语言,后面的处理几乎都是用C语言,5~8天作者讲的是键盘与鼠标信号的处理简而言之,要实现的功能就是按下键盘,屏幕上要显示相应的字符,移动鼠标,鼠标指针要进行移动C语言基础结构体在OS启动的汇编里面定义了屏幕分辨率,在地址0x0ff4处写入一个十进制数320(2字节),在内存0x0ff6写入了一个十
2021-05-23 17:09:20 813 11
原创 5分钟学废携程出品配置中心阿波罗的原理与搭建
目录背景随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址……对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……并且随着采用分布式的开发模式,项目之间的相互引用随着服务的不断增多,相互之间的调用复杂度成指数升高,每次投产或者上线新的项目时苦不堪言,因此需要引用配置中心治理。在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。目前已存在的配置中心配置中心应
2021-05-22 16:52:24 1004 1
原创 「30天制作操作系统系列」1~4天从汇编到C语言
目录背景30制作操作系统?这个听起来像天方夜谭,但是真有一本书就叫做《30天自制操作系统》,当然,自制操作系统的目的不是要去对标Windows、Linux、MacOS等流行的现代化操作系统,而是了解操作系统制作与运行的整个流程与细节,了解汇编与C语言。下图是该书作者最终制作的操作系统的模样,至少我看到有图像查看器、调色板、文本阅读器与console终端,麻雀虽小五脏俱全,这张图就是我坚持的动力(笑)。本系列文章的目的不是教你怎么一天天去实现上述操作系统,而是笔者在阅读并实践了《30天自制操作系统
2021-05-16 17:15:10 2769 23
原创 秒级搭建各类数据库测试环境
背景试想一下这种情况,你负责的某个项目数据源有SQL Server、Oracle和MySQL,假设现在不让你访问生产库,也没有测试库给你用,你就只有一台开发电脑,要你做开发你怎么做?你肯定会说,这问题还不简单吗?在开发电脑上安装这些数据库不就行了?答案是可以,但是偏题了嘛,你要在一台电脑上同时装SQL Server、Oracle和MySQL,能做到秒级?起码得废半天劲儿吧话说n年前我也遇到过这种需求,必须得在我那破笔记本上装个SQL Server,装完占用硬盘10G多,用了一上午才装完,都不用干活儿了
2021-05-12 21:49:36 469
原创 MySQL 5.6新特性:基于GTID的同步方式
目录:[图片上传失败…(image-114f7d-1618587087549)]背景在我们之前的文章中,无论是【MySQL主从集群原理+实战】还是【MySQL+Keepalived主从高可用集群原理+实战】采用的都是MySQL的传统复制方式:基于binlog文件名和偏移量的方式,即形如如下命令:CHANGE MASTER TOMASTER_HOST='172.17.0.11',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE=
2021-04-16 23:32:27 425
原创 MySQL+Keepalived主从高可用集群原理+实战
目录:MySQL+Keepalived主从高可用集群原理+实战背景随着公司业务的发展,对数据库的要求越来越高,以前的单机MySQL肯定是玩不转了,亟需升级成MySQL集群,这是一个公司在业务发展时不得不面临的问题就单机MySQL而言,自己玩玩可以,运用到实际项目中,那肯定要挨批的。一方面数据不安全,万一数据库的电脑磁盘坏了,就坑了。另一方面数据库的并发能力是有限的,一般并发数200~500就差不多了,当然你要继续往上增,也是可以的,那就影响整体Mysql的响应时间。那么有哪些集群方案呢?
2021-04-10 16:50:14 512
原创 MySQL主从集群原理+实战
目录如下MySQL主从集群原理+实战背景随着公司业务的发展,对数据库的要求越来越高,以前的单机MySQL肯定是玩不转了,亟需升级成MySQL集群,这是一个公司在业务发展时不得不面临的问题就单机MySQL而言,自己玩玩可以,运用到实际项目中,那肯定要挨批的。一方面数据不安全,万一数据库的电脑磁盘坏了,就坑了。另一方面数据库的并发能力是有限的,一般并发数200~500就差不多了,当然你要继续往上增,也是可以的,那就影响整体Mysql的响应时间。那么有哪些集群方案呢?集群方案在初期,由于MyS
2021-04-09 21:55:48 1081
原创 Redis Cluster集群原理+实战
目录[图片上传失败…(image-fd8c53-1617457870946)]Redis Cluster集群原理+实战背景之前我们介绍过Redis主从集群+哨兵的搭建,架构如下图所示这种集群模式下水平扩容和垂直扩容都可以实现,并且可以实现高可用性和易用性水平扩容:比如增加一套主从集群,在predixy代理处配置hash寻址,让部分数据可以被新加入的主从集群存储,水平扩容的实现强烈依赖于predixy代理。垂直扩容:比如增加某个集群的内存,提升单机/单集群的处理能力高可用性:一套哨兵集群
2021-04-03 21:52:23 1976
原创 Redis主从集群+哨兵搭建实战
目录:Redis主从集群+哨兵搭建实战背景当请求量逐渐变大,单机Redis可能撑不住请求的时候就要考虑将Redis做集群,入门级别的Redis集群就是主从集群,利用读写分离的特性提供高可用,引入新的技术就会带来新的问题,当然引入集群也是有很多坏处的,比如业务逻辑变复杂,需要读写分离和负载均衡(redis代理解决)网络复杂,有可能节点之间由于网络不可达产生分区风险(CAP理论)一主多从,主宕机集群部分不可用(哨兵模式解决)需要更多硬件资源支持(废话)当然带来的这些问题就有相应的解决方案
2021-03-28 20:59:25 1118 1
原创 你以为你真的了解二进制吗?详解JDK中的二进制骚操作
目录:[图片上传失败…(image-98c3f8-1616855044646)]要求十进制转二进制,首先我们想到的是除2求余法,比如数字15,如下,不断的除以2,一直到0为止,最后将余数倒序排列就是该数的二进制表示15/2 = 7 --------余17/2 = 3 --------余13/2 = 1 --------余11/2 = 0 --------余1所以15的二进制表示就是1111,再举一例,520的二进制表示520/2 = 260 -------余0260/2 = 130
2021-03-27 22:24:41 594
原创 OpenResty+Lua限流实战
OpenResty+Lua限流实战当业务量越来越大的时候,为了能保证服务的运行,限流是必不可少的!OpenResty是一个高性能网关OpenResty® is a dynamic web platform based on NGINX and LuaJIT.OpenResty = Nginx + Lua,Lua是高性能脚本语言,有着C语言的执行效率但是又比C简单,能很方便的扩展OpenResty 的功能。Lua 是由巴西里约热内卢天主教大学(Pontifical Catholic Univer
2021-03-22 21:40:39 2402
原创 5张图讲明白JDK1.7下的HashMap死循环(原理+实战)
目录情景再现网络上很多文章说HashMap死循环都是理论分析,其一是没有自己实验过,甚至给出的实验程序都是错误的,不能再现死循环的BUG,其二是给出的示意图不够详细,很多细节忽略了让人难以理解,本文在前人总结的基础上摸索出了实现死循环的方法,记录成文。死循环原因我们首先思考一下在什么样的情况下HashMap会死循环,死循环的原因不外乎是在多线程的同时扩容,在JDK 1.7的HashMap中,当hash冲突时,采用头插法拉链表,所谓头插法,即在每次都在链表头部(即桶中)插入最后添加的数据当触发扩容
2021-03-21 21:59:30 1725 3
原创 深入浅出keepalived+nginx实现网关主备高可用
深入浅出keepalived+nginx实现网关主备高可用目录背景当用Nginx作网关的时候,如果网关宕机了,整个服务将会变得不可用,那么如何保证网关的高可用呢?我们可以用Keepalived来做主备,实现网关的高可用,主机宕机了,备机选举出一个来IP自动漂移顶上去,主机恢复了,IP再飘回主机,备机自动下线!思考一下,代理可以实现高可用不呢?在两台网关前面加一台代理,轮询将请求分别打给两台网关,当一台网关宕机了,代理就不会往这台网关上分发流量,这样也能实现高可用,但是代理自身也只有一个,自己宕机了
2021-03-19 20:50:17 475
原创 Spring源码分析之AOP代理与事务
看现象AOP是在Spring IOC的基础之上的功能,所以需要先了解一下IOC,如果不了解IOC,请看之前的Spring源码系列之IOC初始化过程的文章maven依赖本文是要在IOC容器的基础之上测试AOP与事务,所以需要spring-aspects的支持与sqlite的支持<dependencies> <dependency> <
2021-03-15 22:05:48 350
原创 Spring源码分析之IOC容器解决循环依赖问题
看现象maven依赖我们只测试IOC容器,因此只需要引入spring-context即可 <dependencies> <!--测试框架--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>
2021-03-14 20:07:41 172
原创 Spring源码分析之IOC容器事件监听器
看现象maven依赖我们只测试IOC容器,因此只需要引入spring-context即可 <dependencies> <!--测试框架--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>
2021-03-13 21:56:45 269
原创 Spring源码分析之IOC容器初始化流程
目录看现象maven依赖我们只测试IOC容器,因此只需要引入spring-context即可 <dependencies> <!--测试框架--> <dependency> <groupId>junit</groupId>
2021-03-12 21:33:05 322
原创 国产最强负载均衡器LVS(理论+实战)
长文预警,先看下目录负载均衡产生背景不要因为技术而技术!技术服务于业务,一定是当前的技术满足不了业务的发展才会产生新的技术来解决业务问题,负载均衡为什么能产生?那是因为有业务需求。中国人口14亿,移动网络用户7亿,固网用户4亿,根据二八原则保守估计独立用户为2.4亿,他们具有消费能力。假设你有一个idea,我一无是处只有钱,我当你的天使投资人给你第一笔投资,你会拿去干什么?毫无疑问是营销,营销谁?营销这2.4亿人,假设有2%的人(480万)看到了你的广告,有20%的人(96W)感兴趣下载了你的A
2021-03-11 21:46:45 236447 1
原创 手撕HTTP_HTTPS代理(基于Netty实现)
HTTP/HTTPS Proxy Server直接上代码:HttpProxyServerimport io.netty.bootstrap.Bootstrap;import io.netty.bootstrap.ServerBootstrap;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import io.netty.channel.*;import io.netty.channel.nio.NioEventL
2021-03-10 22:44:09 645
原创 实战说明TCP协议栈的数据包拆包粘包问题
所谓问题严格来说不能叫问题,维基百科TCP协议这么定义的:传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义也就是说TCP只能保证数据(字节流)按照顺序发送并且到达,发几次,怎么发,每次发的长度多少,是TCP说了算的,并不是应用层,所以就会出现下面的问题:客户端发了两次,怎么服务端一次读取就读完了?客户端发了很长的一段数据,怎么服务端两次读取才读取完?要解决这个
2021-03-09 21:06:28 220
原创 一张图讲明白Linux内核中网络IO的演变过程(BIO、NIO一直到多路复用)
长文预警!!首先看一下目录[图片上传失败…(image-1a526d-1615212099561)]计算机组成首先大概了解一下计算机的组成[图片上传失败…(image-89528f-1615212099561)]内核内核是硬件和软件之间的一道桥梁、内核是个大管家、管理各种IO设备,进行程序调度、保存现场内核保护模式:不能直接访问内核,但是提供了系统调用供应用程序使用,系统调用会从用户态切换到内核态,也会引起性能损耗参考:Java离Linux内核有多远,原始连接:https://www.osc
2021-03-08 22:03:34 605
原创 不得不看的网络基础
TCP/IP五层模型[图片上传失败…(image-1ff154-1615127182425)]我就想访问个百度,为啥还要搞五层模型?每层有每层的用处,下面细细道来下面所有演示的命令均在CentOS 7,shell环境为bash应用层对应网络协议:HTTP、TFTP、FTP、NFS、WAIS、SMTP不要把协议想象得太神秘,所谓协议,就是一些成文的规定而已,比如HTTP请求头最后必须跟一个换行GET / HTTP/1.0\n应用层只管传输数据,指定协议(比如HTTP协议就是应用层的协议),底层数
2021-03-07 22:26:57 197
原创 实战证明java中的两把锁ReentrantLock与synchronized的系统调用
时势造英雄:聪明和勤奋是成功的前置条件,世上聪明和勤奋的人多的去了,真正重要的是顺势而为!背景网上一大票文章都在说Java中的synchronized锁是重量级锁,因为使用了系统调用,会从用户态陷入内核态,开销很大, 性能影响大,而ReentrantLock使用的是CAS轻量级操作,性能开销小,虽然JDK1.6后对synchronized进行了锁升级的优化,但是还是避免不了人们synchronized性能比不上ReentrantLock的刻板映像!究其原因就是synchronized很重!有系统调.
2021-02-28 17:08:49 702 2
原创 Java中命令行调用大坑
Java中命令行调用大坑背景我司有一个查询服务接口机,QPS大概40~50,调用方式是Java调用Shell命令行的方式,核心代码如下:Process ps = Runtime.getRuntime().exec("your command");ps.getInputStream();//处理输入流以前用的好好的,最有一次直接把接口机堵死了,ssh都很难登陆上,登陆上去之后发现全是同一个java进程,起码得上百个,而且还有很多defunct僵尸进程,没办法只有重启服务器等了20分钟才恢复服务后
2021-02-24 19:52:04 588
原创 Java线程池解析
Java线程池解析Java线程是内核态的线程,执行线程要完成用户态到内核态的转换,频繁创建与销毁线程比较耗系统资源,因此有了线程池存在的意义。主线程往线程池里面不断的扔任务,扔任务的过程不会阻塞,扔完就返回,线程池根据任务数量new线程执行任务,执行完任务之后线程是复用的,当下次有任务来临,线程是空闲状态时直接拿此线程执行任务,减小线程创建与销毁的开销。线程池执行任务的过程有很多细节,比如线程池本身线程安全的处理,大量用到了CAS原子操作;还有线程池是可扩容可缩容的,用核心线程数和最大线程数表示,当任
2021-02-06 17:40:53 288
原创 java中ReentrantLock解析
Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchronized还是存在一些缺陷的:虽然synchronized提供了便捷性的隐式获取锁释放锁机制(基于JVM机制),但是它却缺少了获取锁与释放锁的可操作性,可中断、超时获取锁,且它为独占式在高并发场景下性能大打折扣。多线程同步内部如何实现的模拟一些同步的思路自旋实现同步volatile int status=0;/
2021-02-06 17:25:58 210
原创 Java到底是值传递还是引用传递
Java到底是值传递还是引用传递先说结论,Java中只有值传递,没有引用传递。值传递和引用传递的根本区别是有没有变量的拷贝,或者说有没有变量的副本。啥叫值?值就是内存中真实存在的数据,就像碗里装的饭,盆里装的水一样。啥叫引用?引用就是装值这块内存区域的地址,在碗上贴个标签写上张三,下次我要找张三的碗我直接看标签就行了,这个标签就是引用。(假设所有的碗颜色形状大小都一样)啥叫指针?指针就是这块内存我不装数据了,装的是另外一块内存的地址,我在一个小碗里面装个标签,上面写着张三,通过这个小碗我找到了张三的
2021-02-06 17:14:49 314 8
原创 二进制运算
一、按位与( & ) :两位全为1,结果才为1基本运算 : 1&1=1; 1&0=0; 0&1=0; 0&0=0;e.g.51 & 5 = 0011 0011 & 0000 0101 = 0000 0001 = 1特殊用法:(1)清零:与0,结果为0;与1,不变1011 0101 & 0000 1111 = 0000 0101 //高四位与0结果为0;低四位与1结果不变。(2)取一个数的指定位。比如取(0101 1011)的高
2021-02-06 17:06:58 471
原创 JAVA反射机制
Java动态加载机制动态加载就是需要某个类的时候才对其进行加载,而不是对所有的类加载完成后才开始执行main方法。(需要看虚拟机详细的加载输入,需要对虚拟机输入 -verbose:class 参数)public class Test{ public static void main(String[] args){ new A();//看到A才加载A,此时B还没有被加载 System.out.println("=======");//横线会被打印在加载A和加载B之间
2021-02-06 17:03:06 119 1
原创 gradle关闭传递依赖
场景本项目的build.gradle依赖于commons,本项目需要ojdbc8,但是commons里面已经有了ojdbc6,现在想要在不更改commons的情况下让本项目使用ojdbc8(因为commons是公用的,更改了可能导致别人出现问题)可以使用关闭传递依赖选项transitive = false参考:https://stackoverflow.com/questions/33926800/how-can-i-exclude-dependencies-brought-in-from-othe.
2021-02-06 16:55:48 1101
原创 前端技术栈:5分钟入门VUE+Element UI
目录前言2021了,VUE都出3.0了,还不开始学习VUE?那不是一个全栈攻城狮的自我修养,虽然VUE出3.0了,但是入门还是建议VUE2.0 + Element UI,毕竟3.0还要等养肥了在学,现在教程太少,学习2.0之后在学3.0也能更加理解为什么要这么去改进VUE是啥?简单来说就是一个JS框架Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于
2021-02-04 18:47:53 1245
原创 Java中解析HTML框架之Jsoup
Java中解析HTML框架之Jsoup场景是这样的,本来是想申请一个第三方支付接口判断用户支付是否成功,后来发现不需要申请接口也可以通过订单号查询页面获取支付结果,这样就可以直接解析html来判断支付结果了,这就引入了本文的主题,Jsoup解析html当然jsoup不只有上面的应用场景,它还有一个应用场景,就是爬虫!题外话:上面场景中,使用支付接口其实才是最稳当的办法,但是支付接口申请周期长,而且一些情况下并不是免费的,再者一些支付接口只支持一种语言,可能和本项目不是一个语言(比如项目是Java的,但
2021-02-02 20:14:32 643
原创 5分钟实战QQ机器人教程(保姆级)
先看下目录5分钟实战QQ机器人教程(保姆级)免责声明:本文所涉及资源均来源互联网,仅供个人分享学习,严谨用于非法用途,否则后果自负,且与本文无关!实战在后面,先来理顺一下QQ机器人这个乱七八糟的东西,简直太乱,各种框架各种项目满天飞,所以诞生了下面的QQ机器人的前世今生。想看实战的直接跳到下面的实战目录QQ机器人的前世今生Smart QQQQ机器人最早可以追溯到Smart QQ,也就是WebQQ,参考:https://zh.wikipedia.org/wiki/Smart_QQWebQQ是
2021-01-31 20:59:03 40889 12
企业构建云原生应用上云知识库最佳实践
2022-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人