The Cathedral and the Bazaar
文章平均质量分 71
IT相关知识
十秒耿直拆包选手
这个作者很懒,什么都没留下…
展开
-
Java代理模式
代理模式有静态代理和动态代理两种实现方式。转载 2024-10-26 14:34:35 · 22 阅读 · 0 评论 -
Java:性能篇,解密Stream,提升集合遍历效率的秘诀!
在开始深入讨论之前,我们先来了解一下什么是 Stream。Stream 是 Java 8 中引入的一种新的抽象概念,用于处理数据序列。它为我们提供了一种更加便捷、高效的方式来操作集合数据,实现了函数式编程的特性。在之前的 Java 版本中,我们通常使用迭代器或者循环来处理集合,代码显得冗长且难以阅读。而引入 Stream 后,我们可以采用声明式的方式描述数据的处理流程,使代码更加简洁、清晰。Stream 的本质是一种数据流,它不是一种数据结构,因此不会改变原有的数据集合。转载 2024-10-11 17:10:33 · 59 阅读 · 0 评论 -
【JDK 11】关于 Java 模块系统(module),看这一篇就够了
如果把 Java 8 比作单体应用,那么引入模块系统之后,从 Java 9 开始,Java 就华丽的转身为微服务。模块系统,项目代号Jigsaw,最早于 2008 年 8 月提出(比 Martin Fowler提出微服务还早 6 年),2014 年跟随 Java 9 正式进入开发阶段,最终跟随 Java 9 发布于 2017 年 9 月。那么什么是模块系统?官方的定义是如图-1所示,模块的载体是 jar 文件,一个模块就是一个 jar 文件,但相比于传统的 jar 文件,模块的根目录下多了一个。转载 2024-10-08 20:41:14 · 604 阅读 · 0 评论 -
cmakelist加载Qt模块
Qt编程中,cmakelist会自动添加Core,Gui,Widgets模块,有时需要添加新的Qt的模块。在命令find_package中添加要新增的模块,比如要增加对ui文件的处理。原创 2024-10-04 22:57:36 · 495 阅读 · 0 评论 -
使用CLion编写QT遇到的一些坑(找不到头文件,Build报错)
文件来组织和设置项目的,所以如果我们需要添加诸如Qt这样的第三方库或是改变编译行为,都只要修改。之后再重新Build可以有效解决问题。转载 2024-10-04 18:04:07 · 213 阅读 · 0 评论 -
现代 C++ 中的初始化
序号形式拷贝/直接初始化可用于构造函数初始值列表可用于类内初始值备注1等号拷贝初始化❌✅2等号+花括号={}拷贝初始化❌✅列表初始化3花括号{}直接初始化✅✅推荐!列表初始化,能用于各种初始化场景!4圆括号()直接初始化✅❌存在 Most Vexing Parse 问题、不可用于类内初始值及提供多个初始元素值的列表拷贝初始化:使用形式的初始化。直接初始化:不使用形式的初始化(使用{}或()形式初始化)列表初始化:使用{}转载 2024-09-18 08:35:22 · 212 阅读 · 0 评论 -
Windows系统下编译C++源码并调用
现在很多的C++库都以源码的形式在github网站开源,如果要使用,可以直接下载到本地,添加到工程中调用。也可以将源码编译为动态或静态库文件,然后将库文件添加到工程中。在这里我们将GoogleTest源码编译,然后加到工程中。原创 2024-09-10 15:13:08 · 616 阅读 · 0 评论 -
CMake 保姆级教程(下)(未完待续)
如果项目很大,或者项目中有很多的源码目录,在通过CMake管理项目的时候如果只使用一个CMakeLists.txt,那么这个文件相对会比较复杂,有一种化繁为简的方式就是给每个源码目录都添加一个CMakeLists.txt文件(头文件目录不需要),这样每个文件都不会太复杂,而且更灵活,更容易维护。转载 2024-08-26 13:15:39 · 55 阅读 · 0 评论 -
CMake 保姆级教程(上)
在上面的例子中一共提供了5个源文件,假设这五个源文件需要反复被使用,每次都直接将它们的名字写出来确实是很麻烦,此时我们就需要定义一个变量,将文件名对应的字符串存储起来,在cmake里定义变量需要使用set。# SET 指令的语法是:# [] 中的参数为可选项, 如不需要可以不写VAR:变量名VALUE:变量值# 方式1: 各个源文件之间使用空格间隔# 方式2: 各个源文件之间使用分号;间隔div.c;main.c;mult.c;sub.c)转载 2024-08-25 16:27:06 · 363 阅读 · 0 评论 -
UDP 真的比 TCP 高效吗?
每个 UDP 报文分为 UDP 报头和 UDP 数据区两部分。报头由 4 个 16 位长(2 字节)字段组成,分别说明该报文的源端口、目的端口、报文长度和校验值。UDP 报文格式如图所示。UDP 报文中每个字段的含义如下:源端口: 16bits,发送端的端口。目的端口:16bits,即接收端的端口长度: 16bits,UDP 数据包总的大小:包头+数据,单位:字节。校验值: 16bits,错误检查码,基于算法,计算此 UDP 数据包是否损坏。转载 2024-08-21 18:35:38 · 90 阅读 · 0 评论 -
IDEA:Dangling Javadoc comment
JetBrains对JavaDocs的描述:原创 2024-08-10 22:15:18 · 530 阅读 · 0 评论 -
JetBrains:Wrong tag。注释告警
Wrong tag ‘copyright:’ ,这个是alt + enter 选择 Add @copyright:to custom tags,虽然能解决问题,如果创建一个新项目又回出现这个告警提示。其实这个问题的就是这个在Java Doc里面不存在,才会出现这个问题,所以我们只需要在。原创 2024-08-05 10:52:05 · 276 阅读 · 0 评论 -
JetBrains:XML tag has empty body警告
在xml文件中配置时,因为标签内容为空,出现黄色警告影响观感。通过IDE配置关闭告警。原创 2024-08-02 13:50:36 · 529 阅读 · 0 评论 -
360安全规则集合:详细的 C/C++ 安全编程指南(未完待续)
360 安全规则集合》简称《安规集》,是一套详细的 C/C++ 安全编程指南,由 360 集团质量工程部编著, 将编程时需要注意的问题总结成若干规则,可为制定编程规范提供依据,也可为代码审计或相关培训提供指导意见, 旨在提升软件产品的可靠性、健壮性、可移植性以及可维护性,从而提升软件产品的综合安全性能。《安规集》面向软件开发、测试及相关管理人员,适用于桌面、服务端及嵌入式软件系统。可在协议的许可范围内自由传播和使用《安规集》相关内容,同时也可以根据自身需求对某些规则进行适当的调整和取舍。转载 2024-07-31 21:54:20 · 97 阅读 · 0 评论 -
WPS文字页面横向
如果只需要将文档中的特定页面设置为横向,可以在需要设置横向页面的前一页末尾,点击“插入”选项卡下的“下一页分节符”插入分节符。然后,单独选择要设置为横向的页面,并在“页面布局”中将其方向更改为横向。这样,被分节符分隔的特定页面就会显示为横向,而其他页面则保持原有的纵向或横向设置。要将WPS文字页面设置为横向,可以按照以下步骤操作:12。原创 2024-05-01 21:34:05 · 586 阅读 · 0 评论 -
ASCII码表
原创 2024-03-05 23:00:45 · 423 阅读 · 0 评论 -
这个代码挑战赛火爆外网,十亿行文本处理,冠军只用了1.5s
那么有没有办法可以移除stringAt调用呢?分析代码可以看到将站名生成String对象,是为了在HashMap中存储不同气象站的统计结果数据(作为key)。而HashMap的key的作用是计算hash值判断两个key是否相等如果要避免使用stringAt调用,那么就不得不抛弃HashMap,来实现自定义的哈希表结构。实际上,构造一个指定大小的采用开放地址法指定大小:不需要考虑容量扩张,因为比赛的气象站大小已经确定。转载 2024-02-27 16:48:12 · 610 阅读 · 0 评论 -
设计模式:工厂方法模式
工厂模式属于创建型模式,也被称为多态工厂模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离,有子类决定要实例化的产品是哪一个,把产品的实例化推迟到子类。原创 2024-01-27 22:38:58 · 832 阅读 · 0 评论 -
设计模式:简单工厂模式
工厂设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。工厂模式属于创建型模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。面相对象编程中,万物皆对象。每个对象如果都通过关键字new创建,则会导致对象与其调用者耦合严重。假如更换要new的对象,则所有new对象的地方都需要改变代码,这显然违背了“开-闭原则”。原创 2024-01-27 15:10:11 · 775 阅读 · 0 评论 -
设计模式:简介及基本原则
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。原创 2024-01-27 12:13:42 · 1034 阅读 · 0 评论 -
C++编码规范:JSF-AV(未完待续)
同时,该部分有时还包含大量其它航空标准的内容,例如“只有符合DO-178 A级或SEAL 1级认证的C/C++ 库函数可以在安全攸关(SEAL 1)的代码中使用”。这一点是与其它编程规范完全不同的,它体现了该规范作为洛马内部编程要求的实操性。该编程规范旨在为C++程序员提供指导,使其编写代码都具有良好的编程风格并经过相应的验证,从而保证代码安全性、可靠性、可测试性和可维护性。该编程规范在编写时借鉴了MISRA C 安全编程规范的相关内容,并在其之上增加了针对继承、模板和命名空间等C++特性的编程规范。原创 2024-01-13 09:29:04 · 1113 阅读 · 0 评论 -
位(bit)、字节(byte)的概念
位(bit)是计算机中最基本的概念。位是计算机内部数据储存的最小单位,它只能表示两种状态:0或1。当提到“位”时,通常指的是二进制位,即单个的二进制数值。在计算机中,由于只有逻辑0和逻辑1的存在,因此很多东西、动作、数字都要表示为一串二进制的字码例如: 1001 0000 1101等等。其中每一个逻辑0或者1便是一个位。例如这个例子里的1000 1110共有八个位,它的英文名字叫(bit),是计算机中最基本的单位。原创 2024-01-18 19:56:13 · 600 阅读 · 0 评论 -
Java的二进制数据处理
在Java中,可以使用二进制运算来处理整数类型数据。原创 2024-01-06 21:29:44 · 1204 阅读 · 0 评论 -
C++设计模式:单例模式(饿汉式、懒汉式)
由于在定义静态变量的时候实例化单例类,因此在类加载的时候就已经创建了单例对象,可确保单例对象的唯一性。原创 2023-12-25 23:05:48 · 1313 阅读 · 0 评论 -
C++编码规范(Google版本),未完待续
Google 经常会发布一些开源项目, 意味着会接受来自其他代码贡献者的代码. 但是如果代码贡献者的编程风格与 Google 的不一致, 会给代码阅读者和其他代码提交者造成不小的困扰. Google 因此发布了这份自己的编程风格指南, 使所有提交代码的人都能获知 Google 的编程风格.翻译初衷:规则的作用就是避免混乱. 但规则本身一定要权威, 有说服力, 并且是理性的. 我们所见过的大部分编程规范, 其内容或不够严谨, 或阐述过于简单, 或带有一定的武断性.转载 2023-12-06 22:33:07 · 78 阅读 · 0 评论 -
Google Java编程风格规范
本文档作为 Google 的 Java™ 编程语言源代码编码标准的完整定义。当且仅当它遵守此处的规则时,Java 源文件才被描述为Google 风格。与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。每个Javadoc块都以一个简短的摘要片段开始。这个片段非常重要:它是文本中唯一出现在某些上下文中的部分,比如类和方法的索引。转载 2023-12-22 15:11:57 · 1108 阅读 · 0 评论 -
C++代码风格指南--Google(未完待续)
所谓「前置声明」(forward declaration)是类、函数和模板的纯粹声明,没伴随着其定义.原创 2023-12-17 14:42:31 · 204 阅读 · 0 评论 -
jdk17 下 netty 导致堆内存疯涨原因排查 | 京东云技术团队
1. 流程图:跨数据中心同步数据单 channel 管道同步数据能力不足,导致 tcp 环阻塞。从而导致 netty eventLoop 的消费 WriteTask 任务 (WriteAndFlush) 中的 write 能力大于 flush 能力,因此申请的大量的直接内存存放在 ChannelOutboundBuffer#unflushedEntry 链表中没法 flush。转载 2023-09-10 17:08:37 · 353 阅读 · 0 评论 -
Python 编码规范(Google)
Python 风格规范(Google)本项目并非 Google 官方项目, 而是由国内程序员凭热情创建和维护。如果你关注的是 Google 官方英文版, 请移步以下代码中表示推荐,表示不推荐。转载 2023-09-08 22:42:13 · 118 阅读 · 0 评论 -
RK61键盘热键切换
如题:原创 2023-09-03 16:26:52 · 473 阅读 · 0 评论 -
Git 安装设置
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。原创 2023-07-15 21:16:26 · 469 阅读 · 0 评论 -
国内maven仓库镜像地址
华为云:https://repo.huaweicloud.com/repository/maven/中国科技大学:http://mirrors.ustc.edu.cn/maven/maven2/网易:http://maven.netease.com/repository/public/南京大学:http://maven.nju.edu.cn/repository/北京理工大学:http://mirror.bit.edu.cn/maven/阿里云:http://maven.aliyun.com/原创 2023-07-07 15:23:44 · 3460 阅读 · 3 评论 -
关闭vim自动保存功能
转载:http://blog.csdn.net/dadoneo/article/details/6078571以下方法对于VIM/VI是一样的;都可以达到关闭自动备份的效果:默认情况下使用Vim编程,在修改文件后系统会自动生成一个带~的备份文件,看上去又乱又讨人厌。 怎么让Vim不自动生成这些备份文件呢? 1. 找到你的Vim安装目录,如果是在Windows下默认路径安转载 2018-01-29 11:28:41 · 1588 阅读 · 0 评论 -
VIM个人设置
_vimrc文件中添加的配置信息:set number set cursorlineset guifont=Courier\ New:h12set lines=35 columns=118colorscheme duoduoduoduo配置信息:" Vim color file - duoduo" Maintainer: Yggdroot原创 2018-02-03 16:56:33 · 529 阅读 · 0 评论 -
win7可关闭服务
Adaptive brightness如果你没有使用触摸屏一类的智能调节屏幕亮度的设备,该功能就可以放心禁用。ApplicationLayer Gateway Service为Internet连接共享提供第三方协议插件的支持。ApplicationManagement为活动目录的智能镜像(IntelliMirror)组策略程序提供软件的安装、卸载和枚举等转载 2013-06-17 22:33:40 · 2688 阅读 · 0 评论 -
常用学习、下载网站集合(持续更新中)
RHEL下载http://rhel.ieesee.net/uingei/原创 2012-11-01 05:25:33 · 557 阅读 · 0 评论 -
IPv4地址分类及特征 (转载qinggzha)
IP地址后斜杠和数字代表的意思#favor_form{width:200px;}#favor_form p {color:#666;}#favor_form form{height:60px;width:200px;}#favor_form form ._favor_input{display:block;margin:2px 0;width:199px;}#favor_form form .转载 2012-09-22 13:38:58 · 1504 阅读 · 0 评论