Spring Boot 整合 MySQL 多数据源
配置文件1234567891011121314151617181920212223242526272829#database1spring.datasource.wh.type=com.zaxxer.hikari.HikariDataSourcespring.datasource.wh.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.wh.jdbcUrl=jdbc:mysql://192.168.1.130:3306/wh?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=GMT%2B8&useSSL=false&useUnicode=true&characterEncoding=UTF-8spring.datasource.wh.username=rootspring.datasource.wh.password=rootspring.datasource.wh.minimum-idle=1spring.datasourc...
Spring Boot 获取 resources 目录资源文件的 9 种方法
参考:https://developer.aliyun.com/article/1346532 Springboot 获取 /resources 目录资源文件的 9 种方法 测试方法 - 根据文件路径按行读取文件内容12345678910111213141516171819202122/** * 根据文件路径按行读取文件内容 * * @param fileInPath * @throws IOException */public static void getFileContent(Object fileInPath) throws IOException { BufferedReader br = null; if (fileInPath == null) { return; } if (fileInPath instanceof String) { br = new BufferedReader(new FileReader(new File((String) fileIn...
使用 Spring Boot 创建 Docker Image(layers 分层的使用)
简介在Spring Boot 2.3以前,我们创建Spring Boot - docker image最通用的办法就是将Spring boot的应用程序打包成一个fat jar,然后写一个Dockerfile,将这个fat jar制作成为一个docker image然后运行。 在Spring Boot 2.3发布后,附带了快速创建docker image的功能 传统做法和它的缺点首先创建一个非常简单的Spring Boot程序: 12345678910111213@SpringBootApplication@RestControllerpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @GetMapping("/getInfo") public String getInfo() { re...
Spring Native / GraalVM
初识spring native官方介绍 Spring Native提供了使用GraalVM 本机图像编译器将Spring应用程序编译为本机可执行文件的支持。与Java虚拟机相比,本机映像可以为许多类型的工作负载提供更便宜,更可持续的托管。这些包括微服务,功能工作负载,非常适合容器和Kubernetes使用本机映像具有关键优势,例如即时启动,即时峰值性能和减少的内存消耗。GraalVM本机项目希望随着时间的推移会改善一些缺点和折衷方案。构建本机映像是一个繁重的过程,比常规应用程序要慢。预热后,本机映像具有较少的运行时优化。最后,它比具有某些不同行为的JVM还不成熟。常规JVM和此本机映像平台之间的主要区别是: - 在构建时将未使用的零件删除。 - 反射,资源和动态代理需要配置。 - 类路径在构建时是固定的。 - 没有类延迟加载:可执行文件中附带的所有内容都将在启动时加载到内存中。 - 一些代码将在构建时运行。 - 围绕Java应用程序的某些方面存在一些局限性,这些局限性未得到完全支持。 简单来说,就是更快.更短,更小 更快的启动速度 更短的响应时间 更小的内存消耗 十分适用...
探究 Spring 的底层实现原理(一)
探究spring的底层实现原理1<谨供参考> 这篇文章我将尝试从以下几个方面配合源码讲解spring的原理,并在下一个篇章手写一个简易版spring的小demo来更透彻的分析spring项目是如何"动"起来的 BeanFactory Bean的整个生命周期 Bean的属性填充 依赖注入 先来看一张图(看不清可以右键打开) 这里需要说的一点是,spring的核心就是AbstractApplicationContext.refresh中的13个方法,关于refresh我会单独写BeanFactory12345678910以springboot项目为例,运行主入口类的SpringApplication.run会走到AbstractApplicationContext.refresh方法,从ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory()到registerListeners()都是在准备并创建BeanFactory的过程,而这个BeanFacto...
探究 Spring 的底层实现原理(二)
接上一篇:探究 Spring 的底层实现原理(一)上一篇从理论到源码讲到了以下四点: BeanFactory Bean的整个生命周期 Bean的属性填充 依赖注入 这节就切合上一篇,手写一个简易版spring的小demo,看看我是怎样去实现的java <谨供参考> 应用程序上下文(启动类) 123ClassPathXmlApplicationContext:xml配置文件方式AH8q3dGK2f2vLZVgbRfLTjQPySe2yRaJHs:注解方式SpringApplication:SpringBoot方式 模拟注解方式启动 配置类,指定"spring"需要扫描的限定包路径 123@ComponentScan("org.xiaowu.xiaowu.spring.xiaowu")public class AppConfig {} 标注@Component的类则是需要被spring管理的 12345@Target({ElementType.TYPE})@Retenti...
Netty 组件介绍(一)
ChannelHandler和ChannelPipeline---对应于NIO中的客户逻辑实现handleRead/handleWrite(interceptor pattern)ByteBuf---- 对应于NIO 中的ByteBuffer业务逻辑要放在handler里面,读写数据用的是ByteBuf。其余的Transport、ServerBootstrap、Channel和EventLoop等等都是套路代码,对于应用程序来说,了解即可,基本上不用管。真正开发过netty项目也知道,项目中大部分都是handler类,其它组件只是占很少一部分。 Transport组件 netty做的比较有适应性的就是,不仅支持NIO,还支持很多传输协议: OIO -阻塞IO(真正开发阻塞IO项目,其实也没必要用netty了。。。) NIO -Java NIO Epoll - Linux Epoll(JNI) Local Transport - IntraVM调用(通讯的双方在同一个虚拟机之内不再走socket) Embedded Transport - 供测试使用的嵌入传输 UDS...
Netty 介绍及入门案例
netty Netty是一个高性能的网络编程框架。Netty是一个NIO客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化并简化了TCP和UDP套接字服务器等网络编程。 优点 在设计方面来说: 1)统一的API,适用于不同的协议(阻塞和非阻塞) 2)基于灵活、可扩展的事件驱动模型(SEDA) 3)高度可定制的线程模型 4)可靠的无连接数据Socket支持(UDP) 在性能方面: 1)更好的吞吐量,低延迟 2)更省资源 3)尽量减少不必要的内存拷贝(这也是快的原因之一) 安全方面: 完整的SSL/TLS和STARTTLS的支持 在易用性方面: 1)完善的Java doc,用户指南和样例(个人觉得并不是很完善,国内的书籍也只有一两本还可以) 2)仅依赖于JDK1.6(netty 4.x) netty的主要组件包括: TransportChannel —-对应NIO中的channel EventLoop—- 对应于NIO中的while循环 EventLoopGroup: 多个EventLoop,就是事件循环 ChannelHandl...
CentOS 7 下使用 yum 安装 Nginx
下载对应当前系统版本的 Nginx 包(package)安装 openssl 、 zlib 、 gcc 、pcre依赖1yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre-devel 安装 pcre 依赖:1234wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gztar -xvf pcre-8.45.tar.gz && cd pcre-8.45./configuremake && make install 下载nginx的rpm包:1wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 建立nginx的yum仓库1rpm -ivh nginx-release-centos-7-0.el7.ngx.no...
Nginx 给网站添加用户认证配置
Nginx给网站添加用户认证配置( Basic HTTP authentication) 说明:ngx_http_auth_basic_module模块实现让访问者只有输入正确的用户密码才允许访问web内容。web上的一些内容不想被其他人知道,但是又想让部分人看到。nginx的http auth模块以及Apache http auth都是很好的解决方案。 默认情况下nginx已经安装了ngx_http_auth_basic_module模块。 Nginx认证配置实例生成认证文件123# printf "test:$(openssl passwd -crypt 123456)\n" >> /home/htpasswd# cat /home/htpasswd test:xyJkVhXGAZ8tM **注意:**这里账号:test,密码:123456,记住认证文件路径 配置网站conf文件123456789101112131415server{ listen 80; server_name www.moer...
