- 博客(73)
- 收藏
- 关注
原创 责任链设计模式
责任链模式(Chain ofResponsibility)允许业务请求者将责任链视为一个整体并对其发起请求,而不必关心链条内部具体的业务逻辑与流程走向,也就是说,请求者不必关心具体是哪个节点起了作用,总之业务最终能得到相应的处理。在软件系统中,当一个业务需要经历一系列业务对象去处理时,我们可以把这些业务对象串联起来成为一条业务责任链,请求者可以直接通过访问业务责任链来完成业务的处理,最终实现请求者与响应者的解耦。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。,分别处理请求的类型。
2023-10-07 22:03:21
414
原创 python包离线安装,python库rpm包制作
python项目需要将项目依赖的python库整理出来,制作成rpm包放入私有的yum源,之所以不使用pip源,是因为没有私有pip源,在离线环境下无法使用。首先要做的是分析项目中的依赖,有多种途径,比如找台空机器,导出当前安装的python lib,适用于单独部署的情况,如下面1所示。或者分析代码,找出代码中import的各种依赖,如2所示。一、pip 解析机器的python依赖:生成requirements.txt文件pip freeze > requireme...
2022-02-25 15:23:17
3331
3
原创 spring 项目排查内存泄露,老年代内存不断增长,分区占100%
这星期在测试大并发的数据上报,测试过程中发现运行一段时间后,服务会卡住,不再响应请求,排查后发现 重启时,内存会不断增加,最终到达3G多卡死。于是只能导出jvm运行的堆栈信息,分析内存泄露的问题。首先是一些常用的命令。一类是jdk自带的分析工具,jmap用于分析jvm内存, jstack可以分析线程死锁,分析线程执行情况。还有阿里的Arthas - Alibaba Java Diagnostic Tool也是一个非常强大的工具,还能直接修改一些运行的内存类,分析方法执行返回,也是非常强大。..
2022-01-25 21:55:19
2814
原创 设计模式(五)---代理模式
抽象主题相当于定义接口,真实主题相当于实现类Impl,代理类相当于spring容器 ProxyPoint 类 包含 TrainStation 成员对象,调用sell方法,在sell方法内调用TrainStation的sell方法。jdk 自动生成了代理类cglib代理:...
2021-11-01 23:32:52
177
原创 学习设计模式(三)--工厂模式
咖啡案例:1. 简单工厂模式(不属于GOF的23种设计模式):简单工厂模式不是设计模式,反而更像是编程习惯抽象产品:定义了产品规范,描述了产品的主要特性和功能,比如咖啡类具体产品:实现或者基础抽象产品的子类,比如拿铁类具体工厂:提供了创建产品的方法,调用者通过该方法来创建产品优缺点:优点:封装了创建对象的过程,可以通过参数直接获取对象,把对象的创建和业务逻辑层分开,这样以后就避免了修改客户代码,如果实现新产品直接修改工厂类降低了客户代码修改的可能性缺点...
2021-09-29 08:32:15
132
原创 设计模式学习(二)--创建者模式
创建者模式的主要关注点是“怎么样创建对象“,特点是“将对象的创建与使用分离”这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。1.单例设计模式 这种模式涉及到一个单一的类,该类创建自己的对象,同事确保只有单个对象被创建,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 饿汉式:类加载就会导致该单实例对象被创建 懒汉式:类加载不会导致该单实例对象被创建,而是首次使用该对象时才会创建。饿汉式(静态变...
2021-09-25 14:53:44
129
原创 Neutron学习(配置篇)
1.Neutron配置文件2.配置验证实现3.常用的查看日志命令sudo jornalctl --unit devstack@q-svc
2021-09-25 12:18:25
216
原创 设计模式学习(一)
1.里氏代换原则 任何基类出现的地方,子类一定可以出现。子类可以扩展父类的功能,但不能改变父类原有的功能。保证抽象类和接口的合理性,具备抽象性,不能适用于部分实现,另一部分实现报错。2.依赖反转原则 高层模块不应该依赖低层模块,两者应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户于实现模块间的耦合。 对抽象进行编程,依赖不应该直接依赖实现,而是依赖接口3...
2021-09-22 21:48:26
96
原创 MIT 分布式系统学习(一)
最近在学习MIT的分布式课程,6.824Schedule: Spring 2021,这里附上链接:https://open.163.com/newview/movie/free?pid=UGBHO30UJ&mid=OGBHVACSE 课程资料:https://pdos.csail.mit.edu/6.824/schedule.html一.分布式系统的意义:1.获取并发2.FT(容错性)3.物理原因4.安全/孤立...
2021-08-09 21:52:42
344
原创 系统监控哲学
在云原生环境下,监控是维护系统稳定的重中之重,确保系统运行在安全状态,在系统异常时候及时告警 甚至提前进行预警都至关重要。 设计监控系统要涉及几个方面:1.监控系统的选型,监控系统说是系统,做起来必须有监控agent,比如一个服务器集群或者一个容器集群,得要在分布的节点上面采集数据,这就需要利用agent将监控指标数据发给数据中心,agent一般可以看成一个定时器,定时或者实时上报数据,更新频率一定程度决定了告警速率。agent可以做个简单的agent,只用来接受...
2021-07-07 22:14:09
130
原创 CentOS命令显示-bash: 命令: command not found
方法一:这里以ifconfig举例yum provides "/*/arp"yum install -y net-tools-2.0-0.25.20131004git.el7.x86_64 #多个可选安装包时,选择第一个包注:此方法大都可以解决命令寻找不到问题,但也有例外方法二:在有该命令的另一台主机中查询包which arp...
2021-06-30 16:51:54
776
原创 CentOS环境下ping,tcping加时间戳实时输出到文件
线上网络出现问题,经常需要ping 或者 tcping 排查网络是否稳定,有时候出问题的周期比较长,需要将结果实时输出到文件中排查。 这里给出一个小方法,将结果输出到文件,而且是实时的,不用等待命令结束后再查看文件,另外将ping也加上了时间戳,方便定位时间。 1.首先写一个ping脚本加上时间戳cat test_ping.sh ——————————————————————————ping -I 132.253.66.132 10.6.28.2 -i 1 | awk '...
2021-05-17 16:47:25
2726
原创 /var/log/messages迅速增大的问题
近期阿里云磁盘总在报警,使用df和du逐一排查,发现问题出在 /var/log/messages 每天都在迅速增加,而且此日志跟我springboot指定的日志完全一致。解决步骤:1、检查springboot的logback设置。未找到将log写到 linux syslog的相关配置。2、查看系统日志的配置。打开 /etc/rsyslog.conf找到关于 messages的配置信息:*.info;mail.none;authpriv.none;cron.none /var/log/mes
2021-01-21 15:12:26
624
原创 用python实现发送原生ping包
#!/usr/bin/env python""" A pure python ping implementation using raw socket. Note that ICMP messages can only be sent from processes running as root. Derived from ping.c distributed in Linux's netkit. That code is copyright (c) 1989 .
2020-12-18 18:17:46
762
2
原创 玩转datetime
在使用datetime的时候不能总是一句datetime.now()返回,有时候需要处理出特定时刻,假如自己做转换,或者加减毫秒也行,但是本来就有原生支持方法,使用起来也很顺手,下面记录一些用法。1, 获取每天的零点 DateTime dt=new DateTime().withMillisOfDay(0); System.out.println(dt.toString("yyyy-MM-dd HH:mm:ss")); //结果 2016-09-0...
2020-12-02 15:39:35
401
原创 mysql主从复制延时的问题定位解决
MySQL主从复制的延时一直是业界困扰已久的问题。延时的出现会降低主从读写分离的价值,不利于数据实时性较高的业务使用MySQL。延时问题的重要性如果主从复制之间出现延时,就会影响主从数据的一致性。复制延时问题,,在只读从库的场景下,若从库产生复制延时,也可能会对业务造成一定影响,比如在业务上表现为读写不一致——新增/修改数据查不到等现象。由此可见,主从复制的延时问题在数据库运营中需要特别关注。一般来说,DBA在库上执行’SHOWSLAVE STATUS’,并且观察‘S...
2020-12-02 14:44:20
657
原创 linux top命令解读
top常用参数如下:-d :后面可以接秒数,就是整个程序画面更新的秒数。预设是 5 秒;-b :以批次的方式执行 top ,还有更多的参数可以使用喔!通常会搭配数据流重导向来将批次的结果输出成为档案。-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。-p :指定某些个 PID 来进行观察监测而已。在 top 执行过程当中可以使用的按键指令:? :显示在 top 当中可以输入的按键指令;P :以 CPU 的使用资源排序显示;--%CPUM :以 Memory 的使用资源排序
2020-11-30 15:35:01
725
原创 多种不同类型文件的python安装
安装地址简单教程链接python 第三方包的安装位置先找到python 或者Anaconda3的库的安装地址。第三方包的存放路径 :安装python的参考:D:\Python 3.5\Tools\scripts安装Anaconda3的参考:D:\Anaconda3\lib\site-packages到达指定位置注意将安装包下载,存放在 Python第三方包的路径下,可参照我的anaconda的路径(大家的都一样)。在安装包所在位置使用快捷键ctrl+shift+右键(本...
2020-11-26 11:02:03
117
转载 Python 的 setup.py 综合整理
1. 为什么需要对项目分发打包?平常我们习惯了使用 pip 来安装一些第三方模块,这个安装过程之所以简单,是因为模块开发者为我们默默地为我们做了所有繁杂的工作,而这个过程就是打包。打包,就是将你的源代码进一步封装,并且将所有的项目部署工作都事先安排好,这样使用者拿到后即装即用,不用再操心如何部署的问题(如果你不想对照着一堆部署文档手工操作的话)。不管你是在工作中,还是业余准备自己写一个可以上传到 PyPI 的项目,你都要学会如何打包你的项目。Python 发展了这么些年了,项目打包工..
2020-11-26 10:41:17
262
原创 ansible 自动化运维入门
最近使用ansible进行服务的自动化部署和升级,简单说下初次使用的感受,相比写shell脚本和python脚本自动化一些操作的执行流程,ansible提供了多种模块的支持,相当于在原有角度再进行了封装。列入简单的yum控制,假如要写脚本实现,一般通过执行shell命令拿到返回输出后,进行判断,但是ansible提供模块化的支持,如下面命令,可以完成规范化的脚本书写,并且对部署相关的支持很多,让写出的脚本所见即所得,一目了然,类似sql那种语言化的编程语言。- name install n...
2020-10-23 11:02:56
121
原创 python的protobuf 版本对repeated数据类型的处理
首先定义出地址薄:syntax = "proto2";package tutorial;message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { requir...
2020-10-09 22:31:22
5808
转载 maven中scope=compile 和 provided区别
问题再现:上次这边朋友问我一个问题,就是他们在pom.xml中的dependency中,看到有一些是<scope>provided</scope>的情况,比如如下:<dependency> <groupId>com.liferay.portal</groupId> <artifactId>portal-impl</artifactId> <version>6.1.0</v
2020-09-14 09:58:11
1065
原创 openstack利用devstack安装,安装之后dashboard报错Internal Server Error
我在本地起了两台虚机,利用devstack一键部署openstack,一台作为控制节点,另一台作为计算节点,安装过程也颇为曲折,总之就是看报错,多试试,大多数是因为网速的原因,可以切换成国内镜像源,然后就是不断尝试,每次./stack.sh之前最好清理一下使用./unstack.sh,这样成功率会高些。 我安装的是rockey,安装过程中会提示python版本不合适,我就把原来的2.7版本切换到3.6版本,总算安装成功后,但是会产生报错,报错页面是这样的 通过sudo vim /va...
2020-09-09 19:33:40
2450
原创 运维自动化之ansible--(playbook模式)
运维自动化之ansible--(playbook模式)一、AnsiblePlaybook简介 playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态。playbook就像Ansible控制器给被控节点列出的的一系列to-do-list,而被控节点必须要完成。也可以这么理解,playbook 字面意思,即剧本,现实中由演员按照剧本表演,在Ansible中,这次由计算机进行表演,由...
2020-08-24 14:28:13
500
原创 ifconfig、route、ip route、ip addr、 ip link 用法
网络管理是一个复杂而庞大的体系,博主最近刚好学了一点关于网络的知识,就跟大家分享一下如何管理网卡、配置及查看ip地址和路由表。主要通过以下几个命令来演示一下。 现在一些旧的命令由于功能上有欠缺,已经逐渐被新命令取代。旧命令 新命令 ifconfig ip addr route ip route ip link 一、ifconfig 1)配置地址: 比如修改eth0网卡的ip为192.168.174.10...
2020-08-24 14:22:48
1539
原创 Redis基本数据学习记录(一)
set key (different type)valuekey值唯一,1、字符串类型set name james不存在时候设置值setnx name testset age 23 ex 10设置超时时间为10秒2.hash类型hset user:001 name james设置多组hmset user:001 name james age 15获取所有值hgetall user:001获取key的所有fieldhkeys u...
2020-06-01 09:37:19
117
原创 “java.io.FileNotFoundException Too many open files”报错处理
在开发中遇到了部署到服务器的抛出这个异常,直接导致了springboot启动失败,而在其他的机器正常,所以应该与服务器的机器配置问题有关,这个问题出现是由于文件描述符不够了,出现这个问题需要检查两点: 1.是否自己的应用开启过多的连接 2.是否自己的机器设置的limit太低查看文件描述符大小:修改文件描述符大小:方法1,只对当前session有效,设置限制为62235:ulimit -HSn 62235方法2,永久有效:在/etc/secur...
2020-05-14 12:53:29
1938
原创 sudo:抱歉,您必须拥有一个终端来执行 sudo
我在运行python脚本的时候命令行使用了sudo,代码差不多是这样的,在机器上运行报错: re1 = os.popen(cmd) 另外有时候,你利用ssh命令去执行sudo cmd也会报这个错误,解决方法如下:##Default requiretty #注释掉 Default requiretty 一行,解决问题sudo sed -i 's/Defaults ...
2020-04-23 10:26:54
1745
原创 利用ip addr 操作网卡的ip
删除ip:echo "########## os remove vip"ip addr del 192.168.56.101/24 dev bond0 label bond0:1ip addr del 192.168.165.101/24 dev bond1 label bond1:1echo "########## os remove phy ip"ip addr del 192...
2020-04-22 16:44:14
1934
原创 Linux yum使用,yum -y install有何不同
如果使用yum install xxxx,会找到安装包之后,询问你Is this OK[y/d/N],需要你手动进行选择。但是如果加上参数-y,就会自动选择y,不需要你再手动选择!yum -y install 包名(支持*) :自动选择y,全自动yum install 包名(支持*) :手动选择y or nyum remove 包名(不支持*)rpm -ivh 包名(支持*):安装rp...
2020-04-22 09:04:07
945
原创 Java Json转换的用法
java作为主流的web后端语言,在与前端数据打交道的时候较多会遇到json转换。 首先可以利用Json工具类将java对象转换为字符串: JSON.toJSONString(missionList); 另外,json本身也可以看成是一个key-value的形式,与map相当,所以可以构建JSONObject,利用其中的String转换方法。JSONObjec...
2020-02-28 15:11:44
207
原创 Linux查看内存占用
统计内存最高的进程:ps aux | grep -v PID | sort -rn -k 4 | head统计CPU使用率最高的进程:ps aux | grep -v PID | sort -rn -k 3 | head僵尸进程:ps aux | grep defunct | grep -v grep查找进程启动的线程:ps -eLf PID查看网络服务状态:...
2020-02-28 14:07:57
2297
原创 SDN学习之Opendaylight浅析(五)
这一节主要讲下odl的netconf应用,其实odl比较多的是利用openflow对交换机下流表,实现真正的控制与转发的分离,然而有时候并不能如愿。很多实际真正使用的交换机不能实现真正的控制分离,如果能那么设备商会少很多利润,所以一个折衷对交换机的控制方案就是利用netconf对交换机进行控制,netconf可以看作一个通信协议,交换机一般在830端口起一个服务器,接受客户端的请求调用,通...
2020-02-27 11:44:46
1742
2
原创 SDN学习之Opendaylight浅析(四)
前面主要对ODL的基础进行梳理和总结,其实基础只是学习的很小的一部分,更多的时候还要阅读源码,在官网上面查找资料,当然基础打牢是必须的,比如说在不同版本的odl对事务提交的返回的future也略有不同,但是提交所做的处理在原理上面是相通,只是语法上的区别。总之,ODL学习之路漫漫,要有耐心和恒心,总会遇到各种各样的报错,积极思考耐心解决问题才是王道,这一讲主要针对ODL的feature进行...
2020-02-19 17:27:26
861
原创 SDN学习之Opendaylight浅析(三)
上讲讲到datatore,为了保证合理的篇幅先结束了,这讲接着上讲,datastore里面的数据可以利用listener来监听数据变化,在数据变化的时候触发event处理。 早期是使用DataChangeListener来监听数据变化,使用AsyncDataChangeEvent来获取变更的信息,目前已弃用。 ...
2020-02-03 18:02:32
838
原创 SDN学习之Opendaylight浅析(二)
上一篇讲了ODL的基本认识和安装,这一篇主要讲讲ODL内部的使用,ODL控制器是MD-SAL机制,MD代表服务是以模型驱动,的,这个模型简单来说就是yang模型,早在2003年,IETF成立了一个NETCONF工作组,提出一种基于XML的网络配置管理协议,也就是NETCONF(Network Configuration Protocol),因为该协议的配置功能非常强大,同时兼顾监控和故障管理,安...
2020-02-02 21:06:40
1178
1
原创 SDN学习之Opendaylight浅析(一)
一、写整个博客的理由 武汉最近疫情肆虐,闲居家中,行动受限,思考前段时间学习的odl,决定整理一下自己的学习进展,回忆整个odl的学习过程,发现并不容易,odl作为一个开源的SDN控制器,其资料并不完全,我找到的资料大多集中在14,15年,版本以氢、氦居多,而基本理论的部分还好说,至于安装和函数调用乃至使用的变动还是很大,我在看教程的过程中往往连第一步安装都过不了,所以我希望我能够总...
2020-02-01 16:48:21
1389
原创 在文件夹中查找字符串
有时候需要在指定文件夹中查找字符串,如果文件夹中文件很多,即便你大概知道字符串在哪个文件中,也可能难以找到指定的字符串,这时候可以使用命令:grep -r -e string directory例如,在home文件夹中需要test字符串: grep -r -e "test" /home/ ...
2019-12-26 15:47:35
820
原创 正则匹配URL
(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]可以匹配文字中的url。
2019-12-25 10:44:21
361
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人