自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (3)
  • 收藏
  • 关注

原创 通用仪表盘Dashboard的简单实践

前言在这个大数据的时代里,数据为王,系统能实时展示各种数据显得尤为重要,所以仪表盘便成为每个系统的标配。 背景我们都知道大部分前端框架都提供了各种丰富的仪表盘,但有几点不能满足我们需求不容易随意拖拽不方便动态添加无法兼容多种前端框架的仪表盘不容易统一前端框架局限性多所以,我们这次采用iframe配合div的方式实现通用仪表盘框架。选型我们先找个可拖...

2018-07-31 10:37:37 3716

原创 面向sql编程的探索之路

前言在我们JavaWeb开发过程中,或多或少会有些只是几行sql语句的service方法或是http请求,总是要反复写Controller层、service层、dao层。于是,我做了一个大胆的尝试,对于此类方法,封装出一个公共方法,不需要写java代码,写几行sql语句就能出各种接口及方法。表设计 id description SQL creator cre...

2018-07-11 11:34:16 1250

原创 自动化测试selenium在小公司的成功实践

本文可能是目前最完整的一篇selenium(java版)实践文章,不是之一。如果你是java开发人员,本文将帮助你快速搭建整套selenium自动化测试框架,你可以帮助公司升级为自动化测试架构;如果你是测试人员,那你得按照本文多实践一下,遇到不懂的咨询下公司的java开发,同样你也可以完成自动化测试架构升级。当然啦,如果目前公司已经是自动化测试了,那本文就当是再次梳理下相关知识吧。...

2018-06-19 15:05:56 993

原创 某小公司项目环境部署演变之路

前言在环境部署问题上,我们经历了3个阶段:传统安装、镜像恢复、自动发现注册+指令下达。目前镜像恢复后,启动虚拟机,一旦能ping通我们公司地址,就会自动注册这台机器(即使没有其他外网访问权限、也未开放任何对外端口),我们也就有了这台机器的管理权限,可批量群控下发指令。(第二阶段、第三阶段均为我自主设计。)背景我们是一家产品+定制化需求公司,项目做好之后会直接部署到客户服务器上。...

2018-04-28 11:32:44 722

原创 某小公司自动化智能监控平台的实践

前言首先介绍下背景:我们公司的产品,会直接部署在甲方,因为甲方比较多,且他们包含个性化需求较多,所以,每个甲方可以理解为我们产品的一条git分支。 由于甲方的机器环境、网络环境各不相同,时常出现一些运行时的问题,于是,我设计了这套简易的智能监控系统,用来实时监测各个甲方接口情况。适用范围该套方案衍生的适用范围如下:docker下多容器运行项目,且暂不具备接口健康检测,该套方

2018-01-12 11:38:18 1758

原创 某小公司RESTful、共用接口、前后端分离、接口约定的实践

上次那篇我是如何重构整个研发项目,促进自动化运维DevOps的落地?中提到restful接口重构具体详细内容没有写出来,今天补上。前言随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很难快速应对各种需求,更难以提高效率。于是,我们不得不重新制定对接规范、开发逻辑以便快速上线项目。我们的目标尽可能的缩小沟通的成本,开最少的会,确定大部分的事。花最少的时

2017-10-22 20:48:47 13937 3

原创 我是如何重构整个研发项目,促进自动化运维DevOps的落地?

为了这篇文章,我前后写了将近十篇文章铺垫,才将这篇整体重构思想引出。背景先说下背景,我们是一家小公司,虽然打着做产品的旗帜,但是每个客户都有大量的个性化功能,这里指各个客户的java端、Android端、ios端(大部分功能代码是相同的,个性化功能代码不同)。我之前是做Android的,实践证明,特殊情况下,只有我们Android组可以随意切换到任意一家客户,任意一版本的代码。并且修复一处公共bu

2017-10-14 20:31:04 4802 1

原创 那些不够优雅的java代码片段(一)

我觉得严谨对于每个程序员来说都至关重要,而写出优雅而又高效的代码是我们毕生所求。前言可能是处女座的原因,我对代码要求很高,我组内几位开发的代码提交前我都会review一次,两年里,我pass掉了很多不满意的代码片段,有实习生写的,也有多年开发经验的同事写的。今天,突然心血来潮和大家分享一些代码片段,希望能给大家带来一些启发和灵感。主题受限于我们定式思维的影响,我们写出的代码,很多情况没有别人提醒,

2017-10-14 14:11:45 3535 1

原创 自动化运维工具ansible的实践

前言当服务器越来越多,统一管理起来显得尤为重要。那么选择一款管理工具必不可少,既要能满足管理新部署的机器,还要兼容之前部署的机器,无客户端版的ansible管理工具可能成为优先考虑的工具之一。认识ansibleansible 是一款自动化运维工具,能够解决我们在it工作中,一遍又一遍执行相同任务。利用它,我们可以只解决一次问题,然后自动化运行我们的解决方案。 目前,数以千计的公司正在使用简单但功能

2017-10-12 13:31:40 2045

原创 你确定你能记住那么多的git命令吗?快试试Sourcetree吧

前言 作为使用Sourcetree大于3年的我,已熟知git的每一个功能,并灵活运用利用git解决开发中各式各样的场景问题,我也曾多次在公司内部不同小组间分享Sourcetree使用经验,接下来给大家分享下这款工具吧。本文可能是目前网上最全的一篇可视化使用git工具Sourcetree文章。可能对于很多开发来说,只要搞懂git的push、pull、解决一些简单的冲突命令就好了,事实上git的功

2017-09-25 19:12:10 1309

原创 一个简单的例子带你理解Hashmap

前言我知道大家都很熟悉hashmap,并且有事没事都会new一个,但是hashmap的一些特性大家都是看了忘,忘了再记,今天这个例子可以帮助大家很好的记住。场景用户提交一张试卷答案到服务端,post报文可精简为[{"question_id":"100001","answer":"A"},{"question_id":"100002","answer":"A"},{"question_id":"100

2017-09-18 00:51:13 6175

原创 [Day 2]上海CNUTCon全球运维技术大会2017实录

如果你觉得这次峰会和开发人员一点关系没有,那你就大错特错了。因为DevOps就是以开发为主导的自动化运维,而DevOps已经在BAT及各大企业成功落地,这意味我们开发需要接管一些运维工作,来使得项目部署进度加快。前言不得不说,这些很多企业很大一部分都是为了DevOps落地而来,我们都收获满满。直到我参加这次峰会,我才发现自己对自动化运维的天赋。我从未想过,把自己对硬件研究+java开发经验有机结合

2017-09-12 13:32:48 996

原创 [Day 1]上海CNUTCon全球运维技术大会2017实录

前言CNUTCon连续2年都是以docker容器为主的技术峰会,今年改名全球运维技术大会。你可能会想,我可能去了一个假的CNUTCon,其实,不是。CNUTCon一直专注于运维,而前两年比较docker比较火,所以主推docker;而这两年人工智能比较火,便主推AIOps。 本文融合了一些本人思想,如有理解错误,请指正,谢谢。开篇首先,是InfoQ主编徐川先生指出本次主题为《智能时代的新运维》,运

2017-09-12 13:32:17 2049

原创 某小型公司持续集成工具jenkins实践(JAVA WEB、Android、IOS、Html)

前言本文可能是网上最全的一篇全端jenkins部署解决方案介绍的文章,一直以来,领导都想解决代码提交和打包问题,尤其是小公司,打包流程混乱,造成线上版本和代码库git或svn中代码不一致问题。加入jenkins阵营,解决众多发包难题,显得刻不容缓。研究过程刚开始,我一直在docker下安装jenkins,按时长租用阿里的主机,用阿里容器服务做实验,反复创建docker容器,建立多个jenkins节点

2017-08-25 22:25:41 1845

原创 利用nexus构建maven、docker、npm、gradle私服仓库

前言在小型公司发展历程中,开发对仓库的依赖不断提高,java web需要maven仓库、android需要gradle仓库、运维需要docker仓库…… 是时候搞一套仓库私服了。初识nexusnexus是目前市场上,支持仓库种类最多,用户群体最大的一个仓库平台,上述所有的仓库,它均支持。 安装nexus这里省略安装步骤,建议使用3.x及以上版本的nexus配置maven私服这里仓库主要指2种,一种

2017-08-21 11:42:43 3387

原创 巧用Superset大数据分析平台搞定各类图表

前言其实大数据图表展示的这类平台有很多,Superset是其中之一,最近有个需求对各类图表展示的开发较多,索性将工作量交给这个平台。介绍Superset的中文翻译是快船,而Superset其实是一个自助式数据分析工具,它的主要目标是简化我们的数据探索分析操作,它的强大之处在于整个过程一气呵成,几乎不用片刻的等待。 部署docker方式(推荐)docker pull amancevice/carav

2017-07-13 13:23:21 62899 12

原创 Docker的web端管理平台对比(DockerUI 、Shipyard、Portainer、Daocloud)

前言最近,为了方便对命令行过敏的测试或开发人员,我决定部署一个可视化的管理平台来管理docker,在我重装十几次系统(当然,只是虚拟机镜像克隆),对比之后,终于选择了一款心仪的管理平台。部署docker环境安装/升级你的Docker环境,建议使用过阿里云的镜像仓库下载:mirrors.aliyun.com/help/docker-engine 或执行以下命令:curl -sSL http://ac

2017-07-12 11:52:23 31016 4

原创 IOS利用Xcode同时编译多包(测试环境地址、生产环境地址)

前言小公司,项目有2套环境:一个测试环境,一个生产环境。测试会找客户端要测试环境包或生产环境包,我觉得嫌烦,于是,同时编译。 Android版的见https://juejin.im/post/59302a0fa22b9d0058b785bc分析我们的项目中,生产环境和测试环境仅为.h文件中的两个地址不同,其他代码都是相同的。具体实现 1. 在工程的targets里右键选择 Duplicate复制

2017-07-12 11:51:26 1299

原创 Android利用gradle同时编译多包(测试环境地址、生产环境地址)

前言小公司,项目有2套环境:一个测试环境,一个生产环境。测试会找客户端要测试环境包或生产环境包,我觉得嫌烦,于是,同时编译。分析首先,我们的项目中,生产环境和测试环境仅为string.xml中的两个地址不通,其他代码都是相同的。 这个需求和多渠道包打包很像,几乎完全参照。具体代码先在build.gradle(Module)中加入 home、real,两句话android { //……省

2017-07-10 17:11:42 1403

原创 java web项目war包自动升级部署方案

前言之前,我们公司部署以及升级都是由运维去管理的,联想到很多开源平台都支持自动升级,索性我也做个自动升级war的功能。 这里没有用docker镜像发包,灰度发包等,只适用于单个tomcat的部署环境,支持docker单个tomcat容器。分析先简单分析下war包自动升级流程: 1. 检查是否需要更新。 2. 下载更新的war包到服务器临时目录。(如后台上传则无需1,2步骤) 3. 停止tom

2017-07-10 17:11:10 12608 5

原创 动手撸一个微信小程序学生课程表页面

分解仔细看完课程表页面,我们可以把页面分解: 1. 顶部一栏:周一到周日。 2. 左侧一栏:第1-12节课。 3. 中间部分灰色虚线和午休的红线。 4. 遍历具体课程,并绘制。开始写代码顶部:使用wx的for循环<view class="top"> <view wx:for="{{['一','二','三','四','五','六','日']}}" class="top-text">周{{i

2017-06-03 13:45:12 20886 3

原创 二次封装的缓存框架wCache(支持缓存时间、默认值)--微信小程序

一、前言开发客户端时常会用到一些非永久缓存的需求,而微信缓存只能按key永久缓存;其次,当读取缓存失败时,有时需要给个默认值,所以得二次判断下,今天想了一下何不封装一个缓存框架。二、支持方法put(k, v, t)k为key,v为具体内容(支持字符串、json、数组、boolean等等),t为可选参数表示有效时间(单位:秒)如存储k为123过期时间1秒,则调用put(‘k’, ‘123’, 1)方

2017-05-16 21:14:59 3219

原创 对今日头条android端的一次简单分析(上)

前言闲来无事,正看着百度新闻,突然灵感一闪,何不研究下一款新闻app,那就从今日头条开始吧。第一步1.1、轮廓分析这里使用压缩软件打开,主要看lib目录及assets目录。 1.2、lib目录lib目录主要是放一些库或jar包,打开后发现,只有一个armeabi目录,我们知道x86/x86_64/armeabi-v7a/arm64-v8a设备都支持armeabi架构的.so文件,所以一个目录也是可

2017-05-11 22:14:16 6716

原创 利用递归算法、堆栈打造一个android可擦除思维导图

前言说来也奇怪,高中学代码的时候,整天在刷一些noip的题目,钻研各种算法,什么递归、分治、动态规划。而真正工作后,发现很少用不到,直到这个页面才让我用到算法。其实这个页面,是我前年写的,但是一直偷懒,不想整理发布,去年的时候,在csdn上发布过一些,但是没怎么认真写,今天乘着周末认真给大家讲讲,希望能勾起大家对算法的回忆。 项目需求是一个思维导图、每个节点的个数以及数据由服务端返回,这就需要每一

2017-05-08 00:33:00 534

原创 微信小程序登录页动画-云层漂浮

前言2017年前端火了,微信小程序、weex、reactnative,就连支付宝也搞起了小程序,总感觉这是原生要毁灭的节奏啊,我也乘热上车万一波。上效果图(GI动态图) 当我看到这张背景图的时候,强迫症立马来了,这云朵为什么不动,于是开始了一波折腾。知识点认识animationanimation 属性是一个简写属性,用于设置六个动画属性: 值 描述 animation-name 规定需要

2017-05-08 00:30:25 2146 1

原创 微信小程序多页面传参通信的探索与实践

一、前言最近微信小程序越来越火,不少公司都在将原生代码转为微信小程序代码。在开发过程中,由于微信小程序wx.navigateBack方法并不支持返回传参,导致一些页面,尤其是从列表页面跳入详情页,用户在详情页改变了状态,返回后无论是否刷新页面,体验都不是很好。在android中,我们一般采用setresult方法来返回参数,或者直接使用rxjava框架或者eventbus框架来解决此类问题。业务分析

2017-05-08 00:23:56 994 1

原创 Genymotion中INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

我在网上搜了下,有个帖子说下载个文件就好了,结果我下了没用,后来在官方论坛里发现其实加一句话就好了。 application installation failed这个错误。 在app的build.gradle中 android{}内加入 splits { abi { enable true reset()

2017-05-07 14:55:18 304

原创 微信小程序swiper滑动页面实践-类似于安卓ViewPager

一言不合,上效果 效果二 效果三 效果四

2017-05-02 10:20:00 16354 8

原创 android studio adb无法启动的一个异常

报错 adb.exe,start-server’ failed – run manually if necessary 1:55:13 error: could not install smartsocket listener 百度查询后得知和genymotion冲突,打开genymotion的设置->ADB里面,设置本地的sdk目录就可以了

2017-01-01 12:06:02 550

原创 关于android中listview-adapter的viewholder及settag的探究

引言今天无意中翻看项目代码,发现有一个list-adapter没有使用viewholder也没有使用settag、gettag,心里很紧张,这个页面使用频率很高,如果oom可不好。奇怪,为什么没有测试和我反映呢?分析问题项目里使用了网络上的一个ViewFindUtils类,里面有一个hold方法和一个find方法,我的listview中只调了find方法,find方法里只是一个findviewbyi

2016-12-30 17:56:54 1410

原创 和android热修复AndFix技术亲密接触

每次回家都偷懒,不想整理一下,今天周末,强迫自己整理下,内容一定很全。前言随着app版本升级迭代,难免有些bug会出现,用户升级新版的代价较高,如果能给app打热补丁,热更新掉app的bug,岂不更好。Andfixandfix是阿里的一个热修复框架,更新至今,已经相对完善了,可以满足我们日常需求。它有很多优点,比如: 1.热修复免重启app 2.更新包小 3.支持360加固(很多blog上说不

2016-11-19 15:40:03 1512 11

原创 如何运行github上react native项目

写在前面之前就发现百度上,关于下载github上react native项目(下文称RN)运行的方法不全,今天抽空整理下,给大家一点灵感。下载RN项目以react-native-nba-app作为事例https://github.com/wwayne/react-native-nba-app 克隆项目到本地 运行命令$git clone https://github.com/wwayne/rea

2016-10-30 03:03:54 14294 1

原创 android studio 无线wifi调试手机debug免数据线

背景最近公司数据线紧缺,我的usb线被拔来拔去,今天居然罢工了,懒得去申请,突然想到以前看过无线debug调试,于是来研究一番。android studio直接下载插件adb wifi安装后重启(先插数据线)Tools → android → ADB WIFI → ADB USB to WIFI当屏幕显示“adb connect xxx.xxx.xxx.xxx:5555””,然后拔掉数据线,直接点运

2016-09-09 15:06:04 2842

原创 正则表达式出现的一个错误java.lang.IllegalStateException: No successful match so far

背景:今天在写一个正则的时候,非常奇怪,Matcher的groupcount=2,但是当我去获取group(1)的时候,提示java.lang.IllegalStateException: No successful match so far。然后我写了个java代码片段测试,果然也是报错,排除了是android的问题。我猜是转义没处理好,我的正则里有“[图片]”这个标签,[符号我已经转义为\[,但

2016-09-07 14:02:17 7238

原创 android中webservice请求的异步回调封装(一)

背景其实从我本人来讲,我是抵制这个东西的webservice+ksoap请求效率低,不稳定,各种缺点。但是呢,公司还有一些老的项目在维护,为节约点时间,封装了一个简单的异步回调。第一个版本没有用单例和建造者模式,随便写了一下,有时间再优化。先看效果吧WebserviceUtil w=new WebserviceUtil();//实例化webservice+ksoap工具类w.setMethodNa

2016-09-02 15:24:33 1200 1

原创 Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.

android studio adb出问题解决方法Tools -> Adnroid -> Enable ADB Integration

2016-08-08 16:23:41 629

原创 Android Studio编译占cpu99%、100%、编译超慢、卡断问题分析

有朋友问我android studio编译为什么那么慢,其实看看编译日志就能发现问题了。先看编译日志日志内容如下:To run dex in process, the Gradle daemon needs a larger heap. It currently has approximately 910 MB. For faster builds, increase the maximum h

2016-08-05 09:48:52 6390

原创 Android Studio app安装后首次启动白屏很久的bug之坑

起源:最近发现一个项目安装包只有5M,但是每次安装后都会冷白屏5-10秒,我很郁闷,到底什么什么鬼导致的呢?先介绍下版本:android studio 2.12,gradele 2.1.2dependencies { classpath 'com.android.tools.build:gradle:2.1.2'}难道是启动页加载问题?立马检查启动页,去掉所有页面处理逻辑,首次启动白屏很

2016-08-01 12:46:49 8074 4

原创 android仿超级课程表页面自定义view的实现(方法一)

写在前面:最近想对一个课表界面进行重构和增加功能,第一种方法是用自定义view做的,虽然最终放弃了这种方法,转向方法二,但是方法一一些思路还是值得梳理下。效果图如下:自定义view如下:public class MURP_School_Schedule_Timetable_View extends View implements OnTouchListener, OnGestureListe

2016-08-01 12:04:45 1521

原创 Mac下android studio安装genymotion所遇到的坑

注册问题:genymotion下载需要注册,因为在后面下载各机型镜像时需要登录。第一个坑就出现了:国内无法打开官网的注册界面,所以需要科学上网。而且还需要验证邮件。http://www.genymotion.net/安装问题:genymotion安装完成后,还需要自己下载virtualbox安装,最后在android studio 下载genymotion插件。登录问题:Invalid reply

2016-07-03 23:36:19 8179 1

360极速浏览器postman插件(360浏览器、谷歌浏览器)

简单设置即可让360极速浏览器支持postman功能,方便,快捷。

2017-10-21

PagerBottomTabStrip-eclipse版仿qq数字圆点底部菜单栏

今天在github上看到个demo非常好,但是是android studio版的,研究了下不错,改为eclipse版,待用。http://blog.csdn.net/qq273681448/article/details/50541615

2016-01-19

php各种图形的验证码

各种验证码 图形 漂亮 美丽大方,方谷歌 验证码

2014-03-17

空空如也

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

TA关注的人

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