自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一棵小树

Java学习永无止境

  • 博客(45)
  • 资源 (7)
  • 收藏
  • 关注

转载 常见负载均衡架构简述 读《深入分析Java Web技术内幕》

参考《深入分析Java Web技术内幕》通常有三种负载均衡架构:链路负载均衡、集群负载均衡、操作系统负载均衡。主要应用于web服务或者分布式数据集群中,还有CDN集群中。1.链路负载均衡 通过DNS解析成不同IP,然后用户根据这个IP访问不同的目标服务器。 如上图,由Global DNS Server 完成动态解析域名服务,控制用户最终访问哪个Web Server。 优点...

2018-03-14 22:31:05 350

转载 设计 REST API的一些好文章

参考文章链接: 设计一套良好 REST API 理解OAuth 2.0 HTTP协议——->资源和URL Web基础之使用URL访问资源 RESTful API 设计最佳实践1. 基于业务领域的数据建模,而非基于功能建模。 示例: 取得所有的dog:GET /api/dogs 取得一个特定的dog:GET /api/dogs/{id} 取得特定名字的d...

2018-03-13 12:40:11 280

转载 redis cluster和redis sentinel的一些文章

Redis-Spring Data整合Jedis Redis Sentinel主从高可用方案(附Jedis Sentinel教程) 使用Spring-data-redis操作Redis的Sentinel spring-data-redis官网下载地址 redis菜鸟教程来几篇比较新的: 使用Spring-data-redis操作Redis的Sentinel Spring整合redis

2017-09-28 15:26:45 814 3

转载 HashMap源码分析(一些博客收藏)

这年头,不看看源码都不好意思说自己会java啊,撸起袖子干吧!!转载几篇讲的比较好的博客: HashMap源码分析 HashMap实现原理及源码分析 Java HashMap源代码详解认真读读还是能学到很多的,站在巨人的肩膀上看世界。

2017-09-28 08:48:42 298

转载 hashCode不相等则equals一定不相等,equals相等则hashCode一定相等,覆盖equals时总要覆盖hashCode(记录一下)

http://www.360doc.com/content/15/0519/11/5054188_471654948.shtml再来一篇好文,Java中==和equals的区别,equals和hashCode的区别(1)如果两个对象根据equals()方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode方法都必须产生同样的整数结果。 (2)如果两个对象根据equals()方法比较是

2017-09-26 17:07:33 5119

原创 在Linux上(我的服务器是Ubuntu) 用redis-trib.rb搭建redis集群,并在客户端使用spring-data-redis连接(亲测)

今天好好讲一下redis集群的搭建方法、遇到问题和解决方法。 首先就是下载安装redis,网上流传两种方式: 1.使用下列命令(不推荐使用这种方式): sudo apt-get update sudo apt-get install redis-server 启动 Redis ./redis-server查看 redis 是否启动? ./redis-cli以上命令将打开以下终端:

2017-09-26 12:21:58 2407 4

转载 智力题:烧一根不均匀的绳子,从头烧到尾是要1个小时.现在有若干条材质相同的绳子 问如何用烧绳的方法来计时一个小时15分钟.

答案:把第一根绳子两头同时点燃,同时把第二根绳子点燃一头,当第一根绳子烧完时,时间为半个小时,这时把第二根绳子的另一头也点燃,开始计时,当第二根绳子烧完时,停止计时,那么这段时间就是15分钟。 追问: 1根两头烧,一根一头烧。当两头烧的烧完的时候就是半小时,此时立刻点燃那跟一头烧的另一头,烧完就是45分钟。这根也烧完的时候立刻点燃第三根的两头,烧完就是75分钟。 追答: 嗯,一样的,只要知道

2017-09-22 16:06:39 24569 1

转载 (转存)深入理解Java的接口和抽象类

深入理解Java的接口和抽象类包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:  1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

2017-09-20 19:26:07 183

转载 随便一写

作者:GangsterHyj 链接:https://www.nowcoder.com/discuss/16124 来源:牛客网2017年秋招Java后台的学习与面试经验

2017-09-20 12:11:03 799 3

原创 iText整合图片和自带表格生成PDF文件(很好用的框架)

1.首先是maven的pom.xml配置文件部分代码,这里我直接将所有itext使用的包引入进来: <!-- 设定主仓库,按设定顺序进行查找。 --> <repositories> <repository> <id>jeesite-repos</id> <name>Jeesite Repository</name>

2017-09-20 11:23:15 3327 4

转载 Java设计模式编程中的状态模式和策略模式

Java设计模式编程中的状态模式和策略模式1.策略模式和状态模式的区别1)策略模式封装了一系列的相关的算法,使用客户端可以在运行时通过组合和委托来使用不同的行为,而状态模式使得对象可以在不同的状态下展现出不同的行为。 2)状态模式封装的是对象的状态,而策略模式封装的是一个算法或者策略。由于状态是和对象耦合在一起的,它无法重用,而通过策略或者算法独立于它的上下文,使得它们可以重复使用。

2017-09-19 17:30:01 447 2

原创 前端EChart图表转换为图片保存到服务器路径

前端EChart图表转换为图片保存到服务器路径下前端代码: var topValue=document.getElementsByName("top")[0].value;

2017-09-19 17:06:49 10595 14

转载 解决org.apache.shiro.session.UnknownSessionException: There is no session with id的问题(转)

解决org.apache.shiro.session.UnknownSessionException: There is no session with id的问题

2017-09-19 15:14:08 27685 11

转载 java中的condition

java中的condition Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set(wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。

2017-09-19 14:48:48 558 3

原创 springMVC以附件形式下载PDF文件(解决了下载后文件格式出错无法打开的问题)

springMVC以附件形式下载PDF文件(解决了下载后文件格式出错无法打开的问题) 公司的上网行为管理系统项目有一个功能模块是统计报表,今天在完成这个功能的过程中碰到一个需求:将服务器上的PDF文件以附件的形式下载到本地。 马上想起springMVC提供了文件下载的功能,非常开心。然而,不碰上点bug不足以写博客啊! 先贴完整代码: public ResponseEntity<byte

2017-09-18 10:55:16 4397 6

转载 Java设计模式

转载自http://blog.csdn.net/column/details/java-designpattern-w.htmlMVC\MVP\MVVM模式java单例模式(双重检查加锁):只有在第一次实例化时才启用同步机制创建对象,提高了性能。 注意:为什么这里采用双重检查锁定?之前我们不是已经对 student 对象进行了判空操作了么,这里怎么还要进行第二次判空?其实在理解了多线程执行的过程,

2017-07-24 12:56:41 224

原创 Nginx安装过程中make出错fatal error: pcre.h: No such file or directory

我用pcre2替代了pcre 出现了错误:src/core/ngx_regex.h:15:18: fatal error: pcre.h: No such file or directory #include <pcre.h> ^ compilation terminated. make : *** [objs/src/core/nginx.o] Error 1 make :

2017-07-24 10:31:41 9565 5

转载 Dubbo+zookeeper+(Java)实现分布式系统----zookeeper入门和使用介绍

一.zookeeper分布式服务框架 详情见http://www.cnblogs.com/ggjucheng/p/3370359.html 1.主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集

2017-07-23 22:20:06 4001 3

转载 大型网站架构演变总结

1.应用程序、文件、数据库位于同一服务器–> 2.三者分别位于不同服务器–> 3.优化数据库读写操作:缓存(读操作),消息队列(写操作)–> 4.优化应用程序服务器:负载均衡(如Nginx、硬件负载均衡)–> 5大量“缓存过期重新读取”和“缓存不命中”导致数据库压力问题的优化:读写分离(数据访问层封装数据库的主库(写)和从库(读)).–> 6.优化数据检索缓慢的问题:业务分库(业务分开到多

2017-07-23 15:55:54 342 3

原创 树总结(图片)

对一些树结构进行了整理。

2017-07-22 21:27:12 320

转载 单链表一些总结

转载自http://blog.csdn.net/luckyxiaoqiang/article/details/7393134

2017-07-22 21:24:18 259

转载 单链表倒置

既然是倒置,那我们一定是一定要走一遍单链表的,走单链表有两种形式,递归和循环两种方式,而递归正是压栈和出栈,那么我们就想起来了,这不就是顺序和逆序的关系吗?第二种就是循环,还记得我们曾今学习单链表的时候有一种插法叫做头插法,这种插入复杂度为O(1),不好的地方就是顺序插入的数字,出来的时候却是反的,所以这个不就是可以将原先的链表原地倒置过来吗?一:递归  说到递归,我们脑子里面一定要有一个V型图,还

2017-07-22 20:29:08 669

转载 二叉树一些总结

转载自http://blog.csdn.net/luckyxiaoqiang/article/details/7518888/

2017-07-22 19:22:40 205

转载 Trie树

什么是trie树 1.1.Trie树 (特例结构树) Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的

2017-07-21 10:36:02 322

转载 java中hashcode和equals区别和联系

以下是关于HashCode的官方文档定义:hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。 hashCode 的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次

2017-07-21 09:53:59 670

转载 Java写一个不可变类(如String)

(转载) 本文由 ImportNew - 唐小娟 翻译自 Journaldev。欢迎加入翻译小组。 不可变的对象指的是一旦创建之后,它的状态就不能改变。String类就是个不可变类,它的对象一旦创建之后,值就不能被改变了。阅读更多: 为什么String类是不可变的不可变对象对于缓存是非常好的选择,因为你不需要担心它的值会被更改。不可变类的另外一个好处是它自身是线程安全的,你不需要考虑多线程环境下

2017-07-16 20:39:13 383

原创 Java多线程综述

XMIND文件下载链接:http://www.xmind.net/m/yiFy

2017-07-16 14:52:58 328

转载 深度理解依赖注入(Dependence Injection)(IOC,Inversion of control,控制反转)

今天分享一篇依赖注入的详细介绍博文,看完感觉受益颇多,推荐大家看看。 http://www.cnblogs.com/xingyukun/archive/2007/10/20/931331.html

2017-06-14 15:31:32 372

原创 详解Java注解(下)

上一篇文章我们讲了注解的前两个:1.内置的注解 2.自定义注解 ,再回顾一下知识:*注解是Java的一种机制,允许开发人员向代码的不同部分附加信息,它并不是代码的一部分,因为它不会修改代码在运行时的行为,不会修改代码的语义。它主要用于对方法是否依赖方法、方法是否完整,类是否引用了其他类等给出提示信息帮助你编写正确代码。 分类: 1.内置的注解 2.自定义注解 3.为注解添加的注解*接

2017-05-12 22:55:38 195

原创 详解Java注解(上)

注解是Java的一种机制,允许开发人员向代码的不同部分附加信息,它并不是代码的一部分,因为它不会修改代码在运行时的行为,不会修改代码的语义。它主要用于对方法是否依赖方法、方法是否完整,类是否引用了其他类等给出提示信息帮助你编写正确代码。 分类: 1.内置的注解 2.自定义注解 3.为注解添加的注解一.内置的注解 1.@Deprecated 作用:标记在方法和类前表示它们是已经废弃的方法和

2017-05-12 21:15:09 214

翻译 浅谈JAVA中静态绑定和动态绑定(源自《深入理解Java虚拟机》)

静态绑定:发生在编译期; 主要是方法重载(overload); 在编译阶段,javac编译器会根据参数的静态类型决定使用哪个重载版本。 动态绑定:发生在运行期; 主要是方法重写(override); 在运行阶段,Java虚拟机根据参数的实际类型决定调用哪个重写版本,查找的顺序是从子类->父类,直到找到该方法的声明为止;如果在层次结构的任何类中都找不到该方法,则虚拟机抛出错误信息。(1)静态绑定:

2017-05-08 14:32:21 655

原创 Java中static方法和普通方法的区别

在类中使用static修饰的静态方法会随着类的定义而被分配和装载入内存中;而非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存中才有这个方法的代码段。注意:非静态方法既可以访问静态数据成员 又可以访问非静态数据成员,而静态方法只能访问静态数据成员; 非静态方法既可以访问静态方法又可以访问非静态方法,而静态方法只能访问静态数据方法。 原因:因为

2017-05-08 13:36:47 70260 17

转载 SSH(Struts2+Spring4+Hibernate5)示例

分享一个很适合新手入门的SSH(Struts2+Spring4+Hibernate5)整合示例(小树亲测有效):如何快速开发SSH框架项目的一般步骤: (1)创建Dynamic Web Project并且导入jar包。 (2)我习惯上把classes文件夹由build文件夹内转移到WEB-INF下。在项目上右键Build Path——〉Configure Build Path。设置Default

2017-05-06 17:46:47 804 5

原创 在VM ware虚拟机中的Ubuntu16.0系统中设置共享文件夹发生错误:cannot access 'hgfs': Protocol

今天小树想介绍一个问题:在VM ware虚拟机中的Ubuntu16.0系统中设置共享文件夹的时候碰到的问题:cannot access ‘hgfs’: Protocol error,这个错误好坑爹,好在最终还是找到了原因。解决方法: **关闭(一定要先关闭)**VM上的系统(对Ubuntu进行“虚拟机设置”前必须先关闭Ubuntu,否则会出错),右键点击虚拟机,打开”虚拟机设置(settings)

2017-05-05 12:29:11 5186

原创 在Eclipse中tomcat不部署项目启动正常,部署一个项目启动报异常

console窗口错误输出:严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost

2017-05-03 23:40:53 1324 2

原创 两种方式Java实现二分查找法

小树今天使用递归方法实现了二分查找法,也写了普通的二分查找法,代码如下:import java.util.*;public class BinarySort { public static void main(String[]args){ int A[]={2,32,4,12,22,31,20,45,13,23}; BitSort.bitSort(A);//调

2017-04-29 15:04:08 484

原创 java的BitSet实现位排序算法,复杂度为O(n)

今天小树用Java语言写了个位排序算法,算法复杂度为O(n).import java.util.*;public class BitSort { public static void main(String[]args){ final int size=10; int A[]={23,44,1,2,34,56,11,7,9,25}; bitSo

2017-04-29 14:23:57 1936 2

原创 自己用Java实现一个“栈”类,包括push和pop基本操作

“栈”是一种“后进先出”的方式存放数据的数据结构。 今天小树动手写了一个简单的栈类(存储int值),代码如下: (1)StackOfInteger类:public class StackOfIntegers { private int[]elements; private int elementSize; private final static int DEFAU

2017-04-24 13:37:26 8277

转载 Java中的main()方法详解

转载自http://lavasoft.blog.51cto.com/62575/53263/Java中的main()方法详解 在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法

2017-04-23 14:43:12 916

原创 Java中String、StringBuilder和StringBuffer

三者都是处理字符串的方案,不过StringBuilder和StringBuffer可以添加、插入和追加新的内容,而String对象一旦创建,它的值也就确定了。StringBuffer和StringBuilder相比,除了StringBuffer中修改缓冲区的方法是同步的之外其他基本相似,在程序中一般都可以用StringBuffer代替StringBuilder。StringBuffer适用

2017-04-23 13:18:01 269

深入分析Java Web技术内幕 修订版

本书围绕Java Web相关技术从前端知识、Java技术和Java服务端技术三方面进行全面深入的阐述。

2018-08-28

SSH(Struts2+Spring4+Hibernate5)整合Demo源码实例下载

这是在Eclipse下的Java Web项目(J2EE),运行在Apache Tomcat9.0服务器上,jdk是1.8版本。

2017-05-06

计算机程序设计艺术 第4卷 1

算法大师Donald Knuth(高德纳)的经典著作 ,学算法必学的书籍

2016-05-26

计算机程序设计艺术

算法大师Donald Knuth(高德纳)的经典著作 ,学算法必学的书籍

2016-05-26

计算机程序设计艺术 第3卷 中文版

算法大师Donald Knuth(高德纳)的经典著作 ,学算法必学的书籍

2016-05-26

计算机程序设计艺术 第2卷 中文版

算法大师Donald Knuth(高德纳)的经典著作 ,学算法必学的书籍

2016-05-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除