- 博客(132)
- 资源 (6)
- 收藏
- 关注
原创 VS2013写代码时几个常用的快捷键
0 查看函数具体实现:说明:组合键是同时按,非组合键是按住Ctrl依次按后面的键1.格式化 格式化全部代码 Ctrl+A+K+F 格式化选中的代码 Ctrl+K+F2.注释代码 注释代码 Ctrl+K+C(comment) 反注释代码 Ctrl+K+U3.代码录入智能提示 组合键 Ctrl+J 组合键 Alt+→4.移动调整代码 1)调整一行:按住Alt键同时,按方向键上或下可以调整代码...
2021-08-08 17:31:58
1370
原创 C语言学习注意
1.函数:C中函数传递的是值,不是地址值。不会对原变量进行操作。例如:1.函数的传值与传址(ab与xy是俩个完全独立的空间,地址是不一样的)//swap1在被调用的时候,实参传给形参,其实形参是实参的一份临时拷贝//改变形参,不能改变实参//形参是在函数调用的时候才实例化,才开辟内存空间void Swap1(int x, int y)//{ int z = 0; z = x; x = y; y = z;}void Swap2(int* pa, int* pb)//{ i
2021-07-26 17:49:32
341
3
原创 策略模式对象初始化为空解决方案及项目中具体的使用
使用类:@Componentpublic class TaskReceiver { @Autowired TaskHandlerMapping mapper; @RabbitHandler @RabbitListener(queues = {MqTaskConstant.QUEUE_WS_CAMUNDA_EVENT_TASK} ) public void sendNotice(Message message, Channel channel) th
2021-03-18 17:50:06
856
1
原创 模板设计模式
模板设计模式:含义:父类统一事情步骤,父类定义抽象方法既是(钩子方法),其中细节由子类实现。第三方调用父类接口。例子: GetTimeTemplate定义固定的时间计算方式 :code()方法为真正操作,每个子类实现不一样。public abstract class GetTimeTemplate { // 固定流程方法 public long getTime() { // 获取起始时间 long t1 = System.currentTimeMillis();
2021-02-26 15:55:01
186
原创 代理模式中动态代理和静态代理
代理模式是SpringAOP的底层分类:动态代理和静态代理10.1、静态代理代码步骤:1、接口package pojo;public interface Host { public void rent();}2、真实角色package pojo;public class HostMaster implements Host{ public void rent() { System.out.println("房东要出租房子"); }}3、代理角色pack
2021-02-25 15:49:32
136
1
原创 单例模式实现方式
1. 双重检测锁方式:public class StudentTestwkb { private volatile StudentTestwkb student = null; private StudentTestwkb(){} public StudentTestwkb getStudentTestwkb(){ if(student == null){ synchronized(StudentTestwkb.class){
2021-02-24 16:13:58
101
原创 设计模式学习
七大设计原则 开闭原则(对修改关闭、对扩展开放):学习设计模式或者设计原则,就是为了去扩展代码功能的时候不去修改代码。 理式替换原则(继承):不要破坏类的继承关系,其实就是不要轻易去改动父类已经实现的代码。 接口隔离原则(接口):保证类实现的接口要单一,也是为了方便类的扩展和维护(也是为了开闭原则) 依赖倒置原则(面向接口或者面向继承编程):为了降低类之间的耦合性,尽量的不去面向细节或者实现进行编程。 单一职责原则(类):保证类本身功能职责单一,这样就会减少类的改动几率 合成复用原则(组合或者聚
2021-02-24 11:12:06
112
原创 mybatis源码分析
mybatis查看流程:1-3是项目启动时进行初始化的过程。4是我们进行查询时真正的执行过程。1 全局配置文件加载:1.SqlSessionFactoryBuilder创建SqlsessionFactory时,需要传入一个Configuration 对象。2.XMLConfigBuilder对象会去实例化Configuration。 3.XMLConfigBuilder对象会去初始化Configuration对象。 通过XPathParser去解析全局配置文件,形成Document对象
2021-02-24 10:45:04
96
原创 github创建新的仓库并上传文件夹
1. 界面创建新的库2. 根据提示将本地的文件夹创建为仓库echo "# kaikeba2020" >> README.mdgit initgit add README.mdgit commit -m "first commit"git branch -M maingit remote add origin https://github.com/wkbgithub/kaikeba2020.gitgit push -u origin main3. 此时仓库中没有.
2021-02-18 17:54:39
427
原创 docker安装redis和mysql
docker psdocker imagesdocker help进入容器 : docker exec -it 容器id(或者name) /bin/bashredis:redis.conf的内容:protected-mode noappendonly yesrequirepass 123456 启动挂载命令docker run --restart=always -p 6379:6379 --name redis -v /root/docker/redis/con.
2021-02-15 21:09:25
184
原创 jackson和fastjson对比使用
其中jackson的工具类:public class CNPCJacksonUtil { private final static ObjectMapper objectMapper = new ObjectMapper(); static { objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true); objectMapper.configure(JsonParser.Featur
2021-02-01 17:06:08
357
原创 Spring boot Caffeine缓存
1. 引入jar: implementation 'com.github.ben-manes.caffeine:caffeine:2.8.4' implementation('org.springframework.boot:spring-boot-starter-cache')2. 使用配置类配置package com.cnpc.cmp.cmpworksheetapp.config;import com.github.benmanes.caffeine.cache.*;import
2021-01-14 17:37:42
770
原创 JDK1.8的lamda表达式
JDK1.8的lamda表达式主要有:1 //筛选与切片 filter:过滤出符合条件的元素 limit:使其元素不超过一定值。 skip:跳过前面一定数量的元素 distinct :去除重复数据,要重写hashcode和equals方法2 //映射 map :根据规则将元素a 转变成要的 元素b3 //排序 sorted() sorted(Comparator<? super T> comparator);4 //终止操作 1.匹配与查找 //allMatch 检查元素是否都
2021-01-12 16:50:51
232
1
原创 使用MDC和AOP及拦截器为日志加跟踪标识
1. 参考文章:https://segmentfault.com/a/1190000022721682,https://blog.youkuaiyun.com/millery22/article/details/866723542. 开始使用了TreadLocal和拦截器增加标识,但是发现想中消费mq消息的日志,无法打印唯一标识。文章:https://blog.youkuaiyun.com/whxwkb/article/details/111594712。查询到MDC可以。3. 拦截器:public class L
2020-12-24 16:16:40
922
1
原创 项目日志添加统一个uuid标识
1. 使用TreadLocal保存每个调用的uuidThreadLocalInfo:import java.util.HashMap;/** * @Description: * @Author: wangkebing * @Date: 2020/12/23 * @Param: * @Retrun: **/public class ThreadLocalInfo extends HashMap<String, Object> { public ThreadLoc
2020-12-23 17:25:51
1205
转载 String.format常见使用(转)
// %nd 输出的整型宽度至少为n位,右对齐,%5d即宽度至少为5位,位数大于5则输出实际位数// %0nd 用得比较多,表示输出的整型宽度至少为n位,不足n位用0填充 System.out.printf("%5d \n",123 ); System.out.printf("%05d \n",1234 ); System.out.printf("%05d \n",12345 ); System.out.pri.
2020-09-28 14:01:16
2571
原创 map.merge()方法
1. 如果value不为空,进行merge处理。为空直接赋值newValue。实际上就是一个put操作。 然后将key对应的oldValue和newValue 根据传来的function进行处理。2 当处理后的value值为空,map会移除当前keydefault V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) {...
2020-09-27 16:42:40
7047
1
原创 RestTemplate使用:
1.getForObject()需要把url中参数,用占位符指定到参数对应的key如: String registerUrl = "http://local:2146/oauth2/v1/register?clientId={clientId}";
2020-09-09 14:29:29
132
原创 hystrix使用时如果使用了SpringSecurity需要配置一下
在项目中如果使用了springSecurity安全认证,在使用中如果调用远程接口,那么需要主启动类中配置:SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL);将SecurityContextHolder 设置为可继承的属性。 因为hystrix会拦截所有的feign远程调用,并重启个线程去调用。因此这时的认证信息 SecurityContextHolder中会取不到。..
2020-09-02 16:40:18
304
原创 feign的使用坑
引入的包如果没有被spring扫描到,可以在application类上加上注解:@ComponentScan("com.test.cmp")引入Feign类的包如果没有被spring扫描到,可以在application类上加上注解:@EnableFeignClients("com.test.cmp")一定要加上包名,否则没办法注入FeignClient,即使加了@ComponentScan也不行。1种:引入service层,需要在application类上加上注解:@EnableFeignCli
2020-08-13 17:34:19
689
原创 springboot单元测试
import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.context.annotation.Comp.
2020-08-06 09:48:53
148
原创 feign使用
feign定义:@FeignClient(name = "worksheet",contextId="worksheetRemote")public interface WotestRemote { /** * 撤销工单 */@PostMapping("/worksheet/v1/terminate_api")Result terminate_api( @RequestBody ProcessInstanceTerminateDto dto);/** * 撤销工单 */@P
2020-08-03 16:57:56
149
原创 jdk1.8 的Stream操作使用
1 //筛选与切片 filter:过滤出符合条件的元素 limit:使其元素不超过一定值。 skip:跳过前面一定数量的元素 distinct :去除重复数据,要重写hashcode和equals方法2 //映射 map :根据规则将元素a 转变成要的 元素b3 //排序 sorted() sorted(Comparator<? super T> comparator);4 //终止操作 1.匹配与查找 //allMatch 检查元素是否都符合
2020-07-30 17:34:48
421
原创 @Transactional 注解使用
rollbackFor和norollbackFor:@Transactional(rollbackFor = Exception.class,noRollbackFor = NullPointerException.class)public Result update(String id, NoticeTemplateDto dto) throws Exception {从使用中看到,如果配置了:noRollbackFor = NullPointerException.class 。1.1 .
2020-07-29 16:19:42
289
原创 JPA使用nativeQuery多参数查询注意点
@Query(value = "update pf_process p set p.field_group_id = ?1 where id = ?2 ",nativeQuery = true) @Modifying void updateProcess(String defaultFieldgroupid,String processId); @Query(value = "update pf_process_form p set p.form_config= NULL...
2020-06-09 18:38:57
3670
原创 将本地项目push到git上步骤
1. 在项目中:git init2. git add .3. git commit -m 'first'4.git remote add origin 地址(http地址如:http://git.vipsdb.com/wkb/xxy-CR-vote-java.git)5.git push -u origin master...
2020-04-24 17:56:43
627
原创 Exists 和not in 的使用
SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for student-- ----------------------------DROP TABLE IF EXISTS `student`;CREATE TABLE `student...
2020-03-06 18:21:49
312
原创 在SpringBoot中用SpringAOP实现日志记录功能
在SpringBoot中用SpringAOP实现日志记录功能背景:我需要在一个SpringBoot的项目中的每个controller加入一个日志记录,记录关于请求的一些信息。代码类似于: logger.info(request.getRequestUrl());之类的。代码不难,但由于Controller的数量不少,干起来也是体力活。所以想到了用Spring AOP来解决...
2020-03-06 11:28:15
321
原创 字符串截取处理
aa bb cc dd ff 变成:aa bb cc dd ff String bb = "aa bb cc dd ff "; bb = bb.replaceAll("\\s{2,}", " ").trim(); System.out.println(bb); String cc = "aa ...
2020-03-05 16:44:57
122
原创 笛卡尔积的结果
student表:可以看出,在SELECT a.*,b.* from STUDENT a join STUDENT b 后面的on条件是,在SELECT a.*,b.* from STUDENT a join STUDENT b 语句结果中进行条件过滤。...
2020-03-04 17:38:30
951
原创 sql语句中any和all的用法
这两个都是用于子查询的any 是任意一个all 是所有any表示有任何一个满足就返回true,all表示全部都满足才返回true建议使用max和min更加直观比如select * from student where 班级=’01’ and age > all (select age from student where 班级=’02’);就是说,查询出01班中,年...
2020-03-04 11:13:38
6397
2
原创 在join中,on和where的区别
1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉建议使用时使用where过滤掉不符合的条件。SELECT sc.DEGREE,st.SNAME,c.cname from SCORE sc j...
2020-03-04 10:37:22
1503
原创 idea中git回退远程仓库版本
好用的教程 链接:https://www.cnblogs.com/gexiaoshan/p/10182135.html工作中遇到,代码已提交并已提交到远程仓库,现需要回退到之前版本,记录如下:记录当前版本的版本号和需要回退到版本的版本号。current version:85e7f32dfe421c5892a4e2f38e7b542d1eacdf8cold ver...
2020-03-02 17:57:28
844
原创 将本地maven项目上传至github
1. gitlab上面建立空项目 demo12. idea clone下来项目 demo13. idea新建maven项目 demo24. 将maven项目demo2中的源码copy到 demo1文件夹中5. idea git commit 将源码提交,然后push 此时gitlab上面则有maven项目源码...
2020-03-02 17:56:06
512
原创 正确运用BigDecimal
另外,BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象,由刚才我们所罗列的API也可看出。在一般开发过程中,我们数据库中存储的数据都是float和double类型的。在进行拿来拿去运算的时候还需要不断的转化,这样十分的不方便。这里我写了一个工具类:/**...
2020-02-26 15:21:04
234
原创 Spring的两种动态代理:Jdk和Cglib 的区别和实现
一、原理区别:java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目...
2020-02-19 15:50:46
438
转载 为什么要使用代理模式
代理这个词大家肯定已经非常熟悉,因为现实中接触的很多,其实现实中的东西恰恰可以非常形象和直观地反映出模式的抽象过程以及本质。现在房子不是吵得热火朝天吗?我们就以房子为例,来拨开代理的面纱。假设你有一套房子要卖,一种方法是你直接去网上发布出售信息,然后直接带要买房子的人来看房子、过户等一直到房子卖出去,但是可能你很忙,你没有时间去处理这些事情,所以你可以去找中介,让中介帮你处理这些琐碎事情,中介...
2020-02-19 15:42:06
2962
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人