- 15. k8s二进制集群之CoreDNS部署
沙漠绿州(IT追随者)
k8s二进制搭建kubernetes贪心算法dns
为搭建DNS服务需要准备什么?如何下载CoreDNS服务配置文件创建coredns.yaml配置文件(参考原始配置创建)提前准备好CoreDNS镜像资源【可选】如何启动CoreDNS服务当服务异常,如解决coredns启动失败问题总结当我们搭建完k8s集群之后可以为此部署一个DNS提供内部主机或域名解析能力,这里就说到了CoreDNS在Kubenetes起到的作用了。CoreDNS主要为Pod和服
- Wiki.js 集成 Artalk 评论系统配置指南
运维小弟| srebro.cn
知识库知识库wiki.jswikijs
Wiki.js集成Artalk评论系统配置指南一、Artalk核心优势开源性质采用MIT许可证的自托管评论系统,支持全平台集成数据控制评论数据存储在自有服务器,避免第三方服务依赖轻量化架构Go语言开发的后端服务,内存占用低于50MB二、DockerCompose部署方案部署文件docker-compose.yamlversion:'3.8'services:artalk:image:artalk/
- docker部署dify结合deepseek构建知识库
deepseek
序本文主要研究一下本地docker部署dify结合deepseek构建知识库步骤difygitclonehttps://github.com/langgenius/dify.gitgitcotags/0.15.3-b0.15.3cddockercp.env.example.envdocker-comopseup启动之后访问localhostdocker-comopse.yaml#=========
- InfiniteHiP - 在单个GPU上扩展 LLM 上下文至300万tokens
伊织code
#PaperReadingInfiniteHiP推理GPULLMtoken
InfiniteHiP:ExtendingLanguageModelContextUpto3MillionTokensonaSingleGPUPaper:https://huggingface.co/papers/2502.08910Sourcecode:https://github.com/DeepAuto-AI/hip-attention/SGLangIntegrationavailablen
- k8s集群离线安装kuberay operator
thinkerCoder
kubernetes容器云原生
1,安装方式采用helm安装方式,首先下载对应的helmchart,这里采用v1.2.2版本,下载地址:https://github.com/ray-project/kuberay-helm/releases/tag/kuberay-operator-1.2.22,解压并修改镜像源由于是在内网环境下搭建,因此需要将对应的镜像下载下来,并导入到本地镜像仓库,并修改values.yaml的镜像仓库地址
- 【devops】Github Actions Secrets | 如何在Github中设置CI的Secret供CI的yaml使用
CTRA王大大
gitdevopsgithubci/cd
一、GithubActions1、ci.ymlname:CIon:[push]jobs:build:runs-on:ubuntu-lateststeps:-name:Checkoutcodeuses:actions/checkout@v3-name:SetupGouses:actions/setup-go@v4with:go-version:1.23.0-name:CacheGomodulesus
- OpenMetadata 获取 MySQL 数据库表血缘关系详解
yongge
数据治理数据库mysql元数据治理
概述OpenMetadata是一个开源的元数据管理平台,支持端到端的血缘关系追踪。对于MySQL数据库,OpenMetadata通过解析表的外键约束、视图定义及查询日志(可选)构建表级血缘。本文结合源码分析其实现机制。环境配置与数据摄取1.配置文件示例(YAML)source:type:mysqlserviceName:mysql_devserviceConnection:config:type:
- Line电脑版多开器電腦版多開Line
segmentfault
Line电脑版多开器電腦版多開LineLINE互動軟體#ine行銷軟體#行銷1、双击“逍遥安卓多开管理器”,进入多开管理器2、点击右下角新建模拟器,然后选择“创建模拟器”一鍵轉發#Line電腦版下載#LINE生活圈3、启动对应的模拟器分身帳號#line官方軟體更新#line軟體Line电脑多开软件http://www.safeboxie.com/
- Linux 设置静态IP
高建伟-joe
Linux系统linuxtcp/ip运维centosubuntu
Linux设置静态IPUbuntuvim/etc/netplan/00-installer-config.yaml#00-installer-config.yaml#Thisisthenetworkconfigwrittenby'subiquity'network:ethernets:ens33:dhcp4:false#addresses:[192.168.3.59/24]addresses:[1
- 电脑软件多开器,多开软件
segmentfault
电脑软件多开器,多开软件LinkedIn多开器,LinkedIn电脑多开支持不限开设更多的tinder电脑版,Tinder客户端,方便统壹管理,开设多少个tinder电脑版,Tinder客户端取决於你的电脑性能配置,壹般普通的都可以下载网址:http://www.safeboxie.com
- 基于自定义WebView实现H5混合开发
小二李
FlutterFlutter组件封装flutterwebview
pubspec.yaml添加webview插件flutter_webview_plugin:^0.4.0webview.dart基于webview的组件封装constCATCH_URLS=['m.ctrip.com/','m.ctrip.com/html5/','m.ctrip.com/html5'];classWebViewextendsStatefulWidget{finalStringurl
- 消息队列之-RabbitMq 学习
likesyour
java-rabbitmqrabbitmq
生产者服务A/消费者服务B服务A和服务B配置:依赖org.springframework.bootspring-boot-starter-amqpyamlspring:rabbitmq:host:${RABBITMQ_HOST:localhost}port:${RABBITMQ_PORT:5672}username:${RABBITMQ_USERNAME:guest}password:${RABB
- python虚拟环境激活
修福泥
python开发语言
条件:python解释器里已经安装了Django,虚拟环境开启后报错报错:ImportError:Couldn'timportDjango.Areyousureit'sinstalledandavailableonyourPYTHONPATHenvironmentvariable?Didyouforgettoactivateavirtualenvironment?(new)C:\Users\666
- angular 新语法糖学习一
延迟视图@defer是Angularv16引入的一项功能,用于优化组件的加载和渲染。它提供了一种延迟加载组件的方法,可以减少初始渲染时的开销,延迟加载(LazyLoading)主要是通过路由实现的。通过路由配置中的loadChildren属性,可以在需要时加载特定的模块。这种方式适合处理大型应用程序中的模块划分问题,但不能直接用于组件级别的延迟加载。随着angular的发展,在angularv16
- Dledger部署RocketMQ高可用集群(9节点集群)
Java程序员廖志伟
rocketmq
文章目录博主介绍本文内容9节点集群高可用集群规划集群准备工作runserver.shrunbroker.sh设置目录归属组与用户与容器的配置一致安装jdk节点0配置(ip地址为192.168.80.101的机器)broker-n0.confbroker-n1.confbroker-n2.confdocker-compose.yaml节点1配置(ip地址为192.168.80.102的机器)brok
- NSLock 详解
gp103
ios
NSLock是Objective-C提供的一种轻量级互斥锁,用于保证多线程访问共享资源的安全性。相比@synchronized,它的性能更好,并且提供了更灵活的锁管理方法。1.NSLock的基本使用1)lock和unlock@interfaceSafeCounter:NSObject@property(nonatomic,strong)NSLock*lock;@property(nonatomic
- Hyperledger Fabric 应用实战(3)--配置文件core.yaml
vvgo123
HyperledgerFabric应用实战fabricdocker容器区块链
1.简介core.yaml主要是为Peer服务提供一些配置定义,当Peer节点启动时,会先从命令行获取参数、环境变量、和core.yaml读取配置信息。通过docker去搭建一个Peer服务,命令行默认是不带参数的,主要通过docker-compose文件和core.yaml去定义配置信息。docker-compose相当于环境变量,其优先级比较高,用来更灵活和个性化配置Peer服务的配置,因此在
- vant的dialog触发了其他overlay
ELNino_Thomas.Liang
javascript前端vue.jshtmlvant
原代码:dialog内容在触发showTipsDialog=true之后,dialog的遮罩层消失了,但是触发了overlay,并检查showLoadingOverlay是为false的。排查原因:因为调整overlay内容样式的时候直接把样式写在了overlay的style里面造成了样式污染,把样式写在自定义类名className即可解决。
- 【云原生技术】 YAML 配置管理、部署架构和灾备方案三个方面介绍一下如何在上海浦东新区和松江两个机房间实现容器部署和容灾
阿寻寻
云原生技术云原生架构
云部署灾备一、YAML配置管理二、部署架构和灾备策略三、故障场景下的应急预案四、总结一、YAML配置管理在实际生产环境中,为了达到高可用、快速灾备的目标,通常需要在YAML配置管理和部署架构上都做出专门设计。下面我从YAML配置管理、部署架构和灾备方案三个方面介绍一下如何在上海A区和B区两个机房间实现容器部署和容灾。【1.YAML配置管理】由于两个机房可能在硬件选型(如存储类、节点标签、网络配置)
- 深度解析Python校园自动化:合规爬虫、反反爬策略与高并发抢课系统设计
WHCIS
python自动化爬虫
摘要:本文将呈现一个校园自动化系统的实现方案,包含面向对象设计、多协议适配、分布式任务队列、混合验证码破解等核心模块,提供经过压力测试的代码和技术文档。一、系统架构与工程规范1.1项目结构campus_automation/├──configs/#配置文件│├──settings.yaml#全局配置│└──proxies.txt#代理IP池├──core/│├──auth/#认证模块││├──ss
- list_for_each,list_for_each_entry和list_for_each_entry_safe
Wang20122013
linux
比较共同点1.list_for_each和list_for_each_entry都是遍历链表的两个宏,本质上都是for循环。2.他们做的事情本质上都一样,A.获取链表头,B.判断链表项是不是链表头,C.指向链表的下一项。3.他们的区别:list_for_each遍历的链表,其链表项不属于某个结构体。或者说不关心它是不是包含在某个结构体中。区别1.list_for_each_entry遍历的链表,其
- list_for_each_entry_safe 简介
leoufung
驱动listwindows数据结构
list_for_each_entry_safe是Linux内核中用于遍历链表的一个宏,特别适用于在遍历过程中可能需要删除链表节点的场景。它的设计保证了在删除当前节点时,不会影响后续节点的访问,从而实现安全的遍历。定义#definelist_for_each_entry_safe(pos,n,head,member)\for(pos=list_entry((head)->next,typeof(*
- python Web 开发 Flask 介绍_python flask web开发
2401_86391875
python前端flask
打开终端,跳转到`hello.py`文件所在的文件夹,进入python命令行模式,启动服务pythonhello.py如果一起正常的话会有类似下面的反馈ServingFlaskapp“hello”(lazyloading)>>因为是通过`app.run()`启动的服务,所以会有个错误提示,提醒不能将此Web应用部署在生产环境中,可以暂时忽略>>>此时,打开浏览器,输入127.0.0.1:5000/
- JavaScript 中内存泄漏的几种情况是什么,如何避免?
程序员黄同学
前端开发JavaScriptJava面试题javascript前端开发语言
一、全局变量泄漏(高频考点)问题场景:未使用var/let/const声明变量,或意外挂载到window对象//错误示例(创建全局变量)functioninitData(){cache=newArray(1000000)//隐式全局变量}//正确方案(严格模式+局部变量)'usestrict'functionsafeInit(){constlocalCache=[]//局部变量自动回收}防御建议:
- 微信小程序请求request封装
WorkAndDebugger
微信小程序微信小程序小程序
公共基础路径封装//config.jsmodule.exports={//测试BASE_URL:'https://cloud.chejj.cn',//正式//BASE_URL:'https://cloud.mycjj.com'};请求封装//request.jsimportconfigfrom'../config/baseUrl'//请求未返回时的loadingconstshowLoading=(
- k8s优雅操作pod容器组
handsomestWei
运维运维k8spod云原生
k8s优雅操作pod容器组回退备份kubectlgetdeploydeployName-oyaml>>deployName-bak-`date"+%Y-%m-%d"`.yaml获取副本数replicas=`echo|kubectlget-otemplatedeploy/deployName--template={{.spec.replicas}}`停止容器组kubectlscaledeployme
- 接口自动化测试框架之——关于接口关联的封装
测试也要努力
Yamlpython接口自动化
思路:去掉全局变量(避免每次使用时需要导包),用YAML文件代替保存(对YAML进行读写等操作)。新建一个公共包common,在其下新建yaml_util.py,写入三个方法:读、写、清空importosimportyaml##读取yaml,读取yaml时,传入key来读取对应的值defread_yaml(key):withopen(os.getcwd()+'/extract.yaml')asf:
- 接口自动化测试之 pytest 接口关联框架封装
测试大圣
python软件测试自动化测试测试工具pytest职场和发展单元测试
视频学习:文末有免费的配套视频可观看点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快一般情况下,我们是通过一个yaml文件进行关联实现在根目录下新建一个文件yaml,通过上述conftest.py文件实现全局变量的更新:1.首先需要建立一个读取、写入、清除yaml文件的工具类如下:importosimportyamlclassYamlUnit:defreadAllYaml(self):
- 16. k8s二进制集群之可用性验证
沙漠绿州(IT追随者)
k8s二进制搭建kubernetes云原生
首先创建Nginx配置文件(nginx.yaml)服务配置文件定义好后,可以通过以下命令启动和移除服务如果上面都启动成功,那么如何来验证服务的正确性呢?总结前面我们已经用k8s二进制的方式部署了一套高可用集群;二进制搭建较于kubeadmin、kubectl和KubeSphere搭建的集群性能会更好:只需要安装kubenetes核心组件即可,没有额外的中间介和管理工具;直接操作二进制文件,可以更细
- <Tauri>tauri2.0框架下,基于qwik(前端)和rust(后端)结合的桌面程序体验
机构师
前端rust后端GUItauriqwik
关于qwikQwikisanewkindofwebframeworkthatcandeliverinstantloadingwebapplicationsatanysizeorcomplexity.Yoursitesandappscanbootwithabout1kbofJS(regardlessofapplicationcomplexity),andachieveconsistentperfor
- 集合框架
天子之骄
java数据结构集合框架
集合框架
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。
简单介绍:
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi
- Table Driven(表驱动)方法实例
bijian1013
javaenumTable Driven表驱动
实例一:
/**
* 驾驶人年龄段
* 保险行业,会对驾驶人的年龄做年龄段的区分判断
* 驾驶人年龄段:01-[18,25);02-[25,30);03-[30-35);04-[35,40);05-[40,45);06-[45,50);07-[50-55);08-[55,+∞)
*/
public class AgePeriodTest {
//if...el
- Jquery 总结
cuishikuan
javajqueryAjaxWebjquery方法
1.$.trim方法用于移除字符串头部和尾部多余的空格。如:$.trim(' Hello ') // Hello2.$.contains方法返回一个布尔值,表示某个DOM元素(第二个参数)是否为另一个DOM元素(第一个参数)的下级元素。如:$.contains(document.documentElement, document.body); 3.$
- 面向对象概念的提出
麦田的设计者
java面向对象面向过程
面向对象中,一切都是由对象展开的,组织代码,封装数据。
在台湾面向对象被翻译为了面向物件编程,这充分说明了,这种编程强调实体。
下面就结合编程语言的发展史,聊一聊面向过程和面向对象。
c语言由贝尔实
- linux网口绑定
被触发
linux
刚在一台IBM Xserver服务器上装了RedHat Linux Enterprise AS 4,为了提高网络的可靠性配置双网卡绑定。
一、环境描述
我的RedHat Linux Enterprise AS 4安装双口的Intel千兆网卡,通过ifconfig -a命令看到eth0和eth1两张网卡。
二、双网卡绑定步骤:
2.1 修改/etc/sysconfig/network
- XML基础语法
肆无忌惮_
xml
一、什么是XML?
XML全称是Extensible Markup Language,可扩展标记语言。很类似HTML。XML的目的是传输数据而非显示数据。XML的标签没有被预定义,你需要自行定义标签。XML被设计为具有自我描述性。是W3C的推荐标准。
二、为什么学习XML?
用来解决程序间数据传输的格式问题
做配置文件
充当小型数据库
三、XML与HTM
- 为网页添加自己喜欢的字体
知了ing
字体 秒表 css
@font-face {
font-family: miaobiao;//定义字体名字
font-style: normal;
font-weight: 400;
src: url('font/DS-DIGI-e.eot');//字体文件
}
使用:
<label style="font-size:18px;font-famil
- redis范围查询应用-查找IP所在城市
矮蛋蛋
redis
原文地址:
http://www.tuicool.com/articles/BrURbqV
需求
根据IP找到对应的城市
原来的解决方案
oracle表(ip_country):
查询IP对应的城市:
1.把a.b.c.d这样格式的IP转为一个数字,例如为把210.21.224.34转为3524648994
2. select city from ip_
- 输入两个整数, 计算百分比
alleni123
java
public static String getPercent(int x, int total){
double result=(x*1.0)/(total*1.0);
System.out.println(result);
DecimalFormat df1=new DecimalFormat("0.0000%");
- 百合——————>怎么学习计算机语言
百合不是茶
java 移动开发
对于一个从没有接触过计算机语言的人来说,一上来就学面向对象,就算是心里上面接受的了,灵魂我觉得也应该是跟不上的,学不好是很正常的现象,计算机语言老师讲的再多,你在课堂上面跟着老师听的再多,我觉得你应该还是学不会的,最主要的原因是你根本没有想过该怎么来学习计算机编程语言,记得大一的时候金山网络公司在湖大招聘我们学校一个才来大学几天的被金山网络录取,一个刚到大学的就能够去和
- linux下tomcat开机自启动
bijian1013
tomcat
方法一:
修改Tomcat/bin/startup.sh 为:
export JAVA_HOME=/home/java1.6.0_27
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_H
- spring aop实例
bijian1013
javaspringAOP
1.AdviceMethods.java
package com.bijian.study.spring.aop.schema;
public class AdviceMethods {
public void preGreeting() {
System.out.println("--how are you!--");
}
}
2.beans.x
- [Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization
bit1129
serialization
enableComplexMapKeySerialization配置项的含义
Gson在序列化Map时,默认情况下,是调用Key的toString方法得到它的JSON字符串的Key,对于简单类型和字符串类型,这没有问题,但是对于复杂数据对象,如果对象没有覆写toString方法,那么默认的toString方法将得到这个对象的Hash地址。
GsonBuilder用于
- 【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题
bit1129
Stream
包括Spark Streaming在内的实时计算数据可靠性指的是三种级别:
1. At most once,数据最多只能接受一次,有可能接收不到
2. At least once, 数据至少接受一次,有可能重复接收
3. Exactly once 数据保证被处理并且只被处理一次,
具体的多读几遍http://spark.apache.org/docs/lates
- shell脚本批量检测端口是否被占用脚本
ronin47
#!/bin/bash
cat ports |while read line
do#nc -z -w 10 $line
nc -z -w 2 $line 58422>/dev/null2>&1if[ $?-eq 0]then
echo $line:ok
else
echo $line:fail
fi
done
这里的ports 既可以是文件
- java-2.设计包含min函数的栈
bylijinnan
java
具体思路参见:http://zhedahht.blog.163.com/blog/static/25411174200712895228171/
import java.util.ArrayList;
import java.util.List;
public class MinStack {
//maybe we can use origin array rathe
- Netty源码学习-ChannelHandler
bylijinnan
javanetty
一般来说,“有状态”的ChannelHandler不应该是“共享”的,“无状态”的ChannelHandler则可“共享”
例如ObjectEncoder是“共享”的, 但 ObjectDecoder 不是
因为每一次调用decode方法时,可能数据未接收完全(incomplete),
它与上一次decode时接收到的数据“累计”起来才有可能是完整的数据,是“有状态”的
p
- java生成随机数
cngolon
java
方法一:
/**
* 生成随机数
* @author
[email protected]
* @return
*/
public synchronized static String getChargeSequenceNum(String pre){
StringBuffer sequenceNum = new StringBuffer();
Date dateTime = new D
- POI读写海量数据
ctrain
海量数据
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming
- mysql 日期格式化date_format详细使用
daizj
mysqldate_format日期格式转换日期格式化
日期转换函数的详细使用说明
DATE_FORMAT(date,format) Formats the date value according to the format string. The following specifiers may be used in the format string. The&n
- 一个程序员分享8年的开发经验
dcj3sjt126com
程序员
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。
明确入行的目的
很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容
- android欢迎界面淡入淡出效果
dcj3sjt126com
android
很多Android应用一开始都会有一个欢迎界面,淡入淡出效果也是用得非常多的,下面来实现一下。
主要代码如下:
package com.myaibang.activity;
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.CountDown
- linux 复习笔记之常见压缩命令
eksliang
tar解压linux系统常见压缩命令linux压缩命令tar压缩
转载请出自出处:http://eksliang.iteye.com/blog/2109693
linux中常见压缩文件的拓展名
*.gz gzip程序压缩的文件
*.bz2 bzip程序压缩的文件
*.tar tar程序打包的数据,没有经过压缩
*.tar.gz tar程序打包后,并经过gzip程序压缩
*.tar.bz2 tar程序打包后,并经过bzip程序压缩
*.zi
- Android 应用程序发送shell命令
gqdy365
android
项目中需要直接在APP中通过发送shell指令来控制lcd灯,其实按理说应该是方案公司在调好lcd灯驱动之后直接通过service送接口上来给APP,APP调用就可以控制了,这是正规流程,但我们项目的方案商用的mtk方案,方案公司又没人会改,只调好了驱动,让应用程序自己实现灯的控制,这不蛋疼嘛!!!!
发就发吧!
一、关于shell指令:
我们知道,shell指令是Linux里面带的
- java 无损读取文本文件
hw1287789687
读取文件无损读取读取文本文件charset
java 如何无损读取文本文件呢?
以下是有损的
@Deprecated
public static String getFullContent(File file, String charset) {
BufferedReader reader = null;
if (!file.exists()) {
System.out.println("getFull
- Firebase 相关文章索引
justjavac
firebase
Awesome Firebase
最近谷歌收购Firebase的新闻又将Firebase拉入了人们的视野,于是我做了这个 github 项目。
Firebase 是一个数据同步的云服务,不同于 Dropbox 的「文件」,Firebase 同步的是「数据」,服务对象是网站开发者,帮助他们开发具有「实时」(Real-Time)特性的应用。
开发者只需引用一个 API 库文件就可以使用标准 RE
- C++学习重点
lx.asymmetric
C++笔记
1.c++面向对象的三个特性:封装性,继承性以及多态性。
2.标识符的命名规则:由字母和下划线开头,同时由字母、数字或下划线组成;不能与系统关键字重名。
3.c++语言常量包括整型常量、浮点型常量、布尔常量、字符型常量和字符串性常量。
4.运算符按其功能开以分为六类:算术运算符、位运算符、关系运算符、逻辑运算符、赋值运算符和条件运算符。
&n
- java bean和xml相互转换
q821424508
javabeanxmlxml和bean转换java bean和xml转换
这几天在做微信公众号
做的过程中想找个java bean转xml的工具,找了几个用着不知道是配置不好还是怎么回事,都会有一些问题,
然后脑子一热谢了一个javabean和xml的转换的工具里,自己用着还行,虽然有一些约束吧 ,
还是贴出来记录一下
顺便你提一下下,这个转换工具支持属性为集合、数组和非基本属性的对象。
packag
- C 语言初级 位运算
1140566087
位运算c
第十章 位运算 1、位运算对象只能是整形或字符型数据,在VC6.0中int型数据占4个字节 2、位运算符: 运算符 作用 ~ 按位求反 << 左移 >> 右移 & 按位与 ^ 按位异或 | 按位或 他们的优先级从高到低; 3、位运算符的运算功能: a、按位取反: ~01001101 = 101
- 14点睛Spring4.1-脚本编程
wiselyman
spring4
14.1 Scripting脚本编程
脚本语言和java这类静态的语言的主要区别是:脚本语言无需编译,源码直接可运行;
如果我们经常需要修改的某些代码,每一次我们至少要进行编译,打包,重新部署的操作,步骤相当麻烦;
如果我们的应用不允许重启,这在现实的情况中也是很常见的;
在spring中使用脚本编程给上述的应用场景提供了解决方案,即动态加载bean;
spring支持脚本