首页 文章 精选 留言 我的

精选列表

搜索[MSA技术],共10000篇文章
优秀的个人博客,低调大师

Docker虚拟化技术系列之-网络配置

当我们把docker部署好,是不是想docker能联网呢,能跟其他服务器或者应用进行交互访问呢,那么今天我们来给Docker配置独立的IP及容器之间的互联; 内置bridge(nat) 缺点: 需要配套服务注册/发现,否则宿主上端口分配困难,容易冲突。 由于每个容器暴露的端口都不一致,造成前端路由层nginx配置(proxy_pass)里无法使用dns的方式。 端口映射要在容器启动时就指定好,后期无法变更。 测试发现nat不支持websocket。 自建桥接网络 优点: 每个容器都有独立ip,对外提供服务,如nginx+php,nginx+resin,都可以使用默认的80端口 由于容器暴露端口都可以使用80端口,因此前端路由层nginx配置(proxy_pass)里可以使用dns的方式。 无需为了后期端口映射添加而烦恼 桥接支持websocket 当我们把docker镜像下载下来之后,启动一个容器,登录容器我们会发现容器的ip如下图所示: 停止服务 /etc/init.d/docker stop 关掉docker0 ifconfigdocker0down 删除docker brctl delbr docker0 增加网桥br0 yuminstallbridge-utils CentOS6.5下的配置: vim /etc/sysconfig/docker other_args="-b=br0" 如下图: 配置bridge桥接网络: 在/etc/sysconfig/network-scripts/下,修改ifcfg-eth0网卡配置,同时增加ifcfg-br0桥接网卡配置如下: vi ifcfg-eth0内容如下: 1 2 3 4 5 6 DEVICE=eth0 BOOTPROTO=none ONBOOT= yes TYPE=Ethernet BOOTPROTO=static BRIDGE=br0 vi ifcfg-br0内容如下: 1 2 3 4 5 DEVICE= "br0" ONBOOT= yes NM_CONTROLLED=no BOOTPROTO=dhcp TYPE=Bridge 启动docker服务:/etc/init.d/docker start 查看服务器网卡信息如下: 启动一个新的docker客户端,查看客户端ip如下: 进入已经启动过的容器命令:docker attach 容器ID 即可。 从外网下载nginx包: 本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1899832

优秀的个人博客,低调大师

浅谈iOS中的蓝牙技术(二) -- CoreBluetooth

在上篇文章中我们提到了 iOS 开发中,使用GameKit 框架实现相同网络的 iOS 设备之间传输数据.但是 GameKit 框架在 iOS7 之后就过时了,那么本文将介绍另一种关于蓝牙的框架 CoreBluetooth. CoreBluetooth 简介 CoreBlueTooth.framework 使用 CoreBluetooth 要求设备必须要支持蓝牙4.0(一般也叫BLE<Bluetooth low energy>)。,并且手机型号必须是iPhone4以上,也就是至少4s手机.使用CoreBluetooth进行开发可实现与第三方设备的数据交互. CoreBluetooth.h 上图是CoreBluetooth 的头文件,在这个框架中最核心的两个东西就是 Central (中心)和 Peripheral(外设). 图片来自网络,如有侵权,请联系 CoreBluetooth 中的对象模型 CBCentralManager 它用于管理发现或远程连接外围设备(CBPeripheral对象),包括扫描,发现和外围设备连接到广告. CBPeripheralManager 它用于管理服务在当地发表外围设备的通用属性配置文件数据库和通知这些服务的中心设备(CBCentral对象). CBPeripheral 它代表远程周边设备,你的应用程序的中央管理器(CBCentralManager)的一个实例——发现广告或当前连接. CBCentral 它代表远程中央设备连接到一个应用程序在本地设备上实现外围的作用. CBService 和 CBMutableService 代表外围的业务数据收集,相关行为完成一个功能或特性的设备(或部分设备).CBMutableService类继承CBService类添加写访问的所有属性. CBCharacteristic及其子类CBMutableCharacteristic 代表进一步外围的信息服务.CBMutableCharacteristic对象代表当的特色周边的服务 CBUUID 它的实例代表128位全局唯一标识符(uuid)属性中使用蓝牙低能量沟通,比如周边的服务,特点,和特征描述符 CBATTRequest 它代表属性协议(ATT)读写请求从远程中央设备(CBCentral对象) 实现通讯 中心管理设计模式 First 导入 CoreBluetooth 头文件,创建中心管理者属性和外设属性,并遵守中心管理者和外设的协议. First 建立中心控制器 懒加载创建中心控制器, 创建的时候设置代理为当前控制器,Peripheral Manager将跑在主线程中。如果你想用不同的线程做更加复杂的事情,你需创建一个队列(queue)并将它放在这儿 -(CBCentralManager*)getCManager{if(!_cManager){ _cManager=[[CBCentralManageralloc]initWithDelegate:selfqueue:dispatch_get_main_queue()options:nil]; }return_cManager; } 更新状态 (只要中心管理者初始化,就会触发此代理方法) 中心管理器的状态 中心管理器 扫描外设 //该方法用于告诉CentralManager,要开始寻找一个指定的服务了.不能在state非ON的情况下对我们的中心管理者进行操作,scanForPeripheralsWithServices方法中sercices为空则会扫描所有的设备.-(void)centralManagerDidUpdateState:(CBCentralManager*)central{switch(central.state){caseCBCentralManagerStateUnknown:NSLog(@"中心管理器状态未知");break;caseCBCentralManagerStateResetting:NSLog(@"中心管理器状态重置");break;caseCBCentralManagerStateUnsupported:NSLog(@"中心管理器状态不被支持");break;caseCBCentralManagerStateUnauthorized:NSLog(@"中心管理器状态未被授权");break;caseCBCentralManagerStatePoweredOff:NSLog(@"中心管理器状态电源关闭");break;caseCBCentralManagerStatePoweredOn: {NSLog(@"中心管理器状态电源开启");//在中心管理者成功开启后开始搜索外设 [self.cManagerscanForPeripheralsWithServices:niloptions:nil]; //搜索成功之后,会调用我们找到外设的代理方法sercices为空则会扫描所有的设备 //-(void)centralManager:(CBCentralManager*)centraldidDiscoverPeripheral:(CBPeripheral*)peripheraladvertisementData:(NSDictionary*)advertisementDataRSSI:(NSNumber*)RSSI;//找到外设 }break;default:break; } } 过滤外设,进行连接 如果找到了设备,则代理会调用该方法,过滤外设 /* *@paramcentral中央管理器提供此更新 *@paramperipheral一个外设对象 *@paramadvertisementData一个包含任何广播和扫描响应数据的字典。 *@paramRSSIRSSI(ReceivedSignalStrengthIndicator)是接收信号的强度指示 * */-(void)centralManager:(CBCentralManager*)centraldidDiscoverPeripheral:(CBPeripheral*)peripheraladvertisementData:(NSDictionary*)advertisementDataRSSI:(NSNumber*)RSSI{if([peripheral.namehasPrefix:@"XXX"]&&(ABS(RSSI.integerValue)>35)){//标记我们的外设,延长他的生命周期 self.peripheral=peripheral;//进行连接 [self.cManagerconnectPeripheral:self.peripheraloptions:nil]; } } 连接状态(成功,失败,断开) 中心管理者连接外设成功,连接成功之后,可以进行服务和特征的发现 -(void)centralManager:(CBCentralManager*)centraldidConnectPeripheral:(CBPeripheral*)peripheral{NSLog(@"%@连接成功",peripheral.name);//获取外设的服务 //设置外设的代理 self.peripheral.delegate=self;//外设发现服务,传nil代表不过滤 //这里会触发外设的代理方法-(void)peripheral:(CBPeripheral*)peripheraldidDiscoverServices:(NSError*)error [self.peripheraldiscoverServices:nil]; }//外设连接失败-(void)centralManager:(CBCentralManager*)centraldidFailToConnectPeripheral:(CBPeripheral*)peripheralerror:(NSError*)error {NSLog(@"%@连接失败",peripheral.name); }//丢失连接-(void)centralManager:(CBCentralManager*)centraldidDisconnectPeripheral:(CBPeripheral*)peripheralerror:(NSError*)error {NSLog(@"%@断开连接",peripheral.name); } 发现服务以及内部的特征 //发现外设的服务后调用的方法-(void)peripheral:(CBPeripheral*)peripheraldidDiscoverServices:(NSError*)error {//判断没有失败 if(error){NSLog(@"error:%@",error.localizedDescription);return; }for(CBService*serviceinperipheral.services){ [peripheraldiscoverCharacteristics:nilforService:service]; } }//发现服务后,让设备再发现服务内部的特征-(void)peripheral:(CBPeripheral*)peripheraldidDiscoverCharacteristicsForService:(CBService*)serviceerror:(NSError*)error {//遍历特征 for(CBCharacteristic*characteristicinservice.characteristics){//获取特征对应的描述 [peripheraldiscoverDescriptorsForCharacteristic:characteristic];//获取特征的值 [peripheralreadValueForCharacteristic:characteristic]; } } 更新特征 //更新特征的描述的值的时候会调用-(void)peripheral:(CBPeripheral*)peripheraldidUpdateValueForDescriptor:(CBDescriptor*)descriptorerror:(NSError*)error { [peripheralreadValueForDescriptor:descriptor]; }//更新特征的value的时候会调用-(void)peripheral:(CBPeripheral*)peripheraldidUpdateValueForCharacteristic:(CBCharacteristic*)characteristicerror:(NSError*)error {for(CBDescriptor*descriptorincharacteristic.descriptors){ [peripheralreadValueForDescriptor:descriptor]; } } 外设写数据到特征中 NS_OPTIONS类型的枚举特征属性,可以是多个值,这里需要注意,由于枚举属性是NS_OPTIONS,所以一个枚举可能对应多个类型,所以在判断的时候不能用 = ,而应该用包含& NS_OPTIONS类型的特征属性 -(void)peripheral:(CBPeripheral*)peripheraldidWriteData:(NSData*)dataforCharacteristic:(nonnullCBCharacteristic*)characteristic {// if(characteristic.properties&CBCharacteristicPropertyWrite){//下面方法中参数的意义依次是:写入的数据写给哪个特征通过此响应记录是否成功写入 [peripheralwriteValue:dataforCharacteristic:characteristictype:CBCharacteristicWriteWithResponse]; } } 通知的订阅和取消订阅 一般来说这两个方法要根据产品需求来确定写在什么地方 -(void)peripheral:(CBPeripheral*)peripheralregNotifyWithCharacteristic:(nonnullCBCharacteristic*)characteristic {//外设为特征订阅通知 [peripheralsetNotifyValue:YESforCharacteristic:characteristic]; } -(void)peripheral:(CBPeripheral*)peripheralCancleRegNotifyWithCharacteristic:(nonnullCBCharacteristic*)characteristic {//外设取消订阅通知 [peripheralsetNotifyValue:NOforCharacteristic:characteristic]; } 断开连接 -(void)dismissConentedWithPeripheral:(CBPeripheral*)peripheral {//停止扫描 [self.cManagerstopScan];//断开连接 [self.cManagercancelPeripheralConnection:peripheral]; } END 外设管理设计模式,跟中心管理设计模式类似,就不赘述,需要遵守 外设管理器协议 和中心协议,设置代理,遵守其中的方法.代码地址:https://github.com/coderqiao/CoreBluetooth. 本文转自 卓行天下 51CTO博客,原文链接:http://blog.51cto.com/9951038/1766787,如需转载请自行联系原作者

优秀的个人博客,低调大师

阿里云技术教程系列-ECS使用须知

内容提示:阿里云ECS使用须知 为了保证您云服务器 ECS 实例的正常运行,在使用之前,务必认真阅读以下注意事项。 操作须知 禁忌 禁止用户使用 ECS 实例做流量穿透服务。违规者最高处以关停并锁定实例的处罚,并清退处理。 禁止使用 ECS 针对淘宝等电商网站从事刷单、刷销量、刷广告、进行虚假网站交易的网络行为。 禁止升级云服务器的内核和操作系统版本。 不要开启 SELinux。 不要卸载 PVDriver。 不要随意修改网卡 MAC 地址。 建议 对于 4 GB 以上内存的云服务器,请选择 64 位操作系统(32 位操作系统存在 4 GB 的内存寻址限制),如: Aliyun Linux 15.1 64 位 CoreOS 681.2.0 64 位 CentOS 7.2 64 位 Debian 8.0.4 64 位 FreeBSD 10.1 64 位 Gentoo 13 64 位 OpenSUSE 13.1 64 位 SUSE Linux 64 位 Ubuntu 14.04 64 位 Windows 2008 64 位 Windows 2012 64 位 Windows 32 位操作系统支持最高 CPU 核数为 4 核。 支持变更 CPU、内存。需要先停止云服务器再操作升级,IP 信息不做变更,无需迁移数据。 支持带宽升级。无缝升级,无需停机,可按天选择。 为保证服务的连续性,避免因宕机迁移而导致的服务不可用,建议把相关软件都设置成开机启动。如果有应用服务连接的数据库,需要在程序中设置成自动重连机制。 I/O 优化实例不要关闭 aliyun-service 服务。 Windows 操作系统须知 不要关闭 Windows 系统自带的 shutdownmon.exe 进程。关闭后可能会使服务器重启时间变长。 不要重命名、删除或禁用 Windows 下的 Administrator 账号,以免影响服务器使用。 如果您使用普通云盘,不建议使用虚拟内存。如果是高效云盘或SSD云盘,可以根据实际情况使用虚拟内存。 控制台修改密码针对的是 Administrator 账号。如果 Administrator 账号被删除或者重命名,点击修改密码按钮会自动创建 Administrator 账号。 Linux 操作系统须知 不要修改 Linux 服务器下默认的 /etc/issue 文件内容。修改该文件会导致管理控制台的功能按钮无法正常使用。 不要随意更改分区下目录的权限,尤其是 /etc/sbin/bin/boot/dev/usr/lib 等目录权限。如果权限更改不当会导致系统出现异常。 不要重命名、删除或禁用 Linux下的 root 账号。 不要编译 Linux 系统的内核,或对内核进行任何其他操作。 如果您使用普通云盘,不建议使用swap分区。如果是高效云盘或SSD云盘,可以根据实际情况使用swap分区。 不要开启 NetWorkManager 服务。该服务会跟系统内部网络服务出现冲突,导致网络异常。 按量付费注意事项 使用按量付费之前,需要做实名认证,并确保账户余额至少有 100 元(非代金券)。 不支持“包年包月”和“按量付费”相互更换。1 台云服务器只能选择 1 种付费模式,不能同时选择。 不提供备案服务。 不支持 5 天无理由退款。 按量付费支持更换操作系统,但不支持配置变更功能(包括带宽升级、CPU 和内存升级、新增数据盘);若选择 0 Mbps 固定带宽,则不分配外网 IP,也不支持 0 Mbps 带宽升级。 每小时计费总费用 = CPU 费用 + 内存费用 + 数据盘费用 + 公网带宽费用。CPU、内存、 数据盘、固定带宽均按小时计费。 带宽按使用流量计费,仅单向收取流出流量费用(0.8 元 / GB),流入流量免费。例如,您在 1 小时内公网流出流量为 2.5 GB,则收取费用为 2.5 GB * 0.8 元 / GB = 2.0 元。 点我获取阿里云优惠券 我的官网 我的官网http://guan2ye.com 我的CSDN地址http://blog.csdn.net/chenjianandiyi 我的简书地址http://www.jianshu.com/u/9b5d1921ce34 我的githubhttps://github.com/javanan 我的码云地址https://gitee.com/jamen/ 阿里云优惠券https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=vf2b5zld&utm_source=vf2b5zld 阿里云教程系列网站http://aliyun.guan2ye.com

优秀的个人博客,低调大师

架构如何为业务和技术“服务”(2)

3 ,来年的架构 从2010年初设立架构组,到后来的架构组名存实亡,中心的架构工作充满了问题和认识上的误区。在新的一年,我们的架构可以做些什么呢?下面我提一点初步设想。 3.1 ,目标一:建立 “企业架构” 按照企业架构的定义,结构,采用适当的工具,推动中心建立自己的“企业架构”。 具体来说,分为两个部分: 3.1.1 ,梳理业务架构 将目前的FT,WFT,FTS,MB,玖富银行家,高阳空间等之间的业务关系,结构,层次进行梳理,寻找“核心业务架构”,分离各个业务上的流程和关注点,从而为新的业务、产品的快速搭建提供业务上的基础。 该工作需要公司管理层主动推进,靠架构人员是不可能完成的。 下图是2009年整理的FT和MB业务架构图,现在的情况已经发生了较大的变化,需要重新梳理。 (FT业务架构图) (MB业务架构图) 本文转自深蓝医生博客园博客,原文链接:http://www.cnblogs.com/bluedoctor/archive/2012/06/23/2559110.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Docker虚拟化技术系列之-命令详解

虚拟化原理:虚拟化解决方案的底部是要进行虚拟化的物理机器。这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化;那么就需要系统管理程序层的支持。系统管理程序(Virtual machine monitor),或称为VMM,可以看作是平台硬件和操作系统的抽象化。在某些情况中,这个系统管理程序就是一个操作系统;此时,它就称为主机操作系统。 随着docker不断的学习,我们要想进一步去维护docker,就需要掌握docker日常使用的命令,如下为docker常用命令: 一、容器基础命令 docker version#查看版本 docker search centos#搜索可用docker镜像(附执行结果哦) docker images查看当前docker所有镜像 docker pullcentos #下载镜像 二、容器导入导出 1 2 3 4 5 cat centos. tar |docker import -centos6 #Docker导入镜像 docker export id >cenos6. tar #Docker导出镜像 dockerruncentos echo "helloword" #在docker容器中运行helloworld! dockerruncentosyuminstallntpdate #在容器中安装ntpdate的程序 docker ps -l命令获得最后一个容器的 id ,docker ps -a查看所有的容器。 运行docker commit提交刚修改的容器,例如: docker commit 2313132centos:v1 三、运行容器命令 运行启动一个容器命令: 1 2 dockerrun-i-tcentos /bin/bash 在容器里启动一个 /bin/bashshell 环境,可以登录进入操作,其中-t表示打开一个终端的意思,-i表示可以交互输入。 dockerrun-dcentos:v1 /bin/bash ,-d表示在后台启动,以daemon方式启动。 1 2 3 dockerstopid关闭容器 dockerstartid启动某个容器 dockerrmid删除容器,dockerrmiimages删除镜像 1 dockerrun-d-p80:80-p8022:22centos:v2,解析:-p指定容器启动后docker上运行的端口映射及容器里运行的端口,80:80,第一个80表示docker系统上的80,第二个80表示docker虚拟机里面的端口。用户默认访问本机80端口,自动映射到容器里面的80端口。 四、进入容器命令 docker exec -it container_id /bin/bash (容器ID) 用这种方式可以直接exit退出容器,容器继续运行; docker attach container_id 如果用这种方式进入,需要用ctrl+a+q退出容器;当然了,容器使用还有非常多的命令,例如docker inspect ID可以查看容器的详细信息等等; 本文转自 wgkgood 51CTO博客,原文链接:http://blog.51cto.com/wgkgood/1899812

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册