自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

diy_os的专栏

Stay Hungry. Stay Foolish.

  • 博客(210)
  • 资源 (2)
  • 收藏
  • 关注

原创 生产-消费模型组件实现 Producer Consumer Solution using BlockingQueue

原来各个应用某些业务节点的日志通过filebeat+elk收集,供各个业务方使用,线上发现filebeat消耗非常大的硬件资源,而且应用集群较大,每次新增日志类型时需要新增filebeat配置并启动新的应用进程,较为繁琐和耗服务器资源;优化成通过kafka收集日志,consumer消费并写入es,考虑到频繁的写入es会造成应用资源、网络开销的浪费,设计上为批量写入es。该应用场景比较通用,考虑把该生产-消费模型抽成组件放入公共模块。组件设计细节使用方自定义业务属性;使用方自定义写入阈值业务方实

2021-06-09 16:07:05 184

原创 Metaspace内存不足导致FGC问题排查

事件回顾清楚的记得是2020/7/25 14:34分左右,周六的下午,我还在公司苦逼的加班中,突然钉钉告警群里出现大量应用OP的dubbo超时调用、空指针异常,异常中间还有Metaspace元空间不足等异常:o.a.c.f.l.ListenerContainer 98 [ERROR] Listener \(org.apache.curator.framework.recipes.cache.PathChildrenCache$3@7edb7fd5) threw an exceptionjava..

2020-08-31 00:13:44 1278 1

原创 dubbo_telnet自动化测试脚本

该脚本使用dubbo telnet方式(dubbo官网提供的dubbo python client目前只支持jsonrpc协议,目前环境不支持),可以根据该脚本实现dev、test环境的接口自动化、压力测试,根据具体需求填补脚本即可。#!/usr/bin/python# -*- coding:utf-8 -*-import jsonimport telnetlibimport unittestimport timeimport reclass Dubbo(telnetlib.Telnet

2020-05-28 17:05:02 404

原创 记录xpath解析html的一个坑

使用xpath解析表格时,个别td标签内容为空,导致解析出来的数组列数有问题,进而在写入csv文件时,数据错位。解决的办法用占位符填补空白:text.replace(r'<td style="white-space: pre-wrap;"></td>', '<td style="white-space: pre-wrap;">None</td>')https://lioswong.gith

2020-05-14 10:15:24 626

原创 解析html页面导出csv文件脚本

某些时候,需要从前端页面中批量获取数据,但是没有导出功能,可以通过脚本的方式处理即可。下面是一种情况,后端接口返回了html文件,但是该页面并不支持表格导出功能,如果需要获取数据,需要解析该html文件。根据实际情况灵活处理。#!/usr/bin/python# -*- coding:utf-8 -*-import jsonimport loggingimport mathimport timeimport reimport requestsimport sysimport csvfr

2020-05-10 23:15:47 545

原创 kafka producer python脚本

工作中会在开发环境中测试生产kafka消息,该脚本简单的实现了这一功能。#!/usr/bin/python# -*- coding:utf-8 -*-from pykafka import KafkaClientimport jsonimport logginglogging.basicConfig(level=logging.INFO)client = KafkaClient(hosts="102.2.20.31:15386") # 可接受多个Client,多个broker# pri

2020-05-10 22:59:18 387

原创 kafka consumer python脚本

工作中会在开发环境中测试消费其他系统的消息,该脚本简单的实现了这一功能。#!/usr/bin/python# -*- coding:utf-8 -*-from pykafka import KafkaClientimport jsonimport logging# logging.basicConfig(level=logging.INFO)client = KafkaClient(hosts="102.1.10.221:15386") # 可接受多个Client,多个broker#

2020-05-10 18:59:40 337

原创 生成海量csv文件数据脚本

工作中可能会用到海量的测试数据,可以通过脚本的方式简单快速处理,下面通过python生成海量的csv数据文件,具体的列可以根据需求定制。# -*- coding: utf-8 -*-import requestsimport sysimport reimport csvimport random'''从csv文件中读取数据'''def readCsv():# 读取csv至字典 csvFile = open("/Users/lioswong/LiosWong/sublimetext/

2020-05-10 18:53:51 2696

原创 charles踩坑记录

环境charles v 4.2.8MacBook Pro手机一加6问题描述使用charles抓手机上的包一直抓不到,手机上已经装了charles证书,而且重复装了很多次,还是不行解决[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QSCsn2eT-1573456737531)(https://note.youdao.com/yws/api/perso...

2019-11-11 15:19:46 745

原创 arthas简单使用

简介Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱,项目地址.当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个用户的数据处理有问题,但...

2019-10-15 15:39:02 400

原创 Dubbo服务引入

关于Dubbo的SPI机制、服务暴露已有文章介绍,该文介绍Dubbo的服务引入.在Dubbo中,我们可以通过两种方式引用远程服务。第一种是使用服务直连的方式引用服务,第二种方式是基于注册中心进行引用.服务直连的方式仅适合在调试或测试服务的场景下使用,不适合在线上环境使用.因此,本文我将重点分析通过注册中心引用服务的过程.运行 demo-dubbo --》 dubbo-demo-api --》 d...

2019-10-06 15:30:24 671

原创 Dubbo服务暴露过程解析

Dubbo SPI的暴露原理参考https://lioswong.github.io/2019/09/17/Dubbo-SPI%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/,本文分析服务暴露过程,运行 demo-dubbo --》 dubbo-demo-api --》 dubbo-demo-api-provider 中 Application:public class...

2019-09-30 09:36:39 3399

原创 Dubbo SPI实现原理

Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求,在 Dubbo 中,SPI 是一个非常重要的模块。基于 SPI,我们可以很容易的对 Dubbo 进行拓展.本篇文章通过示例说明,先 download 代码,然后在 ``demo-dubbo --》 dubbo-demo-api --》 dubbo-demo-api-provider` 下新建类:@...

2019-09-17 14:15:30 372

原创 CountDownLatch

CountDownLatch是java.util.concurrent包下的线程同步类,并发环境下线程对计数值减1操作,当计数值为0时,被wait阻塞的线程将被唤醒,达到线程同步.该类涉及到的主要方法:// 当前线程在计数值减到0之前一直等待,除非当前线程被中断void await()// 当前线程在计数值减到0之前一直等待,除非当前线程被中断或者超过了指定的等待时间boolean aw...

2019-08-12 20:01:21 162

原创 zookeeper入门

Apache ZooKeeper是Apache软件基金会的一个软件项目,他为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。 ZooKeeper曾经是Hadoop的一个子项目,但现在是一个独立的顶级项目。ZooKeeper的架构通过冗余服务实现高可用性。因此,如果第一次无应答,客户端就可以询问另一台ZooKeeper主机。ZooKeeper节点将它们的数据存储于一个分层的命名空间,非...

2019-04-21 18:24:37 214

原创 适配器模式

在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。–维基百科适配器模式包含如下角色:Target(目标抽象类)Adapter(适配器类)Adaptee(适配者类)Client(客户类)适配...

2019-03-15 00:01:03 288

原创 装饰者模式

修饰模式(装饰者模式),是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。–维基百科装饰者UML类图(摘自维基百科):Component(基类)它是被装饰者和抽象装饰类的共同父类,声明了在具体构件中实现的业务方法,它的引入可以使客户端以一致的方式处理未被装饰的对象以及装饰之后的对象,实现...

2019-03-14 01:27:08 245

原创 观察者模式

观察者模式观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。–维基百科生活中,顾客(Customer)去商店购买电器,但是由于缺货,顾客留下手机号码,告知店主(Manager)有货时及时通知;即顾客(观察者)订阅了店主(被订阅者)的到货的服务,...

2019-03-12 16:29:43 360 1

原创 模版方法模式

定义模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤.在软件工程中,它是一种软件设计模式,和C++模板没有关连.–维基百科案例首先看一个最常见的模版方法,Spring中的org.springframework.context.support.AbstractApplicationContext#refre...

2019-03-04 23:35:19 185

原创 策略模式

策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。–维基百科在项目中时常会用到策略模式的场景,比如业务中需要支付,但是有多个支付渠道,那如何对上层业务暴露"统一口径"(接口)呢,下面结合代码说明,首先定义支付接口:public interface P...

2019-03-03 23:48:58 258

原创 Mac Sublime Text3 Nodejs环境搭建

工作中会接触到管理后台的页面开发,之前用的IDE工具是IntelliJ IDEA,虽然功能强大,本身却很沉重,今天介绍使用sublimetext3搭建Nodejs运行环境.安装插件SublimeText-Nodejs及配置关于node、npm、sublimetext3的安装不做介绍,下载SublimeText-Nodejs(https://github.com/tanepiper/Sublim...

2019-02-28 01:00:29 1120

转载 Redis数据类型及命令

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久性(英语:Durability_(database_systems))的键值对存储数据库(英语:Key-value database),数据类型strings(字符串)字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据,例如: 一张JPEG格式的图片或...

2019-02-24 22:22:50 131

原创 史上最全国家统计局划分代码爬取

由于工作中使用国家统计局划分的区域码,本文使用python爬取地方划分码,地址:http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/本文爬取的是2018年发布的划分码,最新的划分码分为省、市、县、城镇、村庄.代码:# -*- coding: utf-8 -*-import requestsimport sysimport refrom b...

2019-02-10 01:33:15 5316 4

转载 python基础(持续更新)

本文参考廖雪峰Python教程数据类型整数Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。浮点数浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。浮点数可以用数学写法,如1.23,3.14,-...

2019-01-24 11:41:57 573

原创 python小白爬取某东bra数据分析

最近用python爬取了某东上的x款bra的用户评论,然后进行了size、color分析,直接上图:从图表上分析初步得出该款bra黑色较受欢迎,购买的小姐姐size 75B最多~下面通过数据爬取、数据解析、图表分析三方面分析。数据爬取def doPullData(): # 设置请求头 headers = { &amp;quot;:authority&amp;quot;: &amp;quot;sclub.jd....

2019-01-10 23:49:13 990

原创 python初试

最近使用python批量处理业务需求,大概是读取本地文件中的每一行订单号,然后发起http请求接口,处理具体的业务,由于实现起来很简单,所以使用python最适当不过了。python代码:# -*- coding: UTF-8 -*-import timeimport jsonimport requestsdef doIndexratePost(orderNo): // body...

2019-01-05 23:01:28 584

原创 Elasticsearch API简单使用

笔者喜欢做一些小工具,给PM或者组内同学使用,不仅仅可以提高工作效率,而且也可以学一些前端方面的知识。之前使用Elasticsearch API做过管理后台的小工具,一直没有总结,最近给PM哥们又做了一个小工具,而且也使用到了Elasticsearch API,正好做个简单分享。需求PM最近经常让我统计每家机构调用某个接口的失败记录信息,虽然接口调用记录已经打到日志了,但是没有关键字信息所...

2018-11-08 23:09:58 283

原创 并行执行任务思考

问题这篇文章由之前的并行执行任务发展而来,如何生成task,在之前的文章中,生成task方式如下:Abstract Task: public abstract class BasicUserFilter implements Callable&lt;UserFilterDto&gt; {private static final Log logger = LogFactory.getLog(...

2018-10-28 05:56:57 267

原创 spring、mybatis整合源码简单分析

配置&lt;bean id="localDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"&gt; &lt;property name="url" value="jdbc:mysql://192.168.31.

2018-10-14 18:00:43 312

原创 SPI概念及使用方法

简介SPI全称Service Provider Interfaces,用于发现接口的实现。在jdbc、日志、dubbo的设计中都使用SPI用于服务的发现。简单的以jdbc为例:jdbc Driver实现了java.sql.Driver接口,实现具体的功能,也就是Java SQL framework定义了用于数据库连接接口规范,不同的数据库厂商要想使用Java连接数据库必须实现该接口才可以,当...

2018-10-13 21:47:09 2481

原创 interface注入及报错分析

一个小case上面错误原因我想大家开发中都遇到过,大致错误原因是注入bean时,spring找到2个实例userServiceImplTest、userServiceImpl,无法确认到底使用哪个。问题出在这,原因是什么呢,在说明前,看下面的代码:@RestControllerpublic class OkController {@AutowiredUserService userSe...

2018-10-08 02:35:46 2927

原创 JWT

上图文字来自https://jwt.io/introduction/现项目中的JWT来解析如下:左边是生成的token,左边是其三部分的解析。项目中的使用,public class JWTSignerUtil { private static final String JWT_SECRET = "密钥字符串"; private static JWTSigner sign...

2018-10-07 19:22:38 593

原创 转发与重定向

平常开发中时常用到重定向,正好借此总结一下,上面的图在开发中以及参考网上文章总结出来的(参考文章见文末)。重定向@RequestMapping(value = &quot;/redirect&quot;,method = RequestMethod.GET)@ResponseBodypublic String redirect(HttpServletResponse response){ try {...

2018-10-07 14:49:42 389

原创 BeanDefinitionRegistryPostProcessor

最近在看spring集成mybatis的代码,发现MapperScannerConfigurer实现了BeanDefinitionRegistryPostProcessor接口: 很好奇BeanDefinitionRegistryPostProcessor有什么作用呢,看看MapperScannerConfigurer中postProcessBeanDefinitionRegistry方法的...

2018-09-06 00:24:29 850

原创 SpringMVC启动加载、请求分析

简介springmvc项目会在web.xml文件中配置servlet:&lt;servlet&gt; &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-...

2018-09-04 01:06:32 436

原创 浅析ThreadLocal

ThreadLocal是什么* This class provides thread-local variables. These variables differ from * their normal counterparts in that each thread that accesses one (via its * {@code get} or {@code set} m...

2018-09-02 23:43:43 162

原创 bean懒加载

Indicates whether or not this bean is to be lazily initialized.If false, it will be instantiated on startup by bean factoriesthat perform eager initialization of singletons. The default is"false"....

2018-08-26 23:00:46 434

原创 简话bean加载

首先看示例代码:&amp;amp;lt;!--no-lazy-init scope=singleton--&amp;amp;gt;&amp;amp;lt;bean class=&amp;quot;com.lios.service.test.LiosTestA&amp;quot; id=&amp;quot;liosTestA&amp;quot;/&amp;amp;gt;&amp;amp;lt;bean class=&amp

2018-08-20 02:18:29 230

原创 mybatis拦截器分表

mybatis提供了拦截器插件用来处理被拦截的方法的某些逻辑.下面会通过创建8张表,当用户注册时,根据对手机号取余数数据入不同的库.建表引入插件&amp;amp;lt;property name=&amp;quot;plugins&amp;quot;&amp;amp;gt; &amp;amp;lt;array&amp;amp;gt; &amp;amp;lt;bean id=&amp;quot;

2018-08-04 04:41:49 1030

原创 ELK、Filebeat环境搭建

简介ELK为Elasticsearch、Logstash、Kibana简称,Filebeat为日志传输工具 1. Elasticsearch The Heart of the Elastic Stack,Elasticsearch是一个基于分布式RESTful风格的搜索和分析引擎,能够解决越来越多的用例,作为Elastic Stack的核心,它集中存储数据,以便预期发现意外情况 ...

2018-08-02 21:25:28 1036

Android中简单的使用MVP

Android中简单的MVP示例

2017-01-13

FloatingAction

FloatingAction

2016-04-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除