自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 从位运算符看java类型自动转换

示例第三行,在进行位运算时,根据左侧数据类型,可知左侧数据 1L 为 64 位,而 将 1L 右移位 100 位,最大位为64位,明显是不合理的。java 对移位操作,采取的策略是,即保留右侧有效位,进行位运算,即进行收缩转换,我们可以利用取余操作,来测试效果。上述示例中,a 转换为b,a 为负数先进行拓展转换时,进行补码操作,然后进行收缩转换,保留16位。即将 a 的二进制,符号位为0, 向前补码 16 位 0。如果操作数是有符号位的,则拓展位(补码)为符号位,如果操作数无符号位,则拓展位(补码)为0。

2023-05-10 11:20:12 524 1

原创 TDD测试驱动开发入门实践

最近和团队同学们分享了测试驱动开发实践,把分享的内容同步在博客上,主要分为三个方面,简单介绍软件测试的发展历程,为什么需要使用TDD,TDD的在编码中的实践。一,软件测试的发展历程调试为主: 怎么知道程序满足了需求? 一个多职的情况下,不会区分调试和测试。证明为主: 证明软件的工作是正确; 计算机应用数量,成本和复杂性都大幅度提升,测试就显得很必要了,当前阶段是为了测试是否满足需求。破坏为主: 发现错误而执行的活动 ;不仅为了证明软件做了该做的事情,也要保证它没做不该做的事情,这会...

2022-05-20 18:09:00 640

原创 基于netty 实现 ws协议的 im 组件(一)

期望达成目标: 1.消息稳定可靠2.支持点对点消息 3.支持一对多消息 4.支持消息广播 5.支持节点扩容 6.支持服务注册发现针对目标的思考:1.消息稳定可靠方面: 采用netty为网络框架,实现websocket协议(长连接),如需要持久化消息,可将消息写入数据库,接收端进行消息确认。2.点对点消息的支持 通过给 channel 绑定身份标识,消息体指定消息类型3.支持一对多消息 ...

2020-06-17 21:44:52 847

原创 导入导出Excel之模板方法模式运用

一、概述在日常的开发过程种,excel报表是常见的一个需求。execel的操作,可以分为两种,一种是读,一种是写,其他的项目辅助性的操作都是具有共性的,我们就可以将读和写抽象出来,针对简单的Excel导入导出操作,做一个标准的实现。但是在实际的需求中,列的合并,行的合并也是常有的需求,我们可以针对这些特定的需求,快速实现复杂Execel的开发。二、设计针对上述的需求,我们采用...

2020-04-30 15:04:52 888 3

原创 MQTT 基于mqttv3 客户端重连配置

1.引入pom依赖<dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.1</version><...

2020-04-19 14:11:44 5808 2

原创 手把手带你构建一个简单的springCloud分布式任务调度组件

当前项目是基于SpringCloud,服务注册中心(eurake,nacos...)进行任务调度的思路。目前完成的功能有:任务自动注册,任务统一管理,集中调度,支持多种路由规则(可拓展),任务调度日志,轻量级无需依赖quartz。分布式任务调度和单体应用的任务调度的区别在于,通过将任务集中统一管理,无需每一个微服务都维护自己的任务。下面通过一个简单的示例来看看分布式任务调度的构建流程。...

2019-10-04 01:01:47 4419

原创 JVM内存回收和引用状态

GC垃圾回收和引用状态的关系: java垃圾回收机制,就是对堆内存进行回收。具体又划分为新生代和老年代,目前比较流行的回收算法是可达性性算法,从GC Roots开始按照一定的逻辑判断对象是否可达,不可达说明对象已死亡。(另外的常见算法为引用计数算法,当对象被引用计数器+1,当变量更改对象的引用计数器-1,当A持有B的引用,B持有A的引用,就会出现循环引用,导致垃圾不会被回收)基于...

2019-07-15 11:28:40 207

原创 HashMap源码分析

说明: 此处分析HashMap源码版本为jdk1.8一、set方法1.调用putVal方法,更改现有值,表格不属于创建模式public V put(K key, V value) {return putVal(hash(key), key, value, false, true);}2.计算key的hash 如果key为空,则返回0,取得当前的ke...

2019-07-12 11:48:30 124

原创 RabbitMQ消息丢失解决方案

最近项目中用到RabbitMQ,用到消息中间件,消息丢失,消息重复消息是必须需要面对和解决的。因为项目需要动态创建交换机,队列。在条件未知的情况下,无法使用SpringCloudStream。通过参考文档,博客,采用了RabbitTemplate,RabbitAdmin 提供的方法进行配置。首先我们要明确,如果才能确保消息的可靠:1.交换机,队列和消息都要持久化2.消息失...

2019-07-04 17:40:28 4530 2

原创 JAVA并发队列

非阻塞队列:1.ConcurrentHashMap支持并发操作的Map对象,对比HashTable,主要的差异是HashTable不支持在循环中使用 remove()删除元素HashTable在获取了Iteror对象,不允许更改其结构,但ConcurrentHashMap支持HashTable map = new HashTable();Iterator iterato...

2019-07-02 00:32:20 464

原创 常用进制转换和JAVA特殊运算符

为了阅读源码,和编写高效率的代码,进制间的转换和特殊运算符是我们必须要熟悉和掌握的。一、制转转换二进制的特点就是逢二进1,在我们学习数学的时候,我们一定记过加法表,或乘法表吧,想想加法乘法表的特性,我们可以发现进制间相互转换是很容易理解的,下面我们对常用的进制转换进行说明。十进制加法表:十进制乘法表:1.十进制二进制相互转换二进制的特点是逢二进一,乘法就更加简...

2019-06-30 14:32:59 289

原创 springboot读取配置文件

使用@ConfigurationProperties注解读取properties,yml配置文件一、添加依赖包,支持 @ConfigurationProperties 注解&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&...

2019-03-01 17:22:27 97

原创 Idea设置自定义模板

在我们平时的工作中,一些繁琐的编程语句,占用了我们大量的时间,不能够专注于业务。为了方便快捷的开发,使用idea我们可以把自己工作中常用的语句定义为模板,快速生产,提高工作效率。1.打开Settings -&gt; Editor -&gt; Live tamplates,可以看到有很多对应开发语言的模板2.选择创建模板,或模板组3.新建一个模板组,也可以在...

2019-03-01 11:43:19 862

原创 intellij idea中spring boot properties文件不能自动提示问题解决

1.如图所示,Spring配置文件应该带有是树叶标识,但此处显示的为普通的properties文件2.选择Open Module Settings3.选择加号4.选择需要添加为Spring配置的文件5.配置完成...

2019-03-01 11:15:55 15190 14

原创 百万级别数据查询,SQL查询优化

针对近期项目中遇到的大数据查询进行总结。这篇文章花费了我大量的时间,通过网上查找资料和自己的总结归纳,如有不当,请大家指正:1.在大数据查询中要避免like模糊查询,在进行模糊查询时会进行多次全表遍历,影响查询效率,速度。一定要使用模糊查询,请使用前置模糊查询,即百分号后置2.避免or条件查询,如非空一般我们会用到(<>'' or <> null),可以使用is...

2019-02-23 15:27:07 2524

原创 CentOS7 为firewalld添加开放端口

一、firewalld简介firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的"zone"概念firewalld有图形界面和工具界面,图形界面请参照官方文档;我们以字符界面介绍firewalld的字符界面管理工具是firewall-cmdfirewalld默认配置文件有两个:/usr/lib/firewalld/ ...

2019-02-23 14:55:41 759

原创 Liunx定时任务

crontab文件格式: *           *        *        *        *           commandminute   hour    day   month   week      command分          时         天      月        星期       命令 crontab常用命令:crontab ...

2019-02-23 14:50:57 429

原创 Fabric1.4.0构建第一个网络

一、安装前准备Docker建议安装最新版本检查Docker版本docker version 建议安装最新Docker compose版本(高于1.14.0)检查Docker compose版本docker-compose --version Go版本(需要1.11.x)1.首先需要将GOPATH环境变量指向下载Fabric代码库的工作空间export G...

2019-02-23 14:47:14 950

原创 Docker-安装及操作容器

 一、Docker安装备份原来的yum源sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 设置阿里的yum源sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/C...

2019-02-23 09:49:55 176

原创 Docker镜像备份

在进行多机器部署时,镜像数量较多且容量需求大。一套基本的服务镜像可达10G左右,如果在多台服务器上部署,会花费很多时间。对于上述已经下载至本地的镜像,需要使用docker save命令来备份,并且通过scp命令来将这些镜像文件复制至其他服务器。 1.查看需要保存的镜像ID:docker images 2.保存镜像docker save [id] -o /home...

2019-02-23 09:36:17 3557 2

空空如也

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

TA关注的人

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