
Web后端开发
文章平均质量分 94
嗡汤圆
这个作者很懒,什么都没留下…
展开
-
经纬度逆编码方法与性能优化
1.需求与即有方案本文需求来源于基础地理信息服务,需要将用户设备采集的经纬度信息转换为所处的行政区域。以往的方式是有以下几种1)直接使用高德web api 中的逆编码方式获取此方法问题在于高度依赖网络调用,难以实现高并发、快速查询。且高德web api有调用次数限制,无法做到无限使用。2)从网络上搜集行政区域数据,并且查询其中心坐标,计算用户传入坐标与中心坐标最近的区域作为逆编码结果此方法的问题在于,数据陈旧,无法有效更新,其次,以中心点坐标距离作为判断依据,对于行政区不规则边界而言,精度原创 2021-08-03 15:25:56 · 957 阅读 · 0 评论 -
通过AOP方式实现Service计算结果的缓存
AOP为Aspect Oriented Programming, 面向切面的编程。意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。Spring框架的AOP基础知识详见:Spring实现AOP的4种方式Spring AOP 详解原创 2015-08-09 13:55:38 · 1159 阅读 · 0 评论 -
搭建SpringMVC框架
框架项目请跳转到: springMVC本文在他人框架配置文件的基础上,学习Spring框架的知识,同时也结合多篇博文对框架进行改进与增加工鞥,比如缓存、多数据源以及AOP实现缓存处理等内容。仅供交流。感谢ZBB, 老乡就是给力!基本配置项目分为两个子项目:父项目:project子项目:web + coreMAVEN 依赖pom.xml配置首先父项目配置了底层的一些工具包依赖,以及定义了一些原创 2015-08-09 13:51:26 · 565 阅读 · 0 评论 -
远程部署tomcat工程到Linux服务器
基本linux命令略, 可以借助SecureCRT,以及SecureCRT FX 进行辅助。比命令高效得多=.=原创 2015-08-09 13:49:55 · 480 阅读 · 4 评论 -
hibernate中的通用<K,V>查询法
Hibernate查询封装原创 2015-08-09 13:38:05 · 554 阅读 · 0 评论 -
嗡汤圆的Spring Cloud自学(PART.1):统一配置管理(Cloud-config)
前言Spring cloud是较为完善的分布式微服务框架,网上教程数量较少,所以我就去油管上找了找,找到一个1小时多的视频,会翻的可以自行去看看 “Getting Started with Spring Cloud” 。里边的大牛讲的挺有意思的,而且是当场构建项目,编写代码并演示。 但是如果英文不好,或者没有耐心看视频的同学,可以看看这篇博客(接下来还会陆续更新Spring Cloud自学系列),原创 2016-10-11 22:48:17 · 1712 阅读 · 0 评论 -
搭建Redis主从集群搭建、redis-sentinel的配置以及Jedis对Sentinel的使用[ by 嗡汤圆 ]
前言某web项目中需要快速存取部分非结构化数据,对数据的安全性要求不高,同时由于web项目有多台服务器同时提供服务,并通过nginx负载均衡,需要保证客户端从任意一台服务器中均能读取到完整的数据。因此不能简单的在每台服务器中安装redis缓存,同时为避免单点故障,需要部署多台redis服务组成主从集群,而默认的主从配置仅仅保证了数据的复制与安全,并没有提供节点失败时的请求转移,因此需要配合re原创 2016-10-31 18:58:44 · 6938 阅读 · 3 评论 -
Spring在Thread中注入Bean无效的解决方式[嗡汤圆的小笔记]
在Spring项目中,有时需要新开线程完成一些复杂任务,而线程中可能需要注入一些服务。而通过Spring注入来管理和使用服务是较为合理的方式。但是若直接在Thread子类中通过注解方式注入Bean是无效的。因为Spring本身默认Bean为单例模式构建,同时是非线程安全的,因此禁止了在Thread子类中的注入行为,因此在Thread中直接注入的bean是null的,会发生空指针错误。以下分别列举错误原创 2016-12-28 18:11:41 · 12122 阅读 · 4 评论 -
SpringBoot应用多数据源支持[嗡汤圆的小笔记]
在某些应用场景中,SpringBoot应用可能需要同时连接多个数据源(同类型或不同类型数据库)进行数据处理和写入操作。下文将配置多数据源(两个Postgres数据库)为例进行说明。 其中: * 数据库-1维护表1,表3 * 数据库-2维护表2,表3 * 分别说明如何分别往表1,表2(各库独占表)写数据,以及分别往数据库-1的表3、数据库-2的表3写入不同的数据。1、项目搭建基础步骤,在sta原创 2016-12-30 20:22:39 · 1925 阅读 · 1 评论 -
SpringBoot Web/API的通用异常处理[嗡汤圆的小笔记]
view的异常处理SpringBoot Web项目中对于view的默认错误信息页如下: 并不十分友好,因此需要对异常进行自定义处理,步骤如下:建立@ControllerAdvice Bean。并分别为各异常类制定处理方式。为简单起见,本处仅对Exception(500错误)和NoHandlerFoundException(即404错误)进行处理设置ServletDispatcher,允许404原创 2017-01-18 12:09:10 · 2047 阅读 · 0 评论 -
SpringSecurity自定义登录接口 & Angular2的安全路由
在配置SpringSecurity的项目中,通过配置.authorizeRequests().antMathers("/path/**",....) 来设置哪些路径需要用户权限,哪些可以不登录浏览。但是如果在该项目中部署了Angular2单页应用的话,由于对SpringSecurity来说仅在第一次进入Angular2应用时经过了Security拦截,之后所有的页面跳转均在Angular2的路由管理原创 2017-03-01 08:58:50 · 7436 阅读 · 3 评论 -
小程序的会话保持
小程序的HTTP请求全部使用wx.request({})方法,但是该方法每次都会产生一个新的会话,因此在特定使用场景(安全验证、session保存、CSRF保护)等方面会遇到一些麻烦。比如csrf保护的应用中,即使上次拿到csrf,再下一次请求中又会失效。解决方法step 1: 获取sessionId以及csrf并保存已获取csrf为例,简单粗暴,在应用启动时候()可以在onLaunch时候)获取第原创 2017-03-30 09:38:29 · 10402 阅读 · 0 评论 -
基于SpringCloud微服务的服务平台搭建的一些总结
工作上项目的后台进行微服务改造后已经平稳运行将近1年了,起初项目为若干个单体web应用组成,之后由于上线App,需求的多样性和对于需求的响应速度有了更高的要求,因此为了快速响应需求变化,将后台进行微服务化改造。总的来说,改造初期由于既有系统我都非常熟悉,因此改造和迁移都比较顺利。在微服务架构的帮助下,新接入业务可以更专注于服务的实现,同时各个服务的功能也可以进行快速整合。目前平台的研发告一段落,后...原创 2018-07-11 16:41:05 · 7758 阅读 · 0 评论 -
关于MVC的进一步学习
前一段第一次接触SpringMVC的时候,是学习与开发同时进行的,难免会留下一些坏习惯,使的代码结构不够标准。现将最近看到的文章总结的一些想法归纳一下。原创 2015-08-09 13:59:56 · 443 阅读 · 0 评论 -
Spring实现定时任务
在SpringMVC搭建的服务器中,可能会在后台定时跑一些队列处理任务,这里根据网络参考资料提供两种思路:原创 2015-08-09 14:23:38 · 640 阅读 · 0 评论 -
基于SpringBoot的通用设备操作接口服务
需求分析我们有一个应用平台需要和某特殊服务器对接,实现对特殊服务器的一些操作以及状态信息的读取。但是该服务器由多个厂商完成,且每个厂商的实现方式不同,因此不能通过应用平台逐一实现每个厂商的接口调用。我们考虑在特殊服务器端部署一个通用操作接口服务,应用平台仅仅与该接口通信,而具体的命令下发则由该通用操作接口服务实施。此时,仅需在接口服务项目中实现不同厂商的命令实现即可。该接口服务的需求如下:接口服务原创 2016-03-24 21:21:52 · 4593 阅读 · 0 评论 -
在Spring Boot中整合Spring Security并自定义验证代码
最终效果 1、实现页面访问权限限制 2、用户角色区分,并按照角色区分页面权限 3、实现在数据库中存储用户信息以及角色信息 4、自定义验证代码原创 2016-02-25 15:58:06 · 51882 阅读 · 78 评论 -
SpringMVC 中Transactional注解的巨坑
最近的一个项目中对数据库事务的处理要求比较严格。比如要完成业务A,需要完成操作1和操作2, 如果操作1失败,则业务A要整体回滚;如果操作2失败, 则仅需回滚操作2的数据,操作1的数据要留下来。因此整个业务算是两个事务。发现的问题以前并没有认真整理过代码的结构,这次要实现上述要求在事务标签的放置位置上遇到了一个奇怪的问题。业务我放在一个Manager中处理,操作可能放在Service层,或者有些也放在原创 2016-01-10 10:59:23 · 5831 阅读 · 1 评论 -
SpringMVC在做静态资源映射的时候需要注意的问题
发现问题最近在开发一个小网站,需要支持在页面上播放视频资源(暂时没考虑流媒体服务器神马的,能正常播放就行)。于是在前端使用了HTML5的video标签。并且配合projekktor播放器来实现。因为还在开发阶段,视频资源的映射就直接交给SpringMVC本身了。video 的src如localhost:8080/web/resources/videos/aaaa.mp4 这样。同时在Spring中配原创 2016-01-09 21:01:48 · 3327 阅读 · 0 评论 -
SpringMVC+kaptcha实现图形验证码
SpringMVC实现图形验证码原创 2015-11-08 16:10:42 · 2694 阅读 · 0 评论 -
利用Ehcache实现支付超时限制
在线支付系统需要极高的稳定性,在有限的系统资源下,稳定性优先级要高于系统并发以及用户体验,因此需要合理的控制用户的支付请求。实际场景在一个小规模电商平台上,用户点击购买生成订单后,点击支付按钮后会经过如下过程: 1、系统后台与支付平台对接,获取支付请求。 2、用户终端接受加密过后的请求信息,跳转至支付平台WEB服务页面,开始支付流程。 3、系统发起异步进程轮询支付平台,已获取用户支付的结果(之原创 2015-09-08 16:19:47 · 2514 阅读 · 0 评论 -
JPA中的乐观锁
情景数据库操作时,对数据一致性要求较高的操作应该避免出现如下情况: 如图所示:若op1与op2同时读取了数据,op1先修改完毕并提交,op2在原数据的基础上修改数据并提交,此时op1的修改即被覆盖,数据处理出现错误。乐观锁乐观锁定(optimistic locking)是这样一种技术,它可以确保在实体的状态从数据库中读出来之后,只在没有中间插入的其它事务更改了与这个实体对应的数据库记录的情况下,才原创 2015-08-25 14:45:47 · 2501 阅读 · 0 评论 -
WEB项目中一些简单异步任务的组织与调度方法
在一些WEB项目中,为提升用户体验,一些耗时操作可以在用户提交后异步进行,而不需要立即显示执行结果。因此可以将这些操作委托给后台线程进行。原创 2015-08-19 10:19:01 · 1451 阅读 · 0 评论 -
个人使用SpringMVC框架项目的心得
4月19日更新 : 已在Github中上传了精简的SpringMVC框架的MAVEN工程包。可以在进行简单配置后使用。 链接: springMVC本文仅作SpringMVC框架使用过程中的一些个人总结。项目结构项目大致分为公共包(common-utils)、核心(core)、前端(web)三个工程。大致目录:Worksapce |-common-utils |-core |-web公共包c原创 2015-08-09 14:28:24 · 4924 阅读 · 0 评论 -
反射方式获取JPA Entity的属性和值
在记录日志或者调试的时候,往往需要输出数据库查询或者写入的值,或者在接口交互的时候,可能需要将实体转成JSON串传递出去。 在JPA中是以Entity的示例方式传递的。但是如果直接使用Entity.toString() 方法的话,输出的结果是entity@内存地址的形式,无法得知Entity的内部具体的属性和值。以下描述采用反射方式获取Entity的字段和值的方法:反射工具类以将实体转为JSON原创 2015-08-09 14:27:11 · 3525 阅读 · 0 评论 -
JPA下利于快速开发、快速调整业务的程序结构设计
主要使用场景:实体具有多种状态,状态转换路径多,状态转换业务处理相对复杂适用场景.原创 2015-08-09 14:26:29 · 540 阅读 · 0 评论 -
Spring基于自定义注解的用户认证
在编写网站后台的时候,往往在很多地方需要加入用户权限验证,若在每个权限验证的地方均加入验证判断代码,会显得代码较为冗余。原创 2015-08-09 14:24:36 · 2122 阅读 · 0 评论 -
JasperReport 报表在SpringMVC WEB项目中的应用(JavaBean作为数据源)
使用场景在本文中我将JasperReport应用于某业务管理系统(WEB)的综合查询页面中,用于报表展示以及PDF和EXCEL文件的导出。 使用效果如下: 模板制作在项目中使用之前,需要限制做好jasper模板。比较方便的做法是使用ireport制作模板。ireport界面ireport界面如下,我们可以新建一个A4空白页面,或者使用ireport中准备好的模板。 重要参数Fields 直原创 2016-01-27 17:55:10 · 16205 阅读 · 6 评论