
Java
文章平均质量分 87
牛麦康纳
主攻运维安全基础平台架构设计与落地
展开
-
自上而下面向能力的编程思想
前言: 行业里对码农的描述有很多种抬头:研发、开发、工程师等,我个人觉得描述最准确的应该是“工程师”,因为软件产品的开发本来就是个工程学的问题,只不过软件工程和土木工程的施工过程是正好相反的。土木工程是自下而上,先把地基搞好再一层层往上建设;软件开发是自上而下,先搭建空中楼阁,下面是怎么实现的并不重要。新概念: 我们都接触过很多编程思路的名词,面向对象、面向过程、面向服务等,其实做为一个软件工程师最应该具备的是“面向能力编程”。面向能力编程是软件架构和开发时的一种方法论,只关注自己需要实现的..原创 2021-02-19 10:56:49 · 783 阅读 · 0 评论 -
LinkedHashMap引发的内存泄漏以及解决过程
今天在使用LinkedHashMap的时候踩了一个坑,用了差不多一整天的事件才定位并解决掉,这里记录并于大家分享下经验。放着这么多Map不用非要去碰比较冷门的LinkedHashMap干啥?这跟我的使用场景有关系。先介绍下我选择它的原因。应用场景:我们开发了一套网关,一期已经上线,可以进行正常的路由转发、限流保护、动态配置、灰度发布等基础功能了,二期我想给它加入缓存容灾的功能,简单说就是存储200状态的南向报文当它们服务异常时我利用这些缓存来为客户端提供响应。当然细节上并没有这么简单暴力,会对南向h原创 2020-08-17 19:20:03 · 4095 阅读 · 1 评论 -
架构师的三种境界
架构师,在每个程序心里都是一个神圣的职业,那么什么才是真正意义上的架构师呢?狭义的定义:在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。广义的定义:系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物每个人对架构师的理定位都不同,同一个人在不同阶段对架...原创 2019-04-23 00:58:19 · 2168 阅读 · 4 评论 -
Web服务http日志收集
目录需求场景:架构设计:端口号:准备资源:Linux版本:准备Java环境ElasticSearch:下载安装配置:启动:Zookeeper下载安装:配置:启动:Kafka下载安装:配置:启动命令:准备和调试:Logstash:下载安装:配置:logstash服务配置:被监听的服务配置:启动命令:...原创 2019-03-09 20:33:53 · 3467 阅读 · 0 评论 -
Gradle详解
先看下Gradle的定义:Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。抽住定义中的核心就是DSL版本的编译工具,解决XML版本编译工具的缺点。 虽然gradle是基于groovy的,但是由于其提供了一整套DSL,所以在开发gradl...原创 2018-08-30 22:49:54 · 5311 阅读 · 3 评论 -
Groovy实战分析
本篇Groovy博文适合有Java+脚本语言(python or ruby)基础的同学快速入门。本文不算是系统地学习groovy的教材,而是通过对比和对几个重点的介绍让大家直接上手groovy开发。1 默认导入java.io.* java.lang.* java.math.BigDecimal java.math.BigInteger java.net.* java.util...原创 2018-08-30 22:28:17 · 1436 阅读 · 0 评论 -
Spark原理详解
Spark的出现很好的弥补了Hadoop在大数据处理上的不足,核心部分是对RDD进行阶段划分,同时随着枝叶不断散开,出线了很多的衍生的接口模块丰富了Spark的应用场景,也降低了Spark与其他技术的接入门槛原创 2018-03-04 18:54:32 · 10528 阅读 · 2 评论 -
Hadoop原理与安装
Hadoop的两大核心原理:MapReduce和HDFS,在安装Hadoop之前一定要深入的理解这些原理,才有助于安装过程中的故障排查以及以后使用中的问题分析。原创 2018-02-12 17:08:28 · 1943 阅读 · 0 评论 -
ThreadLocal-单例模式下高并发线程安全
为了解决线程安全的问题,我们有3个思路:第一每个线程独享自己的操作对象,也就是多例,多例势必会带来堆内存占用、频繁GC、对象初始化性能开销等待等一些列问题。第二单例模式枷锁,典型的案例是HashTable和HashMap,对读取和变更的操作用synchronized限制起来,保证同一时间只有一个线程可以操作该对象。虽然解决了内存、回收、构造、初始化等问题,但是势必会因为锁竞争带来高并发下性能的下降。第三个思路就是今天重点推出的ThreadLocal。单例模式下通过某种机制维护成员变量不同线程的版本。原创 2017-12-14 20:57:36 · 7578 阅读 · 3 评论 -
验证码原理详解与案例
验证码技术的出现是为了防止对服务和数据库进行暴力攻击而设置的一道墙,客户端与服务端交互步骤如图剩下的细节问题还有:1, 验证码如何加噪成图片,主要靠java.awt下的类包2, 服务端如何维护验证码,靠Redis和SessionID原创 2017-11-24 21:25:35 · 1810 阅读 · 0 评论 -
SpringBoot模拟单点登录
简言之,系统内部通过某种技术实现用户统一登录和注销,所以单点登录技术一定要包括两部分:登录、注销。出现的原因是Cookie不能跨域。认证客户端应该具备的能力:1必须以Filter或者插件等形式提供,方便系统接入SSO。2未登陆的用户重定向到SSO认证中心3接收SSO发来的令牌并将该令牌发回给SSO做令牌认证4处理令牌认证结果并创建局部会话5拦截用户注销请求并重定向到SSO6处理SSO发来的注销会话请求 认证服务端应该具备的能力:0独立的web服务1提供登陆页面,和对用户的校验2创建全原创 2017-11-30 21:48:34 · 13587 阅读 · 16 评论 -
分布式事务详解
到目前为止,分布式事务仍是个技术性难题,仍没有一个银弹能完美的解决跨事务的问题,本文结合自己实际应用中的案例和一些成熟设计与大家探讨下。XA、二阶段、业务补偿、本地事务化、TCC、人工处理原创 2017-11-06 15:49:04 · 631 阅读 · 0 评论 -
JDK1.8新特性了解
最大的变化还是前两个特性:接口默认方法和Lambda语法,还有一些扩展和优化类的需要慢慢看API和源码了。原创 2017-11-02 17:44:31 · 847 阅读 · 0 评论