Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎。类似JSP,Velocity,FreeMaker等,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。与其它模板引擎相比,Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用。
Thymeleaf初探
相比于其他的模板引擎,Thymeleaf最大的特点是通过HTML的标签属性渲染标签内容,以下是一个Thymeleaf模板例子:
Good Thymes Virtual Grocery
Welcome to our grocery store!
这是一段标准的HTML代码,这也就意味着通过浏览器直接打开它是可以正确解析它的结构并看到页面的样子。相比去其他的模板引擎在指定的位置通过${}
等表达式进行渲染,Thymeleaf则是一种针对HTML/XML定制的模板语言(当然它可以被扩展),它通过标签中的th:text
属性来填充该标签的一段内容。上例中,Welcome to our grocery store!
意味着
标签中的内容会被表达式#{home.welcome}
的值所替代,无论模板中它的内容是什么,之所以在模板中“多此一举“地填充它的内容,完全是为了它能够作为原型在浏览器中直接显示出来。
标准表达式语法
变量
Thymeleaf模板引擎在进行模板渲染时,还会附带一个Context存放进行模板渲染的变量,在模板中定义的表达式本质上就是从Context中获取对应的变量的值:
Today is: 13 february 2011 .
假设today
的值为2015年8月14日
,那么渲染结果为:Today is: 2015年8月14日.
。可见Thymeleaf的基本变量和JSP一样,都使用${.}
表示获取变量的值。
URL
URL在Web应用模板中占据着十分重要的地位,需要特别注意的是 Thymeleaf对于URL的处理是通过语法@{...}
来处理的。Thymeleaf支持绝对路径URL:
Thymeleaf
同时也能够支持相对路径URL:
另外,如果需要Thymeleaf对URL进行渲染,那么务必使用th:href
,th:src
等属性,下面是一个例子
view
view
view
几点说明:
上例中URL最后的(orderId=${o.id})表示将括号内的内容作为URL参数处理,该语法避免使用字符串拼接,大大提高了可读性
@{...}
表达式中可以通过{orderId}
访问Context中的orderId
变量
@{/order}
是Context相关的相对路径,在渲染时会自动添加上当前Web应用的Context名字,假设context名字为app,那么结果应该是/app/order
字符串替换
很多时候可能我们只需要对一大段文字中的某一处地方进行替换,可以通过字符串拼接操作完成:
一种更简洁的方式是:
当然这种形式限制比较多,|...|
中只能包含变量表达式${...}
,不能包含其他常量、条件表达式等。
运算符
在表达式中可以使用各类算术运算符,例如+, -, *, /, %
th:with="isEven=(${prodStat.count} % 2 == 0)"
逻辑运算符>
, <
, <=
,>=
,==
,!=
都可以使用,唯一需要注意的是使用<
,>
时需要用它的HTML转义符:
th:if="${prodStat.count} > 1"
th:text="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')"
循环
渲染列表数据是一种非常常见的场景,例如现在有n条记录需要渲染成一个表格,该数据集合必须是可以遍历的,使用th:each
标签:
Product list
NAME
PRICE
IN STOCK
Onions
2.41
yes
Return to home
可以看到,需要在被循环渲染的元素(这里是)中加入th:each
标签,其中th:each="prod : ${prods}"
意味着对集合变量prods
进行遍历,循环变量是prod
在循环体中可以通过表达式访问。
条件求值
If/Unless
Thymeleaf中使用th:if
和th:unless
属性进行条件判断,下面的例子中,
标签只有在th:if
中条件成立时才显示:
Login
th:unless
于th:if
恰好相反,只有表达式中的条件不成立,才会显示其内容。
Switch
Thymeleaf同样支持多路选择Switch结构:
User is an administrator
User is a manager
默认属性default可以用*
表示:
User is an administrator
User is a manager
User is some other thing
Utilities
为了模板更加易用,Thymeleaf还提供了一系列Utility对象(内置于Context中),可以通过#
直接访问:
#dates
#calendars
#numbers
#strings
arrays
lists
sets
maps
...
下面用一段代码来举例一些常用的方法:
#dates
/*
* Format date with the specified pattern
* Also works with arrays, lists or sets
*/
${#dates.format(date, 'dd/MMM/yyyy HH:mm')}
${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}
${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}
${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}
/*
* Create a date (java.util.Date) object for the current date and time
*/
${#dates.createNow()}
/*
* Create a date (java.util.Date) object for the current date (time set to 00:00)
*/
${#dates.createToday()}
#strings
/*
* Check whether a String is empty (or null). Performs a trim() operation before check
* Also works with arrays, lists or sets
*/
${#strings.isEmpty(name)}
${#strings.arrayIsEmpty(nameArr)}
${#strings.listIsEmpty(nameList)}
${#strings.setIsEmpty(nameSet)}
/*
* Check whether a String starts or ends with a fragment
* Also works with arrays, lists or sets
*/
${#strings.startsWith(name,'Don')} // also array*, list* and set*
${#strings.endsWith(name,endingFragment)} // also array*, list* and set*
/*
* Compute length
* Also works with arrays, lists or sets
*/
${#strings.length(str)}
/*
* Null-safe comparison and concatenation
*/
${#strings.equals(str)}
${#strings.equalsIgnoreCase(str)}
${#strings.concat(str)}
${#strings.concatReplaceNulls(str)}
/*
* Random
*/
${#strings.randomAlphanumeric(count)}
页面即原型
在Web开发过程中一个绕不开的话题就是前端工程师与后端工程师的协作,在传统Java Web开发过程中,前端工程师和后端工程师一样,也需要安装一套完整的开发环境,然后各类Java IDE中修改模板、静态资源文件,启动/重启/重新加载应用服务器,刷新页面查看最终效果。
但实际上前端工程师的职责更多应该关注于页面本身而非后端,使用JSP,Velocity等传统的Java模板引擎很难做到这一点,因为它们必须在应用服务器中渲染完成后才能在浏览器中看到结果,而Thymeleaf从根本上颠覆了这一过程,通过属性进行模板渲染不会引入任何新的浏览器不能识别的标签,例如JSP中的
,不会在Tag内部写表达式。整个页面直接作为HTML文件用浏览器打开,几乎就可以看到最终的效果,这大大解放了前端工程师的生产力,它们的最终交付物就是纯的HTML/CSS/JavaScript文件。
你可能感兴趣的:(Thymeleaf,spring)
Spring事务失效,常见的情况有哪些?
后端spring
1、事务失效的7种情况未启用spring事务管理功能方法不是public类型的数据源未配置事务管理器自身调用问题异常类型错误异常被吞了业务和spring事务代码必须在一个线程中1.1、未启用spring事务管理功能@EnableTransactionManagement注解用来启用spring事务自动管理事务的功能,这个注解千万不要忘记写了。1.2、方法不是public类型的@Transactio
Spring Boot整合SA-Token的使用详解
陈辰学长
spring boot 数据库 后端
SpringBoot整合SA-Token的使用详解,涉及到SA-Token的基本介绍、整合步骤、配置、常用API以及实际使用场景等多个方面。以下将详细阐述这一过程,确保内容不少于2000字。一、SA-Token简介SA-Token是一个轻量级的Java权限认证框架,由国人开发,主要解决登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。SA
Spring Boot 集成高德地图电子围栏
Cloud_.
spring boot 后端 java
摘要:本文手把手教你通过SpringBoot调用高德地图API实现电子围栏功能,涵盖云端围栏创建、设备位置监控与本地算法校验,附带完整代码和避坑经验!一、电子围栏核心原理1.1什么是电子围栏?虚拟地理边界:在地图上划定区域(圆形/多边形),触发进出事件应用场景:员工考勤、物流围栏、儿童安全区域监控技术核心:基于GPS/北斗坐标的位置判断(射线法或API调用)1.2高德地图API能力云端围栏管理:创
spring-data-jpa 动态条件 分页查询
小小小小小小小小小小码农
springboot
pom.xml配置org.springframework.bootspring-boot-starter-data-jpa数据库连接配置##############################################################数据源配置#############################################################spri
Ajax原理笔记
小鱼ccd
前端
1.后端如何把数据传给前端?后端通常通过HTTP接口(API)把数据传给前端,一般流程如下:(1)后端提供API接口后端使用SpringBoot开发API,通常返回JSON数据。例如,在Controller层定义一个接口,返回商品列表:@RestController@RequestMapping("/api/products")publicclassProductController{@GetMa
spring security学习入门指引
LCY133
web开发 spring 学习 java
学习SpringSecurity可以从以下几个方面逐步深入,结合理论与实践,以下是具体的学习路径建议:1.基础准备•熟悉Spring框架:先掌握SpringCore、SpringMVC和SpringBoot的基础,理解依赖注入(DI)、AOP、Bean生命周期等核心概念。•理解安全基本概念:了解认证(Authentication)、授权(Authorization)、加密(Hashing/Encr
Spring(6)——Spring、Spring Boot 与 Spring MVC 的关系与区别
南山不太冷
Spring spring spring boot mvc
Spring、SpringBoot与SpringMVC的关系与区别1.核心定位Spring定位:基础框架,提供IoC(控制反转)和DI(依赖注入)核心功能,管理对象生命周期及依赖关系。功能:支持事务管理、AOP(面向切面编程)、数据访问等,适用于所有Java应用(不限于Web)。SpringMVC定位:Spring的子框架,专注于Web层开发,基于MVC(Model-View-Controller
用maven生成springboot多模块项目
tan_jianhui
软件开发 spring boot maven java
用Maven生成SpringBoot多模块项目,可以按照以下步骤操作:1.创建父项目首先,使用Maven的archetype插件创建一个空的Maven项目作为父项目。打开终端,执行以下命令:mvnarchetype:generate-DgroupId=com.example-DartifactId=springboot-multi-module-demo-DarchetypeArtifactId=
RabbitMQ在Spring Boot中的使用
VioletAmaranth
java-rabbitmq rabbitmq spring
在SpringBoot中使用RabbitMQ涉及多个步骤,包括配置、创建监听器和发送消息。以下是详细的使用指南:1.添加依赖需要在项目的pom.xml文件中添加spring-boot-starter-amqp依赖:org.springframework.bootspring-boot-starter-amqp这将触发自动配置。2.配置文件在application.properties或applic
在Spring Boot中使用RabbitMQ实现延迟队列
angen2018
# spring boot rabbitMQ java-rabbitmq spring boot rabbitmq
要在SpringBoot中使用RabbitMQ实现延迟队列,有两种主要的方法:1.**使用TTL(TimeToLive)和DLX(DeadLetterExchange)**:这种方法不需要安装额外的插件,通过设置消息的TTL或者队列的TTL属性来实现延迟效果。当消息达到设定的TTL时间且未被消费时,它会变成死信(DeadLetter),并根据DLX和死信路由键转发到指定的延迟消费队列。这种方式的一
三级缓存无法解决的@Async的循环依赖异常以及@Lazy解决方案
八股文领域大手子
spring java 后端
在Spring中,@Async注解用于将方法标记为异步执行,其底层依赖动态代理机制实现。当Bean之间存在循环依赖且使用了@Async时,会因代理对象的生成时机与循环依赖的解决机制冲突而抛出异常。以下是详细分析:1.代理的生成时机与循环依赖的冲突(1)正常循环依赖的解决流程Spring通过三级缓存解决单例Bean的循环依赖问题:实例化阶段:创建Bean的原始对象,存入三级缓存(singletonF
SpringBoot 3.4.x踩坑记录及解决方案(持续更新)
brrdg_sefg
面试 学习路线 阿里巴巴 spring boot 后端 java
废话最近使用JDK17+SpringBoot3.4.0做新项目遇到的一些坑,记录并且给出一些实际的解决方案一、集成MybatisPlus3.5.9的问题第一:不能只引入mybatis-plus-spring-boot3-starter依赖了,需要配合mybatis-plus-jsqlparsercom.baomidoumybatis-plus-spring-boot3-startercom.bao
Spring Boot中使用RabbitMQ实现简单的消息发送与接收
Takumilovexu
MQ java-rabbitmq rabbitmq spring boot
文章目录环境准备1.RabbitMQ的基础配置2.实现消息发送功能3.实现消息接收功能4.总结在微服务架构和分布式系统中,消息队列是实现异步通信和解耦的重要工具。RabbitMQ作为一种常见的消息中间件,广泛应用于消息传递、任务分发等场景。本文将带你一步步实现如何在SpringBoot应用中使用RabbitMQ进行消息的发送和接收。我们将构建一个消息发送者(Publisher)和一个消息接收者(C
Java面试精选(1):Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系?
Java面试精选
spring java spring boot vue 编程语言
简单介绍Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring使你能够编写更干净、更可管理、并且更易于测试的代码。SpringMVC是Spring的一个模块,一个web框架。通过DispatcherServlet,ModelAndView和ViewResolver,开发web应用变得很容易。主要针对的是网站应用程序或者服务开发——URL路由、Session、模板引
Spring 核心注解深度解析教程
我不是少爷.
Java基础 spring python java
(涵盖@Component/@Repository/@Service/@Controller/@Autowired/@Qualifier/@Resource/@Value)一、组件扫描与分层注解1.@Component基础组件标识@Component//通用组件标识publicclassBasicComponent{//会被Spring自动扫描并注册为Bean}特性:所有组件注解的基类默认Bean
书籍-《深度生成模型(第二版)》
书籍:DeepGenerativeModeling作者:JakubM.Tomczak出版:Springer编辑:陈萍萍的公主@一点人工一点智能下载:书籍下载-《深度生成模型(第二版)》01书籍介绍本书是关于生成式AI背后模型的第一本全面著作,经过彻底修订,涵盖了所有主要类别的深度生成模型,包括混合模型、概率电路、自回归模型、基于流的模型、潜在变量模型、生成对抗网络(GANs)、混合模型、基于得分的
为什么很多人喷 Java 开发者离了 spring 框架就不会写代码了
getapi
java spring 开发语言
很多人批评Java开发者离开Spring框架后难以独立开发的原因可从技术特性与开发者习惯两方面分析:Java语言的历史设计局限Java的泛型实现存在缺陷,其原始值包装类(如Integer与int)的自动装拆箱机制出现较晚(Java5引入),且编译器无法彻底解决原始值与包装类的隐式转换问题[[1]][[2]]。这种设计导致开发者在处理基础类型与对象时需要额外关注类型转换,而Spring框架通过封装(
Spring Boot Security 实战指南:从零开始构建安全可靠的应用
无眠_
spring boot 数据库 网络
SpringBootSecurity实战指南:从零开始构建安全可靠的应用摘要:网络安全至关重要,SpringBootSecurity提供了强大的安全框架,帮助我们轻松构建安全可靠的应用。本文将从零开始,手把手教你如何在SpringBoot应用中集成SpringSecurity,实现用户认证、权限控制等核心安全功能,并结合代码示例,让你快速上手,打造坚如磐石的应用安全防线!1.引言:安全是应用开发的
Spring Boot 核心知识点精讲:助你快速上手与深度理解
无眠_
spring boot 运维 后端
SpringBoot核心知识点精讲:助你快速上手与深度理解摘要:SpringBoot以其约定优于配置、快速开发、易部署等特性,成为Java微服务开发的首选框架。本文将深入浅出地介绍SpringBoot的核心知识点,包括自动配置、起步依赖、依赖注入、外部化配置等,帮助读者快速上手SpringBoot并深入理解其运行机制,为高效开发SpringBoot应用打下坚实基础。关键词:SpringBoot,自
微服务架构: SpringCloud实战经验总结
苹果酱0567
面试题汇总与解析 课程设计 spring boot vue.js java mysql
微服务架构:SpringCloud实战经验总结一、微服务架构简介什么是微服务架构微服务架构(MicroservicesArchitecture)是一种以业务功能组织的松散耦合、高内聚的服务架构。它将传统的单体应用拆分成一组小型服务,每个服务都可以独立开发、部署、扩展和替换。微服务架构通过服务之间的松耦合和互相隔离,使得开发团队能够更快速地迭代和交付应用,同时提高了整体系统的可扩展性和灵活性。二、S
初见SpringCloud ing
Camellia0212
重生之我要做开发 spring spring cloud
Consul服务注册与发现服务注册与发现服务注册:微服务在启动时,会将自己的信息(如IP地址、端口、服务名称等)注册到Consul。服务发现:其他微服务可以通过Consul查询到已注册的服务,并通过这些信息进行通信。分布式配置管理Consul可以作为配置中心,管理分布式系统的配置。SpringCloudConsul可以将配置信息存储在Consul中,并在应用启动时或者运行时动态获取和更新这些配置信
利用Nginx构建简易大文件上传预防DoS攻击机制
AsterCass
nginx 运维
原文链接欢迎大家对于本站的访问-AsterCasc前言在前文使用Gateway作为SpringCloud网关中,我们使用接口限流,IP限流等方式一定程度可以防止普通的DoS攻击,对于更相对更复杂的DDoS攻击或者极端的Dos攻击,如果在只应用端进行防御的话效果相对有限所以当服务器资源允许,我们正常是会在服务器反向代理的位置设置负载均衡,但是这种防御处理的本质还是资源军备竞赛,技术上只是把护甲穿得更
javaweb中@Component和@Mapper和@Service和@RestController这几个注解要加在哪?为什么?
瑞金彭于晏
maven java spring boot spring
在JavaWeb开发中特别是在使用Spring框架(包括SpringBoot)时,@Component、@Mapper、@Service、@RestController这些注解扮演着非常重要的角色,它们用于定义组件的类型,并帮助Spring框架进行自动装配和依赖注入。下面分别解释这些注解应该加在哪里以及为什么:1.@Component加在哪里:@Component可以加在任何类上,表示这个类是一个
springboot是如何在没有web.xml的情况下在外部tomcat启动的
菜鸟王老汉
spring
最近在公司部署测试环境的时候遇到了问题,本地用springboot内嵌tomcat启动没有问题,部署到测试环境的外部tomcat就不加载,在咨询了同事之后在启动类上继承了SpringBootServletInitializer之后就没有了问题,但并没有深入去想。由于servlet的规范是要配置web.xml的,包括Struts2和spring都是要在web.xml配置的,有一天在服务器上看编译后的
学习SpringBoot过程中常见问题汇总及多工程项目使用 IntelliJ IDEA 打开
KunQian_smile
springBoot
一:SpringBoot:redisClientine.test.serviceImpl.RedisServiceImplrequiredabeanoftype‘com.examp1:没有自动注入导致。service类上面没有@service注解或者mapper上没有@Repository注解,但是这种情况比较少见,一般不会忘记。2:配置了mybatis,但没有指定扫描的包。(1)直接在生成出来的
Spring Data JDBC 详解
m0_74823933
面试 学习路线 阿里巴巴 spring java 数据库
目录一、JPA背景?二、SpringBoot整合SpringdataJDBC??1.配置数据源?2.配置Druid的admin后台??3.Spring-data-jdbc常用接口查询策略1)?CrudRepository增删改查2)PagingAndSortingRepository分页排序一、JPA背景早期的JPA的特性是懒加载和关联查询,一下能查出所有的关联信息,但我们开发者在查询SQL的时候
SpringBoot中Server层以及Mapper层常用注解
π大星的日常
java java-rabbitmq
最近看了一下SpringBoot2的课程,发现好多的注解并不是很了解,只是简单的会用,但是真是发生的作用却不知道,最近花了一些时间把这些注解进行了一下整理,针对不同的层级进行了细致的划分,最近几天会依次给大家更新关于注解的内容,对大家有帮助的话点赞支持一下哦!4.Service层注解@Service注解一般写在业务层的接口实现类上,而不是接口上。4.1@Service@Service:@Servi
解决注入mapper报红的问题
Jyannis
spring Spring Boot spring mybatis spring boot java bean
在spring系列集成mybatis时,我们经常遇到这样的问题:明明注入没有问题,但是intellijidea会报红。这是因为我们没有手动在代码里把mapper接口注入spring容器中,而@Autowired注入方式默认要求注入的对象必须是在spring容器中存在的。所以idea认为这里的userMapper不存在,而用户(我们)选择注入,是一种错误操作,就报红。那么怎么解决这个问题呢?以下提供
@Mapper、@Service以及@Component
MHP小喇叭
java 开发语言
在Spring框架中,@Mapper、@Service和@Component都是用于标记类的注解,但它们的用途和适用场景不同,以下是它们的核心区别和关系:1.@Component作用:Spring的通用组件注解,标记一个类为Spring管理的Bean,会被自动扫描并注入到容器中。适用场景:适用于任何需要被Spring管理的组件(如工具类、非业务层类)。示例:@Componentpublicclas
深入理解Spring Cloud中的服务发现与注册
weixin_836869520
spring cloud 服务发现 spring
深入理解SpringCloud中的服务发现与注册大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!服务发现与注册的重要性在微服务架构中,服务发现与注册是确保服务间通信的关键。传统的单体应用程序可能使用硬编码的方式调用其他服务,但在微服务环境中,服务的地址和实例可能动态变化,因此需要一种机制来动态地管理和发现服务。1.SpringCloud与EurekaSpringClo
戴尔笔记本win8系统改装win7系统
sophia天雪
win7 戴尔 改装系统 win8
戴尔win8 系统改装win7 系统详述
第一步:使用U盘制作虚拟光驱:
1)下载安装UltraISO:注册码可以在网上搜索。
2)启动UltraISO,点击“文件”—》“打开”按钮,打开已经准备好的ISO镜像文
BeanUtils.copyProperties使用笔记
bylijinnan
java
BeanUtils.copyProperties VS PropertyUtils.copyProperties
两者最大的区别是:
BeanUtils.copyProperties会进行类型转换,而PropertyUtils.copyProperties不会。
既然进行了类型转换,那BeanUtils.copyProperties的速度比不上PropertyUtils.copyProp
MyEclipse中文乱码问题
0624chenhong
MyEclipse
一、设置新建常见文件的默认编码格式,也就是文件保存的格式。
在不对MyEclipse进行设置的时候,默认保存文件的编码,一般跟简体中文操作系统(如windows2000,windowsXP)的编码一致,即GBK。
在简体中文系统下,ANSI 编码代表 GBK编码;在日文操作系统下,ANSI 编码代表 JIS 编码。
Window-->Preferences-->General -
发送邮件
不懂事的小屁孩
send email
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
动画合集
换个号韩国红果果
html css
动画 指一种样式变为另一种样式 keyframes应当始终定义0 100 过程
1 transition 制作鼠标滑过图片时的放大效果
css
.wrap{
width: 340px;height: 340px;
position: absolute;
top: 30%;
left: 20%;
overflow: hidden;
bor
网络最常见的攻击方式竟然是SQL注入
蓝儿唯美
sql注入
NTT研究表明,尽管SQL注入(SQLi)型攻击记录详尽且为人熟知,但目前网络应用程序仍然是SQLi攻击的重灾区。
信息安全和风险管理公司NTTCom Security发布的《2015全球智能威胁风险报告》表明,目前黑客攻击网络应用程序方式中最流行的,要数SQLi攻击。报告对去年发生的60亿攻击 行为进行分析,指出SQLi攻击是最常见的网络应用程序攻击方式。全球网络应用程序攻击中,SQLi攻击占
java笔记2
a-john
java
类的封装:
1,java中,对象就是一个封装体。封装是把对象的属性和服务结合成一个独立的的单位。并尽可能隐藏对象的内部细节(尤其是私有数据)
2,目的:使对象以外的部分不能随意存取对象的内部数据(如属性),从而使软件错误能够局部化,减少差错和排错的难度。
3,简单来说,“隐藏属性、方法或实现细节的过程”称为——封装。
4,封装的特性:
4.1设置
[Andengine]Error:can't creat bitmap form path “gfx/xxx.xxx”
aijuans
学习Android遇到的错误
最开始遇到这个错误是很早以前了,以前也没注意,只当是一个不理解的bug,因为所有的texture,textureregion都没有问题,但是就是提示错误。
昨天和美工要图片,本来是要背景透明的png格式,可是她却给了我一个jpg的。说明了之后她说没法改,因为没有png这个保存选项。
我就看了一下,和她要了psd的文件,还好我有一点
自己写的一个繁体到简体的转换程序
asialee
java 转换 繁体 filter 简体
今天调研一个任务,基于java的filter实现繁体到简体的转换,于是写了一个demo,给各位博友奉上,欢迎批评指正。
实现的思路是重载request的调取参数的几个方法,然后做下转换。
android意图和意图监听器技术
百合不是茶
android 显示意图 隐式意图 意图监听器
Intent是在activity之间传递数据;Intent的传递分为显示传递和隐式传递
显式意图:调用Intent.setComponent() 或 Intent.setClassName() 或 Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图;不指明调用的名称,根据设
spring3中新增的@value注解
bijian1013
java spring @Value
在spring 3.0中,可以通过使用@value,对一些如xxx.properties文件中的文件,进行键值对的注入,例子如下:
1.首先在applicationContext.xml中加入:
<beans xmlns="http://www.springframework.
Jboss启用CXF日志
sunjing
log jboss CXF
1. 在standalone.xml配置文件中添加system-properties:
<system-properties> <property name="org.apache.cxf.logging.enabled" value=&
【Hadoop三】Centos7_x86_64部署Hadoop集群之编译Hadoop源代码
bit1129
centos
编译必需的软件
Firebugs3.0.0
Maven3.2.3
Ant
JDK1.7.0_67
protobuf-2.5.0
Hadoop 2.5.2源码包
Firebugs3.0.0
http://sourceforge.jp/projects/sfnet_findbug
struts2验证框架的使用和扩展
白糖_
框架 xml bean struts 正则表达式
struts2能够对前台提交的表单数据进行输入有效性校验,通常有两种方式:
1、在Action类中通过validatexx方法验证,这种方式很简单,在此不再赘述;
2、通过编写xx-validation.xml文件执行表单验证,当用户提交表单请求后,struts会优先执行xml文件,如果校验不通过是不会让请求访问指定action的。
本文介绍一下struts2通过xml文件进行校验的方法并说
记录-感悟
braveCS
感悟
再翻翻以前写的感悟,有时会发现自己很幼稚,也会让自己找回初心。
2015-1-11 1. 能在工作之余学习感兴趣的东西已经很幸福了;
2. 要改变自己,不能这样一直在原来区域,要突破安全区舒适区,才能提高自己,往好的方面发展;
3. 多反省多思考;要会用工具,而不是变成工具的奴隶;
4. 一天内集中一个定长时间段看最新资讯和偏流式博
编程之美-数组中最长递增子序列
bylijinnan
编程之美
import java.util.Arrays;
import java.util.Random;
public class LongestAccendingSubSequence {
/**
* 编程之美 数组中最长递增子序列
* 书上的解法容易理解
* 另一方法书上没有提到的是,可以将数组排序(由小到大)得到新的数组,
* 然后求排序后的数组与原数
读书笔记5
chengxuyuancsdn
重复提交 struts2的token验证
1、重复提交
2、struts2的token验证
3、用response返回xml时的注意
1、重复提交
(1)应用场景
(1-1)点击提交按钮两次。
(1-2)使用浏览器后退按钮重复之前的操作,导致重复提交表单。
(1-3)刷新页面
(1-4)使用浏览器历史记录重复提交表单。
(1-5)浏览器重复的 HTTP 请求。
(2)解决方法
(2-1)禁掉提交按钮
(2-2)
[时空与探索]全球联合进行第二次费城实验的可能性
comsci
二次世界大战前后,由爱因斯坦参加的一次在海军舰艇上进行的物理学实验 -费城实验
至今给我们大家留下很多迷团.....
关于费城实验的详细过程,大家可以在网络上搜索一下,我这里就不详细描述了
在这里,我的意思是,现在
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
daizj
oracle ORA-12154
用easy connect连接出现“tns无法解析指定的连接标示符”的错误,如下:
C:\Users\Administrator>sqlplus username/
[email protected] :1521/orcl
SQL*Plus: Release 10.2.0.1.0 – Production on 星期一 5月 21 18:16:20 2012
Copyright (c) 198
简单排序:归并排序
dieslrae
归并排序
public void mergeSort(int[] array){
int temp = array.length/2;
if(temp == 0){
return;
}
int[] a = new int[temp];
int
C语言中字符串的\0和空格
dcj3sjt126com
c
\0 为字符串结束符,比如说:
abcd (空格)cdefg;
存入数组时,空格作为一个字符占有一个字节的空间,我们
解决Composer国内速度慢的办法
dcj3sjt126com
Composer
用法:
有两种方式启用本镜像服务:
1 将以下配置信息添加到 Composer 的配置文件 config.json 中(系统全局配置)。见“例1”
2 将以下配置信息添加到你的项目的 composer.json 文件中(针对单个项目配置)。见“例2”
为了避免安装包的时候都要执行两次查询,切记要添加禁用 packagist 的设置,如下 1 2 3 4 5
高效可伸缩的结果缓存
shuizhaosi888
高效可伸缩的结果缓存
/**
* 要执行的算法,返回结果v
*/
public interface Computable<A, V> {
public V comput(final A arg);
}
/**
* 用于缓存数据
*/
public class Memoizer<A, V> implements Computable<A,
三点定位的算法
haoningabc
c 算法
三点定位,
已知a,b,c三个顶点的x,y坐标
和三个点都z坐标的距离,la,lb,lc
求z点的坐标
原理就是围绕a,b,c 三个点画圆,三个圆焦点的部分就是所求
但是,由于三个点的距离可能不准,不一定会有结果,
所以是三个圆环的焦点,环的宽度开始为0,没有取到则加1
运行
gcc -lm test.c
test.c代码如下
#include "stdi
epoll使用详解
jimmee
c linux 服务端编程 epoll
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linu
Hibernate对Enum的映射的基本使用方法
linzx0212
enum Hibernate
枚举
/**
* 性别枚举
*/
public enum Gender {
MALE(0), FEMALE(1), OTHER(2);
private Gender(int i) {
this.i = i;
}
private int i;
public int getI
第10章 高级事件(下)
onestopweb
事件
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
孙子兵法
roadrunners
孙子 兵法
始计第一
孙子曰:
兵者,国之大事,死生之地,存亡之道,不可不察也。
故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五
曰法。道者,令民于上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑
、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法
者,曲制、官道、主用也。凡此五者,将莫不闻,知之者胜,不知之者不胜。故校
之以计,而索其情,曰
MySQL双向复制
tomcat_oracle
mysql
本文包括:
主机配置
从机配置
建立主-从复制
建立双向复制
背景
按照以下简单的步骤:
参考一下:
在机器A配置主机(192.168.1.30)
在机器B配置从机(192.168.1.29)
我们可以使用下面的步骤来实现这一点
步骤1:机器A设置主机
在主机中打开配置文件 ,
zoj 3822 Domination(dp)
阿尔萨斯
Mina
题目链接:zoj 3822 Domination
题目大意:给定一个N∗M的棋盘,每次任选一个位置放置一枚棋子,直到每行每列上都至少有一枚棋子,问放置棋子个数的期望。
解题思路:大白书上概率那一张有一道类似的题目,但是因为时间比较久了,还是稍微想了一下。dp[i][j][k]表示i行j列上均有至少一枚棋子,并且消耗k步的概率(k≤i∗j),因为放置在i+1~n上等价与放在i+1行上,同理