thymeleaf springboot CRUD (新手向)

thymeleaf springboot CRUD (新手向)

前言

我是以我原来mybatis+druid+mysql做CRUD为基础https://www.jianshu.com/p/4b285b5b34f8,主要借鉴了https://blog.csdn.net/zhuyu19911016520/article/details/81537154。这个网址的没做分页,我的做了能在我的程序上运行的分页处理以及一些优化。其中,包括显示上一页与下一页(如果有的话),当前是第几页以及总共有多少页。在删除时不会删了最后一页的最后一个,直接跳到首页(这是不知为何的机制所致),而是对使用者友好的删除后还在当前页面(如果当前页面仍然有数据)。由于刚接触,所以在对于工具所提供的接口只会使用,背后的机制是不了解的。总之,网上找的代码大概意思能看懂,具体代码层面的工作流程需要通过修复一个一个bug,以及加些新功能或者优化一起学习。

放一下thymeleaf官网 https://www.thymeleaf.org/。如果英语差,可以看菜鸟教程。

项目目的

前后端共同实现mysql分页增删改查

文件结构


上代码

pom.xml

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

1.5.1.RELEASE

com.vue

mybatis_druid_mysql

0.0.1-SNAPSHOT

mybatis_druid_mysql

mybatis_druid_mysql

1.8

org.springframework.boot

spring-boot-starter-data-jpa

org.mybatis.spring.boot

mybatis-spring-boot-starter

org.springframework.boot

spring-boot-starter-web

mysql

mysql-connector-java

runtime

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

com.alibaba

druid-spring-boot-starter

1.1.14

org.projectlombok

lombok

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-maven-plugin

Controller

importcom.mybatis_druid_mysql.demo.Entity.Customer;

importcom.mybatis_druid_mysql.demo.Service.Service;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.data.domain.Page;

importorg.springframework.ui.ModelMap;

importorg.springframework.web.bind.annotation.ModelAttribute;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RequestParam;

importjava.util.Iterator;

@org.springframework.stereotype.Controller

@RequestMapping("customers")

publicclassController{

@Autowired

privateServiceservice;

@RequestMapping("edit")

publicStringedit(ModelMapmap,@RequestParam(value="pageNum",defaultValue="0")intpageNum,@RequestParam(value="pageSize",defaultValue="2")intpageSize,@RequestParam(defaultValue="0")intid){

//isAdd : 向前端页面返回一个是新增与编辑的标识

if(id>0){

map.addAttribute("isAdd",0);

map.addAttribute("customer",service.getById(id));

map.addAttribute("pageNum",pageNum);

}else{

map.addAttribute("isAdd",1);

map.addAttribute("customer",newCustomer());

map.addAttribute("pageNum",pageNum);

       }

return"customer/edit";

   }

@RequestMapping("goingToDel")

publicStringgoingToDel(ModelMapmap,@RequestParam(value="pageNum",defaultValue="0")intpageNum,@RequestParam(value="pageSize",defaultValue="2")intpageSize,@RequestParam(value="id")intid){

map.addAttribute("customer",service.getById(id));

map.addAttribute("pageNum",pageNum);

return"customer/goingToDel";

   }

@RequestMapping("list")

publicStringlist(ModelMapmap,@RequestParam(value="pageNum",defaultValue="0")intpageNum,@RequestParam(value="pageSize",defaultValue="2")intpageSize) {

System.out.println("============================");

Pagecustomers=service.getUserList(pageNum,pageSize);

System.out.println("总页数"+customers.getTotalPages());

System.out.println("当前页是:"+pageNum);

System.out.println("分页数据:");

Iteratoru=customers.iterator();

while(u.hasNext()){

System.out.println(u.next().toString());

       }

map.addAttribute("customers",customers);

map.addAttribute("pageNum",pageNum);

return"customer/list";

   }

//新增和编辑

@RequestMapping("save")

publicStringsave(ModelMapmap,@RequestParam(value="pageNum",defaultValue="0")intpageNum,@RequestParam(value="pageSize",defaultValue="2")intpageSize,@ModelAttributeCustomercustomer){

if(customer==null){

return"customer/list";

       }

if(customer.getId()!=null&&customer.getId()>0){

service.edit(customer);

}else{

service.add(customer);

       }

Pagecustomers=service.getUserList(pageNum,pageSize);

map.addAttribute("customers",customers);

map.addAttribute("pageNum",pageNum);

return"customer/list";

   }

@RequestMapping("del")

publicStringdel(ModelMapmap,@RequestParam(value="pageNum",defaultValue="0")intpageNum,@RequestParam(value="pageSize",defaultValue="2")intpageSize,@ModelAttributeCustomercustomer){

if(customer==null){

return"customer/list";

       }

service.delete(customer.getId());

Pagecustomers=service.getUserList(pageNum,pageSize);

Iteratoru=customers.iterator();

map.addAttribute("customers",customers);

map.addAttribute("pageNum",pageNum);

System.out.println(pageNum);

if(u.hasNext()){

System.out.println("1");

return"redirect:list?pageNum="+pageNum;

       }

elseif(customers.getTotalPages()!=0) {

pageNum--;

System.out.println("2");

return"redirect:list?pageNum="+pageNum;

       }

else{

System.out.println("3");

return"redirect:list?pageNum=0";

       }

   }

}

ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可。通过以下方法向页面传递参数:

publicModelMapaddAttribute(StringattributeName,ObjectattributeValue){...}

publicModelMapaddAttribute(ObjectattributeValue){...}

publicModelMapaddAllAttributes(CollectionattributeValues) {...}

publicModelMapaddAllAttributes(Mapattributes){...}

thymeleaf配置

###ThymeLeaf??

spring.thymeleaf.mode=HTML5

#????????HTML,XMLTEXTJAVASCRIPT

spring.thymeleaf.encoding=UTF-8

#???????

spring.thymeleaf.content-type=text/html

#????,?????

spring.thymeleaf.cache=false

#?????false,?????????????

spring.thymeleaf.prefix=classpath:/templates/

spring.thymeleaf.suffix=.html

spring.thymeleaf.prefix= classpath:/templates/spring.thymeleaf.suffix= .html

设置了thymeleaf的寻址地址以及文件格式。

Controller中return "customer/list";就是在thymeleaf的寻址地址基础上再寻址找到相应的页面。

至于return "redirect:list?pageNum=0"; 这是个重定位。相当于调用Controller方法 http://127.0.0.1:8080/customers/list?pageNum=0

edit.html

新增、编辑客户

id

goingToDel.html

删除客户

list.html

客户列表



新增用户



id

name

age

used

操作

编辑  

删除

  • 首页

  • 上班族适合兼职的副业有哪些?分享五个适合上班族做的副业 高省张导师
    对于许多上班族来说,除了日常工作外,还有大量的空闲时间,因此兼职成为了一项非常普遍的选择。下面将向您介绍五个不错的兼职副业,每个兼职都可以很容易地从家中启动,同时也是一个短期见效的方式,可以让您很快增加收入。大家好,我是高省APP最大团队,【高省】是一个可省钱佣金高,能赚钱有收益的平台,百度有几百万篇报道,也期待你的加入。高省邀请码520888,注册送2皇冠会员,送万元推广大礼包。1、社交导购电商
  • natapp内网穿透工具 万变不离其宗_8 工具其他
    1.NATAPP1分钟快速新手图文教程https://natapp.cn/article/natapp_newbie2.下载https://natapp.cn/#download3.使用本地配置文件config.ini,下载地址如下:https://natapp.cn/article/config_ini
  • 为求学母亲忍辱带我向亲戚借钱,学成后,我:舅舅恩情大于怨 木子瑾橙
    18年前,我去了省城的一所培训学校。临行前,我找舅舅借了500块钱生活费,舅舅一家拒绝了我。前几天,舅舅的小孙子因为心脏病,需要两万元做手术。我舅一家来我家借钱,我直接给了他三万。一瞬间,舅妈即感动又尴尬,泪流满面。我的所作所为让我妻子觉得特别不能理解。我流着泪告诉她,我和舅舅保守了21年的秘密...我出生在鄂西北的一个山村。我家世世代代都是农民。2003年,我高中毕业,没能考上大学,但我绝对不能
  • 【译】kube-router-8 操作指南 niufw_qb docker云原生k8s运维
    kube-router的健康检查kube-router目前的基本健康检查方式是,每次主循环成功完成后,每个控制器都会向healthcontroller发送心跳。健康端口默认为20244,但可通过启动选项进行更改。健康检查路径为/healthz.--health-port=如果端口设置为0(零),HTTP端点将不可用,但健康控制器仍将运行,并将错过的心跳打印到kube-router的STDERR中。
  • 滴滴打车 穆建园
    听说滴滴又出事了,8月24日下午,浙江温州乐清市女孩赵某在虹桥镇乘坐滴滴顺风车前往永嘉县,在向朋友发送“救命”讯息后失联。8月25日,警方在柳市镇抓获犯罪嫌疑人钟某,该滴滴司机钟某交代了对赵某实施强奸,并将其杀害的犯罪事实。赵某的家人和朋友表示,在事发后曾多次联系滴滴方面索要司机具体信息,等到4小时候才得到最终反馈。据了解,事发前一天也曾有人向滴滴平台投诉该司机,但未被即时处理。对此,滴滴平台表示
  • 四叶草系统会议总结-2021-09-06 小马过河的写作空间
    大家好,我是狂奔的小马哥,来自深圳,一名工程师,2020年2月注册芬香,2021年2月开始建群做芬香,2021年3月底离开了一段时间,2021年9月份重新进入这个团队首先感恩芬香公司提供的平台机会,感恩我的邀请人和老师小四老师,介绍给我这么好的事业,让我可以结识到这么好的平台和优秀的老师非常感谢老师邀请我重新参与会议,让我有机会向老师和优秀的小伙伴学习悟到:经书易得,人师难求在我离开的这段时间,我
  • 像风中的叶 月的第十七夜
    精彩因你而动生命因你而出爱因你而哭是否荒唐是否可耻心因你而牵扯行动因你而迷茫轻飘飘的如那风中的叶孤独而无助心难定向愁楚不能自已轻狂荡漾无所系失魂已落魄辛酸的泪不出眼敢问苍穹何处是我家天不语我自悲怜何所用何所泣伤者何以醒悟难言弃叶向风飘飘荡荡何以归根根缘何地情又何终灵又何归尘风徐徐过水声绵绵天地有别你我难相逢风扰尘灰叶动筋跳难耐无心之身情何以堪爱归何处轻飘飘失意梦已无语
  • 熬过雨天就是阳光明媚 城林细雨
    晚饭后,漫步在公园的石头小道上。一阵凉风轻轻拂过脸颊,身体略显一丝丝寒意。我斜靠在石椅上,目光不经意地投向星空,一捆枝叶在聚光灯的照耀下显示格外清澈和明亮。每当轻风掠过,一阵阵嗦嗦的声响向远处散去。随后便有几片碎叶不情愿地漂落下来,掉在石缝里。我惬意地拾起一片捏在手中,一丝淡淡的思绪涌上心间。图片发自App图片发自App【城林细雨原创日更】感谢你的驻足,减肥、投资和写作都是一场没有终点的修行,期待
  • 女人之死(一) 写悦
    无戒学堂IP营打卡15天,1708字,累计24069。(10.1日更第一天)江心挺着大肚皮,正在堂姐家沙发上休息。因为自己工作在一个偏远的县城,临近生产,决定在堂姐家住着,等到肚子有了生娃的动静,再去医院。堂姐在老家城区居住,城区的医疗条件好些,毕竟江心也是接近30岁了,还没有生第一胎。电话音乐响起来,是幺叔的电话,电话是传来幺叔心急如焚的声音,这在平时是不会有的。因为幺叔一向是一个自己过高兴了就
  • 淘宝超时发货赔付规则是什么 氧惠佣金真的高
    淘宝不发货赔偿规则主要包括以下几点:卖家超时未发货,需向买家支付实际成交金额的10%作为违约金。这个规定适用于大部分商品,除非是特殊商品。通过【氧恵】APP,可以免费领取淘宝及各大电商隐藏优惠券及返利,【氧恵邀请码:000888】(手机应用商店搜索“氧恵”下载,登录填写氧恵邀请码:000888,注册即享超高返利佣金,自用省,分享赚!)如果赠品在店铺中有单独出售的链接,违约金就按照赠品出售链接标明的
  • 使用POI以OLE对象的形式向excel中插入附件(pdf为例) 庄周的大鱼 excelpoiEasyExcel经验分享填充附件OLE
    前言:最近在使用easyExcel操作excel文件时,一直想找到一个方法可以往excel中填充附件,但是目前只发现POI可以插入附件,于是将方法记录如下:实现:这个方法主要是使用ApachePOI的HSSFWorkbook类来创建一个Excel文件,并在其中插入了一个作为OLE(ObjectLinkingandEmbedding)对象的PDF文件。同时,它还关联了一个图片,作为该PDF文件的预览
  • 党建引领“三农”发展 持续助力乡村振兴 一切照旧
    2022年中央一号文件《中共中央国务院关于做好2022年全面推进乡村振兴重点工作的意见》发布。文件指出,要扎实有序做好乡村发展、乡村建设、乡村治理重点工作,推动乡村振兴取得新发展、农业农村现代化迈出新步伐。助力乡村振兴,要聚焦党建引领,确保农业稳产增产、农民稳步增收、农村稳定安宁,切实做到“三农”向好,为乡村振兴夯实底盘、加油蓄能、跑出“加速度”。把准“三农”主动脉,开好党建引领“新药方”。做好“
  • ChatGPT:智能论文写作指南,让您成为写作高手 AI臻蚌 chatgpt4.0chatgptchatgpt人工智能AI写作
    ChatGPT无限次数:点击直达写作是学术研究中不可或缺的一环,然而,对于许多人来说,写作往往是一项艰巨而费时的任务。但是,现在有了ChatGPT,您将能够以前所未有的速度和准确性编写高质量的论文。本文将向您介绍如何利用ChatGPT的强大功能成为写作高手,并为您提供一些示例,展示其在不同领域的应用。1.简介ChatGPT是一种基于人工智能的语言模型,它可以理解并生成人类语言。通过训练大量的语料库
  • 新手在哪个平台写作容易赚稿费,写作投稿的平台 配音就业圈
    一、新手写作容易赚稿费的平台对于新手写手来说,选择一个容易赚取稿费的写作平台是非常重要的。一些知名的写作平台,如知乎、、今日头条等,都提供了赚取稿费的机会。此外,还有一些专门的写作平台,如稿定、创客贴等,也是新手写手容易获得稿费的选择。兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻
  • 什么软件可以改IP地址 bafnpa123 服务器运维
    什么软件可以改IP地址在现代网络环境中,有时候我们需要更换IP地址来进行网络操作。IP地址是网络通信的基石,它标识了计算机在互联网上的唯一身份。下面,我将向您介绍几种常见的换IP地址的方法:方法一:使用深度ip转换器ip转换器是一种可以在公共网络上建立加密通道的技术。通过ip转换器,您可以更换您的IP地址,从而隐藏您的真实IP,提高网络安全性。在选择ip转换器服务时,请务必选择信誉良好、速度稳定的
  • 奉女娲娘娘旨意迷惑纣王,玉虚门人云中子,为何还想除掉苏妲己? 中山人读文史
    女娲娘娘派的轩辕三妖,玉虚门人云中子,为何还想除掉九尾妖狐?前有北伯侯崇侯虎领兵围攻,后有西伯侯姬昌整军待发。曾在朝歌午门城中题下“永不反商”反诗的苏护,不得不重新审视所处的环境。纣王在奸佞小人费仲和尢浑的谄媚进言下,最终逼反了冀州侯苏护。经过一番厮杀和交战,苏护与崇侯虎的兵马,各有所伤。双方进入僵持阶段后,姬昌适时派遣了大夫散宜生通过一纸书信,成功劝说苏护向纣王献女,以避免随着事态的发展,造成苏
  • 配音怎么学,配音投稿有哪些平台 配音新手圈
    一、配音学习的方法为了学习配音技巧,可以采取以下方法:1.注册配音学习培训班,跟随专业老师学习基本的配音知识和技巧。兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻译、配音、无门槛、插画、翻译、等等。。。每日更新兼职。2.多观察、模仿优秀的配音演员,学习他们的表演风格和声音技巧。3.
  • 在线云客服兼职,网上客服兼职在家怎么做?怎么去应聘? 声优配音圈
    现在的年轻人越来越注重自主、自由,也更加注重个人时间的规划。在家兼职是符合这种趋势的一种方式,而阿里巴巴云客服作为一种在家兼职,以其稳定和高效获得了一定的关注度。下面兼职网给大家详细介绍一下。兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻译、配音、无门槛、插画、翻译、等等。。。每日
  • 向开发板上移植ip工具:将ip工具移植到开发板系统中 凌肖战 linuxarm开发网络
    一.简介前面一篇文章对ip工具源码进行了交叉编译,生成了ip工具。文章如下:向开发板上移植ip工具:交叉编译ip工具-CSDN博客本文对生成的ip工具进行移植,即移植到开发板系统中,并确定是否可用。二.向开发板上移植ip工具:将ip工具移植到开发板系统中
  • 张乐,中原焦点团队网络初级第33期,坚持分享第75天,2022-05-04 梦里花雕
    奇迹问句奇迹问句引导当事人进入想象:当问题已经获得解决时之未来美好愿景、细节以及正向影响为何。再结合其他问句带领当事人思考如何由目前的处境向此愿景靠近一步。奇迹问句给予当事人一个深层的相信与想象:他们的生活是可以改变的。如此将能鼓舞当事人拥有希望,也让当事人愿意思考可能改变的结果与好处。奇迹问句特别能在尊重当事人的问题强度下,使当事人能戏剧化地从谈论问题转而开始聚焦思考解决之道,同时还能帮助当事人
  • 使用Spring Boot Admin监控和管理Spring Boot应用程序 岚珂瓜呱 springbootspringboot后端javaspringmybatis数据库
    使用SpringBootAdmin监控和管理SpringBoot应用程序SpringBootAdmin是一个用于监控和管理SpringBoot应用程序的开源工具。它提供了一个直观的用户界面,用于查看应用程序的健康状态、详细信息、日志等,并支持一些管理功能。下面是一个简单的示例,演示如何在SpringBoot应用程序中集成SpringBootAdmin:添加SpringBootAdmin依赖:首先,
  • 手机上赚钱的方法有哪些?分享三种一部手机就能操作的赚钱方法 高省APP大九
    现在很多人都想着做第二职业,也就是兼职赚钱。就算能赚个零花钱也是好的,今天就给大家介绍可以利用自己的空闲时间能够赚钱的方法,一台手机就能操作的赚钱方式,看看哪种适合你。第一种:导购电商赚钱:一部手机就能操作的赚钱方法全网佣金最高的「高省」APP,高省邀请码:110000。分享商品及推广APP做团队赚佣金,适合新手小白(有导师一对一带)自用省,分享赚,高省含有自动云发单功能,可以解放双手,自动发群发
  • 自媒体运营培训机构,全媒体运营师 配音新手圈
    一、自媒体运营培训的重要性自媒体运营培训对于想要在自媒体领域发展的人来说非常重要。兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻译、配音、无门槛、插画、翻译、等等。。。每日更新兼职。通过培训,可以了解自媒体运营的基本原理和技巧,提高自己的运营能力和实战经验。二、如何选择合适的自媒体
  • 做的副业到底有哪些,如何通过副业赚钱 声优配音圈
    网上搜了很多副业,例如:短视频带货、直播带货、写作、开滴滴、送外卖、做任务、代驾、视频剪辑等等。兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻译、配音、无门槛、插画、翻译、等等。。。每日更新兼职。1.短视频带货:没有1000粉开不了橱窗。就算你有1000粉,你挂了链接,有可能一个月
  • 使用Spring Security进行LDAP(轻量目录访问协议)认证 岚珂瓜呱 springbootspringjava数据库后端开发语言springboot
    使用SpringSecurity进行LDAP(轻量目录访问协议)认证使用SpringSecurity进行LDAP认证非常简单,您只需配置SpringSecurity以连接到LDAP服务器并执行认证即可。以下是一个简单的示例,演示如何在SpringBoot应用程序中实现LDAP认证:添加SpringSecurity和SpringLDAP依赖:首先,您需要添加SpringSecurity和Spring
  • 在Vue中组件和组件之间的通信有哪些? qingyun989 vue.js
    1.父向子传数据?props2.子向父传数据?第一种方式:父向子传一个函数,子接收这个函数,然后子去调用这个函数,通过这个函数向子传数据第二种方式:组件的自定义事件绑定事件:负责接收数据触发事件:负责发送数据3.可以完成所有组件之间的数据,包括:兄弟之间、爷孙之间、但不限于这些全局事件总线4.怎么选择呢?父向子:props子向父:自定义事件其他的关系使用全局事件总线
  • 厌倦 小稀里糊涂
    习惯了一个人的面孔,经历了一番事实后,突然间发现面孔好陌生!明明应该是很生气,表现的却是出奇的高兴!记得有一句话说过,你越是想表现什么,就说明你越是越少什么!由此可以断定,她内心很不舒服,强作笑颜,只是为了向别人证明自己快乐!想到这,更不忍,也更不愿意,看到这一张虚伪的脸!令人作呕的脸!险些,我自己只想吐!她的目的,就是为了恶心,打击!目的达到了!可见其心机之甚!面对这种状况,我又应该如何应对呢?
  • 解线性方程组 qiuwanchi
    package gaodai.matrix; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Sc
  • 在mysql内部存储代码 annan211 性能mysql存储过程触发器
    在mysql内部存储代码 在mysql内部存储代码,既有优点也有缺点,而且有人倡导有人反对。 先看优点: 1 她在服务器内部执行,离数据最近,另外在服务器上执行还可以节省带宽和网络延迟。 2 这是一种代码重用。可以方便的统一业务规则,保证某些行为的一致性,所以也可以提供一定的安全性。 3 可以简化代码的维护和版本更新。 4 可以帮助提升安全,比如提供更细
  • Android使用Asynchronous Http Client完成登录保存cookie的问题 hotsunshine android
    Asynchronous Http Client是android中非常好的异步请求工具 除了异步之外还有很多封装比如json的处理,cookie的处理 引用 Persistent Cookie Storage with PersistentCookieStore This library also includes a PersistentCookieStore whi
  • java面试题 Array_06 java面试
    java面试题 第一,谈谈final, finally, finalize的区别。 final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能
  • 网站加速 oloz 网站加速
    前序:本人菜鸟,此文研究总结来源于互联网上的资料,大牛请勿喷!本人虚心学习,多指教. 1、减小网页体积的大小,尽量采用div+css模式,尽量避免复杂的页面结构,能简约就简约。 2、采用Gzip对网页进行压缩;    GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNⅨ系统的文件压缩。我们在Linux中经常会用到后缀为.gz
  • 正确书写单例模式 随意而生 java 设计模式 单例
      单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。   懒汉式,线程不安全   当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样
  • 单例模式 香水浓 java
    懒汉  调用getInstance方法时实例化 public class Singleton { private static Singleton instance; private Singleton() {} public static synchronized Singleton getInstance() { if(null == ins
  • 安装Apache问题:系统找不到指定的文件 No installed service named "Apache2" AdyZhang apachehttp server
    安装Apache问题:系统找不到指定的文件 No installed service named "Apache2" 每次到这一步都很小心防它的端口冲突问题,结果,特意留出来的80端口就是不能用,烦。 解决方法确保几处: 1、停止IIS启动 2、把端口80改成其它 (譬如90,800,,,什么数字都好) 3、防火墙(关掉试试) 在运行处输入 cmd 回车,转到apa
  • 如何在android 文件选择器中选择多个图片或者视频? aijuans android
    我的android app有这样的需求,在进行照片和视频上传的时候,需要一次性的从照片/视频库选择多条进行上传 但是android原生态的sdk中,只能一个一个的进行选择和上传。 我想知道是否有其他的android上传库可以解决这个问题,提供一个多选的功能,可以使checkbox之类的,一次选择多个 处理方法 官方的图片选择器(但是不支持所有版本的androi,只支持API Level
  • mysql中查询生日提醒的日期相关的sql baalwolf mysql
    SELECT sysid,user_name,birthday,listid,userhead_50,CONCAT(YEAR(CURDATE()),DATE_FORMAT(birthday,'-%m-%d')),CURDATE(),  dayofyear( CONCAT(YEAR(CURDATE()),DATE_FORMAT(birthday,'-%m-%d')))-dayofyear(
  • MongoDB索引文件破坏后导致查询错误的问题 BigBird2012 mongodb
    问题描述: MongoDB在非正常情况下关闭时,可能会导致索引文件破坏,造成数据在更新时没有反映到索引上。 解决方案:   使用脚本,重建MongoDB所有表的索引。 var names = db.getCollectionNames(); for( var i in names ){ var name = names[i]; print(name);
  • Javascript Promise bijian1013 JavaScriptPromise
            Parse JavaScript SDK现在提供了支持大多数异步方法的兼容jquery的Promises模式,那么这意味着什么呢,读完下文你就了解了。 一.认识Promises         “Promises”代表着在javascript程序里下一个伟大的范式,但是理解他们为什么如此伟大不是件简
  • [Zookeeper学习笔记九]Zookeeper源代码分析之Zookeeper构造过程 bit1129 zookeeper
       Zookeeper重载了几个构造函数,其中构造者可以提供参数最多,可定制性最多的构造函数是     public ZooKeeper(String connectString, int sessionTimeout, Watcher watcher, long sessionId, byte[] sessionPasswd, boolea
  • 【Java命令三】jstack bit1129 jstack
    jstack是用于获得当前运行的Java程序所有的线程的运行情况(thread dump),不同于jmap用于获得memory dump   [hadoop@hadoop sbin]$ jstack Usage: jstack [-l] <pid> (to connect to running process) jstack -F
  • jboss 5.1启停脚本 动静分离部署 ronin47
    以前启动jboss,往各种xml配置文件,现只要运行一句脚本即可。start nohup sh /**/run.sh -c servicename  -b ip -g  clustername   -u broatcast jboss.messaging.ServerPeerID=int  -Djboss.service.binding.set=p
  • UI之如何打磨设计能力? brotherlamp UIui教程ui自学ui资料ui视频
      在越来越拥挤的初创企业世界里,视觉设计的重要性往往可以与杀手级用户体验比肩。在许多情况下,尤其对于 Web 初创企业而言,这两者都是不可或缺的。前不久我们在《右脑革命:别学编程了,学艺术吧》中也曾发出过重视设计的呼吁。如何才能提高初创企业的设计能力呢?以下是 9 位创始人的体会。 1.找到自己的方式 如果你是设计师,要想提高技能可以去设计博客和展示好设计的网站如D-lists或
  • 三色旗算法 bylijinnan java算法
    import java.util.Arrays; /** 问题: 假设有一条绳子,上面有红、白、蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序, 您希望将之分类,并排列为蓝、白、红的顺序,要如何移动次数才会最少,注意您只能在绳 子上进行这个动作,而且一次只能调换两个旗子。 网上的解法大多类似: 在一条绳子上移动,在程式中也就意味只能使用一个阵列,而不使用其它的阵列来
  • 警告:No configuration found for the specified action: \'s chiangfai configuration
    1.index.jsp页面form标签未指定namespace属性。 <!--index.jsp代码--> <%@taglib prefix="s" uri="/struts-tags"%> ... <s:form action="submit" method="post"&g
  • redis -- hash_max_zipmap_entries设置过大有问题 chenchao051 redishash
    使用redis时为了使用hash追求更高的内存使用率,我们一般都用hash结构,并且有时候会把hash_max_zipmap_entries这个值设置的很大,很多资料也推荐设置到1000,默认设置为了512,但是这里有个坑   #define ZIPMAP_BIGLEN 254 #define ZIPMAP_END 255     /* Return th
  • select into outfile access deny问题 daizj mysqltxt导出数据到文件
    本文转自:http://hatemysql.com/2010/06/29/select-into-outfile-access-deny%E9%97%AE%E9%A2%98/ 为应用建立了rnd的帐号,专门为他们查询线上数据库用的,当然,只有他们上了生产网络以后才能连上数据库,安全方面我们还是很注意的,呵呵。 授权的语句如下: grant select on armory.* to rn
  • phpexcel导出excel表简单入门示例 dcj3sjt126com PHPExcelphpexcel
    <?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE);   if (PHP_SAPI == 'cli') die('This example should only be run from a Web Brows
  • 美国电影超短200句 dcj3sjt126com 电影
    1. I see. 我明白了。2. I quit! 我不干了!3. Let go! 放手!4. Me too. 我也是。5. My god! 天哪!6. No way! 不行!7. Come on. 来吧(赶快)8. Hold on. 等一等。9. I agree。 我同意。10. Not bad. 还不错。11. Not yet. 还没。12. See you. 再见。13. Shut up!
  • Java访问远程服务 dyy_gusi httpclientwebservicegetpost
        随着webService的崛起,我们开始中会越来越多的使用到访问远程webService服务。当然对于不同的webService框架一般都有自己的client包供使用,但是如果使用webService框架自己的client包,那么必然需要在自己的代码中引入它的包,如果同时调运了多个不同框架的webService,那么就需要同时引入多个不同的clien
  • Maven的settings.xml配置 geeksun settings.xml
    settings.xml是Maven的配置文件,下面解释一下其中的配置含义: settings.xml存在于两个地方: 1.安装的地方:$M2_HOME/conf/settings.xml 2.用户的目录:${user.home}/.m2/settings.xml 前者又被叫做全局配置,后者被称为用户配置。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml优先。
  • ubuntu的init与系统服务设置 hongtoushizi ubuntu
    转载自:  http://iysm.net/?p=178 init Init是位于/sbin/init的一个程序,它是在linux下,在系统启动过程中,初始化所有的设备驱动程序和数据结构等之后,由内核启动的一个用户级程序,并由此init程序进而完成系统的启动过程。 ubuntu与传统的linux略有不同,使用upstart完成系统的启动,但表面上仍维持init程序的形式。 运行
  • 跟我学Nginx+Lua开发目录贴 jinnianshilongnian nginxlua
    使用Nginx+Lua开发近一年的时间,学习和实践了一些Nginx+Lua开发的架构,为了让更多人使用Nginx+Lua架构开发,利用春节期间总结了一份基本的学习教程,希望对大家有用。也欢迎谈探讨学习一些经验。    目录 第一章 安装Nginx+Lua开发环境 第二章 Nginx+Lua开发入门 第三章 Redis/SSDB+Twemproxy安装与使用 第四章 L
  • php位运算符注意事项 home198979 位运算PHP&
    $a = $b = $c = 0; $a & $b = 1; $b | $c = 1  问a,b,c最终为多少?   当看到这题时,我犯了一个低级错误,误 以为位运算符会改变变量的值。所以得出结果是1 1 0 但是位运算符是不会改变变量的值的,例如: $a=1;$b=2; $a&$b;  这样a,b的值不会有任何改变
  • Linux shell数组建立和使用技巧 pda158 linux
    1.数组定义   [chengmo@centos5 ~]$ a=(1 2 3 4 5)   [chengmo@centos5 ~]$ echo $a   1   一对括号表示是数组,数组元素用“空格”符号分割开。    2.数组读取与赋值   得到长度:   [chengmo@centos5 ~]$ echo ${#a[@]}   5   用${#数组名[@或
  • hotspot源码(JDK7) ol_beta javaHotSpotjvm
    源码结构图,方便理解:   ├─agent                            Serviceab
  • Oracle基本事务和ForAll执行批量DML练习 vipbooks oraclesql
    基本事务的使用: 从账户一的余额中转100到账户二的余额中去,如果账户二不存在或账户一中的余额不足100则整笔交易回滚 select * from account; -- 创建一张账户表 create table account( -- 账户ID id number(3) not null, -- 账户名称 nam