- 博客(202)
- 资源 (26)
- 收藏
- 关注

原创 java设计模式学习汇总
1.什么是设计模式设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该
2017-03-07 10:33:50
2802

原创 java多线程学习之死锁的模拟和避免
1.死锁死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。Java 死锁产生的四个必要条件: 1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。 3、请求和保持,即当资
2017-03-03 16:45:01
933
1

转载 Lock和synchronized之间的那点事
一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况: 1)获取锁
2017-03-03 14:29:33
584

原创 架构之路之spring集成redis缓存
1.前言 上篇文章,我们使用了spring自带的缓存机制cache,简单便捷,但同时又存在一定局限性,比如缓存大小扩展,过期时间设置,分布式缓存共享等,这篇文章我们就集成redis,使用redis来做spring的缓存。2.redis特点和优势2.1 redis的特点:(1)Redis数据库完全在内存中,使用磁盘仅用于持久性。(2)相比许多键值数据存储,Redis拥有一
2017-02-28 18:17:17
822

原创 架构之路之spring缓存cache
1.介绍Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果。Spring 的缓存技术还具备相当的灵活性,不仅能够使用 SpEL(Sp
2017-02-28 17:21:08
1809

原创 架构之路之spring+aop的配置
1.介绍 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提
2017-02-27 11:12:29
1116

原创 架构之路之spring+shiro的集成
1.前言1.1 shiro介绍Authentication:身份认证/登录,验证用户是不是拥有相应的身份;Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;Session Manager:会话管理,即用户登录后就是一次会话,在
2017-02-21 15:50:27
4808

原创 架构之路之spring+redis的集成
1.前言 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。我们都知道,在日常的应用中,数据库瓶颈是最容易出现的。数据量太大和频繁的查询,由于磁盘IO性能的局限性,导致项目的性能越来越低。这时候,基于内存的缓存框架,就能解决我们很多问题。例如Memcache,Redis等。将一些频繁使用的数据放
2017-02-16 16:45:10
35631
1

原创 架构之路之spring+springmvc+maven+mongodb的搭建
1.前言最近项目开发使用到了spring+springmvc+maven+mongodb,项目中的框架是用springboot进项开发的,对于我们中级开发人员来说,有利有弊,好处呢是springboot开发减少了很多配置文件,同时也使开发更加规范快捷,但是,不好的地方就是长此以往,我们就在码农的道路上越走越远,所以,在工作之余就自己亲手由零一点一点搭建了这个框架,当然框架暂时只包含基本的东西,
2017-02-14 16:37:24
11814
1
原创 Java 3DES加密/解密demo
1.流程DES算法提供CBC, OFB, CFB, ECB四种模式,MAC是基于ECB实现的。【Java使用3DES加密解密的流程】 ①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象 SecretKey deskey = new SecretKeySpec(keyBytes, Algorithm); ②根
2017-11-23 17:40:53
22033
5
原创 mysql中文乱码的解决方法
mysql编码格式查询和修改mysql> show variables like 'char%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+-------
2017-07-12 10:41:41
1395
原创 HttpsURLConnection上传文件流
项目需要对接外部接口,将图片文件流发送到外部接口,下面代码就是HttpsURLConnection如何上传文件流:/** * HttpsURLConnection上传文件流 * * @param args * @throws Exception */ public static void main(String[] args) throws
2017-06-26 10:29:25
4939
原创 完美解决 ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)
今天操作linux服务器,操作mysql数据库时候,按照正常流程, 之前就是这么操作的,今天怎么报错了呢? 然后上网百度,找到方法:# /etc/init.d/MySQL stop# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &# mysql -u root mysql刚执行第一步就报错: 可能是有
2017-06-07 19:17:03
9314
原创 java的事件机制之程序员的一天
1.介绍 java事件机制包括三个部分:事件、事件监听器、事件源。 下面我们通过一个例子来学习,比如程序员的工作,可怜的程序员会受到各方的任务,一会项目经理让去会议室开会,一会测试人眼提出一个新bug要修复,一会呢项目组长又给分配新的开发任务,等等,忙的焦头烂额。。。 2.事件 一般继承自java.util.EventObject类,封装了事件源对象及跟事件相关的信息。package com
2017-04-21 14:54:57
1975
原创 mac使用ngrok将本地Web服务映射到外网
1.为什么使用 web开发中,难免会遇到在某些情况下,我们必须借助外网才能调用某个API,然而,如果我们按照下面的方式来做,显得就很繁琐:a.在一个具有外网可访问的服务器上搭建一个web环境b.上传代码,调试接口c.发现问题,本地修改d.再次上传,周而复始,直至bug修复,然后发布到正式测试环境这里所说的也就是可能为了一个小功能而做的事情,比如我们最常用的公众号开发.。 2.下载使用
2017-04-01 14:14:52
18890
2
原创 java多线程学习之线程池
1.介绍多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间,当T1 + T3 远大于 T2,则可以采用线程池,可以提高服务器性能。 在Java 5之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor框架便
2017-03-24 15:03:12
609
原创 Java面试宝典系列之基础排序算法
1.介绍排序是一个在编程中间是非常基础的和重要的,网上也有很多有关排序算法的文章,再次我也是总结学习别人的知识,将别人的知识转为自己的知识,因此做此笔记,以便更好地掌握java常见排序算法。2.插入算法2.1 基本思想 每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。 2.2 实例 2.3 算法实现public
2017-03-20 17:44:38
772
原创 elasticsearch rest API初体验
1.介绍elasticsearch使用 JSON (或称作JavaScript Object Notation ) 作为文档序列化的格式。JSON 已经被大多数语言支持,也成为 NoSQL 领域的一个标准格式。它简单、简洁、易于阅读。 为了能让你感受一下 Elasticsearch 能做什么以及它是有多么的易用,我们会先为你简单展示一下,其中包括了基本的 创建索引,搜索 以及 聚合。2.rest
2017-03-15 17:45:48
1579
原创 mac安装elasticsearch详细步骤
1.下载官网下载地址 这里写链接内容 最新的版本已经是5.2.2,害怕最新的有兼容问题,因此选择下载的版本是2.4.3。 (区别一下不同系统版本问题,一般window下载zip,unix下载tar.dz,不过我mac下载的zip版本,测试是可以用的,可能是mac系统zip和tar都支持吧)2.运行下载以后解压,进入elasticsearch-2.4.3文件夹, cd /Users/jikuka
2017-03-15 11:28:21
23652
转载 UML简单入门
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。1.泛化(Generalization)【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种.【箭头指向】:带三角箭头的实线
2017-03-13 18:03:03
489
原创 java设计模式学习之观察者模式
1.介绍 观察者模式(Observer Pattern)是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。属于类和类之间的关系,不涉及到继承,学习设计模式的时候应该记得归纳比较。 在实际生活中,比如我们乘坐卧铺,上车之后负责该车间的乘务人员会将你的卧铺票兑换成对应床铺的卡片,在快下车的时候,乘务人员会根据自己小本本上的卧铺车票过来通知你要下
2017-03-10 11:02:28
540
原创 java设计模式学习之策略模式
1.介绍 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。比如我们在计算两个数字的时候,会有数字相加,数字相减,数字相乘,数字相除几种方法,一般做法,我们会用一个 if…else 来判断,但是这样有一个不好的地方就是代码复杂化,不利于维护,这时候可以使用策略模式。 2.代码实例 未使用策略模式的代码写法:public i
2017-03-09 17:37:35
564
原创 java设计模式学习之适配器模式
1.介绍适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。实际生活中,比如有一个二孔插座,我现在需要用洗衣机去洗衣服,但是洗衣机插头需要一个三孔插座,二孔插座肯定不适合,这个时候我又不想把原来墙上的二孔插座砸了,换成三孔插座,怎么办了这时候我们去超市买一个插孔转换器就行了,这个插
2017-03-09 16:41:02
612
原创 java设计模式学习之代理模式
1.介绍代理模式(Proxy Pattern)是指一个类代表另一个类的功能,这种类型的设计模式属于结构型模式。核心作用就是通过代理,控制对对象的访问。比如现实生活中,我们买卖房子,那么我们会找中介,我要卖房子,但是我们没有时间去卖,我主动交给中介,中介会帮我发布,会帮我找买家,带买家看房,最后我只要收到钱就行了。 在程序中也是如此,通过代理,可以详细控制访问某个或者某类对象的方法,在调用这个方法前
2017-03-09 14:14:19
477
原创 java设计模式学习之装饰者模式
1.介绍装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 假如当我们想给一个类扩展新的方法的时候,常用的做法是新建一个子类,在子类中使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。当我们在不想增加很多子类的情况下使用装饰器模式扩展类,相比生成子类更为
2017-03-08 17:14:14
602
原创 java设计模式学习之单例模式
1.介绍单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处: 1)、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。 2)、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。 3)、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一
2017-03-08 15:08:55
535
原创 java设计模式学习之工厂模式和抽象工厂模式
1.工厂模式 1.1 介绍 1.1.1 概念 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 1.1.2 生活化 比如我们去超市买东西,作为顾客,我们不需要关注商品从何而来,只要是超市上架
2017-03-08 11:33:50
994
原创 java多线程之火车售票系统模拟
1.前言为了学习多线程共享与通信,我们模拟一个火车售票系统,假设有10张火车票,三个窗口(也就是三个线程)同时进项售票。2.非同步代码package com.tl.skyLine.thread;/** * Created by tl on 17/3/6. */public class SellTicket { public static void main(Stri
2017-03-06 14:58:11
18236
3
原创 java并发学习之BlockingQueue实现生产者消费者
1.介绍 阻塞队列 (BlockingQueue)是Java util.concurrent包下重要的数据结构,BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。JDK7提供
2017-03-03 11:05:57
9539
1
原创 java多线程面试汇总
1.线程是什么线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。Java中,每个线程都有一个调用栈,即使不在程序中创建任何新的线程,线程也在后台运行着。一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。一旦创建一个新的线程,就产生一个新的调用栈。线程总体分两类:用户线程和守候线程。当所有用户线程
2017-03-02 17:57:16
643
原创 java模拟多线程socket通信
1.socket和serverSocket通信socket和serverSocket通信简单介绍如下,注意客户端与服务器端是怎么交换数据的:2.服务器端代码package com.tl.skyLine.socket;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.
2017-03-01 16:28:03
4328
1
转载 Spring与SpringMVC的容器关系分析
Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而实际使用时,由于有了强大的注解功能,很多基于XML的配置方式已经被替代,但是在实际项目中,同时配置Spring和SpringMVC时会出现一些奇怪的异常,比如Bean被多次加载,多次实例化,或者依赖注入时,Bean不能被自动注入,但是明明你已经将该Bean注册了的。找原因还是要看问题的根源,我们从容
2017-02-21 17:17:49
2189
1
原创 java操作excel之jxls导出excel模板数据
1.介绍Jxls是一个小而易用的Java库, 它用于根据excel模板文件生成对应的excel数据文件.使用Jxls只需要几行代码就可以建立非常复杂的excel报表, 我们需要做的工作室建立excel模板文件, 完成所需要的格式、公式、宏等,然后写几行代码调用Jxls引擎解析excel模板文件并将数据作为参数输入到报表文件中.2.语法这个JEXL语法和JSTL语
2017-02-08 16:21:01
9565
原创 java操作excel之poi读取excel
1.介绍Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。2.依赖首先引入maven依赖: org.apache.poi poi 3.14 3.工具类ExcelUtilspackag
2017-02-08 16:03:47
3567
原创 mac环境安装启动tomcat8
1.下载tomcat8官网下载地址:http://tomcat.apache.org/download-80.cgi下载之后,将下载的文件解压,复制到 /Library/Tomcat目录下:命令:cp -r /Users/jikukalun/Downloads/apache-tomcat-8.0.39/ /Library/Tomcat/tomcat8然后进入/Library
2017-01-23 10:38:03
14109
1
原创 java面试知识点汇总(想拿高工资的快来看看)
读大学时,有位老教授对我们做过一个测试。 老教授问:“如果你去山上砍树,正好面前有两棵树,一棵粗,另一棵较细,你会砍哪一棵?” 问题一出,大家都说:“当然砍那棵粗的了!” 老教授一笑,说:“那棵粗的不过是一棵普通的杨树,而那棵细的却是红松,现在你们会砍哪一棵?” 我们一想,红松比较珍贵,就说:“当然砍红松了,杨树又不值钱!” 老教授带着不变的微笑看
2017-01-19 17:07:35
1140
原创 mysql的datetime类型在java中的存取
Mysql中的DATE和DATETIME有什么区别? DATETIME类型可用于需要同时包含日期和时间信息的值。MySQL 以 'YYYY-MM-DD HH:MM:SS'格式检索与显示 DATETIME 类型。支持的范围是'1000-01-0100:00:00' 到 '9999-12-3123:59:59'。(“支持”的含义是,尽管更早的值可能工作,但不能保证他们均可以
2017-01-19 15:09:10
27925
2
原创 Spring Data 系列之JPA
一.介绍:Spring Data :提供了一整套数据访问层(DAO)的解决方案,致力于减少数据访问层(DAO)的开发量。它使用一个叫作Repository的接口类为基础,它被定义为访问底层数据模型的超级接口。而对于某种具体的数据访问操作,则在其子接口中定义。public interface Repository { } 所有继承这个接口的interface都被spring所管理
2016-12-13 17:27:14
754
转载 java并发之Lock与synchronized的区别
两者在锁的相关概念上区别:1.可重入锁 如果锁具备可重入性,则称作为可重入锁。像synchronized和ReentrantLock都是可重入锁,可重入性在我看来实际上表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。举个简单的例子,当一个线程执行到某个synchronized方法时,比如说method1,而在method1中会调用另外一个synchronized方法
2016-12-09 18:03:46
4004
bootstrap时间控件
2015-11-18
ajaxfileupload.js
2015-11-16
MyBatis3.2.3帮助文档(中文版)CHM 下载
2015-11-05
Xftp安装exe
2015-10-20
拉钩网前台代码
2015-09-07
LICEcap_ha,专业制作gif工具
2015-09-07
eclispe反编译插件和工具
2015-09-07
JForum_SSO_-_JForum单点登陆原理与配置
2015-07-28
Spring+Mybatis+MySql+Maven项目源码
2015-06-29
MyEclipse2014 破解工具
2015-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人