抽取BaseService
到目前为止,我们已经写了三个模块的开发了。我们已经抽取过了BaseAction、BaseDao,我们这次来看看我们的Service接口。
/**
* created by ozc on 2017/5/23.
*/
public interface UserService {
void save(User user);
void update(User user);
void delete(Serializable id);
User findObjectById(Serializable id);
List findObjects() throws ServiceException;
void exportExcel(List userList, ServletOutputStream outputStream);
void importExcel(File userExcel, String userExcelFileName);
/**
* 根据帐号和用户id查询用户
*
* @param id 用户ID
* @param account 用户帐号
* @return 用户列表
*/
List findAccount(String id, String account);
void saveUserAndRole(User user, String[] userRoleIds);
List findRoleById(String id);
void deleteUserRoleById(String[] userRoleIds);
List findUserByAccountAndPassword(String account, String password);
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
/**
* created by ozc on 2017/5/23.
*/
public interface InfoService {
public void save (Info info);
public void update (Info info);
public void delete (Serializable id);
public Info findObjectById (Serializable id);
public List findObjects () ;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/**
* Created by ozc on 2017/5/26.
*/
public interface RoleService {
void save(Role role);
void update(Role role);
void delete(Serializable id);
Role findObjectById(Serializable id);
List findObjects() ;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
我们可以发现,三个Service接口中都存在着增删改查的方法,这明显就是重复的代码。 因此,我们需要将他们进行抽取成一个BaseService。
抽取BaseService
在core模块中添加service包,抽取BaseService
package zhongfucheng.core.service;
import java.io.Serializable;
import java.util.List;
/**
* Created by ozc on 2017/6/7.
*/
interface BaseService {
void save(T entity);
void update(T entity);
void delete(Serializable id);
T findObjectById(Serializable id);
List findObjects();
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
我们的Sercive是调用dao层的对象来实现方法的,因为这个Service是代表整个项目的Service,于是应该使用BaseDao
package zhongfucheng.core.service.impl;
import zhongfucheng.core.dao.BaseDao;
import zhongfucheng.core.service.BaseService;
import java.io.Serializable;
import java.util.List;
public abstract class BaseServiceImpl implements BaseService {
private BaseDao baseDao;
@Override
public void save (T entity) {
baseDao.save(entity);
}
@Override
public void update (T entity) {
baseDao.update(entity);
}
@Override
public void delete (Serializable id) {
baseDao.delete(id);
}
@Override
public T findObjectById (Serializable id) {
return baseDao.findObjectById(id);
}
@Override
public List findObjects () {
return baseDao.findObjects();
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
以Info模块举例子
InfoService继承了BaseService接口,于是就有了增删改查的方法。同时把泛型T的类型确定下来。
public interface InfoService extends BaseService <Info > {
}
继承了InfoService,有了增删该查的方法,然而具体的操作是BaseServiceImpl中实现的。我们继承它,并给出泛型T对应的类型。
@Service
public class InfoServiceImpl extends BaseServiceImpl <Info > implements InfoService {
}
现在的问题是什么呢???我们在BaseServiceImpl中使用了BaseDao这个变量来对数据库进行操作。可是在BaseServiceImpl中是没有BaseDao这个变量的。
首先,要明确的是,我们不能在BaseServiceImpl中注入BaseDao,因为BaseServiceImpl本身就是一个抽象类。那我们怎么对BaseDao进行实例化呢???
我们可以这样做:
@Service
public class InfoServiceImpl extends BaseServiceImpl <Info > implements InfoService {
private InfoDao infoDao;
@Resource
public void setInfoDao(InfoDao infoDao) {
super .setBaseDao(infoDao);
this .infoDao = infoDao;
}
}
BaseServiceImpl为BaseDao设置set方法。
private BaseDao baseDao;
public void setBaseDao (BaseDao baseDao) {
this .baseDao = baseDao;
}
条件查询
我们来实现下面的功能:
传统方式
其实也是一个查询,只不过查询多了一个条件罢了。按照传统的方式我们可以这样做:
在BaseDao中声明一个方法,接收的是SQL和参数列表
List < T> findObjects(String sql, List < Object> objectList);
@Override
public List findObjects (String sql, List objectList) {
Query query = getSession().createQuery(sql);
if (objectList != null ) {
int i =0 ;
for (Object o : objectList) {
query.setParameter(i, o);
i++;
}
return query.list();
}
return query.list();
}
List < T> findObjects(String sql, List < Object> objectList);
BaseServiceImpl中使用baseDao来调用它
@Override
public List findObjects (String sql, List objectList) {
return baseDao.findObjects(sql, objectList);
}
我们还是用着listUI这个方法,因为它仅仅是参数可能不同。
如果用户使用的是条件查询,那么它应该有Info对象带过来。
如果不是条件查询,就没有Info对象
根据Info对象设置是否要设置参数来查询【在HQL语句中添加新字段】。所以这个方法通用。
public String listUI() {
String hql = "FROM Info i " ;
List < Object> objectList = new ArrayList<> ();
if (info != null ) {
if (StringUtils. isNotBlank(info. getTitle())) {
hql += "where i.title like ?" ;
objectList. add("%" + info. getTitle() + "%" );
}
}
infoList = infoServiceImpl. findObjects(hql,objectList);
ActionContext. getContext(). getContextMap(). put("infoTypeMap" , Info. INFO_TYPE_MAP);
return "listUI" ;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
优化
看回我们Action中的代码,我们可以看出一些不够优雅的地方:
于是,我们想要用一个工具类来把上面的代码进行优化。
针对上面的问题,我们发现手写拼接SQL很容易出错。那我们可以在工具类里面拼接,使用的时候调用方法获取就行啦。查询的对象写死了,我们要可以处理任何的查询。 。
我们能够找到如下的规律:
FROM Info
WHERE title like ? and state = ?
order by createTime,state
条件查询(QueryHelper):
1 、查询条件语句hql:
from 子句:必定出现;而且只出现一次
where 子句:可选;但关键字where 出现一次;可添加多个查询条件
order by 子句:可选;但关键字order by 出现一次;可添加多个排序属性
2 、查询条件值集合:
出现时机:在添加查询条件的时候,?对应的查询条件值
package zhongfucheng.core.utils;
import java.util.ArrayList;
import java.util.List;
/**
* Created by ozc on 2017/6/7.
*/
public class QueryHelper {
private String fromClause = "" ;
private String whereClause = "" ;
private String orderbyClause = "" ;
private List objectList;
public static String ORDER_BY_ASC = "asc" ;
public static String ORDER_BY_DESC = "desc" ;
/**
* 构建FROM字句,并设置查询哪张表
* @param aClass 用户想要操作的类型
* @param alias 别名
*/
public QueryHelper (Class aClass, String alias) {
fromClause = " FROM " + aClass.getSimpleName() + " " + alias;
}
/**
* 构建WHERE字句
* @param condition
* @param objects
* @return
*/
public QueryHelper addCondition (String condition, Object... objects) {
if (whereClause.length() > 0 ) {
whereClause += " AND " + condition;
} else {
whereClause += " WHERE" + condition;
}
if (objects == null ) {
objectList = new ArrayList<>();
}
for (Object object : objects) {
objectList.add(object);
}
return this ;
}
/**
*
* @param property 要排序的属性
* @param order 是升序还是降序
* @return
*/
public QueryHelper orderBy (String property, String order) {
if (orderbyClause.length() > 0 ) {
orderbyClause += " , " + property +" " + order;
} else {
orderbyClause += " ORDER BY " + property+" " + order;
}
return this ;
}
/**
* 返回HQL语句
*/
public String returnHQL () {
return fromClause + whereClause + orderbyClause;
}
/**
* 得到参数列表
* @return
*/
public List getObjectList () {
return objectList;
}
}
public String listUI () {
QueryHelper queryHelper = new QueryHelper(Info.class, "i" );
if (info != null ) {
if (StringUtils.isNotBlank(info.getTitle())) {
queryHelper.addCondition(" i.title like ? " , "%" + info.getTitle() + "%" );
}
}
queryHelper.orderBy("i.createTime" , QueryHelper.ORDER_BY_DESC);
infoList = infoServiceImpl.findObjects(queryHelper);
ActionContext.getContext().getContextMap().put("infoTypeMap" , Info.INFO_TYPE_MAP);
return "listUI" ;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
最后在dao、service层中添加一个queryHelper参数的方法就行了。
你可能感兴趣的:(纳税服务系统【抽取BaseService、条件查询】)
神级Office插件——不坑盒子
不坑老师
word excel microsoft powerpoint wps
不坑盒子是一款专为提升办公效率而设计的Office和WPS插件。它通过提供自动化、一键操作等功能,帮助用户在工作中更加轻松自如。该插件支持多种实用功能,如文档模板管理、批量处理文档、智能排版、数据提取与分析等,并且兼容Windows7以上操作系统,以及Office2010及以上版本和WPS非阉割版。不坑盒子的特点包括但不限于:一键排版功能、一键删除、一件替换、图片处理、仿写功能、稿子模板等。此外,
支持Windows和Linux系统的Python定时关机脚本
星河776(重名区分)
python
以下是一个支持Windows和Linux系统的Python定时关机脚本,允许设置定时关机或取消关机计划:importsysimportosimportdatetimeimportctypesimportredefis_admin():"""检查是否具有管理员权限"""ifos.name=='nt':try:returnctypes.windll.shell32.IsUserAnAdmin()exc
招聘管理的核心挑战与创新策略
JiYan_cyan
业界资讯
招聘管理的核心挑战与创新策略一、招聘管理的定义及其重要性招聘管理作为企业人力资源管理的重要环节,是指企业为了弥补岗位空缺、提升组织效能而进行的系统性的人才寻找和吸引活动。在当前竞争激烈的市场环境下,招聘管理显得尤为重要。它关乎企业的生存和发展,决定了企业能否及时获取关键人才,进而推动企业的创新和竞争力。首先,有效的招聘管理能够确保企业及时获取符合岗位需求的高素质人才。在人才竞争激烈的市场中,谁能够
功率器件与芯片区别,一文带你读懂
JiYan_cyan
业界资讯
功率器件与芯片区别,一文带你读懂!一、功率器件与芯片的基本概念差异1、功率器件,顾名思义,是指用于实现电能转换和控制的元器件,如整流器、逆变器、开关等。它们的主要特点是承受较大的电流和电压,以及具备较高的功率处理能力。功率器件广泛应用于电力电子、汽车电子、工业自动化等领域,是现代电子系统的重要组成部分。2、芯片则是指内含集成电路的硅片,它包含了数以亿计的晶体管,实现了复杂的电路功能。芯片是电子设备
Linux下安装使用f.lux
NearXDU
杂谈 flux ubuntu
f.lux:全天候保护你的眼睛。Windows下用起来非常好了,最近在Ubuntu工作比较多,就想装一个Linux版本的。环境:Ubuntu14.0464位步骤:1.添加PPA到系统sudoadd-apt-repositoryppa:kilian/f.lux错误:unabletolocatepackageadd-apt-repository上网查了一下需要先安装python-software-pr
Http响应头之Date与Age
yzpyzp
参考:http://www.xuebuyuan.com/1496558.htmlhttp://blog.csdn.net/xifeijian/article/details/46460631HTTP没有为用户提供一种手段来区分响应是缓存命中的(比如响应是来自代理服务器的),还是访问原始服务器得到的。客户端有一种方法能判断响应是否来自缓存,就是使用Date首部。将响应中Date首部的值与当前时间进行
微信小程序中如何实现微信支付
前端鼓励师
微信小程序 微信小程序 微信 小程序 前端 javascript
微信支付是微信公众平台提供的一种在线支付服务,可以为用户提供快速、方便、安全的支付体验。而在微信小程序中实现微信支付,则可以为应用程序提供更多的功能和服务,提高用户体验和商业价值。因此,在本文中,我们将介绍如何在微信小程序中实现微信支付。步骤一:申请微信支付接口权限在使用微信支付之前,需要先在微信公众平台申请支付接口权限,并进行相应的设置和配置,包括添加支付功能的AppID及密钥等信息。具体的操作
【服务器】ubuntu20.04安装cuda12.01(使用runfile安装)
弹伦琴的雷登
服务器相关知识 linux相关知识 服务器 运维 linux
【服务器】ubuntu20.04安装cuda12.01(使用runfile安装)包教包会【创作不易,求关注收藏点赞】商业合作请私聊,有问题可以评论或者私聊!1、进入cuda官网先登录,登录好之后选择对应的版本按下面选项进行选择2、终端运行安装在终端进入管理员模式,这里我是通过SSH远程连接,先进入管理员模式su</
【pycharm】远程服务器之后如何打开终端
弹伦琴的雷登
pycharm系列 pycharm 服务器 ide
【pycharm】远程服务器之后如何打开终端在pycharm中,我们通过远程连接服务器,此时如果我们需要在终端运行的话,并不能直接在本地终端运行,而是需要连接到服务器终端才能运行命令设置如下:输入服务器的ip、端口、用户名、用户密码此时在终端就可以看到服务器的终端了
POST 方法的content-type类型总结
۩ﺴ往后余生ﺴ۩
python # python数据处理 python
文章目录一、几种常见类型1:application/x-www-form-urlencoded2:multipart/form-data3:application/json总结什么是Content-typeContent-type是实体首部字段,用于说明请求或返回的消息是用什么格式进行编码的,在requestheader和responseheader里都有存在。用来向服务器或者浏览器说明传输的文件
用python批量_[Python]用python实现批量/并发处理
weixin_39724266
用python批量
最近在学习python,感觉很不错,特别是实现批量/并发处理。实现起来非常方便,比shell方便很多。刚学python一个月,在这留个记录。下面分享一段代码。多提建议/意见~(QQ×××流:24967504)需求:批量查看/对比线上服务器的状态情况,如uptime、df-h、MD5sum文件等等。本打算让执行命令通过传参进行、密码通过交互输入(3次不对退出)。后面再完善~~#-*-coding:u
HTTP头部参数详解
weixin_34418883
xhtml
HTTP请求消息头部实例:Host:rss.sina.com.cn//客户端指定自己想访问的WEB服务器的域名/IP地址和端口号User-Agent:Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.8.1.14)Gecko/20080404Firefox/2.0.0.14//头域的内容包含发出请求的用户信息。Accept:text/xml,applica
在docker容器内部访问主机服务
吃肉夹馍不要夹馍
其他 docker eureka 容器
(仅对与linux系统)希望在容器内部能够访问主机上的服务,比如在主机上部署了某服务A监听了端口11434:localhost:11434。此时通过docker部署了另外一个服务B,服务B希望能够访问主机上的服务A,由于docker有内部网络的原因,在容器内部无法直接访问主机IP。docker20增加了解决办法解决方法1,添加host.docker.internal如果是dockerrun启动,在
HTTP中GET和POST详细理解
G丶AEOM
八股 普通学习区 计算机网络 http
HTTP中GET和POST简单来说GET的语义是从服务器获取指定的资源,这个资源可以是静态的文本、页面、图片视频等。GET请求的参数位置一般是写在URL中,URL规定只能支持ASCII,所以GET请求的参数只允许ASCII字符,而且浏览器会对URL的长度有限制(HTTP协议本身对URL长度并没有做任何规定)POST的语义是根据请求负荷(报文body)对指定的资源做出处理,具体的处理方式资源类型而不
Python 并发处理
亚图跨际
Python python 并发编程
特点介绍了一些最流行的库和框架,并深入探讨了如何将这些库用于您自己的高并发、高性能Python程序介绍了能够用Python编写您自己的并发和并行软件系统所需的并发的基本概念介绍调试和异常处理等概念,以及一些允许您创建事件驱动和反应式系统的最流行的库和框架内容加快速度并行化线程的生命线程间同步线程之间的通信调试和基准测试执行和池多进程事件驱动编程反应式编程使用GPU选择解决方案详情参阅-亚图跨际
理解http响应头中的Date和Age
iteye_14001
移动开发
Date:Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,04Jul201105:53:36GMT。Age:当代理服务器用自己缓存的实体去响应请求时,用该头部表明该实体从产生到现在经过多长时间了。比如访问http://www.yahoo.com/时,Date为Mon,04Jul201105:53:36GMT,标记为PageDate。使用抓包工具查看:再看其
ImageJ:科研与工业图像处理的利器
邱蒙励
ImageJ:科研与工业图像处理的利器imageJ下载链接项目地址:https://gitcode.com/Resource-Bundle-Collection/35869项目介绍ImageJ是一款功能强大的开源图像处理软件,广泛应用于科研和工业领域。无论您是从事生物医学研究、材料科学分析,还是工业质量控制,ImageJ都能为您提供高效、灵活的图像处理解决方案。本仓库提供了适用于不同操作系统和架构
【python语言应用】最新全流程Python编程、机器学习与深度学习实践技术应用(帮助你快速了解和入门 Python)
赵钰老师
python 机器学习 深度学习 python 机器学习 深度学习 数据分析 人工智能
近年来,人工智能领域的飞速发展极大地改变了各个行业的面貌。当前最新的技术动态,如大型语言模型和深度学习技术的发展,展示了深度学习和机器学习技术的强大潜力,成为推动创新和提升竞争力的关键。特别是PyTorch,凭借其灵活性和高效性,成为科研人员和工程师的首选工具。理解和掌握深度学习的基础知识,深入了解其与经典机器学习算法的区别与联系,并系统掌握包括迁移学习、循环神经网络(RNN)、长短时记忆网络(L
【JavaScript】Day01
boy快快长大
前端 javascript 开发语言 ecmascript
1.介绍1.1JS是什么一种运行在客户端(浏览器)的编程语言,实现人机交互效果。1.2作用网页特效(监听用户的一些行为让网页做出对应的反馈)表单验证(针对表单数据的合法性做出判断)数据交互(获取后台的数据,渲染到前端)服务端编程(node.js)1.3JS的组成ECMAScript:规定了JS基础的语法知识WebAPIs:DOM与BOMDOM:操作文档,比如对页面元素进行移动、大小、添加删除等操作
集成Dome开发实践:架构、工具与技术
易个小小钡原子
本文还有配套的精品资源,点击获取简介:集成Dome是将不同软件组件或服务高效组合的IT开发实践,旨在提升代码复用性、降低维护成本,并保障系统稳定可靠。关键集成概念包括接口设计、API调用、协议选择、数据交换格式、版本控制、依赖管理、测试与调试、错误处理与日志记录、容器化与微服务以及持续集成/持续部署(CI/CD)。"YouMengShare"可能提供特定集成解决方案,加速开发过程并提升效率。1.接
鸿蒙开发:文本合成语音
前言Android开发的同学都知道,在Android当中,实现一段文字合成语音播放,可以使用系统提供的对象TextToSpeech来很快的实现,如果不用系统自带的,也可以使用三方提供的,比如讯飞的语音合成等等,总之,实现起来多种多样,那么,在鸿蒙当中,如何实现根据指定的文本进行合成语音合成播放呢,其实也是非常的简单,因为鸿蒙当中也有textToSpeech。实现步骤第一步:创建引擎得到文本转语音类
人工智能爆火下,关于软件技术专业的发展思考
yzx991013
人工智能
软件技术专业作为信息技术领域的核心学科,其发展方向始终与技术进步和社会需求紧密相关。以下是软件技术专业未来发展的关键方向及学习建议:一、技术方向与前沿领域1.云原生与分布式架构方向:云原生技术(Kubernetes、Docker、Serverless)、微服务架构、分布式系统设计。原因:企业全面上云已成趋势,需要高效、弹性的云原生解决方案。学习建议:掌握AWS/Azure/GCP等云平台,学习服务
单片机原理与应用
weixin_58606202
单片机 嵌入式硬件
单片机是一种将计算机的CPU、存储器、输入输出接口等功能集成在一块芯片上的微型计算机,被广泛应用于各类控制系统和智能设备中。随着技术的不断发展,单片机在电子工程领域的重要性日益凸显。本文将详细探讨单片机的基本原理、常用型号、应用场景以及开发和调试工具,旨在为单片机的入门和进阶提供全面的指导。更多内容,请访问单片机的基本原理单片机作为微型计算机,其基本结构包括中央处理单元(CPU)、存储器、输入输出
《必知!G1 堆结构全揭秘,性能优化从这里开始》
@孤随
JAVA 性能优化
G1垃圾收集器原理与调优实践目录G1垃圾收集器简介核心设计原理2.1区域化堆内存布局2.2分代收集与混合GC2.3并发标记与SATB算法G1工作流程详解3.1YoungGC3.2MixedGC3.3FullGC调优参数与实战案例4.1关键JVM参数4.2电商系统调优案例4.3日志分析与工具使用避坑指南总结1.G1垃圾收集器简介G1(Garbage-First)是JDK9及以后版本的默认垃圾收集器,
《想让 MySQL 性能飙升?InnoDB 引擎里的这些门道你了解吗?》
@孤随
MySQL mysql 数据库
《想让MySQL性能飙升?InnoDB引擎里的这些门道你了解吗?》一、MySQL与InnoDB基础1.1MySQL架构概述连接层MySQL连接层就像是一个接待处,负责管理客户端与服务器之间的连接。当你使用各种客户端工具(如MySQLWorkbench、Navicat或者命令行工具)尝试连接到MySQL服务器时,连接层会对客户端进行身份验证。身份验证主要基于用户名、密码以及客户端的IP地址等信息。例
Golang 基础库之Time包
家了叭叭
Golang 1024程序员节
Timegoversion:go1.17.2提供了获取系统时间、时间计算、比较、等一系列操作go语言的诞生时间:2006年1月2号15点04分1.当前时间获取functimeDemo(){now:=time.Now()//当前时间fmt.Println("now:",now)year:=now.Year()month:=now.Month()day:=now.Day()hour:=now.Hour
C# 泛型使用案例_C# 泛型使用整理
天马3798
C# c# 开发语言 C# 泛型使用案例 C# 泛型使用整理
一、系统自带常用的泛型1.字典,集合//字典Dictionarydic=newDictionary();//泛型集合Listlist=newList();2.泛型委托,输入参数,输出参数//泛型委托---输出参数Funcshow=()=>{intnum=0;for(inti=0;igo=(num)=>{for(inti=0;itask=Task.Run(()=>{return"测试内容";});C
数字化转型三大核心要素:数据、技术、人才
千千标寻
大数据 云计算 人工智能 ai
数字化转型的三大核心要素——数据、技术和人才,是推动企业在数字经济时代取得成功的关键。数据数据是数字化转型的基础。高质量的数据能够为企业提供深刻的市场洞察和客户行为分析,帮助做出更明智的决策。通过有效管理和利用数据,企业可以优化运营流程,提升产品和服务质量,从而实现更高的效率和客户满意度。技术先进的技术支持是实现数字化转型的关键驱动力。无论是云计算、人工智能、大数据分析还是物联网,这些前沿技术的应
HDMI之HPD
cpsss0681
计算机外设
HDMI(19Pin)/DVI(16pin)的功能是热插拔检测(HotPlugDetect,HPD),这个信号将作为主机系统是否对HDMI/DVI是否发送TMDS信号的依据。HPD是从显示器输出送往计算机主机的一个检测信号。HPD是检测接收端是否连上的一种方法,而不管接收端是否上电。1、当计算机通过HDMI接口与显示器相连接时,主机通过HDMI的第18脚(PWR_CON_PIN18)将+5V电压加
量化交易技术简介
0010000100
linux
量化交易1.C++技术栈高频交易和低延迟系统对C++和Linux内核的要求极高,需要高效的代码执行、低延迟的通信机制、以及对操作系统底层的深入优化。以下是关键技术点:1.C++技术栈高频交易需要极致的性能优化,因此C++代码需要低延迟、高吞吐,通常采用以下技术:(1)高性能数据结构•Lock-free数据结构(无锁队列、环形缓冲区)•采用std::atomic和内存屏障(memorybarrier
Enum 枚举
120153216
enum 枚举
原文地址:http://www.cnblogs.com/Kavlez/p/4268601.html Enumeration
于Java 1.5增加的enum type...enum type是由一组固定的常量组成的类型,比如四个季节、扑克花色。在出现enum type之前,通常用一组int常量表示枚举类型。比如这样:
public static final int APPLE_FUJI = 0
Java8简明教程
bijian1013
java jdk1.8
Java 8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java 8的全新特性。
一.允许在接口中有默认方法实现
Java 8 允许我们使用default关键字,为接口声明添
Oracle表维护 快速备份删除数据
cuisuqiang
oracle 索引 快速 备份 删除
我知道oracle表分区,不过那是数据库设计阶段的事情,目前是远水解不了近渴。
当前的数据库表,要求保留一个月数据,且表存在大量录入更新,不存在程序删除。
为了解决频繁查询和更新的瓶颈,我在oracle内根据需要创建了索引。但是随着数据量的增加,一个半月数据就要超千万,此时就算有索引,对高并发的查询和更新来说,让然有所拖累。
为了解决这个问题,我一般一个月会进行一次数据库维护,主要工作就是备
java多态内存分析
麦田的设计者
java 内存分析 多态原理 接口和抽象类
“ 时针如果可以回头,熟悉那张脸,重温嬉戏这乐园,墙壁的松脱涂鸦已经褪色才明白存在的价值归于记忆。街角小店尚存在吗?这大时代会不会牵挂,过去现在花开怎么会等待。
但有种意外不管痛不痛都有伤害,光阴远远离开,那笑声徘徊与脑海。但这一秒可笑不再可爱,当天心
Xshell实现Windows上传文件到Linux主机
被触发
windows
经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下;之前我的做法现在看来好笨好繁琐,不过也达到了目的,笨人有本方法嘛;
我是怎么操作的:
1、打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面;(经常第一步都不顺利,无法挂载Windo
类的加载ClassLoader
肆无忌惮_
ClassLoader
类加载器ClassLoader是用来将java的类加载到虚拟机中,类加载器负责读取class字节文件到内存中,并将它转为Class的对象(类对象),通过此实例的 newInstance()方法就可以创建出该类的一个对象。
其中重要的方法为findClass(String name)。
如何写一个自己的类加载器呢?
首先写一个便于测试的类Student
html5写的玫瑰花
知了ing
html5
<html>
<head>
<title>I Love You!</title>
<meta charset="utf-8" />
</head>
<body>
<canvas id="c"></canvas>
google的ConcurrentLinkedHashmap源代码解析
矮蛋蛋
LRU
原文地址:
http://janeky.iteye.com/blog/1534352
简述
ConcurrentLinkedHashMap 是google团队提供的一个容器。它有什么用呢?其实它本身是对
ConcurrentHashMap的封装,可以用来实现一个基于LRU策略的缓存。详细介绍可以参见
http://code.google.com/p/concurrentlinke
webservice获取访问服务的ip地址
alleni123
webservice
1. 首先注入javax.xml.ws.WebServiceContext,
@Resource
private WebServiceContext context;
2. 在方法中获取交换请求的对象。
javax.xml.ws.handler.MessageContext mc=context.getMessageContext();
com.sun.net.http
菜鸟的java基础提升之道——————>是否值得拥有
百合不是茶
1,c++,java是面向对象编程的语言,将万事万物都看成是对象;java做一件事情关注的是人物,java是c++继承过来的,java没有直接更改地址的权限但是可以通过引用来传值操作地址,java也没有c++中繁琐的操作,java以其优越的可移植型,平台的安全型,高效性赢得了广泛的认同,全世界越来越多的人去学习java,我也是其中的一员
java组成:
通过修改Linux服务自动启动指定应用程序
bijian1013
linux
Linux中修改系统服务的命令是chkconfig (check config),命令的详细解释如下: chkconfig
功能说明:检查,设置系统的各种服务。
语 法:chkconfig [ -- add][ -- del][ -- list][系统服务] 或 chkconfig [ -- level <</SPAN>
spring拦截器的一个简单实例
bijian1013
java spring 拦截器 Interceptor
Purview接口
package aop;
public interface Purview {
void checkLogin();
}
Purview接口的实现类PurviesImpl.java
package aop;
public class PurviewImpl implements Purview {
public void check
[Velocity二]自定义Velocity指令
bit1129
velocity
什么是Velocity指令
在Velocity中,#set,#if, #foreach, #elseif, #parse等,以#开头的称之为指令,Velocity内置的这些指令可以用来做赋值,条件判断,循环控制等脚本语言必备的逻辑控制等语句,Velocity的指令是可扩展的,即用户可以根据实际的需要自定义Velocity指令
自定义指令(Directive)的一般步骤
&nbs
【Hive十】Programming Hive学习笔记
bit1129
programming
第二章 Getting Started
1.Hive最大的局限性是什么?一是不支持行级别的增删改(insert, delete, update)二是查询性能非常差(基于Hadoop MapReduce),不适合延迟小的交互式任务三是不支持事务2. Hive MetaStore是干什么的?Hive persists table schemas and other system metadata.
nginx有选择性进行限制
ronin47
nginx 动静 限制
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;...
server {...
location ~.*\.(gif|png|css|js|icon)$ {
java-4.-在二元树中找出和为某一值的所有路径 .
bylijinnan
java
/*
* 0.use a TwoWayLinkedList to store the path.when the node can't be path,you should/can delete it.
* 1.curSum==exceptedSum:if the lastNode is TreeNode,printPath();delete the node otherwise
Netty学习笔记
bylijinnan
java netty
本文是阅读以下两篇文章时:
http://seeallhearall.blogspot.com/2012/05/netty-tutorial-part-1-introduction-to.html
http://seeallhearall.blogspot.com/2012/06/netty-tutorial-part-15-on-channel.html
我的一些笔记
===
js获取项目路径
cngolon
js
//js获取项目根路径,如: http://localhost:8083/uimcardprj
function getRootPath(){
//获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
var curWwwPath=window.document.locati
oracle 的性能优化
cuishikuan
oracle SQL Server
在网上搜索了一些Oracle性能优化的文章,为了更加深层次的巩固[边写边记],也为了可以随时查看,所以发表这篇文章。
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。(这点本人曾经做过实例验证过,的确如此哦!
Shell变量和数组使用详解
daizj
linux shell 变量 数组
Shell 变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
your_name="w3cschool.cc"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用ba
编程中的一些概念,KISS、DRY、MVC、OOP、REST
dcj3sjt126com
REST
KISS、DRY、MVC、OOP、REST (1)KISS是指Keep It Simple,Stupid(摘自wikipedia),指设计时要坚持简约原则,避免不必要的复杂化。 (2)DRY是指Don't Repeat Yourself(摘自wikipedia),特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性、简洁性,并且可能导致代码之间的矛盾。 (3)OOP 即Object-Orie
[Android]设置Activity为全屏显示的两种方法
dcj3sjt126com
Activity
1. 方法1:AndroidManifest.xml 里,Activity的 android:theme 指定为" @android:style/Theme.NoTitleBar.Fullscreen" 示例: <application
solrcloud 部署方式比较
eksliang
solrCloud
solrcloud 的部署其实有两种方式可选,那么我们在实践开发中应该怎样选择呢? 第一种:当启动solr服务器时,内嵌的启动一个Zookeeper服务器,然后将这些内嵌的Zookeeper服务器组成一个集群。 第二种:将Zookeeper服务器独立的配置一个集群,然后将solr交给Zookeeper进行管理
谈谈第一种:每启动一个solr服务器就内嵌的启动一个Zoo
Java synchronized关键字详解
gqdy365
synchronized
转载自:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。
同步机制可以使用synchronized关键字实现。
当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。
当s
js实现登录时记住用户名
hw1287789687
记住我 记住密码 cookie 记住用户名 记住账号
在页面中如何获取cookie值呢?
如果是JSP的话,可以通过servlet的对象request 获取cookie,可以
参考:http://hw1287789687.iteye.com/blog/2050040
如果要求登录页面是html呢?html页面中如何获取cookie呢?
直接上代码了
页面:loginInput.html
代码:
<!DOCTYPE html PUB
开发者必备的 Chrome 扩展
justjavac
chrome
Firebug:不用多介绍了吧https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench
ChromeSnifferPlus:Chrome 探测器,可以探测正在使用的开源软件或者 js 类库https://chrome.google.com/webstore/detail/chrome-sniffer-pl
算法机试题
李亚飞
java 算法 机试题
在面试机试时,遇到一个算法题,当时没能写出来,最后是同学帮忙解决的。
这道题大致意思是:输入一个数,比如4,。这时会输出:
&n
正确配置Linux系统ulimit值
字符串
ulimit
在Linux下面部 署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用 其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进
hibernate调用返回游标的存储过程
Supanccy2013
java DAO oracle Hibernate jdbc
注:原创作品,转载请注明出处。
上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程。
此此扁博文的存储过程的功能相当于是jdbc调用select 的作用。
1,创建oracle中的包,并在该包中创建的游标类型。
---创建oracle的程
Spring 4.2新特性-更简单的Application Event
wiselyman
application
1.1 Application Event
Spring 4.1的写法请参考10点睛Spring4.1-Application Event
请对比10点睛Spring4.1-Application Event
使用一个@EventListener取代了实现ApplicationListener接口,使耦合度降低;
1.2 示例
包依赖
<p
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699