三千大道篇
平时业务开发一些想法与收获.
黄金黄不黄
这个作者很懒,什么都没留下…
展开
-
首字母排序
简写版:order by convert(substr(tu.username,1,1) using ‘GBK’)原创 2022-02-24 17:45:37 · 230 阅读 · 0 评论 -
attempted to return null from a method with a primitive return type (int).
mybatis报错,但是sql执行成功.原因: 返回值为null,但是定义的返回值为int.匹配不上.具体原因 标签错误.新增语句,用了 标签,导致返回有问题.insert,update,delete都有自己的标签.平时select写习惯了,导致标签不对应,所以拿不到返回值....原创 2021-12-31 17:35:33 · 399 阅读 · 0 评论 -
SpringCloudAlibaba
1: nacosnacos是一个单独的服务,不是自己开发的.下载启动即用.下载启动在nacos官网快速开始中都有.很简单.nacos快速开始链接默认端口8848 默认访问地址 域名:8848/nacos初始密码: nacos nacos登录即可....原创 2021-12-09 17:13:21 · 436 阅读 · 1 评论 -
@Aspect对应jar包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>原创 2021-11-19 11:13:39 · 1800 阅读 · 1 评论 -
ConvertUtils对应的jar包
commons-beanutils commons-beanutils 1.9.4原创 2021-10-28 11:59:23 · 394 阅读 · 0 评论 -
postman发送post方式,但是一直说是get方式,并且返回不支持get
两个问题:第一个,如标题: 原因: 使用的是http ,不是https, 原理未知.使用https可以.第二: 明明方法调用到了,但是返回404.猜测原因,方法没有注解responseBody.导致返回有问题.原创 2021-10-20 18:40:23 · 1365 阅读 · 0 评论 -
热插拔的核心问题
项目功能热插拔的核心问题是什么?首先什么是热插拔:? 针对于项目来说.我个人的理解就是:对于项目的某个功能而言. 在不影响项目运行的条件下(不修改代码,不重新发版.).可以进行启用,禁用该功能的操作.能够符合这个条件的,才能称的上是热插拔.实现的方式有一些:通过数据是否存在实现.通过参数配置实现.以上的实现方式,像是一个开关. 开对应插,关对应拔.那么有一些的实现方式: 那种方式是比较好的呢?这就是我认为的核心问题:开关的设计,是否合理以及方便.举个例子:夜里睡觉的时候,需要关灯原创 2021-10-19 16:21:57 · 153 阅读 · 0 评论 -
重阳节加班--新建项目
好久没有创建项目.碰到了一些问题.记录一下:总共花了不到一个小时解决掉了,还可以.不宜妄自菲薄.首先:一个报错是: 无法创建mapperCaused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘cn.ycsin.base.mapper.WechatMaterialNewsMapper’ available: expected at least 1 b原创 2021-09-09 20:45:57 · 77 阅读 · 0 评论 -
事务,循环执行,心得
@Transactional:在同一个类中,注解在方法上被调用是无效的.如果注解在方法上:这个方法被同一个接口重复调用的话,那么每次调用都会启用一个新的事务.事务的回滚只会影响到当前事务.如果是需要细化的事务级别的话.不能够抛出异常停止事务,因为这样的话,会导致后面的循环不再执行了.如果执行到需要回滚的代码.并且不希望继续执行本次循环的后面的代码,但是希望执行下次循环.那么直接return就行.下次调用依旧会进来,程序依旧会继续执行.这些东西要作为一个参考.心得.忘得时候有个佐证....原创 2021-09-07 22:19:01 · 547 阅读 · 0 评论 -
无语的错误排查,结果更无语
数据库字段a,默认值为1.没有insert以及update的sql语句对a进行操作.代码中实体,也没有对a进行set的操作.但是数据库中就是莫名其妙的有值: 0想破脑袋不知道这个0 是哪里出现的.不相信的全局搜索了一次又一次.都TM怀疑人生了.最后好不容易,找到了一个保存的放.然后模拟了一些参数.最后发现bean中的a定义的是int类型.然后创建对象的时候,它是会有初始值0的.我觉得无语:1: 我没想到有人这样写,不直接定义包装类. 反而直接写int.2: 我没想到会是这么个问题原创 2021-08-31 18:09:00 · 81 阅读 · 0 评论 -
代码规范的重要性
我曾经接过的项目,层级不明确.代码无注释,表无注释.字段无意义.枚举无注释.1: 从最低的数据库:表的建立要有统一的标准以及规范.包括命名,表名,字段名,索引名.数据类型,以及长度.最重要的就是注释.表的用途以及字段的意义.shop_id: 是门店id,store_id: 也是门店id.shop_code: 有时候也会放门店的id,如果没有注释,那么只能靠猜.不同的人,对于字段的代表意义认知是不一样的,最好是用通用的语言去描述它.2: 从代码层面来说.实体的用处也要写清楚注释.即使数据原创 2021-08-24 18:19:53 · 303 阅读 · 0 评论 -
idea安装插件的时候搜索不到原因之一
今天新装了一个环境,像往常一样,去安装lombok插件,但是idea中,怎么都搜索不到。并且搜索不到任何的应用插件。就像是断网了一样,但是网络是正常的。重启几次无用之后,感觉到不科学。怀疑了一会人生之后。突然想到,不能联网是不是因为被防火墙拦截了,然后去看本地的防火墙,已经全部被我关闭。没问题。但是还有一个360,360的安全卫士的保护应该也是有防火墙的。是不是360把idea进行隔离了,导致idea搜不到应用。越想越有可能,然后把360退掉。重启idea,成功搜索到应用插件并安装。错误有原创 2021-08-10 11:53:11 · 204 阅读 · 0 评论 -
gitLab推送代码
1: 使用idea进行commit的时候,填的是一个名称,一个邮箱,没看出来啥效果.2: 进行推送的时候,需要输入userName,以及passWord,这里没写邮箱,userName直接写了gitLab对应的名字.密码就是登录gitLab的密码然后推送成功了.~~使用git直接拉代码的时候,我忘记了我输入的是什么了,但是我直接拉成功了.额.应该记录一下的,大概率是邮箱,以及对应的密码....原创 2021-08-06 18:55:53 · 647 阅读 · 0 评论 -
尝试搭建rabitMq
1: 使用的阿里云服务器. 下载了一个mq并且能通过页面进行访问.2: 准备两个项目,作为生产者和消费者.使用springboot的框架进行搭建,那么我选择在yml配置文件中配置rabitMq以达到我想要的效果.首先: 加入对rabbitMq的jar包引用.<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amq原创 2021-07-19 00:29:54 · 155 阅读 · 1 评论 -
宝塔篇-使用宝塔面板安装mysql遇到的navicate连接问题
概述:我以前自己进行服务器的mysql安装.安装完毕之后对root用户,进行远程权限的开放.(默认是只有本机能够连接到本数据库,开放远程权限,是说使得其它主机或者任意主机能够连接上本数据库,也就是说远程连接的意思.)此时,就可以使用navicate进行远程连接了.但是由于linux不同的发行版本以及源还有安装命令的不同,搞的我头大.所以,我使用了宝塔面板进行一键安装.安装完毕之后,也是对root用户进行了远程权限的开放.这里开放权限有两种方法:第一: 连接服务器,在终端中敲命令.第二: 使用宝原创 2021-07-18 13:33:55 · 724 阅读 · 2 评论 -
集合中存的是引用
public static void main(String[] args) {BbUsers bbUsers = new BbUsers();bbUsers.setName("环境策划师 ");List usersList = new ArrayList<>();List usersList1 = new ArrayList<>();usersList.add(bbUsers);usersList1.add(bbUsers);for (BbUsers users :原创 2021-07-06 14:52:03 · 81 阅读 · 0 评论 -
日志切面处理所有,异想天开了.
在切面里面实现一个全局管理的操作日志是件比较合理且容易的做法:比如,谁,操作了那个接口.这个是毕竟容易的做法.但是如果再细下去:细化到每个人,具体改变了什么参数.改变之前是什么.换言之,前后两次记录能够关联起来.能够在切面中关联起来.我想到一个做法:首先,根据传入的id,找到对应的对象,再去log中,查到新增中的参数列表. 然后拿到一个一样的参数.创建时间就是唯一的.但是切面中的,与实际的可能不一致.其它参数又不一定有.时间不是绝对可靠,但是它大部分时间是可靠的,因为精确到秒.第一步,原创 2021-06-18 14:28:20 · 141 阅读 · 0 评论 -
那些让我有点感慨的基础,人之过也
java中重写能否发生在同一个类中:不能。概念问题。重写(Override)就是指父子类之间的,一定是在不同类之间的(而且是父子关系),方法参数必须相同;要跟重载(Overload)区分开,它是指同一类内部的,方法参数必须不同。...原创 2021-06-17 10:38:43 · 49 阅读 · 0 评论 -
mybatis手写sql,paramType为一个对象
有些时候,一些手写sql的查询条件如果过多.那么我会选择用json对象来接收查询条件的值.我会定义一个param类来声明各个需要用到的属性.然后从controller层. 接收参数,最后到mapper层的入参,都可以用这个对象代替,而不用去写特别多的参数.这样的话,代码看起来就简洁了许多. 省心且省事,因为不用担心十来个入参,会写错入参的顺序.导致对应不上,也不用担心增加需求: 进行扩展.需要进行扩展的时候,如果是原来的,传入N多个字段,那么从传入到最后的mapper的参数列表全都要改.一不原创 2020-11-13 17:37:20 · 805 阅读 · 0 评论 -
试用docker容器,安装rabbitmq命令
docker run -d --hostname my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3.8.0-beta.4-management原创 2021-06-04 10:50:31 · 61 阅读 · 0 评论 -
Long.intValue可能会导致负数
当long的值足够大的时候,转为int,会不准备,精度缺失的厉害,会来回变. 数值相差很大.还有,甚至可能变为负数. 会导致比较结果完全相反.用的时候切记.原创 2021-05-18 16:17:02 · 1145 阅读 · 0 评论 -
注解打在方法上: 异常时事务回滚不生效原因之一
异常的回滚:@Override@Transactional(rollbackFor = Exception.class)这个 @Transactional(rollbackFor = Exception.class) 的注解,可以打在最外层的接口上,也就是供访问的那个地方. 与requesMapping同用 .也可以与Override同用.这两种都会生效.但是单独打在被调用的方法上面,是不生效的,程序发生异常之后,数据并没用回滚....原创 2021-05-18 15:57:06 · 190 阅读 · 0 评论 -
BeanUtil拷贝与打印,结果打印出问题.导致测试不准确问题
三个类,A,B,CB extends A .C extends ABeanUtils.copyPropertites(B,C);然后用阿里的fastJson打印C的参数.C因为extends A ,并且没有相关的注解.所以,打印的数据不准备,没有A的相关字段.但是实际上是拷贝到了.只是没打印出来.导致测试出现问题,误以为正确.记住这个差别.如果要打印全部的字段. 需加上注解@toString(callSuper = true)...原创 2021-05-12 14:37:03 · 83 阅读 · 0 评论 -
注解如何生效?
AutowiredAnnotationBeanPostProcessor:这个类,用来处理依赖注入的问题.注解只是一种标记:注解的生效与注解本身无关,而与处理这些标记的逻辑有关.例:扫描工程:发现了@Autowired这个注解的标记,就处理被标记的这些类.而实际处理的逻辑,在具体的对应的处理类中,比如: AutowiredAnnotationBeanPostProcessor...原创 2021-05-12 14:31:33 · 445 阅读 · 0 评论 -
sql联表修改篇
先联表,后修改例:update bb as inte inner join item as item on inte.order_item_id = item.id set inte.pay_type = item.pay_type原创 2021-05-07 16:43:34 · 1049 阅读 · 0 评论 -
windows使用之文件夹快速访问.
邮件文件夹,有个固定到快捷访问的选项.原创 2021-04-22 16:37:35 · 415 阅读 · 0 评论 -
list之排序篇
数组本身并不是有序的.但是数组提供了排序的方法:也支持对象的数据类型.原创 2021-04-22 10:44:11 · 75 阅读 · 0 评论 -
随笔
接口: 是对同一类行为的一种抽取.定义一个接口:吃饭.人也能吃,猪也能吃.人吃烤乳猪.猪吃饲料.一个接口类.Eat Interface一个方法: eat.两个实现类, people , pig. 都实现eat方法.这样的话是可以的.但是我就一个eat 实现类我实现eat方法.然后进行判断:if(people){执行people;}if(pig){执行pig;}如果: 代码都是在eat中,还是用了if的,不优雅.那么把people的行为,和pig的行为各自封装.里原创 2021-04-20 11:59:19 · 95 阅读 · 0 评论 -
idea使用技巧篇:
idea的功能很强大.但凡我感觉到厌烦的地方,需要快捷处理的东西,一搜,都有,简直是个挖不完的宝藏.例: 重复代码有波浪线提示,使用快捷键可以自动生成相应的公共方法和引用.只需要起个名字. 简直全自动.牛皮的很.快捷键: ctrl+alt+m提示大全:1:change access modifier : 修改访问修饰符.就是public,private,protect,默认的这些.例: 把方法从private 修改为public.2:bind method parameters to field原创 2021-04-19 11:29:03 · 511 阅读 · 0 评论 -
jar包引用的使用感悟篇
引入jar包之后,就可以使用其中的方法:可以使用工具类:如果是static的方法,类名直接调用. 这个很方便,早就知道了如果是框架的代码,必须是public的才能用.怎么用呢? 就跟平时自己写代码一样.springboot很方便,用注解@Autowired注入到容器中.平时很少用到这种,注入源码的类,猛然又想不起来,做个记录.先把对应的类注入到容器里面,然后再调用里面的方法.这样的话就可以使用了.业务场景: 用了框架,但是框架又跟业务有点冲突.所以,用...原创 2021-04-12 19:20:00 · 108 阅读 · 0 评论 -
shiro权限问题.
shiro的权限资源变动的时候. cache中的权限并没有同步更新.按理说: 一个用户登录后,会生成一个新的Auth的cache. 然后验证权限的时候,会去cache里面根据用户的身份,拿到具体的perm权限集合.然后看是否含有这个权限.但是呢,因为同一个用户登录的时候,生成的key是相同的.所以根据这个key,拿到的就是旧的cache数据.所以,权限就没有及时更新.想了个点子: 登录的时候,根据key,把cache里面的这个perm删掉.我看的几个源码图片:12...原创 2021-04-12 19:06:28 · 146 阅读 · 0 评论 -
idea之不想显示unversioned files篇
原创 2021-04-09 13:21:17 · 13459 阅读 · 0 评论 -
hashMap使用篇
关于双层for循环与试用hashMap的取舍. 我一直在使用map的用法.我也知道hashMap的存放跟取值都很快.我也知道时间复杂度.我还知道hash函数一次寻址,找到如果不哈希冲突就可以O(1)的存取值.但是我没想过去探究,去量化它.我就只是经常的用它而已.今天想写一下了:如果是比对取到对应的id的对象的话. 不要使用双层for循环.先把一个对象集合遍历,然后把id作为key,对象作为值,放入HashMap中. 再遍历另外一个对象集合,根据相同的id参数,去map中取值.使用...原创 2021-04-07 16:39:57 · 111 阅读 · 0 评论 -
支付回调篇
调用第三方支付的时候,是会自己生成一个本地支付单号的,如果有有两家公司,用了同样的支付配置,那么怎么解决呢?根据支付配置,获取到的信息是一样的,但是我们可以在我们的编码生成规则里面做文章比如: 我在生成支付单号的时候,把公司的id放进去,我拿到的时候,把公司id摘取出来,然后分公司做处理.这样的话,无论是分公司,还是说,分类型,都可以蕴藏在这个编码的生成规则里面.适用于很多种情况.还有一种方式是回调的时候,回调地址拼接参数,这样回调的时候,通过: @PathVariable 是可以获得的.第.原创 2021-04-07 16:31:01 · 277 阅读 · 0 评论 -
微信支付之配置域名篇
微信支付的时候,是要配置域名的,像提示,没有配置什么http什么有效域名的就是没有配置支付的业务域名. 配置的域名为后端的访问地址.也就是说,它要知道你后端服务器的域名,才能够去正确的调起支付. 即使,调起支付的时候,发送了回调地址过去,但是地址要和配置的域名一致.我猜测原因9成是为了验证.比如说,你随便给了一个域名,与你调起的域名不一致,那么它回调到的其实不是你的服务,那么这就是一个错误的回调. 所以,为了安全,它们这边需要配置域名,验证域名一致,是一个服务发起,并且回调的地址,才会去进...原创 2021-04-07 16:21:58 · 3636 阅读 · 0 评论 -
微信支付之商户号以及appid以及密钥
商户具有商户号,和密钥 : 密钥是在api安全中配置的,首次设置之后需要自己保存,后面不在页面中显示.如未保存,想要再次获取,就需要修改密钥了.不建议移动应用,小程序,公众号都具有自己的唯一身份标识,也就是appid.唯一的. 也有自己的密钥,为了保证安全的.退款需要证书,需要一个绑定的appid.appid只要与微信商户号进行了绑定即可.(待确认是否公众号的能退小程序的单子,实际是可以的.)...原创 2021-04-07 16:19:16 · 4506 阅读 · 0 评论 -
接口抽象类重载重写-融会贯通v10
以代码示例诠释他们之间的关系public static void main(String[] args) { //下面这个,也只是新建立了一个类,实现了AccountService这个类所有方法而已.像是内部类,本质上还是一个实现类 //所以接口和抽象类是不能够直接实例化的,调用的方法,也只是重写的方法,没人会这样写的.难看,不好维护 AccountService1 accountService1 = new AccountService1() { ...原创 2021-04-07 16:09:40 · 129 阅读 · 0 评论 -
git的忽略提交篇之gitignore-idea
git的忽略提交篇需要解决的问题: 使用idea工具提交代码的时候,会有一些unversioned files文件出现,而且会有很多.每次提交的时候都会出现解决办法: 安装一个ignore的插件到idea中,重启idea,然后创建一个.gitignore文件,然后把不想提交的文件加到.gitignore文件中.一个java的模板,如下: 即使是一个新的项目,也可以共用其中大部分,而target这些编译文件的目录,只需要把前面项目名修改一下即可:ps: gitignore文件一定要创建在父工程下原创 2021-04-07 11:25:52 · 649 阅读 · 0 评论 -
git的tag使用-gitBashHere
tag是什么? tag是标签他有什么作用?标签,是一个特定时间的代码的一个记录,也可以理解为一份快照. 一般用于发版之前保留,以便于可以快速回滚.git tag 可以列举出你的所有标签git tag -a '-a后面是写你的版本号,这个重要,建议写' -m '这个是一个附标注信息,这个也要写,不然git会让你进去文本编辑器,如果进文本编辑器,我出不来~~ 'git show 后面跟标签名,可以查询具体的一个标签的内容git push origin 'version' 'versi...原创 2021-04-07 11:21:09 · 126 阅读 · 0 评论 -
git初始篇之拉取代码-gitBashHere
git初始篇之拉取代码在本机上安装git之后,选择工作目录,然后在工作目录中右键,选择git Bash Here.会有一个cmd命令窗口出现,这时候登录你的code代码管理.选择https方式,复制拉取链接使用命令: git clone 后面跟复制的链接第一次会让你输入用户名和密码: 就是登录的账号和密码.拉取之后,会有文件形成在当前文件夹中,使用idea打开即可.还有一些常用命令: git add . 添加所有文件到待提交 git commit -m '...原创 2021-04-07 11:19:53 · 1611 阅读 · 0 评论