- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 SpringBoot启动Tomcat原理与嵌入式Tomcat实践
导读作为一个开发,使用Spring Boot 时,和传统的Tomcat 部署相比,我们只需要关注业务的开发,项目的启动和部署变的十分简单, 那么它背后是怎么实现的, 隐藏着什么? 本文先从一个嵌入式Tomcat的应用开发,再到Spring Boot的集成进行分解实践,由浅到深, 希望能你有所收获。 那么请系好安全带,打卡上车, 一起领略被忽略的风景。嵌入式Tomcat使用我们在看Spring Boot 之前先看下嵌入式Tomcat是怎么进行独立开发的。代码地址, 对应embed-tomcat模块:
2021-01-05 16:53:12 988 1
原创 Lambda之Supplier
特质生成者模型,无输入参数,返回指定类型测试测试参照@Datapublic 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 1108
原创 Lambda之Function
特质函数,接收一个或多个参数,返回指定类型结果测试测试数据@Datapublic 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 2068
原创 阿里云 ECS Hadoop-异常“could only be replicated to 0 nodes, instead of 1” 无法上传文件
阿里云搭建伪分布式遇到这个问题,正常办法解决不了了的时候,可以一试,步骤如下:1、/etc/hosts 文件的多余主机名全部注释掉 ,新增加一个你的内网IP 和 hadoop的用户名; 注意:这里是内网地址,而不是阿里云的外网地址,先 ifconfig 查看本机内网ip[root@cx hadoop]# ifconfig eth0: flags=4163 mtu 1
2020-06-18 09:00:00 351
原创 Docker搭建Zookeeper和Kafka集群
安装Docker-compose创建一个带子网的专有网络创建一个叫zoo_kafka的网络,子网网段172.23.0.10/20root@localhost ]# docker network create --subnet=172.23.0.10/20 zoo_kafkaroot@localhost ]# docker network lsNETWORK ID NAM...
2020-06-17 18:34:41 402 2
原创 Lambda之Consumer
特质消费者模式,接收1个或多个参数,进行逻辑处理,无返回值。测试测试数据@Datapublic 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 1833
原创 基于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 1469
原创 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 658
原创 Mybatis加载时序图
元数据读取、配置流程:XMLConfigBuilderXPathParserConfigurationMapperRegistryMapperAnnotXMLMapperBuilderMapperBuildResultMapResolverXMLStatemXMLIncludePropertyParserVariableToGenericTokenParserXMLScriptBuilderTextSqlNodeDynamicCheckMixedSqlNodeDynamicSqlSourceSelectK
2020-06-15 11:53:39 264
原创 Spring Security原理简略分析
导读Spring Security是一个提供身份验证、授权和针对常见攻击的保护的框架。它对命令式和反应式应用程序都提供了一流的支持,是保护基于spring的应用程序的事实标准。原理流程图整体流程:clientFilterDelegatingFilterProxFilterChainProxySecurityFilterChainSecurityContextPDispatcheServletFilter拦截请求进行链式调用挂载的filter委托调用Spring实现的Filter委托调用Securi
2020-06-15 11:46:50 758
原创 源码分析:SpringBoot项目启动过程
SpringBoot源码分析前置准备保存资源加载路径即传入的pringApplication.run传入的FactoryDemoApplication.class这个参数@SpringBootApplicationpublic class FactoryDemoApplication { public static void main(String[] args) { ...
2020-04-16 19:57:51 793
原创 Win10设置Virtual Box主机和虚拟机互通,同时访问外网
更改网络适配器点击自己要共享网络的网卡,我这里是WLAN,在属性面板选择共享,在家庭网络连接里选择自己的虚拟机网卡名,我这里的VitrubalBox就是虚拟机的。注意:第一次设置会提示要把IP变为192.168.137.1,同时设置成动态ip,按要求设置即可。设置虚拟机网络参数配置点击要设置的虚拟机设置网卡1为NET模式:设置网卡2位host-only模式配置虚拟机网卡启动虚拟...
2020-04-14 16:16:05 890
原创 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 1017
原创 IDEA一些开发小技巧
IDEA小技巧快捷搜索双击shiftvar声明变量创建循环for、forEach、fori自定义常用代码块自定义代码模板Debug过程中对数据操作智能选中创建环绕代码块快捷键ctrl+alt+t版本控制项目查看行修改记录创建书签,快速定位代码、包ctrl+F11标记,ctrl+标记跳转对应书签,在书签位置ctrl+F11取消书签,shift+F11查看书签...
2020-03-18 16:54:46 471 4
原创 SDKMAN:一款轻松管理多版本JDK的小工具
SDKMAN:是用于管理多个软件开发套件的并行版本的便捷工具。该工具对Java开发人员特别有用,因为它支持JVM的SDK,例如Java,Groovy,Scala,Kotlin和Ceylon。还支持Gradle,Maven,Spring Boot和许多其他工具。安装步骤下载脚本curl -s "https://get.sdkman.io" | bash启动sdkmansource "...
2020-03-18 15:35:26 2991 1
原创 构建MVN项目脚手架(模板)
1、建立一个普通的MAVEN项目,修改pom、修改包结构,放入初始化化的配置文件脚本等;2、在项目目录下执行生成模板命令, 编译生成模板文件;mvn archetype:create-from-project3、模板文件生成完毕后,在“项目目录\generated-sources\archetype”中查看,对模板目录、文件进行微调,如果有大的目录变更要注意调整“META-INF/m...
2019-09-10 16:31:47 200
翻译 拆解JAVA虚拟机
Java代码是怎么执行的JAVA虚拟机由以下部分组成:方法区:加载JAVA字节码(.class)文件堆:存储运行数据栈Java方法栈:每进入一个Java方法就生成一个栈帧,用于存放局部变量以及字节码操作数PC寄存器:存放各个线程的执行位置本地方法栈:面向本地方法(c++写的native方法)在HotSpot里,编译分为两种形式:解释执行:逐条将字节码编译成机器码执行...
2019-07-13 23:41:39 146
原创 Mybatis generator 源码修改--逆向生成常用查询
基于Mybatis generator 1.3.7源码修改,增加通过配置方式逆向生成常用查询方法,节省部分封装mapper方法的时间。
2019-06-21 17:18:14 1322
原创 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 686
原创 Spring源码杂集
BeanFactoryBean工厂实现应该尽可能的支持bean的生命周期接口,完整的初始化及其标准顺序为:BeanNameAware#setBeanName(设置bean名称) BeanClassLoaderAware#setBeanClassLoader(设置类加载器) BeanFactoryAware#setBeanFactory(设置Bean工厂) org.springfram...
2019-01-07 13:34:43 181
原创 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 1189
转载 JAVA高并发编程
synchronized 关键字同步方法同步代码块锁的底层实现锁的种类volatile 关键字wait¬ifyAtomicXxx 类型组CountDownLatch 门闩锁的重入ReentrantLock同步容器Map/SetListQueueThreadPool&ExecutorExecutorExecutorServiceFuture...
2018-05-07 09:30:26 31856 1
原创 Maven使用
仓库配置配置Maven本地仓库存放位置配置镜像仓库地址POM配置仓库地址远程仓库认证访问仓库优先级Maven项目构建工程种类(POM、JAR、WAR)及标签定义工程关系依赖继承聚合Maven插件编译器插件pom中配置当前工程插件全局编译器插件配置Tomcat 管理插件本地应用远程热部署Maven私服环境搭建仓库类型简述私服应用...
2018-04-20 08:51:44 239
原创 大数据框架资源汇集
Scala安装版本:2.11.12 环境需要:Java 8 JDK 下载地址:https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgz 使用帮助:点击查看Spark安装版本:Spark2.3.0 环境需要:Java 8+, Python 2.7+/3.4+ and R 3.1+.Scala (2.11.x...
2018-03-07 14:55:30 600
原创 Dubbo管理控制台安装
将Dubbo控制台下载后,复制到Tomcat安装目录/webapps/目录下并解压,然后修改配置文件。 然后修改其WEB-INF/dubbo.properties配置文件#配置zookeeper地址dubbo.registry.address=zookeeper://127.0.0.1:2181#配置ROOT用户、游客密码dubbo.admin.root.password=rootd...
2018-03-02 16:36:56 516
原创 Hadoop学习之java连接HDFS文件系统
1、配置环境变量HADOOPHOME,不然会报错。 2、windows上的权限系统和linux上的权限系统,测试期间为了简单起见可以关闭权限检查 在namenode的hdfs-site.xml上,添加配置:property> name>dfs.permissions.enabledname> value>falsevalue>property>3、这
2018-02-05 10:16:46 644
翻译 认识Hadoop
NameNode(NN) 基于内存存储 只存在内存中 持久化 NameNode主要功能: 接受客户端的读写服务 收集DataNode汇报的Block列表信息 NameNode保存metadata信息包括 文件owership和permissions 文件大小,时间 (Block列表:Block偏移量),位置信息 Block每副本位置(由DataNode上报) NameNode
2017-10-19 15:06:50 225
原创 Hadoop伪分布式、完全分布式搭建和测试(详细版)
安装Hadoop 入门学习,快速搭建伪分布式环境。注:需要下载的安装包在文章底部,请自行获取。1. 修改主机名vim /etc/hostnamevim /etc/hostsrebootreboot 重启主机使修改配置文件生效,这里我设置的主机名是 : cx。注意:出于安全考虑,如果只想局域网访问 127.0.0.1 cx 就可以 如果不在远程服务器,不在一个局域网...
2017-10-19 14:47:05 7182
原创 Netty入门学习
如今我们使用通用的应用程序或者类库来实现系统之间地互相访问,比如我们经常使用一个HTTP客户端来从web服务器上获取信息,或者通过web service来执行一个远程的调用。然而,有时候一个通用的协议和他的实现并没有覆盖一些场景。比如我们无法使用一个通用的HTTP服务器来处理大文件、电子邮件、近实时消息比如财务信息和多人游戏数据。我们需要一个合适的协议来处理一些特定场景
2017-08-23 09:37:40 347
原创 JVM笔记
JVM模型虚拟机栈:一个线程一个栈,一个方法一个栈帧 堆:放对象的,占用内存最大的堆内存1、新生代(New| Young): ○ eden:新new出来的对象存在这里,特别大的放在老年代(old)里 ○ surivivi(有 2块一模一样的空间s0,s1):幸存者(被垃圾回收之后,还活着),即new 出来的对象, 在GC时还在被对象引用,这是就会把new的对象移
2017-08-23 09:24:12 253
docker-compose
2020-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人