摘要: Spring Security功能多,组件抽象程度高,配置方式多样,导致了Spring Security强大且复杂的特性。Spring Security的学习成本几乎是Spring家族中最高的,Spring Security的精良设计值得我们学习,但是结合实际复杂的业务场景,我们不但需要理解Spri阅读全文
posted @ 2018-11-02 18:58 lovecindywang 阅读(178) 评论(0) 编辑
摘要: 本文我们来梳理一下Spring的那些注解,如下图所示,大概从几方面列出了Spring的一些注解: 如果此图看不清楚也没事,请运行下面的代码输出所有的结果。 Spring目前的趋势是使用注解结合Java代码而不是配置来定义行为、属性、功能、规则和扩展点,因此梳理注解也是梳理Spring功能点的很好的方阅读全文
posted @ 2018-10-24 23:03 lovecindywang 阅读(290) 评论(0) 编辑
摘要: 本文会以一个简单而完整的业务来阐述Spring Cloud Finchley.RELEASE版本常用组件的使用。如下图所示,本文会覆盖的组件有: 1. Spring Cloud Netflix Zuul网关服务器 2. Spring Cloud Netflix Eureka发现服务器 3. Spri阅读全文
posted @ 2018-10-12 11:51 lovecindywang 阅读(305) 评论(4) 编辑
摘要: "阅读PDF版本" 本文会来看一下Spring Boot Actuator提供给我们的监控端点Endpoint、健康检查Health和打点指标Metrics等所谓的Production ready(生产环境必要的一些)功能。 监控端点 我们先来新建一个模块: 引入了必要的actuator和web启动阅读全文
posted @ 2018-10-08 22:17 lovecindywang 阅读(172) 评论(0) 编辑
摘要: "阅读PDF版本" 标题有点标题党了,这里说的容易犯错不是Spring AOP的错,是指使用的时候容易犯错。本文会以一些例子来展开讨论AOP的使用以及使用过程中容易出错的点。 几句话说清楚AOP 有关必要术语: 1. 切面:Aspect,有的地方也叫做方面。切面=切点+增强,表示我们在什么点切入蛋糕阅读全文
posted @ 2018-10-07 11:25 lovecindywang 阅读(183) 评论(0) 编辑
摘要: "阅读PDF版本" 本文会来做一些应用对比Spring MVC和Spring WebFlux,观察线程模型的区别,然后做一下简单的压力测试。 创建一个传统的Spring MVC应用 先来创建一个新的webflux mvc的模块: 然后在项目里定义一个我们会使用到的POJO: 这里的@Document阅读全文
posted @ 2018-10-05 13:41 lovecindywang 阅读(178) 评论(0) 编辑
摘要: "阅读PDF版本" 本文会以一些例子来展现Spring MVC的常见功能和一些扩展点,然后我们来讨论一下Spring MVC好用不好用。 使用SpringBoot快速开始 基于之前的parent模块,我们来创建一个新的模块: 使用web来启用Spring MVC,使用thymeleaf来启用thym阅读全文
posted @ 2018-10-02 20:42 lovecindywang 阅读(185) 评论(1) 编辑
摘要: 标题中的咖啡罐指的是Spring容器,容器里装的当然就是被称作Bean的豆子。本文我们会以一个最基本的例子来熟悉Spring的容器管理和扩展点。 "阅读PDF版本" 为什么要让容器来管理对象? 首先我们来聊聊这个问题,为什么我们要用Spring来管理对象(的生命周期和对象之间的关系)而不是自己new阅读全文
posted @ 2018-10-01 15:53 lovecindywang 阅读(131) 评论(0) 编辑
摘要: 朱晔和你聊Spring系列S1E2:SpringBoot并不神秘 【编辑器丢失了所有代码的高亮,建议查看PDF格式文档】 文本我们会一步一步做一个例子来看看SpringBoot的自动配置是如何实现的,然后来看一些SpringBoot留给我们的扩展点。 自己制作一个SpringBoot Starter阅读全文
posted @ 2018-09-30 16:11 lovecindywang 阅读(245) 评论(0) 编辑
摘要: 朱晔和你聊Spring系列S1E1:聊聊Spring家族的几大件 朱晔和你聊Spring系列S1E1:聊聊Spring家族的几大件 【下载本文PDF进行阅读】 Spring家族很庞大,从最早先出现的服务于企业级程序开发的Core、安全方面的Security、到后来的作为各种数据源桥梁的Data、最近阅读全文
posted @ 2018-09-28 21:14 lovecindywang 阅读(300) 评论(1) 编辑
摘要: 朱晔的互联网架构实践心得S1E10:数据的权衡和折腾【系列完】 朱晔的互联网架构实践心得S1E10:数据的权衡和折腾【系列完】 【下载本文PDF进行阅读】 本文站在数据的维度谈一下在架构设计中的一些方案对数据的权衡以及数据流转过程中的折腾这两个事情。最后进行系列文章的总结和之后系列文章写作计划的一些阅读全文
posted @ 2018-09-25 14:57 lovecindywang 阅读(71) 评论(1) 编辑
摘要: 朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素 朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素 【下载文本PDF进行阅读】 本文我会来说说我认为架构评审中应该看的一些点,以及我写设计文档的一些心得。助你在架构评审中过五关斩六将,助你写出能让人收藏点赞的设计文档。 阅读全文
posted @ 2018-09-21 21:24 lovecindywang 阅读(256) 评论(0) 编辑
摘要: 朱晔的互联网架构实践心得S1E8:三十种架构设计模式(下) 朱晔的互联网架构实践心得S1E8:三十种架构设计模式(下) 【下载本文PDF进行阅读】 接上文,继续剩下的15个模式。 数据管理模式 数据管理模式 16、分片模式:将数据存储区划分为一组水平分区或分片 一直有一个说法就是不到没路可走的时候不阅读全文
posted @ 2018-09-19 13:38 lovecindywang 阅读(441) 评论(0) 编辑
摘要: 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上) 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上) 【下载本文PDF进行阅读】 设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头来去看23种设计模式你会发现很多平时写代码的套路和OO阅读全文
posted @ 2018-09-18 17:45 lovecindywang 阅读(446) 评论(1) 编辑
摘要: 朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则 朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则 【下载本文PDF进行阅读】 本文有两个部分,先介绍一下给飞机换引擎这个事情我的一些经验,因为篇幅较短然后介绍一下安全意识方面的一些心得。 给飞行中的飞机换引擎 给飞行中的飞阅读全文
posted @ 2018-09-17 16:14 lovecindywang 阅读(304) 评论(0) 编辑
摘要: 朱晔的互联网架构实践心得S1E5:不断耕耘的基础中间件 朱晔的互联网架构实践心得S1E5:不断耕耘的基础中间件 【下载本文PDF进行阅读】 一般而言中间件和框架的区别是,中间件是独立运行的用于处理某项专门业务的CS程序,会有配套的客户端和服务端,框架虽然也是处理某个专门业务的但是它不是独立程序,是寄阅读全文
posted @ 2018-09-15 20:25 lovecindywang 阅读(363) 评论(2) 编辑
摘要: 朱晔的互联网架构实践心得S1E4:简单好用的监控六兄弟 朱晔的互联网架构实践心得S1E4:简单好用的监控六兄弟 【下载本文PDF进行阅读】 这里所说的六兄弟只指ELK套件(ElasticSearch+Logstash+Kibana)以及TIG套件(Telegraf+InfluxDb+Grafana)阅读全文
posted @ 2018-09-13 18:10 lovecindywang 阅读(446) 评论(0) 编辑
摘要: 朱晔的互联网架构实践心得S1E3:相辅相成的存储五件套 朱晔的互联网架构实践心得S1E3:相辅相成的存储五件套 【下载本文PDF进行阅读】 这里所说的五件套是指关系型数据库、索引型数据库、时序型数据库、文档型数据库和缓存型数据库。 上图显示了一套读写服务搭配这五种类型数据库的例子: 1. 这里只是说阅读全文
posted @ 2018-09-12 18:01 lovecindywang 阅读(338) 评论(0) 编辑
摘要: 朱晔的互联网架构实践心得S1E2:屡试不爽的架构三马车 朱晔的互联网架构实践心得S1E2:屡试不爽的架构三马车 【下载本文PDF进行阅读】 这里所说的三架马车是指微服务、消息队列和定时任务。如下图所示,这里是一个三驾马车共同驱动的一个立体的互联网项目的架构。不管项目是大是小,这个架构模板的形态一旦定阅读全文
posted @ 2018-09-10 10:07 lovecindywang 阅读(905) 评论(2) 编辑
摘要: 朱晔的互联网架构实践心得S1E1:Pilot 朱晔的互联网架构实践心得S1E1:Pilot 最近几年写博客确实写得少了,初出茅庐的时候什么都愿意去写,现在写一点东西之前会反复斟酌是否有价值。工作十几年了,做了N多个互联网系统,业务涉及教育、游戏、电商、O2O、P2P,算是各种类型的互联网系统都摸过,阅读全文
posted @ 2018-09-09 11:51 lovecindywang 阅读(388) 评论(0) 编辑
摘要: 如果你还在苦苦寻找机器学习和深度学习入门资料的话,或许可以看看本文我的一些推荐,这些材料我自己都学过一遍,分享一下点评,希望对你有帮助。注意,本文只是点评这些资源,不提供任何资源的盗版下载,所有资源我本人都是正版获取也不会对外分享。 1 Coursera机器学习 by Andrew Ng ★★★★ 阅读全文
posted @ 2018-04-19 17:09 lovecindywang 阅读(653) 评论(2) 编辑
摘要: 假设一个公司发展有以下几个阶段: 0 :创始阶段; 0.5 :有产品但无管理阶段; 1 :经过 1年的发展初步稳定的阶段; 1+ :稳步发展阶段。 0 :创始阶段; 0.5 :有产品但无管理阶段; 1 :经过 1年的发展初步稳定的阶段; 1+ :稳步发展阶段。 上一篇文章中,我们聊了公司在初创阶段,阅读全文
posted @ 2018-04-13 17:05 lovecindywang 阅读(926) 评论(5) 编辑
摘要: CTO 是企业内技术最高负责人,对企业的发展起到至关重要的作用。但随着公司的不断发展,CTO 的工作重心也会不断变化。只有在正确的阶段做正确的事,才能更好地为公司做出贡献。我是空中金融 CTO ,TGO 鲲鹏会上海分会会员。加入空中金融之前,我曾在饿了么、空中网、5173 等互联网公司担任中层技术管阅读全文
posted @ 2018-04-09 18:39 lovecindywang 阅读(4979) 评论(21) 编辑
摘要: 技术学习要兼顾深度和广度 夯实技术基础 这么多年来,我面试了很多人。我越发感到「技术基础」非常重要。 很多技术的本质是一样的。技术基础足够好的话,学东西可以非常快。往下到操作系统层面,甚至计算机硬件层面,你会发现,编程语言特性和虚拟机特性不再重要。而技术基础和具体的编程语言没有太大关系,你有良好的技阅读全文
posted @ 2018-04-09 18:30 lovecindywang 阅读(449) 评论(2) 编辑
摘要: 现在AI越来越火,其实很多东西真正懂了原理并不是这么高大上 这里给一个手动打造的简单神经网络做手写识别的例子 代码见 链接: https://pan.baidu.com/s/1boHxuCB 密码: dmch(里面包含了Notebook以及需要的图片数据,文件比较大,只能传网盘。。。) 这个Note阅读全文
posted @ 2017-10-25 16:12 lovecindywang 阅读(321) 评论(0) 编辑
摘要: 虽然很多人已经使用了JDK8,看到不少代码,貌似大家对于Java语言or SDK的使用看起来还是停留在7甚至6。 Java8在流式 or 链式处理,并发 or 并行方面增强了很多,函数式的风格使代码可读性更高 。 希望通过这个分享,多达200+例子的演示,让大家从使用层面到思想层面进行转变,用好Ja阅读全文
posted @ 2017-01-05 21:53 lovecindywang 阅读(2095) 评论(0) 编辑
摘要: 之前做的一个PPT,分享给博客园的同学。 下载地址: 学技术练英语.pdf 技术是靠自己去学的,学技术不能仅仅是看书看博客,最好是有实践,不管是做实验去验证,还是写各种代码去玩各种特性,还是造轮子都是非常好的学习方法。技术发展很快,学好基础的可以提升自己的内功,以后学其他知识都会很快,把一方面的技术阅读全文
posted @ 2016-11-19 16:11 lovecindywang 阅读(547) 评论(1) 编辑
摘要: 在这里分享一些之前对某网站会员/用户系统(一般域名都是passport.xx.com)进行漏洞检查查出的一些问题,这些问题大多都是逻辑类漏洞,利用漏洞进行攻击并不需要什么高深的技术能力,所以危害尤其大,把相关经验分享给大家希望大家可以自查。这里要说明,下面很多漏洞的例子是基于已经获得有效的账号密码(...阅读全文
posted @ 2015-06-05 13:04 lovecindywang 阅读(4766) 评论(18) 编辑
摘要: 模式 接下来去聊一聊框架设计中的一些常见设计模式,这和传统的一些设计模式不同(之前写过 无废话C#设计模式系列文章,有兴趣的读者可以去看一下),这里聊的一些设计模式是比较高层的粗粒度的架构设计模式,主要是用于之前说的构建框架的龙骨,使得框架中的几百个类型可以有结构有条理组织在一起,在这些模式之中你完...阅读全文
posted @ 2015-04-23 16:14 lovecindywang 阅读(2094) 评论(2) 编辑
摘要: 【原创】如何写一个框架:步骤(上)说明:写本文的时候作者完全是把脑子里的东西写了出来,没有参考任何的资料,所以对于每一项内容可能都是不完整的,不能作为一个完整的参考。有一些方法学的东西每个人都有自己的喜好,没有觉得的对和错。 单元测试在这之前我们写的框架只能说是一个在最基本的情况下可以使用的框架,作...阅读全文
posted @ 2015-04-22 15:56 lovecindywang 阅读(8347) 评论(17) 编辑
摘要: 说明:作者也没写过什么框架,只是分享一些自己的理解,抛砖引玉罢了。如果你写过一些框架可能会产生一些共鸣欢迎讨论,如果你正在写或正打算写一个框架可能会给你一些启发。本文以为较长可能会分多个篇博客来写,现在能想到的是主要分为步骤、模式两部分。如果你觉得好,按一个推荐举手之劳让更多的人可以看到。步骤 定位...阅读全文
posted @ 2015-04-21 17:18 lovecindywang 阅读(28384) 评论(28) 编辑
摘要: 回到索引http://www.cnblogs.com/lovecindywang/archive/2012/12/23/2829828.html框架层面:近几年前端发展很快,前端之所以叫前端因为前端是已经可以独立成为一种职业了,js也不再是十年前的玩具了,以前富客户端RIA的应用可能会用flash/flex或是silverlight,现在可以使用js来完成大部分的功能,因此js作为一门前端的支撑语言也不仅仅是进行的简单的编码,越来越多框架性的东西出现了。越来越多的开发模式转变为后端只是吐json的数据源,而前端做所有UI的事情。MVCMVC实现职责分离是很好的,大多数网站在后端都会引入MVC框阅读全文
posted @ 2012-12-25 18:21 lovecindywang 阅读(9366) 评论(14) 编辑
摘要: 回到索引http://www.cnblogs.com/lovecindywang/archive/2012/12/23/2829828.html性能层面:性能分析我觉得性能分析的话要注意几个要点:不要去猜:对于自己写的代码你是否知道你的代码要执行多久,是不是还在用时间相减来测试代码执行时间?现在有很多自动化的工具可以在程序运行的时候,测试代码中每一句语句的执行时间,可以有效分析出代码的性能瓶颈。对于比较重要的业务逻辑建议采用类似的工具来进行性能分析,有的时候性能慢的代码不一定是自己写的还可能是框架内提供的,如果没有一个丰富的编码经验是不太可能知道这些点的,但是通过这样的分析工具你就能知道这个地阅读全文
posted @ 2012-12-23 18:01 lovecindywang 阅读(2064) 评论(0) 编辑
摘要: 回到索引http://www.cnblogs.com/lovecindywang/archive/2012/12/23/2829828.html设计层面:分层架构分层架构是项目设计中很重要的一点,从根本的目的上来说就是为了职责的分离。最经典的三层架构,到四层五层六层,甚至有人开玩笑说十八层的分层,根据项目的需要可以分不同的层。这里说的层其实是逻辑层,从物理层的角度来说也有三层、四层五层的分层架构。之所以三层架构这么流行是因为它的分层把大的关注点进行了分离,层数恰到好处,表现层、业务逻辑层和数据访问层,分别处理面向用户呈现的、面向逻辑处理的和面向数据库存取数据的三大关注点。在分层架构中除了分层之阅读全文
posted @ 2012-12-23 16:48 lovecindywang 阅读(4370) 评论(7) 编辑
摘要: 回到索引http://www.cnblogs.com/lovecindywang/archive/2012/12/23/2829828.html框架层面:SOA在这一篇中会逐个介绍一下自己对这些XXX的理解,其实每一个理念都不是莫名其妙产生的而是有产生背景的,这些时髦的名词不是用来炫耀的,而是真正要理解它们是干什么的,并且框架千万不能乱用理念也千万不能乱用,并不是把所有的这些都用上你的系统才是一个牛逼的系统,一定要适合才是最好的,并且要保持简单可靠的原则。所谓SOA,字面上来说是面向服务的架构。有的人不说SOA其实他已经SOA了,有的人大谈SOA但其实只是在用Web服务,SOA可大可小。你可以阅读全文
posted @ 2012-12-23 15:50 lovecindywang 阅读(3722) 评论(4) 编辑
摘要: 回到索引http://www.cnblogs.com/lovecindywang/archive/2012/12/23/2829828.html架构层面:日志集中所谓日志集中就是把程序的所有日志和异常信息的记录都汇总到一起,在只有一台服务器的时候我们记录本地文件问题也不是最大,但是在负载均衡环境下再记录本地日志的话就出现问题了。在想查看网站日志的时候到哪台机器去查都不知道,难道有100台机器就100台机器逐一远程连上去看?因此,把这些数据汇总在一起保存对于大型网站系统来说是很必要的,这样我们就可以直接进行查看、搜索,也很明确可以知道是哪台机器的业务出了问题。至于这种日志数据是写到RDBMS还是阅读全文
posted @ 2012-12-23 13:13 lovecindywang 阅读(4321) 评论(2) 编辑
摘要: 回到索引http://www.cnblogs.com/lovecindywang/archive/2012/12/23/2829828.html安全层面:SQL注入SQL注入是一个古老的安全问题,现在任何程序都不应该再出现这样的问题了,其原理非常简单,在过去大多数程序都是直肠子通数据库的,因此如果拼接SQL并且在参数上没有做好过滤或者没有使用参数形式来生成SQL语句的话可能会导致用户在页面上输入的恶意代码直接在数据库中执行。SQL注入的危害点在于整个网站有1000个数据点,如果其中有1个点有漏洞那么整站的数据其实都有危险了,很多开发会注重资金相关的模块但是忽略新闻相关的模块,如果都是使用一套数阅读全文
posted @ 2012-12-23 12:27 lovecindywang 阅读(1558) 评论(0) 编辑
摘要: 回到索引http://www.cnblogs.com/lovecindywang/archive/2012/12/23/2829828.html语言层面:运行时元数据获取所谓运行时元数据获取也就是在程序运行的时候通过代码动态获得类型、方法、属性的信息,然后可以动态获得属性的值,执行方法等等,在有的语言中称为反射。反射不一定是高效的,但是在写框架程序的时候反射是一种很有用的技术,并且反射的性能开销往往是可以通过诸如缓存等手段来最小化的。比如在ORM中,根据实体类的信息动态获得所有的属性,然后取得其值,生成要到数据库中执行的SQL语句。理解反射熟练掌握反射的使用以及性能优化是编写框架类代码很重要的阅读全文
posted @ 2012-12-23 12:22 lovecindywang 阅读(1927) 评论(0) 编辑
摘要: 下面是一些个人架构上的总结,本来想只在公司内部进行共享的,因此内容写的口语化一点,也没什么图示,所有内容没有查任何资料是脑子里面的东西吐出来的因此可能会不准确不全,希望抛砖引玉,大家互相讨论。 要注意,我这些文章是一个总体的架构经验不针对具体的语言和平台,因此也不一定是适用所有的语言和平台的。 (内阅读全文
posted @ 2012-12-23 12:20 lovecindywang 阅读(3760) 评论(3) 编辑
摘要: 回到索引http://www.cnblogs.com/lovecindywang/archive/2012/12/23/2829828.html系统层面:高可用性所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速故障转移。一般可以使用KeepAlived或HeartBeat阅读全文
posted @ 2012-12-23 12:20 lovecindywang 阅读(2260) 评论(0) 编辑