InfraPub 为您找到相关结果 479

使用 setfacl 管理文件的访问控制列表ACL

如果你是在一个大型组织,你运行了 NFS 或者 Samba 服务给不同的用户,你将会需要灵活的挑选并设置很多复杂的配置和权限去满足你的组织不同的需求。Linux(以及其他Unix等POSIX兼容的操作系统)有一个被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例如,默认情况下你需要维护3个权限组:owner、group和other。 使用ACL后,你可以设置权限给其他用户或组,而不单只是简单的"other"。可以允许定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。 ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS, Btrfs等。如果你不确定你的文件系统是否支持ACL,请参考文档。 首先我们需要安装工具来管理ACL...阅读全文

Proxy-Go v6.6 发布啦

持在 tls 和 kcp 之后进行自定义加密, 也就是说自定义加密和 tls|kcp 是可以联合使用的, 内部采用 AES256 加密, 使用的时候只需要自己定义一个密码即可。 底层压缩高效传输,http(s)\sps\socks 代理在 tcp 之上可以通过自定义加密和 tls 标准加密以及 kcp 协议加密 tcp 数据, 在加密之后还可以对数据进行压缩, 也就是说压缩功能和自定义加密和 tls|kcp 是可以联合使用的。 安全的 DNS 代理,可以通过本地的 proxy 提供的 DNS 代理服务器与上级代理加密通讯实现安全防污染的 DNS 查询。 负载均衡, 高可用,HTTP(S)\SOCKS5\SPS 代理支持上级负载均衡和高可用, 多个上级重复-P 参数即可. 定出口 IP...阅读全文

博文 2018-12-01 09:52:14 Go v6.6 发布 新增智能模式

协议介绍之深入了解 gRPC

。发送请求的时候,只要定 field 在静态 table 里面的索,双方就知道要发送的 field 是什么了。 对于动态 table,初始化为空,如果两边交互之后,发现有新的 field,就添加到动态 table 上面,这样后面的请求就可以跟静态 table 一样,只需要带上相关的 index 就可以了。 同时,为了减少数据传输的大小,使用 Huffman 进行编码。这里就不再详细说明 HPACK 和 Huffman 如何编码了。 小结 上面只是大概列举了一些 HTTP/2 的特性,还有一些,譬如 push,以及不同的 frame 定义等都没有提及,大家感兴趣,可以自行参考 HTTP/2 RFC 文档。 Hello gRPC gRPC 是 Google 基于 HTTP/2 以及...阅读全文

博文 2017-06-22 11:08:48 debian.cn

十条关于 WordPress 安全性的小贴士

面的代码来删除该信息: remove_action('wp_head', 'wp_generator'); 9. 理智选择第三方插件和主题 WordPress 的插件和主题拥有着用户梦寐以求的功能。但一个不好的插件会影响性能、泄露隐私数据或授予使用者另一种访问方式。除非绝对必要,否则最好避免安装代码。而且在进行在线安装时,还要注意验证插件的真实性并在本地服务器上进行测试。 10. 定期更新 WordPress 和插件 WordPress 会自动更新,但主要版本需要一键激活过程。当然,在备份数据库和文件之后再更新。同样地,记得定期检查主题和插件的更新。 风险规避应该在更新在线系统之前检测副本测试服务器上的更新。也就是说,WordPress 更新过程和向后兼容性很少起问题。 还有其他快速和简单...阅读全文

博文 2021-01-28 17:50:29 debian.cn

在树莓派上搭建 Raspbian 系统下的 Kubernetes 集群

成一个三节点的 Kubernetes 集群的创建,可以开始愉快的玩耍了。 K3s 的蛋蛋 如果执行 kubectl get pods --all-namespaces,就会看到其它服务的一些 Pod,比如 Traefik。Traefik 在这里起到是反向代理和负载均衡器的作用,它可以让流量从单个入口进入集群后导到集群中的各个服务。Kubernetes 支持这种机制,但 Kubernetes 本身不提供这个功能,因此 Traefik 是一个不错的选择。...阅读全文

博文 2020-04-12 16:30:23 debian.cn

为什么 Django 能持续统治 Python 开发世界

等数据库都能做到开箱即用。 点击此处了解使用 Django 及其 ORM 进行数据处理的基础知识。 强大的内置模板系统 基于继承系统,Django 的模板允许开发人员通过非常少量的前端代码构建整个动态网站。这得益于使用其他上下文特定元素替换模板的某些元素的选项。 想象一下,你知道你网站的每个页面都会有一个页眉和一个页脚。 现在,您首先需要在网站的基本模板中编写代码。 然后,您可以从应用程序的其他部分动态地更改这两个内容之间的组件。 简单可读的网址 很难正确阅读在PHP os ASP中开发的URL? 使用 Django,您可以创建简单易读的 URL,这对人和搜索擎都有好处。 您也可以使用其他框架创建可读 URL,但没有一个与 Django 一样容易进行 URL 构造。 快速容易的创建RSS和...阅读全文

博文 2017-07-21 14:15:11 debian.cn

Apollo 分布式配置中心详解

据库等。 配置需要治理 权限控制,由于配置能改变程序的行为,不正确的配置甚至能起灾难,所以对配置的修改必须有比较完善的权限控制,不同环境、集群配置管理,同一份程序在不同的环境(开发,测试,生产)、不同的集群(如不同的数据中心)经常需要有不同的配置,所以需要有完善的环境、集群配置管理。 Apollo 配置中心基本使用 Apollo 基础模型 用户在配置中心对配置进行修改并发布;配置中心通知 Apollo 客户端有配置更新;Apollo 客户端从配置中心拉取最新的配置、更新本地配置并通知到应用。 界面概览 上图是 Apollo 配置中心中一个项目的配置首页,在页面左上方的环境列表模块展示了所有的环境和集群,用户可以随时切换。页面中央展示了两个 namespace(application 和...阅读全文

博文 2020-04-12 12:16:26 debian.cn

六个开源软件开发的潜规则

玲珑,面面俱到 作为一个开发者,你很可能希望为开源项目解决一个特定的痛点。或许你想要运行在一个目前还不支持的系统上,抑或你很希望改革社区目前使用的安全技术。想要进新技术,特别是比较有争议的技术,最好的办法就是让人无法拒绝它。你需要透彻地了解底层代码,考虑每个极端情况。在不影响已实现功能的前提下增加新功能。不仅仅是完成就行,还要在特性的完善上下功夫。 糜不有初,鲜克有终 开源社区也有许多玩玩就算的人,但是承诺了就不要轻易失信。不要就因为提交被拒就离开社区。找出原因,修正错误,然后再试一试。当你开发时候,要和整个代码库保持一致,确保即使项目发生变化而你的补丁仍然可用。不要把你的代码留给别人修复,要自己修复。这样可以在社区形成良好的风气,每个人都自己改。 这些“潜规则”看上去很简单,但是还是有许...阅读全文

博文 2017-05-20 10:27:11 debian.cn

漫画赏析:Linux 内核到底长啥样

鹅,它表示着 PID 为 421 的进程,它正在查看文件柜中的文件,这代表系统中正有一个进程在访问文件系统。在右下角有一只小狗,它是看门狗,这代表对文件系统的监控。 一层(地面层) floor 看完了地基,接下来我们来看地基上面的一层,都有哪些东西。 Process Table 在这一层,最人瞩目的莫过于中间的一块垫子,众多小企鹅在围着着桌子坐着。这个垫子的区域代表进程表。 左上角有一个小企鹅,站着,仿佛在说些什么这显然是一位家长式的人物,不过看起来周围坐的那些小企鹅不是很听话——你看有好多走神、自顾自聊天的——“喂喂,说你呢,哇塞娃(171),转过身来”。它代表着 Linux 内核中的初始化(init)进程,也就是我们常说的 PID 为 1 的进程。桌子上坐的小企鹅都在等待状态中,等待工...阅读全文

博文 2021-01-28 17:50:24 debian.cn

Kotlin 一统天下?Kotlin/Native 支持 iOS 和 Web 开发

发行版)。该版本入了一系列新功能,包括对多平台项目的实验性支持 —— 允许开发者在针对 JVM 和 JavaScript 的模块之间共享代码,以及多项对语言方面的改进 —— 包括支持在注释中使用数组字面量。更多关于 1.2 版本新功能的内容,点此查看。 此外,值得关注的就是协程这个特性了。虽然协程仍然被标记为实验性状态,但官方特意说明了这里“实验性”代表的含义。官方表示协程已经完全准备好用于生产环境,他们也已使用协程进行开发,而且也没发现在使用当中出现任何重大问题。之所以仍保持实验性状态,是为了能够对 Kotlin 继续进行设计迭代。根据目前的计划,Kotlin 1.3 将会删除协程的实验性状态。 Kotlin/Native 对 iOS 开发的支持 另外一个重大消息就是 Kotlin...阅读全文

博文 2017-11-05 19:28:14 debian.cn

Linux 系统 vim 编辑器使用简明教程

下使用) /yusi123 //向光标下搜索yusi123字符串 ?yusi123 //向光标上搜索yusi123字符串 n //向下搜索前一个搜素动作 N //向上搜索前一个搜索动作 六、跳至定行(vi命令模式下使用) n+ //向下跳n行 n- //向上跳n行 nG //跳到行号为n的行 G //跳至文件的底部 七、设置行号(vi命令模式下使用) :set nu //显示行号 :set nonu //取消显示行号 八、复制、粘贴(vi命令模式下使用) yy //将当前行复制到缓存区,也可以用 “ayy 复制,”a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。 nyy //将当前行向下n行复制到缓冲区,也可以用 “anyy 复制,”a 为缓冲区,a也可以替换为a到z的...阅读全文

博文 2015-07-25 16:33:04 debian.cn

APISIX Ingress 如何使用 Cert Manager 管理证书

于在 Kubernetes 平台上简化证书管理的软件,它支持对接许多不同的证书源,如 Let's Encrypt 和 HashiCorp Vault。 如果你在使用 Apache APISIX Ingress Controller 时,遇到了证书管理的麻烦,那么使用 Cert Manager 将会是一个不错的选择,本文将介绍如何通过 Cert Manager 来创建证书并对接到 Apache APISIX Ingress Controller。 步骤一:环境准备 如果你希望按照本文的导进行实际的操作,请确保以下环境和工具已准备就绪: 准备一个可用的 Kubernetes 集群,开发环境中,你可以使用 Kind 和 Minikube 安装 kubectl 安装 Helm v3 请注意,下文所...阅读全文

博文 2023-02-09 07:38:06 中文开源技术交流社区

DevOps 越来越流行,2019 年这八大趋势值得关注

生的变化以及转向 Kubernetes 的趋势。 安全性将成焦点——DevSecOps CI/CD 管道让通过快速变更来满足客户的日常需求成为可能。CI/CD 管道也可以进行自动化,而安全性现在已经成为了一个设计约束。从一开始就要考虑安全性,将安全性构建到软件中,而不是作为插件,因为安全性不再是附加功能。 最近,我们看到了 DevSecOps 的上升趋势,DevSecOps 是先在应用程序开发生命周期中注入安全性,从而减少漏洞,并让安全性更接近 IT 和业务目标。这个模型假设每个人都需要对安全性负责,因此减少了职责归咎方面的噪音和困境。 DevOps 和 DevSecOps 之间的区别 AI 和 ML 将促进 DevOps 增长 AI 和 ML 非常适用于 DevOps。它们可以处理大量信...阅读全文

博文 2018-12-10 22:49:57 debian.cn

Debian 成为主流 Linux 操作系统的七个原因

Debian也许是历史最悠久的发行版之一,但很显然,它仍可以教其他发行版好几招。要是没有Debian,Linux领域的境况会大不一样,会黯然失色好多。Debian仍是首屈一的Linux发行版之一,这有诸多令人信服的理由。 我头一回安装Debian是在16年前。自那以后,我试用过无数的其他Linux发行版,甚至有一两个还坚持使用了好几个月,不过我的主要发行版始终是Debian,或者至少是Debian的众多衍生版之一。很熟悉,也许可以在一定程度上解释为什么我青睐它。不过,我青睐它主要源自其他发行版比不过Debian。 我认为至少有七个理由表明Debian仍是我青睐的Linux发行版: 7.软件包管理 Debian中的软件包由dpkg和apt-get来管理。如今,它们管理依赖项的能力不再很独特...阅读全文

博文 2021-01-28 17:50:13 debian.cn

Git 介绍与使用详解

没有中央服务器,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。举个例子,要浏览项目的历史,Git 不需外连到服务器去获取历史,然后再显示出来——它只需直接从本地数据库中读取。 你能立即看到项目历史。 如果你想查看当前版本与一个月前的版本之间入的修改,Git 会查找到一个月前的文件做一次本地的差异计算,而不是由远程服务器处理或从远程服务器拉回旧版本文件再来本地处理。 2.安装、配置Git 2.1GUI可视化界面推荐 1.GitForWindows https://gitforwindows.org/ 自带GIT BASH和GIT GUI 2.TortoiseGit https://tortoisegit.org/download/ 3...阅读全文

博文 2017-02-25 09:00:27 程序员

一位五年工作经验架构师的感悟

可能他们对数据库要求很高吧。但是,我耿耿于怀的是:每个人也许都有些盲点,也许不能以这些盲点去评判一个人。而且,可能还有更好的方式,如何去一个方向,让被人对你感激,感恩。我这些年也参加了些面试,面对一些面试者,即使不通过,我也会善意的去提示下。 于是我又回去了,学了些啥,我不知道了。 第四次面试,是支付宝。当时是一个女的领我进门的,我以为是 HR,两个人坐着有点尴尬,然后这个“HR”就开始问问题,你讲下 spring 吧。然后我内心当时就震惊了:都知道阿里技术好,但是 HR 都会技术,太夸张了吧。面试过程还好,我讲了在第一个公司做的一个技术创新。 第一轮通过了,好激动,第一次过第一轮。 而后,马上第二轮,进来个光头,光头看了下面试题,然后就问了一个技术问题:” 什么是架构”,虽然当时听过架构...阅读全文

博文 2021-01-28 17:50:31 debian.cn

深入了解Docker背后的namespace技术

,OS里进程识别号)namespace是划分那些一个进程可以查看并与之交互的PID的方式。当我们创建一个新的 PID namespace时,第一个进程的PID会被赋值为1。进程退出时,内核会杀死这个namespace内的其他进程。让我们来通过制作 skeleton.c副本开始我们的改变。 > cp skeleton.c pid.c 创建一个新的 PID namespace,我们需要设置clone_flags为 CLONE_NEWPID. 该变量应该看起来像int clone_flags = CLONE_NEWPID | SIGCHLD;,我们在shell中运行 ps aux,然后以相同的参数编译和运行我们的pid.c二进制文件。 > ps aux USER PID %CPU %MEM VSZ...阅读全文

博文 2015-05-17 10:03:00 debian.cn

隐私声明

带类型; 您的IP (Internet Protocol)地址,该地址有时可以显示您所在地理位置; 您在本网站内浏览过的页面、广告和链接; 您访问本网站时发出的访问请求及其日期、时间和荐网址(如有); 通过Cookie标注您的浏览器的唯一性和在本网站的账户信息(包括您访问本网站的各项活动,浏览习惯等);您可以通过修改浏览器设置的方式拒绝cookie; 我们可能会使用浏览器网络存储(包括 HTML 5)和应用程序数据缓存等机制,在您的设备上收集和存储您所浏览过的网页信息; 如果您需要查询、更正您的个人信息或注销账号,请通过 support@debian.cn 与我们联系并提供您的账号和其他验证信息,我们在核实后会回复您的请求。 2. 信息的使用 我们仅在必要的情况下...阅读全文

Jono Bacon: GPL 没落了吗?

客户觉得把他们的代码用 GPL 发布不舒服。 随着 大约 65% 的公司对开源事业做贡献 ,自从 2010 年以后显然开源行业已经来了不少商业兴趣和投资。我相信,我之前说的那些趋势,已经表明这行业不认为 GPL 适合搞开源生意。 连接社区和公司 说真的,GPL 的没落不太让人吃惊,因为有如下原因。 首先,开源行业已经转型升级,它要在社区发展以及……你懂的……真正能赚钱的商业模型中做出均衡,这是它们要做的最重要的决策。在开源思想发展之初,人们有种误解说,“如果你搞出来了,他们就会用”,他们确实会来使用你的软件,但是在很多情况下,都是“如果你搞出来了,他们不是一定要给你钱。” 随着历史的进程,我们看到了许多公司,比如 Red Hat、Automattic、Docker、Canonical...阅读全文

博文 2017-08-04 08:03:43 debian.cn

Go 语言的大版本更新:Go 2.0 安排上了

述。 Go 1 和 Go 2 之间的主要区别在于主导权的不同。谁将影响设计,又该如何做出决策?我们都知道,Go 1 的诞生是小团队努力的结果,受外部影响不大;而到了 Go 2,尤其是经过将近 10 年的发展后,Go 语言的生态已经十分庞大,因此它也更多地受到社区的驱动和影响。经历了这些,Go 开发团队也了解到了更多一开始不知道的与语言特性和库相关的知识 —— 这些都来自于 Go 社区的反馈。 2015年,Go 开发团队入了提案流程,以收集特定类型的反馈:针对语言和库变更方面的提案。由 Go 开发团队高级成员组成的委员会定期审查、分类和决定社区提交的提案。这个流程十分有效,但作为该过程的一部分,他们忽略了所有不向后兼容的提案,只是将其标记至 Go 2。到了2017年,Go 开发团队也停止进行...阅读全文

Intel 为啥要给 ARM 代工

ARM V8 令集授权给 APM、Cavium、AMD、高通、华为、国防科大、华芯通等诸多 IC 设计公司开发 ARM 服务器 CPU,APM 开发出了 ARM 服务器 CPU,采用该芯片的服务器已经在数据中心、互联网服务器等领域有了批量的应用。华为也开发了一款 32 核 A57 的服务器芯片,该项目为核高基项目,而且根据公开资料,下一步将在特殊领域得以推广。国防科大也开发了 FT2000,就 SPEC2006 测试成绩来看,FT2000 的多线程性能已经能与 Intel Xeon E5-2695v3 芯片相媲美。而面对咄咄逼人的 ARM 服务器 CPU,Intel 也专门开发了至强 D 系列低功耗服务器 CPU 来应对。 因此,在这种 ARM 与 X86 互相侵蚀对方传统优势领域的情况下,想...阅读全文

博文 2021-01-28 17:50:26 debian.cn

利用 NAT VPS 进行流量中转

port 端口号如需只允许 UDP 入站:1sudo ufw allow proto udp from 中转机地址 to any port 端口号以上命令中,中转机地址 为 NAT VPS 的公网 IP 地址。其他系统、其他防火墙控制软件的操作与之类似,放行来自 NAT VPS 的 IP 的定端口号即可。 一些大陆 NAT VPS 商注:本小节包含的链接含有 aff 值。CloudIPLC:热门稳定,价格合理,需要及时关注补货情况碳云:价格较低,年付套餐手慢则无AkkoCloud:二次元风格的网站,产品同样抢手 ReferencesHow to open and close ports on RHEL 8 / CentOS 8 LinuxPort ForwardingNAT 主机的正确食用方法通...阅读全文

博文 2021-03-11 21:16:11 Silearner

Debian 相比 Ubuntu 有哪些不同之处

(Community Council)的部分成员。 然而,这种表面上的民主与实际的民主不太一样。Ubuntu的创始人Mark Shuttleworth在管理委员会中占有永久性席位,还拥有决定权。Mark及其Canonical代表对于社区通常拥有否决权,这在过去好几次起了用户反抗。 为贵公司的业务战略做出最佳选择 是专家还是新手?要免费还是专有?要易用性还是控制性?需要平台支持吗?要先进性还是要稳定性?要Unity还是要GNOME?要有节制、有礼貌,还是畅所欲言但民主作风? 你也注意到了,选择Ubuntu还是选择Debian常常归结为哪个方面对你及贵公司来说更为重要。 在你选择其中一个发行版之前,我强烈建议弄清楚你在所有这些两选一方面处于什么样的情况。你可能更看重某个方面。 然而,不管你做出怎样的决定,几乎不...阅读全文

博文 2017-12-22 23:41:07 debian.cn

21款必不可少的Ubuntu桌面应用程序

Linux推特客户软件 Linux推特用户想使用默认浏览器之外的工具来了解“当前新闻”,有许多桌面推特客户软件可供选择,而Corebird无疑是最出色的Linux推特应用程序。 Corebird支持多个推特帐户、桌面通知,还支持推特的大多数功能特性,包括用转发别人的推特消息、无限制的私信等,还有一个清晰、整洁、易于使用的界面。 它还隐藏着几项创新的功能,包括能够快速输入常见短语、将推特消息自动保存在composer框中,还能够让特定的帐户或单词静音,很贴心。 替代方案:Anatine(Qt)和TweetDeck(Web)。 15. Ubuntu Cleaner系统维护工具 虽然开源BleachBit通常是我们推荐的“系统垃圾清理工具”,但是Ubuntu Cleaner的易用性比它更胜一筹,破坏性可...阅读全文

博文 2021-01-28 17:50:19 debian.cn

UCloud 叶理灯 谈:Docker、K8S 和 Serverless

的 K8S 环境不矛盾。 另外一方面,如果说定制的概念是基于 K8S 本身开发体系所提供的插件机制去做二次开发,那每家厂商都要定制,因为 K8S 本身不是一个产品级就绪的环境,需要使用者去适配网络和存储还有计算,因为每个公有云厂商基于自己的 IaaS 去提供 K8S 产品,必然要去开发插件。 综上,向用户应该提供原生的、标准的 K8S 产品,但底层应该基于自身 IaaS 平台去定制,本质还是为了提高用户使用 K8S 的效率,让用户开箱即用。 K8S 落地挑战:改造成本和人才问题 记者:你觉得目前国内云厂商提供的 K8S 集群编排服务在推广方面目前欠缺的是什么?是什么阻碍了客户进一步去使用这些容器集群服务? 叶理灯:K8S 以容器技术为核心、以容器镜像为打包标准的特点,意味着如果要迁移到这个...阅读全文

博文 2019-06-14 08:28:49 debian.cn

Kubernetes源码探疑:Pod IP泄露排查及解决方法

对于云主机与云主机之间,只有轻微差异(小包场景下,pps 会有 3~5% 损耗),而且Pod网络性能各项标(吞吐量,包量,延迟等)不会随着节点规模增大而削减。而Flannel UDP,VXLan模式和Calico IPIP的模式存在明显的性能消耗。Pod能直通公有云和物理云。对于使用公有云和物理云的用户而言,业务上K8S少了一层障碍,多了一份便利。而Flannel的host gw模式下,容器无法访问公有云和物理云主机。 而CNI的工作流程如下所示。 创建Pod网络过程: 删除Pod网络过程: Pod IP 消失问题的排查与解决 为了测试CNI插件的稳定性,测试同学在UK8S上部署了一个CronJob,每分钟运行一个Job任务,一天要运行1440个任务。该CronJob定义如下...阅读全文

深入理解Golang之context

消,将返回nil。Err 如果Done返回的channel没有关闭,将返回nil;如果Done返回的channel已经关闭,将返回非空的值表示任务结束的原因。如果是context被取消,Err将返回Canceled;如果是context超时,Err将返回DeadlineExceeded。Value 返回context存储的键值对中当前key对应的值,如果没有对应的key,则返回nil。可以看到Done方法返回的channel正是用来传递结束信号以抢占并中断当前任务;Deadline方法示一段时间后当前goroutine是否会被取消;以及一个Err方法,来解释goroutine被取消的原因;而Value则用于获取特定于当前任务树的额外信息。而context所包含的额外信息键值对是如何存储的呢...阅读全文

博文 2021-01-27 09:05:27 知乎

如何读懂火焰图?+ 实例讲解程序性能优化 - xuxh120

627891 > 627891.svg -d N 分析持续时间(以秒为单位)。如果未提供启动,恢复,停止或状态选项,则探查器将运行定的时间段,然后自动停止。 -i N 设置分析间隔(以纳秒或者毫秒等作为单位),默认分析间隔为10ms。 -o 转储文件的格式。 等待15s,就会产生结果,生成 627891.svg 文件。vim 627891.svg 并删除第一行,然后下载到本地并使用浏览器打开。 结果如下图,此图俗称火焰图,主要看每个方法的横轴长度,占用横坐标越长的操作,其占用的 cpu 即最长,很直观的。 9.2 性能黑点分析 我们首先发现下图红框内的代码存在严重的性能问题。在append的过程中,获取线程 stack 的过程耗时比较大。从火焰图中分析,耗时占据了接近50%的是,一个logger操作...阅读全文

博文 2022-03-11 10:05:09 博客园

六大算法之三:动态规划【转载】

与Y的最后一个元素相同,这说明该元素一定位于公共子序列中。因此,现在只需要找:LCS(Xn-1,Ym-1)就好,LCS(X,Y)=LCS(Xn-1,Ym-1)+1;如果xn != ym,这下要麻烦一点,因为它产生了两个子问题:LCS(Xn-1,Ym) 和 LCS(Xn,Ym-1)。 动态规划解法:先创建一个解空间即数组,因为给定的是两个字符串即两个一维数组存储的数据,所以要创建一个二维数组,设字符串X有n个值,字符串Y有m个值,需要创建一个m+1*n+1的二维数组,二维数组每个位置(i,j)代表当长度为i的X子串与长度为j的Y的子串他们的最长公共子串,之所以要多创建一个是为了将边界值填入进去,边界值就是第一行跟第一列,X长度为0或者Y长度为0时,自然需要填0,其他位置填数字时,当这两个位置...阅读全文

博文 2021-07-31 07:18:53 CSDN博客