
java
文章平均质量分 93
辉之素狂
学以致用
展开
-
Bitmap位图大法
Bitmap是位图的意思,使用位数字表示数据的状态,可以对大量数据进行快速的查找,统计。面试过程中很多都会涉及到大量数据少量内存来进行判断该元素是否存在?判断某一个ip重复次数最多,进行排序找出前100的数据等问题其实这一类问题用位图可以解决,还有的方法就是读取部分后写入,其实所有的方法都有点分而治之的思想。但是今天不讲分治法,只讲Bitmap思想和遇到问题怎么解决。原理:什么是bit,一个字节=8bit,使用二进制表示,一个字节能表示的范围为:0000 0000~...原创 2020-11-03 16:15:36 · 835 阅读 · 0 评论 -
多注解自定义参数校验
好久之前更新了单个注解参数校验以后。偷懒了好久,今天就把多个注解自定义的参数校验写了一下,思路是一样的,只是一个注解包含的字段把它分解成了多个注解,类似于java-valid自带的不同功能的校验注解一般,自带的主要适用于不为空,数字型范围之类的校验,对于该属性包含几个值,集合元素个数的限制等都要自定义实现。下面我们这几肝一下:(打工人的觉悟,肝就完了)我把原先的注解分成了四类@Checked //主要用来标记方法或者类是否是校验的@CheckLength// 校验长度的,集合大小的...原创 2020-11-01 15:43:22 · 820 阅读 · 0 评论 -
自定义一个注解校验接口参数
这段时间封装了很多的sdk,有一些sdk要求请求参数做验证,由于封装sdk肯定是用到第三方的依赖越少越好,所以自己不才写了一个注解的校验,本版本校验没有给出自定一点message,如果要可以自己加上,修改一下即可。下面就说一下这个怎么实现的吧:一:注解类:注解类代码如下:package com.blog.annotation.one;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;原创 2020-08-19 22:33:46 · 555 阅读 · 0 评论 -
操作系统之-页面置换算法(java代码模拟)
一:页面置换算法简介在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据送磁盘的对换区中。但应将哪个页面调出,须根据一定的算法来确定。通常,把选择换出页面的算法称为页面置换算法(Page-Replacement Algorithms)。置换算法的好坏,将直接影响到系统的性能。一个好的页面置换算法,应具有较低的页面更换频率。从理论上讲,应将那些以后不再会访问的页面换出,或把那些在较长时间内原创 2020-06-15 15:50:03 · 4419 阅读 · 0 评论 -
(偶尔一刷)求一个集合里面和为某个数的子集个数
例如6 281 1 2 3 25 26输出:4代码:import java.util.*;public class Main { public static int[] numbers; public static Set<String> resultSet = new HashSet<>(); public static void main(String[] args) { Scanner scanne.原创 2020-05-27 14:34:54 · 405 阅读 · 1 评论 -
Redis分布式锁(看门狗)
1、锁住对象,并且设置一个过期时间(业务逻辑操作时间一定小于超时时间)原先能想到的就是这样的一个方案然后代码实现如下:public static boolean lock(String key, Long expireTime) { final long expires = Objects.nonNull(expireTime) ? expireTime : 10L; return (Boolean) redisTemplate.execute((RedisCallback) conn原创 2020-05-27 13:37:51 · 8843 阅读 · 0 评论 -
Java自动装箱和拆箱浅析
自动装箱和拆箱基本说明数据类型 字节大小 默认值 包装类 范围 byte 1 0 Byte -2^7 ~ 2^7-1 short 2 0 Short -2^15 ~ 2^15-1 int 4 0 Integer -2^31 ~ 2^31-1 long 8 0 Long -2^63 ~ 2^63-1 float 4 0.0 Float 3.原创 2020-05-27 11:29:18 · 178 阅读 · 0 评论 -
使用synchronized小坑
一般使用synchronized的时候,主要是用在方法上,代码块上,当使用在代码块的时候一般锁的都是类或者对象,但是有的人会去锁封装的常量。这个时候去锁这个封装的常量就会有问题了,我们来写个简单的demo来看看什么问题。错误使用案例:public static void print(Integer num) { synchronized (num) { try { ...原创 2020-04-11 21:36:41 · 325 阅读 · 0 评论 -
SpringBoot请求参数校验和接口参数校验
小辉是写接口的一个小菜鸟,今天就看到了一段代码,里面判断参数是否为空长度是多少,格式对不对等就是一堆判断,然后代码中就很多判断,或者单独写了判断方法,如果请求类不复用,或者复用但是判断都一样的话可以优先使用请求层校验,或者接口层校验。请求层就是在Controller就判断,接口层就是在Service判断。对于不复杂的场景这些校验其实够了。一:常用注解这个包下面的注解,是不是很熟悉呀?...原创 2020-03-28 14:56:20 · 2524 阅读 · 0 评论 -
knife4j(swagger的升级版)使用
目前很多的后台都开始使用swagger来写文档接口了,但是swagger有很多限制:1、swagger不支持头部自定义加入参数,如果是头部有token等之类参数要放入时swagger就无法调试接口了,只有看的份了。2、swagger对application/json请求的类型的确实很友好,但是对于表单类型的application/x-www-form-urlencoded就很不友好了,你使...原创 2020-03-24 20:21:50 · 3134 阅读 · 1 评论 -
Spring的事务使用
大家好,今天小辉就讲一下Spring的事务。事务百度上的解释是这个事务解释很明确哈就是要做的或所做的事情,在数据库中其实就是你要执行的语句,你要执行多少条语句,这些语句顺序怎样执行的你都可以通过事务来控制,事务还有一个特性就是可以后悔,对已经执行的语句进行回滚,(小辉开车中:想拥有这个特性呢)。转回来 ,Spring 事务其实就是对数据库事务的支持了。Spring 事务的隔离级别和数据库...原创 2020-01-05 12:59:28 · 684 阅读 · 0 评论 -
六种两个线程交替打印(0A1B2C....)方法(目前自我认知6种)
一:六种方法题目:编写程序实现两个线程一个线程输出0、2、3…51,另外一个线程实现A...Z, a...z,(0A1B2C....49x50y51z)很多地方都可以见到类似的笔试题或者面试题,今天小辉以自己认知的范围内列举了如下6种方法,如果你们还有其他的方法留言给小辉,小辉立马学习改正。1:使用synchronized & wait & notifypubli...原创 2019-12-31 15:33:55 · 721 阅读 · 0 评论 -
Disruptor购物案例(秒杀)
一:Disruptor简单说一说Disruptor 是一个 Java 的并发编程框架,大大的简化了并发程序开发的难度,在性能上也比 Java 本身提供的一些并发包要好。Disruptor原理:采用了一个数组,循环使用这个数组,从而形成了环。里面有一个序号管理器,使消费者和生产者之前快速正确地传输数据。RingBuffer中每个数据的序号,用于跟踪ringbuffer中任务的变化和消费者的消...原创 2019-12-13 16:07:28 · 872 阅读 · 0 评论 -
压缩文件工具类ZipUtil(批量文件操作)
一:FileInputStream,BufferedInputStream,BufferedImage,FileChannelFileInputStream是IO的,可以说是单线程阻塞的,并且是直接读取磁盘,性能不怎么友好,Buffered开头的:buffer是缓冲的意思,就是有一个缓冲区,实际上是一个容器,一个连续数组,默认数组大小是8192。FileChannel:国内大多翻译成“...原创 2019-12-11 15:59:42 · 2667 阅读 · 0 评论 -
Java使用LDAP代码
一、导入证书cmd运行命令:(管理员权限运行哦)(蓝色的是不可修改的的,其他对应替换就好了)1、导入命令:keytool -import -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -keypass changeit -alias ca_test-file C:\Users\Desktop\...原创 2019-11-12 18:04:26 · 1739 阅读 · 0 评论 -
Java中Class类方法使用浅析
Java中Class类方法使用浅析1、 public String toString() 源码:isInterface() ? "interface " : (isPrimitive() ? "" : "class ")) + getName(); 例如: System.out.println(User.class.toString()); Syst...原创 2019-11-06 17:41:15 · 996 阅读 · 0 评论 -
获取一个类方法属性和反射调用
一:获取类方法属性和反射调用写了一个demo:import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util....原创 2019-11-05 16:30:11 · 259 阅读 · 0 评论 -
Java中Objects、Collections、Arrays的方法讲解
一、Objects1、compare:比较两个对象是否相等2、equals:比较两个对象、数字、字符串、是否相等,如果是实例化对象最好重写equals方法,因为它就是调用equals方法。3、deepEquals:该方法其实就是在Objects.equals方法基础上修改调用Arrays.deepEquals方法可以算是深度比较。4、hash:调用了Arrays.hashCode方...原创 2019-10-25 16:09:05 · 554 阅读 · 0 评论 -
Eclipse开发SpringMVC简单小程序
以前没有学Spring的时候总以为Spring就是一个框架很容易就上手了,但是自从看了Spring后整个人都是变 了一样的。虽然Spring有好多书籍,视频也挺多的,但是你看着视频原模原样的打下来,可是问题还是那么多。Spring我分为了三块: Spring | SpringMVC | Spring Boot下面做个SpringMVC的小程序吧!一:用Eclip原创 2017-06-07 08:59:00 · 4368 阅读 · 0 评论 -
用javaSwing和mysql数据库做的一个登录页面
一:首先在eclipse中新建一个java工程二:然后新建一个包,并且在包中新建两个类:一个事登录用的界面(Login)类,一个事连接数据库的(jdbcs)类我建立的是p4这个包三:导入包mysql-connector-java-8.0.16.jar并且要添加到构建路径不添加到构建路径项目工程不会读出来的(原先的驱动com.mysql.jdbc.Driver已经升级到了com.mysq...原创 2017-06-24 07:40:15 · 24192 阅读 · 36 评论 -
java基本算法之冒泡排序
java的基本算法第一帖: 冒泡排序冒泡排序很多人都知道有好多java的源码是采用了冒泡排序算法的。冒泡排序算法是一种稳定的排序算法,时间复杂度为O( n^2 )源程序如下: public void maopaoSort(int [] a){ for(int i = 0 ; i < a.length ; i++){ for(int j = i...原创 2018-01-27 17:30:20 · 303 阅读 · 0 评论 -
java爬虫查成语应用程序Swing编程
根据看了一些java爬虫的书籍做了一个简单的java爬虫的应用小程序,以下就是教程:压缩包下载链接请点击:源代码一、解析Html网页首先要做一个查成语的应用,我们要选取一个查成语的网站我选取的是 乐乐课堂查成语这个网站 (乐乐课堂)http://www.leleketang.com/chengyu每一网站都不一样的,因为每一个网站所使用的class,id 都是不一样的,可以说...原创 2018-02-08 10:38:54 · 1020 阅读 · 0 评论 -
commons-lang里面StringUtils方法说明以及案例
下面总结了StringUtil里面的常用的方法:1.public static boolean isBlank(String str)在校验一个String类型的变量是否为空时,通常存在3中情况是否为 null 是否为 "" 是否为空字符串(引号中间有空格) 如: " "。 制表符、换行符、换页符和回车 StringUtils的...原创 2018-04-19 14:39:53 · 39581 阅读 · 5 评论 -
spring data使用操作mongodb数据库 springboot
在IDEA里面使用新建一个maven项目,项目的结构是如图所示:(注意:springboot 项目中所有的组件必须位于application同级或者子包下才会被扫描到,不然就会报上面的错!)导入相关的jar包1、加入jar包依赖 <parent> <groupId>org.springframework.boot</groupI...原创 2018-09-12 14:14:59 · 6060 阅读 · 1 评论 -
Java使用MongoDB数据库进行增删改查,使用密码账户操作
1、MongoDB数据库用户的创建由于MongoDB安装默认的账户是没有密码的,是对所有ip 都开放的。我选择了新建一个用户来访问数据库,首先直接点击bin目录下的mongo.exe启动数据库使用admin数据库,新建一个用户use admin //使用admin数据库db.createUser({user:"ceshi",pwd:"123456",roles:["root"]})...原创 2018-09-10 15:26:51 · 5780 阅读 · 0 评论 -
Arrays使用asList方法的坑
话不多说:直接上代码:import java.util.Arrays;import java.util.List;/** * @author yh128 * @version 1.0.0 * @ClassName JavaUtilLearn.java * @Description 基础练习 * @Param * @createTime 2019年06月11日 09:37:0...原创 2019-06-11 11:25:21 · 756 阅读 · 1 评论 -
JSON数据转化实体、List(Gson,FastJson,jackson,Json-Lib四种)
目前前后端分离是越来越趋势化了,前后端交互一般都是用json数据格式,前端传一堆json数据过来,我们转化就成了一个问题,下面就根据转化为实体类和List相关做了一个案例:首先使用的jar版本是:基本用的都是最新的版本: <dependency> <groupId>net.sf.json-lib</groupId>...原创 2019-07-01 23:23:53 · 1252 阅读 · 0 评论 -
Java函数式编程案例(JDK8新特性)
虽然现在jdk13都快出来了,但是最主流最稳定还是JDK8吧,JDK8也有很多新特性,一般新特性是对以前旧版本的优化或者衍生出的用法,我个人认为这个JDK8的函数式编程很有用,不仅可以优化代码还可以提高效率。通过看了书籍《Java 8函数式编程》自己提取出了对自己目前有用的一些操作,如果读者感觉不能满足你的需求可以看看书,顺便可以看一下《Java 8 Action》里面也有一些介绍。下面我就先上我...原创 2019-07-30 17:55:01 · 440 阅读 · 0 评论 -
HttpServletResponse和 ResponseEntity下载文件预览图片
直接上菜,然后在点评一波:import org.springframework.http.*;import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.URLEncoder;@R...原创 2019-07-31 22:40:54 · 5435 阅读 · 3 评论 -
Eclipse中Spring环境配置以及跑个Helloworld
对于Spring,刚开始配置是很烦的,但是编了几个程序后就不会感觉那么难配置 了。今天我们来讲讲怎么搭建Spring环境以及跑一个HelloWorld。一、Spring环境配置1、离线安装Spring的jar包百度搜索springsource-tool-suite-3.7.2.RELEASE-e4.5.1-updatesite下载下来,不用解压哦,记住下载到哪里,等会用到的哦。...原创 2017-05-10 07:53:47 · 10154 阅读 · 2 评论