- 博客(66)
- 收藏
- 关注
原创 Springboot事务回滚时报错:No transaction aspect-managed TransactionStatus in scope
Spring AOP实际上是为每个@Service注解的类生成一个代理类,由于代理类的test1方法没有被注解修饰,Spring认为这里不用事务拦截器进行拦截,即便被调用类中使用了事务注解。事务@Transactional由spring控制时,它会在抛出异常的时候进行回滚。默认情况下,Spring会对unchecked异常进行事务回滚,也就是默认对 RuntimeException() 异常或是其子类进行事务回滚。这两个都可以用,对比了一下他们两个的方法和属性,发现后面的比前面的强大。
2023-11-14 15:08:54 2013
原创 mybatis xml里面报错The content of elements must consist of well-formed character data or markup.
核对xml里面的sql语句是否出现了”<”、”>”、”&”等字符,如果出现了需要进行转义。
2023-06-15 11:15:00 306
原创 以太坊学习三: Merkle树和验证
Merkle树又称为哈希树,是一种二叉树,由一个根节点、若干中间节点和一组叶节点组成。最底层的叶节点存储数据,在它之上的一层节点为它们对应的Hash值,中间节点是它下面两个子节点的Hash值,根节点是最后顶层的Hash值,这个一般成为Merkle根。Merkle树的层层Hash计算,任何底层叶节点或者说某个节点的数据变动都会传递到父亲节点,并直达树根。当叶子节点发生数据改变时,如果要比较两个集合的数据是否相同,则只需比较两次数据的树根即可,若底层叶节点数据相同,则树根相同;反之,树根便不相同。
2023-05-28 16:46:00 2304
原创 认识SpringCloud(一) 注册中心Eureka
Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理。在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。
2023-05-24 10:23:51 556
原创 认识常见中间件-redis(三)-redis缓存更新策略
redis缓存更新策略主要有三种:Cache Aside Pattern、Read/Write Through Pattern、Write Behind Caching Pattern。
2023-05-20 14:24:11 632
原创 java发起application/x-www-form-urlencoded格式的post请求
java发起application/x-www-form-urlencoded格式的post请求
2023-05-13 11:00:00 3090 2
原创 mysql在update语句中使用分页查询limit [offset,] rows
对于特定情况下,需要分页update,使用其他字段作为筛选条件又不能完全筛选出中间的数据,这个时候需要写limit 10,1000,但是默认情况下会报错。在update语句中 limit 前几条是没问题的,形如下面的写法。
2023-04-18 14:21:25 1390
原创 mybatis resultType为map 字段为null不返回
springboot+mybatis 返回类型为map时 字段为null不返回对应字段的解决方法
2023-03-30 18:54:05 1524
原创 mysql A表关联取B表对应最大/小/新值的数据
最近有一个需求,存在两个表dj_purchase和dj_request_dx_kgjgys,这两个表通过purchase_no字段关联;dj_purchase中的一个purchase_no对应dj_request_dx_kgjgys多条数据,现在需要拉取dj_purchase表每一个purchase_no对应dj_request_dx_kgjgys表中request_type最大的数据。
2023-03-16 21:31:25 1026
原创 Tomcat的类加载机制
Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给CommonClassLoader走双亲委托
2023-02-21 15:34:16 1051
原创 iframe调用页面添加header
场景:对于iframe集成的页面进行权限校验。由于iframe默认的src的不能传递header, 因此需要把iframe调用方式改为ajax,代码如下。写个测试的页面测试下。
2023-02-15 14:29:33 8264 2
原创 Mybatis报错: Error querying database. Cause: java.lang.NumberFormatException: For input string: “A“
报错信息:Error querying database. Cause: java.lang.NumberFormatException: For input string: “A”解决办法: xml里面 if 判断里面的条件判断字符串相等用双引号,外层套单引号。这是因为在比较的时候默认单引号括起来的是数字 ‘A’ 不能转化为数字 ,所以报错。注意test括起来的逻辑判断 用单引号的话 全部都用单号 (如果不保持一致的话,下面的写法还是会报错)
2022-11-06 14:48:58 10616 2
原创 以太坊学习二:签名
ECDSA是基于椭圆曲线生成公私钥进行数字验证和验证的算法过程。以太坊上两个账户Alice和Bob在以太坊网络中进行ETH转账交易的过程如下
2022-08-31 10:49:01 1230
原创 以太坊学习一:密码学
密码学作为区块链最基础的的技术之一,这些知识既包括对信息的转换、加解密,以及校验过程,也包括以太坊地址和交易Hash,交易信息RLP编码、基于椭圆曲线公私钥签名、区块Merkle树交易。Hash Hash在数学上也被成为"散列", 是指将任意长度的二进制(明文)转换为较短的固定长度的二进制(Hash值)。Hash算法的特点如下。输出长度小于输入长度对于任何输入都能进行快速和高效的计算强抗冲突性:任何输入改变都会影响大量的输出位。输入数据只要稍有变化,就会得到一个千差万别的结果,且结果无法
2022-04-13 09:55:56 6080 1
原创 Hyperledger Fabric排序服务实现
排序算法 solo kafka raftRaft (推荐) 作为 v1.4.1 的新特性,Raft 是一种基于 etcd 中 Raft 协议实现的崩溃容错(Crash Fault Tolerant,CFT)排序服务。Raft 遵循“领导者跟随者”模型,这个模型中,在每个通道上选举领导者节点,其决策被跟随者复制。Raft 排序服务会比基于 Kafka 的排序服务更容易设置和管理,它的设计允许不同的组织为分布式排序服务贡献节点。Kafka (在 v2.0 中被弃用) 和基于 Raft 的排序类似
2022-02-28 14:47:03 10472
原创 常见共识算法(PBFT、PoW、PoS、DPoS、Ripple)
共识机制是区块链的核心技术,比如PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)、PoW(Proof of Work,工作量证明)、PoS(Proof of Stake,权益证明)、DPoS(Delegate Proof of Stake,委托权益证明)、Ripple(瑞波)
2022-02-22 21:14:46 11571
原创 Spring AOP
AOP简介 AOP(Aspect Oriented Program)即面向切面编程,将程序抽象成各个切面。AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。AOP相关概念(1)通知(Advice): AOP 框架中的增强处理。通知描述了切面何时执行以及如何执行增强处理。(2)连接点(join point): 连接点表示应用执行过程中能够插入切面的一个点,这个点可以是方
2021-11-08 11:29:59 103
原创 Mybatis源码学习笔记之Mybatis二级缓存
简介 Mybatis一级缓存是会话级的缓存,而二级缓存则是应用级别的缓存,默认关闭,二级缓存使用不慎可能会导致脏读。开启方式(SpringBoot+Mybatis) application.properties添加配置mybatis.configuration.cache-enabled=true 在mapper的xml文件中的namespace中加上<cache></cache> 为了方便看到效果 ,application.properties设置日志级别
2021-10-28 23:01:26 214
原创 Mybatis源码学习笔记之Mybatis一级缓存
##一级缓存其实就是会话级的缓存,默认开启(可通过配置flushCache= true关闭),指的是在同一会话内如果有两次相同的查询(Sql和参数均相同),那么第二次就会命中缓存。
2021-10-27 17:54:38 148
原创 Mybatis源码学习笔记之核心组件
官方对于Mybatis的介绍: MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 官方文档:https://mybatis.org/mybatis-3/zh/index.html# Myba
2021-10-26 18:17:10 138
原创 认识常见中间件--Tomcat
Tomcat是一个常见的web和servlet容器,在日常开发中可能我们只是会用,写这篇博客的目录是想从整体上认识和了解tomcatTomcat的核心组件 作为web容器,我们从浏览器访问,经由tomcat最终到对应的servlet。我们本地访问tomcat的默认页面http://localhost:8080,其中http代表了网络协议,localhost是域名(即站点),8080是端口,共同构成了连接器,默认会访问ROOT这个文件夹,ROOT即为应用上下文,默认访问index.jsp即为资源。由
2021-10-24 21:55:59 1724
原创 org.apache.catalina.core.StandardService- Stopping service [Tomcat]
如题Springboot启动时报错:INFO org.apache.catalina.core.StandardService- Stopping service [Tomcat] 这个问题遇到的概率还是相对比较高的,特意总结一下,长期更新,欢迎大家补充和指正。 原因一:controller的@RequestMapping中url重复 原因二:springboot+mybatis时,实体类@Alias注解别名重复,或找不到对应的别名 原因三:springboot+mybatis时,sq
2021-10-08 16:22:29 7242
原创 fastjson序列化时字段前面的下划线缺失
对接接口时莫名其妙报了空指针异常,明明数据里面有,打印数据发现是fastjson的锅。public class Obj { private String _bom = null; ...} 序列化后的数据字段_bom没了,取而代之的是bom,过程中字段前面的下划线丢失了,解决方案是:给对应的字段加上注解@JSONField(name=“正确的字段名”)public class Obj { @JSONField(name="_bom") private String _bom = nu
2021-10-08 10:17:34 937
原创 Spring循环依赖源码解析(下)
Bean的创建 Bean的创建分为四步:getBean(“a”)实例化:createBeanInstance(“a”)填充属性:populateBean(“a”)初始化: afterPropertiesSet()循环依赖问题解决 为了解决Spring循环依赖问题,引入了三级缓存:单例池,半成品池,工厂池。下面定义来自源码:DefaultSingletonBeanRegistry.java /** Cache of singleton objects: bean name -->
2021-08-20 23:05:41 112
原创 Spring循环依赖源码解析(上)
什么是循环依赖 假设有两个对象A、B;B里面有个属性A,A里面有个属性B,这就是一个循环依赖的场景,对象间属性相互依赖。
2021-08-20 23:04:51 149
转载 闪电网络-哈希锁定
1.哈希锁定 哈希锁定模式是一种较易实现的跨链方案,该方案链不会因跨链而受到51%攻击 ,哈希锁定想法最早来源于BitCoinTalk论坛中TierNolan的帖子[1]。在该方案中,提出了哈希锁定模式的实现思路。 但是在单纯哈希锁定的交易中,某一方将拥有绝对的主动权,控制何时将hash(x)中的x提供给对方,例如在币价波动较大时候,发起交易的该方可以选择最合适的比例时,提供x给对方,进行交易,这样会对交易的另...
2021-04-09 11:52:05 608
原创 wamp配置404跳转地址
1.wamp\bin\apache\apache2.4.33\conf\httpd.conf注释掉以下几行2.在wamp www目录下放置.htaccess文件:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / ErrorDocument 404 http://wwww.baidu.com/</IfModule>同理可配置500等常见错误的跳转地址...
2020-08-30 17:57:57 361
原创 springboot+mybatis controller返回数据大写字段变小写
在使用springboot+mybatis时,实体字段属性均为大写字母开头,在返回给前端数据时,发现字段全部变为小写。查阅资料发现是在json序列化时,自动变为小写。分为以下几种情况:未使用fastjson(默认jackson) 1、在声明变量时加上注解: @JsonProperty 2、在set/get方法加上注解:@JsonIgnorepublic class Test{ @JsonProperty private String NAME; @JsonIgnor
2020-08-17 09:57:02 6629
原创 Fabric 上链数据大小限制
Fabric上链数据的大小与区块的最大值和区块能够写入的最大交易数是有关联的,以Fabric2.0版本为例,截取官方fabric-samples/first-network/configtx.yaml部分内容:################################################################################## SECTION: Orderer## - This section defines the values to e
2020-08-06 15:12:39 2094
原创 Fabric2.0 外部链码报错:undefined: shim.ChaincodeServer
问题 Fabric版本:2.0.1 构建完外部链码时,报错undefined: shim.ChaincodeServer。查阅官方文档,发现写法没有任何问题。去vendor文件夹,查看shim源码发现确实没有ChaincodeServer的定义,但是官方文档上写的2.0确实新增了接口。 由此猜测可能时依赖版本的问题。解决方案 之前依赖版本:require ( github.com/hyperledger/fabric-chaincode-go v0.0.0-2019082316252
2020-07-01 16:34:59 535
原创 Fabric2.0 Java链码开发实战(Maven工程)
本文主要介绍如何编写Fabric 2.0的Java链码,选用的是Maven工程(Gradle工程会有所不同)基础环境 jdk:1.8 maven:3.6.3 fabric java:2.0.1创建工程 创建maven项目,Archetype选择quickstart即可。 修改pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch
2020-06-30 23:14:41 3547 9
原创 Fabric2.0 使用开发模式(dev 模式)测试
dev模式 dev模式不是Fabric 2.0引入的,1.x版本就已存在的。对于Fabric 2.0来说,可以构建外部的链码容器,对于运维和开发调试来说,变得越来越方便。在2.0版本之前,链码是通过节点执行和维护的。开发模式在链码“编码/编译/运行/调试”的开发生命周期中很有用。本节不考虑外部链码的情形,后续会有博客去介绍外部链码。基础环境 确保已下载Fabric2.0版本镜像及二进制工具;已克隆fabric-samples。实践 fabric-samples 目录下执行:cd chain
2020-06-28 17:16:44 1871 6
原创 cannot find package github.com/hyperledger/fabric-chaincode-go/shim in any of: /usr/local/go/src/
问题 Fabric版本:2.0.1 在使用Java SDK 安装go语言链码时报错:failed to invoke backing implementation of ‘InstallChaincode’: could not build chaincode: docker build failed: docker image build failed: docker build failed: Error returned from build: 1 "/chaincode/input/src/
2020-06-26 15:58:03 8604
原创 Fabric2.0 新特性实践:通道成员可扩展链码
承接上文:Hyperledger Fabric 2.0新特性,Fabric2.0版本允许组织去扩展链码,也就是说通道成员之间的链码包可能会不同,这么做的好处是每个组织可以根据自身利益增加自己的业务逻辑。 为测试这一特性,本文将会对比Fabric1.4版本和Fabric2.0版本,阅读过程中注意当前版本,及时切换到不同分支。改造链码 测试网络选用:fabric-samples/first-network 链码选用:sacc 在本文中,我们基于sacc构建了另一个链码sacc-check,
2020-06-17 16:42:28 866 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人