![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 76
king_eagle2015
刚刚起航的向往计算机领域的后备力量
展开
-
ThreadPoolExecutor 源码解读
线程池大家都不陌生,但每次谈起又有陌生的感觉,归根结底是因为对它了解的不够深入,所以本文希望通过源码阅读的方式带给大家更深入的理解。原创 2022-03-10 15:08:06 · 534 阅读 · 0 评论 -
Hibernate--关联映射
hibernate是持久层ORM框架,关系映射解决了对象型实体与关系型数据库不相匹配的问题,它是Hibernate的核心内容,在实际操作中我们必须要根据数据表的相互关系,根据业务需求,建立相互适应的关系映射,这样才能提高开发效率和系统运行效率。原创 2017-01-17 11:14:11 · 571 阅读 · 24 评论 -
Hibernate-总结
Hibernate作为轻量级的持久层框架,大大简化了编程人员操作步骤,提高了开发效率,使得开发更具对象化,增强了可移植性,实现了持久化(JPA)规范。 我们先来看一下框架结构: 由Hibernate的体系结构我们可以看出,Hibernate通过session实现持久化状态与瞬时状态之间相互转化;SessionFa原创 2017-01-18 22:28:43 · 532 阅读 · 22 评论 -
java基础--IO
数据在计算机内存储转换必须要用到IO操作,了解IO操作机制,对我们编码时针对文件操作,提高系统性能,磁盘存储,数据网络传输等都有很大的帮助。 (1) java的IO流的概念是数据从源头到达目的存储地的有序数列,正是这些输入输出流实现了java的输入输出。 分类:我们最熟悉的要数字节流和字符流了,按照计算机的二进制存储规则,字节流是操作8位二进制位,字符原创 2017-04-30 20:59:02 · 682 阅读 · 15 评论 -
小小加密应用
日前,大家在公司讨论一个很激烈的问题,原来有个小黑客在网上通过模拟ip和post请求,不断访问发送短信的接口,要知道,发送短信这个功能是接入第三方平台来完成的!每一条短信的发送就代表着流量和短信条数的流失,造成金钱的浪费。经过两天的试验,大神简单设计了一个算法,暂时解决了该问题,也跟大神学习一下: 首先发送短信的功能是用阿里云的服务实现的,它首先提供了一个风险拦截系统!也做原创 2017-05-15 20:24:06 · 917 阅读 · 11 评论 -
Spring-AOP概论
AOP是OOP的一种实现,将业务代码进行隔离,降低逻辑代码之间的耦合度,提高代码复用率,经常用在日志处理,权限控制,事务处理,Struts2的过滤器拦截器等。我们首先通过学习动态代理认识AOP原理,然后进行AOP概念的论述。 下面代码通过实现InvocationHandler接口实现代理控制接口:public class LogProxy implements Invoca原创 2017-06-15 21:16:34 · 431 阅读 · 10 评论 -
JVM--java类文件结构
据说分析java类结构对日后的编码优化有很大的帮助,同时它也是我们理解java虚拟机类加载,内存分配,解析的基础,就和小伙伴们一起探讨学习了一番! 先来张大图做个导向: 1. 我们首先要搞明白.class文件是咋来的,为啥要有.class文件? 我们知道在JDK里面执行一原创 2017-06-09 17:55:28 · 531 阅读 · 16 评论 -
spring实现可动态修改时间定时任务
前端时间开发接触了一个开源框架jeecg,里面封装了spring与quartz整合的定时任务实现方式。因为之前尝试过单纯使用quartz来实现定时任务,遇到一些问题,比如,无法通过spring注入的方式添加自己的注入类。 首先了解一下,定时任务有三种技术实现方式:java自带的Timer类,可以让程序保持一定频度执行,但是无法按照某个时间执行;quartz,一个功能强大的原创 2017-07-21 16:49:25 · 27773 阅读 · 30 评论 -
从ActiveMQ认识JMS
随着分布式系统的规模和复杂度提高,往往会出现如下问题:(1)系统间同步通信,客户端发出调用后,必须等到服务对象完成处理并返回结果后才能继续执行;(2)服务端和客户端强耦合,后端一旦出现故障,前台将会牵扯进来;(3)客户的一次调用只能发送给单独目标对象。在这样的环境下,面向消息的中间件就应运而生了。 1. 什么是消息中间件?有什么特点? 很容易理解,消息原创 2017-07-31 18:56:31 · 389 阅读 · 9 评论 -
spring源码解读(1)-容器基本实现
学习spring源码对理解spring的执行流程,如何更好的发挥spring的功能有很大的指导作用。下面针对spring加载bean容器学习spring的执行流程。 spring通过调用xml配置文件,解析并加载Bean,xmlBeanDefinitionReader则是整个资源加载的切入点: spring从xmlBeanReader读取原创 2017-07-25 21:23:04 · 667 阅读 · 25 评论 -
方便快捷的HTTP匹配
Http中常用到添加白名单,现在的业务是针对每一个ip配置不同的匹配规则来达到权限控制,这样,针对同一个ip在不能出现重复规则。 因为用户输入的内容是复杂的,允许单个输入ip,也允许输入ip地址段,因此,需要提供一个工具类来匹配该ip是否已经存在。 整体思想,讲用户输入的所有ip和ip段放入list集合中,在工具类调用时,将单个ip存放入list中,地原创 2017-12-05 09:59:11 · 466 阅读 · 1 评论 -
zk+curator监听器机制实现分布式高可用
curator是开源zookeeper客户端,与原生zk client相比,抽象层次更高,功能更加丰富。监听器在分布式中主要应用于服务注册,也是很多开源项目中客户端请求服务的必选技术应用,它不仅可以减少客户端无限for循环导致的服务端流量问题,通过zk的天生分布式能力提供高可用特性。 curator的监听采用3种Watcher机制来监听节点变化: 1. Pa...原创 2018-06-04 18:07:01 · 3702 阅读 · 0 评论 -
jersey与spring mvc通信报错:JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white
大家熟悉的RESTful风格代码大都是httpClient,Jersey在开源项目中常用。 Jersey RESTful WebService框架是一个开源的、产品级别的JAVA框架,支持JAX-RS API并且是一个JAX-RS(JSR 311和 JSR 339)的参考实现 Jersey不仅仅是一个JAX-RS的参考实现,Jersey...原创 2018-05-31 19:16:09 · 19572 阅读 · 6 评论 -
通过ssh访问linux文件
使用java代码链接Linux服务器,无非使用SSH借用用户名密码进行链接,ganymed jar包提供了ssh的连接方式,下面我们借助Ambari开源项目代码,使用实例获得hadoop的一些配置文件并使用xml工具类进行解析。 pom文件内容,引入ganymed和文本处理类commons-lang3:<?xml version="1.0" encodin...原创 2018-07-17 12:03:00 · 1886 阅读 · 0 评论 -
Spring Boot 运行原理
Spring Boot的优势在于内置大量习惯性的配置,便于与第三方集成,即“习惯优于配置”,让项目能够快速运行起来,下面我们就探究下Spring Boot自动集成配置的原理。 Spring Boot关于自动配置的jar包位于spring-boot-autoconfigure-*.jar中, spring boot的启动类中通常使用组合注解@Sprin...原创 2018-08-14 18:08:16 · 3449 阅读 · 0 评论 -
秒杀业务设计
秒杀因其流量大,并发高,成为最经典的业务之一,并发的根源在于数据库,通常采用缓存+队列的方式减少数据库访问,降低访问速度。有幸接触到一个秒杀业务代码,采用redis+mq的方式实现,现整理流程如下: 1. 数据库设计 秒杀业务的商品和订单单独设表,不要和正常商品和商品订单混合一起。表格数据足够少,才能保证查询和写入速度。订单表将用户id和商品id设置为唯...原创 2018-10-29 19:53:37 · 669 阅读 · 1 评论 -
java并发--高效缓存
最近阅读《java并发编程实战》第5章中提到的一步步建立高效可伸缩缓存代码,若有所思。 缓存是最容易引起并发问题的场景之一,因为缓存的内容经常为可变状态,而作用域又相对较大。解决并发问题最简单粗暴的方式就是加锁,但这样会降低执行效率,多线程执行到同步代码区,只能等自己活得锁的情况下才能继续执行。我们看下代码: 作者先使用泛型技术提供了一个可伸缩的...原创 2019-04-11 21:16:45 · 394 阅读 · 0 评论 -
Struts2--拦截器
拦截器是Struts2的核心内容之一,号称完成了Struts框架的70%的工作,它体现了一种AOP(面向切面编程)的设计哲学,它还体现了软件开发领域DRY(Don’t repeat yourself)原则。 Struts2中拦截器实际上也是一个类,它包含特殊的方法,能够拦截到要执行的方法,在这个方法执行之前或者之后插入其他功能,而且这些功能是自动完成的。个人理解,什么是拦截器呢,原创 2017-01-11 11:56:38 · 574 阅读 · 18 评论 -
Struts2-配置文件详解
Struts2配置文件涉及到主要有两个Struts.xml和web.xml,web.xml实现过滤器的配置,Struts配置访问的包,Action,方法和结果处理。 1. web.xml的配置: struts2 org.apache.struts2.ng.filter.StrutsPrepareAndExcuteFilter struts2 /*原创 2017-01-08 22:25:15 · 656 阅读 · 20 评论 -
简单Java小程序----有界面ATM机
继上次《简单Java小程序----无界面ATM机》后,尝试对ATM机的界面改写,对类的理解与使用更近了一步!可是使用的Netbean编译器编译界面真的不太方便呢!但每次编写都有不一样的收获!原创 2014-12-04 19:22:49 · 14586 阅读 · 19 评论 -
Servlet初识
Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者原创 2016-04-30 23:56:04 · 460 阅读 · 0 评论 -
J2ee简介
J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。原创 2016-04-30 23:53:59 · 1613 阅读 · 11 评论 -
MyEclipse配置安卓环境历程
MyEclipse是在Eclipse的基础上添加上自己的插件而生成的功能强大的企业级集成开发环境,主要应用于java,j2ee和移动端的开发。刚开始使用MyEclipse进行编码研究,必须要学会环境搭建,让软件更好的为我们服务。原创 2016-05-14 13:58:43 · 2121 阅读 · 23 评论 -
Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: IOExc
最近在进行中的基于RESTful框架的APP项目中一直在包题目中的那个错误,具体的错误描述如下:原创 2016-05-21 11:33:59 · 8517 阅读 · 29 评论 -
java实现导出多sheet的excel小实例
根据系统需要,将不同班级的学生导出到excel中,并按照班级名称分成不同的sheet表,下面是实现代码: public static void outputExcelData() throws IOException, WriteException { /**定义需要导出的实体*/ List result = new ArrayList();原创 2016-08-12 15:57:54 · 10723 阅读 · 18 评论 -
java-multimap使用
在开发当中难免list存在嵌套的情况,但这样的话,list嵌套最终完成要使用两个list的for循环嵌套,这样造成性能的降低。原创 2016-09-16 15:50:10 · 13896 阅读 · 16 评论 -
mybatis使用逆向工程(xml)生成实体
mybatis涉及到大量的sql语句,自己手动写的过程是比较繁琐的,可以使用mybatis的逆向工程自动生成实体和mapper配置文件,本博文介绍使用配置xml文件的方式生成实体与mapper文件。 1. 下载需要使用的jar包(mybatis-generator-core-1.3.2-bundle.zip ) 2. 建立java工程引入j原创 2016-10-09 16:32:19 · 1693 阅读 · 23 评论 -
java基础--内部类和Lamda表达式
内部类是在java内部又定义的内部类,它最大的优势在于,它可以访问外部类所有的数据成员,但外部类不能访问内部类的私有成员,使用最多的是匿名内部类。java 8根据匿名为简化匿名内部类的写作习惯,提出了lamda表达式。原创 2016-11-05 22:27:56 · 1233 阅读 · 19 评论 -
java基础--正则表达式
正则表达式的应用方便了我们提取字符串的操作,我们可以利用它截取文本,修改文本内容,修改文本样式等原创 2016-11-20 20:14:54 · 666 阅读 · 26 评论 -
jvm初认识
JVM--java虚拟机,是一台抽象的计算机,它规范了java虚拟机的特性,而每个特性又是可以选择的。它支持了java面向网络结构的三个方面:平台无关,安全性和网络移动性。 认识JVM,首先我们看一下java的体系结构,了解jvm在该结构中的地位:原创 2016-11-27 00:10:17 · 500 阅读 · 32 评论 -
java基础--多线程
java多线程的应用非常广泛,主要是为了发挥服务器多处理器的效率。在我们的web编程中应用非常广泛。允许多用户并发同时访问,同时下载多个图片等等均是应用了多线程。但在编程的时候好像关于多线程的代码感觉不到是因为我们将多线程继承到框架里面了,Servelet就是一个单实例多线程的应用。一、多线程实现 多线程的创建主要有三种方式:继承Thread接口,继承Runable原创 2017-01-02 17:05:14 · 656 阅读 · 46 评论 -
java基础--集合(1)
java集合是在编程中经常用到的工具类,也是工具类,清楚他们在不同环境下应用时的性能问题对我们的编程会有很大帮助。 集合类主要由两个接口派生:collection和Map。 Collection接口是list,set和Queue的父接口,定义了操作List,queue和Set集合的方法,主要包括添加,清除,判断为空,遍历等方法。原创 2016-12-28 22:00:32 · 491 阅读 · 22 评论 -
java基础--泛型
泛型是将数据类型参数化以达到代码复用提高程序开发效率的一种特性。java泛型的提出是针对List集合存入对象时不会记忆数据类型,再次取出对象时就变成object类型而提出的一种解决方式。因此泛型的应用在底层代码封装中广泛使用。 自java 5以后,java引入参数化类型概念,使用泛型,例如:List,表明该集合只能存储String对象。 先看一下泛型类的定义:原创 2016-12-30 14:59:21 · 454 阅读 · 21 评论 -
java基础--异常
异常处理是一门语言是否成熟的标准之一,它提高代码的容错性,使得更加健壮。java处理异常主要通过try,catch,finally,throw,throws五个关键字组成。 异常处理的原则:先捕获小异常,再捕获大异常。 (1)普通异常处理异常的基本格式如下:public class DivTest{ public static void原创 2016-12-30 19:30:04 · 445 阅读 · 20 评论 -
SSH-Struts(一)实现过程
Struts2是基于WebWork提出的MVC框架,相对于Struts1做出了巨大改变,但与WebWork实现框架是一致的。作为MVC的一个框架模式实现,继承了MVC将数据输入,处理,输出分离的特点。 通过上面的Struts结构图,我们分析Struts2的实现过程: (1)用户在web页面发出http请求原创 2017-01-08 22:02:46 · 484 阅读 · 17 评论 -
简单Java小程序----无界面ATM机
软件设计掌握软件内部结构至关重要,初次接触编程的我们可以从代码中学习软件内部结构,本次对该程序的学习充分理解到软件工程中系统分析的重要性。下面是对最近学习的无界面虚拟ATM机的一些学习:1. 代码认识代码如下:Atm类import java.util.*; //引用数据类public class Atm { Scanner sc =new Scanner(Syste原创 2014-11-05 21:53:48 · 5049 阅读 · 10 评论