学习笔记
这儿有个昵称
这个作者很懒,什么都没留下…
展开
-
mysql 逆向查询树状结构
思路:先定义一个变量 @r,默认值就是最初的code或id,用limit限制查询的次数,也可以理解为层级,新增一列,用户记录 每次查询的时候用变量值作为条件去向上查询的子查询,思路:利用单表的2个父子id或code字段进行查询,数据一条条从上往下查,所以要求按照倒序的排序要有规则,不然查询结果就会不对。需求:在一个具有层级结构的表结构中,我需要根据一个现有的code或id向上所有的父级code或id。一开始我想直接想在代码中用递归的方法逐级向上查询一条数据,直到到达顶层之后就结束。代码实现起来也不是很难。原创 2023-02-16 16:16:47 · 191 阅读 · 0 评论 -
Spring this调用当前类方法无法拦截
先给出代码示例package com.example.demo.service;import org.springframework.stereotype.Service;@Servicepublic class ProxyService { public void testA(){ System.out.println("进入A"); this.testB(); } public void testB() { System.原创 2022-03-18 17:14:31 · 553 阅读 · 0 评论 -
简单JDK动态代理demo
动态代理demo/** * @Description: 定义一个女孩,声明这个女孩想干的事 */public interface Girl { void date(); void watchMovie();}/** * @Date: 2022/3/5 * @Version: 1.1 * @Description: 定义一个可爱美丽的热辣美女 */public class HotGirl implements Girl { public Ho原创 2022-03-05 12:04:44 · 295 阅读 · 0 评论 -
spring 总结错误2
在spring中允许存在一个bean类型下的多个bean,每个bean的name要求不一样。1、当我们在使用这个类型bean时,需要具体指定是什么名称的bean,不然就会出错。默认情况下 bean的名称是首字母的小写,但是也有例外。可以通过查看下面的代码得到java.beans.Introspector#decapitalize如果这个bean的name 首字母和第二个字母都是大写就直接返回它本身的类名作为bean名,如果长度大于0不为null那么bean名就是类名首字母小写。我们也可以原创 2022-02-12 17:17:14 · 358 阅读 · 0 评论 -
spring 总结错误1
1、在application的启动类中默认的扫描路径是启动类的路径,要想自己的类能编译出来,需要放到同一路径或这个路径下,又或者用ComponentScan指定需要编译类的路径。可以通debug 类org.springframework.context.annotation.ComponentScanAnnotationParser#parse 下的 basePackages查看真实路径2、在spring中用注解@Service修饰类时,spring容器会自动帮我生成这个bean并放入到容器中,如果原创 2022-02-10 16:38:07 · 363 阅读 · 0 评论 -
javax 和hibernate 的NotBlank
问题:hibernate版本在5 的时候,如果你用了 import javax.validation.constraints.NotBlank;在校验的时会报错HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.String'. Check configuration for 'updateInfo.paramD原创 2022-02-09 17:07:40 · 2156 阅读 · 1 评论 -
idea启动时候报错,无法加载到Could not resolve placeholder ‘my.userName‘ in value “${my.userName}“
思路:明明在nacos有配置这个参数,不应该会拿不到。代码也没有错,放在其他模块下可以运行,那为什么还会提交说找不到呢。除非是在resources下的bootstrap.properties配置文件中的配置信息没有被读取。 思路:我们知道idea编译的时候会把类和配置文件加载到target包下,打开发现确实没有bootstrap.properties这个配置文件。解决:于是乎就去网上找问题为何会不生成配置文件呢?大致的解决方法有1、看看是不是路径有没有放错,在不在resources下面,看看resou原创 2022-01-07 11:16:19 · 2030 阅读 · 0 评论 -
java 基础
class son extends parent implements Impl2,这种写法,子类要想得到impl2接口的方法该怎么写呢?1、可以看成,父类先实现impl2接口方法再给到子类去继承。 这样,父类完成实现接口的方法后,通过继承给到子类。子类就“合法”有了impl2的方法2、也可以是先继承父类,再到子类中去写实现impl2接口的方法第一种方法好处是装逼、并且可以实现一种方法的隔离设计。如果再有一个子类son2去继承parent,那么这个son2也是可以有Impl2的方法...原创 2021-12-10 19:48:09 · 306 阅读 · 0 评论 -
Transactional 默认回滚策略和自定义回滚异常类型
首先:当我们使用声明式注解事务的时候,如果你只写Transactional 的话,方法返回中有写throws Exception 的话,idea会提示你要指定对应可能出现的异常类型。这个时候我就在想,这个事务的默认回滚异常类型是什么?如果我在注解中指定一个对应的回滚异常会发生什么?想是想不出的,只能看源码!!!随即写了个简单的测试类:1:不在事务注解上指定回滚异常类通过debug定位,定位到这个类点击进去找到后你会找到RuleBasedTransactionAttribute这个类中rol原创 2021-11-04 16:41:14 · 5267 阅读 · 1 评论 -
Mybatis-Plus查询时排除某列和更新字段的时候设置为null,忽略实体null判断
1、LambdaQueryWrapper<PlmCommonNoticeEntity> wrapper = Wrappers.lambdaQuery(plmNoticeEntity).select(PlmCommonNoticeEntity.class,info -> !"content".equals(info.getColumn()))2、@TableField(value = "`length`", updateStrategy = FieldStrategy.IGNORE.原创 2021-10-14 20:56:02 · 1226 阅读 · 0 评论 -
jdk 8 ConcurrentHashMap computeIfAbsent 里面也有死循环
建议使用的时候要避免key的hashcode重复,如果一样是会发生死循环的。例子:Map<String, Integer> map = new ConcurrentHashMap<>(16);map.computeIfAbsent(“AaAa”,key -> {return map.computeIfAbsent(“BBBB”,key2 -> 42);});先调用了 get 方法,如果返回为 null,则调用 putIfAbsent 方法,这样就能不原创 2021-10-08 13:54:49 · 227 阅读 · 0 评论 -
注解+分组校验在service方法中使用
场景描述之前在controller层中使用注解校验实体属性,现在因为是操作同一个实体类,但是需要在service中同样校验属性,同时还要区别某个属性,因为在这个service方法中并不是所有的属性都想着校验,部分属性是不需要校验的。解决方法1、现在实体类中把想要校验的属性分组,这个分组类可以是内部类这个类之所以要继承Default是因为需要使用它自带的@NotNull或其他的常见注解接着只要在实体类是使用就行@NotNull(message = “是否含运费不能为空”,groups = Che原创 2021-09-30 18:38:40 · 587 阅读 · 0 评论 -
final的使用
这里写自定义目录标题final的使用修饰基本类型修饰对象final修饰方法和类final的使用修饰基本类型1、在方法外声明一个全局的基本类型可以一直开始就直接赋值,如果不赋值需要在构造函数中给变量赋值。如:number2如果搭配static 和final一起使用的话,就需要你再static代码块中为该变量赋值(static修饰的常量只能在static代码中初始化)2、如果是在方法内部中定义一个final变量,可以先不赋值,但是必须要在使用的时候给这个变量赋值修饰对象修饰变量为对象的时候,必原创 2021-09-30 14:22:41 · 67 阅读 · 0 评论 -
分布式事务前看懂CAP、BASE
CAP、BASE跟后面要看的分布式事务有直接的关系,但是这两个分布式的理论对我们研究分布式系统里面的一些技术和方案都是作为基础的知识需要掌握的这个CAP这个东西啊,也是个在研究分布式相关的问题中,比较经典的这么一个理论,大家在学习下面的知识之前,最好是先有相关知识的一个积累,这样下面学习起来才会比较轻松一些CAP,就是Consistency、Availability、Partition Tolerence的简称,简单来说,就是一致性、可用性、分区容忍性,所以这个CAP理论讲的就是这么个东..原创 2020-11-28 11:01:10 · 244 阅读 · 0 评论 -
事务分析(面试)
1、面试题spring的事务支持(注解事务、声明事务、编程事务、事务的传播机制)?执行某个操作,前50次成功,第51次失败。a 全部回滚;b 前50次提交,第51次抛异常。ab场景分别如何设置spring事务。2、面试官心里分析聊完上面那个问题,面试官估计心里对你感觉相当不错了,但是呢,事儿没玩,还得聊聊实际项目中,你的java系统里的事务咋玩儿的啊?这就涉及到了spring对事务的支持,然后重要的事务传播机制!3、面试题剖析这个,你一般就聊下,spring...原创 2020-11-27 11:56:55 · 145 阅读 · 0 评论 -
互联网公司部署方案:蓝绿部署、灰度发布以及滚动发布
设计、开发、测试、部署,流程都讲过了,微服务技术栈,服务注册中心,nacos,RPC框架,dubbo,设计就要把各个服务拆分完毕,包括你的业务逻辑,需求,接口,数据库,类,功能的时序图每个人就负责开发自己的服务就可以了,nacos+dubbo用dubbo开发一些接口,只要定义一些接口和dubbo注解,更多的还是写java代码不同的环境之下,你的服务注册的namespace必须是不同的(1)滚动发布这是最常见的部署模式,一般就是说你一个服务/系统都会部署在多台...原创 2020-11-27 10:57:13 · 1086 阅读 · 0 评论 -
单机redis 一主三从三哨兵,windows 配置
首先先下载好redis文件,复制出三份分别命名为Master6379,slave6380,slave6381。真实的开发中redis都是要配置密码的,可以在redis.windows.conf中写上 requirepass "lsss" ,lsss就是你的密码。同时也要配置slaveof 127.0.0.1 6370 masterauth "lsss" ,在每个redis文件夹中新建sentinel.conf文件port26379sentinelmonitormymast...原创 2020-11-02 17:29:07 · 186 阅读 · 2 评论 -
处理Java异常的10个最佳实践
以下文章来源于Java之道,作者HollisJava之道有道无术,术可成;有术无道,止于道;「Java之道」致力于为广大Javaer传道授业解惑。以术识道,以道御术;线上代码不要使用printStackTrace()写完代码后请一定要检查下,代码中千万不要有printStackTrace()。因为printStackTrace()只会在控制台上输出错误的堆栈信息,他只适合于用来代码调试。真正需要记录异常,请使用日志记录。永远不要在catch块中吞掉异常catc...转载 2020-09-16 10:41:38 · 69 阅读 · 0 评论 -
Oauth2设置令牌过期时间accessTokenValiditySeconds,在代码中怎么判断是否过期
我们再配置ouath2的时候都会配置资源认证的服务器其中在配置授权服务器断点时会配置令牌的存储:tokenStore(tokenStore) ,这个令牌存储中会存令牌的过期时间,cliend_id,name等信息,一般默认使用InMemoryTokenStore()存储。我们可以在AuthorizationServerEndpointsConfigurer类中查看区别判断token的存储代码逻辑有了上面的前提后,我们直接在AuthorizationServerEndpointsConfigure原创 2020-09-07 17:36:58 · 8204 阅读 · 1 评论 -
windows 安装elasticsearch 5.2.2(包括head、kibana插件)
es5以上版本安装head需要安装node和grunt(之前的直接用plugin命令即可安装)安装ElasticSearch5.2.2一、需要安装jdk8(jdk7不可以)二、安装ElasticSearch5.2.21、从官方下载中心ElasticSearch Download下载ElasticSearch安装包2,开启ElasticSearch 服务将zip文件解压到E盘,进入E:\elasticsearch-5.2.2\bin目录,双击执行elasticsearch.b...原创 2020-09-01 17:08:59 · 139 阅读 · 0 评论 -
idea项目target下无法生成读取资源文件
先删除target ,再rebuild project 试试原创 2020-08-28 10:48:24 · 467 阅读 · 0 评论 -
下载安装Seata 0.9版本
1、先在网上下载seatahttps://seata.io/zh-cn/blog/download.html2、解压后修改思路:自定义事务组名称+事务日志存储模式为db+数据库连接信息进入---》seata\conf ,打开file.conf修改自定义的tx_group打开registry.conf,修改存储类型为db和配置数据库地址在本地数据库创建Seata数据库后,...原创 2020-08-25 17:39:29 · 1741 阅读 · 0 评论 -
Spring 中Singleton 和Prototype 的作用域差异
结论一:Singleton Bean 无论是依赖查找还是依赖注入,均为同一对象Prototype Bean 无论是依赖查找还是依赖注入,均为新生成的对象结论二:如果依赖注入集合类型的对象,Singleton Bean 和 Prototype Bean 均会存在一个。Prototype Bean 有别于其他地方的依赖注入结论三:无论是Singleton还是Prototype, 均为执行初始化方法回调不过仅 Singleton 会执行销毁方法回调...原创 2020-08-17 10:30:40 · 315 阅读 · 0 评论 -
CAS 导出证书到jdk报错拒绝访问
今天在接触CAS时,跟着视频敲代码发现如下问题:在网上查找才知道原来我才知道 C:\Program Files\Java\jdk1.8.0_144\jre\lib\security下的cacerts 文件是受到保护的。所以你想把证书添加进去会拒绝。解决办法:选中该文件,找到属性配置选择当前电脑的用户,修改权限。最后成功...原创 2020-08-13 17:43:43 · 781 阅读 · 0 评论 -
Spring Security 密码方式认证代码解析
Spring Security教程网上都有,可以先自行下载到本地运行。我现在只讲讲其中用密码认证时,匹配密码是否一致的具体代码在哪里看。首先,我们在WebSecurityConfig中先配置密码加密的方式,一般都是BCryptPasswordEncoder这种的加密方法让我们仔细分析认证过程:用户提交用户名、密码被SecurityFilterChain中的 UsernamePasswordAuthenticationFilter 过滤器获取到, 封装为请求Authentication,通常情况下原创 2020-08-12 11:57:25 · 306 阅读 · 0 评论 -
maven的jar库版本说明-----pom<version>
1.参考资料maven的版本规范(七) maven 依赖规则&版本锁定 Maven 依赖范围 Maven详解之------maven版本管理 maven依赖指定版本范围或者最新版本 dependencyManagement使用简介 maven指定版本号范围写法 Maven profiles 多环境配置,测试环境与开发环境分开打包2.版本定义pom中外部包引用实例,使用标签<version>管理版本。<dependency> <group转载 2020-08-14 15:57:02 · 3957 阅读 · 2 评论 -
OAuth2.0 个人理解
OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用代表用户获得访问的权限。同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程OAuth2.0它只是一个提供认证流程的标准方案, 它的请求路径和参数都是统一的标准。认证流程图如下:(1)资源拥有者打开客户端,客户端要求资源拥有者给..原创 2020-08-07 17:44:27 · 149 阅读 · 0 评论 -
@Transactional 的用法
开始主题@Transactional如果只这样写,Spring框架的事务基础架构代码将默认地 只 在抛出运行时和unchecked exceptions时才标识事务回滚。也就是说,当抛出个RuntimeException 或其子类例的实例时。(Errors 也一样 - 默认地 - 标识事务回滚。)从事务方法中抛出的Checked exceptions将不被标识进行事务回滚。1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=E...原创 2020-08-03 11:34:36 · 1461 阅读 · 0 评论 -
ObjectBean与BeanFactory之间的区别(小马哥视频笔记)
ObjectFactory 与 BeanFactory 均提供依赖查找的能力。ObjectFactory 仅关注一个或一种类型的 Bean 依赖查找,自身不具备依赖查找的能力,能力由 BeanFactory 输出;BeanFactory 提供了单一类型、集合类型以及层次性等多种依赖查找的方式。1、理解ObjectFactory关注一个Bean 的依赖查找可以在ObjectFactoryCreatingFactoryBean的注释翻译中可以看出这个类是会实现返回ObjectFactory的值,并且原创 2020-08-03 09:43:35 · 434 阅读 · 0 评论 -
Checked 和 Unchecked Exceptions
Java中的Exception层次结构Throwable是所有异常的父类,并且进一步扩展为Exception和Error两个类。Java中的Exceptions可以分为两个主要的分支什么是Unchecked Exceptions?字面上是不检查的异常,指的是程序在编译期时不会检查的异常。这些异常都继承于RuntimeException,运行时的异常说明只会在程序运行时才会出现,固然编译期不会检查那么CheckedExceptions 有哪些呢?有以下这些:FileNotF..原创 2020-08-03 08:45:50 · 193 阅读 · 0 评论 -
如何注册Spring Bean
BeanDefinition 外部单体对象(对象的生命周期并不由Spring来直接管理)Rumenz.javapackage com.rumenz;public class Rumenz { public void print(){ System.out.println("......."); }}BeanDefinition(BeanDefinitionRegistry)package com.rumenz;public class De...原创 2020-07-29 09:45:28 · 109 阅读 · 0 评论 -
回调函数-理解
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。B类中引用了A类,并将A类作为B类中某一个函数的参数,并且在B类中用引用该A类的值来调用A类中的方法。// A 类public interface A { myfUnc();}//B 类public class B{ priva原创 2020-07-21 11:42:22 · 215 阅读 · 0 评论 -
Spring容器加载bean的过程
1、我们通过xml或注解或配置编写代码方式声明bean的信息.2、Spring都会把他们解析成一个BeanDefinition。每一个Bean对应一个BeanDefinition同时注册到BeanDefinitionRegistry,抽象类AbstractBeanDefinitionReader根据注册的BeanDefinitionRegistry得到bean的所有信息.3、接着会进入到AbstractApplicationContext 的refresh()方法,这个方法包含了很多重要bean实例化的原创 2020-07-02 16:21:26 · 253 阅读 · 0 评论 -
设置redis临时和永久密码
1、设置临时密码找到redis目录下redis-server.exe点击运行,再点击redis-cli.exe运行。输入config set requirepass root,回车即可root 就是redis的临时密码。验证是否成功设置 ,输入auth root 如果返回OK就说明成功2、设置永久的密码就需要再redis.conf或redis.windows.conf中输入requirepass root,保存后,在该redis目录下的路径栏输入cmd,进入命令模式,输入redis-serv原创 2020-06-13 16:55:51 · 2448 阅读 · 0 评论 -
单例模式安全性增强
单例模式有很多种写法,不同的写法都是适用不同业务场景。但大大小小都会受到多线程安全,稳定性的影响。今天我来讲讲,如何避免这种情况。先来复习下什么是单例模式?单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实原创 2020-05-27 11:59:44 · 99 阅读 · 0 评论 -
Spring 注解模式管理事务
配置xml信息:<!-- 事务管理器对mybatis操作数据库事务控制,spring使用jdbc的事务控制类--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 数据源dataSource在applicationContext-dao.xml中配置--> <property n.原创 2020-05-22 09:35:12 · 138 阅读 · 0 评论