
web开发
TuskueNeko
此博客不再更新,新个人博客地址:reiner.host
展开
-
spring cloud微服务架构中使用自定义注解实现简单的权限控制与权限开关
前言在微服务架构下开发权限控制一般的做法是,独立开发一个专门用于鉴权的服务,其它服务每次请求接口时都调用鉴权服务鉴权,这样做的好处是,代码耦合低,权限控制功能好扩展,其坏处是每次鉴权都要请求鉴权服务,增加服务器资源消耗,因此我弄了一个简单的权限验证,能满足接口级别的验证,不通过专门的鉴权服务,而是每个服务自己去验证权限。权限验证开关注解 并非每个服务都需要验证权限,因此我们可以定义一个类似@EnableDiscoery这样的注解开关来控制:@Retention(Retention...原创 2020-09-15 19:13:59 · 1187 阅读 · 0 评论 -
分享一些学习安卓时的陈年老代码,以及其它一些java练习代码
我也不管有没有人能用得上了,总之放出来,用需要的自取首先是安卓的一个播放器和小游戏链接: https://pan.baidu.com/s/18xJmyKs3sRZT03maNCys5Q 提取码: 4twr安卓新闻app源码和java服务器源码:貌似新闻APP源码是用flutter做的,我忘记了。下载地址:链接: https://pan.baidu.com/s/1VAwJKYOEgOFE1yJTe81FWg 提取码: k7wtcocos2dx做的坦克大战嘿嘿...原创 2020-05-17 10:13:58 · 314 阅读 · 0 评论 -
Seata 多路服务调用时事务不回滚解决办法
最近使用了Seata作为分布式事务管理工具,在一般情况如: A服务调用B服务且A服务调用C服务,即A-B & A-C这种服务调用链路,当其中任意一个服务报错,事务是可以回滚的。然而,稍微复杂一点的情况我发现seata事务居然不会回滚了!即A-B &B-C & B-D,这种调用链路,seata就不会回滚了,我想说框架都快1.0版本了居然连这种情况都不支持吗?于是我查了...原创 2020-01-10 17:05:08 · 12052 阅读 · 9 评论 -
使用乐观锁解决电商中商品超卖的问题
电商项目中下单是要减库存的,但是当多个用户同时请求时会产生并发,导致多个线程同时减库存,库存可能变为负数,在这里我记一下一个简单的防止超卖的方法。JAVA代码:private ResultDTO<Object> checkAndUpdateInventory(SampleInventoryDTO dto, int index) throws InterruptedE...原创 2020-01-07 15:20:02 · 1083 阅读 · 0 评论 -
记一次mybatis返回自增主键的低级错误!
<insert id="insert" useGeneratedKeys="true" keyColumn="USER_ID" keyProperty="userId" parameterType="xxx.User">代码如上一切配置都没问题,然后我通过如下代码获取IDint userId = baseDao.insert(user);结果返回的是1 ,这里就犯了低级...原创 2019-04-23 14:15:34 · 365 阅读 · 0 评论 -
java使用redis模拟高并发秒杀活动
首先配置jedis包 <dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <groupId>redis.clients</groupId> <artifactId>j...原创 2019-03-23 21:06:45 · 2805 阅读 · 1 评论 -
[gitignore] git提交时忽略提交.classpath .project log和class等文件的提交
使用eclipse提交时总是会出现一些不需要提交 的东西在提交列表,因此只需要在项目目录建一个 .gitignore 文件就行了,然后加入如下配置:/target/*.class*.jar*.log/logs/*/target/*.gitignore.classpath.settings*.project/.idea/*PS:如果在windows下无法建" ."...原创 2019-01-08 13:47:52 · 9798 阅读 · 0 评论 -
记一次不可能的运行结果!我电脑出问题了???
调试oauth2源码找Bug结果发现这么一段代码:if (!this.grantType.equals(grantType)) { return null;} 那么问题来了,this.grantType和grantType值是一模一样!连ID也是同一个,但是运行结果居然是return null!上图为证 在下才疏学浅有没有大牛解释一下?...原创 2018-11-01 17:02:07 · 217 阅读 · 0 评论 -
记一次使用Spring JdbcTemplate的错误:java.io.NotSerializableException: org.springframework.jdbc.core.SqlParam
当时代码如下:template.queryForList(sql,sqlValues) 然后就报:java.io.NotSerializableException: org.springframework.jdbc.core.SqlParam 错误了。断点查看才发现它把sqlVlues解析成单个Object了,实际上它是个数组List<SqlParameterValue> sqlVal...原创 2018-06-27 13:41:06 · 3066 阅读 · 0 评论 -
spring boot中JdbcTemplate配合cglib实现无须建实体的通用查询
JdbcTemplate已经简单的封装了JDBC的操作,我们可以通过注解的方式直接拿到:@Autowired private JdbcTemplate template; 然后通过表名获取所有字段(代码仅为片段):DatabaseMetaData dbmd = conn.getMetaData(); ResultSet rs = dbmd.getColumns(conn.getCatalo...原创 2018-06-22 17:04:56 · 773 阅读 · 0 评论 -
spring通过注解方式依赖注入原理 (私有成员属性如何注入)
一、spring如何创建依赖的对象 用过spring的都知道我们在dao、service层加上@repository、@Service就能将这两个对象交给spring管理,在下次使用的时候使用@resource 或者@Autowired 就可以拿到而不需要自己再去new了,那么它是如何创建那些加上注解的对象的呢?通过JAVA反射拿到无参构造函数 以下只是举例:Constructor<...原创 2018-05-23 14:33:08 · 8771 阅读 · 1 评论 -
JAVA面试总结之多线程与线程池【一】
前言今年行情是真的不好,总结一句话就是狼多肉少,在经过了一段时间的磨练(打击)后将想到的与碰到的面试题分享出来,希望可以帮到大家,需要注意的是本章只写总结不写细节,要了解细节的朋友请自行搜索,最后说一句,不要放弃!尤其是某位开玩笑说要转行的朋友,多背背题肯定能找到的。java线程锁1.Synchronized,它就是一个:非公平,悲观,独享,互斥,可重入的重量级锁2.Reen...原创 2019-04-09 10:52:47 · 267 阅读 · 0 评论 -
java面试总结之集合【二】
Java所有集合类型1.ArrayList2.LinkedList3.Set 只允许一个null,且是无序的4.TreeSet 有序的,访问遍历比较快,底层基于TreeMap,TreeSet根据其 compare() 和 compareTo() 的定义进行排序的有序容器。5.TreeMap 红黑树数据结构,有序的,非同步6.HashSet 散列法,底层基于Hashmap,无...原创 2019-04-09 11:01:07 · 110 阅读 · 0 评论 -
java面试总结之杂项【三】
前言由于记的时候比较杂,因此全放杂项里面了,可能包括各种乱七八糟的东西。。。如有错误的地方还请指出,免得误人子弟。。。正文Http Tcp为什么需要四次挥手tcp之所以三次握手四次挥手是因为发送端的数据发送完了请求关闭连接,但接收端不一定接收完毕,因此需要来回重复确认。为什么需要三次握手如果只有两次握手,tcp/udp属于传输层 基于 ip网络层 socket和http...原创 2019-04-09 11:12:10 · 239 阅读 · 0 评论 -
java面试总结之微服务与redis【四】
前言如有错误的地方还请指出,免得误人子弟。。。正文微服务微服务概念理解1.将业务服务拆分成多个细小独立的服务2.每个微服务都是独立可运行的3.微服务本质是soa(面向服务架构)其是一种架构设计理念4.(更多请自行搜索)微服务的好处1.每个服务独立运行不受技术,数据库,等影响2.由于其划分精细,小部分功能升级不影响其他功能使用3.松耦合4.接口通用s...原创 2019-04-09 11:21:35 · 399 阅读 · 0 评论 -
使用Jenkins + Gitlab自动构建Spring Boot项目,并部署到远程服务器上
前言最近又重新弄了一下jenkins,虽然之前也有弄过但是都是在本地服务器部署,而且记录的不够详细,因此这次将写下详细部署过程。一、下载并启动Jenkins下载地址:https://jenkins.io/download/ ,选择下载war包下载完成后用FTP上传到服务器上输入启动命令:nohup java -jar jenkins.war --httpPort=70...原创 2019-05-15 18:48:44 · 4288 阅读 · 1 评论 -
Spring Mvc报异常:java.lang.reflect.UndeclaredThrowableException
原因:spring mvc反射找不到对应的方法解决:检查代码,是不是方法的修饰符写成了private或者protected原创 2019-05-22 18:24:03 · 1066 阅读 · 0 评论 -
pagehelper分页查询的一个坑,明明下一页没有数据了却还是返回了数据
解决:关闭这该死的合理化,如下配置:pagehelper:# helperDialect: mysql reasonable: false # 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据reasonable:false ...原创 2019-05-27 14:56:02 · 8316 阅读 · 6 评论 -
在spring boot中使用@EnableWebMvc 一定要注意的问题!
有时我们需要自定义一个spring mvc拦截器或者跨域之类的配置,然后在配置拦截器时会在config类上加上@EnableWebMvc,然而这个注解会带来一个问题,按官方的说法,@EnableWebMvc表示完全自己控制mvc配置,也就是说所有配置自己重写,所有默认配置都没了!有时会导致很多请求进不来,或者参数转换出错之类的,因为spring mvc默认的转换器已经不生效了,所以在大多数情况...原创 2019-07-11 15:14:05 · 3471 阅读 · 0 评论 -
总结一下微信扫码支付、小程序支付的几个坑
在调用微信支付接口中遇到各种问题,真不知道是哪个人才写的接口文档,几个简单的接口调了好几天。1、小程序获取code2Session时errcode出错时是会返回错误码,但正常时居然连这个字段都不返回了,说好的正常返回0呢?2、小程序支付的时间戳参数,在调用小程序支付接口时需要后台生成签名,有个timeStamp参数,文档上写的是当前时间,注意这里有个坑,它要的是到秒级别的,如果...原创 2019-07-31 16:29:38 · 2464 阅读 · 0 评论 -
解决mybatis plus 3.x 和pagehelper无法共用、包冲突问题
pagehelper-sprng-boot-starter和mybatis-plus-spring-boot-starter同时引入启动时会报错,即使按网上的排出pagehelper-starter的mybatis包依旧报错,具体解决办法如下:<dependency> <groupId>com.github.pagehelper</groupId...原创 2019-08-16 14:53:52 · 8152 阅读 · 2 评论 -
使用jpa的注解@Query 进行分页查询
jpa本身自带分页方法,repository.findAll(example,Pageable); 但这是简单的条件查询的情况下,如必须使用复杂的条件查询就必须自己写SQL/HQL了。在@Query中使用分页查询方法如下:@Query("SELECT DISTINCT c FROM Customer c JOIN c.partyCerts p where p.certNum=?")原创 2018-01-15 13:56:33 · 18663 阅读 · 1 评论 -
Linux启动WEB应用下报 java.net.SocketException:权限不够
原因是linux下出于安全着想不允许使用1024以下端口。解决办法: 使用sudo 启动如 : sudo nohup java -jar xxx.jar 这样如果是tomcat就只有使用端口映射了。原创 2017-11-17 10:22:09 · 1334 阅读 · 0 评论 -
说说自己对hibernate一级、二级、查询、缓存的理解。
今天面试碰到答不上来。。马上回家查了下,现在写下对hibernate缓存的理解以加深印象。1、一级缓存可以简单的理解为session缓存,即同一个session中使用get、load、迭代,会优先重缓存中取,如果没有则查询数据库并存入缓存,session关闭后缓存清空2、二级缓存可以直接理解为升级版,即sessionFactory 缓存,即只要使用的session是原创 2016-03-14 21:36:25 · 3042 阅读 · 0 评论 -
关于大量用户并发访问解决办法
1、最快最简单,换高配置服务器2、前台页面使用html静态3、缓存4、使用数据库集群5、图片访问和页面访问分离以上来自百度。原创 2016-03-17 12:13:51 · 1971 阅读 · 0 评论 -
对于java的堆、栈的自己理解
刚看了 关于堆和栈的博文,写下自己的理解加深影响。1、堆(heap)所有new出来的对象的都存放在堆里面,该对象的成员属性也和对象一起存放在堆中2、栈(stack)所有的局部变量,只要是基本数据类型的,如int,float等他的值和变量都存放在栈中,new出来的对象它的变量是存放在堆中的,也就是说程序通过在栈的中变量存储的内存地址找到在堆中的对象实际值,来达到访问数据的目的3、原创 2016-03-17 10:37:04 · 291 阅读 · 0 评论 -
在js中使用replaceAll 替换字符串
str.replace(eval(正则表达式),要替换的字符串);这次遇到的问题是 要替换 这样的 [0] 替换成 [1] 等等 结果怎么也无法成功,最后 改成这样了str.replace(eval(/\[0\]/),'[1]'); 结果还是不行, 最后终于找到问题, 正则表达式转义居然要两个斜杆,于是:str.replace(eval(/\\[0\\]/),'[1原创 2015-09-17 17:55:38 · 663 阅读 · 0 评论 -
自己理解的spring作用域。。。
singleton 相当于单例模式,该对象只有一个存在于spring容器中。prototype 相当于 servlet 每次请求都会产生一个新的实例。global 相当于application ,全局变量一样。另有 request,session 每次http请求会产生一个新的bean (实体对象)原创 2014-11-26 15:14:34 · 528 阅读 · 0 评论 -
弄了好久才弄好的nginx反向代理配置
实用nginx反向代理可实现 url转发, 如输入www.cc.com 直接转发到 127.0.0.1:8080/project/ 实用nginx 可直接输入url就可访问到tomcat的某目录下 端口号也可不用输入 很适合2个域名用同一台服务器的情况 下面是nginx的conf配置 首先在nginx.conf引入 配置文件include vhost.conf;新原创 2015-02-04 15:48:45 · 556 阅读 · 0 评论 -
EXTJS5的学习记录之TreePanel树的本地加载与异步加载
首先来创建一个store数据源 var store = Ext.create('Ext.data.TreeStore', { root: { expanded: false,//默认不展开 children: [ //这里是树的节点 有层级的 { text: "一级节点", leaf: true,id:'fir原创 2015-03-19 11:08:59 · 5006 阅读 · 0 评论 -
extjs5学习笔记之combobox
由于是demo 直接使用本地数据var cities = [ { id : 0, name : '城市 0' }, { id : 1, name : '城市 1' }, { id : 2, name : '城市 2' }, { id : 3, name : '城市 3' }, { id : 4, name : '城市原创 2015-03-19 11:23:07 · 1100 阅读 · 0 评论 -
extjs5学习笔记之grid panel
懒人一只 直接贴代码算了createGridPanel : function(url, height, pageSize) { //var sm = new Ext.grid.CheckboxSelectionModel(); if (!pageSize) pageSize = 10; var model = Ext.define('Product', { // 数据解析原创 2015-03-19 11:27:33 · 722 阅读 · 0 评论 -
Easyui通用消息提示、提交表单、ajax请求
其实就是封装了一下easyui自带的功能使之更加方便, 提交表单时带进度条/* *easyui通用js代码 * */function showMessage(title,text){ $.messager.show({ title:title, msg:''+text+'', timeout:2000, showType:'show', style:{原创 2016-05-05 15:18:29 · 5886 阅读 · 0 评论 -
java 控制器通用非空验证方法
使用了自定义注解,根据反射拿到注解和值判断该成员属性是否必须不为空首先是自定义注解import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotatio原创 2016-05-05 15:24:18 · 1266 阅读 · 0 评论 -
使用Shiro 集合Spring来实现权限控制
这只是笔记 web.xml中引入 spring-shiro.xmlspring-shiro.xml :<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://原创 2016-06-16 15:46:32 · 4999 阅读 · 0 评论 -
SpringBoot + CXF 开发Web Service 服务
首先是POM.XML <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/ma原创 2017-09-05 11:32:24 · 1943 阅读 · 0 评论 -
使用Ajax+JQuery构造分页查询列表
使用Ajax+JQuery构造分页查询列表原创 2017-09-05 11:12:31 · 576 阅读 · 0 评论 -
使用springMVC时发送请求报400错误
这是因为提交表单中有DATE类型的数据,SPRING MVC知道如何处理,加上以下代码即可/** * springMvc绑定类型处理 * @author xh * @param binder */ @InitBinder protected void initBinder(WebDataBinder binder) { //解除spring mvc list参数限制长度原创 2017-02-28 14:59:18 · 895 阅读 · 0 评论 -
sqlSessionFactory无法注入,报Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
转载源为:http://www.cnblogs.com/hawk0035/p/3337283.html?utm_source=tuicool 之前一直使用mybatis+mybatis-spring-1.1.1,系统升级mybatis后使用mybatis-spring-1.2.0,再其它配置均为修改的情况下运行出错:Property 'sqlSessionFactory' or转载 2016-12-22 17:22:34 · 9856 阅读 · 0 评论 -
快速排序笔记
以下是练习结果,对算法的理解参考:http://blog.youkuaiyun.com/morewindows/article/details/6684558package com.xh.tech.dac;public class Dac { public static void main(String[] args) { //快速排序 int[] arr = {32,5,22,88,56,3原创 2016-12-12 11:29:44 · 309 阅读 · 0 评论