首页 文章 精选 留言 我的

精选列表

搜索[数据库知识开放麦],共10000篇文章
优秀的个人博客,低调大师

云计算必备知识:公有云与私有云

在公共云中,第三方提供商通过Internet向公众提供了一系列服务。来自多个公司或个人客户端的数据可能共享同一台服务器。私有云在原理上类似,但是建立在防火墙之后,并且仅向有限数量的已批准用户提供托管服务。 辅助功能公有云可以将数据复制到许多位置,因此遍布世界各地的用户可以将公有云用作内容分发网络的替代方案。因为公共云是通过Internet访问的,所以它们可能会受到带宽限制,而私有云则是通过以太网LAN高速访问的。 安全因为公共云是可公开访问的,所以拥有敏感数据或需要保证可用性和熟练技术支持的用户可能更喜欢使用私有云。由于访问受限,因此某些人将私有云计算视为解决公共云安全问题的一种方法。 在公共云与私有云之间进行选择 公共云易于实施,并且由于硬件,应用程序和带宽的成本由提供商承担,因此用户只需为使用的内容付费。公共云提供了较低的前期成本和无限的可扩展性。小型企业可能会因为其成本较低而更喜欢公共云,但是在选择公共云之前,用户应先研究其提供商的安全策略。Netflix和Amazon等公司也使用公共云。 私有云的专用硬件使其效率更高。就像公共云一样,它按需提供资源,但是部署在组织的内部IT基础架构中。许多选择使用私有云的企业都对保留已投资的现有基础架构感兴趣。私有云提供高级安全性,可靠的可用性和高度控制。它们可以根据用户的规格进行定制,并且效率高,因为它们是为所服务的用户设计和管理的。私有云非常适合希望提高员工效率和交互性的独立软件供应商(ISV)和大型企业。

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

DevOps知识点——3C知多少

CI / CD是任何DevOps操作的两大基石,这是一种开发软件的方式,旨在生产快速而强大的软件,随时以可持续的方式发布更新。 当例行更改代码时,开发周期会更加频繁、更有意义且更快速。通过此过程,我们可以确保只有已知良好的代码才能成为软件产品的一部分。 Continuous Integration,Continuous Delivery,Continuous Deployment,即持续集成、持续交付和持续部署构成DevOps的3C。在这篇文章中,将从以下几个方面阐述:传统集成、持续集成及过程、持续交付、持续部署、3C优势。 传统集成 传统集成时,团队没有任何类型的中央构建服务器。源代码可以存储在中央源代码存储库中,但是开发人员不必定期提交更改。在计划发布之前,开发人员可能会手动集成更改,这会导致许多问题,例如由于许多开发人员同时集成而带来的最后一刻的冲突,或者由于集成而导致的组件故障。 传统集成的某些缺点如下:开发人员不经常集成代码,导致最后一刻的隐患;反馈回路慢;由于需要修复许多组件而无法轻松解决问题;难以按时交付产品;高成本。为了克服这些问题,CI和CD应运而生,它们从技术角度和业务角度都具有许多优点。 持续集成Continuous Integration 持续集成是一种开发实践,要求开发人员每天多次将代码集成到共享存储库中,以避免代码冲突。 然后,每个签入均由自动构建进行验证,从而使团队可以及早发现问题。这使团队可以花更少的时间进行回溯,而将更多的时间用于构建新功能。 这里的概念是在一个项目上有多个开发人员,以将资源库的主分支保持为最新形式的源代码,因此每个开发人员都可以签出或者从最新的代码中提取,以避免发生冲突。 集成过程 开发人员在自己特定的分支中开发其功能,然后将其新分支推送到协作存储库中。 运行自动化的单元测试和集成测试,并将错误和其他代码质量问题通知团队。一旦自动测试通过,开发人员就会创建拉取请求。开发人员和审阅者可以直接对开发人员提交给主分支的更改发表评论。 完成评审过程并将新代码合并到主分支后,功能开发和错误修复周期将从集成的主分支继续运行。这在团队内(特别是每个人都在处理许多小任务的大型团队)通常会在一天内发生多次,这意味着每个人都在同一个通用代码库上工作。这样就大大减少了代码的差异以及功能开发人员彼此之间不同步而引起的相关问题。 持续交付Continuous Delivery 持续交付是一个更改代码会自动生成、自动测试并为发布到生产环境中做好准备的过程,软件可以在任何时候发布到生产环境中。 持续集成的代码提交将进一步进行性能和功能测试,直到批准发布为止。要有效执行持续交付,需要强大的持续集成。如果正确实施,开发人员将始终拥有已通过标准化测试过程的可部署的构建工件。 这个过程在开发人员提交代码时开始,在登台环境中完成测试后结束,以便代码可以部署到生产环境中。如果在自动测试过程中出现任何错误或Bug,CI工具将自动通过任意一种通知(如电子邮件或短信)告知开发人员。 持续交付通常涉及一个类似于生产的暂存区域,在将更改发布到生产之前,需要手动接受这些更改。 发布到生产环境的决策更多地是业务决策,而不是技术决策。 持续部署Continuous Deployment 持续部署与持续交付非常相似。二者唯一区别是,在持续部署中,所有通过自动化测试阶段的代码提交都将自动发布到生产环境中。 持续部署不需要在登台环境中进行任何手动测试,因为自动化测试将在发行版的所有阶段中执行。 这两种CD都依赖于实时基础设施配置和应用程序监视工具,用以在部署之前发现由于缺乏人工验证而在测试反馈循环中没有被找出的问题。 3C的优势 1、缓解风险 许多开发人员面临这样的问题:应用程序在本地环境可运行,但是在面对更高级可用性时无法运行。这是因为在本地环境和投入生产的地方可能存在很多不同之处。一些质量保证任务如浏览器测试,可以降低将Bug一直传播到活动站点的风险。 2、加快上市时间 持续集成、持续部署和持续交付的应用可以让团队更快地发现故障并快速修复,从而提高软件发布率,加快交付速度。 3、更改可追溯 所有团队成员必须使用相同的源存储库来维护其代码。很明显,可以看到代码库被进行了哪些更改以及由谁进行了更改。 4、提高代码覆盖率 CI服务器检查每一次构建的测试覆盖率。无论你在何处提交未经测试类的新代码,服务器都会显示错误,因为没有足够的代码覆盖率,因此开发人员将致力于增加低层级可用性的覆盖率,以便在部署到更高级的可用性时不会出现与代码覆盖率有关的问题。 5、质量:从优秀到卓越 CI有助于测试人员将项目总时间的50%用于运行集成的标称测试、查找Bug和其他细微问题。这使得测试团队能够更深入地研究问题,测试更多的场景,并产生更好的总体质量和结果。 6、更少的积压工作 将CI/CD纳入团队的开发过程中可以减少积压工作中非关键缺陷的数量。这些小缺陷会在生产前被检测出来,并在发布给最终用户之前被修复。 7、用户满意度 随着部署在连续的周期中运行,这将使团队能够跟踪项目并实时提供反馈,并在必要时修复团队中的缺点。通过一致的评审,新产品的开发将更加精细,并将更加符合终端用户的期望。 8、减少团队成员之间的摩擦 确保跨多个位置的多个开发人员工作的代码始终集成到一个公共存储库中。这避免了由于大量和冲突的代码提交而导致的混乱。 结论 在当今瞬息万变的竞争环境中,开发商正努力将他们的产品快速投放市场,如果没有一套简洁而合适的流程,几乎不可能发布高质量的代码。因而,转向持续集成和持续部署将极大地改变软件开发过程。它将简化整个过程,从而帮助团队提供更稳定、更安全、更优质的产品。 参考文献:Krishnagayathri Gopinath .Continuous Integration And Delivery [OL].(2020-04-27)https://dzone.com/articles/continuous-integration-and-delivery

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

Java虚拟机知识点-class文件

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在Class文件中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙。当遇到需要占用8位字节以上的数据项时,会按照高位在前的方式分割成若干个8位字节进行存储。 ClassFile 结构说明magic:魔数。唯一作用是确定这个文件是否为一个能被虚拟机所接收的class文件。固定值:0xCAFEBABE。minor_version:class文件的副版本号。major_version:class文件的主版本号。constant_pool_count:常量池计数器。constant_pool[constant_pool_count]:常量池。包含字符串常量、类或接口名、字段名和其他常量。常量池每一项都具备相同特征,即第一个字节作为类型标记,用来确定该项格式。access_flags:访问标志。用于表示某个类或接口的访问权限及属性。this_class:当前的类索引。super_class:父类索引。interfaces_count:接口计数器。当前类或接口的直接超的接口数量。interfaces[interfaces_count]:接口表。fields_count:字段计数器。当前class文件的字段成员个数。fields[fields_count]:字段表。methods_count:方法计数器。方法的个数。methods[methods_count]:方法表。attributes_count:属性计数器。属性个数。attributes[attributes_count]:属性表。一个例子对下面的类进行编译生成 Test2.class 。 public class Test2 { public static int i = 1; public static void main() { System.out.println(i); } }通过十六进制查看工具打开 Test2.class 。 根据 ClassFile 结构说明,前面4个字节是魔数oxcafebabe。接下来是次版本号和主版本号ox0000和ox0034,十进制为0和52,52表示JDK1.8,所以JDK版本是1.8.0。 还可以使用Java自带的反编译工具来解析字节码文件。命令 javap -v Test2.class 。 Classfile /E:/CODE/JVM/Test2.class Last modified 2019-7-19; size 219 bytes MD5 checksum 841c66674d71005bc6a97fe6c3b0fb1d Compiled from "Test2.java"public class Test2 minor version: 0 major version: 52 flags: ACC_PUBLIC, ACC_SUPERConstant pool: #1 = Methodref #4.#13 // java/lang/Object."":()V #2 = Fieldref #3.#14 // Test2.i:I #3 = Class #15 // Test2 #4 = Class #16 // java/lang/Object #5 = Utf8 i #6 = Utf8 I #7 = Utf8 #8 = Utf8 ()V #9 = Utf8 Code #10 = Utf8 LineNumberTable #11 = Utf8 SourceFile #12 = Utf8 Test2.java #13 = NameAndType #7:#8 // "":()V #14 = NameAndType #5:#6 // i:I #15 = Utf8 Test2 #16 = Utf8 java/lang/Object{ public int i; descriptor: I flags: ACC_PUBLIC public Test2(); descriptor: ()V flags: ACC_PUBLIC Code: stack=2, locals=1, args_size=1 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: aload_0 5: iconst_1 6: putfield #2 // Field i:I 9: return LineNumberTable: line 1: 0 line 2: 4 }SourceFile: "Test2.java"Java虚拟机限制每个类或接口的常量池最多65535个。类或接口中可声明的字段数最多65535个。类或接口中可声明的方法数最多65535个。类或接口的直接父类接口最多65535个。方法调用时创建的栈帧,其局部变量表中的最大局部变量数位65535个。方法帧中操作数栈的最大深度为65535。方法的参数最多255个。字段和方法名称、字段和方法描述符以及其他常量字符串值的最大长度为65535个字符。数组的维度最大为255维。喜欢这篇文章的可以给笔者点个赞同,关注一下,每天都会分享Java相关文章!还有不定时的福利赠送,包括整理的学习资料,面试题,源码等~~

资源下载

更多资源
Mario

Mario

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

Spring

Spring

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

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

用户登录
用户注册