
JAVA知识
文章平均质量分 59
GastonPeng
进步的困难是有的,但是必须得需要你自己去适应进步的过程,办法总比困难多!
展开
-
优雅的后端API接口这么写,给新手看
由于是转发也不再复制粘贴了,贴地址看吧:https://segmentfault.com/a/1190000038639204或、https://mp.weixin.qq.com/s/ipFW88zeRRQZE1BydJE9gw原创 2021-02-18 11:31:52 · 502 阅读 · 0 评论 -
Java自定义注解,并且通过反射读取注解属性
1.定义自定义元注释package com.isoftstone.mipss.common.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Inherited;import java.lang.annotation.Retention;import java.lang.annotation.Retenti原创 2021-02-18 11:14:44 · 500 阅读 · 2 评论 -
简述java中的动态代理
我们来比较Java的class和interface的区别:可以实例化class(非abstract); 不能实例化interface。所有interface类型的变量总是通过向上转型并指向某个实例的:CharSequence cs = new StringBuilder();有没有可能不编写实现类,直接在运行期创建某个interface的实例呢?这是可能的,因为Java标准库提供了一种动态代理(Dynamic Proxy)的机制:可以在运行期动态创建某个interface的实例。原创 2020-12-22 10:15:21 · 300 阅读 · 0 评论 -
Java接口数据校验2
如上所示的@EnumValue约束注解,是一个非常实用的扩展,通过该注解我们可以实现对参数取值范围(不是大小范围)的约束,它支持对int、string以及enum三种数据类型的约束,具体使用方式如下:/** * 定制化注解,支持参数值与指定类型数组列表值进行匹配(缺点是需要将枚举值写死在字段定义的注解中) */@EnumValue(strValues = {"pay", "refund"}, message = "订单类型错误")private String orderType;/** *原创 2020-12-22 10:08:49 · 319 阅读 · 0 评论 -
Java接口数据校验1
从功能上说冗余的if-else代码没啥毛病,但从代码的优雅性来说冗长的if-else代码会显得非常臃肿。接下来的内容将给大家介绍一种处理此类问题的实用方法。具体将从以下几个方面进行介绍: 使用@Validated注解实现Controller接口层数据直接绑定校验; 扩展约束性注解实现数据取值范围的校验; 更加灵活的对象数据合法性校验工具类封装; 数据合法性校验结果异常统一返回处理; Controller接口层数据绑定校验实际上在Java开发中目前普通使用的Bean原创 2020-12-22 10:02:58 · 360 阅读 · 0 评论 -
springboot+easypoi导出excel
cn.afterturn easypoi-spring-boot-starter 4.1.0public enum ExcelTypeEnum { XLS("xls"), XLSX("xlsx"); private String value; private ExcelTypeEnum(String value) { this.value = value; } pu...原创 2020-12-22 09:50:59 · 784 阅读 · 0 评论 -
java中关于String的split(String regex, int limit) 方法
在n多年之前学习Java的时候我们经常去研究那些模棱两可、不易理解和易混淆的知识点,当时我记得针对以下现象进行讨论过,想想当时实在是不易理解,今天再回去观看发现简单的很,变得很容易理解了:例如,字符串"boo:and:foo"使用这些参数可生成以下结果:Regex Limit 结果 : 2 { "boo", "and:foo" } : 5 { "boo", "and", "foo" } : -2 { "boo", "and", "foo..原创 2020-11-18 10:17:15 · 845 阅读 · 0 评论 -
详解Lambda、Stream和日期--后续用到了其他的补充
前言本篇主要讲述是Java中JDK1.8的一些语法特性的使用,主要是Lambda、Stream和LocalDate日期的一些使用。Lambda“Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式的结构 一个 Lambda 表达式可以有零个或多个参数 参数的类型既可以明确声明,也可以原创 2020-08-28 15:48:23 · 284 阅读 · 0 评论 -
东哥说java并发 第二集
欢迎来到第二集。如何正确停止线程,讲解原理:使用interrupt来通知,而不是强制java中对线程的停止并没有一个类似于电脑菜单关机那么个特别理想的命令,而是让一个线程使用intterrupt来停止目标线程,但是这个intterrupt只是一个通知并不是强制命令,因为目标线程是一个独立的其他人创建的线程,它需要完成本身的逻辑任务才能停止,但是这个过程只有它自己最清楚,目标线程的停止实际上...原创 2020-04-02 17:31:12 · 406 阅读 · 0 评论 -
cmd命令查看jdk环境变量安装目录地址
我们都知道哈,一个新环境的使用首先要配jdk环境变量,查看是否配置环境变量配置成功或查看jdk版本时通常使用一些命令,如图:来吧,今天的主角登场了,很少有人跟你说但是有些时候很实用的一个命令,最近在修改配置时需要指定环境变量的jdk中java.exe指定目录使用到了,这个命令就是:java -verbose不要去管除非目的是要看它们,前边的忽略版本在最后,如上图。还有可以先...原创 2020-04-02 08:26:38 · 4528 阅读 · 0 评论 -
东哥说java并发 第一集
实现多线程的方法package threadcoreknowledge.createthreads;/** * @author gaston * 用runnable方式创建线程 */public class RunnableStyle implements Runnable{ @Override public void run() { System.out.println...原创 2020-04-02 10:41:14 · 154 阅读 · 0 评论 -
synchronized并发讲解
syncronized的作用:能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果。syncronized的地位:1.synchronized是java的关键字,被java语言原生支持2.是最基本的互斥同步手段3.是并发编程中的元老级角色,是并发编程的必学内容在这里先模拟如果不使用synchronized的原始错误,模型:开启两个线程对一个变量i从0开始i+...原创 2020-03-16 16:25:11 · 462 阅读 · 0 评论 -
springboot打war包说明springboot打war包springboot2打war包
1. 前言Spring Boot 提供了内置的 tomcat、undertow、jetty 三种 Servlet Web 容器。让我们开箱即用,可以迅速以 JAR 启动一个 Web 应用。但是在某些场景中我们可能还需要将我们的 Spring Boot 容器以 War 的形式进行传统的部署。这时我们就需要通过借助于 SpringBootServletInitializer 来实现。2. Spr...原创 2019-11-08 17:08:40 · 217 阅读 · 0 评论 -
自定义用户认证逻辑security
package com.imooc.security.browser;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.security.core.authority.AuthorityUtils;import org.springframework.security.co...原创 2018-11-01 11:51:46 · 686 阅读 · 0 评论 -
springcloud config分布式配置中心
,之前创建的工程基本每个端口对应一个微服务,1微服务给2管理,2本身是一个分布式的服务,2和远端的github产生联系,配置和代码分离,比如某个微服务的数据库密码忘记了,我们可以找java工程师,也可以找配置师或者运维,但是运维不懂java啊此时他只需要在远端git上上传配置,config server读取配置就完成了数据库的改变,可以处理动态的多种环境的切换,...原创 2018-11-14 18:39:49 · 257 阅读 · 0 评论 -
springcloud全家桶之eureka
eureka主管服务的注册和发现,举例子,eureka就相当于一个写字楼或商场里都会有的指导说明图(它含有的信息是告诉你哪些企业分别都在那个楼层,这个花名册就是eureka,个体公司就是每个服务)。eureka是C-S模式架构,Eureka Server注册中心,需要发送心跳。注意和dubbo的对比Eureka包含两个组件:Eureka Server和Eureka Cl...原创 2018-11-12 18:08:52 · 304 阅读 · 0 评论 -
springcloud全家桶之zuul
zuul路由网关,所有的请求都会经过对勾的路由,路由就相当于门卫,起到过滤作用,它是最外层的访问接口,1包装,要访问某个微服务,我们不能暴露微服务而是给他暴露一个皮,而这个皮就是网关,2安全加固比如滴滴打车或外卖手机号进行了虚拟,路由转发和请求的功能,zuul首先注册进eureka,获取微服务信息,之后的访问就是经过zuul了,路由配置,新建工程,pom,<proje...原创 2018-11-14 16:27:41 · 330 阅读 · 0 评论 -
springcloud全家桶之Hystrix
Hystrix断路器,熔断器,程序超时该怎么办,只要是分布式就有服务熔断问题,弃车保帅,在8001基础上新建工程hystrix-8001,pom文件,<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...原创 2018-11-14 12:01:18 · 319 阅读 · 0 评论 -
springcloud全家桶之feign
ribbon负载均衡,feign负载均衡,但是一个汽车不能有两个方向盘。feign声明了一个web service客户端,它是web service编程更加简单,使用feign需要创建一个接口并且对它进行注释。之前大家用ribbon进行负载均衡,功能很强大,甚至可以自己自定义算法,feign是怎么粗来的?1.大部分的大家都可以介绍,直接调用我们的微服务来进行访问,private stati...原创 2018-11-14 08:53:09 · 400 阅读 · 0 评论 -
springcloud全家桶之ribbon
ribbon负载均衡,feign负载均衡,nginx负载均衡。springcloud对dubbo。eureka对dubbo。从阿里巴巴等级的p3到p10。举例说明,我去麦当劳买吃的,有三个窗口,三个窗口是服务端,我是客户端,我如果不傻的话肯定去人少的那个窗口,这就是客户端的负载均衡。进程内就类似于麦当劳点餐,我看哪里人少就去哪里排队。去github code是代码,主要的是...原创 2018-11-13 18:18:44 · 545 阅读 · 0 评论 -
security添加记住我功能
原理图先来一张:就说原理吧,心情不好不写了,去资源下载我的源码就行,就叫security记住我原创 2018-11-02 10:31:27 · 403 阅读 · 1 评论 -
security图片验证码
开发生成图形验证码的接口:package com.imooc.security.core.validate.code;import java.awt.image.BufferedImage;import java.time.LocalDateTime;public class ImageCode { private BufferedImage image; p...原创 2018-11-01 17:14:17 · 717 阅读 · 0 评论 -
security个性化用户认证流程二
流程一说的是自定义页面处理,一会马上立刻现在就说,这里学的是自定义登录成功和失败的处理。这不,你看,开始了吧:package com.imooc.security.browser;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annot...原创 2018-11-01 15:42:15 · 483 阅读 · 0 评论 -
springSecurity基本原理
啥也不说先贴代码:spring.datasource.driver-class-name = com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql://127.0.0.1:3306/imooc-demo?useUnicode=yes&characterEncoding=UTF-8spring.datasource.user...原创 2018-11-01 11:12:13 · 312 阅读 · 0 评论 -
security个性化用户认证流程一
package com.imooc.security.browser;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annota...原创 2018-11-01 14:42:23 · 408 阅读 · 0 评论 -
springbootredissqlspringboot缓存redis缓存存放sql语句
pom.xml引入jar包,如下 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> ...原创 2019-03-13 11:04:53 · 578 阅读 · 0 评论 -
抽象类+接口+内部类作业题
抽象类+接口+内部类作业题一、 选择题1.Person类和Test类的代码如下所示,则代码中的错误语句是( c )。(选择一项) public class Person {public String name;public Person(String name) {this.name = name;}}public class Test { public static void main...原创 2018-06-28 17:21:28 · 6041 阅读 · 0 评论 -
通过单例模式中的双重校验锁来解读volatile
Java并发编程:volatile关键字解析在学习设计模式的时候看到了单例模式中的双重锁,于是就结合资料进行了总结。 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较...原创 2019-08-08 13:59:21 · 1297 阅读 · 0 评论 -
java判断两个时间段是否有交叉
注意:这是项目里的例子,具体需要什么需要自己挑选,灵活应用package brilliance.znjt.dutymgrservice.utils;import static org.mockito.Matchers.booleanThat;import java.text.ParseException;import java.text.SimpleDateFormat;impo...原创 2019-07-10 10:40:48 · 6342 阅读 · 0 评论 -
java将clob类型装换clob转换成字符串clob装换成int
public static String ClobToString(Clob sc) throws SQLException, IOException { String reString = ""; Reader is = sc.getCharacterStream();// 得到流 BufferedReader br = new Bu...原创 2019-07-10 10:36:16 · 590 阅读 · 0 评论 -
list集合分页list分页
public static List<VresourcePolice> getPaginationListVresourcePolice(List<VresourcePolice> list,int start,int end){ List<VresourcePolice> resultList =new ArrayList<>(); fo...原创 2019-07-10 10:34:01 · 1263 阅读 · 0 评论 -
java将分钟转为小时
private String formatTime(int minuteStr){ String resultStr = ""; if (!xx.isEmpty(minuteStr)) { if (minuteStr != 0) { if (minuteStr/60 == 0) { resultStr = minuteStr%60+"分"; }...原创 2019-07-10 10:31:08 · 8486 阅读 · 0 评论 -
java判断是否为空工具类判断为空
package brilliance.znjt.serviceratingservice.utils;import java.util.Date;import java.util.List;import java.util.Map;import java.util.Set;public class xx { /** * 对象是否为空 * @param obj St...原创 2019-07-10 10:47:48 · 5283 阅读 · 0 评论 -
java使用set去重lit集合集合去重字符串集合去重
//去重最外层岗位信息 Set<BssxGWSearch> set = new TreeSet<BssxGWSearch>(new Comparator<BssxGWSearch>() { public int compare(BssxGWSearch a, BssxGWSearch b) { ...原创 2019-07-10 10:25:54 · 806 阅读 · 0 评论 -
java校验输入的是否是数字还是字母
private static boolean getStringType(String str) { String txt = str + ""; Pattern p = Pattern.compile("[0-9]*"); Matcher m = p.matcher(txt); if (m.matches()) {// 输入的是数字 return true; ...原创 2019-07-10 10:24:03 · 3255 阅读 · 0 评论 -
阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义
分层领域模型规约:DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。 DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。 BO( Business Object):业务对象。 由Service层输出的封装业务逻辑的对象。 AO( Application Object):应用对象。 在W...原创 2019-04-12 10:40:09 · 391 阅读 · 3 评论 -
java将分钟转成时分将秒时间转换
这里是秒转时间,如果是分钟就自己处理一下,每个计算里边去掉两个60就行public class Time {public static String formatDateTime(long mss) {String DateTimes = null;long days = mss / ( 60 * 60 * 24);long hours = (mss % ( 60 * 60 *...原创 2019-03-22 20:08:41 · 9065 阅读 · 0 评论 -
java使用collections排序任意字段list排序list集合排序
//外层按岗位编号排序 Collections.sort(list2, new Comparator<BssxGWSearch>() { @Override public int compare(BssxGWSearch o1, BssxGWSearch o2) { //正序 return (int) (Integer.parseInt(o1...原创 2019-07-10 10:27:37 · 370 阅读 · 0 评论 -
使用wiremock伪造restful服务
目的,有三个人使用接口,安卓苹果和前端,这时候每个人伪造就会做三次,使用wiremock一个服务就能解决。访问官网,下载jar包,然后到该目录中去运行5的命令,在命令后边指定第6步的port。如下图加入依赖:<dependency> <groupId>com.github.tomakehurst</groupId> <artifa...原创 2018-11-01 09:44:07 · 459 阅读 · 0 评论 -
面向对象设计原则
1、单一职责原则SRP1、概念单一职责原则 SRP --- Single Responsibility Principle There should never be more than one reason for a class to change。应该有且仅有一个原因引起类的变更ü 系统中的每一个类都应该只有一个职责,而所有类所关注的就是自身职责的完成ü 职责是指为“变化的原因” ü 如果能...原创 2018-06-27 10:05:34 · 149 阅读 · 0 评论