背景
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 。
你可能感兴趣的:(kubernetes,docker,容器,云原生)
推荐一个开源的高效头像生成工具,支持API调用
计算机小手
经验分享 开源软件
一、简介集成多种头像生成方案,包括:ugly-avatar、multiavatar、jdenticon、facesjs、dicebear等支持docker部署,支持API调用项目开源地址:GitHub-luler/hello_avatar:轻松搭建生成简易头像的api服务二、安装准备好docker、docker-compose环境新建docker-compose.yml,配置内容如下:versio
Optional源码解析和示例解析
飞翔中文网
Java 开发语言 java jdk
Optional源码解析packagejava.util;importjava.util.function.Consumer;importjava.util.function.Function;importjava.util.function.Predicate;importjava.util.function.Supplier;/***这是一个容器对象,它可能包含一个非空值,也可能不包含。*如果
k8s 配置私有镜像仓库认证
狗贤
Kubernetes kubernetes 容器
1.创建Docker注册表的Secret首先,创建一个类型为dockerconfigjson的Secret,用于存储Docker注册表的认证信息。方法1:使用DockerCLI和kubectl不适用于阿里云格式不一样登录Docker注册表:dockerlogin这会生成一个包含认证信息的配置文件,通常位于~/.docker/config.json。创建Secret:kubectl-npromcre
nginx性能优化有哪些方式?
企鹅侠客
linux 面试 nginx 性能优化 php
0.运维干货分享软考高级系统架构设计师备考学习资料软考高级网络规划设计师备考学习资料KubernetesCKA认证学习资料分享信息安全管理体系(ISMS)制度模板分享免费文档翻译工具(支持word、pdf、ppt、excel)PuTTY中文版安装包MobaXterm中文版安装包pinginfoview网络诊断工具中文版Nginx是一个高性能的HTTP服务器和反向代理服务器,但在高并发场景下,仍然有
Wazuh: 一款超强大的威胁预防、检测安全平台!支持虚拟化、容器化和云环境保护
开源项目精选
安全
Wazuh是一个功能强大且高度灵活的开源安全平台,旨在为企业和组织提供全面的威胁预防和检测能力。它集成了多种安全功能,包括入侵检测、漏洞管理、合规性监控等,能够有效地保护企业的网络和系统安全。Stars数11982Forks数1785主要特点多维度威胁检测:Wazuh能够对系统日志、文件完整性、网络流量等多个数据源进行实时监测,及时发现潜在的安全威胁。通过对这些数据源的综合分析,Wazuh可以提供
Vue2集成LuckExcel实现excel在线编辑及保存
冉成未来
Web excel vue.js
文章目录LuckSheetnpm安装相关依赖vue使用luckSheet第一步:通过CDN引入第二步:指定一个excel编辑容器第三步:创建一个表格通过文件url实现excel文件的加载Excel工具类export.jsLuckSheetgitee网址:https://gitee.com/mengshukeji/LuckysheetluckSheet文档网址:https://dream-num.g
21.7 ChatGLM3-6B私有化部署实战:2小时快速搭建200 QPS高可用模型服务
少林码僧
AI大模型应用实战专栏 人工智能 gpt 语言模型
ChatGLM3-6B私有化部署实战:2小时快速搭建200QPS高可用模型服务ChatGLM3-6B私有化部署实战指南关键词:ChatGLM3-6B部署,私有化模型服务,性能优化,容器化部署,API服务封装1.部署环境准备与硬件规划ChatGLM3-6B私有化部署需要充分考虑算力资源与软件生态的适配性,以下是推荐配置方案:
基于 Docker 和 Flask 构建高并发微服务架构
TechStack 创行者
# 服务器容器 Linux 架构 docker flask 容器 微服务
基于Docker和Flask构建高并发微服务架构一、微服务架构概述(一)微服务架构的优点微服务架构是一种将应用程序拆分为多个小型、自治服务的架构风格,在当今的软件开发领域具有显著的优势。高度可扩展性:每个微服务可以独立进行扩展。例如,在电商系统中,订单服务在促销活动期间可能会面临高并发的订单处理需求,此时可以仅对订单服务进行横向扩展,增加服务实例数量,而无需对整个系统进行大规模的扩容,从而提高资源
21.11 《ChatGLM3-6B+Gradio工业级落地:多模态交互+60%性能优化,手把手实现生产部署》
少林码僧
AI大模型应用实战专栏 人工智能 gpt 语言模型 性能优化 交互
《ChatGLM3-6B+Gradio工业级落地:多模态交互+60%性能优化,手把手实现生产部署》关键词:ChatGLM3-6B应用开发,Gradio界面集成,模型交互优化,Web服务容器化,多模态输入支持使用Gradio赋能ChatGLM3-6B图形化界面通过Gradio实现大模型服务的可视化交互,是生产级AI应用落地的关键环节。本节将深入解析如何构建适配ChatGLM3-6B的工业级交互界面。
Fastdfs-V5.11使用docker部署集群(X86)
礁之
Linux系列 dfs java docker
文章目录一、Fastdfs介绍二、部署信息三、步骤tracker/storage机器的compose内容storage机器的composetracker与storage启动目录层级与配置文件client.confstorage.conf查看集群信息测试测试集群扩容与缩减nginx配置一、Fastdfs介绍FastDFS是一款高性能的分布式文件系统,特别适合用于存储和管理大量的文件二、部署信息使用d
拉取镜像太慢?一文解决!
元子吖-
学习技巧 docker部署 docker 镜像拉取
#拉取Docker镜像太慢?一文解决!在国内使用Docker拉取镜像时,可能会遇到速度慢甚至失败的情况。别担心!本文带你快速优化Docker拉取方法!01|确保DockerHub登录认证如果拉取的是私有镜像或API速率限制导致失败,可以先尝试登录:dockerlogin然后输入用户名和密码(或Token),这样可以避免因未认证而受限。02|替换国内镜像源由于DockerHub在国内访问较慢,可以使
AI 原生 IDE Trae 深度体验:SSHremote 功能如何重新定义远程开发与云原生部署
芯作者
DD:日记 人工智能
一、引言:AI原生IDE的革新意义在AI技术全面渗透软件开发的今天,编程工具正从“辅助工具”向“智能协作伙伴”转变。字节跳动推出的Trae(国内首个AI原生IDE)以其独特的Builder模式、自然语言编程和SSHremote功能,不仅重新定义了开发流程,更将远程开发与云原生部署的效率提升至新高度。本文将从实际体验出发,深度解析Trae如何通过SSHremote功能实现“开发-调试-部署”全链路的
C++协程入门教程
ox0080
# 北漂+滴滴出行 C++协程 VIP 激励 c++ 开发语言
一、环境搭建(Docker+双编译系统)1.全能Docker环境配置FROMubuntu:22.04#基础工具链RUNapt-getupdate&&DEBIAN_FRONTEND=noninteractiveapt-getinstall-y\build-essentialcmakebazelgitg++-12libcppcoro-dev\openssh-serverrsyslogcurlgnupg
FerretDB 2.0:开源 MongoDB 替代品的安装与使用指南
田猿笔记
MongoDB 开源 数据库 FerretDB
介绍FerretDB2.0是一个开源数据库,旨在作为MongoDB的替代品。它与MongoDB5.0+的驱动程序和工具兼容,适合需要避免MongoDB许可复杂性的开发者。它的核心特点是使用PostgreSQL作为后端,并通过DocumentDB扩展提升性能,研究表明某些工作负载可快20倍。安装与使用安装FerretDB2.0使用dockercompose需要以下步骤:创建docker-compos
docker-compose 部署nginx和jdk步骤
方大拿拿
docker nginx java
**yum安装jdk**1、yum-ylistjava*查看可安装java版本选择安装java-1.8.0-openjdk-accessibility.x86_642、yuminstall-yjava-1.8.0-openjdk-devel.x86_64耐心等待安装完成即可3、java-version即可查看当前安装的java版本4、yum安装的jdk,被安装到哪里去了?你可以在**/usr/li
数据中台(二)数据中台相关技术栈
Yuan_CSDF
# 数据中台
1.平台搭建1.1.Amabari+HDP1.2.CM+CDH2.相关的技术栈数据存储:HDFS,HBase,Kudu等数据计算:MapReduce,Spark,Flink交互式查询:Impala,Presto在线实时分析:ClickHouse,Kylin,Doris,Druid,Kudu等资源调度:YARN,Mesos,Kubernetes任务调度:Oozie,Azakaban,AirFlow,
docker-compose install nginx(解决fastgpt跨区域)
CIAS
deepseek docker deepseek fastgpt
CORS前言CORS(Cross-OriginResourceSharing,跨源资源共享)是一种安全措施,它允许或拒绝来自不同源(协议、域名、端口任一不同即为不同源)的网页访问另一源中的资源。它的主要作用如下:同源策略限制:Web浏览器的同源策略限制了从一个源加载的文档或脚本如何与另一个源的资源进行交互。这意味着默认情况下,浏览器会阻止一个源(例如,http://example.com)的网页向
【mysql】mysql之主从部署以及介绍
向往风的男子
DBA mysql 数据库
本站以分享各种运维经验和运维所需要的技能为主《python零基础入门》:python零基础入门学习《python运维脚本》:python运维脚本实践《shell》:shell学习《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战《k8》从问题中去学习k8s《docker学习》暂未更新《ceph学习》ceph日常问题解决分享《日志收集》ELK+各种中间件《运维日常》
基于Docker 搭建Redis三主三从分布式集群
DBA学习之路
docker redis 容器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、分布式系统规划二、准备配置文件1.创建redis集群目录三、启动Redis容器四、创建分布式系统1.创建集群2.查看节点信息总结前言提示:这里可以添加本文要记录的大概内容:本次搭建的为”三主三从“的分布式系统,分布式系统中节点存放的数据可以是不同的。当有数据写入请求到达分布式系统后,系统会采用虚拟槽分区算法将数据写入相
Docker入门篇:安装与加速
slamml
Docker docker 容器 运维
今天接着上一篇文章来写,本来计划以paopaorobot/dvo为例带入docker的基本操作,然后中间插播一下docker的安装和加速,但是发现写的有点罗嗦,刚写完安装与加速就挺大篇幅了,所以决定将docker基本操作放到下一篇介绍,对不住~对不住~。docker安装在这里,针对Windows、Ubuntu平台介绍docker的安装。Windows平台(本机win7)前提要求机器是64bit的,
Docker入门篇-安装Docker CE
极客编程玩家
安装DockerCE有两种方法可以在Centos上安装DockerCE:YUM存储库:设置Docker存储库并从中安装DockerCE。这是推荐的方法,因为使用YUM管理安装和升级更容易。(后面我们使用这种方式)RPM包:下载RPM包,手动安装,手动管理升级。在无法访问互联网的系统上安装DockerCE时,这非常有用。先决条件要安装DockerCE,您需要CentOS7的维护版本。不支持或测试存档
ros smach 教程——(二)
白云千载尽
自动驾驶 ros python smach 状态机
ROSSMACH中级教程一、SMACH容器1.1状态机容器1.1.1创建状态机容器首先引入状态机容器fromsmachimportStateMachine由于SMACH状态机还提供状态接口,因此必须在构造时指定其结果和用户数据交互。sm=StateMachine(outcomes=['outcome1','outcome2'],input_keys=['input1','input2'],outp
大模型应用编排工具Dify二开之登录Token改造
Daphnis_z
Python开发 LLM chatgpt python docker web
1.前言dify工作室支持在画布上直接编辑业务流程,通过调用开源大模型可以实现特定场景的业务,而且可以迅速更新发布。因此,某些项目要求在产品里面能够直接编辑dify业务流程,使得现场开发人员能够迅速响应客户需求。另外,方便对dify进行运维,比如更新开源大模型认证信息。环境信息:dify-0.8.3,docker-212.实现思路分析常规的思路有两种:把dify源码迁移到产品中代码改造量大、难度高
Docker
DRUN_K
docker 容器
DockerDocker架构的工作流程构建镜像:通过编写dockerfile来进行构建推送镜像到仓库:将镜像上传到DockerHub或私有注册表中拉取镜像:通过dockerpull从从仓库中拉取镜像运行容器:使用镜像创建并启动容器管理容器:使用Docker客户端命令管理正在运行的容器,如查看日志、停止容器、查看资源使用情况等网络与存储:容器之间通过Docker网络连接,数据通过Docker卷或绑定
k8s1.3、containerd2.0部署实战
不明觉厉二十年
kubernetes 容器 云原生
k8s1.3、containerd2.0部署实战参考博客containerd二进制安装与使用测试下载nerdctl-fullk8s安装参考博客containerd二进制安装与使用测试containerd可以和docker共存,直接二进制安装,nerdctl-full包含containerd和nerdctl命令行工具可以代替docker单机使用下载nerdctl-full建议下载-full版本下载后
Linux:kubeadm⽅式部署k8s集群
陈婷婷1
linux kubernetes 运维 服务器 容器
1.kubeadm创建环境k8s-master192.168.150.11k8s-node1192.168.150.12k8s-node2192.168.150.13三台节点都安装docker#Step1:安装必要的一些系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#Step2:添加软件源信息sudoyum-config
macos 搭建 ragflow 开发环境
Dickence
macos
ragflow是一个很方便的本地RAG库。本文主要记录一下在本机的部署过程1、总体架构说明开发环境:macbookpro(m1),16G内存+512G固态因本机的内存和硬盘比较可怜,所以在服务器上部署基础docker包,本机仅运行rag-server部分。服务器环境:28核56线程,64G,CentOS82、服务器部署服务器安装docker,过程略服务器安装docker-compose,过程略安装
施磊老师c++笔记(三)
Zhuai-行淮
施磊老师cpp c++ 笔记
c++模板编程-学习cpp类库的编程基础文章目录c++模板编程-学习cpp类库的编程基础1.函数模板2.理解模板函数3.实现cpp的vector向量容器4.理解容器空间配置器allocator的重要性1.函数模板内容:模板的实例化,模板函数,模板类型参数,模板非类型参数,模板的实参推演,模板的特例化,模板函数模板的特例化非模板函数的重载关系区分函数模板和模板函数的概念!!!模板的意义?对类型也可以
【Leetcode】11. 盛最多水的容器
Leuanghing
leetcode 算法 python
一、题目描述给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示
docker实现Nginx
在Ubuntu上使用Docker搭建Nginx服务器是一种高效、灵活的方式。以下将详细介绍从安装Docker到配置和运行Nginx容器的全过程,帮助你快速实现Nginx服务的部署与管理。目录安装Docker获取Nginx镜像运行Nginx容器访问Nginx配置Nginx持久化数据工作流程总结️注意事项⚠️1.安装Docker在开始之前,确保你的系统是最新的,并且安装了必要的依赖包。sudoapt-
java线程的无限循环和退出
3213213333332132
java
最近想写一个游戏,然后碰到有关线程的问题,网上查了好多资料都没满足。
突然想起了前段时间看的有关线程的视频,于是信手拈来写了一个线程的代码片段。
希望帮助刚学java线程的童鞋
package thread;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date
tomcat 容器
BlueSkator
tomcat Web servlet
Tomcat的组成部分 1、server
A Server element represents the entire Catalina servlet container. (Singleton) 2、service
service包括多个connector以及一个engine,其职责为处理由connector获得的客户请求。
3、connector
一个connector
php递归,静态变量,匿名函数使用
dcj3sjt126com
PHP 递归函数 匿名函数 静态变量 引用传参
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Current To-Do List</title>
</head>
<body>
属性颜色字体变化
周华华
JavaScript
function changSize(className){
var diva=byId("fot")
diva.className=className;
}
</script>
<style type="text/css">
.max{
background: #900;
color:#039;
将properties内容放置到map中
g21121
properties
代码比较简单:
private static Map<Object, Object> map;
private static Properties p;
static {
//读取properties文件
InputStream is = XXX.class.getClassLoader().getResourceAsStream("xxx.properti
[简单]拼接字符串
53873039oycg
字符串
工作中遇到需要从Map里面取值拼接字符串的情况,自己写了个,不是很好,欢迎提出更优雅的写法,代码如下:
import java.util.HashMap;
import java.uti
Struts2学习
云端月影
最近开始关注struts2的新特性,从这个版本开始,Struts开始使用convention-plugin代替codebehind-plugin来实现struts的零配置。
配置文件精简了,的确是简便了开发过程,但是,我们熟悉的配置突然disappear了,真是一下很不适应。跟着潮流走吧,看看该怎样来搞定convention-plugin。
使用Convention插件,你需要将其JAR文件放
Java新手入门的30个基本概念二
aijuans
java 新手 java 入门
基本概念: 1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率。 2.OOP中最重要的思想是类,类是模板是蓝图,
jedis 简单使用
antlove
java redis cache command jedis
jedis.RedisOperationCollection.java
package jedis;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
import java.util.Set;
pub
PL/SQL的函数和包体的基础
百合不是茶
PL/SQL编程函数 包体显示包的具体数据 包
由于明天举要上课,所以刚刚将代码敲了一遍PL/SQL的函数和包体的实现(单例模式过几天好好的总结下再发出来);以便明天能更好的学习PL/SQL的循环,今天太累了,所以早点睡觉,明天继续PL/SQL总有一天我会将你永远的记载在心里,,,
函数;
函数:PL/SQL中的函数相当于java中的方法;函数有返回值
定义函数的
--输入姓名找到该姓名的年薪
create or re
Mockito(二)--实例篇
bijian1013
持续集成 mockito 单元测试
学习了基本知识后,就可以实战了,Mockito的实际使用还是比较麻烦的。因为在实际使用中,最常遇到的就是需要模拟第三方类库的行为。
比如现在有一个类FTPFileTransfer,实现了向FTP传输文件的功能。这个类中使用了a
精通Oracle10编程SQL(7)编写控制结构
bijian1013
oracle 数据库 plsql
/*
*编写控制结构
*/
--条件分支语句
--简单条件判断
DECLARE
v_sal NUMBER(6,2);
BEGIN
select sal into v_sal from emp
where lower(ename)=lower('&name');
if v_sal<2000 then
update emp set
【Log4j二】Log4j属性文件配置详解
bit1129
log4j
如下是一个log4j.properties的配置
log4j.rootCategory=INFO, stdout , R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appe
java集合排序笔记
白糖_
java
public class CollectionDemo implements Serializable,Comparable<CollectionDemo>{
private static final long serialVersionUID = -2958090810811192128L;
private int id;
private String nam
java导致linux负载过高的定位方法
ronin47
定位java进程ID
可以使用top或ps -ef |grep java
![图片描述][1]
根据进程ID找到最消耗资源的java pid
比如第一步找到的进程ID为5431
执行
top -p 5431 -H
![图片描述][2]
打印java栈信息
$ jstack -l 5431 > 5431.log
在栈信息中定位具体问题
将消耗资源的Java PID转
给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
bylijinnan
函数
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class RandNFromRand5 {
/**
题目:给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。
解法1:
f(k) = (x0-1)*5^0+(x1-
PL/SQL Developer保存布局
Kai_Ge
近日由于项目需要,数据库从DB2迁移到ORCAL,因此数据库连接客户端选择了PL/SQL Developer。由于软件运用不熟悉,造成了很多麻烦,最主要的就是进入后,左边列表有很多选项,自己删除了一些选项卡,布局很满意了,下次进入后又恢复了以前的布局,很是苦恼。在众多PL/SQL Developer使用技巧中找到如下这段:
&n
[未来战士计划]超能查派[剧透,慎入]
comsci
计划
非常好看,超能查派,这部电影......为我们这些热爱人工智能的工程技术人员提供一些参考意见和思想........
虽然电影里面的人物形象不是非常的可爱....但是非常的贴近现实生活....
&nbs
Google Map API V2
dai_lm
google map
以后如果要开发包含google map的程序就更麻烦咯
http://www.cnblogs.com/mengdd/archive/2013/01/01/2841390.html
找到篇不错的文章,大家可以参考一下
http://blog.sina.com.cn/s/blog_c2839d410101jahv.html
1. 创建Android工程
由于v2的key需要G
java数据计算层的几种解决方法2
datamachine
java sql 集算器
2、SQL
SQL/SP/JDBC在这里属于一类,这是老牌的数据计算层,性能和灵活性是它的优势。但随着新情况的不断出现,单纯用SQL已经难以满足需求,比如: JAVA开发规模的扩大,数据量的剧增,复杂计算问题的涌现。虽然SQL得高分的指标不多,但都是权重最高的。
成熟度:5星。最成熟的。
Linux下Telnet的安装与运行
dcj3sjt126com
linux telnet
Linux下Telnet的安装与运行 linux默认是使用SSH服务的 而不安装telnet服务 如果要使用telnet 就必须先安装相应的软件包 即使安装了软件包 默认的设置telnet 服务也是不运行的 需要手工进行设置 如果是redhat9,则在第三张光盘中找到 telnet-server-0.17-25.i386.rpm
PHP中钩子函数的实现与认识
dcj3sjt126com
PHP
假如有这么一段程序:
function fun(){
fun1();
fun2();
}
首先程序执行完fun1()之后执行fun2()然后fun()结束。
但是,假如我们想对函数做一些变化。比如说,fun是一个解析函数,我们希望后期可以提供丰富的解析函数,而究竟用哪个函数解析,我们希望在配置文件中配置。这个时候就可以发挥钩子的力量了。
我们可以在fu
EOS中的WorkSpace密码修改
蕃薯耀
修改WorkSpace密码
EOS中BPS的WorkSpace密码修改
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 201
SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】
hanqunfeng
SpringSecurity
SpringSecurity的配置相对来说有些复杂,如果是完整的bean配置,则需要配置大量的bean,所以xml配置时使用了命名空间来简化配置,同样,spring为我们提供了一个抽象类WebSecurityConfigurerAdapter和一个注解@EnableWebMvcSecurity,达到同样减少bean配置的目的,如下:
applicationContex
ie 9 kendo ui中ajax跨域的问题
jackyrong
AJAX跨域
这两天遇到个问题,kendo ui的datagrid,根据json去读取数据,然后前端通过kendo ui的datagrid去渲染,但很奇怪的是,在ie 10,ie 11,chrome,firefox等浏览器中,同样的程序,
浏览起来是没问题的,但把应用放到公网上的一台服务器,
却发现如下情况:
1) ie 9下,不能出现任何数据,但用IE 9浏览器浏览本机的应用,却没任何问题
不要让别人笑你不能成为程序员
lampcy
编程 程序员
在经历六个月的编程集训之后,我刚刚完成了我的第一次一对一的编码评估。但是事情并没有如我所想的那般顺利。
说实话,我感觉我的脑细胞像被轰炸过一样。
手慢慢地离开键盘,心里很压抑。不禁默默祈祷:一切都会进展顺利的,对吧?至少有些地方我的回答应该是没有遗漏的,是不是?
难道我选择编程真的是一个巨大的错误吗——我真的永远也成不了程序员吗?
我需要一点点安慰。在自我怀疑,不安全感和脆弱等等像龙卷风一
马皇后的贤德
nannan408
马皇后不怕朱元璋的坏脾气,并敢理直气壮地吹耳边风。众所周知,朱元璋不喜欢女人干政,他认为“后妃虽母仪天下,然不可使干政事”,因为“宠之太过,则骄恣犯分,上下失序”,因此还特地命人纂述《女诫》,以示警诫。但马皇后是个例外。
有一次,马皇后问朱元璋道:“如今天下老百姓安居乐业了吗?”朱元璋不高兴地回答:“这不是你应该问的。”马皇后振振有词地回敬道:“陛下是天下之父,
选择某个属性值最大的那条记录(不仅仅包含指定属性,而是想要什么属性都可以)
Rainbow702
sql group by 最大值 max 最大的那条记录
好久好久不写SQL了,技能退化严重啊!!!
直入主题:
比如我有一张表,file_info,
它有两个属性(但实际不只,我这里只是作说明用):
file_code, file_version
同一个code可能对应多个version
现在,我想针对每一个code,取得它相关的记录中,version 值 最大的那条记录,
SQL如下:
select
*
VBScript脚本语言
tntxia
VBScript
VBScript 是基于VB的脚本语言。主要用于Asp和Excel的编程。
VB家族语言简介
Visual Basic 6.0
源于BASIC语言。
由微软公司开发的包含协助开发环境的事
java中枚举类型的使用
xiao1zhao2
java enum 枚举 1.5新特性
枚举类型是j2se在1.5引入的新的类型,通过关键字enum来定义,常用来存储一些常量.
1.定义一个简单的枚举类型
public enum Sex {
MAN,
WOMAN
}
枚举类型本质是类,编译此段代码会生成.class文件.通过Sex.MAN来访问Sex中的成员,其返回值是Sex类型.
2.常用方法
静态的values()方