自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 收藏
  • 关注

转载 模板方法模式&策略模式区别联系

一、模板方法模板方法模式:定义 一系列算法, 子类延伸实现。着重点在于:子类去处理不同的方法实现。 看下面例子。假如一个支付 都包含三个部分: 生成订单 ----》调用API发起支付-----------》处理订单1.基类/** * 〈购物流程〉<br> * 〈模板方法基类〉 * * @author liangxing.zhu * @create 2018/9/15 * @since 1.0.0 */public abstract class AbstractP

2020-11-10 16:14:29 303

转载 关于信号量Semaphore的acquire与release的说明

Semaphore 是 synchronized 的加强版,作用是控制线程的并发数量。关于信号量Semaphore的acquire与release的说明1、Semaphore信号量作为一种流控手段,可以对特定资源的允许同时访问的操作数量进行控制,例如池化技术(连接池)中的并发数,有界阻塞容器的容量等。2、Semaphore中包含初始化时固定个数的许可,在进行操作的时候,需要先acquire获取到许可,才可以继续执行任务,如果获取失败,则进入阻塞;处理完成之后需要release释放许可。.

2020-11-10 14:26:38 2063

转载 详解Condition的await和signal等待/通知机制

1.Condition简介任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等待/通知机制,同样的, 在java Lock体系下依然会有同样的方法实现等待/通知机制。从整体上来看Object的wait和notify/notify是与对象监视器配合完成线程间的等待/通知机制,而Condit

2020-11-10 14:26:08 514

转载 [Java多线程]ABC三个线程顺序输出的问题

大概的问题是这样的:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C要求, 同时启动三个线程, 按顺序输出ABC, 循环10次这是一个多线程协同的问题, 本身多线程是没有执行顺序的, 顺序不一定, Java在concurrent里面提供了多线程同步的支持使用ReentrantLock来解决, 还有个state整数用来判断轮到谁执行了 import java.util.concurrent.locks.Lock; import java.uti...

2020-11-10 14:24:40 1696 1

转载 Java中的相除(/)和取余(%)

public class Division_remainder {public static void main(String[] args) {int a = 13 / 5; int b = 13 % 5;int c = 5 / 13; int d = 5 % 13;int e = 13 / -5; int f = -13 / 5;int h = -13 % 5; int j = 13 % -5;System.out.println(a + "," + b);System...

2020-11-09 10:37:32 569

转载 mysql在表的某一位置增加一列、删除一列、修改列名

如果想在一个已经建好的表中添加一列,可以用以下代码:alter table 表名 add column 列名 varchar(20) not null;这条语句会向已有的表中加入一列,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用:alter table 表名 add column 列名 varchar(20) not null after user1;注意,上面这个命令的意思是说添加addr列到user1这一列后面。如果想添加到第一列的话,可以用:alter tabl.

2020-11-03 18:02:48 1064

转载 MySql中增加一列

如果想在一个已经建好的表中添加一列,可以用诸如:alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null;这条语句会向已有的表中加入新的一列,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用:alter table TABLE_NAMEadd column NEW_COLUMN_NAMEvarchar(20) not null after COLUMN_NAME;注意,上面这个命令的意思是说..

2020-11-03 18:01:59 10119 1

转载 实现一个List集合中的某个元素的求和

List item List item查询所有用户年龄的总和这里用到了java8里面collect将Stream转换成值,可以对集合元素进行基本的操作,求和操作如下:List<User> userlist = userService.findAll();Integer sum= userlist .stream().collect(Collectors.summingInt(User::getAge));其他的操作:summingDouble 求和,Stream的

2020-11-03 17:55:37 6723 2

转载 Spring的Assert断言使用

现象:Spring的Assert断言使用org.springframework.util.Assert断言工具类方法:1:notNull(:) notNull(Object object, String message) 和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入参一定是 null; 结果:2:isTrue(boolean expression) /

2020-11-03 17:53:31 1093

转载 MySQL使用一张表的一列更新另一张表的一列

使用MySQL中,在一张表etl_table_field_info上新增了一个字段tgt_table_en_name,该字段的值想从表etl_table_property_info的tgt_table_en_name获取。更新时的关联关系是字段src_table_en_name值相等。SQL如下: 1 2 3 UPDATEetl_table_field_info f, etl_table_property_info p setf.tgt_tab..

2020-11-03 17:51:10 1661

转载 jdk8 lambda表达式list操作分组、过滤、求和、最值、排序、去重

java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。跟之前的传统写法对比,能少写不少代码。新建实体类1 package com.vvvtimes.vo;23 import java.math.BigDecimal;4 import java.util.Date;5 6 public class User {7 8 private Long id;9 10 //姓名 11 private String

2020-11-03 17:49:56 1279

转载 IDEA选中代码生成try-catch块

在IDEA里面按住alt+insert可以快速生成 try-catch或者 throws 异常如下:但是如果你遇到的是下面这样的代码,alt+insert就显得有点繁琐了使用ctrl+alt+t快速将选中的代码生成指定的代码块!

2020-11-01 20:24:40 3521

转载 MySQL:SELECT COUNT 小结

select count(1) 、 select count(*),和具体的select count(字段)的不同写法,这几种写法究竟孰优孰劣呢讨论归纳先来看看MySQL官方对SELECT COUNT的定义:传送门:https://dev.mysql.com/doc/refman/5.6/en/aggregate-functions.html#function_count大概可以分下面这几个步骤讨论。COUNT(expr)的分析COUNT(expr)函数返回的值是由SELECT.

2020-11-01 10:10:24 868 1

转载 TNS-12535: TNS:operation timed out案例解析

一数据库突然连接不上,在自己电脑上使用SQL Developer也连接不上。立即使用SecureCRT连接上了这台服务器,从下面几个方面检查。1:检查了数据库的状态是否正常$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.5.0 - Production on Mon May 16 11:07:55 2016Copyright (c) 1982, 2010, Oracle. All Rights Reserved....

2020-10-22 18:37:43 4999

转载 MySQL中ORDER BY与LIMIT一起使用(有坑)

1. 现象与问题ORDER BY排序后,用LIMIT取前几条,发现返回的结果集的顺序与预期的不一样下面是我遇到的问题:可以看到,带LIMIT与不带LIMIT的结果与我预期的不一样,而且“很不可思议”,真是百思不得其解后来百度了一下,如果order by的列有相同的值时,mysql会随机选取这些行,为了保证每次都返回的顺序一致可以额外增加一个排序字段(比如:id),用两个字段来尽可能减少重复的概率于是,改成 order by status, id;问题虽然是解决了.

2020-10-21 23:50:13 19426 1

转载 LambdaQueryWrapper 的条件构造器方法对应Sql

setSqlSelect SELECT 查询字段 where WHERE 语句,拼接 + WHERE 条件 and AND 语句,拼接 + AND 字段=值 andNew AND 语句,拼接 + AND (字段=值) or OR 语句,拼接 + OR 字段=值 orNew OR 语句,拼接 + OR (字段=值) eq 等于= allEq 基于 map 内容等于= ne 不等于<> gt 大于>

2020-10-20 17:13:11 8378

转载 Linux怎样将标准输出写进文件

1 启动 linux 系统,打开终端。 2 例如,现在我们想把 /home/zxb 目录下的文件信息放到 myfile.txt 文件中,则可以键入 ls /home/zxb 1>myfile.txt。 3 为了验证效果,我们首先进入 /home/zxb 文件夹下,用 ls 命令列出这个文件夹下的内容。 4 然后,我们打开 myfile.txt 文件查看其中的内容,并与上一步的内容作比较。可以看到,确实将ls /home/zxb 的输...

2020-10-19 18:05:38 3546

转载 Assert用法

断言方法说明:单元测试中,常用的断言方法介绍:Assert.AreEqual() 测试指定的值是否相等,如果相等,则测试通过;Assert.Inconclusive() 表示一个未验证的测试;Assert.IsTrue() 测试指定的条件是否为True,如果为True,则测试通过;Assert.IsFalse() 测试指定的条件是否为False,如果为False,则测试通过;Assert.IsNull() 测试指定的对象是否为空引用,如果为空,则测试通过;Assert.IsNotNull()

2020-10-19 18:04:34 1266

原创 微信请求抓包 WebView使用

一、打开usb调试模式 不同手机可能有区别,可百度开发人员选项,打开usb调试。二、打开TBS内核微信内访问http://debugtbs.qq.com三、使用WebViewDebug1. 解压WebViewDebug.7z2. 运行nw.exe3. 点击导入zip包。同一个版本,只需导入一次4. 点击“启动调试”5. 会弹出chrome://inspect的窗口,检测到设备后,点击inspect即可启动调试注意:1. 启动调试后,检测设备稍慢,需要稍...

2020-10-16 14:17:07 1559

转载 idea 插件的使用 进阶篇

idea 插件的使用 进阶篇(个人收集使用中的)恭喜你,如果你已经看到这篇文章,证明在idear使用上已经初有小成!那么就要向着大神进发了!下边就是大神之路!插件的设置在 IntelliJ IDEA 的安装讲解中我们其实已经知道,IntelliJ IDEA 本身很多功能也都是通过插件的方式来实现的,只是 IntelliJ IDEA 本身就是它自己的插件平台最大的开发者而已,开发了很多优秀的插件。• 官网插件库:https://plugins.jetbrains.com/• 如上图标注 1 所.

2020-10-16 13:34:59 893

转载 常用Intellij插件

善用Intellij插件可大幅提升我们的效率以下是我用过不错的Intellij插件1. .ignore地址:https://plugins.jetbrains.com/plugin/7495--ignore生成各种ignore文件,一键创建git ignore文件的模板,免得自己去写截图:2. lombok地址:https://plugins.jetbrains.com/plugin/6317-lombok-plugin支持lombok的各种注解,从此不用写gett.

2020-10-16 12:16:20 169

转载 Codota 插件使用详解

功能介绍整行代码自动补全 基于海量Java代码和你的代码上下文给予整行的代码建议,帮助你更快地编写错误更少的代码 搜索类似代码示例 如果你需要某些API的使用示例。Codota可以根据代码上下文帮你搜索出最好的代码示例。使用示例绿色小图标是Codota 插件提供的,下面那些是IDEA自带的,还有百分比可以参考打开示例页面单击Add查找 ...

2020-10-16 12:14:15 4839

转载 IDEA安装阿里代码规范插件

阿里规范插件GitHub地址:https://github.com/alibaba/p3cIDEA安装该插件步骤:1.打开IDEA,File-> Setteings->Plugins->Browse Repositories,在Browse Repositories搜索栏搜索Alibaba,然后安装2.安装完后点击 Restart IntelliJ IDEA 3.之后去下载本地zip文件,下载地址:https://plugins.jetbrain...

2020-10-16 12:11:12 1254

转载 SpringBoot使用Validation校验参数

JSR(Java Specification Requests)是Java界的重要标准;JSR又细分很多标准,其中JSR303就代表Bean Validation。更多细节可参考:https://jcp.org/en/jsr/detail?id=303。目录准备工作约束性注解(简单)说明@Validated的使用时机@Validated与@Valid的简单对比说明自定义注解对注解抛出的异常进行处理欢迎来到JustryDeng的博客!正文start!准备工作引入相关依赖

2020-10-04 23:27:16 708

转载 初步搭建springboot应用,报错:Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedd

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.翻译就是:无法配置DataSource:未指定'url'属性,也无法配置嵌入数据源。很明显,就是你在应用中没有配置datasource的一些相关属性,例如:地址值啊,数据库驱动啊,用户名啊,密码啊,都知道,SpringBoot的最大一个好处就是自动配...

2020-10-04 22:29:08 133

原创 2.3.4.RELEASE org.junit.runners.model.InvalidTestClassError: Invalid test class ‘com.student.validat

主要pom文件<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <!--<exclusions>--> <!--<exclusion>--&

2020-10-04 21:30:39 273

转载 2.2.6.RELEASE版本的springboot 单元测试报错 java.lang.NoClassDefFoundError: org/junit/platform/engine/support/

新建了一个2.2.6.RELEASE版本的springboot项目,在用单元测试的时候,发现没有@RunWith注解,于是,就添加了<dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency>好,现在有这个注解了,运行测试方法,报错java.l.

2020-10-04 21:23:37 927

转载 SpringCloud里参数校验/参数验证

1、前言在控制器类的方法里自己写校验逻辑代码当然也可以,只是代码比较丑陋,有点“low”。业界有更好的处理方法,分别阐述如下。2、PathVariable校验@GetMapping("/path/{group:[a-zA-Z0-9_]+}/{userid}")@ResponseBodypublic String path(@PathVariable("group") String group, @PathVariable("userid") Integer userid) { re

2020-10-04 17:56:37 2632

转载 深入理解什么是RESTful API

一、理解RESTful架构越来越多的人开始意识到,网站即软件,而且是一种新型的软件。  这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。  网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,** 现在我们必须考虑,如何开发在互联网环境中使用的软件。**RESTful架构,就是目

2020-10-02 21:17:43 371

转载 红包分配算法,总金额分配算法

一个 总数和分配几个点的数据, 但是又不能是平均值,所以写一个随机分配数,每个数的和加在一起等于总金额类似于红包分配方式,解释说明都写在类里了解释和说明* 1 抢红包的期望收益应与先后顺序无关 2 保证每个用户至少能抢到一个预设的最小金额,人民币红包设置的最小金额一般是0.01元,如果需要发其他货币类型的红包,比如区块链货币或者积分,需要自定义一个最小金额。 3 所有抢红包的人领取的子红包的金额之和加起来,等于发红包的人发出的总红包的金额。 下面实现的方式是一次生成所有的子红包...

2020-09-30 21:12:47 2594 1

转载 java.math.BigDecimal类multiply的使用

java.math.BigInteger.multiply(BigInteger val)返回一个BigInteger,其值是 (this * val).声明以下是java.math.BigInteger.multiply()方法的声明public BigInteger multiply(BigInteger val)参数 val- 通过此BigInteger乘以的值 返回值该方法返回一个BigInteger对象的值是 this * val.异常 NA 例...

2020-09-30 21:08:45 4569

转载 navicat常用快捷键与SQL基本使用

一、Navicat常用快捷键1,Ctrl+q就会弹出一个sql输入窗口2,Ctrl+r就执行sql了3,按f6会弹出一个命令窗口4,Ctrl+/ 注释5,Ctrl +Shift+/ 解除注释6,Ctrl+R 运行选中的SQL语句7,Ctrl+Shift+R 只运行选中的sql语句8,Ctrl+L 删除选中行内容9,Ctrl+D 表的数据显示显示页面切换到表的结构设计页面,但是在查询页面写sql时是复制当前行并粘贴到下一行10,Ctrl+N 打开一个新的查询窗口11...

2020-09-24 15:42:08 3996 1

转载 lombok插件的安装

首先我们需要安装IntelliJ IDEA中的lombok插件,打开IntelliJ IDEA后点击菜单栏中的File-->Settings,或者使用快捷键Ctrl+Alt+S进入到设置页面。我们点击设置中的Plugins进行插件的安装,在右侧选择Browse repositories...,然后在搜索页面输入lombok变可以查询到下方的Lombok Plugin,鼠标点击Lombok Plugin可在右侧看到Install按钮,点击该按钮便可安装。我们在安装..

2020-09-17 19:56:29 354

转载 idea自动导包设置

1、配置进入file-setting2、说明勾选标注第1个选项,IDEA 自动帮我们导入需要用到的包。但是对于那些同名的包,还是需要手动Alt + Enter进行导入的 勾选标注第2个选项,IDEA自动帮我们优化导入的包,比如自动去掉一些没有用到的包。...

2020-09-17 19:46:58 225

转载 Intellij idea自动生成serialVersionUID

新建一个测试的实体类Gradle,实现java.io.Serializable接口,选择类名,按Alt+Enter键,出现的提示框中没有生成serialVersionUID的提示,这个需要设置之后才会有自动生成的提示信息 打开File菜单,选择Settings选项,打开Settings设置对话框 左边树形目录,打开Editor》Inspections 在右边的搜索框中输入serialVersionUID关键字,出现以下选项,勾选"Serializable ..

2020-09-17 19:46:05 211

转载 MySQL数据量大时,delete操作无法命中索引?

MySQL数据量大时,delete操作无法命中索引;并且还附上了相关案例截图。最终,楼主通过开启MySQL分析优化器追踪,定位到是优化器搞的鬼,它觉得花费时间太长。因为我这个是测试数据,究其原因是因为数据倾斜,导致计算出的数据占比较大、花费时间长。大家要记住一点,一条SQL语句走哪条索引是通过其中的优化器和代价分析两个部分来决定的。所以,随着数据的不断变化,最优解也要跟着变化。因此,就需要DBA来不断的优化SQL。对于查询情况,其实MySQL提供给我们一个功能来引导优化器更好的优

2020-09-15 17:03:56 702

转载 isAnnotationPresent()方法

isAnnotationPresent()方法官方释义: java.lang.Package.isAnnotationPresent(Class<? extends Annotation> annotationClass)方法返回true,如果指定类型的注释存在于此元素上,否则返回false。这种方法的设计主要是为了方便访问标记注释.例:A.isAnnotationPresent(B.class);大白话:B类型的注解是否在A类上。 @Targ...

2020-09-15 10:46:24 476

转载 最全idea快捷键总结,大幅度提高工作效率

系统默认的快捷键1. 代码操作相关的快捷键快捷键 功能 Ctrl+Y 删除一行 Ctrl+W 选择光标所在行或者代码片(光标在大括号上),连续按会有其他效果 Ctrl+Z 撤销操作 Ctrl+Shift+Z 恢复Ctrl+Z撤销的操作 Alt+Enter 引入类或提供给你选择的处理方法 Alt+Shift+上下 代码向上/下移动一行 Alt+/ 复制上一个单词 Ctrl+Shift+Enter 自动补全分号 C

2020-09-10 22:20:31 168

转载 @NotNull,@NotBlank和 @NotEmpty使用

1.实体类package com.example;import org.hibernate.validator.constraints.NotBlank; import org.hibernate.validator.constraints.NotEmpty;import javax.validation.constraints.NotNull;import java.util.List;/* @NotNull 验证对象是否不为null, 无法查检长度为0的字符串 ..

2020-09-10 20:59:49 974

转载 Dockerfile中ENTRYPOINT和CMD的区别和最佳实践

在写Dockerfile的过程中,碰到了CMD和ENTRYPOINT两个指令,为了详细了解下两者之间的区别,google搜了一下,在medium上找到了一篇博客,写的蛮详细的,这里把里面的内容翻译一下,记录下来。原文链接在这里以下是博客正文:CMD和ENTRYPOINT这两个指令用于在Dockerfile和Docker Compose files里配置容器的运行命令。这篇博文将会解释这两者之间的不同之处以及如何在Dockerfiles中更好的使用它们。EntrypointEntrypoi

2020-09-07 13:12:19 1793

空空如也

空空如也

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

TA关注的人

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