![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
李福春
开朗 勤奋 幽默 正义
展开
-
0308 软件系统的非功能需求
故事开始。小李是一个一线的java程序员,做软件开发多年,有一天,被邀请去参加一个大厂的面试,面试前他做了各种准备,有软件原理方面的,软件设计方面的,还有软件架构方面的知识。并不断总结提炼成了一张知识图谱。想着即使不成功,也是一次不错的技术交流,至少可以知道目前大厂需要的程序员具备的技能深度和广度,给自己定定位。下面是技术一面。小李:你好,我是李x,今年y岁,做一线开发z年,我来面试...原创 2020-03-06 09:40:53 · 448 阅读 · 0 评论 -
0308 软件系统的非功能需求
故事开始。小李是一个一线的java程序员,做软件开发多年,有一天,被邀请去参加一个大厂的面试,面试前他做了各种准备,有软件原理方面的,软件设计方面的,还有软件架构方面的知识。并不断总结提炼成了一张知识图谱。想着即使不成功,也是一次不错的技术交流,至少可以知道目前大厂需要的程序员具备的技能深度和广度,给自己定定位。下面是技术一面。小李:你好,我是李x,今年y岁,做一线开发z年,我来面试...原创 2020-03-05 23:26:57 · 1978 阅读 · 0 评论 -
0219 springmvc-拦截器和响应增强
拦截器拦截器分同步拦截器和异步拦截器;HandlerInterceptor方法和执行时机可以看DispathcerServlet的原来确定它的三个方法的执行时机;AsynHandlerInterceptor看注释,主要用来清理在并发环境加清理ThreadLocal的数据;ResponseBodyAdvice对返回值备注了@ResponseBody或者返回ResponseEn...原创 2020-03-03 09:26:26 · 1095 阅读 · 0 评论 -
0302 中台落地前概念和思考
从前有一个java工程师,梦想技术不断突破,设计理念不断创新,于是开始关注中台,对于中台一无所知的他,最快的方式找一个相关领域的专家,快速的累积起基础知识,形成完整的知识体系,然后结合工作中的实际问题,不断的应用进去,一下是经过一段时间的学习形成的中台的理论知识体系,输出来,先尝试使用自述的方式讲清楚,形式采用问答的方式。java工程师是我,简称小李,中台专家架构师,简称台长。希望对中台感兴趣的其...原创 2020-03-03 09:25:48 · 859 阅读 · 0 评论 -
0228 我的潘多拉
我的潘多拉从一个故事说起。从前,有个Java程序员非常喜欢写程序,喜欢研究源码,读英文文档。但是它在一家小公司里工作,公司的技术栈很陈旧。单个系统代码中含有很多的xml配置,配置各种中间件的入口适配器,而不同的业务系统中都是类似的配置。启动单个系统很慢。启动依赖web组件,无法快速部署。公共组件的依赖复杂,容易依赖冲突,版本陈旧。在springcloud流行的时代,无法快速集成新的优秀组件...原创 2020-03-03 09:25:05 · 804 阅读 · 0 评论 -
0302 中台落地前概念和思考
从前有一个java工程师,梦想技术不断突破,设计理念不断创新,于是开始关注中台,对于中台一无所知的他,最快的方式找一个相关领域的专家,快速的累积起基础知识,形成完整的知识体系,然后结合工作中的实际问题,不断的应用进去,一下是经过一段时间的学习形成的中台的理论知识体系,输出来,先尝试使用自述的方式讲清楚,形式采用问答的方式。java工程师是我,简称小李,中台专家架构师,简称台长。希望对中台感兴趣的其...原创 2020-03-02 23:44:07 · 221 阅读 · 0 评论 -
0228 我的潘多拉
我的潘多拉从一个故事说起。从前,有个Java程序员非常喜欢写程序,喜欢研究源码,读英文文档。但是它在一家小公司里工作,公司的技术栈很陈旧。单个系统代码中含有很多的xml配置,配置各种中间件的入口适配器,而不同的业务系统中都是类似的配置。启动单个系统很慢。启动依赖web组件,无法快速部署。公共组件的依赖复杂,容易依赖冲突,版本陈旧。在springcloud流行的时代,无法快速集成新的优秀组件...原创 2020-02-29 01:15:37 · 235 阅读 · 0 评论 -
0226 rest接口设计
align=left&display=inline&height=322&name=image.png&originHeight=322&originWidth=338&size=154389&status=done&style=none&width=338)背景为了更方便的书写和阐述问题,文章中按照第一人称的角度书写。作为一个以java为主要开发语言的工程师,我所描述的都是java相关的编...原创 2020-02-27 12:05:02 · 834 阅读 · 0 评论 -
0224 如何面对高并发?缓存?中台为什么会火?
场景的变化场景特点变化点老复杂的业务逻辑新大量用户高并发访问软件开发方法,过程管理,组织架构变化垂直伸缩提高服务器的硬件配置来支撑;两个问题:物理服务器的硬件性能上限;投入的成本跟性能提升不成线性关系;水平伸缩使用更多的服务器形成集群来支撑分布式架构的演进22 缓存背景分布式架构中,使用缓存可以优化...原创 2020-02-24 18:53:41 · 801 阅读 · 0 评论 -
技术管理规划-如何规划团队的架构
管理规划的4个要素1.职能【清楚自己团队的基本职责和使命】2.目标【为团队设定清晰的目标】3.团队【团队的架构规划】4.路径 团队目标 根据团队目标去梳理团队 团队目标: 某个时间节点,团队发展成什么状态。 要点 说明 规模 实际人数和预算人数 分工 团队负责哪些业务,每个业务配置了多少人力,这些人员如何分...原创 2019-08-27 00:20:19 · 1445 阅读 · 0 评论 -
spring的事件机制实战
理论 在分布式场景下,实现同步转异步的方式有三种方式:1.异步线程池执行;比如借助@Asyn注解,放到spring自带的线程池中去执行;2.放到消息队列中,在消费者的代码中异步的消费,执行相关的逻辑;3.基于spring的事件机制,触发事件,在监听器里实现相关逻辑; spring中自带了事件的支持,核心类是ApplicationEventPublisher; 事件...原创 2019-08-16 16:35:39 · 274 阅读 · 0 评论 -
技术管理规划-从哪入手?
前言 最近在学习技术管理课程,对学习的内容做一些笔记,结合当前的工作环境在对应的知识点上做一些思考,慢慢建立自己的团队管理方法论。 学习方法 早上骑单车的时候或者跑步的时候听音频,熟悉课程内容; 仔细阅读文字,对要点做好笔记; 朗读原文,针对笔记中的要点进行扩展; 结合当前工作环境,或者设想管理当前所在的技术团队,对每个知识的要点进行思考; 3天...原创 2019-08-16 14:47:21 · 378 阅读 · 0 评论 -
技术管理规划-如何设定团队的目标
团队管理规划有4个互相关联的要素: 职能 目标 团队 路径 在未来的3个月,6个月,1年,2年,3年,5年中,你希望带着你的团队抵达一个什么样的目的地,也就是团队的目标。 更加清楚目标意味着什么,可不是让团队有事情干那么简单; 目标的意义 目标对团队管理意味着什么? 意义 说明 你和上级的诉求 希望...原创 2019-08-25 22:45:49 · 512 阅读 · 0 评论 -
技术管理规划-设定团队的职能
背景 职责 == 团队是干什么的 初步自查团队 1.公司为什么给我团队?希望我产出什么?完成对除了c端健康领域探索的研发任务,产出技术类产品2.团队存在的独特价值是什么?研发过lx健康这款基础app,研发能力强,熟悉硬件相关技术对接3.你用什么维度来衡量团队的价值高低呢?整体产出技术类产品的时效性,质量4.简明扼要的说出自己团队的职责?快速高质量的输出公司技术产品...原创 2019-08-24 23:16:28 · 1005 阅读 · 0 评论 -
Apollo的基本概念和集成实战
基本概念 使用场景 是一个分布式的配置中心。适用于微服务; 核心功能 集中管理不同环境,不同集群的配置; 配置修改后可以实时推送到应用端; 具备规范的权限,流程治理特性; 开发技术 服务端使用springboot,springcloud开发,打包后可以直接运行,无需安装额外的tomcat; java客户端不依赖任何框架,对Spring,...原创 2019-08-15 17:58:19 · 2093 阅读 · 0 评论 -
kotlin入门
安装Kotlin编译器 安装最新的编译器 ,推荐方式,直接从github下载; bin 运行库 lib 扩展库 命令行方式写kotlin Hello.kt fun main(args:Array<String>){ println("hello w...原创 2019-08-15 17:24:50 · 410 阅读 · 0 评论 -
EffectiveJava3 item7:消灭过期的对象引用
快速翻译 如果你是从一门手动管理内存的语言(比如说C,或者C++)切换到一门带自动垃圾回收的语言(比如说java),基于当你使用过的对象会自动回收这个事实,你的编程工作变得更简单。当你第一次体验这个的时候感觉就像是魔法,它让你很容易产生这样的映像:你不用考虑内存管理,但是这却是真的。看下面这个简单的stack(栈)的实现例子。// Can you spot the "m...原创 2019-02-19 10:16:07 · 140 阅读 · 0 评论 -
struts学习笔记二:国际化和拦截器
1,xwork校验框架分为,属性优先,校验器优先:思路:先写上校验器,然后写属性.写法:<validator type="requiredstring"><param name="fieldName">username</param><message>username invalide</message>2012-02-28 08:46:18 · 107 阅读 · 0 评论 -
struts学习笔记三:文件上传和拦截器的应用
1.拦截器栈可以放多个拦截器<interceptor-stack name=""><interceptor-ref name=""></interceptor-ref></interceptor-stack>默认的拦截器栈:不需要调用,默认自己调用了.<default-interceptor-ref>&a2012-02-29 08:37:45 · 87 阅读 · 0 评论 -
hibernate学习笔记一:jdbc
1.hibernate,睡眠的意思,把对象冬眠到数据库里.2.纯java代码实现数据库操作,jdbc(java database connectivity)?1.执行sql语句的api,2.java编写的类和接口3.java语言操纵数据库分四类:1.jdbc-odbc桥+odbc驱动程序:必须每个客户机加载odbc二进制.2.本地API,部分采用java编写的驱动程序,也需要加载...2012-02-29 08:39:26 · 94 阅读 · 0 评论 -
java工作笔记一 Maven,Guice , Mena的简单使用 ,Eclipse必会快捷键
各位关注我的博友们好,本人已经转java了,经过一个多月的求职,终于找到了自己满意的工作,感觉自己学习能力强点之外,经验还需要很长时间的积累,为了提升自己同时也给需要学习java的同志一些借鉴,打算把我的工作笔记放上来提供参考,希望能指正不足的地方,共同进步。一,Maven 作用:管理Java类库,管理依赖,可以很好的控制依赖项的版本,并且项目中不存在具体依赖lib,只有对于依赖的描述...原创 2012-04-20 23:08:08 · 254 阅读 · 0 评论 -
shiro的使用2 灵活使用shiro的密码服务模块
shiro最闪亮的四大特征是认证,授权,加密,会话管理。上一篇已经演示了如何使用shiro的授权模块,有了shiro这个利器,可以以统一的编码方式对用户的登入,登出,认证进行管理,相当的优雅。为了提高应用系统的安全性,这里主要关注shiro提供的密码服务模块;1,加密工具类的熟悉 首先来个结构图,看看shiro哥哥提供了哪些加密工具类: ...2014-07-01 10:37:27 · 94 阅读 · 0 评论 -
hibernate基础学习1 连接db
连接db连接池db方言自动生成数据表1,连接dbhibernate连接db来支持我们的应用,我们可以通过不同的方法来连接到db,主要方法如下:连接方式简介独立内置的连接池不建议使用到生产环境javax.sql.Datasourcetomcat等web服务器上配置的连接池第三方连接池c3p0,proxool,用的最多应...2013-10-14 18:17:05 · 172 阅读 · 0 评论 -
EffectiveJava3 item1:创建对象应优先使用静态工厂方法VS构造函数
英文翻译允许客户端创建一个实例的传统方法是:提供一个公共构造函数;有另外一个必须成为每个程序员的编程技巧:优先使用类提供的只简单返回实例的公共静态工厂方法来创建对象。这有一个简单的Boolean类的例子:这个方法转换一个原生的boolean类型的值为一个Boolean的实例。 public static Boolean valueOf(boolean b){ return...原创 2019-01-25 10:28:03 · 241 阅读 · 0 评论 -
EffectiveJava3 item5:请使用依赖注入来创建依赖资源对象
快速翻译很多类依赖一个或者多个资源;例如:一个拼写检查依赖于字典,看到这样的类像静态工具类一样的实现是很常见的。// Inappropriate use of static utility - inflexible & untestable!// 不适当的使用静态工具类-不灵活,不可测试public class SpellChecker { private static...原创 2019-02-14 16:42:31 · 219 阅读 · 1 评论 -
EffectiveJava3 item6:复用已有对象提高性能(避免创建不必要的对象)
快速翻译 通常建议复用简单对象而不是每次使用的时候都创建新的对象。复用更快也更加优雅,一个不可变对象总是可以复用的。下面是一个反例:String s = new String("bikini"); // DON'T DO THIS! 不要这么使用 这段代码每次执行的时候都会创建一个新String实例,这些实例的创建是没有必要的,构造函数中的字符串参数bi...原创 2019-02-15 10:25:58 · 518 阅读 · 0 评论 -
EffectiveJava3 item2:建造者模式替换多参数构造函数
翻译 静态工厂方法和构造函数都有一个限制:递增的大量的可选参数场景他们没法适应。考虑这样一个场景:一个代表营养物质标签的类出现在一大堆食物上;这些标签有一些需要的字段,重量,单个容器的重量,单份的卡路里,更多超过20个可选的字段, 总脂肪,饱和脂肪,反式脂肪酸,胆固醇,NA等等,对一些可选的字段来说,很多有非0值,。 这种类你应该写哪种构造函数或者静态工厂方法?通常,程序员使...原创 2019-01-29 16:16:01 · 532 阅读 · 0 评论 -
EffectiveJava3 item3:强制单例类构造函数私有或是枚举类型
翻译 单实例类是只实例化一次的类,单例通常代表一个无状态的对象,比如说一个本质上唯一的功能组件或者系统组件。让一个类成为单例使得客户端很难测试它,因为不能用一个模拟的实现代替单例,除非它实现了一个某类型的接口。 有两种常见的方法实现单例,两种都是基于保持构造函数私有,然后引入一个静态的成员来提供访问这个唯一实例,其中一种方法,成员是final字段;// Sing...原创 2019-01-30 10:07:13 · 164 阅读 · 0 评论 -
EffectiveJava3 item8:避免使用回收器和清理器
我的看法优先使用try-with-resource来对重要资源使用完毕之后进行回收是一个好习惯,使用finalizers和cleaners是很危险的,因为:结果不确定而且性能损耗大。他两只能在有限的场景下考虑使用,但是也要特别注意这个不确定性和性能损失。快速记忆 翻译这里约定finalizers=回收器,cleaners=清理器。回收器是不可预测的,通常是很危险的,并...原创 2019-02-22 16:07:52 · 131 阅读 · 0 评论 -
EffectiveJava3 item4:提供私有构造方法保证工具类不可实例化
翻译 偶尔你需要写一个只有一组静态方法或静态成员变量的工具类,这个类有一个不好的名声,因为调用者考虑到对象的创建时候滥用这个类,而调用者通过构造函数创建对象的方式确实是在合理使用这个工具类。工具类是可以被用来在一个原生值或者数组中的一组关联的方法,就像java.lang.Math或者java.util.Arrays这样的类;工具类也可能包含返回一些实现了接口的静态工厂方法,就像j...原创 2019-02-13 13:05:48 · 381 阅读 · 0 评论 -
struts学习笔记一:struts的流程,类型转换和输入校验
写作背景:虽然当一个.net工程师已经半年多了,但是还是没办法放下对java的热爱,忍不住想转到java语言领域,当一名java软件工程师,在招聘网站上看到了很多招java软件工程师的,大致要求如下:熟练应用SSH;熟练掌握jsp、servlet、xhtml、javascript、Web Service、XML等相关编程技术;熟练掌握主流关系数据库(Oracle,mysql,sqlserver)的...2012-02-26 19:30:43 · 132 阅读 · 0 评论