
♣【Java菜鸟成长日记】
杨士超
这个作者很懒,什么都没留下…
展开
-
Spring 的AOP-AspectJ静态实现
在spring框架越来越风靡的时候,大家是否考虑过为什么spring如此受欢迎。spring的核心功能:IOC + AOP +事务管理;那么今天小编就带大家一起来深入了解spring的AOP:✪ 为什么需要AOP 在传统的OOP编程中以对象为核心,整个软件系统由一系列相互依赖的对象组成,而这些对象将被抽象成一个个类,并允许使用类的继承来管理类与类之间一般到特殊的关系。随着软件规原创 2016-06-20 17:34:52 · 2088 阅读 · 3 评论 -
细说java动态代理和cglib的动态代理
提到代理,想必大家对设计模式中的静态代理和动态代理都比较熟悉,小编之前在博客中对动态和静态代理进行了对比,这篇博文就只探讨java动态代理和cglib动态代理之间的区别;♚ 静态代理的温习 在我们使用静态代理的时候,每一个代理类只能为一个接口提供服务,这这样一来在程序开发中会产生过多的代理,而且所有的代理操作除了调用的方法不一样之外,其他的操作都是相同的,这样就会造成过多的原创 2016-06-18 16:36:42 · 3435 阅读 · 5 评论 -
笨鸟先飞之Java--MySql中文数据乱码为哪般???
看问题要全面,在解决问题的过程中要学者全面分析和思考问题,不要犯”头痛医头脚痛医脚“的错误!!原创 2015-08-27 20:12:00 · 1367 阅读 · 35 评论 -
连接Oracle中的那些事儿
在项目开发中,当我们的数据量较大时我们会选择使用Oracle数据库。但在使用过程中总会遇见这样和那样的问题,下面就来介绍一下最典型的ORA-12541的系列错误;1.使用plsql或者Navicat连接Oracle时出现如下错误: 这是没有找到监听器导致的,所以我们需要在本地的Oracle服务中,将监听服务打开,即:这样我们就可以在本地服务开启之后实现成功的连接!原创 2015-10-14 10:38:09 · 686 阅读 · 16 评论 -
Oracle中的自治事务(一)
♪ 事务 数据库事务是一种单元操作,要么是全部操作都成功,要么全部失败。在Oracle中,一个事务是从执行第一个数据管理语言(DML)语句开始,直到执行一个COMMIT语句,提交保存这个事务;或者执行一个ROLLBACK语句,放弃此次操作结束。♪ 自治事务的出现 1)事务的“要么全部完成,要么什么都没完成”的本性会使将错误信息记入数据库表中变得很困难,因原创 2016-02-23 11:11:53 · 5148 阅读 · 10 评论 -
Oracle中的自治事务(二)
上一篇博客中(http://blog.youkuaiyun.com/ysc1123/article/details/50721592)我们对Oracle的情况进行了基本了解,今天小编就用实例说话,让大家对自治事务的理解更加深刻: 触发无法包含COMMIT语句,除非有PRAGMAAUTONOMOUS_TRANSACTION标记。但是,只有触发中的语句才能被提交,主事务则不行。 现在我原创 2016-02-29 09:48:22 · 1394 阅读 · 5 评论 -
带你走进mybatis--快速入门
在SSH框架盛行的时代,ORM和持久层框架都不断响彻在耳边,今天小编就带领大家一起来认识另一种持久层框架;一、基本概况MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO对象映射成数据库中的记录。框架图如下;二、入门教程(使用mysql的数据库)1. 搭建开发环境:原创 2016-03-03 10:37:31 · 9899 阅读 · 6 评论 -
细说mybatis的缓存机制
和其他持久层框架一样,mybatis也提供了对缓存的支持--一级缓存和二级缓存;一、缓存介绍一级缓存:基于PerpetualCache的HashMap的本地缓存,一级缓存的作用域为sqlSession,当sqlSession被flush或close之后,当前sqlSession中的所有缓存都将被清空;二级缓存:和一级缓存的机制相同,默认也是采用PerpetualCache的HashMa原创 2016-03-07 17:00:06 · 2871 阅读 · 4 评论 -
hibernate与mybatis的比较
现在IT行业SSH的三大框架的魄力越来越大,而如何选择适合自己程序的持久层确实需要谨慎思考!下面小编就带着大家一起来明确持久层的选择问题:原创 2016-03-14 14:33:32 · 2564 阅读 · 35 评论 -
Shiro学习之身份验证
小编在shiro 学习第一步中写了对shiro的架构原理,组件的基本认识进行了总结和说明,这篇博客就带着大家实现shiro学习中的第一个例子--身份认证:➷ 环境搭建:1.maven的配置打开eclipse,根据路径windows-->preference -->Maven-->User settings 打开下图中的界面:在图中的红色框内显示的配置文件中配置maven中央原创 2016-04-24 15:26:29 · 795 阅读 · 11 评论 -
spring的IOC容器
提到spring,我们总会想到它的三大核心功能:spring的事务+AOP + IOC;小编已经在前面的博客陆续介绍了事务和AOP ,在这里小编将与大家一起分享spring IOC上的理解和认识: 提到IOC,我们会想到依赖反转,依赖注入两个名词,那么什么是反转,用一句经典的话来说:Don't call us ,we will call you ! 当我们需要依赖某个类或原创 2016-06-21 11:16:01 · 889 阅读 · 3 评论 -
Spring 的AOP--spring框架动态实现AOP
spring中AOP代理由spring的IOC容器负责生成,管理,其依赖管理也由IOC容器负责管理,因此,AOP代理可以直接使用容器总的其他bean实例作为目标,这种管理可由IOC容器的依赖注入提供。spring默认使用java动态代理来创建AOP 代理,这样就可以为任何接口实例创建代理了。 spring也可以使用cglib的动态代理,关于jdk动态代理和cglib动态代原创 2016-06-21 10:27:01 · 1031 阅读 · 6 评论 -
浅析javaI/O工作机制
在这个海量数据的时代,数据在网络中不断的流向其他点,而这个数据流动的过程中都涉及I/O问题,所以我们可以理解很多web应用系统的瓶颈都与I/O有关。所以为了一定程度地避免I/O机制带来的性能问题,我们就必须对它熟悉;在程序中,都是通过流的形式来进行输入和输出操作的,所以我们先来了解这个流: 我们可以把这个“流”用水流的概念来理解,就像自来水厂和家庭之间的水是通过阀门来控制的,阀门打开原创 2016-12-22 18:06:57 · 869 阅读 · 1 评论 -
从@Transactional注解看Spring事务
在使用Spring事务时,我们只需在某方法上使用@Transactional注解简单的标注一下,便可以实现很强大的事务控制功能,这其中的缘由,看小编娓娓道来; 首先需要明确:在spring事务的切面中,实际上是一个Around切面,在注解的业务方法前后都可以被调用,而实际上实现切面操作的是TransactionInterceptor类;[本篇我们先从实例代码...原创 2019-05-07 12:02:30 · 553 阅读 · 2 评论 -
@PostConstruct、构造函数和@AutoWired的执行顺序
很久之前使用了@PostConstruct注解,用来注入一些程序中需要的服务。时间久了,迷迷糊糊的不知道当时的使用场景是什么了。最近又遇到一个场景,赶紧整理一下。填坑前奏:在维护一个旧程序时,在某个类中,前一任攻城狮 写了一段这样的代码:public class AService { static Map<String, String> brandType = ne...原创 2018-12-10 16:24:36 · 5506 阅读 · 3 评论 -
单例模式双重校验的再理解
提起单例模式,作为攻城狮的你我都不会感觉到陌生,而为了确保在程序中的线程安全,我们常常会倾向于双重校验和静态类两种方式。而且众所周知,在双重校验的方式中,我们发现了关键字volatile的身影,而且一直以来小编只是知道 该关键字可以保证操作之间的可见性。但是只知其一啊,今天突然明白这其中的道理:public class Singleton { private volatile st原创 2017-09-06 16:33:43 · 3248 阅读 · 7 评论 -
透视Java8中的hashMap
在Java集合中,大家对hashMap的印象应该比较深刻吧?我们都知道,在2014年的3月份Java8就已经面世,但是都已经过去这么久了,不知道正在看此文的你是否对Java8相较于Java7的变化点有所了解?? 我们都知道,截止到Java 7,hashMap的结构一直比较简单,采用经典的数组+链表的形式来完成数据的存储和数据读取,当向hashMap中放置元素产生冲突之后,则采用链原创 2017-09-13 14:30:10 · 644 阅读 · 3 评论 -
解读一致性hash算法
熟悉hash算法的你,有没有对一致性hash算法也比较熟悉? 一致性hash算法的主要应用场景是在分布式的算法中,比如在一个缓存的分布式系统中,我们可以使用一致性hash算法实现间接的人为控制对每台服务器的缓存命中情况。一致性hash算法,可以理解成为了缓存系统在提供缓存服务过程中,更好的实现高可用,即在对服务器节点进行变更时,最大程度的减少对当前系统的影响。 下面一起来看一原创 2017-07-20 15:53:35 · 1032 阅读 · 3 评论 -
hashMap原理解析
我们都知道,在hashMap中不论是计算key的hashcode还是为了使得hashMap中元素分布更均匀的场景,hash算法的能力都不可低估。今天,小编就和大家一起来分享在hashMap中hash算法的研究: 在述说原理之前,我们先来看一个hash算法在生活中的例子: 在某农场A,主人养了50头小猪,由于在生长期,主人需要定期地根据每头小猪的体重调整它们的“宿原创 2017-07-20 11:22:46 · 791 阅读 · 1 评论 -
mybatis连接MySQL如何支持批量sql
最近在业务中涉及使用批量更新的方式将mysql数据库中的数据进行更新: update PayLimit set SingleLimit = #{i.singleLimit}, Daylimit = #{i.dayLimit} where Id = #{i.Id} 看似很平静的一个sql语句,但是一直在提示:com.mysql.jdbc.excep原创 2017-06-16 11:25:51 · 1305 阅读 · 1 评论 -
咱们一起来谈谈,redis为什么快?
在程序媛的生涯中,设置缓存会想起它,控制并发会想到它,做一些压缩存储依旧会想到它,一直停留在知道的起点上,但是没有深入的去挖掘和总结它这么受欢迎的原因。近期天时地利人和,整理了一下它的点点滴滴。☁ 和Memcached一较高低 记得前几年,项目中比较常用的还是Memcached,存储图像、视频,搭建集群也是样样都行。但是随着redis的发展,redis慢慢的融入到项目中,开始占有原创 2017-03-21 14:19:57 · 10040 阅读 · 5 评论 -
日期格式化的那些事儿
在程序中我们经常会将某一个时间戳存储到数据库,或者将数据库中的时间戳取出格式化成某种显示格式,或者是计算两个日期之间的相隔天数……下面小编就将最近整理的关于日期格式化小插曲分享给大家; 小编经常用到的主要是Date(java.util.Date)和DateTime(org.joda.time.DateTime)两种:1.获取当前时间戳 Date now =原创 2017-02-22 10:56:41 · 985 阅读 · 3 评论 -
redis的分布式锁
我们都知道在现在这个互联网的产品中,总会有需要锁处理的场景:比如秒杀。但是大部分的应用都是基于数据库来实现,比如添加行锁,表锁。但是我们不得不考虑,当锁定的该表拿到锁之后,在操作数据库(增,删,改)的操作中,事务发生回滚或者错误,那么在释放锁之前,可能就会发生死锁,这样对于该表或者该库的请求产生堆积,越来越多,轻则数据库压力变大,产生死锁,重则数据库崩溃; 所以在上面的场景中我们需要原创 2017-01-18 11:04:11 · 637 阅读 · 3 评论 -
shiro学习第一步
➷ 初来乍到 shiro是Java的一个安全框架,如果在实际工作中我们并不太需要特别复杂的东西,那么我们可以选用shiro,而不用spring Security;Shiro 可以非常容易的开发出实用的应用,可以帮助我们完成认证、授权、加密、回话管理、与Web集成,缓存等;基本功能点如下: Authentication:身份认证/登录,验证用户是不是拥有相应的身原创 2016-04-22 11:35:21 · 3891 阅读 · 10 评论 -
趣谈Java变量的可见性问题
了解过多线程的我们,对synchorized,sleep和valatile都比较了解,但是当这三个名词和“Java变量得可见性”的话题联系在一起不知道大家是否还可以保持大脑清晰???最近看到一个关于Java变量可见性的问题,感觉比较新鲜就查了一些资料,下面分享给大家:首先给大家看一段关于多线程的执行代码:package com.test;import java.util.concur原创 2016-05-06 20:59:06 · 2365 阅读 · 5 评论 -
北京偶遇的技术
回头看看,从北京回来也已经有足足一个月了,这半年的时光直在脑海中打转。每每想起在北京生活的半年,心中满满的都是欢喜。从去年9月22欢喜的踏上廊坊到北京早上最早的那趟列车时,注定接下来的半年生活一定是五彩缤纷的,也一定是伴随成长和适应的。 9月24日早上我们如约到达金融街公司门口,透过门上的玻璃,办公室里简约的布置直接映入眼帘,那一刻心中除了欢喜,还是欢喜,满脑子都是“我终于来原创 2016-04-26 15:48:36 · 6408 阅读 · 37 评论 -
类型java.lang.charsequence不能解决。
这两天在做drp项目时,遇到这样的一个错误: “ The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files”,一看全是英文我就脑袋大,不过还好,我庆幸我生活在网络时代,赶紧上网查资料: 这是一个"类型java.lang.charsequ原创 2015-04-30 11:00:45 · 23234 阅读 · 19 评论 -
JAVA中的String三兄弟
在编写Java程序时,我们经常需要对某些字符串进行拼接,之前我们经常用“+”来拼接,但在Java中如果我们直接使用这种拼接方法,会建立很多String型的对象,这样一来,系统就会因为过多的String型对象而对服务器对象和系统性能造成很大的影响。所以,Java中有一种更好的拼接字符串的方法:使用StringBuffer或StringBuilder。一、String和StringBuffer原创 2015-05-05 21:24:50 · 1302 阅读 · 20 评论 -
严重:StandardServer.await:create[localhost 8005]:java.net.BindException
在使用tomcat服务器运行程序时,我们可能会遇到这样的问题: 由上面的信息可以发现,该问题是由于8005端口号已经被占用,所以我们需要对这样的端口号进行设置,因而找到tomcat的安装位置中的conf文件夹中的server.xml 文件中的端口号换掉: 找到红色框内的代码,将端口号改成别的未使用的(比如8006):原创 2015-05-01 21:07:56 · 12630 阅读 · 11 评论 -
Oracle的那些事儿
最近做drp项目时,可被oracle折腾惨了,第一遍安装的坎坷注定之后的磨练,现在我就把这些血泪史都整理到这里,希望能帮大家在oracle的连接上少一些弯路,少撞几次南墙。 § 数据库连接: 在连接这个问题上,我们使用xml文件将MyEclipse和Oracle 11g连接到一起,让我们的drp项目可以获取和操作oracle中的数据,在src的文件夹下新建一个xml文件,原创 2015-05-10 11:36:42 · 1420 阅读 · 38 评论 -
XML学习总结
之前简单地对比过HTML和XML之间的区别和联系(整理破碎记忆--XML和HTML),这里对XML做一个总结。 我们都知道,XML是一种可扩展的标记语言,那么它的可扩展如何体现,相对谁而言,甚至是出现XML可以帮人们干什么?下面就一一道来。 ♬ What XML的可扩展性是相对于HTML而言的,而它的可扩展恰好体现在用户可以自行定义标签原创 2015-04-13 21:20:28 · 1068 阅读 · 16 评论 -
jsp、servlet一家亲
上个月写了《教你servlet入门》,今天来探究一下关于jsp的那些故事。§ 回顾 1. 什么是Web应用程序? 2. 什么是Servlet,和一般Java程序有什么区别? 3. 什么是JSP,和Java是什么关系? 4. JSP和Servlet有哪些异同点? 5. JSP和Servlet的主要用途?§ 一家亲 JSP原创 2015-04-07 15:27:04 · 1594 阅读 · 16 评论 -
教你Servlet入门
Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础。这篇博客主要帮助大家了解一个 Web 工程在 Servlet 容器中是如何启动的? Servlet 容器如何解析你在 web.xml 中定义的 Servlet ?用户的请求是如何被分配给指定的 Servlet 的? Servlet 容器如何管理 Servlet 生命周期?原创 2015-03-24 14:44:12 · 1775 阅读 · 13 评论 -
巧用委托
在开发过程中我们总会听到“委托”这个东西,尤其是在这次的高校云平台中。那么我们今天就来一探究竟: 从字面上来讲,委托有代理的意思:A委托B去买东西,那么B就是A的代理去执行“买东西”这个行为。但是从程序上来讲,委托是一种引用方法的类型,委托方法可以像其他任何方法一样。简单地说就是,委托是一种数据类型,它的变量可以引用到某一个符合要求的方法上,通过委托可以间接地调用该方法。原创 2015-03-07 18:01:44 · 1253 阅读 · 12 评论 -
html旅程之输入域控件
在html的学习中,我们会遇到很多控件的学习。其中有一类叫做输入域的控件,可以承载用户输入的数据,也可以通过html改变数据的传递方式,或者它本身的样式。 我们可以根据性质将该类控件分为:文本型、按钮型、选择型三个小类: 其中每一种控件与VB控件的对应关系表示为: 一、文本型 这种类型的控件都是以文本的形式呈现,可以直接将用户输入原创 2015-02-24 15:03:34 · 1852 阅读 · 12 评论 -
J2ee的13种规范
最近学到了J2ee,提到这个项目的学习就不得不提到它的13个规范: J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述原创 2014-12-31 20:38:27 · 1907 阅读 · 17 评论 -
神秘的EJB
只要学过J2ee,就一定会接触到EJB,它作为JavaEE服务端的组件模型,设计的目标和核心都是部署分布式系统。1.概念剖析: EJB(Enterprise Java Beans)是j2ee的一部分,被称为Java企业Bean,是Java的核心代码,主要有Session Bean(会话Bean),Entity Bean(实体bean)和MessageDriven Bean(消息驱原创 2015-01-10 13:56:48 · 1467 阅读 · 13 评论 -
java.lang.NullPointerException错误及其处理方式
在java项目中,我们经常会遇到java.lang.NullPointerException错误,也就是俗称的“空指针异常”。这里我就介绍一下有关的解决方案:首先从整体上,这种问题分为两种:原创 2015-05-31 16:33:48 · 28176 阅读 · 22 评论 -
Tomcat启动时加载某个servlet
当我们做一个java项目时,有几个功能都需要加载servlet或者实现某个共同的方法,虽然我们一味地在每一个功能中依次加载也不是不可以,但是当某个servlet 或者方法被频繁地加载和应用,我们将面向对象的思想置于不顾却也真的说不过去。 所以,对于这类的servlet我们需要在Tomcat启动时直接加载,比如初始化信息、读取配置文件等需求时,我们就可以通过web.xml的配置文件对来实原创 2015-06-29 16:03:12 · 5081 阅读 · 19 评论 -
drp错误集锦---“Cannot return from outside a function or method”
好久都不动的项目,今天打开项目突然是红色感叹号,具体错误表现为: 也就是说,现在MyEclipse已经不识别在JSP页面中使用的return方法了(而且不止一处这样的警告),那怎么办?????顿时闹钟一片混乱,心想好不容装完系统,怎么项目还闹脾气呢。原创 2015-06-12 21:29:13 · 1181 阅读 · 18 评论