学习
Drizzleeeeee
这个作者很懒,什么都没留下…
展开
-
JAVA String最多能放多少字符?
问:字符串有长度限制吗?是多少?答:首先字符串的内容是由一个字符数组 char[] 来存储的,由于数组的长度及索引是整数,且String类中返回字符串长度的方法length() 的返回值也是int ,所以通过查看java源码中的类Integer我们可以看到Integer的最大范围是2^31 -1,由于数组是从0开始的,所以数组的最大长度可以使【0~2^31】通过计算是大概4GB。但是通过翻阅java虚拟机手册对class文件格式的定义以及常量池中对String类型的结构体定义我们可以知道对于索引定义了u2,原创 2022-06-17 15:56:52 · 2797 阅读 · 0 评论 -
为什么http是不安全的?http会被怎样攻击?
因为http是明文传输的,如果在传输过程中被黑客捕获到,黑客就可以得到消息内容,修改http内容。因为网络请求中黑客捕获方式有很多,例如:原创 2021-06-19 21:42:37 · 1787 阅读 · 0 评论 -
@Transactional注解简单理解
加了@Transactional注解就会被TransactionInterceptor切到TransactionInterceptor中查找当前使用到的PlatformTransactionManager,对事物进行管理。(如使用的是空实现的PlatformTransactionManager,则事物不起作用)原创 2021-02-21 18:42:37 · 194 阅读 · 0 评论 -
什么是TCP/UDP协议?(超简单,一看就会)
TCP/UDP协议做了什么?TCP/UDP协议处于计算机网络的第四层“传输层”,负责传输数据包。数据包怎么传?(UDP协议)TCP/UDP协议处于计算机网络的第四层“传输层”,下面三层从小到大 分别是“物理层”、“数据链路层”、“网络层”。有了下三层的铺垫,我们已经可以把一个数据包从A主机发送到在互联网任意一个角落的B主机上啦! 站在高层就是好啊!什么都不要做!那开始传输数据包吧。好像有问题了,数据包传输过程中只给到了ip地址,从A主机发到B主机后,交给哪个进程(软件)处理呢?...原创 2021-02-01 01:10:11 · 567 阅读 · 0 评论 -
布隆过滤器应用DEMO
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>21.0</version> </dependency>public class BloomFilterDemo { private static final int...原创 2020-12-21 11:05:44 · 130 阅读 · 0 评论 -
编程规范:为什么boolean类型变量命名禁用is开头
java中,对于非boolean类型的参数,getter和setter方法命名的规范是以get和set开头,如下: private String Success; public String getSuccess() { return Success; } public void setSuccess(String success) { Success = success; } 而对于boolean类型的参数,set...原创 2020-11-25 13:59:37 · 1705 阅读 · 1 评论 -
GitBook 使用教程
背景由于之前都把零散的知识都写在 Gist 上,要查找的时候不是很系统化,所以打算挪到 GitBook 上来统一管理,而且 GitBook 写完编译后可以生成静态页面发布到博客上,逼格满满的样子。GitBook 简介GitBook 官网 GitBook 文档GitBook 准备工作安装 Node.jsGitBook 是一个基于 Node.js 的命令行工具,下载安装 Node.js,安装完成之后,你可以使用下面的命令来检验是否安装成功。$ node -vv7.7.1.原创 2020-11-11 11:52:58 · 297 阅读 · 0 评论 -
GitHub如何选择开源许可证?
原创 2020-11-07 13:51:30 · 433 阅读 · 0 评论 -
原码,反码,补码的深入理解与原理
本文从原码讲起。通过简述原码,反码和补码存在的作用,加深对补码的认识。力争让你对补码的概念不再局限于:负数的补码等于反码加一。接触过计算机或电子信息相关课程的同学,应该都或多或少看过补码这哥仨。每次都是在课本的最前几页,来上这么一段:什么反码是原码除符号位,按位取反。补码等于反码加一。然后给整得莫名其妙,稀里糊涂地,接着就是翻页,反正后面的内容也跟三码没多大关系。我原来也是看了好几遍都没看懂。古人云:事不过三。学C语言的时候,看过一次。不懂?看《计算机基本组成原理》的时候看过,还是不...原创 2020-10-30 14:16:43 · 636 阅读 · 6 评论 -
Java实现自定义注解
前言 上一篇文章介绍了注解的一些基本知识,这次来介绍下如何实现自定义注解及注解如何使用。正文 注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。 声明一个注解要用到的东西修饰符 访问修饰符必须为public,不写默认为pubic; 关键字 关键字为@interface; 注解名称 ...原创 2020-09-11 11:19:47 · 233 阅读 · 0 评论 -
Spring中的@Transactional(rollbackFor = Exception.class)属性详解
序言今天我在写代码的时候,看到了。一个注解@Transactional(rollbackFor = Exception.class),今天就和大家分享一下,这个注解的用法;异常如下图所示,我们都知道Exception分为运行时异常RuntimeException和非运行时异常error是一定会回滚的如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。如果不想终止,则必须捕获所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了..原创 2020-09-01 10:21:26 · 296 阅读 · 0 评论 -
项目中权限分配使用到的位运算
原因:某一模块的权限太多,如对客户的权限 , 增删改查就是四个权限,就是四个权限字符串与之对应。解决方案:增2 ,删 4 , 改 8 查 16对应二进制为2:104:1008:100016:10000当有增删权限时,权限码为6,对应二进制:110,6与运算2,结果为:110按位与运算10 = 010 =2 > 0 说明6有增的权限原理:定义权限码时按照向前提一位进行定义,不同的权限吗保证不会有相同的位为1,使用时进行按位与预...原创 2020-07-06 01:20:29 · 201 阅读 · 0 评论 -
Maven相关问题汇总
maven中的${project.groupId} 和 ${project.version} 表示当前项目的groupId和版本。原创 2020-07-05 23:35:00 · 103 阅读 · 0 评论 -
IntelliJ IDEA报错Error:java: Compilation failed: internal java compiler error的解决办法
报错内容:Information:Using javac 1.8.0_73 to compile java sourcesInformation:java: javacTask: 源发行版 1.8 需要目标发行版 1.8Information:java: Errors occurred while compiling module 'EZSonar'Information:Module "EZSonar" was fully rebuilt due to project configuration原创 2020-06-21 16:55:02 · 3784 阅读 · 0 评论 -
Mac上MySQL忘记密码解决方法
关闭MySQL服务在Mac的系统偏好设置中,进入MySQL管理面板,然后选择“Stop MySQL Server”选项停掉服务。打开终端依次执行如下命令:# 第一步,进入mysql的bin目录cd /usr/local/mysql/bin/# 第二步,使用root账户(这一步要输入mac密码)sudo su# 第三步./mysqld_safe --skip-grant-tables &# 第四步,这一步会进入mysql的命令行./mysql# 第五步F...原创 2020-06-21 16:28:58 · 251 阅读 · 0 评论 -
@Validated和@Valid区别
Spring Validation验证框架对参数的验证机制提供了@Validated(Spring’s JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。JSR303定义的校验类型空检查@Null 验证对象是否为null@NotNull 验证对象是否不为null, 无法查检长度为0的字符串@NotBlank 检查约束字符串是不是...原创 2020-06-16 10:09:00 · 1071 阅读 · 0 评论 -
同一个类中调用Async或Transational无效
在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解是不会生效的代码示例:例子中,有两方法,一个有@Transational注解,一个没有。如果调用了有注解的addPerson()方法,会启动一个Transaction;如果调用updatePersonByPhoneNo(),因为它内部调用了有注解的addPerson(),如果你以为系统也会为它启动一个Transaction,那就错了,实际上是没有的@Servicepublic class P..原创 2020-06-15 14:55:03 · 1807 阅读 · 0 评论 -
springboot整合spring retry 重试机制
当我们调用一个接口可能由于网络等原因造成第一次失败,再去尝试就成功了,这就是重试机制,spring支持重试机制,并且在Spring Cloud中可以与Hystaix结合使用,可以避免访问到已经不正常的实例。 但是切记非幂等情况下慎用重试 一 加入依赖 <!-- 重试机制 --> <dependency> <groupId>org.springframework.retry</groupId> <artifa...原创 2020-06-14 20:42:18 · 620 阅读 · 0 评论 -
Spring 指南(spring-retry)
spring-retry该项目为Spring应用程序提供声明式重试支持,它用于Spring Batch、Spring Integration、Apache Hadoop的Spring(以及其他),命令式重试也支持显式使用。入门声明式示例@Configuration@EnableRetrypublic class Application { @Bean public Service service() { return new Service();转载 2020-06-14 20:41:32 · 751 阅读 · 0 评论 -
详解重试框架Spring retry实践
spring retry是从spring batch独立出来的一个能功能,主要实现了重试和熔断。这篇文章主要介绍了详解重试框架Spring retry实践,具有一定的参考价值,感兴趣的小伙伴们可以参考一下spring retry是从spring batch独立出来的一个能功能,主要实现了重试和熔断。对于重试是有场景限制的,不是什么场景都适合重试,比如参数校验不合法、写操作等(要考虑写是否幂等)都不适合重试。远程调用超时、网络突然中断可以重试。在微服务治理框架中,通常都有自己的重试与超时配置,比如dubb转载 2020-06-14 20:40:49 · 641 阅读 · 0 评论 -
Mysql中的JSON系列操作函数
一、方法罗列:分类 函数 描述创建jsonjson_array 创建json数组json_object 创建json对象json_quote 将json转成json字符串类型查询jsonjson_contains 判断是否包含某个json值json_contains_path 判断某个路径下是否包json值json_extract 提取json值column->path json_extract的简洁写法,MySQL 5.7.9开始支持column->&g...原创 2020-06-08 10:36:10 · 356 阅读 · 0 评论 -
MySQL5.7的JSON基本操作
MySQL从5.7版本开始就支持JSON格式的数据,操作用起来挺方便的。建表在新建表时字段类型可以直接设置为json类型,比如我们创建一张表:mysql> CREATE TABLE `test_user`(`id` INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `info` JSON);json类型字段可以为NULL插入数据:mysql> INSERT INTO test_user(`nam原创 2020-05-19 13:52:36 · 823 阅读 · 0 评论 -
linux下 cat grep快速查找内容
部署在Linux下的程序,日志很多,而且实时滚动,可以通过以下方式快速查找自己自己想要的内容:cat log.txt | grep 'ERROR' -A 5意思是,在log.txt文件中,查找ERROR字符,并显示ERROR所在行的之后5行cat log.txt | grep 'ERROR' -B5之前5行cat log.txt | grep 'ERROR' -C5 前后5行cat log.txt | grep -v 'ERROR' 排除ERROR所在的行...原创 2020-05-11 11:58:41 · 244 阅读 · 0 评论 -
工作中面向对象使用场景列举
1. 批量消息发送框架,发送层 TODO2. ApiErrorCode TODO3. DataSource TODO原创 2020-04-26 15:34:21 · 3015 阅读 · 0 评论 -
java8 stream流操作的flatMap(流的扁平化)
flatMap的用法和含义住要通过一个案例来讲解,案例:对给定单词列表 ["Hello","World"],你想返回列表["H","e","l","o","W","r","d"]第一种方式 String[] words = new String[]{"Hello","World"}; List<String[]> a = Arrays.stream(w...转载 2020-04-23 11:55:49 · 1125 阅读 · 0 评论 -
【网络渗透】什么是CSRF攻击?
什么是CSRF攻击?CSRF(Cross Site Request Forgery) 跨站点请求伪造要完成一次CSRF攻击,受害者必须依次完成两个步骤:1. 登录受信任网站A,并在本地生成Cookie。2. 在不登出A的情况下,访问危险网站B。看到这里,你也许会说:“如果我不满足以上两个条件中的一个,我就不会受到CSRF的攻击”。是的,确实如此,但你不能保证以下情况不会发生:1.你不...原创 2020-04-05 17:07:47 · 244 阅读 · 0 评论 -
【UML】什么是用例图、时序图、部署图、类图、活动图?
用例图概念: 用例图是用来描述系统功能的技术,表示一个系统中用例与参与者及其关系的图,主要用于需求分析阶段。用例图的基本组成元素:参与者、用例、元素之间的关系。例:时序图概念: 时序图是按时间顺序显示对象交互的图。它显示了参与交互的对象和所交换信息的先后顺序。时序图的基本组成元素:对象、生命线、激活和消息。其中纵向是代表时间维度,时间向下延伸,按时间依次列出各个对象所发出和接收的消...原创 2020-04-04 17:32:20 · 7540 阅读 · 0 评论 -
为何图片经过OSS缩略之后尺寸变大了?
摘要:OSS提供了基本的图片处理功能和图片格式之间的转换功能,在实际使用过程中,很多用户使用OSS将原图缩略之后输出,在这个过程中也出现了很多用户询问为何缩略之后图片尺寸变大,本文主要通过一些示例解释了这种现象出现的原因和排查方法。简介OSS提供了基本的图片处理功能和图片格式之间的转换功能,在实际使用过程中,很多用户使用OSS将原图缩略之后输出,在这个过程中也出现了很多用户询问为何缩略...原创 2020-01-08 17:55:02 · 773 阅读 · 0 评论 -
解决IDEA不能自动导入java.util.List的问题
点击“File”-->“Settings”然后“Editor”-->“General”-->“Auto Import”把里面的java.util.List删除即可:原创 2020-01-08 16:18:12 · 5473 阅读 · 4 评论 -
Java中file类getPath(),getAbsolutePath(),getCanonicalPath()方法区别
file的这几个取得path的方法各有不同,下边说说详细的区别概念上的区别:(内容来自jdk,个人感觉这个描述信息,只能让明白的人明白,不明白的人看起来还是有点难度(特别试中文版,英文版稍好些)所以在概念之后我会举例说明。如果感觉看概念很累就跳过直接看例子吧。看完例子回来看概念会好些。getPathpublicStringgetPath()将此抽象路径名转换为一个路径名字符串。所得到的字...原创 2020-01-08 12:03:18 · 308 阅读 · 0 评论 -
@JsonFormat与@DateTimeFormat注解的使用
背景:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题,其次,另一个问题是,我们在使用WEB服务的时,可能会需要用到,传入时间给后台,比如注册新用户需要填入出生日...原创 2019-12-29 16:26:59 · 155 阅读 · 0 评论 -
mysql的default collation
mysql的collation大致的意思就是字符序。首先字符本来是不分大小的,那么对字符的>, = , < 操作就需要有个字符序的规则。collation做的就是这个事情,你可以对表进行字符序的设置,也可以单独对某个字段进行字符序的设置。一个字符类型,它的字符序有多个,比如:下面是UTF8对应的字符序。 utf8_general_ci utf8 33 Yes Yes...转载 2019-12-26 15:09:56 · 922 阅读 · 0 评论 -
Json注解属性JsonIgnoreProperties,JsonInclude,JsonProperty总结小记
1.JsonIgnoreProperties属性此注解是类注解,作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。示例用法:@JsonIgnoreProperties(ignoreUnknown = true)该注解是放在类名上面,作用是:忽略类中不存在的字段当接收的时候2.JsonInclude属性//将该标记放在属性上,如果该属性...原创 2019-12-25 15:49:57 · 1824 阅读 · 1 评论 -
linux命令——ll详解
一、ll命令ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名。Ubuntu默认不支持命令ll,必须用 ls -l,这样使用起来不是很方便。如果要使用此命令,可以作如下修改:打开 ~/.bashrc找到 #alias ll=’ls -l’,去掉前面的#就可以了。(关闭原来的终端才能使命令生效)这样个人用户可以使用ll命令,当切换成超级用户后,使用ll命令时提示找...转载 2019-12-19 10:34:05 · 10968 阅读 · 0 评论 -
二维码定制
二维码生成服务之深度定制之前写了一篇二维码服务定制的博文,现在则在之前的基础上,再进一步,花样的实现深度定制的需求,我们的目标是二维码上的一切都是可以由用户来随意指定设计1. 技术相关zxing 开源包用于生成二维码springboot 搭建基本web服务,提供http接口awt 用于图片的编辑httpclient 用于从网络下载图片lombok 简化编码2. 目的既然是对二...转载 2019-12-17 21:29:41 · 391 阅读 · 0 评论 -
IDEA - 生成iml文件
简单说明IDEA中的.iml文件是项目标识文件,缺少了这个文件,IDEA就无法识别项目。跟Eclipse的.project文件性质是一样的。并且这些文件不同的设备上的内容也会有差异,所以我们在管理项目的时候,.project和.iml文件都需要忽略掉。生成iml文件方法一(建议):刷新一下Maven Project就会自动生成.iml文件。点击下图红框标记的按钮即可完成后就会自动生成....转载 2019-12-16 21:22:27 · 4645 阅读 · 0 评论 -
idea 错误: 找不到或无法加载主类(汇总贴)
idea 错误: 找不到或无法加载主类 xxx.xxx.xxxxxJDK环境,maven项目还是ee还是web项目,是否都正常。如果是用idea打开的话,在源码目录上点击右键,然后找到Mark directory as->source root看这篇:(真的是主类没找到)http://www.cnblogs.com/mrray1105/p/8135616.html...转载 2019-12-16 09:34:35 · 257 阅读 · 0 评论 -
IDEA本地环境出问题的解决方案
1.mvn clean install -Dmaven.test.skip=true2.pom.xml中的<dependency/>内容删除,等依赖被删除后(大概十几秒),再添加上3.把repository删除,重新mvn clean install -Dmaven.test.skip=true4.使用mvn spring-boot:run 命令跑项目确认问题是代码不对还...原创 2019-12-13 14:08:29 · 2550 阅读 · 1 评论 -
压缩文件工具类
public class ZipUtils { private static final int BUFFER_SIZE = 2 * 1024; private static Logger logger = LoggerFactory.getLogger(ZipUtils.class); /** * 压缩成ZIP * * @param srcDir * ...原创 2019-12-10 14:35:13 · 493 阅读 · 0 评论 -
mysql索引优化
SQL如下:CREATE TABLE IF NOT EXISTS staffs( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(24) NOT NULL DEFAULT "" COMMENT'姓名', age INT NOT NULL DEFAULT 0 COMMENT'年龄', pos VARCHAR(20) NOT NULL DEFAULT "" COMMENT'职位', add_time TIMEST.原创 2019-11-12 00:03:59 · 93 阅读 · 1 评论