
java
困境囚徒
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Lambda之Supplier
特质 生成者模型,无输入参数,返回指定类型 测试 测试参照 @Data public static class Foo { String strVal = "Hello"; int intVal = 1; Double doubleVal = 2.0; Long longVal = 3L; Boolean trueVal = true; String strTmp; int intTmp = 1; Double doubleTmp; Long longTmp; } 万能型Su原创 2020-06-18 10:30:46 · 1148 阅读 · 0 评论 -
Lambda之Function
特质 函数,接收一个或多个参数,返回指定类型结果 测试 测试数据 @Data public static class Foo { String strVal = "Hello"; int intVal = 1; Double doubleVal = 2.0; Long longVal = 3L; Boolean trueVal = true; String strTmp; int intTmp = 1; Double doubleTmp; Long longTmp; } 万能原创 2020-06-18 10:12:52 · 2117 阅读 · 0 评论 -
Lambda之Consumer
特质 消费者模式,接收1个或多个参数,进行逻辑处理,无返回值。 测试 测试数据 @Data public static class Foo { String strVal = "Hello"; int intVal = 1; Double doubleVal = 2.0; Long longVal = 3L; Boolean trueVal = true; String strTmp; int intTmp = 1; Double doubleTmp; Long longTmp;原创 2020-06-17 18:28:39 · 1891 阅读 · 0 评论 -
基于Cglib的高效copy工具类
这里使用的cglib是spring core包的。 import lombok.experimental.Accessors; import lombok.extern.slf4j.Slf4j; import org.springframework.cglib.beans.BeanCopier; import org.springframework.cglib.core.Converter; import org.springframework.core.convert.ConversionFailedEx原创 2020-06-15 12:05:52 · 1567 阅读 · 0 评论 -
Spring源码中的工具类
spring-core 整合了asm和cglib包,并定制了部分功能 StandardAnnotationMetadata 获取类描述信息,根据注解生成AnnotatedGenericBeanDefinition时很有用 StandardAnnotationMetadata.from(type); AnnotatedElementUtils、AnnotationUtils查找类注释 Method m = Leaf.class.getMethod("annotatedOnLeaf"); assertTha原创 2020-06-15 11:57:30 · 736 阅读 · 0 评论 -
Mybatis加载时序图
元数据读取、配置流程: XMLConfigBuilderXPathParserConfigurationMapperRegistryMapperAnnotXMLMapperBuilderMapperBuildResultMapResolverXMLStatemXMLIncludePropertyParserVariableToGenericTokenParserXMLScriptBuilderTextSqlNodeDynamicCheckMixedSqlNodeDynamicSqlSourceSelectK原创 2020-06-15 11:53:39 · 300 阅读 · 0 评论 -
Spring Security原理简略分析
导读 Spring Security是一个提供身份验证、授权和针对常见攻击的保护的框架。它对命令式和反应式应用程序都提供了一流的支持,是保护基于spring的应用程序的事实标准。 原理 流程图 整体流程: clientFilterDelegatingFilterProxFilterChainProxySecurityFilterChainSecurityContextPDispatcheServletFilter拦截请求进行链式调用挂载的filter委托调用Spring实现的Filter委托调用Securi原创 2020-06-15 11:46:50 · 802 阅读 · 0 评论 -
源码分析:SpringBoot项目启动过程
SpringBoot源码分析 前置准备 保存资源加载路径 即传入的pringApplication.run传入的FactoryDemoApplication.class这个参数 @SpringBootApplication public class FactoryDemoApplication { public static void main(String[] args) { ...原创 2020-04-16 19:57:51 · 943 阅读 · 0 评论 -
Spring MVC使用Model接收带有【特殊字符】的请求值最佳实践
前言 单纯为了解决问题,请直接下跳转【最佳实践->第三种方案】。 Spring MVC使用时候wield便于数据传输,都会使用Model进行接收参数,见实例: 请求: 127.0.0.1:8080/test?myName=zs&myAge=10 接收请求: @GetMapping("/demo") public R<String> query(Demo demo) ...原创 2020-04-02 18:56:58 · 1094 阅读 · 0 评论 -
IDEA一些开发小技巧
IDEA小技巧 快捷搜索 双击shift var声明变量 创建循环for、forEach、fori 自定义常用代码块 自定义代码模板 Debug过程中对数据操作 智能选中 创建环绕代码块 快捷键ctrl+alt+t 版本控制项目查看行修改记录 创建书签,快速定位代码、包 ctrl+F11标记,ctrl+标记跳转对应书签,在书签位置ctrl+F11取消书签,shift+F11查看书签...原创 2020-03-18 16:54:46 · 535 阅读 · 4 评论 -
SDKMAN:一款轻松管理多版本JDK的小工具
SDKMAN:是用于管理多个软件开发套件的并行版本的便捷工具。该工具对Java开发人员特别有用,因为它支持JVM的SDK,例如Java,Groovy,Scala,Kotlin和Ceylon。还支持Gradle,Maven,Spring Boot和许多其他工具。 安装步骤 下载脚本 curl -s "https://get.sdkman.io" | bash 启动sdkman source "...原创 2020-03-18 15:35:26 · 3088 阅读 · 1 评论 -
构建MVN项目脚手架(模板)
1、建立一个普通的MAVEN项目,修改pom、修改包结构,放入初始化化的配置文件脚本等; 2、在项目目录下执行生成模板命令, 编译生成模板文件; mvn archetype:create-from-project 3、模板文件生成完毕后,在“项目目录\generated-sources\archetype”中查看,对模板目录、文件进行微调,如果有大的目录变更要注意调整“META-INF/m...原创 2019-09-10 16:31:47 · 230 阅读 · 0 评论 -
Netty入门学习
如今我们使用通用的应用程序或者类库来实现系统之间地互相访问,比如我们经常使用一个HTTP客户端来从web服务器上获取信息,或者通过web service来执行一个远程的调用。然而,有时候一个通用的协议和他的实现并没有覆盖一些场景。比如我们无法使用一个通用的HTTP服务器来处理大文件、电子邮件、近实时消息比如财务信息和多人游戏数据。我们需要一个合适的协议来处理一些特定场景原创 2017-08-23 09:37:40 · 367 阅读 · 0 评论 -
Maven使用
仓库配置 配置Maven本地仓库存放位置 配置镜像仓库地址 POM配置仓库地址 远程仓库认证 访问仓库优先级 Maven项目构建 工程种类(POM、JAR、WAR)及标签定义 工程关系 依赖 继承 聚合 Maven插件 编译器插件 pom中配置当前工程插件 全局编译器插件配置 Tomcat 管理插件 本地应用 远程热部署 Maven私服 环境搭建 仓库类型简述 私服应用...原创 2018-04-20 08:51:44 · 260 阅读 · 0 评论 -
(快速入门)MyBatis Generator源码分析修改和自定义插件
原创 2018-05-09 19:21:28 · 9150 阅读 · 6 评论 -
JAVA高并发编程
synchronized 关键字 同步方法 同步代码块 锁的底层实现 锁的种类 volatile 关键字 wait¬ify AtomicXxx 类型组 CountDownLatch 门闩 锁的重入 ReentrantLock 同步容器 Map/Set List Queue ThreadPool&Executor Executor ExecutorService Future ...转载 2018-05-07 09:30:26 · 32048 阅读 · 1 评论 -
JAVA资料库
整合MyBatis进行批量操作 一个批量插入,一个批量更新,此扩展Mapper继承原Mapper,这样注入的时候就不用注入2个Mapper接口。 Tips: 进行批量操作,要设置参数allowMultiQueries=true,不然无法进行批量更新。 spring.datasource.url=jdbc:mysql://${ip}:${port}/test?useUnicode=true&amp;amp;amp;amp;am...原创 2018-12-29 09:56:23 · 1276 阅读 · 0 评论 -
Spring源码杂集
BeanFactory Bean工厂实现应该尽可能的支持bean的生命周期接口,完整的初始化及其标准顺序为: BeanNameAware#setBeanName(设置bean名称) BeanClassLoaderAware#setBeanClassLoader(设置类加载器) BeanFactoryAware#setBeanFactory(设置Bean工厂) org.springfram...原创 2019-01-07 13:34:43 · 207 阅读 · 0 评论 -
Maven将本地jar上传私服和多jar合并
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://原创 2019-01-07 17:54:19 · 723 阅读 · 0 评论 -
Mybatis generator 源码修改--逆向生成常用查询
基于Mybatis generator 1.3.7源码修改,增加通过配置方式逆向生成常用查询方法,节省部分封装mapper方法的时间。原创 2019-06-21 17:18:14 · 1349 阅读 · 0 评论 -
JVM笔记
JVM模型虚拟机栈:一个线程一个栈,一个方法一个栈帧 堆:放对象的,占用内存最大的堆内存1、新生代(New| Young): ○ eden:新new出来的对象存在这里,特别大的放在老年代(old)里 ○ surivivi(有 2块一模一样的空间s0,s1):幸存者(被垃圾回收之后,还活着),即new 出来的对象, 在GC时还在被对象引用,这是就会把new的对象移原创 2017-08-23 09:24:12 · 271 阅读 · 0 评论