自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

as576228266的博客

Java开发工程师从实战中汇总经验,落地文章

  • 博客(30)
  • 收藏
  • 关注

原创 设计模式(十一):享元模式

大家好,欢迎来到编程队伍,我是作者王小伍,你可以叫我伍先生这篇文章是设计模式系列文章的第十一篇:享元模式设计模式系列前几篇没看的可以点击对应的文章快速查看设计模式(一):单例模式设计模式(二):工厂模式设计模式(三):生成器模式设计模式(四):原型模式设计模式(五):适配器模式设计模式(六):装饰器模式设计模式(七):桥接模式设计模式(八):代理模式设计模式(九):组合模式设计模式(十):外观模式正文我们还是老规矩,用一个具体案例开始我们的设计模式之旅假如我们要做一个功能,可

2022-04-06 14:44:34 817

原创 设计模式(十):外观模式

设计模式系列第10篇,内附前9篇链接

2022-03-29 13:17:08 442

原创 设计模式(八):代理模式

大家好,欢迎来到编程队伍,我是作者王小伍,你可以叫我伍先生这篇文章是设计模式系列文章的第七篇:代理模式设计模式系列前几篇没看的可以点击对应的文章快速查看设计模式(一):单例模式设计模式(二):工厂模式设计模式(三):生成器模式设计模式(四):原型模式设计模式(五):适配器模式设计模式(六):装饰器模式设计模式(七):桥接模式正文我们还是老规矩,用一个具体案例开始我们的设计模式之旅假如我们程序里具备了支付功能,有一个支付接口 Paymentpublic interface

2022-03-12 15:10:32 646

原创 设计模式(七):桥接模式

大家好,欢迎来到编程队伍,我是作者王小伍,你可以叫我伍先生这篇文章是设计模式系列文章的第七篇:桥接模式设计模式系列前几篇没看的可以点击对应的文章快速查看设计模式(一):单例模式设计模式(二):工厂模式设计模式(三):生成器模式设计模式(四):原型模式设计模式(五):适配器模式设计模式(六):装饰器模式正文我们还是老规矩,用一个具体案例开始我们的设计模式之旅一般去景区游玩,买门票时针对儿童、老人、军人、医护人员或其他特定人群会有一定的优惠:比如儿童6折,老人5折假如有A、B两个景区,

2022-03-06 21:57:33 259

原创 设计模式(六):装饰器模式

俄罗斯套娃大家都玩过吧,就像是这样这玩意玩起来很上头,打开一个总期待会有下一个,充满了趣味性程序员在写代码时,也会遇到像套娃这样令人上头的代码打开一个类,里面还有一个类,再打开一个,里面还有一个...这种套娃似的代码其实是一种很常见的设计模式,它叫装饰器模式今天我们就来扒一扒装饰器模式到底是个什么东西实际案例假如我们要写一个支付的功能,支付的方式有支付宝和微信我们用代码来实现这个功能首先我们要定义一个接口类Payment,这个接口类用来规定支付功能应该有哪些行为,也就是应该有哪些方法比

2021-10-11 19:00:05 108

原创 设计模式(五):适配器模式

今天要讲的设计模式堪称人人都会,不是因为它太简单,而是因为它太常见,它就是 适配器模式这个玩意大家应该都认识,它是一个耳机转接头假如你只有一个圆孔插头的耳机,但是手机的音频插口是type-c的,这时候你是没办法用耳机听歌的利用耳机转接头,就可以使用圆孔的插头和type-c插口的手机来听歌在我们对接一个三方系统时,假如我们系统的接口规范和三方系统的接口规范不一样,该怎么对接接口规范不一致,导致我们不能和三方系统完成对接,必须修改其中一方的接口规范但是,不管修改哪一方的接口规范都可能导致系统已有

2021-09-28 17:56:16 108

原创 设计模式(四):原型模式

什么是原型模式?为什么要使用原型模式?前两天面试了一个95年硕士毕业的小姐姐,在杭州某大厂工作了两年,最近想回家乡发展对于两年以上工作经验的候选人,我都会问一些和设计模式相关的面试题不得不面对一个现实,大部分候选人对设计模式都没有很深入的理解,回答的并不出彩当我对这个小姐姐提出这两个问题时,也没抱有很高的期望。没想到小姐姐的回答很让人意外,甚至可以说是让我对原型模式有了更深刻的理解为什么要使用原型模式假如有一个类,命名为 A 。A 类里面有两个属性,分别是 x 和 y ,并为这两个属性提供对应的

2021-09-26 18:48:57 85

原创 设计模式(三):生成器模式

这是设计模式系列文章的第三篇之前两篇的阅读效果不是很好,我一度怀疑这种题材的文章不受大家欢迎,直到前两天我面试了一个小姐姐...面试过程中和小姐姐聊起她在上家公司做过的项目,其中有一个功能,根据小姐姐的描述,我第一感觉应该用生成器模式来实现小姐姐说她并没有用生成器模式,就是简单的硬编码我问她为什么不使用生成器模式实现的时候,小姐姐的一句话突破了我的认知下线小姐姐说:我不知道什么是生成器模式,我不打算做架构师,没必要学设计模式原来她认为设计模式只有在做架构设计的时候才会用到,跟普通程序员没有关系

2021-09-23 15:13:18 120

原创 设计模式:用实际案例讲解工厂模式

工厂模式有啥用啊,我的项目没使用工厂模式也照样运行这是我听过最令人哭笑不得的吐槽,这个程序猿的头发不知道有没有被自己薅秃的确,项目中不使用工厂模式并不会影响项目的运行但是,当项目后期需要二次开发时,代码的维护和修改的复杂度,绝对能让你恨不得把自己头发都薅秃下面我们就来盘一盘工厂模式能解决哪些问题简单工厂模式实际案例假如客户有这样一个需求,做一个用户订购手机来玩游戏的项目项目中可以生产华为和小米的手机,生产的手机只能用来玩游戏,用户可以通过京东和淘宝来订购手机需求中的一个前置条件是手机只能用

2021-07-13 09:25:58 174

原创 用单例模式实现雪花算法

雪花算法雪花算法适用于生成全局唯一的编号,比如数据库主键id,订单编号等至于为什么叫雪花算法,是因为科学家通过研究认为自然界中不存在两片完全相同的雪花,所以这种算法用雪花来命名也是强调它生成的编号不会重复吧雪花算法生成的编号共有64bit,刚好是java中long的最大范围雪花算法是用64位的二进制数字表示在二进制中,第一位是符号位,表示正数或负数,正数是0,负数是1因为生成唯一编号不需要负数,所以第一位永远是0,相当于没用用41位表示时间戳,这个时间戳是当前时间和指定时间的毫秒差。比如.

2021-07-02 16:39:38 864 1

原创 不小心删库了,试试binlog

事件起因我们的系统中有数据导入的功能,可以把特定的格式的excel数据导入到系统中来由于客户电脑的文件比较多,很多文件的名字也比较相近,客户在导入excel时选错了文件这个错误的excel文件的格式恰好能被系统解析,客户也没及时发现导错了文件,所以就将6万多条没用的数据导入到了系统中这6万多条数据对系统来说就是无用的数据,不会影响系统的运行,最多也就是占用一点数据库空间而已客户只需要把正确的excel重新导入,就可以继续完成他的业务了但是,客户是一个重度强迫症患者,他觉得在管理平

2021-06-29 08:58:30 402

原创 docker命令大全以及常用写法举例

内容来自公众号赫连小伍,转载请注明出处login:登录到远程仓库 search:从远程仓库搜索镜像 push:把本地镜像推送到远程仓库 pull:从远程仓库拉取或更新镜像 images:显示所有镜像 rmi:删除本地镜像 tag:标记镜像,将其归入仓库 history:查看镜像的创建历史 save:将镜像打包成文件 load:从指定文件中加载镜像 run:创建一个容器并运行 start:启动容器 restart:重启容器 stop:停止容器 restart:重启容器 kil

2021-06-09 11:14:16 569

原创 免费送敬业福、万能福

二十三、糖瓜粘;二十四、集五福;二十五、集五福;......、集五福;又快过年了,每年的集五福好像也成了过年的一种仪式感到最后虽然分不了多少红包,至少亲朋好友见面又多了一个话题和亲朋好友一起互送福卡,还能增进彼此之间的感情集五福活动更多的乐趣在于收集福卡的过程,至于结果只是一个附属品最后开奖一个大红包,我自然高兴;如果开奖的红包金额小,也没必要失落,至少我享受了过程今年集五福的玩法有所更新,集齐五福的概率也更大截至目前,已经有将近三百人集齐五福了除了AR扫福、写福字、蚂蚁森林、芭芭农

2021-02-04 13:30:42 1281

原创 maven在linux和windows平台下的安装教程

本文是maven系列教程第一篇,包含maven的概念介绍、linux平台下的安装和windows平台下的安装,请根据自己电脑系统学习对应的内容概念介绍maven是基于项目对象模型POM(Project Object Model)概念的项目管理工具,可以对java项目进行构建和依赖管理,是 Apache 软件基金管理会下纯java开发的开源项目linux平台下安装执行命令下载maven压缩包wgethttps://mirrors.tuna.tsinghua.edu.cn/apache/.

2020-12-25 16:37:20 337

原创 arthas的webconsole操作详细搭建步骤说明

之前给大家介绍了使用 arthas 排查生产环境中那些令人头疼的问题,如 cpu 飙升、接口响应慢等。在不重启服务的情况下实时对问题进行跟踪排查、反编译分析,有兴趣的小伙伴可以猛戳用它调试线上 bug,真得劲!查看本文主要介绍用本地浏览器连接远程服务器进行bug调试的两种方法webconsolewebconsole 是 arthas 提供的 web 页面,它可以让用户在自己的电脑上,连接远程服务器的 arthas 执行命令,命令的执行方式和在服务器直接操作没有任何区别webconso..

2020-09-22 16:36:24 4823 3

原创 用它调试线上环境bug,简直不要太优雅

arthas中文直译过来叫阿尔萨斯,是阿里巴巴开源的java应用诊断工具,在线排查问题,无需重启服务,实时监控jvm状态。支持JDK6以上版本,支持Linux/Mac/Window操作系统。​采用命令行交换方式,tab键命令自动补全,而且兼容linux系统部分命令,如:grep,ctrl+i清屏,ctrl+a跳到行首,ctrl+c终止命令等如果你还在使用jdk原生jstat、jmap等命令排查问题,那么,强烈建议你使用arthas。本文介绍arthas的下载安装、启动...

2020-09-14 11:43:03 518

原创 浅析数据库事务隔离级别

数据库的事务隔离级别共分为4种,级别越高性能越差,合理的设置事务隔离级别才能保证数据正确的情况下性能最好。隔离级别没有合理的设置,会出现一些异常情况,比如脏读、不可重复读、幻读。根据自身的业务场景去分析是否允许这些异常情况的存在,设置合理的隔离级别一、概念介绍脏读在一个事务中读取到了其他事务未提交的数据,就是脏读。未提交就可能出现回滚,如果数据被回滚,那么该事务对回滚的数据进行操作必然会导致数据错乱,所以脏读情况要尽可能避免可重复读在一个事务中,从开始到结束的任意一...

2020-09-02 17:24:31 127

原创 linux抓包命令tcpdump常用场景举例

tcpdump是一个功能强大的命令行数据包分析器,它是通过监听服务器的网卡来获取数据包,所有通过网络访问的数据包都能获取到。它也提供了过滤器的功能,可以获取指定的网络、端口或协议的数据包程序员日常排查问题,最常用的是使用过滤器功能获取指定端口的数据包,用来分析服务器是否收到请求、请求数据是否完整。参数介绍tcpdump命令的参数很多,详见如下这里只介绍一些常用的参数​-ccount// count表示数量。抓取数据包的数量达到count后结束命令,如果不使用...

2020-08-13 11:44:43 642

原创 java的注解是个什么玩意

什么是注解通常情况下,程序员对一组数据进行操作时常会使用json或xml。在使用json时,大部分情况下会定义一个实体类,类中有各种字段来描述json中的key;在使用xml时,也会定义一个DTD来描述xml中可以有哪些key。注解的作用也是类似,注解就是描述一组数据、定义数据类型的一个对象。使用@interface 可以定义一个注解,注解中的属性类型只支持String、基本数据类...

2020-04-20 10:40:24 254

原创 java8的新特性之optional

​在写代码时,调用了一个方法、三方接口或者反序列化一个对象时,基于不信任原则,对获得的对象进行非空判断是一个程序员最基本的编程素养。先看一段演示代码,连环夺命if判断(该代码只是为了演示效果,过于简单,实际中也不乏与之类似的代码)或许你早起习惯了这种写法,都没有想过使代码变得更加优雅,如下图这般代码是不是很简洁,如果你想了解optional的具体用法,请继续往...

2020-04-15 09:22:44 139

原创 Java8中的优雅擦操作Stream详解

java8已经发布相当长一段时间了,我工作中一直维护的几个项目发布在很多环境中,我也不敢保证每个环境的JDK都是1.8版本以上的,也就一直没在工作中使用java8的一些新特性java8刚发布时我学习了一下,写了一些demo,没有及时的进行归档,现在这些demo基本都已经找不到了。在工作中每每遇到对集合进行一些操作时都很头疼,只能不停的对集合进行for循环,有时还需要对同一个集合循环两次以...

2020-02-04 13:00:26 204

原创 Linux下搭建Rocket MQ服务

本文介绍如何在Linux环境下搭建Rocket MQ服务,内容包含安装需要的环境,安装步骤,启动服务,模拟消息发送和接收,停止服务以及在安装过程中遇到的问题。​还是老规矩,先跟着操作,操作完之后就基本都会了,如果还有疑问,请在留言区评论,我会及时回复ps:文中插入了命令,某些地方排版看起来会比较乱,但是操作还是很方便的依赖的环境Rocket MQ安装需要依赖JDK1.8和...

2020-01-21 00:48:01 736 3

原创 如何产生一个全局唯一的流水号(附demo)

本文介绍如何使用最简单的方法产生一个全局唯一的流水号,支持集群,性能可靠,并且经过实际的应用唯一流水号的格式为当前系统时间+当前服务器编号+并发序列号,长度最短可为17位,每毫秒支持生成多个并且支持集群部署废话不多说,直接上demo,以下demo只需要把连接数据库的工具类Dbutil换成你自己的就可以直接使用了,demo运行成功后需要注意下文中的注意事项package c...

2020-01-19 17:10:50 2587

原创 Rocket MQ报错No route info of this topic的解决办法

使用Rocket MQ发送消息时报错 No route info of this topic, 详细错误信息如下:com.aliyun.openservices.ons.api.exception.ONSClientException: defaultMQProducer send exception at com.aliyun.openservices.ons.api.impl.rock...

2020-01-18 22:43:16 19017

原创 MySql报错only_full_group_by的解决办法

前段时间我在一个新环境里部署程序时遇到MySql报错only_full_group_by,之前已经遇到过一次同样的问题,当时没有总结经验,导致这次解决时耗费了不少时间,这里把本次的处理过程进行记录总结,同时分享给大家MySql数据库报错如下,从字面意思理解是select后面查询的字段没有出现在groupby中com.mysql.jdbc.exceptions.jdbc4.MySQ...

2020-01-18 00:03:38 572

原创 linux系统远程复制文件,不用再下载的本地

​前几天在linux服务器上部署项目时需要把程序从测试服务器上拷贝过来,以前处理类似问题的逻辑都是先从源服务器上把文件下载到我的电脑里,然后再从我的电脑里上传到目标服务器。由于这次的程序比较大(1G左右),按照之前的操作会比较耗时,有没有一个从A服务器直接复制文件到B服务器的方法?我从网上零零散散找了一些资料,用linux的scp命令可以解决以上问题,这里做一个汇总。还是老规矩,本文先讲...

2020-01-16 18:24:22 392

原创 使用IDEA调试远程Java代码

众所周知使用IDEA开发时可以通过debug进行调试并快速定位问题,但是如果代码已发布到远程服务器上,该如何调试呢?本文将告诉你如何利用IDEA调试远程服务器上的代码本文会先讲如何配置参数、调试,然后讲各项参数的含义,最后讲注意事项。各位在尝试过程中不需要担心这个没看懂,那个是为什么,只需要跟着做就行了。假如看完整篇文章后还有疑问,可以在留言区提问​配置本地参数打开IDEA的...

2020-01-16 18:22:16 2287 4

原创 Java中synchronized的同步原理

​本文介绍在java开发中,怎么利用synchronized保证代码的同步执行,避免跳坑,废话不多说,直接上demo。package com.helianxiaowu.demo;​/***@titlesynchronized同步demo * @desc 注意:为了演示方便,代码中多线程使用直接new的方式,这种方式不可取,会造成服务器资源消耗。 * 工作中...

2020-01-16 18:18:07 147

原创 Markdown基础语法

​markdown是一种轻量级标记语言,在2004年由约翰·格鲁伯(英语:John Gruber)创建。markdown编写的文档可以导出为多种格式,如:html,word,图片,pdf,Epub等,后缀为 .md 或者 .markdown。markdown被许多网站用来编写帮助文档或者用于论坛上发布消息,如:java项目的readme.md,GitHub,简书,reddit,Diasp...

2020-01-16 18:15:00 250

原创 Linux vi编辑器使用总结

vi或vim是linux上非常实用的编辑器,很多linux默认安装了vi或vim。vi是 visual interface(可视界面)的缩写,vim是 vi IMproved(增强版的vi)的缩写,vim可以高亮显示文本 vi分为命令模式,底线命令模式和输入模式。使用vi进入命令行模式,在命令行输入a,i,o等插入命令进入输入模式,按下ESC退出输入模式回到命令行模式。在命令行模...

2020-01-16 18:08:18 197

空空如也

空空如也

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

TA关注的人

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