
代码大全
文章平均质量分 86
有梦想的攻城狮
既然选择了远方,留给别人的就只能是背影
展开
-
Java20新增特性
Java 20是在2023年3月21日发布的,发布公司是甲骨文。这是标准Java的最新升级,提供了一系列的新特性和改进,以帮助开发者更高效地编写和维护代码。Java 20版本虽然带来了很多新的特性和改进,但也存在一些问题。其中最主要的问题是,由于Java 20的发布时间比较晚,导致很多开发者还没有来得及适应这个新版本,同时一些开发工具和框架也还没有完全支持Java 20的特性。此外,Java 20中的一些新特性也可能会带来一些不兼容性和复杂性,需要开发者额外的学习和适应。原创 2023-11-19 00:04:08 · 1444 阅读 · 0 评论 -
DHCP协议详解
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。DHCP的分配方式包括自动分配、手工分配和动态分配。DHCP服务器是运行有DHCP服务器端软件的特殊电脑,而普通电脑中都内置有DHCP客户端模块。原创 2023-11-19 00:02:34 · 1100 阅读 · 0 评论 -
ProtocolBuffers(protobuf)详解
Protocol Buffers(通常简称为protobuf)是Google公司开发的一种数据描述语言,它能够将结构化数据序列化,可用于数据存储、通信协议等方面。这种序列化格式很灵活、高效、自动化,不依赖于语言和平台并且可扩展性极强。使用protobuf时,您只需将数据结构定义一次(使用.proto文件定义),便可以使用特别生成的源代码轻松地使用不同的数据流完成对这些结构数据的读写操作,即使使用不同的语言(protobuf的跨语言支持特性)。原创 2023-11-17 00:46:32 · 4178 阅读 · 0 评论 -
数据库连接池HikariCP中的FastList快在哪里
背景现在非常流行的一款数据库连接池工具HikariCP经常会出现在我们的日常工作中,这块工具的最大特点就是快,它在提高提升速度方面做了非常多的努力,其中的一项就是通过自己实现的FastList来代替了Java中自带的ArrayList来对部分数据进行处理,那我们这个地方就会有一个问题,FastList到底快在哪里呢?带着这个疑问,我们来看一下FastList的源码,看看它到底做了那些优化。版本信息我当前查看的POM文件的版本是5.0.2-SNAPSHOT源码解读在FastList类的最上面,有一行原创 2022-04-22 11:06:39 · 1243 阅读 · 4 评论 -
List中set方法和add方法的区别
前言在Java中的常用的集合接口List中有两个非常相似的方法:E set(int index, E element);void add(int index, E element);这两个方法都是在集合的指定位置插入指定的元素,那么这两个方法到底有什么区别呢?接下来我们通过ArrayList这个我们常用集合实现来看一下这两个方法的差异相同点首先我们来看一下这两个方法在ArrayList中的相同点他们都会在集合的指定位置插入新的元素,例如下面的例子:#在集合的第2位插入一个 F# 通过a原创 2022-04-14 02:29:44 · 3054 阅读 · 1 评论 -
fastjson判断JSON字符串是Object还是List<Object>
引言日常开发中经常需要对JSON字符串进行处理,处理的最多的便是进行JSON和对象之间的转换,由于对于集合对象和普通对象,JSON转对象的方法是不同的,我们需要根据不同情况来选择不同的方法进行对应的转换,下面的这段代码就是我在开发中碰到的对于如果不确定要处理的字符串是一个集合对象还是普通对象的时候的处理方法,希望可以给大家一些借鉴,抛砖引玉代码{ Object object = JSON.parse(jsonStr); if ( object instanceof JSONObject原创 2020-12-23 01:32:48 · 5677 阅读 · 0 评论 -
linux系统更新profile文件立即生效
我们在linux系统中更新了配置文件profile文件以后,并不会立即生效,需要我们执行一下相关的命令才会立即生效:方法一:让/etc/profile文件修改后立即生效 ,可以使用如下命令: # . /etc/profile 注意: . 和 /etc/profile 有空格方法二:让/etc/profile文件修改后立即生效 ,可以使用如下命令: # source /etc/profile...转载 2018-09-27 20:05:14 · 36194 阅读 · 0 评论 -
软件架构的典型组成部分-可伸缩性
可伸缩性是指系统增长以满足未来需求的能力。架构应该描述系统如何应对用户数量、服务器数量、网络节点数量、数据库记录数、数据库记录的长度、交易量等的增长。如果预计系统不会增长,而且可伸缩性不是问题,那么架构应该明确地列出这一假设。翻译 2016-05-05 23:39:41 · 1172 阅读 · 0 评论 -
软件架构的典型组成部分-性能
如果需要关注性能,就应该在需求中详细定义性能目标。性能目标可以包括资源的使用,这时,性能目标也应该详细定义资源(速度、内存、成本)之间的优先顺序。架构应该提供估计的数据,并解释为什么架构师相信能达到性能目标。如果某些部分存在达不到性能目标的风险,那么架构也应该指出来。如果为了满足性能目标,需要在某些部分使用特定的算法或者数据类型,架构也应该说清楚。架构也可以包括各个库或各个对象的空间和时间预算。翻译 2016-05-04 21:50:32 · 738 阅读 · 0 评论 -
软件架构的典型组成部分-安全性
架构应该描述实现设计层面和代码层面的安全性的方法。如果先前尚未建立威胁模型(threat model),那么就应该在架构阶段建立威胁模型。在制定编码规范的时候应该把安全性牢记心中,包括处理缓冲区的方法、处理非受信(untrudted)数据(用户输入的数据、cookies、配置数据(文件)和其他外部接口输入的数据)的规则、加密、错误信息的细致程度、保护内存中的密码数据,以及其他事项。翻译 2016-04-28 21:53:33 · 1379 阅读 · 0 评论 -
软件架构的典型组成部分-资源管理
架构应该描述一份管理稀缺资源的计划。稀缺资源包括数据库连接、线程、句柄等,在内存受限的应用领域,如驱动程序开发和嵌入式系统中,内存管理是架构应该认真对待的另一个重要领域。架构应该估算在正常情况下和极端情况下的资源使用量。在简单的情况下,估算数据应该说明:预期的实现环境(运行环境)有能力提供所需的资源。在更复杂的情况中,也许会要求应用程序更主动地管理其拥有的资源。如果是这样,那么“资源管理器”应该和系统的其他部分一样进行认真的架构设计。翻译 2016-04-28 21:40:54 · 545 阅读 · 0 评论 -
软件架构的典型组成部分-用户界面设计
用户界面常常在需求阶段进行详细说明。如果没有,就应该在软件架构中进行详细说明。架构应该详细定义Web页面格式、GUI、命令行接口等的主要因素。精心设计的用户界面架构决定了最终做出来的是“人见人爱的程序”还是 “没人爱用的程序”。翻译 2016-04-25 22:34:42 · 977 阅读 · 0 评论 -
软件架构的典型组成部分-业务规则
如果架构依赖于特定的业务规则,那么它就应该详细描述这些规则,并描述这些规则对系统设计的影响。例如,假定要求系统遵循这样一条业务规则:客户信息过时的时间不能超过30秒。在此情况下,架构就应该描述这条规则对架构采用的“保持客户信息及时更新且同步”的方法的影响。翻译 2016-04-25 22:24:15 · 1368 阅读 · 0 评论 -
软件架构的典型组成部分-数据设计
架构应该描述所用到的主要文件和数据表的设计。它应该描述曾经考虑过的其他方案,并说明做出选择的理由。如果应用程序要维护一个客户ID的列表,而架构师决定使用顺序访问的列表来表示ID表,那么文档就应该解释为什么顺序访问的列表比随机访问的列表、堆栈、散列表要好。在架构期间,这些信息让你能够洞察架构师的思想。在维护阶段,这种洞察力是无价之宝。离开它,你就像看一部没有字幕的外语片。数据通常只应该由一个子系统或一个类直接访问:例外的情况是透过访问器类或者访问器子程序-以受控或者抽象的方式来访问数据。数翻译 2016-04-25 00:03:14 · 761 阅读 · 0 评论 -
软件架构的典型组成部分-主要的类
架构应该详细定义所用的主要类。它应该指出每个主要类的责任,以及该主要类如何与其他类进行交互。它应该包含对类的继承体系、状态转换、对象持久化等的描述。如果系统足够大,它应该描述如何将这些类组织成一个个的子系统。架构应该记述曾经考虑过的其他类设计方案,并给出选用当前的组织结构的理由。架构无须说明系统中的每一个类。瞄准80/20法则:对那些构成系统的80%的行为和20%的类进行详细的说明。翻译 2016-04-24 16:32:32 · 708 阅读 · 0 评论 -
软件架构的典型组成部分-程序组织
系统架构首先要以概括的形式对有关系统做一个综述。如果没有这种综述,要想将成千的局部图片(或十多个单独的类)拼成一幅完整的图画是相当伤脑筋的。如果系统是小小的只有12块的智力拼图玩具,你那一岁的小孩也能在眨眼的功夫解决它们。不过吧12个子系统拼到一起就要困难一些啦,而且如果你不能将它们拼起来,那么就无法理解你正在开发的这个类对系统有何贡献。翻译 2016-04-24 11:40:46 · 1619 阅读 · 0 评论 -
架构的典型组成部分
很多组成部分是优秀的系统架构所共有的。如果你自己构建整个系统,那么在架构工作会与更详细的设计工作有重叠的部分。在这种情况下,你至少应该思考架构的每个组成部分。如果你目前从事的系统的架构是别人做的,你应该能够不费力地找到其中重要的组成部分。在这两种情况下,你都需要考虑一下的架构组成部分:翻译 2016-04-17 22:15:24 · 784 阅读 · 0 评论 -
软件开发中需求的先决条件
“需求”详细描述软件系统应该做什么,这是达成解决方案的第一步。“需求活动”也称为“需求开发”、“需求分析”、“分析”、“需求定义”、“软件需求”、“规格书”、“功能规格书”等。一:为什么要有正式的需求要求一套明确的需求,这点很重要,理由如下:1、明确的需求有助于确保用户(而不是程序员)驾驭系统的功能。如果需求明确,那么用户就可以自行评审,并进行核准。否则,程序员就常常会在编程期间自行决翻译 2016-04-09 22:19:38 · 1257 阅读 · 0 评论 -
软件开发中前期准备的重要性
使用高质量的实践方法是那些能创造高质量软件的程序员的共性。这些高质量的实践方法在项目的初期、中期、末期都强调质量。 如果你在项目的末期强调质量,那么你会强调系统测试。当提到软件质量保证的时候,许多人都会想到测试。但是测试只是完整的质量保证策略的一部分,而且不是最有影响的部分。测试是不可能检查出诸如“制作了一个错误的产品这样”或者“使用错误的犯法制作正确的产品”之类的缺陷的。这样的缺陷必须在测试之前解决,更确切的说是在构建活动之前。翻译 2016-03-29 22:51:48 · 2648 阅读 · 0 评论 -
JAVA中String和byte[]和InputStream之间的相互转换
在项目开发过程中,我们经常需要对String、byte数组、InputStream进行一些必要的转换,今天,我们分别的来实现一下这些不同类型的数据的转换原创 2016-03-29 15:16:17 · 2798 阅读 · 0 评论 -
软件架构的条件(architecture prerequisite)
软件架构(software architecture)是软件设计的高层部分,是用于支撑更细节的设计的框架。架构也称为“系统架构(system architecture)”、“高层设计(high-level design)”、“顶层设计(top-level design)”。通常会用一份独立的文档描述架构,这份文档称为“架构规格书(architecture specification)”或者“顶层设计”。翻译 2016-03-26 00:34:58 · 883 阅读 · 0 评论 -
软件构建的重要性
提高软件的质量和开发者的生产率都是十分重要的。当今世界上许多大项目都使用了软件。互联网、电影特技、宇宙飞船、金融分析......这只是一小部分例子,现在的生活基本上已经无法离开软件的使用了。这些项目中,乃至一些最常见的项目,都将从软件开发开发时间的改进中受益,因为它们的基础很大部分都是一样的。现在我们就来看一下软件构建的重要性:一、构建活动是软件开发的主要组成部分根据项目规模的不同,构建活翻译 2016-03-24 21:58:56 · 2551 阅读 · 0 评论 -
软件构建的过程
你一定知道“构建(construction)”一次在软件开发领域以外的含义。“构建”就是“建筑工人(construction workers)”在建设一栋房屋,一所学校,乃至一座摩天大楼时所做的工作。在你年轻时,可能也曾用“硬纸板(construction paper)”构建过什么东西吧。按照一般的用法,“构建”是指建设的过程。构建过程可能包含有计划、设计、检查工作的一些方面,但在多数时候,“构建”就是指创建失误过程中动手的那些部分。翻译 2016-03-24 00:40:58 · 3487 阅读 · 0 评论