- 博客(22)
- 收藏
- 关注
原创 java IO思维导图总结
字节流每次读取一个字节,而字符流每次读取两个字节。如果有同学看了java IO源码的话,就会发现里面用到了装饰者设计模式。
2018-05-29 21:36:49 1278
原创 关于前后端分离下如何生成图片验证码
前后端分离跟传统的JSP动态页面不太一样,前端通过调用restful接口获取数据,一般都是JSON格式的数据。我们在登录的时候有时候需要后端返回一个图片验证码,直接返回验证码数字肯定是不安全的,使用图片验证码的目的就是让机器人无法盗号暴力破解,提高安全性。这种情况下,可以通过后端返回图片字节流来获取图片验证码,具体代码如下:这里要注意的地方是后端把验证码保存到redis里面,对应的key是一个UU...
2018-05-26 22:54:11 10244 9
原创 如何提高网站性能
一、首先要分析网站的性能瓶颈网站性能影响的因素有很多,主要从以下几个方面来分析:1.网络负载。这个会分成外网和内网,需要对网络进行有效的规划。2.应用服务器性能。主要包括CPU、存储、I/O访问、内存、TCP/IP连接数等等。3.数据库服务器性能。主要包括数据库参数配置、设备性能、数据结构的合理性,另外要注意的是分布式架构、微服务需要避免分布式事务的产生。4.代码质量。主要是检查代码的编写质量,防...
2018-05-24 22:53:18 1390
原创 JDK中泛型的上下界概念
今天看了下jdk8的Function源码,发现好多地方的方法传递参数都是如下这般:Function<? super V, ? extends T> before这个其实就是泛型的上下界:上界 <? extend T>下界 <? super T>上界的list只能get,不能add 下界的list只能add,不能get具体看代码示...
2018-05-24 00:15:29 764
原创 java类对象初始化过程
当我们要创建一个类的实例时,其初始化过程如下:一、初始化父类中的静态变量和静态代码块二、初始化子类中的静态变量和静态代码块三、初始化父类中的普通成员变量和代码块四、调用父类的构造方法五、初始子类中的普通成员变量和代码块六、调用子类的构造方法另外要注意在spring配置里面当我们要给某个类实例定义一个父类时使用parent这个选项。...
2018-05-22 23:52:50 193
原创 数据库事务管理相关总结
Mysql数据库的事务隔离级别如下:隔离级别 更新丢失 脏读取 重复读取 幻读 读取未提交 N Y Y Y 读取已提交 N N Y Y 可重复读取 N N N Y 串行化 ...
2018-05-21 23:36:03 124
原创 用java实现首字母小写
实现首字母变小写的方法不少,但感觉下面的这种写法会更高效一点,请看:这里主要就是先把字符串分成一个个单独的字符,然后对首字符进行加32操作,相信大家都知道大写字母+32变小写的原理,这里就不同赘述了,以后要把一些开发小技巧发出来跟大家一起共享。...
2018-05-20 23:35:17 9404
原创 如何阅读源码
很多朋友反馈在看java源码的时候感觉很难懂,看完之后很快又忘记了。在此我结合自己的经验体会,简单说下读源码的方法。第一点,首先是要对自己要有信心。信心是很重要的一个东西,一定要坚信自己是有能力读懂理解源码的,这样才能一直坚持下去。第二点,对技术要抱有极大的热情。把读源码当成是过五关斩六将,就好像是在打游戏一样,这样的话你会越来越有成就感。这个要怎么做呢?主要就是订计划目标,先从大计划开始,比如说...
2018-05-20 23:19:10 815
原创 Spring AOP深入浅出
AOP思想:面向方面编程,简单来说就是把代码的很多地方所出现公共的功能封装到一个地方去,达到复用的目的,便于维护。作用:1、降低模块之间的耦合度2、使系统容易扩展3、更好的代码复用。AOP的使用场景:权限管理缓存管理错误处理日志处理事务处理Spring AOP源码:通过生成代理类来作aop相应的功能。请思考:Java的动态代理跟静态代理有什么区别?...
2018-05-18 23:20:41 211
原创 Threadlocal之关于Fortify 扫描警告
在使用Fortify 扫描代码之后报出如下警告, J2EE Bad Practices:Threads (FORTIFY.J2EE_Bad_Practices--Threads) 0. InCall: Threadlocal()。经查资料主要是J2EE的规范,就是在某些情况下禁止web使用线程管理器,以免造成死锁等问题。 事实上Threadlocal应该是不会出现死锁这...
2018-05-17 23:31:08 2358
原创 Elasticsearch父子关系文档的一个例子
1、创建索引及映射关系put /test{ "mappings":{ "test":{ "properties":{ "user_event":{ "type":"join", "relations":{
2018-05-15 23:13:12 5181 1
原创 Elasticsearch初学误区
今天下载了ES6.x然后想测试下父子文档关系的例子,结果发现一直提示index对应的type只能有一个,原来官网上的那个Elasticsearch权威指南只是针对ES5.x的,所以大家要注意有些学习资料对应的版本是多少,以免浪费时间。另外windows下尽量下载一个curl工具来执行elasticsearch rest API操作,非常方便。目前ES6.X没有了之前父子文档关系的内容,取而代之的是...
2018-05-14 22:52:40 145
原创 ElasticSearch的学习之路
大概在8年前,我使用compass作为搜索引擎,并深入了下lucene的源码,简单的写了一个分词器。后来工作中接触到ElasticSearch的时候,刚开始还不知道它就是compass的升级版。现在是时候好好来学习下这个ES的魔力了,据说现在的各大互联网公司都在使用它,相信我们也能从中受益。ElasticSearch的官网上有一个比较好的学习文档《Elasticsearch权益指南》,在此我将一些...
2018-05-13 18:09:45 231
原创 系统设计方法论
作为一个架构师,要如何高质量完成一个功能需求呢?1.确认需求。跟业务产品人员进行沟通确认,最好是有聊天记录等保存下来,形成文档,再由双方确认。2.分析需求。分表面需求和内在需求,而内在需求的挖掘需要一定的经验。3.分析资源。主要包括人、资源、时间节点、依赖资源,依赖资源一般都是第三方需要沟通,也是比较消耗时间的。4.需求范围。功能性需求和非功能性需求,而非功能性需求往往是指性能方面的需求。5.技术...
2018-05-12 23:22:22 1750
原创 JAVA源码学习要点汇总
一、基础知识1.宏观上理解java的本质2. JVM的原理3.java变量4.java数据类型5.java运算符6.java判断语句if-else7.java循环语句switch-case\for\while\do-while和continue\break二、面向对象1.构造函数2.关键词static、super、final3.继承4.方法重载和覆盖5.多态性6.静态绑定和动态绑定7.抽象类8.抽...
2018-05-12 11:17:34 4245
原创 架构的方法论之康威定律
最近阅读了架构之美,其中康威定律印象深刻,于是查阅了相关资料,再根据自己这么多年的开发架构经验,总结一下心得。首先来看一下这个定律的原文:Organizations which design systems are constrained to produce designs which are copies of the communication structures of these org...
2018-05-11 23:57:18 1267
原创 关于Elasticsearch的学习要点
权威指南在这里:https://es.xiaoleilu.com/首先了解下ES的历史。原来ES是叫compass,后来作者找了一份工作关于高性能的分布式环境,需要做一个高性能、实时、分布式的搜索引擎,ES应运而生。另外一个比较出名的搜索引擎叫solr,也是基于lucene开发封装的一个组件框架,大家有空可以看看,对比下跟ES的区别。ES最重要一点是分布式的,所以一定要亲手搭建一个集群。接下来要理...
2018-05-10 23:49:55 251
原创 认识JVM的内存模型
在实际的项目开发中,我们有时候会遇到内存溢出这种情况。如何解决这种问题呢?一、首先我们得了解下java的内存机制。JVM里面把内存分成五个部分,分别是:1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区这几个存储区最主要的就是栈区和堆区,那么什么是栈什么是堆呢?说的简单点,栈里面存放的是基本的数据类型和引用,而堆里面则是存放各种对象实例的。具体请参考更多网上资料。二...
2018-05-09 23:37:42 116
原创 读java源码的好处
结合自己读源码的体会,大概有以下几点好处:1.深入理解java语言。很多人做java开发,只知道怎么用,大概了解语法,但并不是很懂为什么要这么写,这样的后果就是模仿别人的代码,不能根据项目中的实际情况,写出高质量的代码。而当你阅读了java源码之后,你就会发现其实还可以有更高效的方法来解决问题。2.深入体会设计模式。当你深入java源码的时候,你会发现里面用到了很多设计模式,从而加深了自己在实际的...
2018-05-08 23:04:07 3332
原创 深入学习java
做开发也差不多十年了,是时候需要好好总结一下了,同时也跟更多的人一起分享,一起学习进步。 过去我们只是在不断的学习如何使用java语言来开发项目,现在我们来学习java为什么要被设计成这样以及它的深层原理,从全局整体上来理解,从历史版本看变迁,由广度到深度,所谓大道至简,浓缩就是精华,最后达到一种效果就是触类旁通,知其然还要知其所以然。 我们知道开发语言经历了...
2018-05-06 12:52:14 1109
原创 设计模式的六大原则
开闭原则开闭原则指的是对于扩展是开发的,对于修改是关闭的。通俗来讲就是指,一个软件实体(例如:类、函数、模块等)应该能够由开发人员扩展,但是不能修改该实体中已经指定好的内容。当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。开闭原则是最基础的设计原则,其他的五个设计原则都是开闭原则的具体形态。里氏替换原则里氏...
2018-05-05 22:40:46 54
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人