自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

牵佳一诺的博客

错误使人进步

  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 后台数据校验hibernate-validator

hibernate-validator提供了类似长度校验等。用法如下1、pojo类上注解: @Length(max = 11, min = 11, message = "手机号的长度必须是11位.") private String phone; @Email(message = "邮箱不符合规则!") private String email;2、在control

2017-07-31 15:40:40 2610

原创 自定义的token为什么没有写入cookie中?

在使用nginx时,登录系统(sso系统,sso.a.com)和前台系统(www.a.com),当登录系统写入cookie后,跳转到前台系统时,正常情况下是不可能把cookie写入前台系统的。那怎么办?1、在nginx中的sso.a.com的server中追加proxy_set_header Host $host;重启。因为nginx会让tomcat压根不知道请求的真实域名是啥。这样写tomc

2017-07-31 15:33:56 2788

原创 SpringMVC的一个小坑

当请求是.html结尾的,那么是不能返回json的,要改变的方法是,在web.xml中DispatcherServlet追加一个,使它不是以.html结尾的,比如/xxx/*

2017-07-31 15:19:05 212

原创 Cookie、Token、Redis混合使用

在集群中,我们一般不会使用session,我们一般构造一个Cookie放入cookie和redis中。这里的token不是restful中的token,而是通过浏览器访问的token。restful的token不需要cookie,就是用responseEntity返回的。Cookie的生命周期如果创建时不指定(也就是默认值<0),那么是指到浏览器关闭时,cookie就消失了。所以这里就要...

2017-07-31 15:14:12 3705

原创 @Value用法注意事项

spring 不允许/不支持把值注入到静态变量中所以 @Value("${jdbc.url}")      public static String JDBC_URL;  是不会成功的,只会得到null。如果非要使用静态,只能用非静态setter 方法注入静态变量:public static String JDBC_URL;        @

2017-07-28 16:06:51 3487

原创 继承的一种应用

后台系统提供一个实体类Item,其中某个String类型的变量为image,数据库中是字符串,含逗号分隔。前台系统通过api返回这个实体类。用el表达式返回到前端,但是前端需要一个images参数,即item.images,它是一个数组。那么前台系统应该怎么做?写一个实体类继承ItemNew,添加getImages()方法,因为el表达式调用的是get方法,所以在getImages()方法

2017-07-28 09:05:08 213

原创 log4j与slf4j共存

当我们框架中使用log4j时,即通过org.springframework.web.util.Log4jConfigListener时,如果引入了slf4j-api那么将会使log4j部分失效,那怎么办?可以再添加如下依赖就可以了。org.slf4jslf4j-log4j121.7.25

2017-07-27 13:37:16 1098

原创 使用redis进行缓存

前台系统访问后台管理系统,如果要使用缓存,那么缓存逻辑一定放在后台系统。且要放在业务层。当使用redis缓存时,要注意,在业务代码(service类)中,首先先从redis中去获取,然后return。但是这里要用try-catch。因为我们的业务不能因缓存服务器宕机而抛异常。我们在使用redis作缓存时,如果使用以下方式private JdkSerializationRedisSeri

2017-07-27 11:16:36 16205

原创 spring整合redis集群配置

POM.xml org.springframework.dataspring-data-redis1.7.4.RELEASEredis.clientsjedis2.9.0org.springframeworkspring-test4.2.8.RELEASE----------------------------------------

2017-07-26 19:20:34 2979

原创 centos7下redis伪集群安装

在redis主从复制安装的基础上。我们可以实现集群安装。所谓集群,redis需要3主3从以上。我们在一台虚机上就是用6379至6384这6个端口。配置文件中在《redis主从复制安装》基础上增加的修改是1、cluster-enabled 设为true;2、bind 设为192.168.48.131 127.0.0.1(前者为本虚机IP)目的是为了后面spring和redis集群时能够连

2017-07-26 19:17:16 685

原创 前台系统首页面的广告问题

前台系统广告问题看似复杂,其实它的本质只是通过两张表来玩的。第一张表是内容类目表,主要包括类目id、父类目、类目名。比如首页->广告位->大广告...第二张表是内容表,通过类目id关联到内容类目表,它可以存储多条数据对应一个内容类目表。比如很多条含图片信息内容对应一个大广告。到时前台系统的大广告区域就会调用api查询到这多条数据,然后显示出来,达到轮播的功能。内容类目表和内容表的增删改

2017-07-25 18:53:39 487

原创 前台系统使用resttemplate调用后台系统显示注意事项

这里不使用jsonp形式,而是使用resttemplate去请求。要注意的是在解析返回的String时,将它封装成前台系统前端需要的格式,比如[{"xxx":"xxx"},{}]。那么前台系统后端在使用ObjectMapper解析后,要按照这个格式即List>的格式添加,等添加完毕后,使用ObjectMapper的writeValueAsString(list)来返回json串。最后再co

2017-07-25 18:38:30 639

原创 jsonp问题

jsonp是处理跨域问题的,其原理是html的<script>能够跨域访问js脚本,即后台返回一个字符串比如callback(xxx),并且前台正好定义了callback函数,那么就能被执行,里面的字符串可以解析成对象用。我们利用这个性质让后台返回一个String类型的回调函数让前台接收。这就要求我们在使用@responseBody时返回String,为了防止乱码,我们还得自定义消息转...

2017-07-24 17:29:59 321

原创 eclipse使用tomcat maven插件 Edit Source Lookup Path

使用 mvn tomcat:run 启动web应用,在debug模式下代码执行到断点处,不能显示对应的源码,出现 Source not found的错误警告,手动Edit Source Lookup Path后,源码闪一下就消失了。解决方法:安装dynamic-source-lookup插件,update地址:http://ifedorenko.github.com/m2e-extras/

2017-07-24 17:11:34 1842

原创 spring消息转化器

使用@responseBody时,如果返回类型是String,那么它是不会使用jackson去解析的,而是使用StringHttpMessageConverter。我们配置了,那么定位到AnnotationDrivenBeanDefinitionParser类的getMessageConverters方法,可以看到它默认加载了很多MessageConverter,其中有一个就是String

2017-07-24 15:16:25 393

原创 关于HA的一些概念

多个nginx之间集群不能互相通信,只能依靠多个keepalived。keepalived能相互通信,所以能感知。keepalived上层可以使用一个HAProxy做负载均衡。多个mysql之间也是不能感知,多个mycat之间也不能感知(一个mycat可以处理多台mysql的读写分离。多个mycat的目的理解为随机使用一个mycat来处理)所以在多个mycat上面可以使用多个k

2017-07-21 15:10:45 830

原创 规格参数设计思路

一个商品类目下的规格参数应该一致,只是数据不同。比如手机,规格参数应该一致,但值不一致。如果规格参数不一致,则使用版本号。如何实现?方案一:对每个类目创建一个表,写上字段。这样表就太对了,不推荐方案二:使用模板的思想。创建两张表,一张表是类目与规格参数的表。这个表中,规格参数不是多个字段,而是一个字段param,里面是json字符串比如:[{"group":"主体","params

2017-07-21 13:38:09 367

原创 RESTful 表单提交和ajax提交

如果是表单提交,那么后台参数基本就是对象。如果是ajax的post提交,比如data:{"paramData":JSON.stringify(json对象)},后台用@RequestParam("paramData") String xxx接收,当然也能用String  paramData接收。前者一般用在java类中的请求,如restTemplate

2017-07-21 10:03:10 2385

原创 spring父子容器与读取properties文件

读取properties文件中的内容,可以使用@Value比如@Value("${url}")public String url;properties文件内容是 url=xxxxxx但是它只能在它所在容器中使用。比如spring容器中加载了properties文件,但你这个注解使用在springmvc容器(子容器)的Controller中,那么是获取不到的。--------

2017-07-20 11:29:27 1312

原创 springmvc上传图片以及nginx+tomcat动静分离

nginx作为web服务器不能解析jsp等页面,只能处理js、css、html等静态资源。所以可以使用nginx反向代理来找到图片来显示(后面会写),图片在数据库就保存为反向代理所指定的路径。前台使用kindeditor富编辑器来完成图片上传的前台代码以及回显(href一个图片地址,比如image.xxx.com)。后台使用springmvc处理:1、commons-fileu

2017-07-20 09:08:29 2334

原创 一种基于抽象类的思想

如果CRUD是很多Service要做的,那么可以抽象出一个BaseService抽象父类,里面去实现一些CRUD方法(非抽象方法)。但会有一个问题,就是里面的DAO(Mapper)是不一样的,抽象类也不能用注入,那怎么办?解决方法:在抽象父类中提供一个获取DAO(Mapper)的抽象方法(比如getMapper()),让子类各自实现。那么抽象父类的CRUD方法中就可以使用getMapper()

2017-07-19 10:49:37 291

原创 windows安装nginx(不常用)

http://nginx.org/en/download.html去下载windows版本,放到英文目录下。

2017-07-19 10:06:40 279

原创 关于linux服务

如果安装了服务(如rpm安装的),启动时可以使用systemctl start xxx来启动,可以使用ps -ef | grep xxx来查询启动状态如果没有注册服务,比如yum安装的zookeeper等,不能使用systemctl start xxx来启动,但可以使用ps -ef | grep xxx来查询启动状态

2017-07-18 21:21:36 121

原创 安装单个Nginx

1、yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-developenssl openssl-devel 2、将nginx-1.6.4.tar.gz 放到自定义目录,比如/usr/local/src3、进入/usr/local/src ,命令 tar -zxvf ngi

2017-07-18 19:52:52 136

原创 使用eclipse创建父子工程

如果在eclipse中创建了pom工程,然后再创建一个maven工程并指定父工程,那么这个工程其实和父工程是平级的。后者只有在创建maven module工程时指定父工程,才能保证这个工程的目录在父工程中。此时工程pom中也会有一个  子工程名  只有有这个,才算能使用聚合功能。否则只有parent的话,只有继承功能

2017-07-17 14:32:00 1514

原创 使用token和SpringMVC来实现安全的RESTFul接口

首先写一个Controller,专门用于获取token的@Autowiredprivate UserService userService;@RequestMapping(value = "/token", method = RequestMethod.POST)@ResponseBodypublic ResponseEntity<TokenResult> getToken(@Requ...

2017-07-11 11:07:05 9482

原创 mysql单实例和多实例下跨主机备份

单实例: mysqldump -h192.168.48.131 -uroot -proot --opt dbname1 | mysql -h192.168.48.1 -uroot -proot -C dbname2; 从131服务器上将dbname1数据库备份到1上。多实例:mysqldump -h192.168.48.131 -S /var/lib/mysql1/mysql.sock -ur

2017-07-10 20:46:50 2360

原创 使用SpringSecurity和SpringMVC来实现安全的RESTFul接口

可以使用SpringSecurity在请求到@RequestMapping之前进行拦截。题外话:Spring的Interceptor(拦截器)是在@RequestMapping之后进行拦截的。

2017-07-10 17:47:45 2674

原创 使用SpringMVC实现RESTFul接口

当我们要返回状态码时, @ResponseBody下的方法返回类型要使用ResponseEntity,如ResponseEntity,ResponseEntity等,这样状态码会被写到响应头中,而不是响应体中查询:返回ResponseEntity    @RequestMapping(value = "{id}", method = RequestMethod.GET)    @Res

2017-07-10 15:28:10 1951

原创 何为REST

http://127.0.0.1/xxx/query/1GET http://127.0.0.1/xxx/save POSThttp://127.0.0.1/xxx/update POST http://127.0.0.1/xxx/delete GET/POST 以前我们的uri上都会指定一些描述参数,类似query、save、update、delete来表示增删改查,但其实是没必

2017-07-10 14:16:57 197

原创 前台encodeURIComponent,后台 URLDecoder.decode问题

spring在经过requestmapping后,会调用getParameter或其他方法,当我们用XssHttpServletRequestWrapper进行过滤时,要注意如果前台是经过encodeURIComponent传过来的那么参数会变为类似codeData=%7B%22jobgroup%22%3A...那么就必须使用 URLDecoder.decode进行解码,但是问题也来了。如果参数值

2017-07-07 14:17:31 2605

原创 redis的哨兵模式

在/myredis(存放redis6379.conf、redis6380.conf、redis6381.conf配置文件的地方)创建一个sentinel.conf文件,添加sentinel monitor host6379 127.0.0.1 6381 1sentinel monitor host6380 127.0.0.1 6381 1sentinel monitor host6

2017-07-06 18:52:10 266

原创 centos7下redis主从复制安装

在yum安装完redis后,我的bin目录在/usr/local/bin。从解压的文件中拷贝三份redis.conf到新建的/myredis下,可以重命名为6379.conf,6380.conf,6381.conf。这三个文件主要修改的地方是port(6379,6380,6381)、pidfile名(pidfile "/var/run/redis6379.pid",pidfile "/

2017-07-06 18:15:10 745

原创 centos7下mysql5.6的多实例实践

1、使用rpm安装后,会有三个重要目录1)var/lib/mysql 这是datadir,存数据库,存socket2)etc/my.cnf 这是从usr/share/mysql中的my-default复制过来的3)usr/bin/xxx xxx为一些mysql脚本命令2、将var/lib/mysql 复制成mysql1、mysql2,并chmod -R 777 var/lib/my

2017-07-06 17:21:22 1552

转载 zookeeper伪集群搭建

zookeeper

2017-07-05 14:15:02 201

步进电机55BF004

基于89C51,在PC系统机里,设计总线接口电路以及功率驱动电路控制一台三相反应式步进电机55BF004,用软件完成脉冲分配任务,实现电机的正反转

2013-07-04

空空如也

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

TA关注的人

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