自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (2)
  • 收藏
  • 关注

原创 如何使用Redis实现一个任务队列,并防止同类型任务并发执行

场景介绍今天的业务中遇到了这样一个场景:某些类型的任务由专门的服务负责执行,且执行时间相对较长,因此需要对这些任务进行排队逐一处理。 此外,由于同种类型的两个任务之间可能需要按照先后顺序执行,因此还需要防止在集群环境下同一类型的多个任务出现并发执行的情况。下面介绍我通过Redis解决上述两个问题的思路。使用Redis实现任务队列假设服务A为任务执行的调度方,服务B为任务的执行方,由服务A指定服务B需要执行哪些任务;当服务B集群中的机器全部都在执行任务时,后续来的任务需要在队列中按先.

2020-06-12 15:30:33 3356

原创 Java——数组与内存控制

数组的初始化 Java中要使用数组,必须要先经过初始化。所谓初始化,就是为每个数组元素分配内存空间,并指定初始值。数组一旦初始化完成,长度就不能再改变,即Java中数组是静态的。数组初始化的两种方式: 静态初始化:在初始化数组时由程序员显式指定每个数组元素的值,数组的长度由系统自动决定。动态初始化:在初始化数组时,仅指定数组的大小(长度),由系统为每个数组元素分配默认值。 数组元素的类型是基

2018-01-02 22:59:23 417

原创 关于component-scan中base-package包含通配符的问题探究

今天在配置Spring的component-scan时,发现了一个有趣的问题。就是在指定base-package时,如果使用了星号通配符*,有时会出现类扫描不到的情况。下面研究一下这个问题。先介绍一下项目结构: 为了演示,我在java文件夹下创建名为controller的包,并在该包下创建了一个名为IndexController的类。如图所示: 先来看正常情况: 在Spring配置文件中配

2017-07-19 15:19:00 66438 4

原创 使用Java编写Excel传统课表转日历格式

今天遇到一个让她比较苦恼的事情,她手上有一大堆传统Excel格式的课程安排表,现在想将他们全搞成日历格式的,她只能手动一个一个搞,效率很低也很无聊,帮她做了个小工具,通过工具实现格式转换,解放双手!原来的数据格式是这样: 转完的格式是这样的: 思路: 1.原表格中的数据可以抽象成一个类,类中的属性对应原表格中的列。package xiaming.chen.domain;/** * Creat

2017-07-04 15:03:35 2599 1

原创 使用Java读取Excel文件内容

使用Java读取Excel文件的内容非常简单,Apache POI这个项目已经实现了对此类文档操作的功能,我们只需学会如何使用它即可。1.首先需要引入Apache POI,这里推荐使用Maven的方式管理项目依赖。在pom.xml文件中加入依赖项:<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artif

2017-07-02 17:10:33 4339 1

原创 spring mvc将Model中的内容加入到Session中(利用@SessionAttributes)

今天遇到一个需求,在用户登陆之后,需要将其登陆状态保存到Session中。我的逻辑是:用户登陆——用户登陆相关的Controller——验证完成之后,重定向到首页相关的Controller,进行相关信息的展示在这个过程中,我在用户登陆成功后,利用RedirectAttributes将用户信息存入到其中,然后重定向到首页相关的Controller。但是之后遇到了一个问题:在展示数据的时候,第一次展示时

2016-09-03 23:22:58 9389

原创 Mybatis——使用注释方式查询出关联的对象

现有如下需求:某个类中存在其他类的对象,但在数据库中只存了该对象的id。如果我们需要在查询数据时将关联对象一并查出,需要手动配置以下。下面以注解的方式演示给出两个类:InputParam和Api类,InputParam中存在Api类的对象public class InputParam { private Integer inputParamId; private

2016-09-02 13:35:26 9415

原创 Mybatis——【亲测】mybatis使用注解方式插入数据后获取自增长的主键值

自己踩过的坑,查了好久,终于发现解决方法。步骤有三: 1. 写SQL,但不要自己插入主键值 2. 配置@Options(useGeneratedKeys=true, keyProperty="对象.属性") 这个的作用是设置是否使用JDBC的getGenereatedKeys()方法获取主键并赋值到keyProperty设置的对象的属性中,说白了就是把自增长的主键值赋值给对象相应的属性

2016-09-01 21:38:14 28814 16

原创 Java——父子实例的内存情况解析

众所周知,在Java中,一个非final类可以被其他类所继承,同时子类将拥有父类的实例变量和实例方法,而且子类还可以重写父类中的方法。但当子类中存在和父类同名的变量和方法时,分别用父类类型的变量、子类类型的变量去调用对象的实例变量和方法时,会有怎样的结果呢? 我们不妨来做个试验:定义一个Base类(父类),在其中声明一个实例变量和实例方法;同时定义一个Sub类(子类),在其中声明与父类中相同的实例

2016-05-25 14:56:20 1085

原创 Struts2自定义标签——通过自定义标签实现权限控制

近期在开发中遇到一种需求:根据用户的权限决定是否显示某操作按钮。例如:若用户拥有删除数据的权限,则在界面中显示“删除”按钮;若用户无该权限,则界面中不显示相应按钮。这样,就需要用到自定义标签了。要定义Struts2的自定义标签,只需三步:定义一个Component类,并继承自org.apache.struts2.components.Component;定义一个Tag类,并继承自import

2016-05-12 11:37:48 3414

原创 JavaWeb——文件上传,通过request.getInputStream()无法获取文件内容的问题

在使用request.getInputStream()获取上传的文件并输出时,结果总是只有一行信息: ------WebKitFormBoundaryZ67SrSxAo3UwkFoC--,而文件的内容却丢失了。究其原因,是<input type="file">缺少了name属性,我们只需要添加上name属性,即可正确地获得文件的内容。将<input>标签改写为:<input type="fil

2016-04-22 21:10:09 7235

原创 Intellij IDEA——Unescaped & or nonterminated character/entity reference

在使用Intellij IDEA连接数据库并指定字符编码时,遇到如下报错: 提示不允许在?useUnicode=true&characterEncoding=utf-8中使用“&”号是IDEA将“&”当成了特殊符号。解决方法:方法一: 将“&”改写为“&”方法二: 去掉useUnicode=true,只写characterEncoding=utf-8

2016-04-10 18:30:25 7152

原创 Java——获取网页内容并在本地生成HTML文件

使用java.net包下的URL类,可以将一个网页(链接)封装成一个URL对象。 URL对象有一个openStream()方法,使用该方法可以获取该网页的输入流,我们可以通过读取输入流的方式获得网页的内容,并通过输出流写入HTML文件中。方式一:步骤: 1. 通过URL对象的openStream()方法获得网页的字节输入流 2. 将字节输入流转换成字符输入流 3. 为字符输入流加缓冲区

2016-03-24 11:04:13 24230 8

原创 Java——JDOM方式生成XML

使用JDOM方式生成XML文件的步骤如下:创建根节点创建Document对象,并将根节点传入其构造方法中创建子节点,使用setAttribute()方法为其设置属性,使用setText()方法为其设置节点内容使用父节点的setContent()方法为其设置子节点创建XMLOutputter对象使用XMLOutputter对象的output()方法将Document转换成XML文件下面给

2016-03-23 21:05:10 2058

原创 Java——DOM4J方式生成XML

使用DOM4J方式生成XML文件的步骤如下:引入JAR包通过DocumentHelper类的createDocument()创建Document对象通过Document的addElement()方法创建节点通过Element的addAttribute()方法为节点添加属性通过Element的setText()方法为节点设置内容通过OutputFormat的createPrettyPrin

2016-03-23 11:31:16 19000

原创 Java——SAX方式生成XML

使用SAX方式生成XML文件有如下步骤:创建SAXTransformerFactory对象通过SAXTransformerFactory对象创建TransformerHandler对象通过TransformerHandler对象获得Transformer对象设置Transformer对象的输出属性(setOutputProperty())创建Result对象,并将目的XML文件与其关联通

2016-03-23 10:05:01 4578 1

原创 Java——DOM方式生成XML

学完了解析XML,就该学习生成XML文件了。首先学习的是如何使用DOM方式生成XML文件。使用DOM方式生成XML文件有如下几步:首先是创建DOM树(即规定XML文件中的内容):创建DocumentBuilderFactory对象通过DocumentBuilderFactory对象创建DocumentBuilder对象通过DocumentBuilder对象的newDocument()方法创建一

2016-03-21 10:52:39 22894 6

原创 Java——DOM4J解析XML文件

跟前几篇文章一样,依旧使用books.xml和Book类,直接给出代码:package domain;public class Book { private int id; private String name; private String author; private float price; public int getId() { r

2016-03-19 16:47:17 861

原创 Java——JDOM解析XML文件

跟前两篇文章一样,我们继续使用books.xml和Book类,在此不再赘述,直接给出代码:package domain;public class Book { private int id; private String name; private String author; private float price; public int getId() {

2016-03-18 14:38:00 623

原创 Java——SAX解析XML文件

上一篇文章使用了DOM解析XML文件,本篇文章将使用SAX解析XML。DOM与SAX解析的不同之处在于:DOM解析会将XML全部加载到内存中,再进行解析;而SAX解析有一个Handler,该Handler将对每个节点逐个进行解析。SAX解析的步骤:通过SAXParserFactory的静态方法newInstance()获取SAXParserFactory的实例。通过SAXParserFactor

2016-03-17 11:16:18 618

原创 Java——DOM解析XML文件

Java中解析XML文件的方式有四种,分别是:DOM解析SAX解析DOM4J解析JDOM解析其中,DOM和SAX是Java内置提供的解析方式,无需引用JAR包;而DOM4J和JDOM则是第三方提供的,需要引入相应JAR包才可使用。本篇文章介绍DOM解析。DOM解析的基本步骤如下:创建DocumentBuilderFactory的对象(通过newInstance()方法)创建Docume

2016-03-16 16:01:58 707 2

原创 Java——检索一段话中出现次数最多的英文单词

今日看到一个题目,要求在给出的一段话中检索出出现频率最高的单词。现在此分享。题目:在下面这段话中,检索出出现次数最多的英文单词: Look to the skies above London and you’ll see the usual suspects rainclouds, plane and pigeons. But by the end of the year, you might j

2016-03-14 10:53:56 13988 1

原创 Java——FileReader&FileWriter字符流实现文件复制

使用FileReader&FileWriter类可实现文件复制,此方法比前几种更为简单,但无法指定文件编码。实现:package utils;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class IOUtils { p

2016-03-13 18:08:14 1237

原创 Java——InputStreamReader&OutputStreamWriter字符流实现文本文件复制

InputStreamReader & OutputStreamWriter 类可通过字符流的方式对文本文件进行读/写操作。实现:package utils;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream

2016-03-13 17:00:46 847

原创 Java——FileInputStream&FileOutputStream字节流实现文件复制

要实现文件的复制,有很多种方法。今天介绍一种最基础的方法:使用FileInputStream和FileOutputStream实现文件的复制。思路:要实现文件的复制,其实质就是对源文件数据进行读取,再将这些数据写入目标文件,从而实现文件的复制。实现:创建IOUtils类及copyFile方法:package fileCopy;import java.io.File;import java.io.F

2016-03-11 22:00:51 4359

原创 java.io.File类基本使用——遍历某路径的所有文件夹及文件

java.io.File类可以用来表示文件或目录,在需要遍历指定路径下的所有文件夹及文件时,可以使用此类。思路如下:1、判断给定路径是目录还是文件。 2、如果是文件,则直接打印该文件路径及文件名 3、如果是目录,则先打印该目录路径,并获取该目录下的所有目录及文件,再对每一个文件或目录执行第一步操作。如此循环,即可获取所有文件实现:创建一个FileUtils工具类,并创建getFiles方法:pa

2016-03-11 15:45:33 8999

原创 Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition

在使用了Spring提供的OpenSessionInViewFilter来在一个请求中保持hibernate的session推迟关闭后,会出现如下报错:org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEV

2016-02-25 16:46:56 4817

原创 Hibernate&MySQL——Group是关键字,在使用Hibernate时不能将其作为表名

在写程序时,由于需要用到“分组”类,故随手写了Group作为类名(坑!)。在之后使用Hibernate自动建表时,报错:Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [create table Group (i

2016-02-23 18:44:13 1569

原创 Hibernate——报错:org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass

在使用Hibernate时,出现了如下错误:Caused by: java.lang.ClassCastException: org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass错误原因在于: 在父类中定义并配置了主键之后,又在子类中重复定义并配置了主键。结果方法: 删除子类中主

2016-02-23 17:53:39 3271 2

原创 GitHub——Gist

Gist Gist是一款简单的Web应用程序,常被开发者们用来共享示例代码和错误信息。 Gist最大的特点是可以与其他人轻松分享示例代码。Gist Description: 用于对当前Gist所包含的文件进行简要的说明Filename including extensions: 包含扩展名的文件名,供用户指定文件名,系统能自动识别扩展名,将右侧的语言自动设置为对应种类。Add File:

2016-02-04 16:27:25 16693

原创 GitHub——Pull Request

Pull Request:自己修改源代码后,请求对方仓库采纳该修改时的一种行为。Pull Request的步骤: 1、将他人的仓库Fork成自己的仓库(访问该仓库页面,点击fork) 2、将自己的仓库clone到本地(git clone 自己仓库的URL) 3、创建特性分支(在GitHub上发送Pull Request时,一般都是发送特性分支。这样一来,Pull Request就拥有了更明确的

2016-02-04 16:26:53 5783

原创 GitHub——GitHub具体功能

GitHub功能快捷键: 在各个页面中按下shift + / 可以打开快捷键一览表控制台界面: GitHub的Logo:进入控制台 铃铛:notifications,通知。当图标为蓝色时表示有未读通知。 搜索框:搜索想找的用户或代码片段 Gist:用于管理和发布一些没必要保存在仓库中的代码。 “+”号:创建新的Git仓库或Organization,向Organization添加成员、小组

2016-02-04 16:26:04 6327

原创 Git——Git基础命令

初始化仓库:git init 在执行了git init命令的目录下会生成.git目录。这个.git目录里存储着管理当前目录内容所需的仓库数据。 这个目录的内容称为“附属于该仓库的工作树”,文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。查看仓库状态:git status 初始化仓库完成后的仓库状态如下:位于分支 master初始提交无文件要提交(创建/拷贝文件并

2016-01-29 15:38:23 677

原创 GitHub——使用GitHub

添加SSH KEY ssh-keygen -t rsa -C “注册时所用的email地址” 回车后输入密码及确认密码在GitHub中添加公开密钥 点头像——setting——SSH KEYS——添加SSH KEY,将id_rsa.pub中的内容复制到Key框中,并在Title框中设置适当的密钥名称clone已有仓库 在终端下输入: git clone 仓库HTTPS路径,即可将仓库克隆到

2016-01-29 15:34:05 598

原创 Git——Git相关基础知识

Git仓库管理功能是GitHub的核心。 Git属于分散型版本管理系统,是为版本管理而设计的软件。版本管理: 版本管理就是管理更新的历史记录。集中型与分散型: 集中型:集中型将所有的数据集中存放在服务器中,便于管理。但是一旦服务器宕机,就会无法获取最新的源代码。 分散型:GitHub将仓库fork给每一个用户。Fork就是将GitHub的某个特定仓库复制到自己的账户下。分散型拥有多个仓库。初

2016-01-28 16:26:07 418

原创 GitHub——什么是GitHub

什么是GitHub: GitHub是为开发者提供Git仓库的托管服务。GitHub与Git的区别: 在Git中,开发者将源码存入名为“Git仓库”的资料库中并加以使用。而GitHub则是在网络上提供Git仓库的一项服务。 也就是说,GitHub上公开的软件源代码全都由Git进行管理。Pull Request: Pull Request是指开发者在本地对源代码进行更改后,向GitHub中托管的

2016-01-28 16:24:33 898

原创 Linux——安装StarUML时提示依赖关系不满足libgcrypt11>=1.4.5

在安装StarUML时,提示“依赖关系不满足libgcrypt11>=1.4.5”解决方法如下: 在终端输入:wget http://mirrors.kernel.org/ubuntu/pool/main/libg/libgcrypt11/libgcrypt11_1.5.3-2ubuntu4.2_amd64.debsudo dpkg -i libgcrypt11_1.5.3-2ubuntu4.2

2016-01-09 21:24:04 4032

原创 Eclipse启动报错

错误信息:A Java Runtime Environment (JRE) or Java Development Kit (JDK)must be available in order to run Eclipse. No Java virtual machinewas found after searching the following locations:/media/xiamingc

2016-01-02 23:00:08 504

原创 Hibernate——org.hibernate.StaleStateException: Batch update returned unexpected row count from update

在使用hibernate更新数据库记录的信息时,出现org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 错误。原因分析: 我在更新数据时,显式地使用了id的setId()方法为其指定值。但是我的实

2015-12-26 12:11:00 14399

原创 Struts2——No result defined for action and result input - action错误

今天在提交表单时,Struts2提示 No result defined for action actions.EmployeeAction and result input - action - 错误。原因: 该错误表示你的Action的配置文件内没有一个name为input的结果。这个input结果是Struts2定义的当验证参数出错时产生的默认结果。这说明你传递给Action的参数值与Act

2015-12-26 11:47:54 9779

Struts2权威指南完整版 PDF 李刚

《Struts2权威指南:基于WebWork核心的MVC开发》介绍的Struts 2已经完全超出了Struts 1框架原有的高度,Struts 2建立在Struts 1和WebWork两个框架整合的基础之上,因此提供了更多优秀的机制。虽然Struts 1目前还未被完全淘汰,但Struts 1所表现出来的缺陷已经处处制约着开发者的手脚。在2007年上半年,Struts 2终于在众多开发者期盼中,发布了第一个稳定版本:2.0.6。为了让众多Struts学习、工作者快速掌握Struts 2的开发,笔者精心编著了本书。

2015-09-07

空空如也

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

TA关注的人

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