首页 文章 精选 留言 我的

精选列表

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

使用NAT网关轻松为单台云服务器设置多个公网IP

在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。 配置单云主机多公网IP功能流程概述 1、为ECS实例配置多块网卡。 2、创建NAT网关。NAT网关需和ECS在同一个VPC内。 3、为NAT网关绑定多个弹性公网IP,或使用NAT共享带宽包。 4、创建DNAT条目,使多个弹性公网EIP(和端口)分别映射该ECS实例的多个私网IP(和端口)。 实现示意图 详细操作流程 流程一:为ECS实例配置多块网卡 1)按需购买VPC ECS(点此进入ECS购买页),在ECS控制台上可看到购买的ECS实例,如下图. 2)按需创建多块网卡(点此进入ECS控制台创建多网卡) 创建完成后,在ECS控制台上“弹性网卡”选项下可看到当前地域下所有的网卡,包括ECS的主网卡,和已经申请的弹性网卡(即辅助网卡)。 3)

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

在各大Linux发行版中如何安装Docker及设置加速器?

如果读者没有现成的服务器来进行测试Docker,那么可以使用VMware Workstation这款软件来模拟Linux,并且虚拟机支持操作的回滚,那么即使在Linux平台上进行了非法的操作,这也是可以通过快照还原的。下面是笔者的虚拟机的配置: 笔者的电脑配置是CPU:Intel i3,内存12GB,240GB的SSD 一点点初始化操作: 由于笔者多次升级CentOS,所以会有多个启动参数。默认选择第一个启动就可以了。 本人习惯使用远程连接工具来管理Linux主机,这样可以让初学者更加贴近生产环境。下面的命令操作均是使用XShell进行操作的。类似的远程连接工具还有SecureCRT、PUTTY等等。PUTTY+WinSCP可是若干年前网管人员的法宝啊! 由于CentOS7使用了多线程的开机机制,开机速度是非常快的。下面在命令行窗口登录Linux主机。 由于笔者用的是无线网卡,然后虚拟机桥接到了无线网卡上,笔记本电脑接到了家庭的路由器上,所以要重新启动Linux的网路服务,使其获得新的IP地址(之前我是做过实验的,所以虚拟机并不是处于关机状态,而是挂起的状态)。 这个地方笔者使用了比较老旧的命令来重启Linux的网络服务,也可以使用service network restart来重启网路服务。 下面将虚拟机管理软件的界面关掉或者最小化即可,但是读者务必保证勾选以下选项,否则虚拟机将会强制关闭: 下面使用XShell进行连接: 笔者已经安装了docker,只需要启动即可。 No.1:如果你使用的系统环境是CentOS7那么使用docker有以下两种安装方式: 1.使用Yum进行在线安装: Docker要求的系统环境的内核版本在3.10以上。使用uname -r进行查看。使用yum install docker -y进行安装docker。安装完成后可以使用service docker start启动docker的后台服务。当docker后台的服务启动以后我们可以测试docker的hello-world容器:docker run hello-world,因为docker还没有本地的镜像文件,所以docker会到DockerHub上进行下载hello-world的镜像文件,并在容器中运行。 2.使用脚本进行安装 使用sudo命令获取系统管理员的权限,或者直接使用root权限登录我们的CentOS7操作系统。首先将yum包更新到最新。使用如下命令:sudoyum update 执行docker的安装脚本,curl -fsSLhttps://get.docker.com | sh 这个叫别人会自动添加docker的Yum源docker.repo并会自动安装docker。当docker安装完成后同样使用sudo service docker start命令进行启动docker的后台进程。使用同样的命令sudo docker run hello-world命令进行初次测试docker是否可以正常使用。 No.2:如果你的系统数Ubuntu,那么Docker有以下安装方式: 查看系统内核的版本,docker使用的Ubuntu的内核版本必须高于3.10,你可以使用uname -r来查看你的Ubuntu的内核版本。下面使用脚本的方式安装docker。 wget-qO- https://get.docker.com/ | sh 输入当前的用户名和密码就可以安装docker了,安装后会有提示,当腰使用费root权限的用户运行docker的时候必须执行sudo usermod -aG docker<username>,然后重新登录,要不然会有报错信息提示。 启动docker的后台服务:sudoservice docker start,接着我们可以使用docker run hello-world命令来测试运行docker容器。 No.3:Docker在Windows上安装并运行: 如果你是Windows的忠实用户,或者对Linux不太熟悉,那么Docker可以在Windows上运行。 由于docker引擎使用的Linux内核的特性,所以最好使用Linux的环境进行学习和测试使用docker,不过我们可以在Windows上运行一个1轻量级虚拟机来运行docker,那就是Boot2Docker。这是个虚拟机和docker的结合产品,安装步骤比较简单。 可以在https://github.com/boot2docker/windows-installer/releases/latest下载最最新本的Boot2Docker。然后运行安装文件。这个文件将会安装甲骨文VirtualBox、MSYS-giit、boot2docker Linux 镜像文件和Boot2Docker的管理工具。 安装步骤: 双击运行安装程序,单击“Next”按钮,选择boot2docker的安装路径,建议使用较短的英文的安装路径,单击“Next”,选择要安装的组件,选择Full installation,也就是全部安装,最后单击Install进行文件的安装,然后单击“Finsh”,安装完成。从桌面上或者是安装的路径或者是开始菜单都可以启动Boot2Docker。Boot2Docker启动后将会启动一个Unix Shell来配置和管理运行在虚拟机中的docker,我们可以通过docker version命令来查看docker是否正常工作。同样也可以使用docker run hello-world命令来到DockerHub上拉取hello-world的镜像文件来测试docker是否可以正常工作。 由于DockerHub是国外的网站,速度比较慢,笔者使用阿里云的docker加速源: 首先登录https://dev.aliyun.com/search.html到阿里云开发者平台去获取加速器地址: Redhat 7/CentOS7配置加速器的方式与其他系统都不一样,需要编辑/etc/sysconfig/docker配置文件。 在OPTIONS配置项中添加加速器配置--registry-mirror=<your accelerate address> 最后service docker restart重启docker daemon。 本文转自 棋帅小七 51CTO博客,原文链接:http://blog.51cto.com/xvjunjie/1982392

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

开源无代码 / 低代码平台 NocoBase 发布 V0.15,全新的插件设置中心

NocoBase 是什么 NocoBase 是一个极易扩展的开源无代码开发平台。 不必投入几年时间、数百万资金研发,花几分钟时间部署 NocoBase,马上拥有一个私有、可控、极易扩展的无代码开发平台。 与众不同之处 1. 模型驱动,“数据结构”与“使用界面”分离 多数以表单、表格或者流程驱动的无代码产品都是在使用界面上直接创建数据结构,比如 Airtable 在表格里新增一列就是新增一个字段。这样的好处是使用简单,不足是功能和灵活性受限,难以满足较复杂场景的需求。 NocoBase 采用数据结构与使用界面分离的设计思路,可以为数据表创建任意数量、任意形态的区块(数据视图),每个区块里可以定义不同的样式、文案、操作。这样既兼顾了无代码的简单操作,又具备了原生开发的灵活性。 2. 所见即所得 NocoBase 可以开发复杂和有特色的业务系统,但这并不意味着需要复杂和专业的操作。只需一次点击,就可以在使用界面上显示出配置选项,具备系统配置权限的管理员可以用所见即所得的操作方式,直接配置用户的使用界面。 3. 功能即插件 NocoBase 采用插件化架构,所有新功能都可以通过开发和安装插件来实现,扩展功能就像在手机上安装 APP 一样简单。 新特性 不兼容的变化 插件配置页面注册方式 以前使用 SettingsCenterProvider 注册插件配置页面,现在需要通过插件化注册。 案例 1:原页面仅有一个 Tab 的情况 当页面仅有一个 Tab 时,新版本的 Tab 会删掉,仅保留页面的标题和图标。 const HelloProvider = React.memo(props => { return ( <SettingsCenterProvider settings={{ hello: { title: "Hello", icon: "ApiOutlined", tabs: { tab1: { title: "Hello tab", component: HelloPluginSettingPage, }, }, }, }} > {props.children} SettingsCenterProvider> ); }); 现在需要改为: class HelloPlugin extends Plugin { async load() { this.app.pluginSettingsManager.add("hello", { title: "Hello", // 原 title icon: "ApiOutlined", // 原 icon Component: HelloPluginSettingPage, // 原 tab component aclSnippet: "pm.hello.tab1", // 权限片段,保证权限的 code 和之前的一致,如果是新插件,不需要传这个参数 }); } } 也就是删除了 tab1 的 Hello Tab。 其中参数 aclSnippet 的 pm.hello.tab1 对应原来的 settings 对象的 key: <SettingsCenterProvider settings={{ hello: { // 这里的 hello 对应 `pm.hello.tab1` 中的 `hello` tabs: { tab1: { // 这里的 tab1 对应 `pm.hello.tab1` 中的 tab1 }, }, }, }} >SettingsCenterProvider> 案例 2:原页面有多个 Tab 的情况 const HelloProvider = React.memo(props => { return ( <SettingsCenterProvider settings={{ hello: { title: "Hello", icon: "ApiOutlined", tabs: { tab1: { title: "Hello tab1", component: HelloPluginSettingPage1, }, tab2: { title: "Hello tab2", component: HelloPluginSettingPage2, }, }, }, }} > {props.children} SettingsCenterProvider> ); }); 现在需要改为: import { Outlet } from "react-router-dom"; class HelloPlugin extends Plugin { async load() { this.app.pluginSettingsManager.add("hello", { title: "Hello", // 原 title icon: "ApiOutlined", // 原 icon Component: Outlet, }); this.app.pluginSettingsManager.add("hello.tab1", { title: "Hello tab1", // 原 tab1 title Component: HelloPluginSettingPage1, // 原 tab1 component }); this.app.pluginSettingsManager.add("hello.tab2", { title: "Hello tab2", // 原 tab2 title Component: HelloPluginSettingPage1, // 原 tab2 component }); } } 获取 pluginSettingsManager 对应的路由信息 const baseName = app.pluginSettingsManager.getRouteName("hello"); // admin.settings.hello const basePath = app.pluginSettingsManager.getRoutePath("hello"); // /admin/settings/hello 如果插件配置页面内部有链接跳转的话,需要进行相应的更改,例如: navigate("/admin/settings/hello/1"); navigate("/admin/settings/hello/2"); // 可以更改为 const basePath = app.pluginSettingsManager.getRoutePath("hello"); navigate(`${basePath}/1`); navigate(`${basePath}/2`); 更多信息,请参考 插件配置页面。 更新记录 完整的更新记录,请参考 更新记录。 v0.15.0-alpha.2 - 2023-11-13 Merged fix: antd table ref bug #3029 fix: improve plugin settings code #3028 fix: plugin settings manager Component optional & delete isBookmark #3027 fix(plugin-workflow): fix workflow title in binding workflow configuration not showing #3026 Commits chore(versions): 😊 publish v0.15.0-alpha.2 b597aec chore: update changelog 9dae34a v0.15.0-alpha.1 - 2023-11-13 Merged refactor: plugin settings manager #2712 fix: fix regular of variable #3024 fix: should load association data in subform #3020 fix: association field in reference block failed to append #2998 fix: relational data should be loaded correctly on first render #3016 feat: plugin-mock-collections #2988 Update pull_request_template.md #3013 fix: should lazy load association data in subform #3012 fix(import): remove commas from numbers #3011 fix(static-server): directoryListing: false #3010 fix(theme): text color of page header right side #3008 fix: menu failed to design while menu title is empty string #2999 fix(plugin-workflow): add missed component #3007 fix: detail block has no data #3003 refactor(plugin-workflow): allow to use function for values when creating node #3002 fix(plugin-workflow): fix configuration drawer close logic #3001 chore: add aria label for workflow table #2995 fix: select item can not be selected in connecting data blocks #2993 chore: optimize error message #2992 refactor(plugin-workflow): change to function #2991 fix(plugin-workflow): fix loop scope variable #2989 chore: optimize error message #2985 fix(formula-field): formula field failed to real-time evaluating and support sub-form #2983 fix: association select should not clearing after config data scope #2984 fix(plugin-workflow): fix node form values when closed #2978 fix: button of details is not refresh when updating record #2977 fix: docs ci #2976 fix: avoid infinite loop #2974 feat: drop table with cascade option #2973 fix: client docs #2965 fix(variable): compat $date #2971 fix: add child action should omit children data #2969 chore: destory collection in share collection plugin #2968 fix: application bug #2958 perf: avoid page lag or stuttering #2964 fix: percent field component should support decimal point #2966 refactor: remove useless code #2961 test: client ui test #2736 fix: import action should not visible when view collection not editable #2957 refactor(plugin-workflow): add exports for client #2960 fix(plugin-workflow): fix canvas style #2959 fix(plugin-workflow): fix variables and form changed #2955 test(custom-request): update test case, avoid failed #2954 fix: create collection report error #2953 fix: target collection pointed to by tableoid is incorrect #2952 feat(plugin-workflow): add zoomer for workflow canvas #2951 feat(map-plugin): supports connecting each point into a line #2216 fix(calendar): render data of next month is incorrect #2942 fix(custom-request): parsed not working when the value of the variable is of type o2m. #2926 fix: improve local storage options #2943 Commits chore(versions): 😊 publish v0.15.0-alpha.1 29457cb chore: update changelog 3b2ad2f fix: env APPEND_PRESET_LOCAL_PLUGINS 5c93750

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

探究微软设置CPU限制和提高运行门槛的动机

在 Windows 11 首个预览版发布之后,虽然微软对 CPU 升级限制和最低设备要求进行了澄清,但依然存在模糊点。微软表示只有第 8 代英特尔芯片、Ryzen 2000 系列以上芯片才能升级 Windows 11 系统。那么之前的设备难道真的就无法运行 Windows 11 了吗?事实可能并非如此。 首先,从此前偷跑的 ISO 镜像以及当前 Windows Insider 分发的 Build 22000.51 镜像,Windows 11 在第 7 代处理器和更低的设备上也运行良好。当从 ISO 镜像安装的时候,Windows 11 绕过 TPM 2.0 限制是非常简单的,只需将一个.dll替换成Windows 10中的一个。根据Albacore在Twitter上的说法,如果你进行清洁安装,Windows 11 甚至不检查 CPU 世代。 对于那些想知道纯净安装 Windows 11 的最低硬件要求是什么(当你从USB启动安装时) 3686MB内存 2个CPU核心 1 GHz基本速度 TPM 1.2 支持 Secure Boot 的固件 如果你是在虚拟机或部署服务器,所有的检查都会被跳过。纯净安装的时候不会检查 CPU。 那么微软为何要对 CPU 代数进行限制? 那么微软为何要这么麻烦呢?首先,CPU代数限制与TPM完全无关,它是为了 "经验原因",正如操作系统安全总监大卫·韦斯顿所指出的:“CPU 是出于经验的原因。和 TPM 的要求是不相关的”。 在过去,只要他们的电脑符合最低规格(大多数第四代、第五代、第六代和第七代设备都符合,只要它们以某种方式启用 TPM),就可以由用户决定他们是否想要一个“伟大的体验”。对于用户来说,如果因为他们完美的第六代设备不符合 CPU 限制而不得不花 1500 美元以上购买一台新机器,这真的是一种“伟大的体验”吗? 那么为何微软从一开始就引起了这些不安,外媒推测原因可能有两个 a:让很多人感到不安,然后升级设备 最被消费者接纳的说法就是微软想迫使用户购买新机器。当然,这对OEM厂商和微软来说都不是一件坏事,但如果有的话,Windows 11可以让人们在Windows 10上停留更长时间。 b:为了运行 Android 应用程序或者其他后续功能 第二种可能涉及到 HVCI,这是一个管理程序的安全措施。它可能会影响到像 Windows Subsystem for Android 这样的东西,它被用来在 Windows 11 上运行 Android 应用程序。如果 Android 应用在旧版 CPU 上表现不佳,微软确实可能非常不愿意允许出现不合格的体验。 而另一个可能性是,微软仍对 Windows 11 有后续的发展计划,这些计划目前并未被披露,需要更现代的 CPU 来运行。从事Azure工作的微软资深人士Carmen Crincoli(他在Twitter上明确表示,他 "代表(他)自己,而不是微软")在Twitter上说,“他的目标是创造一条前进的道路,使生态系统在几年后处于更强大的地位”。 如果ARM上的Windows和Android的Windows子系统、HVCI,以及Windows 11和Windows 10之间的密切关系是这些硬件限制的原因,为什么不直接说出来?即使有最好的意图,有时微软也无法摆脱自己的方式。 【责任编辑:未丽燕 TEL:(010)68476606】

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

SAP BSP, Java Web Project,Android和微信小程序的初始页面设置

CRM Webclient UI Component controller的context DO_INIT_CONTEXT: 然后是Window controller的DO_INIT_CONTEXT: 最后才是view controller的DO_INIT_CONTEXT: Android 微信小程序 (1) onLoad 生命周期函数--监听页面加载(2) onReady 生命周期函数--监听页面初次渲染完成(3) onShow 生命周期函数--监听页面显示(4) onHide 生命周期函数--监听页面隐藏(5) onUnload 生命周期函数--监听页面卸载 打开小程序后会依次执行onLoad,onReady和onShow方法. 前后台切换会分别执行onHide和onShow方法 本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

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部分的功能。

用户登录
用户注册