随笔分类 -  java

JAVA 转型
摘要:jenkins 作为一个自动化的集成工具,已经是必不可少的了。它里面提供各种插件,以及完备的基础流程设施,为大家的自动化集成之路提供了很多的方便。所以,我们有必要完整的实践一回。以切身体会到它的好处! 一、 操作步骤说明陈列 1. 下载jenkins包,并安装;(两种方案,基于物理机和基于docke 阅读全文
posted @ 2019-03-20 22:12 阿牛20 阅读(3468) 评论(0) 推荐(0) 编辑
摘要:随着线上环境的复杂多变,以及业务需求动荡,我们有足够的理由需要一个配置中心来处理配置的变更问题! 但对于项目初期,往往只需要能够做到数据支持动态配置,就能够满足需求了。 本文给出一个配置组件的实现方案,希望对有这方面需求的同学有点参考! (本实例虽然只是从数据库取值,但是其实稍微做下扩展,就可以是一 阅读全文
posted @ 2019-03-02 10:21 阿牛20 阅读(1065) 评论(0) 推荐(2) 编辑
摘要:springmvc 的请求流程,相信大家已经很熟悉了,不熟悉的同学可以参考下资料! 有了整体流程的概念,是否对其中的实现细节就很清楚呢?我觉得不一定,比如:单是参数解析这块,就是个大学问呢? 首先,我们从最靠近请求末端的地方说起!此时,handler已经找到,即将进行处理! 这是在 RequestM 阅读全文
posted @ 2019-02-18 17:46 阿牛20 阅读(4241) 评论(0) 推荐(0) 编辑
摘要:由于某几个业务表数据量太大,数据由业务写,数据部门读。 写压力不大,读却很容易导致长时间等待问题(读由单独系统进行读),导致连接被占用,从而容易并发稍稍增长导致全库卡死! 于是,就拆库呗。 业务系统拆分就不要做了(微服务化),没那工夫。 直接原系统拆两个数据源出来,对某几个高压力表的写就单独用这个数 阅读全文
posted @ 2019-02-14 09:59 阿牛20 阅读(3476) 评论(5) 推荐(1) 编辑
摘要:gc是java区别于其他好几门语言(c/c++)的一个代表功能(当然也有很多可以自动管理内存的语言,如所有的脚本语言,你根本不知道内存管理这回事)! 当然,之所以要把c/c++和java相比,是因为java出现的初衷即是对标c++的缺点的。不管怎么样,gc让程序员gg们不用痛苦地管理内存,这是好事! 阅读全文
posted @ 2019-02-11 19:30 阿牛20 阅读(1006) 评论(0) 推荐(0) 编辑
摘要:一般作为服务端的应用,必须要有相应的日志,否则问题怎么排查呢? 而日志怎么打印,也是一个技术活。不然java中也不会存在N多厂商争相提供日志框架了! 而日志滚动则往往也是刚需,毕竟没人能保证日志的量及可阅读性。 1. 日志滚动实现思路 日志滚动实现主要有两个大方向: 1. 让应用服务自行打印,打印到 阅读全文
posted @ 2019-02-01 14:44 阿牛20 阅读(2966) 评论(0) 推荐(2) 编辑
摘要:都说springboot是新形势的主流框架工具,然而我的工作中并没有真正用到springboot; 都说springboot里面并没有什么新技术,不过是组合了现有的组件而已,但是自己却说不出来; 都说springboot让开发更简单,然而对于刚转换过来使用的时候总会发现各种不适应; 网上查过许多的教 阅读全文
posted @ 2019-01-19 22:01 阿牛20 阅读(1447) 评论(0) 推荐(1) 编辑
摘要:IP防刷,也就是在短时间内有大量相同ip的请求,可能是恶意的,也可能是超出业务范围的。总之,我们需要杜绝短时间内大量请求的问题,怎么处理? 其实这个问题,真的是太常见和太简单了,但是真正来做的时候,可能就不一定很简单了哦。 我这里给一个解决方案,以供参考! 主要思路或者需要考虑的问题为: 1. 因为 阅读全文
posted @ 2019-01-11 18:01 阿牛20 阅读(1994) 评论(0) 推荐(0) 编辑
摘要:微信公众号现在影响力有目共睹,所以接入其功能也是很正常的。 现在的应用中,有很多是基于spring的框架来做的。针对自行开发的系统,我们可以通过任意的自定义 url 来进行业务功能的映射。然而大家知道,微信的回调地址永远只有一个,但是其内部的内容则是多样的。针对不同的内容,咱们做出的响应自然也是不一 阅读全文
posted @ 2019-01-06 15:01 阿牛20 阅读(1466) 评论(0) 推荐(0) 编辑
摘要:BTrace是调试神器,可以通过自己编写的脚本,获取应用的一切调用信息。而不需要重启应用! Btrace 项目源码信息(你行你上~) 项目地址:http://github.com/btraceio/btrace 但是应用下载地址是: https://github.com/btraceio/btrac 阅读全文
posted @ 2018-12-26 17:32 阿牛20 阅读(2093) 评论(0) 推荐(0) 编辑
摘要:老生常谈,循环依赖!顾名思义嘛,就是你依赖我,我依赖你,然后就造成了循环依赖了!由于A中注入B,B中注入A导致的吗? 看起来没毛病,然而,却没有说清楚问题!甚至会让你觉得你是不清楚spring的循环依赖的! 那么,spring的循环依赖到底是啥玩意? 来看个循环依赖注入失败的例子: bean1: u 阅读全文
posted @ 2018-12-23 11:21 阿牛20 阅读(6544) 评论(0) 推荐(0) 编辑
摘要:反射是java的一个特性,这一特性也使得它给了广大的第三方框架和开发过者很大的想像空间。 通过反射,java可以动态的加载未知的外部配置对象,临时生成字节码进行加载使用,从而使代码更灵活!可以极大地提高应用的扩展性! 但是,除了停留在使用其华丽功能,我们还可以去看看其实现! 主要看两个方法的使用: 阅读全文
posted @ 2018-12-15 22:16 阿牛20 阅读(37476) 评论(1) 推荐(4) 编辑
摘要:Executors是一个线程池的工厂类,提供各种有用的线程池的创建,使用得当,将会使我们并发编程变得简单!今天就来聊聊这个工厂类的艺术吧! Executors只是Executor框架的主要成员组件之一,为java的异步任务调度执行提供了重要的入口! 在说Executors之前,还需要说一下另一个Ex 阅读全文
posted @ 2018-12-09 19:43 阿牛20 阅读(806) 评论(0) 推荐(0) 编辑
摘要:懒加载是一种加载方式,加载单例对象一般有两种方式,一是在启动时就立即创建好,另一种则是在需要用到的时候再去加载即懒加载。懒加载一般会针对单例场景,且一般是针对在加载消耗较大费时,且不一定会用到的场景。 好了,相信啥意思大家都明白!那么具体如何实现呢?其实挺有意思的! 方案1. 直接用懒加载实例进行判 阅读全文
posted @ 2018-12-09 11:21 阿牛20 阅读(1149) 评论(0) 推荐(0) 编辑
摘要:项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按照原来的jdbc的使用方式,每次操作完成之后都要将连接关闭,但是实际使用中我们并没有这么干。 更让人疑惑的点是,spring中默认使用单例形式来加载bean,而往往我们也不会改变这种默认, 阅读全文
posted @ 2018-12-05 19:03 阿牛20 阅读(9167) 评论(5) 推荐(3) 编辑
摘要:1. 锁介绍 java中锁是个很重要的概念,当然这里的前提是你会涉及并发编程。 除了语言提供的锁关键字 synchronized和volatile之外,jdk还有其他多种实用的锁。 不过这些锁大多都是基于AQS队列同步器。ReadWriteLock 读写锁就是其中一个。 读写锁的含义是,将读锁与写锁 阅读全文
posted @ 2018-12-03 16:38 阿牛20 阅读(1786) 评论(0) 推荐(0) 编辑
摘要:微信公众号作为强大的自媒体工具,对接一下是很正常的了。不过这不是本文的方向,本文的方向公众号接入的排序问题。 最近接了一个重构的小项目,需要将原有的php的公众号后台系统,转换为java系统。当然,也很简单的了。 不过,在接入的时候,遇到有一个有趣的问题,可以分享下。 大家知道,要将微信在接到用户的 阅读全文
posted @ 2018-11-24 19:56 阿牛20 阅读(1376) 评论(0) 推荐(0) 编辑
摘要:我们都知道,java中对类型的检查是很严格的,所以我们平操作时,也往往很小心。 如题: (T[]) new Object[size],这种写法是一般我们是不会干的!但是有点经验的同学,还是会遇到这样写的。那么,今天咱们就来看看,像这样的写法对不对,也顺便深入理解java的类型转换机制吧! 问题1: 阅读全文
posted @ 2018-11-18 18:55 阿牛20 阅读(2907) 评论(0) 推荐(0) 编辑
摘要:spring中,注册controller的url有多种方式: 1. 你可以啥都不都干,直接使用 @RequestMapping 注解上体路径,然后加上 <component-scan>, 访问的时候就根据这个路径来加载handler了; 2. 如果你想自定义一些路径的访问方式,那么你可以自定义 Re 阅读全文
posted @ 2018-11-14 21:33 阿牛20 阅读(987) 评论(0) 推荐(0) 编辑
摘要:问题为对接一个sso的验证模块,正确的对接姿势为,接入一个 filter, 然后接入一个 SsoListener 。 然而在接入之后,却导致了应用无法正常启动,或者说看起来很奇怪,来看下都遇到什么样的问题,以及是如何处理的? 还是 web.xml, 原本是这样的: (很简洁!) 而需要添加的 fil 阅读全文
posted @ 2018-11-12 20:41 阿牛20 阅读(3893) 评论(0) 推荐(1) 编辑