自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大树叶 技术专栏

骨灰攻城狮 架构师

  • 博客(1386)
  • 资源 (2)
  • 收藏
  • 关注

原创 【无标题】

SpringBoot的MockMvc那些事情SpringBoot基础之MockMvc单元测试在SpringBoot如何配置编写测试类编写test case查看测试结果SpringBoot基础之MockMvc单元测试MockMvc是由spring-test包提供,实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,使得测试速度快、不依赖网络环境。同时提供了一套验证的工具,结果的验证十分方便。接口MockMvcBuilder,提供一个唯一的build方法,用来构造MockM

2021-12-10 17:18:53 339

原创 Jenkins pipeline脚本编写

参考文章Jenkins pipeline脚本编写实践分享(一)上篇Jenkins pipeline脚本编写实践分享(一)下篇

2021-10-11 00:50:41 549

转载 istio网络转发分析

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入关于istio网络转发分析的文章,见这篇文章不错:https://developer.aliyun.com/article

2021-10-10 20:06:43 201

原创 java random 随机性和安全性小议

Math.random() 静态方法当第一次调用 Math.random() 方法时,自动创建了一个伪随机数生成器,实际上用的是 new java.util.Random()。当接下来继续调用 Math.random() 方法时,就会使用这个新的伪随机数生成器。public static double random() { Random rnd = randomNumberGenerator; if (rnd == null) rnd = initRNG(); // 第一次调用,创建.

2021-10-08 16:45:55 3021

原创 Java8 Date调整时间用法

Java8 Date调整时间用法Date mydate=new Date();mydate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().minusDays(1).format(DateTimeFormatter.ofPattern("yyyyMMdd"));

2021-08-19 15:20:38 1805

原创 MySqL (5.7 or above) only_full_group_by问题

MySql数据库报错如下:ERR-CODE: [TDDL-4614][ERR_EXECUTE_ON_MYSQL] Error occurs when execute on GROUP ‘SHEBAO_TAX_16237**************FARD_IN18_0000’ ATOM ‘rm-2ze5d6f76yg43c2m3__tax_yfpr_0000’: Expression #3 of SELECT list is not in GROUP BY clause and contains non

2021-08-10 16:05:11 1839

原创 FTPClient.listFiles() 获取目录里的文件为空的解决

写个功能要从ftp服务下载文件,在本地的ftp服务一切ok(window环境),但是在Linux环境发现不管切换到哪个目录,获取什么文件,调用FTPClient.listFiles()方法时返回的始终为空,但是代码又运行正常没有异常抛出。然后断点ftp.getReplyCode()也返回230登陆成功.在调用FTPClient.listFiles()方法前,先调用FTPClient.enterLocalPassiveMode();就可以了。下面是完整的ftp util例子package com.tes

2021-08-08 21:05:00 7782

转载 Java lamda和predicate用法例子

参考1.JAVA8之lambda表达式详解,及stream中的lambda使用2. 深入浅出 Java 8 Lambda 表达式

2021-08-03 17:59:42 382

原创 java8 stream, map, Option 等函数式编程的使用例子

java8中 stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。为函数式编程而生。对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。惰式执行。stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。可消费性。stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。str

2021-08-02 16:53:47 621

原创 Java中使用动态mybatis语句经典用法

在Java中使用动态mybatis语句访问DB的例子如下,官方建议不用XML.package com.test.econtract.esign2bcore.dao;import com.test.econtract.esign2bcore.dao.model.PlatformInfoDO;import org.apache.ibatis.annotations.*;import org.springframework.stereotype.Repository;import java.util

2021-07-30 11:35:49 213

原创 mybatis动态script加入 >=号

@Select({"<script> ", " SELECT * FROM ext_statement_records WHERE business_system_id=#{businessSystemId} AND <![CDATA[date1 <=#{toDate} ]]> ", " AND id IN ", "<foreach collection='idList' item='item' open='(' close=')' separator=',

2021-07-30 11:31:48 322

原创 finally 和 return语句执行的先后顺序

finally 和 return语句执行的先后顺序 private int beforereturn(){ log.info("beforereturn run"); return 1; } private int testfinally(){ try{ int a=1; } catch (Exception e){ log.info("catch exception");

2021-07-28 15:04:53 138

转载 java sftp 和 ftp util例子

文章应用1: Java使用SFTP和FTP两种连接服务器的方式实现对文件的上传下载

2021-07-24 16:28:37 118

转载 K8s中的StatefulSet应用

参考文章1.StatefulSet在k8s的应用(Mysql)2. StatefulSet在K8s的应用(Elastic Search)

2021-07-18 19:57:08 1061

原创 k8s 精华帖子

1.k8s暴露服务的三种方式

2021-07-04 17:35:00 119

原创 SQL where 的元组使用

select * from verification_mark_results where (business_system_id,record_id) in ((12001,4780160),(12001,4780161));

2021-07-02 22:00:47 396

原创 java8 optional那些事

java8的Optional让很多小伙伴减少了很多NullPointerException,虽然代码比较优雅,短小精干,但是语法比较晦涩难懂,故整理如下。1:调用他人接口时,再也不用各种判断了传统情况下,我们通过http工具或者使用微服务feign的方式调用其他接口,总是担心别人的接口返回各种奇怪的东西,甚至还有在字段上“缺斤少两”的情况。先判断返回code是不是成功,然后判断数据存不存在,一来二去,写了很多冗余代码,java8 的Optional 则可以优雅的处理上述情况。预期的返回结果:

2021-06-23 11:16:31 199

转载 茅台识别方法

1.2021最全面鉴别茅台酒的真假(终极篇)

2021-06-09 18:49:15 155

原创 缓存和数据库的一致性的那些事

问题场景:主要有以下场景,会导致缓存和 DB 的一致性问题:并发的场景下,导致读取老的 DB 数据,更新到缓存中。 缓存和 DB 的操作,不在一个事务中,可能只有一个操作成功,而另一个操作失败,导致不一致。当然,有一点我们要注意,缓存和 DB 的一致性,我们指的更多的是最终一致性。我们使用缓存只要是提高读操作的性能,真正在写操作的业务逻辑,还是以数据库为准。例如说,我们可能缓存用户钱包的余额在缓存中,在前端查询钱包余额时,读取缓存,在使用钱包余额时,读取数据库。更新缓存的设计模式1.Ca

2021-06-06 19:20:52 158

原创 java8 流式写法那些事

Java8有好多新的写法,眼花缭乱,如下:例子1:Java以前的写法 List<Long> recordsIDlist = new ArrayList<>(retrecordsList.size()); retrecordsList.forEach(item -> {recordsIDlist.add(item.getRecordId());}); Java8 新写法List<Long> recordsID.

2021-06-04 15:43:10 629

原创 Mysql: select 0 和 select 1的意义

Select 0:写法1:select * from tab a where exists(select 0 from tab b where a.id=b.id)写法2:select * from tab a where exists(select * from tab b where a.id=b.id)select 0在这里没有意义 这样写可以提高查询速度 因为不用在展现真实数据,与上边效果一样 上边的效率更高。当我们只关心数据表有多少记录行而不需要知道具体的字段值时...

2021-05-10 15:40:21 6502

原创 mysql 8优化实战例子

表:tax_salary_person, 目前为 6,577,256记录慢SQL:我在mysql执行为 10.16s, 执行多次,平均在10s,扫描 4.38M, 返回1300SELECT id, natural_person_id, company_id, net_amount_total, payer_id , agency_id, tax_assessment_section_type, tax_period, create_time, update_time , is_de...

2021-05-08 14:29:07 149

原创 Java lambda 的简明使用

前言Lambda表达式是Java SE 8中一个重要的新特性,优点与缺点如下:优点:代码量减少,提升了开发效率 集合操作也得到了极大的改善 函数式编程是技术的发展方向,而Lambda时函数式编程最基础的内容,所以,Java8中加入Lambda表达式本身时符合技术发展方向的。 通过引入Lambda,最直观的一个改进是不用再写大量的匿名内部类,还有更多由于函数式编程本身特性带来的提升。比如:代码的可读性会更好,高阶函数引入了函数组合的概念。Lambda的引入,集合操作也得到了极大的改善。比如:引

2021-05-04 11:49:45 175

原创 驼峰命名法(CamelCase)和下划线命名法(UnderScoreCase)之间的转换

本例子在jdk上验证通过!String field1 = "business_no1";String field2 = "id";String field1_L = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, field1); //field1_L 值为 businessNo1String field2_L = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, field.

2021-05-01 23:19:36 481

原创 C++ 宏的使用

#include <cstdlib>#include <iostream>using namespace std;class Dummy {private: string callfuncname;public: Dummy(string name){ callfuncname=name; cout<<callfuncname<<"In"<<endl; }; ~Dummy()...

2021-03-24 21:36:51 162

原创 在Springboot中如何配置全局的transaction事务

在我们的spring boot工程中,基本是要处理mysql等数据库的数据的,而springboot实现事务只需要 public 方法在头上加上@Transactional注解就可以了,@Transactional 默认只捕获RuntimeException.class,对Exception异常得需要 @Transactional(rollbackFor = {Exception.class}) 捕获回滚。但是当项目特别大的时候,对所有的service 都加上事务 ,显得非常麻烦。可以通过aop 方式实现.

2021-03-20 17:00:17 2620 1

原创 探讨缓存技术中的几大问题及其预防措施

我们知道,缓存使用中有常见的三大问题:1.缓存穿透,2.缓存击穿,3.缓存雪崩,本文总结列出常见的解决方案,以供参考。 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写,并且处于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。缓存穿透意味着当用户查询数据库不存在数据时,返回的结果为空,并且结果不会在缓存中存...

2021-03-16 22:40:52 196

转载 在springboot2.0 中小议 WebMvcConfigurer

注:很多文章说从spring boot2.0之后在构造spring配置文件时建议推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport ,经测试实现WebMvcConfigurer是没问题,但继承WebMvcConfigurationSupport类是会导致自动配置失效的。详细过程点击这里。本文重点是说说在spring boot中如何使用WebMvcConfigurer.1、WebMvcConfigurer介绍WebMvcConfigu.

2021-03-15 09:42:04 225

原创 Java那些事: @Retention 的含义

下面是一个java 注解的例子@Documented@Target(ElementType.METHOD)@Inherited@Retention(RetentionPolicy.RUNTIME)public @interface MethodInfo{ String author() default "Pankaj"; String date(); int revision() default 1; String comments();}其中注解@Re.

2021-03-15 00:32:49 569

原创 IoT物联网之边缘计算: KubeEdge,K3S

收录两篇关于物联网的边缘计算文章,觉得不错。自己可以去看看。1.KubeEdge向左,K3S向右2.KubeEdge vs K3S:Kubernetes在边缘计算场景的探索

2021-03-12 00:01:33 2013 1

原创 jumpserver 飞致云

开源的jumpserver , 可以使用飞致云https://www.jumpserver.org/

2021-03-03 11:52:07 541

转载 小议LRU算法的实现

LRU原理LRU(Least Recently Used)是一种常见的页面置换算法,原理就是,当数据在最近一段时间经常被访问,那么它在以后也会经常被访问。这就意味着,如果经常访问的数据,我们需要然其能够快速命中,而不常访问的数据,我们在容量超出限制内,要将其淘汰。LRU的实现对于这种类似序列的结构我们一般可以选择链表或者是数组来构建。1. 数组 查询比较快,但是对于增删来说是一个不是一个好的选择。2. 链表 查询比较慢,但是对于增删来说十分方便O(1)时间复杂度内搞定。我们可以选择 .

2021-02-26 01:00:40 148

原创 用Redisson实现基于redis的分布式锁

用Redisson实现基于redis的分布式锁。参见:1:Redisson分布式锁原理2: Redission使用例子

2021-02-03 22:15:08 109

原创 JAVA_TOOL_OPTIONS _JAVA_OPTIONS JAVA_OPTS 那些事

在java编程中,老会碰到JAVA_TOOL_OPTIONS _JAVA_OPTIONS 和 JAVA_OPTS。下面就详细说说他们 JAVA_TOOL_OPTIONS:是标准的,所有虚拟机都能识别和应用的。有些应用不方便设置JVM参数,如命令行应用、通过JNI(Java Native Interface)API调用虚拟机的应用、脚本嵌入虚拟机中的应用等。这种情况环境变量JAVA_TOOL_OPTIONS就非常有用了,它会被JNI API的JNI_CreateJavaVM函数使用。Note:在..

2020-09-02 23:12:37 4933

原创 hadoop 提交jar的运行 org.apache.hadoop.util.RunJar

关于hadoop 提交jar的运行如下:https://www.cnblogs.com/admln/p/hadoop2-work-excute-submit.html注意:hadoop 3.x中, org.apache.hadoop.util.RunJar 的临时目录是通过 java.io.tmpdir 传入的,而不是原来的Configuration().get("hadoop.tmp.dir")File tmpDir = new File(System.getProperty(...

2020-09-02 21:39:21 1392

原创 hadoop yarn 内存

YARN 内存参数终极详解 https://www.cnblogs.com/princessmeiyi/p/5238215.htmlHadoop MapReduce之作业提交(客户端)配置hadoop.tmp.dir 目录

2020-09-02 00:16:57 174

原创 CDH Hadoop HDFS EOFException异常的问题

CDH hadoop HDFS系统中,看了下出现异常的DataNode节点日志018-09-04 23:24:38,446 WARN org.apache.hadoop.hdfs.server.datanode.DataBlockScanner: No block pool scanner found for block pool id: BP-21853433-xxxxxxxxx-14848353795732018-09-05 00:45:13,777 INFO org.apache.hadoo.

2020-09-01 00:52:11 2169 3

原创 Nginx rewrite 去 query_string和 分析query实战

Nginx rewrite 去 query_string和 分析query实战 location ^~ /R { if ( $query_string ~ ^i=(.*)&t=a(.*) ) { set $a $1; set $b $2; rewrite ^/(.*) https://www.xxx.yyy.com.cn:9100/m.html#/home?id=${a}&Type=.

2020-08-22 17:29:20 2453

原创 在docker中 java进程的内存设置

微服务和docker的结合应该是现在服务端的主流技术,随着springboot的出现,有很多公司已经把微服务迁移到了docker容器中,我们也不甘寂寞,也尝试了一把新技术,把以前的整体服务进行拆分以后,也全部上到了docker容器中。问题很久之前,业务部门利用springboot开发好一个app以后,就可以通过java -jar 的命令把程序丢给docker,然后在容器中启动起来,也不管到底系统给这个应用分配了多少内存。后来由于java默认使用的内存是docker实体机器1/4的内存,导致部署了

2020-08-19 21:32:34 4960 2

转载 私服的settings profile和mirrorof

关于 Maven的配置文件的心得(profile和mirrorof)https://www.cnblogs.com/li1111xin/p/4777965.html

2020-08-18 16:45:17 971

程序员代码面试指南2-代码

《程序员代码面试指南第二版2》左程云 配套的所有的算法源代码

2019-07-07

dom4j jar包

dom4j v2.0 jar包。开发XML的必备利器

2016-02-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除