月星墙的博客

Better Code, Better Life


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 站点地图

  • 搜索

SOFAStack源码分析

发表于 2021-04-13 | 分类于 java
isle-sofa-boot模块隔离初始化 初始化SOFABoot模块:主要是初始化各模块的SpringContext上下文 如基于多Ark Biz启动,一般不会包含此包,各Biz间通信基于runtime-sofa-boot包完成 Spring启动完成后广播事件 Spring相关 12345678910111213141516171819202122232425// AbstractApplicationContext.java,参考[spring-ioc-src.md#refresh方法概览](/_posts/java/java-src/spring-ioc-src.md#refresh方法概览)public void refresh() throws BeansException, IllegalStateException { // ... this.finishRefresh();}// ServletWebServerApplicationContext.javaprotected void finishRefresh() { // 调用父类 super.finishRefresh(); WebServer webServer = this.startWebServer(); if (webServer ...
阅读全文 »

SOFAStack

发表于 2021-04-11 | 分类于 java
简介 官网、蚂蚁产品说明 SOFAStack技术栈 包含SOFABoot、SOFAArk、SOFARPC等子项目 其中SOFABoot是基于Springboot开发,可和SOFAArk结合使用 SOFABoot模块隔离 maven模块隔离的基础上,增加对Spring 上下文隔离 SOFAArk类隔离 每个模块都有独立的 ClassLoader,消除不同类版本冲突问题 Java模块化开发对比 参考文章 https://www.sofastack.tech/projects/sofa-boot/modular-development/ 基于代码组织上的模块化,如使用Maven 这是最常见的形式,在开发期,将不同功能的代码放在不同 Java 工程下,在编译期被打进不同 jar 包,在运行期,所有 Java 类都在一个 classpath 下,没做任何隔离 基于 Spring 上下文隔离的模块化,SOFABoot使用此方式 借用 Spring 上下文来做不同功能模块的隔离,在开发期和编译期,代码和配置也会分在不同 Java 工程中,但在运行期,不同模块间的 Spring Bean 相互不可见 但是所有的 Java 类还是在同一个 ClassLoader 下 类隔离,基于 ClassLoader 隔离的模块化,SOFAArk使用此方式 借用 ClassLoader 来做 ...
阅读全文 »

springboot-plugin-framework —— 插件化

发表于 2021-04-06 | 分类于 java
简介 2021-04转向sofastack springboot-plugin-framework、文档 基于pf4j springboot-plugin-framework扩展 对mybatis和mybatis-plus进行了支持,插件中可使用mybatis 对resources进行了支持,插件中可使用资源文件,从而显示视图层返回模板页面 开发时,开发时需要提前将插件编译出jar,再启动主程序 从而可让 idea 启动主程序时,自动编译插件包的配置。为了在每次启动主程序的时候,能够动态编译插件包,保证插件包的target是最新的 选择 File->Project Structure->Project Settings->Artifacts->点击+号->JAR->From modules whith dependencies->选择对应的插件包->确认OK 启动配置: 在Before launch 下-> 点击小+号 -> Build -> Artifacts -> 选择上一步新增的>Artifacts 之后启动时会产生一个out/artifacts的目录保存编译好的插件jar包 使用 新建插件时,需要继承BasePlugin类,并将其放在插件src根目录(插件只能扫描到当前类同级目录或其子目 ...
阅读全文 »

微前端

发表于 2021-03-03 | 分类于 web
简介 微前端: 由微服务衍生而来 微前端架构中一般会有个容器应用(container application)将各子应用(Bundle)集成起来 ^1 多 Bundle 集成方式 服务端集成:如服务端渲染SSR 构建时集成:如Code Splitting 常见的构建时集成方式是将子应用发布成独立的 npm 包,共同作为主应用的依赖项,构建生成一个供部署的 JS Bundle。然而,构建时集成最大的问题是会在发布阶段造成耦合,任何一个子应用有变更,都要整个重新编译 运行时集成:如通过 iframe、JS、Web Components 等方式 iframe实现缺点:https://www.yuque.com/kuitos/gky7yw/gesexv SPA(SinglePage Web Application)单页应用和MPA(MultiPage Application)多页应用区别参考:https://juejin.cn/post/6844903512107663368 相关资源 vue动态组件和异步组件说明 使用http-vue-loader可在非单页应用中引入.vue组件 可插拔式系统讨论 TODO 父子应用数据同步:https://blog.csdn.net/weixin_42234168/article/details/112180703 相关框架 qia ...
阅读全文 »

区块链

发表于 2021-02-26 | 分类于 arch
简介 区块链(Blockchain):它是一种特殊的分布式数据库 ^1 区块链没有管理员,它是彻底无中心的 区块链由一个个区块(block)组成,区块由区块头(Head)和区块体(Body)组成 区块头保存当前区块的特征值:当前时间、上一个区块的Hash、当前区块体Hash、Nonce(随机项,工作量证明,计算正确hash值的次数)等 区块体保存实际数据,大小为1M 每个块类似链表进行连接(下一个区块记录了上一个区块的区块头Hash) 挖矿 通过大量计算,将数据成功写入到区块链中即是采矿。每次写入数据,就是创建一个区块 新的有效区块规则 目标值 = 一个常量 / 难度系数。难度系数越大,目标值就越小 只有小于目标值的哈希才是有效的,否则哈希无效,必须重算 通过改变Nonce值(一般只能用穷举,最大可以到21.47亿),从而时区块头数据改变,从而计算出不同的Hash,直到找到正确的Hash;如果穷举到Nonce到最大,协议允许矿工改变区块体,开始新的计算 难度系数的动态调节:中本聪设计了难度系数的动态调节机制,将产出速率趋于十分钟每个 区块链的分叉 新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为”六次确认”)。按照10分钟一个区块计算,一小时就可以确认,因此比特币交易一般有1小时左右的延迟 比特币挖矿为什幺烧显卡: ...
阅读全文 »

OSGi —— Java动态模块化规范

发表于 2021-02-09 | 分类于 java
简介 Java其他插件化开发(OSGi文档较少,2021-02弃用) sofastack pf4j springboot-plugin-framework, 基于pf4j OSGi:Open Service Gateway Initiative 是一个Java模块化规范 官网:https://www.osgi.org/ Eclipse的插件机制就是基于OSGI规范实现 相关实现(运行时容器) Felix 是一个 OSGi 版本 4 规范的 Apache 实现 Apache Karaf:基于Felix实现,是一个运行基于OSGi的应用程序的平台,提供了如命令行界面将使我们能够与平台进行交互 ServiceMix:它将Apache ActiveMQ,Camel,CXF和Karaf的特性和功能统一到一个功能强大的运行时平台中,可用于构建自己的集成解决方案,它提供了由OSGi独家提供的完整的企业级ESB。最近更新2017年 Equinox 是 Eclipse对应的OSGi框架(容器),是AppFuse的一个轻量级版本。对web的默认支持Spring MVC、Hibernat等组件 Gemimi Blueprint 由Eclipse维护,部分代码由SpringSource捐献的Spring DM(Spring Dynamic Modules,前身为Spring OSGi)项目代码 ...
阅读全文 »

Velocity

发表于 2020-12-16 | 分类于 java
简介 官网、Doc-user、Doc-developer 依赖 12345<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.2</version></dependency> 使用12 变量取值1234567891011<!-- 根据变量从map中取值 -->$!{myMap.key}$!{myMap['key']}$!{myMap.get($!{relate.toEntityId})}<!-- 根据变量从list中取值和获取数组大小 -->$!{myList.get(0)}$!{myList.size()}<!-- 默认值 -->${name|'John Doe'} 控制语句循环12345678910111213141516## 循环map#foreach($item in $!softTypeMap.entrySet())< ...
阅读全文 »

GrapesJS可视化元素拖拽代码生成

发表于 2020-11-16 | 分类于 web
简介 github GrapesJS 是一个免费开源的 Web 模板编辑器,可进行元素拖拽,包括元素的常用属性设置,从而生成HTML页面 GrapesJS 引入了 backone.js,参考backone-underscore-js.md 初始化渲染源码解析12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219 ...
阅读全文 »

backone.js & underscore.js

发表于 2020-11-15 | 分类于 web
简介 underscore.js 官网、中文网 提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScript内置对象 Underscore提供了100多个函数,包括常用的: map, filter, invoke — 当然还有更多专业的辅助函数,如:函数绑定,JavaScript模板功能 backone.js 官网、中文网 引用了underscore.js库 为复杂WEB应用程序提供模型(models)、集合(collections)、视图(views)的结构 backone123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132(function(factory) { // Establish the root object, `wind ...
阅读全文 »

Mybatis源码解析

发表于 2020-11-13 | 分类于 java
简介 深入剖析 MyBatis 核心原理 类 org.apache.ibatis.session Configuration 全局配置类 SqlSession 数据库连接Session接口 DefaultSqlSession 包含部分方法如下 insert 基于update实现 update select delete commit rollback SqlSessionFactory 从流中读取mapper并初始化 SqlSessionFactoryBuilder 参考下文org.apache.ibatis.builder,主要是创建SqlSessionFactory SqlSessionManager 实现了 SqlSessionFactory 和 SqlSession builder XMLMapperBuilder 编译xml类型mapper,保存到Configuration MapperAnnotationBuilder 编译注解类型mapper,保存到Configuration executor BaseExecutor 抽象类 SimpleExecutor BaseStatementHandler 抽象的Statement处理器,有以下3中不同类型的执行器 SimpleStatementHandler PreparedStatementHand ...
阅读全文 »
1234…18
smalle

smalle

171 日志
15 分类
155 标签
RSS
欢迎关注公众号:阿壹族 欢迎关注公众号:阿壹族
© 2016 - 2026 smalle    
由 Hexo 强力驱动
主题 - NexT.Mist
站长统计
AD    
阿里云大礼包
©AEZO.CN    
圣骑科技
【One能抽屉】小程序
杂货铺(省钱小助手)