背景
Dapr 是一个开源的分布式应用运行时,帮助开发者构建松耦合的分布式应用程序,具有良好的可扩展性和可维护性。Rainbond 是一款企业级的云原生应用管理平台,提供了丰富的功能和工具,方便开发者管理和部署应用。Rainbond 和 Dapr 结合可以提供以下价值点:
为Dapr扩展云原生支持:Rainbond 提供了一套完整的云原生应用支持方案,包括应用开发、应用编排、应用交付、应用运维等应用全生命周期管理能力,而 Dapr 只是应用开发框架,包括应用开发模型、服务发现、事件驱动等功能。将 Rainbond 和 Dapr 结合起来可以提供更完整的云原生应用支持,帮助开发人员更快地构建和部署应用。
让Dapr应用可移植性增强:Rainbond提供应用模版能力,Dapr开发的应用以模版的方式打包,可以方便交付和迁移到其他平台运行。
为Rainbond扩充服务治理能力:Rainbond 支持通过插件扩展服务治理能力,和 Dapr结合,可以通过Dapr的方式实现服务治理。将二者结合起来,可以提供更完整的服务治理功能,帮助开发人员更好地管理和控制应用中的服务。
为Rainbond增加BaaS能力:在Rainbond上开发软件,需要自己安装后端数据库和中间件,而Dapr将后端能力以API的方式对外提供,开发者只需要通过API统一访问后端能力,实现了BaaS体验。
总之,Dapr和Rainbond能互相补充能力不足,Rainbond 解决了应用生命周期管理的问题,开发者不需要懂底层技术,但还是需要了解后端服务, Dapr 补足了这块能力,让开发者更加专注业务。
Rainbond和Dapr的整合思路
在 Dapr 微服务框架的业务体系中,Daprd 是整个业务的核心,应用程序通过运行时 API 发送请求给 Daprd,Daprd 负责处理这些请求,并与底层服务进行交互。Daprd 是由 Dapr Services 中的 dapr-sidecar-injector 服务进行注入的,当 Pod 满足注入条件后进行注入。同时 Dapr Services 中的 dapr-operator 会监听整个集群下的 Dapr 配置资源(CRD),当捕获到有 Dapr 配置类资源的创建后,会记录在内存中,再次注入的 Daprd 如果 Pod 声明了使用该配置,则会提供对应的能力。
Dapr Service 的安装 :Rainbond 将 Dapr Services 资源进行了整合,作为一个插件应用上架到了应用商店,通过安装便可以快速让我们的集群具备 dapr 微服务架构能力,避免了集群中执行 dapr init -k
命令,同时解决了国外镜像拉取的问题。
DaprD注入 :传统注入方式我们需要手动添加注入条件字段,费时费力且不易维护还容易出错;Rainbond 支持通过切换应用的治理模式的方式,为我们的 Pod 添加不同属性字段以满足不同微服务架构的注入条件,从而达到批量注入,快速使用、便于管理的效果。
Dapr配置 :Dapr 提供了四种配置 Daprd 的资源来扩展我们的服务治理能力,分别为Configuration、Component、Resiliency、Subscription,我们需要通过编写 Yaml 的形式在集群中创建这些资源供业务组件使用,Rainbond 平台在应用的 k8s 资源的管理入口,其效果与kubectl
有些类似但比kubectl
更易于管理。其中 Configuration 资源用于存储应用程序的配置信息,例如连接字符串、密钥、证书等,需要为 Pod 配置的 annotations
属性去声明才可使用,Rainbond 的组件视图提供对annotations
属性配置,简化了我们配置的流程。
Dapr Component安装和对接 :Rainbond 的应用商店已经有很多后端实现,如 MySQL、Redis等,在Rainbond里可以一键安装便可使用。在Dapr应用的K8s资源管理里配置Component的yaml,绑定后端服务的地址。
Dapr应用开发: Dapr开发的应用可以用源码、镜像、yaml部署到Rainbond平台上,然后根据Dapr的API规范访问后端服务,Rainbond提供对Dapr应用的持续集成、持续交付、环境管理、配置管理、日志和性能监控、访问网关、应用运维等能力,辅助Dapr应用的开发和管理。
部署和使用流程
基于 Rainbond 使用 Dpar 的目标:
一键部署 Dapr Service,让集群具备 Dapr 微服务架构能力。
自动为业务组件注入 Daprd。
可视化管理 Dapr 配置。
简化 Daprd 属性参数配置流程。
多种方式交付你的 Dapr 业务。
下面我通过部署一个发布订阅的示例,供大家快速了解并掌握 Dapr 在 Rainbond 中是如何使用的
前提条件
Rainbond 版本大于 v5.13。
Rainbond 已经对接过开源应用商店并拥有推送权限。
实践步骤
1. 安装 Rainbond Service Mesh 插件
Rainbond ServiceMesh 插件负责按照指定治理模式对应用组件进行加工调整,以满足微服务治理插件注入的基本条件。通过在平台管理->应⽤市场->开源应⽤商店->搜索 Rainbond-ServiceMesh 并进行安装
2. 安装Dapr 应用插件
创建一个以 dapr-system 为英文名的团队,安装 Dapr Services 。通过在平台管理->应⽤市场->开源应⽤商店->搜索 Rainbond-Dapr 并进行安装
。
3. 绑定 Component
Dapr 支持对接多种 Component 实现,如 Redis、Mysql、Oauth等,在 Rainbond 平台中安装也非常简单,大部分实现都可以在 Rainbond 应用商店中找到,少数不支持的存储也欢迎大家参与应用制作发布到应用商店中来。本次示例我们需要安装的是 Redis 通过在平台管理->应⽤市场->开源应⽤商店->搜索 Redis 并进行安装
。安装完成后,在应用视图->k8s资源->编写 Component 资源
进行绑定。
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: pubsub
spec:
type: pubsub.redis
version: v1
metadata:
- name: "redisHost"
value: "YOUR_REDIS_HOST_HERE"
- name: "redisPassword"
value: "YOUR_REDIS_PASSWORD_HERE"
如果是 MySQL ,步骤是平台管理->应⽤市场->开源应⽤商店->搜索 MySQL 并进行安装
,安装完成后在 应用视图->k8s资源->编写 Component 资源
进行绑定。
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name:
spec:
type: state.mysql
version: v1
metadata:
- name: connectionString
value: ""
- name: schemaName
value: ""
- name: tableName
value: ""
- name: pemPath
value: ""
4. 切换应用治理模式
将业务应用的治理模式切换至 Dapr 。通过在 应用视图->治理模式->选择 Dapr 治理模式进行切换
。其中 dapr 治理模式会为我们组件的 annotations
属性添加字段dapr.io/enabled: "true"
以及dapr.io/app-id="xxx"
其中 xxx 为组件的英文名,由于dapr.io/app-id
是Dapr 体系中的唯一标识,Rainbond 支持自行配置,如果检测到有该属性字段,则优先使用原配置。满足注入条件后,dapr-sidecar-injector 服务开始工作,为我们的业务组件注入 Daprd。
5. 部署业务
Rainbond 提供了多种方式部署你的业务,镜像、Helm、Yaml、源码等等。这里我选择使用镜像部署,具体步骤为: 应用视图->添加组件->指定镜像->填写镜像地址
。
demo镜像地址:
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-node-subscriber:latest
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-react-form:latest
registry.cn-hangzhou.aliyuncs.com/zhangqihang/pubsub-go-subscriber:latest
由于 Dapr 中消息队列需要为组件 annotations
属性设置 dapr.io/app-port
字段,切换治理模式的时候并没有自动生成,所以我们需要在组件视图->其他设置->Kubernetes属性->新增属性->选择 annotations->添加 dapr.io/app-port=组件端口字段
。同理其他扩展的 annotations
属性字段均在此处配置。
6. 部署最终效果
在pubsub-react-form 组件的组件视图->端口->打开对外服务
便可实现访问消息发布组件,向订阅 A、B、C中发布消息,通过观察pubsub-node-subscriber
和pubsub-go-subscriber
组件的日志可看到订阅的内容,日志位置:组件视图->日志
。
7. 通过Dapr控制台管理
访问 dapr dashboard 可以查看到我们的微服务组件在 Dapr 中的注册信息。
8.发布应用模版
Rainbond提供应用一键发布应用模版的能力,在Dapr开发应用的应用视图,点击发布
来发布应用模版,并通过应用模版在线和离线快速安装到其他环境。不过在其他环境使用时需要先安装Rainbond和Dapr基础环境。
在Rainbond上扩展Dapr
链路追踪
链路追踪是一种网络监控和故障排除技术,用于追踪数据包在网络中的路径和经过的节点,以便优化网络性能和发现问题,在 Dapr 中是通过配置Configuration资源
绑定追踪器实现进行工作的。下面是以 Zipkin 追踪器实现的Configuration
资源配置示例。更多详见 Dapr Observability 。
在应用视图->k8s资源->编写 Configuration 资源
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: daprConfig
namespace: default
spec:
tracing:
samplingRate: "1"
zipkin:
endpointAddress: "http://localhost:9411/api/v2/spans"
熔断限流
限制每秒允许的最大 HTTP 请求数,速率限制可以保护您的应用程序免受拒绝服务 (DOS) 攻击。我们需要配置component
资源作为中间件,然后通过Configuration 资源
进行绑定,然后在业务组件中配置挂载使用。
在应用视图->k8s资源->编写 Component 资源
作为中间件,设置每秒的最大请求数为 10。
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: ratelimit
spec:
type: middleware.http.ratelimit
version: v1
metadata:
- name: maxRequestsPerSecond
value: 10
在应用视图->k8s资源->编写 Configuration 配置资源
绑定中间件。
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: appconfig
spec:
httpPipeline:
handlers:
- name: ratelimit
type: middleware.http.ratelimit
在组件视图->其他设置->Kubernetes属性->新增属性->选择annotations->添加 dapr.io/config 属性字段
绑定 Configuration 。
你可能感兴趣的:(Dapr和Rainbond集成,实现云原生BaaS和模块化微服务开发)
Java 在包管理与模块化中的优势:与其他开发语言的比较
nbsaas-boot
开发语言 java
在开发复杂的、规模庞大的软件系统时,包管理和模块化设计起着至关重要的作用。它们不仅决定了代码的组织和可维护性,还直接影响到团队协作效率、扩展性和性能。在众多编程语言中,Java凭借其成熟的生态系统、强类型系统和标准化的包管理机制,成为了大型企业级应用开发的首选之一。本文将探讨Java在包管理和模块化方面的优势,并与其他流行语言(如Rust、Go、Python、JavaScript和C#)进行对比,
读书笔记-《Redis设计与实现》(一)数据结构与对象(下)
萝卜青今天也要开心
redis 数据结构 学习 java
各位朋友新年快乐~今天我们来继续学习Redis。01整数集合当集合仅包含整数值,并且元素数量不多时,Redis就会采用整数集合来作为集合键的底层实现。typedefstructintset{//编码方式uint32_tencoding;//元素数量uint32_tlength;//数组int8_tcontents[];}intset;可以看到,contents就是存储元素的地方,各个元素按从小到大
python 从知网的期刊导航页面抓取与农业科技相关的数据
go5463158465
python python 科技 开发语言
要从知网的期刊导航页面抓取与农业科技相关的数据,并提取《土壤学报》2016年06期的结果,可以使用requests库来获取网页内容,BeautifulSoup库来解析HTML。由于知网页面结构可能会发生变化,在实际使用中,需要根据页面结构的实际情况进行调整。以下是实现该功能的Python代码示例:importrequestsfrombs4importBeautifulSoupdefcrawl_ag
【新春特辑】2025年1月科技浪潮中的AI最新时事与科技趋势
我的青春不太冷
科技 最新时事 AI大爆炸 学习
2025年1月科技浪潮中的AI最新时事与科技趋势一、AI科技时事人工智能代理(AIAgent)的发展最新进展:人工智能代理正逐步成为科技领域的新热点。这些代理能够自主执行特定任务,如管理日程、回复邮件等。然而,它们仍面临可靠性、可访问性和安全性等方面的挑战。随着技术的不断进步,这些挑战有望逐步得到解决。未来展望:未来,AI代理将更加智能化,能够更好地理解用户需求并提供个性化服务。同时,它们也将成为
二叉搜索树中的众数(力扣501)
qy发大财
leetcode 算法 数据结构
根据二叉树的特性,我们使用中序遍历,确保是从小到大遍历各个节点。为了方便计数,我们使用双指针法,一旦发现当前且节点和前一个节点相同(指的是按照中序遍历的顺序的前一个),则累加该数字的次数。将出现次数最多的数字放入结果数组中。但是如何找到出现次数最多的呢?有些人可能会想遍历两次,一次找出最大次数是多少,一次找出次数等于最大次数的数字。其实有更巧妙的方法,我们不管三七二十一,一但遍历到新的数字且次数大
力扣题98验证二叉搜索树
xxyneymar
力扣 leetcode 算法 职场和发展
给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。有效二叉搜索树定义如下:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入:root=[2,1,3]输出:true示例2:输入:root=[5,1,4,null,null,3,6]输出:false解释:根节点的值是5,但是右子节点的值是4。1.递归解法。定义
咱们一起学C++第四十篇:之C++递归与运算符基础
一杯年华@编程空间
咱们一起学习C++ c++ struts kafka intellij-idea spring cloud spring boot java-ee
咱们一起学C++第四十篇:之C++递归与运算符基础在C++学习的征程中,我们共同努力,不断探索这门语言的深度与广度。此前,我们学习了switch语句和goto关键字,今天,我们将深入研究递归这一有趣且实用的编程技巧,以及C++运算符的基础知识,包括运算符的优先级和自增自减运算符。这些知识是构建复杂程序逻辑和高效代码的重要基石。一、递归:函数自身的奇妙调用(一)递归的概念与原理递归是一种编程技巧,允
基于深度学习的基于视觉的机器人导航
SEU-WYL
深度学习dnn 深度学习 机器人 人工智能
基于深度学习的视觉机器人导航是一种通过深度学习算法结合视觉感知系统(如摄像头、LiDAR等)实现机器人在复杂环境中的自主导航的技术。这种方法使机器人能够像人类一样使用视觉信息感知环境、规划路径,并避开障碍物。与传统的导航方法相比,深度学习模型能够在动态环境中表现出更强的适应能力和鲁棒性。1.视觉导航的基本概念视觉导航是指通过处理机器人的摄像头等视觉传感器采集到的图像数据,构建环境模型,进而进行路径
力扣98.验证二叉搜索树
交通组织之虎
leetcode 深度优先 算法
98.验证二叉搜索树思路:如果上界和下界存在,判断当前节点的值是否在界内如果不在界内,返回false。将当前节点的值作为上界,继续对node.left进行递归,将当前节点的值作为下界,继续对node.right进行递归。注意:因为一开始上下界为null,所以要用包装类Integer根节点不仅要满足大于左节点,小于右节点,还要满足根节点大于整个左子树(即左子树的最大节点),根节点小于整个右子树(即右
uniapp 自定义标题情况下,让标题和右侧胶囊对齐
小胖砸~
uniapp vue.js
实现效果:无论手机类型怎么切换,自定义标题始终跟胶囊平齐实现:在pages.json文件中配置标题自定义
Cesium+Vue3教程(011):打造数字城市
叁拾舞
Ceisum Vue3 cesium
文章目录Cesium打造数字城市创建项目加载地球设置底图设置摄像头查看具体位置和方向添加纽约建筑模型并设置样式添加纽约建筑模型设置样式划分城市区域并着色地图标记显示与实现实现飞机巡城完整项目下载Cesium打造数字城市创建项目使用vite创建vue3项目:pnpmcreatevite安装依赖:pnpminstall安装cesium:
[email protected]
验证二叉搜索树(力扣98)
qy发大财
leetcode 算法 职场和发展 数据结构
根据二叉搜索树的特性,我们使用中序遍历,保证节点按从小到大的顺序遍历。既然要验证,就是看在中序遍历的条件下,各个节点的大小关系是否符合二叉搜索树的特性。双指针法和适合解决这个问题,一个指针指向当前节点,另一个指针指向前一个节点(指的是按照中序遍历顺序的前一个节点),不断后移两个指针,两两进行比较。这只是大致思路,大家可以结合我的代码以及注释加以理解。代码及注释如下:/***Definitionfo
设计模式的艺术-观察者模式
晚秋贰拾伍
设计模式的艺术 设计模式 观察者模式 运维开发 运维
行为型模式的名称、定义、学习难度和使用频率如下表所示:1.如何理解观察者模式一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,它们之间将产生联动,正所谓“触一而牵百发”。为了更好地描述对象之间存在的这种一对多(包括一对一)的联动,观察者模式应运而生。观察者模式是使用频率最高的设计模式之一,用于建立对象与对象之间的依赖关系。一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。
Brave132 编译指南 Windows 篇:获取源码(六)
守城小轩
Brave chrome devtools 浏览器开发 指纹浏览器 chrome
1.引言在Brave浏览器132版本的编译过程中,获取源代码是至关重要的第一步。源代码包含了Brave浏览器的所有核心功能、特性和组件的实现细节,是深入理解、定制和优化Brave的基础。通过获取和管理源代码,开发者能够深入探索Brave的内部运作机制,为后续的二次开发、功能扩展和性能优化奠定坚实的基础。本篇将详细阐述如何在Windows环境中高效地获取Brave132浏览器的源代码,利用之前安装的
【TiDB系列文章】PD(Placement Driver)
学弟Craze
TiDB tidb 数据库
引言在分布式数据库的生态系统中,PD扮演着至关重要的角色。作为TiDB的核心组件之一,PD负责数据的放置和调度,确保数据的高可用性和负载均衡。本文将详细介绍PD的功能、架构以及它在TiDB中的作用。PD概述PD是TiDB分布式数据库中的元信息管理组件,负责存储集群的元信息和调度数据。它相当于分布式数据库的“大脑”,负责整个集群的数据分布和负载均衡。PD通过合理的调度策略,确保数据均匀分布在集群中,
苦逼测试第十七式:性能测试与瓶颈诊断——简单工具实现高效分析
Python测试之道
python 测试提效 python 功能测试 自动化
性能测试关乎系统的稳定性与用户体验,是测试工程师不可忽视的一环。然而,性能测试往往因工具复杂、配置繁琐、瓶颈难以定位而让测试工程师望而却步。特别是小型项目或初学者,面对JMeter、LoadRunner等工具的高学习曲线,常常无从下手。那么,有没有一种简单高效的方式,可以快速上手性能测试,并实现性能瓶颈诊断?答案是:有!本文将结合Python的轻量级工具(如Locust和k6),通过易于实现的解决
python注意事项:range遍历越索引现象、列表边遍历边修改出现的问题
JU HE
python 基础(语法以及多线程等操作) python 开发语言
文章目录前言一、range遍历越索引现象QS1:遍历range(2,2)会发生什么?不会报错,但是也不会遍历到任何内容QS1:遍历range(3,2)会发生什么?不会报错,但是也不会遍历到任何内容二、列表边遍历边修改注意事项(Java的List系列集合使用for-each循环或Iterator遍历集合时也会有下面问题)1避免直接修改列表长度:特别是边遍历边append和pop元素2边遍历边修改里面
pandas ---- pd.DataFrame基本用法
JU HE
python常用库 pandas python
文章目录前言1loc和iloc注意事项。(后面这些都会在笔记中提到)2DataFrame的维度一、DataFrame的创建---pd.DataFrame(data,index=None,columns=None)1字典创建DataFrame(字典转Dataframe很常用)2用numpy数组或者嵌套list创建DataFrame二、DataFrame的访问、索引、切片、布尔索引、修改等操作1行切片
python中的time模块
renpingsheng788
time模块--时间获取和转换time模块提供各种时间相关的功能与时间相关的模块有:time,datetime,calendar必要说明:这个模块的功能不是适用于所有的平台这个模块中定义的大部分函数是调用C平台上的同名函数实现一些术语和约定的解释:1.时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日开始按秒计算的偏移量(time.gmtime(0))此模块中的函数无
图像边缘检测与轮廓提取详解及python实现
闲人编程
python python 计算机视觉 开发语言 Roberts Prewitt Canny 边缘检测
目录图像边缘检测与轮廓提取详解第一部分:图像边缘检测与轮廓提取概述1.1什么是边缘检测和轮廓提取?1.2边缘检测与轮廓提取的应用领域1.3为什么需要边缘检测和轮廓提取?第二部分:常见的图像边缘检测算法2.1Sobel算子2.2Canny边缘检测2.3拉普拉斯算子(LaplacianofGaussian,LoG)2.4Prewitt算子2.5Roberts交叉算子第三部分:图像轮廓提取的基本方法3.
使用 Python 实现无人机实时路径规划的 MPC 算法
闲人编程
python python 无人机 算法 MPC 路径优化
目录使用Python实现无人机实时路径规划的MPC算法引言1.模型预测控制(MPC)概述1.1定义1.2MPC的基本原理1.3代价函数1.4MPC的特点2.Python中的MPC算法实现2.1安装必要的库2.2定义类2.2.1无人机模型类2.2.2MPC控制器类2.3示例程序3.MPC算法的优缺点3.1优点3.2缺点4.改进方向5.应用场景结论使用Python实现无人机实时路径规划的MPC算法引言
Kafka 单机和集群环境部署教程
闲人编程
大数据集群部署教程 kafka 分布式 集群 部署 单机 zookeeper
目录一、Kafka单机环境部署1.环境准备2.安装Java3.安装ZooKeeper3.1下载并解压ZooKeeper3.2配置ZooKeeper3.3启动ZooKeeper3.4验证ZooKeeper是否正常运行4.安装Kafka4.1下载并解压Kafka4.2配置Kafka4.3创建日志目录4.4启动KafkaBroker4.5验证Kafka是否正常运行5.Kafka单机部署的注意事项二、Ka
基于python的天气预报系统的设计与实现
桃宝护卫队
python 开发语言
基于python的天气预报系统的设计与实现DesignandImplementationofaWeatherForecastSystembasedonPython完整下载链接:基于python的天气预报系统的设计与实现文章目录基于python的天气预报系统的设计与实现摘要第一章引言1.1研究背景1.2研究目的1.3研究意义第二章相关技术和方法2.1Python编程语言2.2天气预报接口2.3数据获
.net core + vue 搭建前后端分离的框架
战族狼魂
C# .netcore
目录步骤一:创建.NETCore后端项目步骤二:创建Vue.js前端项目步骤三:集成后端和前端项目步骤一:创建.NETCore后端项目安装.NETCoreSDK:确保你的开发环境中已安装了最新版本的.NETCoreSDK。你可以从.NET下载页面获取最新版本。创建.NETCoreWebAPI项目:在命令行或者通过VisualStudio等集成开发环境,创建一个新的.NETCoreWebAPI项目。
python 时间库 time
qianchenzhihai
python 学习
在开始之前,首先要说明这几点:1.在Python中,通常有这几种方式来表示时间:1)时间戳2)格式化的时间字符串3)元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。2.UTC(CoordinatedUniversalTime,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(DaylightSavingT
100种算法【Python版】第44篇——龙格-库塔法
AnFany
算法 python 人工智能 龙格-库塔 微分方程 ODE
本文目录1算法说明2算法示例:使用龙格-库塔法求解微分方程3算法应用:捕食者-猎物模型4算法可解决问题1算法说明龙格-库塔法最初由德国数学家卡尔·龙格(CarlRunge)和马丁·库塔(WilhelmKutta)在20世纪初提出。它们为求解常微分方程(ODE)提供了一种有效的数值方法,尤其是在处理初值问题时。龙格-库塔法的设计旨在通过提高计算的精度和稳定性,使数值解能更好地逼近真实解。最常用的版本
【深度学习】softmax回归的简洁实现
熙曦Sakura
深度学习 深度学习 回归 人工智能
softmax回归的简洁实现我们发现(通过深度学习框架的高级API能够使实现)(softmax)线性(回归变得更加容易)。同样,通过深度学习框架的高级API也能更方便地实现softmax回归模型。本节继续使用Fashion-MNIST数据集,并保持批量大小为256。importtorchfromtorchimportnnfromd2limporttorchasd2l初始化模型参数[softmax回
Jenkins部署前后端分离项目最全图文教程(手把手教学)
黄团团
运维 Jenkins Tomcat jenkins 运维 linux 华为云 nginx tomcat maven
前言:最近Jenkins部署的热度比较高,于是就想出一篇关于我是如何使用Jenkins部署前后端分离项目的,本篇记录了我是如何一步一步去配置、搭建和部署的完整流程,每一行代码都进行了实测和讲解,通过图文的教学写成博客分享给大家!博主的其他部署教程:1、Docker部署前后端分离项目:手把手通过Docker部署前后端分离项目(亲测可用)2、Linux系统部署Tomcat:Linux系统部署Tomca
算法竞赛的头文件选择(<iostream>和<bits/stdc++.h>)
Tech007号研究员
算法(C++)自学笔记 算法 c++
1.#include功能:是C++标准库中的一个头文件,主要用于输入输出操作。它包含了`cin`、`cout`、`cerr`和`clog`等标准输入输出流对象。使用场景:当只需要进行基本的输入输出操作时,可以使用`#include`。优点:只包含必要的输入输出功能,编译速度较快;代码更清晰,只引入需要的功能;可移植性高,所有C++编译器都支持。缺点:如果需要使用其他标准库(如`vector`、`a
第二篇:多模态技术突破——DeepSeek如何重构AI的感知与认知边界
python算法(魔法师版)
动态规划
——从跨模态对齐到因果推理的工程化实践在AI技术从单一模态向多模态跃迁的关键阶段,DeepSeek通过自研的多模态融合框架,在视觉-语言-语音的联合理解与生成领域实现系统性突破。本文将从技术实现层面,解构其跨模态表征学习、动态融合机制与因果推理能力的内在创新。1.跨模态对齐革命:时空一致性建模传统多模态模型常面临模态割裂问题,DeepSeek提出「时空同步对比学习」(ST-CL)框架:视觉-语言对
[星球大战]阿纳金的背叛
comsci
本来杰迪圣殿的长老是不同意让阿纳金接受训练的.........
但是由于政治原因,长老会妥协了...这给邪恶的力量带来了机会
所以......现代的地球联邦接受了这个教训...绝对不让某些年轻人进入学院
看懂它,你就可以任性的玩耍了!
aijuans
JavaScript
javascript作为前端开发的标配技能,如果不掌握好它的三大特点:1.原型 2.作用域 3. 闭包 ,又怎么可以说你学好了这门语言呢?如果标配的技能都没有撑握好,怎么可以任性的玩耍呢?怎么验证自己学好了以上三个基本点呢,我找到一段不错的代码,稍加改动,如果能够读懂它,那么你就可以任性了。
function jClass(b
Java常用工具包 Jodd
Kai_Ge
java jodd
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大! 写道 Jodd = Tools + IoC + MVC + DB + AOP + TX + JSON + HTML < 1.5 Mb
Jodd 被分成众多模块,按需选择,其中
工具类模块有:
jodd-core &nb
SpringMvc下载
120153216
springMVC
@RequestMapping(value = WebUrlConstant.DOWNLOAD)
public void download(HttpServletRequest request,HttpServletResponse response,String fileName) {
OutputStream os = null;
InputStream is = null;
Python 标准异常总结
2002wmj
python
Python标准异常总结
AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性 EOFError 用户输入文件末尾标志EOF(Ctrl+d) FloatingPointError 浮点计算错误 GeneratorExit generator.close()方法被调用的时候 ImportError 导入模块失
SQL函数返回临时表结构的数据用于查询
357029540
SQL Server
这两天在做一个查询的SQL,这个SQL的一个条件是通过游标实现另外两张表查询出一个多条数据,这些数据都是INT类型,然后用IN条件进行查询,并且查询这两张表需要通过外部传入参数才能查询出所需数据,于是想到了用SQL函数返回值,并且也这样做了,由于是返回多条数据,所以把查询出来的INT类型值都拼接为了字符串,这时就遇到问题了,在查询SQL中因为条件是INT值,SQL函数的CAST和CONVERST都
java 时间格式化 | 比较大小| 时区 个人笔记
7454103
java eclipse tomcat c MyEclipse
个人总结! 不当之处多多包含!
引用 1.0 如何设置 tomcat 的时区:
位置:(catalina.bat---JAVA_OPTS 下面加上)
set JAVA_OPT
时间获取Clander的用法
adminjun
Clander 时间
/**
* 得到几天前的时间
* @param d
* @param day
* @return
*/
public static Date getDateBefore(Date d,int day){
Calend
JVM初探与设置
aijuans
java
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台
SQL中ON和WHERE的区别
avords
SQL中ON和WHERE的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 www.2cto.com 在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
说说自信
houxinyou
工作 生活
自信的来源分为两种,一种是源于实力,一种源于头脑.实力是一个综合的评定,有自身的能力,能利用的资源等.比如我想去月亮上,要身体素质过硬,还要有飞船等等一系列的东西.这些都属于实力的一部分.而头脑不同,只要你头脑够简单就可以了!同样要上月亮上,你想,我一跳,1米,我多跳几下,跳个几年,应该就到了!什么?你说我会往下掉?你笨呀你!找个东西踩一下不就行了吗?
无论工作还
WEBLOGIC事务超时设置
bijian1013
weblogic jta 事务超时
系统中统计数据,由于调用统计过程,执行时间超过了weblogic设置的时间,提示如下错误:
统计数据出错!
原因:The transaction is no longer active - status: 'Rolling Back. [Reason=weblogic.transaction.internal
两年已过去,再看该如何快速融入新团队
bingyingao
java 互联网 融入 架构 新团队
偶得的空闲,翻到了两年前的帖子
该如何快速融入一个新团队,有所感触,就记下来,为下一个两年后的今天做参考。
时隔两年半之后的今天,再来看当初的这个博客,别有一番滋味。而我已经于今年三月份离开了当初所在的团队,加入另外的一个项目组,2011年的这篇博客之后的时光,我很好的融入了那个团队,而直到现在和同事们关系都特别好。大家在短短一年半的时间离一起经历了一
【Spark七十七】Spark分析Nginx和Apache的access.log
bit1129
apache
Spark分析Nginx和Apache的access.log,第一个问题是要对Nginx和Apache的access.log文件进行按行解析,按行解析就的方法是正则表达式:
Nginx的access.log解析正则表达式
val PATTERN = """([^ ]*) ([^ ]*) ([^ ]*) (\\[.*\\]) (\&q
Erlang patch
bookjovi
erlang
Totally five patchs committed to erlang otp, just small patchs.
IMO, erlang really is a interesting programming language, I really like its concurrency feature.
but the functional programming style
log4j日志路径中加入日期
bro_feng
java log4j
要用log4j使用记录日志,日志路径有每日的日期,文件大小5M新增文件。
实现方式
log4j:
<appender name="serviceLog"
class="org.apache.log4j.RollingFileAppender">
<param name="Encoding" v
读《研磨设计模式》-代码笔记-桥接模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/**
* 个人觉得关于桥接模式的例子,蜡笔和毛笔这个例子是最贴切的:http://www.cnblogs.com/zhenyulu/articles/67016.html
* 笔和颜色是可分离的,蜡笔把两者耦合在一起了:一支蜡笔只有一种
windows7下SVN和Eclipse插件安装
chenyu19891124
eclipse插件
今天花了一天时间弄SVN和Eclipse插件的安装,今天弄好了。svn插件和Eclipse整合有两种方式,一种是直接下载插件包,二种是通过Eclipse在线更新。由于之前Eclipse版本和svn插件版本有差别,始终是没装上。最后在网上找到了适合的版本。所用的环境系统:windows7JDK:1.7svn插件包版本:1.8.16Eclipse:3.7.2工具下载地址:Eclipse下在地址:htt
[转帖]工作流引擎设计思路
comsci
设计模式 工作 应用服务器 workflow 企业应用
作为国内的同行,我非常希望在流程设计方面和大家交流,刚发现篇好文(那么好的文章,现在才发现,可惜),关于流程设计的一些原理,个人觉得本文站得高,看得远,比俺的文章有深度,转载如下
=================================================================================
自开博以来不断有朋友来探讨工作流引擎该如何
Linux 查看内存,CPU及硬盘大小的方法
daizj
linux cpu 内存 硬盘 大小
一、查看CPU信息的命令
[root@R4 ~]# cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id"
model name : Intel(R) Xeon(R) CPU X5450 @ 3.00GHz
model name :
linux 踢出在线用户
dongwei_6688
linux
两个步骤:
1.用w命令找到要踢出的用户,比如下面:
[root@localhost ~]# w
18:16:55 up 39 days, 8:27, 3 users, load average: 0.03, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
放手吧,就像不曾拥有过一样
dcj3sjt126com
内容提要:
静悠悠编著的《放手吧就像不曾拥有过一样》集结“全球华语世界最舒缓心灵”的精华故事,触碰生命最深层次的感动,献给全世界亿万读者。《放手吧就像不曾拥有过一样》的作者衷心地祝愿每一位读者都给自己一个重新出发的理由,将那些令你痛苦的、扛起的、背负的,一并都放下吧!把憔悴的面容换做一种清淡的微笑,把沉重的步伐调节成春天五线谱上的音符,让自己踏着轻快的节奏,在人生的海面上悠然漂荡,享受宁静与
php二进制安全的含义
dcj3sjt126com
PHP
PHP里,有string的概念。
string里,每个字符的大小为byte(与PHP相比,Java的每个字符为Character,是UTF8字符,C语言的每个字符可以在编译时选择)。
byte里,有ASCII代码的字符,例如ABC,123,abc,也有一些特殊字符,例如回车,退格之类的。
特殊字符很多是不能显示的。或者说,他们的显示方式没有标准,例如编码65到哪儿都是字母A,编码97到哪儿都是字符
Linux下禁用T440s,X240的一体化触摸板(touchpad)
gashero
linux ThinkPad 触摸板
自打1月买了Thinkpad T440s就一直很火大,其中最让人恼火的莫过于触摸板。
Thinkpad的经典就包括用了小红点(TrackPoint)。但是小红点只能定位,还是需要鼠标的左右键的。但是自打T440s等开始启用了一体化触摸板,不再有实体的按键了。问题是要是好用也行。
实际使用中,触摸板一堆问题,比如定位有抖动,以及按键时会有飘逸。这就导致了单击经常就
graph_dfs
hcx2013
Graph
package edu.xidian.graph;
class MyStack {
private final int SIZE = 20;
private int[] st;
private int top;
public MyStack() {
st = new int[SIZE];
top = -1;
}
public void push(i
Spring4.1新特性——Spring核心部分及其他
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
配置HiveServer2的安全策略之自定义用户名密码验证
liyonghui160com
具体从网上看
http://doc.mapr.com/display/MapR/Using+HiveServer2#UsingHiveServer2-ConfiguringCustomAuthentication
LDAP Authentication using OpenLDAP
Setting
一位30多的程序员生涯经验总结
pda158
编程 工作 生活 咨询
1.客户在接触到产品之后,才会真正明白自己的需求。
这是我在我的第一份工作上面学来的。只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长长的文字表格要好。 2.只要有充足的时间,所有安全防御系统都将失败。
安全防御现如今是全世界都在关注的大课题、大挑战。我们必须时时刻刻积极完善它,因为黑客只要有一次成功,就可以彻底打败你。 3.
分布式web服务架构的演变
自由的奴隶
linux Web 应用服务器 互联网
最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问题的时候,应用也容易
初探Druid连接池之二——慢SQL日志记录
xingsan_zhang
日志 连接池 druid 慢SQL
由于工作原因,这里先不说连接数据库部分的配置,后面会补上,直接进入慢SQL日志记录。
1.applicationContext.xml中增加如下配置:
<bean abstract="true" id="mysql_database" class="com.alibaba.druid.pool.DruidDataSourc