Java常用工具类集锦
NumberUtils工具类判断字符串是否是数字NumberUtils.isNumber(“5.96”);//结果是true NumberUtils.isNumber(“s5”);//结果是false NumberUtils.isNumber(“0000000000596”);//结果是true 判断字符串中是否全为数字NumberUtils.isDigits(“0000000000.596”);//false NumberUtils.isDigits(“0000000000596”);//true 字符串转换为整数NumberUtils.toInt(“5”); NumberUtils.toLong(“5”); NumberUtils.toByte(“3”); NumberUtils.toFloat(“3.2”); NumberUtils.toDouble(“4”); NumberUtils.toShort(“3”); 找出最大的一个NumberUtils.max(newint[...
hexo持续集成
申请注册coding,然后通过coding升级至腾讯云开发者平台 https://feedback.coding.net/topics/7257 新建仓库后开通持续集成功能将hexo的源代码提交至coding仓库,然后选择持续集成,进行配置,简单配置如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344pipeline { agent { label "node-8" } stages { stage("检出") { steps { sh 'ci-init' checkout( [$class: 'GitSCM', branches: [[name: ...
SpringCloudEureka源码详解
概述Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。 由于微服务概念的引入,使大型服务在一定程度上彻底的解耦,当服务集群足够庞大的时候,服务治理成为了微服务的痛点之一。 Eureka是Spring Could中服务发现的推荐组件,保证服务的高可用性,它有着丰富的API,使得Eureka作为服务发现与治理都比较方便。 架构与原理 Eureka Server:服务的注册中心,负责维护注册的服务列表。 Service Provider:服务提供方,作为一个Eureka Client,向Eureka Server做服务注册、续约和下线等操作,注册的主要数据包括服务名、机器ip、端口号、域名等等。 Service Consumer:服务消费方,作为一个Eureka Client,向Eureka Server获取Service Provider的注册信息,并通过远程调用与Service Provider进行通信 Eureka Server作为一个独立的部署单元,以REST API的形式为服务实例提供了注册、管理和查询等操作。同时,Eu...
mysql主从同步带来的影响及部分解决方案
前因场景1:线上的数据异步同步使用的是rabbitmq,当对数据库数据进行增删改时候会发送一条mq消息到同步服务,同时进行查库写入es。 场景2:线上redis数据读取mysql中数据写入,由于该数据为访问量巨大的数据,所以未设置过期时间,有增删改操作时,会读库重新写入redis。 场景3:线上数据库实时读取,当修改为某项后异步刷新列表,发现该数据未进行修改,重新刷新后才显示正确数据 排查过程以上问题,我们排查过程比较迅速,第一时间对比es,redis,mysql中数据,发现了数据不同步的情况,然后查看代码,发现未有对数据进行代码层改动,我们已知数据库为主从模式,由此主从延时故障找到。 解决方案方案1:发mq消息时,直接将整条数据发送并且写入。但是一旦数据量过大,会造成压力,并且有删改的情况出现时,我们一般不会去获取整条数据,还是得查询数据库后发送 方案2:redis设置有效期,过完有效期redis会重新加载数据入库,但是有效期内的数据是不正确的 方案3:增加主库数据库读,在写mq,写redis这些场景下直接读取主库,避免了碰到主从延时的问题,数据也能及时更新,但是此种方案有可能...
线上long型数据丢失精度问题
前因在dev和qa环境正常获取到用户的userId,dev和qa环境的userId长度都不长,通过userId查询数据,显示数据完全正常。 但是上线之后,很快有运营反馈使用userId查询不出结果,经过验证发现确实这样,开始排查问题 排查过程由于我们项目后端使用的是接口层与业务层隔离的架构,所以先在业务层加上日志,拿到日志之后和web层获取到的数据进行对比。对比结果发现该userId在较长时候确实出现了不一致的情况,但是业务层的数据和数据库中的数据完全一致,哪一步操作导致精度丢失了呢? 进一步排查,在接口层打输入输出日志,发现接口层的输入输出与业务层完全一致,在此种情形下,我们有点摸不着头脑,还以为是我们读错了库的原因。 验证数据库后发现,库没读错,数据完全和库一致,那只能是传输过程中出现问题了。 我们使用的是chrome浏览器,接口层数据是直接使用network扩展里面的preview,经过仔细排查发现,preview的数据和response里面的数据不一致,至此问题找到: 前端接受json数据时,精度丢失。 解决方案因为字段固定的缘故,我们不准备从后端进行更改,准备web层直...
Linux磁盘管理
简介Linux磁盘管理好坏直接关系到整个系统的性能问题。 Linux磁盘管理常用三个命令为df、du和fdisk。 df:列出文件系统的整体磁盘使用量du:检查磁盘空间使用量fdisk:用于磁盘分区 dfLinux磁盘管理好坏直接关系到整个系统的性能问题。 Linux磁盘管理常用三个命令为df、du和fdisk。 df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分区 df命令df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 语法: df [-ahikHTm] [目录或文件名]选项与参数: a :列出所有的文件系统,包括系统特有的 /proc 等文件系统; k :以 KBytes 的容量显示各文件系统; m :以 MBytes 的容量显示各文件系统; h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; H :以 M=1000K 取代 M=1024K 的进位方式; T :显示文件系统类型, 连同该 parti...
stream-常用数组操作
对User集合进行升序,倒序操作对listResult进行排序,根据伴随度进行降序,根据集合中对象User中的伴随度进行倒序排列…reversed(),默认正序,reversed反转后即倒序; 123List<User> collect = listResult.stream() .sorted(Comparator.comparing(User::getUserId()).reversed()) .collect(Collectors.toList()); 过滤User集合中符合条件的结果过滤出User中UserId大于1的结果,firstA中存放的都是的大于1的 123List<User> firstA = listResult.stream() .filter(User -> user.getUserId() >= 1) .collect(Collectors.toList()); 将User集合按照UserId从小到大重新进行排序123List<U...
Docker常用命令
docker version 查看docker的版本号,包括客户端、服务端、依赖的Go等 docker info 查看系统(docker)层面信息,包括管理的images, containers数等 docker search <image> 在docker index中搜索image docker ps 查看运行正常进程 docker ps -a 查看所有存在过进程 docker rm -f xxx 删除images docker load < 镜像名称 导入镜像 docker pull +镜像名称 下载镜像 docker logs -f +查看容器Id 查看容器运行日志 docker save -o 导出文件名称 镜像名 导出镜像 docker tag <IMAGE ID> <REPOSITORY NAME> 复制并修改镜像名称 mvn clean package docker:build java 打包成镜像 docker run -d -p 1200:1200 -v /data:/data 镜像名称...
spring-boot集成druid数据库连接池
1.使用http://start.spring.io/ 新建web项目,选择spring-boot版本为1.5.13选择mysql,mybatis,web依赖,下载好生成的demo 2.导入idea,然后写导入druid依赖 12345<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.23</version></dependency> 2.设置druid 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104...
Linux安装Nginx
linux系统为Centos 64位 第一步:从 https://tengine.taobao.org/download.html 上下载相应的版本,或者 1wget https://nginx.org/download/nginx-1.5.9.tar.gz 第二步:解压 tar -zxvf nginx-1.5.9.tar.gz 第三步:安装必要的软件 1yum -y install pcre-devel openssl openssl-devel 第四步:设置一下配置信息 1./configure --prefix=/data/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module ,或者不执行此步,直接默认配置 第四步: make 编译 (make的过程是把各种语言写的源码文件,变成可执行文件和各种库文件) make install 安装 (make install是把这些编译出来的可执行文件和库文件复制到合适的...