avatar
文章
44
标签
67
分类
5

首页
时间轴
标签
分类
关于
Vioao's Blog
搜索
首页
时间轴
标签
分类
关于
项目重构感悟
发表于2018-03-16|Program|Thinking•Refactor•Project Management
重构决定 需要提前做好新旧系统的切换方案的规划 要高度重视对数据的重构,对数据的调整和兼容是重中之重 重构是为了解决实际的项目问题,而不只是作为程序员的一个代码洁癖。所以,需要对新系统有可以量化的指标(eg. 性能提升5个点、开发工作量减少30% 等) 技术选型时,不要盲目最求新技术,需要尽量使用成熟、简单的方案,选择成熟简单的方案在遇到问题时多能在网上找到对应的解决方案。文档相对也会更完善。 团队管理 重构过程中需要时刻紧跟,定期review代码,及时调整。可以采用Scrum的方式, 持续的 交付->试用->反馈->调整 树立编码规范、最好是能有一组对应的代码片段作为模板来参考,并通过技术手段做相应的限制,如checkstyke和版本管理工具的结合(为了代码的整洁和统一,这一点在团队中还挺重要的,毕竟团队中的人员各自风格不同[更别提其中还有些非常糟糕的风格]) 对代码的改动需要小范围逐步改动,并修改/增加对应的单元测试 团队成员的培也需要重视,团队成员的功底也是不一样的,在项目开展过程中一般就会体现出来。此时可以做相应的学习指导 项目管理的知识和了解 ...
分布式系统一致性问题处理思路
发表于2018-03-12|Reading|Thinking•Distributed
为啥出现一致性问题在传统单体架构中,数据状态的处理都在同一个服务和数据库中,而具有**ACID特性**的数据库支持强一致性,就是说数据库本身是不会出现不一致的状态的,比如我们常用的关系型数据库MySQL就是通过多版本控制协议(MVCC)的实现来保证了强一致性。 但是随着互联网的发展,用户增多&服务也越来越多越来越复杂,数据量和请求的并发量都上来了。为了满足这一变化,越来越多的系统从单体架构投入到服务化或者微服务架构。然而,微服务是把双刃剑,虽然能通过对服务的有效拆分来实现敏捷开发和自动化部署,并提高系统的水兵伸缩能力;但是微服务模式下,服务之间通过网络来通信(网络并不是可靠的),那么当网络异常时,就很容易引起各个系统之间的不一致。 一致性相关思想理论一致性类别 强一致 当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值。这种是对用户最友好的,就是用户上一次写什么,下一次就保证能读到什么。根据 CAP 理论,这种实现需要牺牲可用性。 弱一致性 系统并不保证续进程或者线程的访问都会返回最新的更新过的值。系统在数据写入成功之后,不承诺立即可以读到最新写入 ...
Jasperreports OOM问题处理
发表于2018-02-28|Program|Java•JasperReports•OOM
问题描述项目使用Jasperreports来转换导出PDF,不过在转换过程中有时会出现OOM的异常。将直接导致线上系统不可使用。主要导致OOM的问题有如下两种: jasper模板文件设计不合理导致Jasperreports进入死循环 需要转换的文件确实很大,超过了系统所支持的内存范围 此前就有遇到过上述情况导致系统不可用的情况,这明显影响了程序的健壮性。是需要处理的。此前对该的处理排查描述请查看之前的博文:线上java程序CPU占用过高问题排查 问题处理既然知道问题由于内存占用过多导致的,那么直接从上面的两个问题可能思考解决方案即可。 jasper模板文件设计不合理在设计模板时,如果勾选了”Print When Detail Overflows“选项时,那么很有可能就会导致OOM了。这个问题官方将其定位为模板设计不合理,并不打算解决。所以只能我们自己严格把关了。 针对该问题我考虑了两种解决方案: 利用SVN钩子函数,在提交jasper模板文件时校验设计文件是否有勾选”Print When Detail Overflows”属性。简要的设计如下: svnlook chan ...
微信公众平台SDK JAVA实现WeChat-SDK
发表于2018-01-21|Side Project|Java•WeChat
前言最近有做一些涉及到微信公众平台和第三方平台开发的工作。需要使用微信提供的接口。然而微信只提供了基于基本的HTTP接口,并没有对应各语言的SDK实现。所以如果自己开发的话需要封装一套SDK。不过,微信公众平台出来几年了,市面上早就有不少JAVA实现的微信SDK了。于是便收集了一些开源的JAVA实现的微信SDK,但是最后都不是特别合适。最终决定自己写一个。下面给出各开源SDK的实现对比和自己的写的进展。 微信公众号java sdk技术选型针对目前开源的公众号java sdk对比,之前已经有人对比过了。可以自行前去:微信公众号java sdk技术选型 针对上面几款开源的微信公众号SDK,针对我自己的需求,我自己也做了下简单的对比: - jfinal-weixin weixin-java-tools fastweixin weixin-popular 实现简单 √ x √ √ 更新快且全 √ √ √ √ 有对应的实体封装 x √ √ √ 依赖少 x x √ √ 方便支持多公众号 √ x x √ 代码结构&可拓展性 √ √ √ x 可以看出是没有一 ...
使用checkstyle校验代码
发表于2017-12-03|Program|CheckStyle•Maven
引入背景目前手上接管了一个旧项目,在调整的过程中发现其编码规范非常的多样化。其实就是没有规范了。代码中的命名、注释、换行等风格都有多种,差不多每个曾经修改过代码的程序员都留来过自己的风格。代码风格质量良莠不齐,这导致新员工在阅读代码时需要花更多的时间,也更加痛苦。所以考虑使用checkstyle来校验统一代码风格。 起初考虑是直接在svn上做一个pre-commit的hook的。不过沟通无果,svn服务的权限无法掌控在自己手里。于是便考虑使用maven插件Apache Maven Checkstyle Plugin,在本地编译的时候去校验。不过由于是旧项目,在使用插件时不希望校验以前的老旧代码,不然这将是一个灾难(除非你希望改到天荒地老)。那么,这边就希望只校验新增加和修改的文件。后面给出处理方式。 Checkstyle介绍Checkstyle 是一个帮助程序员使用统一编码风格来编写java代码的开发工具。它能够替代人工自动校验代码,这是希望使用统一编码风格的项目的理想选择。Checkstyle是高可配的,几乎支持任何的编码风格,人们可以使用自己的编码标准。 可以参考下Sun和Go ...
SpringBoot 整合Mybatis/Druid/Quartz
发表于2017-11-12|Program|SpringBoot•Quartz•Druid•H2•Mybatis
由于项目中定时任务逐渐增多,对系统的压力也慢慢增加。故打算将系统中的定时任务抽离出来。初步决定使用SpringBoot+mybatis+quartz的整合方式进行快速开发。 整个整合会包含如下任务: 整合Mybatis(包括通用Mapper和分页插件) 整合Quartz实现动态定时任务管理 整合Spring AOP编程(定时任务中的AOP也会生效) 整合Druid Spring单元测试集成H2数据库 整合MyBatis添加依赖12345678910111213<!--mybatis--><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot-starter.version}</version></dependency& ...
mysql 5.7 group by 1055
发表于2017-10-21|Program|MySQL
最近遇到的一个问题,有个项目使用的mysql升级到5.7后,发现项目中有些sql语句执行会报错。 报错类似如下: 12[SQL]select accountname,accounttype from weixin_account group by accountname;[Err] 1055 - 'wcmgt.weixin_account.accounttype' isn't in GROUP BY 于是便查阅资料了。随后发现,原来mysql5.7.5后,ONLY_FULL_GROUP_BY 默认为真,那么此时select中的字段必须出现在group by中。官方的说明文档如下: SQL Mode Notes Incompatible Change: These SQL mode changes were made: Strict SQL mode for transactional storage engines (STRICT_TRANS_TABLES) is now enabled by default. Implementation of ...
线上程序CPU过高问题排查
发表于2017-09-24|Program|Java•CPU•Production
简要工作中负责的有一个项目是使用iReport+JasperReport实现的一个打印系统。最近这个线上程序经常无响应,重启后恢复正常,但是时不时还是会出现类似的问题。 最后发现是JasperReport的一个问题。有个JasperReport的转换任务内存占用特别高,当新对象需要分配内存时就会内存不够了,于是GC线程就不断GC,占用CPU。 导致系统CPU占用超高。 下面说下问题排查的一个思路步骤 基本环境 tomcat 7 JDK 7 Linux 问题定位查看后台异常通过查看系统的后台日志,发现各个请求都正常,没有异常抛出。于是考虑系统状况 查看系统状况top 命令查看CPU、内存等使用情况123456789101112131415161718[root@DEV-L002323 ~]# toptop - 14:52:54 up 514 days, 7:00, 8 users, load average: 2.85, 1.35, 1.62Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie ...
docker初识:运行mysql实例
发表于2017-07-26|Program|Docker•MySQL
环境 CentOS 7.3 64bit 安装docker 移除旧版本Docker yum remove docker docker-common docker-selinux docker-engine 设置Docker仓库 2.1 安装所需要的包 yum install -y yum-utils device-mapper-persistent-data lvm2 2.2 设置添加稳定版的Docker仓库 yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo 安装 DOCKER CE 3.1 更新yum yum makecache fast 3.2 安装最新版的docker ce yum -y install docker-ce 3.3 也可以安装指定版本的docker ce 列举可用的docker ce yum list docker-ce.x86_64 –showduplicates | sort -r 安装指定版本 yum ...
CentOS 7.3 搭建OpenCart
发表于2017-07-19|Side Project|OpenCart•CentOS•PHP
环境 Centos 7.3 64-bit OpenCart 2.3.0.2 安装LAMP环境和OpenCart How To Install OpenCart On CentOS 7 Linux 配置支持SEO ,在OpenCart项目部署根目录下创建.htaccess文件,内容如下(需要在OpenCart后台打开SEO支持) 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.# 2. In your opencart directory rename htaccess.txt to .htaccess.# For any support issues please visit: http://www.opencart.comOptions +Follow ...
12345
avatar
Vioao
记录JAVA相关工作和阅读生活点滴
文章
44
标签
67
分类
5
Follow Me
最新文章
How to write a good unit test2023-11-22
面试指南之消息中间件:RocketMQ2021-06-04
程序员的副业: 微信小程序2021-06-04
延时任务一锅端2020-09-14
Redis 问答 PK2020-07-23
分类
  • Interview5
  • Life1
  • Program30
  • Reading2
  • Side Project6
标签
CI Gradle Docker Spider CheckStyle MySQL CPU SpringBoot Flink Java Threads CD H2 GitHub Unit Test JAVA PHP Mybatis Drone Big Data Maven WeChat Next OOM JasperReports Wechat Project Management Quartz Distributed CAS Node.js B2C Stock OpenCart Cache Http Reactor SSR Struts Redis
归档
  • 十一月 20231
  • 六月 20212
  • 九月 20201
  • 七月 20205
  • 十二月 20191
  • 十一月 20191
  • 八月 20192
  • 七月 20191
网站资讯
文章数目 :
44
本站访客数 :
本站总访问量 :
最后更新时间 :
©2016 - 2024 By Vioao
粤ICP备2024191092号
搜索
数据库加载中