前端技术
HTML
CSS
Javascript
前端框架和UI库
VUE
ReactJS
AngularJS
JQuery
NodeJS
JSON
Element-UI
Bootstrap
Material UI
服务端和客户端
Java
Python
PHP
Golang
Scala
Kotlin
Groovy
Ruby
Lua
.net
c#
c++
后端WEB和工程框架
SpringBoot
SpringCloud
Struts2
MyBatis
Hibernate
Tornado
Beego
Go-Spring
Go Gin
Go Iris
Dubbo
HessianRPC
Maven
Gradle
数据库
MySQL
Oracle
Mongo
中间件与web容器
Redis
MemCache
Etcd
Cassandra
Kafka
RabbitMQ
RocketMQ
ActiveMQ
Nacos
Consul
Tomcat
Nginx
Netty
大数据技术
Hive
Impala
ClickHouse
DorisDB
Greenplum
PostgreSQL
HBase
Kylin
Hadoop
Apache Pig
ZooKeeper
SeaTunnel
Sqoop
Datax
Flink
Spark
Mahout
数据搜索与日志
ElasticSearch
Apache Lucene
Apache Solr
Kibana
Logstash
数据可视化与OLAP
Apache Atlas
Superset
Saiku
Tesseract
系统与容器
Linux
Shell
Docker
Kubernetes
[分布式系统中的PostgreSQL集群部...]的搜索结果
这里是文章列表。热门标签的颜色随机变换,标签颜色没有特殊含义。
点击某个标签可搜索标签相关的文章。
点击某个标签可搜索标签相关的文章。
Go Gin
...流量控制手段,它允许系统在单位时间内处理的请求数量不超过某个阈值。哎呀,你瞧这招儿挺机灵的!它能帮咱们解决一个大难题——就是那些疯了似的并发请求,就像一群蚂蚁围攻面包,瞬间就把服务器给淹没了。这样不仅能让我们的服务器喘口气,不至于被这些请求给累趴下,还能给那些没权没份的家伙们上上锁,别让他们乱用咱们的API,搞得咱们这边乱七八糟的。这招儿,既保护了服务器,又守住了规矩,真是一举两得啊! gin-contrib/ratelimit 提供了一种简单且灵活的方式来配置和应用速率限制规则。它支持多种存储后端,包括内存、Redis 和数据库等,以适应不同的应用场景需求。 三、安装与初始化 首先,确保你的 Go 环境已经配置好,并且安装了 gin-contrib/ratelimit 库。可以通过以下命令进行安装: bash go get github.com/gin-contrib/ratelimit 接下来,在你的 Gin 应用中引入并初始化 ratelimit 包: go import ( "github.com/gin-contrib/ratelimit" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() // 配置限流器 limiter := ratelimit.New(ratelimit.Config{ AllowedRequests: 5, // 允许每分钟最多5次请求 Duration: time.Minute, }) // 将限流器应用于路由 r.Use(limiter) // 定义路由 r.GET("/api", func(c gin.Context) { c.JSON(200, gin.H{"message": "Hello, World!"}) }) r.Run(":8080") } 四、高级功能与自定义 除了基本的速率限制配置外,gin-contrib/ratelimit 还提供了丰富的高级功能,允许开发者根据具体需求进行定制化设置。 - 基于 IP 地址的限制: go limiter := ratelimit.New(ratelimit.Config{ AllowedRequests: 5, Duration: time.Minute, PermitsBy: ratelimit.PermitByIP, }) - 基于 HTTP 请求头的限制: go limiter := ratelimit.New(ratelimit.Config{ AllowedRequests: 5, Duration: time.Minute, PermitsBy: ratelimit.PermitByHeader("X-User-ID"), }) - 基于用户会话的限制: go limiter := ratelimit.New(ratelimit.Config{ AllowedRequests: 5, Duration: time.Minute, PermitsBy: ratelimit.PermitBySessionID, }) 这些高级功能允许你更精细地控制哪些请求会被限制,从而提供更精确的访问控制策略。 五、实践案例 基于 IP 地址的限流 假设我们需要限制某个特定 IP 地址的访问频率: go limiter := ratelimit.New(ratelimit.Config{ AllowedRequests: 10, // 每小时最多10次请求 Duration: time.Hour, PermitsBy: ratelimit.PermitByIP, }) // 在路由上应用限流器 r.Use(limiter) 六、性能考量与优化 在实际部署时,考虑到速率限制的性能影响,合理配置限流参数至关重要。哎呀,你得注意了,设定安全防护的时候,这事儿得拿捏好度才行。要是设得太严,就像在门口挂了个大锁,那些坏人进不来,可合法的访客也被挡在外头了,这就有点儿不地道了。反过来,如果设置的门槛太松,那可就相当于给小偷开了个后门,让各种风险有机可乘。所以啊,找那个平衡点,既不让真正的朋友感到不便,又能守住自家的安全,才是王道!因此,建议结合业务场景和流量预测进行参数调整。 同时,选择合适的存储后端也是性能优化的关键。哎呀,你知道的,在处理那些超级多人同时在线的情况时,咱们用 Redis 来当存储小能手,那效果简直不要太好!它就像个神奇的魔法箱,能飞快地帮我们处理各种数据,让系统运行得又顺溜又高效,简直是高并发环境里的大救星呢! 七、结论 通过集成 gin-contrib/ratelimit,我们不仅能够有效地管理 API 访问频率,还能够在保障系统稳定运行的同时,为用户提供更好的服务体验。嘿,兄弟!业务这玩意儿,那可是风云变幻,快如闪电。就像你开车,路况不一,得随时调整方向,对吧?API安全性和可用性这事儿,就跟你的车一样重要。所以,咱们得像老司机一样,灵活应对各种情况,时不时地调整和优化限流策略。这样,不管是高峰还是低谷,都能稳稳地掌控全局,让你的业务顺畅无阻,安全又高效。别忘了,这可是保护咱们业务不受攻击,保证用户体验的关键!希望本文能够帮助你更好地理解和应用 gin-contrib/ratelimit,在构建强大、安全的 API 时提供有力的支持。
2024-08-24 16:02:03
110
山涧溪流
Mongo
...更快,从而提高了整体系统性能。 索引策略调整:为了适应不同场景的需求,MongoDB 4.4提供了更加灵活的索引策略选择。开发人员可以根据实际应用情况,基于读写模式、数据分布和查询频率等因素,选择最适合的索引类型和结构,以达到最佳的性能表现。 安全性与合规性:在提升性能的同时,MongoDB 4.4也加强了安全性,增强了数据保护措施。这包括对敏感数据的加密存储、访问控制的细化以及对潜在安全漏洞的修补,确保了数据在存储和传输过程中的安全,符合现代数据保护法规的要求。 综上所述,MongoDB 4.4版本不仅在索引管理上取得了显著进展,还在其他多个领域实现了技术突破,为用户提供了一个更为强大、安全、高效的数据库平台。对于依赖MongoDB进行数据管理和分析的企业和开发者来说,了解并充分利用这些更新,将有助于优化业务流程,提升数据分析效率,进而驱动业务增长。 --- 通过这次“延伸阅读”,我们可以看到MongoDB作为一款广泛使用的NoSQL数据库,在持续优化其功能以满足日益增长的性能需求和安全性要求。这种不断迭代的技术进步不仅反映了MongoDB团队致力于提升用户体验和解决实际问题的决心,也为广大开发者和数据库管理员提供了更多创新的工具和策略,以应对复杂的数据管理和分析挑战。
2024-10-14 15:51:43
88
心灵驿站
Lua
...发者能够在不增加过多系统负担的情况下,轻松地添加脚本逻辑。这种灵活性尤其体现在游戏开发中,开发者可以快速迭代和调整游戏机制,如动态生成关卡、实现复杂的AI行为或调整游戏平衡等。Lua的语法简单直观,易于学习,即便是对脚本语言不甚熟悉的开发者,也能迅速上手,加速开发进程。 2. 社区与资源丰富性 Lua拥有庞大的开发者社区,这意味着开发者能够轻松找到相关的库、教程和解决方案。例如,LÖVE框架就是一个基于Lua的游戏开发引擎,它提供了丰富的图形渲染、音频处理和事件管理功能,极大地降低了游戏开发的技术门槛。此外,大量的游戏开发资源和社区支持,使得开发者能够快速定位问题、获取灵感,甚至直接复用已有代码片段,从而节省时间成本。 3. 性能优化与内存管理 Lua本身具备高效的内存管理和垃圾回收机制,能够有效地处理游戏中的大量数据和实时事件。这对于资源密集型的游戏开发尤为重要,能够确保游戏在多种硬件平台上流畅运行。同时,Lua的跨平台特性使得开发者无需重新编译代码即可在不同的操作系统上部署游戏,大大减少了开发和维护的成本。 4. 结合现代开发趋势 随着云游戏、虚拟现实和增强现实技术的发展,Lua的应用范围也在不断扩大。开发者可以通过Lua与现代游戏引擎(如Unity、Unreal Engine)结合,实现在云端运行游戏、创建沉浸式体验或者开发跨平台应用。这种融合不仅扩展了Lua的应用场景,也为游戏开发者提供了更多创新的可能性。 5. 总结 Lua凭借其灵活性、易用性、丰富的社区资源、高效的性能管理和适应现代开发趋势的能力,在现代游戏开发中扮演着不可或缺的角色。随着技术的不断进步,Lua有望继续在游戏行业发挥重要作用,推动游戏开发向更高水平迈进。对于游戏开发者而言,掌握Lua语言,不仅能够提升个人技能,还能为项目带来更高的效率和创新空间。
2024-09-19 16:01:49
92
秋水共长天一色
Gradle
...在软件开发领域,构建系统的选择直接影响着项目的开发效率、质量和稳定性。作为一款强大的自动化构建工具,Gradle 在大型和复杂项目中发挥着关键作用。然而,面对日益增长的项目规模和复杂性,如何在保持高效率的同时,确保构建过程的稳定性和可靠性,成为了一个值得深入探讨的话题。 一、依赖管理的挑战与对策 在大型项目中,依赖管理成为了构建过程中的一个重要挑战。随着项目功能的不断扩展,引入的外部依赖越来越多,这不仅增加了代码的耦合度,还带来了版本冲突的风险。为解决这一问题,开发者可以采用以下策略: 1. 集中管理依赖:使用如 dependencyManagement 特性,统一管理项目依赖的版本,减少版本冲突的可能性。 2. 依赖树可视化:借助 Gradle 插件如 dependencyInsight,生成依赖树图,直观地展示依赖关系,便于查找和解决冲突。 3. 版本锁定与自动更新:通过配置锁定文件(如 pom.xml 或 settings.gradle),限制特定依赖的版本,同时设置自动化脚本来定期检查和更新依赖,确保项目始终运行在稳定且兼容的状态下。 二、构建优化与性能提升 构建过程的效率直接影响到开发者的生产力。针对这一问题,可以从以下几个方面着手优化: 1. 构建缓存:合理利用 Gradle 缓存机制,避免重复构建相同的任务,显著缩短构建时间。 2. 并行构建:在多核处理器上利用 Gradle 的并行构建特性,提高构建速度。合理划分构建任务,最大化利用多线程的优势。 3. 增量构建:针对只修改了一部分代码的情况,仅构建修改的部分,避免不必要的全量构建,节省时间和资源。 三、持续集成与持续部署的整合 为了保证代码质量,持续集成(CI)和持续部署(CD)成为了现代开发流程的重要组成部分。将 Gradle 与 CI/CD 工具(如 Jenkins、GitLab CI)结合,实现自动化构建、测试和部署流程,能够极大地提升项目的交付速度和质量。 1. 自动化测试:集成自动化测试框架,如 JUnit、TestNG,确保每次构建前后的代码质量。 2. 集成环境一致性:确保开发、测试和生产环境的高度一致性,通过 Gradle 插件如 spring-boot-maven-plugin 或 maven-surefire-plugin 等,实现跨环境的部署一致性。 3. 一键部署:利用 CI/CD 工具的部署功能,实现从构建到部署的无缝衔接,提升部署效率和可靠性。 四、未来趋势与展望 随着微服务架构、云原生应用的兴起,Gradle 的角色和应用范围正在不断扩大。未来,开发者将面临更多复杂性和变化,对构建工具的要求也将更加多元化。因此,持续学习和适应新的技术和实践,对于保持项目的竞争力至关重要。 结语 在复杂项目中高效利用 Gradle 进行构建与管理,不仅要求开发者具备深厚的技术功底,还需要灵活运用最佳实践和工具,不断优化构建流程。通过上述策略的实施,不仅能够提升项目的构建效率和稳定性,还能促进团队协作,加速产品的迭代和交付,最终推动业务目标的实现。
2024-07-29 16:10:49
497
冬日暖阳
Kotlin
...语法和对Java生态系统的兼容性,吸引了众多开发者。随着技术的不断进步,开发者们面临的挑战也日益多样化,其中之一便是如何在日益复杂的项目中有效地管理和处理参数错误。本文旨在探讨Kotlin在现代软件开发中的角色与挑战,特别是在面对非法参数异常时的应对策略和最佳实践。 Kotlin的角色与优势 Kotlin的出现,旨在解决Java语言的一些局限性,如静态类型检查、更清晰的语法、以及更好的控制流处理。在现代软件开发中,Kotlin不仅被用于构建原生Android应用,还在企业级应用、Web服务、后端开发等领域找到了自己的位置。它的类型安全性有助于减少运行时错误,使得开发过程更加高效和可靠。 面对非法参数的挑战 尽管Kotlin在设计上注重类型安全,但在实际开发中,非法参数异常仍然可能因各种原因发生,如用户输入错误、配置文件解析错误、或数据传输过程中的数据类型不匹配等。这些问题不仅影响用户体验,还可能导致应用崩溃或产生不可预测的行为。 应对策略与最佳实践 1. 输入验证:在接收外部输入时,实施严格的数据验证,确保所有参数符合预期的类型和格式。使用Kotlin的类型系统和模式匹配特性,可以实现简洁而强大的验证逻辑。 2. 类型转换与异常处理:合理利用Kotlin的类型转换和异常处理机制,如as?操作符和try-catch块,优雅地处理类型不匹配或转换失败的情况。 3. 依赖注入:采用依赖注入(DI)模式可以降低组件间的耦合度,使得在不同环境中复用代码更加容易,同时也便于进行测试和调试。 4. 单元测试与集成测试:通过编写针对不同场景的单元测试和集成测试,可以在开发早期发现并修复非法参数相关的错误,提高代码质量和稳定性。 5. 代码审查与持续集成:引入代码审查流程和自动化持续集成/持续部署(CI/CD)工具,可以帮助团队成员及时发现潜在的代码问题,包括非法参数异常的处理。 结论 在面对非法参数异常等挑战时,Kotlin提供了丰富的工具和机制,帮助开发者构建健壮、可维护的应用。通过采用上述策略和最佳实践,不仅可以有效减少错误的发生,还能提升代码的可读性和可维护性。随着Kotlin在更多领域的广泛应用,未来在处理类似问题时,开发者将能够更好地利用语言特性,实现更高的开发效率和产品质量。
2024-09-18 16:04:27
113
追梦人
MySQL
...爆发了一起针对数据库系统的网络攻击事件,多家企业的敏感数据遭到泄露,其中不乏一些未妥善配置权限的MySQL实例。这起事件再次提醒我们,权限管理不仅是理论上的重要环节,更是企业在数字化转型过程中的核心安全支柱。尽管MySQL本身提供了强大的权限控制系统,但许多企业在实际部署中往往忽略了权限配置的细节,甚至存在默认账户长期开放、权限过度授予等问题,这些问题在此次攻击中被放大,造成了不可估量的损失。 例如,某知名电商公司在此次事件中被曝出其内部多个数据库的权限设置过于宽松,导致攻击者能够轻松获取管理员权限并窃取大量客户信息。事后调查显示,该公司的数据库运维团队在日常管理中并未严格执行定期审查权限的流程,加之缺乏有效的监控机制,使得潜在风险未能及时暴露。此外,部分企业的开发人员在测试环境中遗留了一些具有高权限的账户,而这些账户在生产环境中未被妥善清理,最终成为攻击者的突破口。 针对此类问题,行业专家建议,企业应建立完善的权限管理体系,不仅要在技术层面实施最小权限原则,还应在制度上明确权限审批和审计流程。同时,定期开展数据库安全评估,利用自动化工具扫描潜在漏洞,确保所有账户和权限的设置符合最佳实践。此外,随着云计算和微服务架构的普及,跨环境的权限协同管理也变得尤为重要,企业需加强对云平台和第三方服务提供商的安全审查,避免因外部依赖引发的风险。 值得注意的是,此次事件并非孤立案例。近年来,数据库权限相关的安全问题频发,暴露出传统安全管理方式的不足。在此背景下,开源社区和技术厂商也在积极推出新的解决方案,比如通过AI驱动的智能权限分析工具,帮助企业实时检测异常行为并预警潜在威胁。这些技术手段的应用,将极大提升数据库安全防护能力,为企业构建更加坚固的数字防线提供支持。
2025-03-18 16:17:13
50
半夏微凉
SpringBoot
...作为一种轻量级、快速部署的Java Web框架,因其简洁性和灵活性,在构建这类应用中展现出巨大潜力。然而,面对日益复杂的数据安全挑战和用户需求多样化,如何在Spring Boot中实现既高效又安全的文件上传功能成为业界关注的焦点。 安全性增强 在实际应用中,文件上传功能往往成为黑客攻击的入口之一。因此,增强安全性显得尤为重要。除了传统的大小限制和类型检查,引入更高级的安全措施变得必要。例如,可以采用内容安全策略(CSP)防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。同时,使用最新的加密算法保护上传文件的传输和存储过程中的数据安全,确保用户隐私得到充分保护。 性能优化与扩展性 在高并发环境下,文件上传服务的性能优化至关重要。通过负载均衡、缓存机制和异步处理机制,可以显著提升服务响应速度和处理能力。此外,利用微服务架构原则,将文件上传服务与其他服务解耦,实现服务的独立部署和水平扩展,能够有效应对突发的高流量场景。 用户体验提升 在注重功能实现的同时,提升用户体验同样不可忽视。提供直观的文件上传界面、实时进度反馈、以及友好的错误提示,都能大大增强用户的满意度。通过集成云存储服务(如Amazon S3、Google Cloud Storage),不仅可以减轻服务器压力,还能够提供更稳定、更快的上传和下载服务。 法规遵从性 随着全球数据保护法规的日益严格,确保文件上传服务符合相关法律法规要求成为企业必须面对的挑战。例如,GDPR(欧盟通用数据保护条例)、HIPAA(美国健康保险流通与责任法案)等法规对企业数据处理和保护有明确要求。在设计和实施文件上传功能时,应充分考虑这些法规的影响,确保数据的收集、存储、处理和传输均符合法律规范。 结论 综上所述,实现高效、安全的文件上传功能需要综合考虑安全性、性能、用户体验和法规遵从性等多个维度。在Spring Boot框架下,通过采用现代安全措施、优化服务性能、提升用户体验并遵循相关法规,企业可以构建出既强大又合规的文件上传系统,满足当前及未来业务发展的需求。随着技术的不断进步和行业标准的更新,持续关注最新实践和趋势,将有助于保持系统的先进性和竞争力。
2024-09-12 16:01:18
86
寂静森林
转载文章
...推动oneAPI生态系统的建设与发展,不仅发布了新版的oneAPI工具包,其中包含了对DPC++和USM功能的增强与优化,还提供了更多针对特定领域的库支持,如深度学习、高性能计算等。 进一步探索异构编程的实际场景,可以参考《Parallel Computing》期刊中关于使用oneAPI进行高效科学计算的研究论文,作者通过实例展示了如何利用oneAPI跨平台特性,实现在多种硬件架构上无缝部署并行算法。此外,《ACM Transactions on Architecture and Code Optimization》上也有一篇关于oneAPI性能分析的文章,详细比较了其与CUDA、OpenMP等传统并行编程模型在不同硬件环境下的性能表现。 同时,关注GTC(GPU Technology Conference)等业界重要会议的最新报道,可了解包括英特尔在内的各大厂商在异构计算领域的最新研究成果和技术布局。例如,在最近的GTC大会上,有专家分享了基于oneAPI在自动驾驶、人工智能医疗影像处理等方面的应用案例,突显了oneAPI在实际项目中的强大适应性和灵活性。 对于开发者来说,参与Intel Developer Zone社区或访问GitHub上的oneAPI示例代码库是持续跟进和学习的最佳途径之一,这里不仅有详尽的教程指导,还有众多开发者分享的一线实践经验,帮助你更好地掌握oneAPI,并将其应用于解决复杂计算问题和应对未来挑战。
2023-07-22 10:28:50
322
转载
ElasticSearch
...earch也支持单机部署,数据规模不是很大的情况下,表现也是不错的。所以,你也不用担心因为自己机器资源不够而对elasticsearch望而却步。当然,单机部署的情况下,更多的适合自己玩,对于可靠性的要求就不能太苛刻了。 如果你在用宝塔,那你可以在宝塔面板,左侧“软件商店”中直接找到elasticsearch,并“没有痛苦”的安装。 本篇文章主要讨论选型,所以不涉及安装细节。 3.2.1 性能顾虑 上面提到了“表现”,其实性能只是elasticsearch的一个方面,主要你的机器资源足够(机器资源?对,包括你的机器个数,elasticsearch可以非常方便的横向扩展,以及单机的配置,cpu+内存,内存越高越好,elasticsearch比较吃内存!),它一定会给你很好的性能反应。试想,公司里的app打印线上日志的行数其实可比一般业务系统产生的订单数量要大很多很多,elasticsearch都可以常在日志的实时分析,所以如果你要做通用场景,而且机器资源不是问题,这是完全行得通的。 3.2.2 易用性和可玩性 此外,在使用elasticsearch的时候,会有很多的可玩性。这里不引经据典,呈现很多elasticsearch官方文章的列举优秀特性(当然,确实很优秀!)。 这里举几个例子: (1)中文分词:第一章提到的其它引擎几乎很难实现,elasticsearch对分词器的支持是原生的,因为elasticsearch天生就为全文索引而生,elasticsearch的汉语名字就是“弹性搜索”。这家伙可是专门搞搜索的! 有的朋友可能不了解分词器,比如你的一个字段里存储“今天我要吃冰激凌”,在分词器的加持下,es最终会存储为“今天|我|要|吃|冰激凌”,并且使用倒排索引的形式进行存储。当你搜索“冰激凌”的时候,可以很快的反馈回来。 关于elasticsearch的原理,这里不展开说明,分词器和倒排索引是elasticsearch的最基本的概念。如果有不了解的朋友,可以自行百度一下。而且这两个概念,与elasticsearch其实不挂钩,是搜索中的通用概念。 关于倒排索引,其核心表现如下图: 如果你要用mysql、mongo实现中文分词,这......其实挺麻烦的,可能在后面的版本支持中会实现的很好,但在当前的流行版本中,它们对中文分词是不够友好的。 mysql5.7之后支持外挂第三方分词器,支持中文分词。而在数据量较大的情况下,mysql的多机器部署几乎很难实现,elasticsearch可以很容易的水平扩展。 mongo支持西方语言的分词,但不支持中文、日语、汉语等东方语言,你需要在自己的逻辑代码中实现分词器。 ngram分词,你看看效果:依旧是“今天我要吃冰激凌”,ngram二元分词后即将得到结果“今天、天我、我要、要吃、吃冰、冰激、激凌”。这....,那你搜索冰激凌就搜不出来!咋办呢,当然可以使用三元分词。但是更好的解决方案还是中文分词器,但它们原生并不支持的。 (2)自定义排名场景:比如你的搜索“冰激凌”,结果中返回了有10条,这10条应该有你想对它指定的顺序。最简单的就是用默认的得分,但是如果你想人为干预这个得分怎么办? elasticsearch支持function_score功能(可以不用,这个是增强功能),es会在计算最终得分之前回调这个你指定的function_score回调函数,传入原始得分、行的原始数据,你可以在里面做计算,比如查询其它参考表、或查看是否是广告位,以得到新的score返回给用户。 function_scrore的功能不展开描述,是一个在自定义得分场景下十分有用又简单易用的功能!下面是一个使用示例,不仅如此,它是支持自定义函数的,自由度非常高。 (3)文本高亮:你用mysql或mongo也可以实现,比如用户搜索“冰激凌”,你只需要在逻辑代码中对“冰激凌”替换为“<span class='highlight-term'>冰激凌</span>”,然后前端做样式即可。但如果用户搜索了“好吃的冰激凌”咋办呢?还有就是英文大小写的场景,用户搜索"MAIN",那结果及时匹配到了“main”(小写的),这个单词是否应该高亮呢?也许这时候你会用业务代码实现toLowerCase下基于位置下标的匹配。 挺麻烦的吧,elasticsearch,自动可以返回高亮字段!并且可以自由指定高亮的html前后标签。 (4)实在太多了....这家伙天生为索引而生,而且版本还在不断地迭代。不差机器的话,用用吧! 4. 退而求其次 4.1 普通数据库 尽管elasticsearch在搜索场景下,是非常好用的利器!但是它比较消耗机器资源,如果你的数据规模并不大,而且想快速实现功能。你可以使用mysql或mongo来代替,完全没有问题。 技术是为了解决特定业务场景下的问题,结合当前手头的资源,适合自己的才是最好的。也许你搞了一个单机器的elasticsearch,单机器内存只有2G,它的表现并不会比mysql、mongo来的好。 当然,如果你为了使用上边提到的一些优秀的独有的特性,那elasticsearch一定还是最佳选择! 对于mysql(关系型数据库)和mongo(文档数据库)的区别这里不展开描述了,但对于搜索而言,两种都合适。有时候选型也不用很纠结,其实都是差不太多的东西,适合自己的、自己熟悉的、运维起来顺手的,就是最好的。 4.2 普通数据库实现中文分词搜索的原理 尽管mysql在5.7以后支持外挂第三方分词器,mongo在截止目前的版本中也不支持中文分词(你可能会看到一些文章中说可以指定language为chinese,但其实会报错的)。 其实当你选择普通数据库,你就不得不在逻辑代码中自己实现一套索引分词+搜索分词逻辑。 索引分词+搜索分词?为什么分开写,如果你有用过elasticsearch或solr,你会知道,在指定字段的时候,需要指定index分词器和search分词器。 下面以mongo为例做简要说明。 4.2.1 index分词器 意思是当数据“索引”截断如何分词。首先,这里必须要承认,数据之后存储了,才能被查询。在搜索中,这句话可以换成是“数据只有被索引了,才能被搜索”。 这时候请求打过来了,要索引一条数据,其中某字段是“今天我要吃冰激凌”,分词后得到“今天|我|要|吃|冰激凌”,这个就可以入库了。 如果你使用elasticsearch或solr,这个过程是自动的。如果你使用不支持外观分词器的常规数据库,这个过程你就要手动了,并把分词后的结果用空格分开(最好使用空格,因为西方语言的分词规则就是按空格拆分,以及逗号句号),存入数据库的一个待搜索的字段上。 效果如下图: 本站的其它博文中有介绍IKAnalyzer:https://www.52itw.com/java/6268.html 4.2.2 search分词器 当用户的查询请求打过来,用户输入了“好吃的冰激凌”,分词后得到“好吃|冰激凌”(“的”作为停用词stopwords,被自动忽略了,IKAnalyzer可以指定停用词表)。 于是这时候就回去上图的数据库表里面搜索“好吃 冰激凌”(与index分词器结果统一,还是用空格分隔)。 当然,对于mongo而言,你需要事先开启全文索引db.xxx.ensureIndex({content: "text"}),xxx是集合名,content是字段名,text是全文索引的标识。 mongo搜索的时候用这个语法:db.xxx.find( { $text: { $search: "好吃 冰激凌" } },{ score: { $meta: "textScore" } }).sort( { score: { $meta: "textScore" } } ) 4.2.3 索引库和存储库分开 为了减少单表的大小,为了让普通的列表查询、普通筛选可以跑的更快,你可以对原有的数据原封不动的做一张表。 然后对于搜索场景,再单独对需要被搜索的字段单独拎一张表出来! 然后二者之间做增量信号同步或定时差额同步,可能会有延迟,这个就看你能容忍多长时间(悄悄告诉你,elasticsearch也需要指定这个refresh时间,一般是1s到几秒、甚至分钟级。当然,二者的这个时间对饮的底层目的是不一样的)。 这样,搜索的时候先查询搜索库,拿到一个指针id的列表,然后拿到指针id的列表区存储里把数据一次性捞出来。当然,也是支持分页的,你查询搜索库其实也是普通的数据库查询嘛,支持分页参数的。 4.3 存储库和索引库的延伸阅读 很多有名的开源软件也是使用的存储库与索引库分离的技术方案,如apache atlas: apache atlas对于大数据领域的数据资产元数据管理、数据血缘上可谓是专家,也涉及资产搜索的特性,它的实现思路就是:从搜索库中做搜索、拿到key、再去存储库中做查询。 搜索库:上图右下角,可以看到使用的是elasticsearch、solr或lucene,多个选一个 存储库:上图左下角,可以看到使用的是Cassandra、HBase或BerkeleyDB,多个选一个 虽然apache atlas在只有搜索库或只有存储库的时候也可以很好的工作,但只针对于数据量并不大的场景。 搜索库,擅长搜索!存储库,擅长海量存储!搜索库多样化搜索,然后去存储库做点查。 当你的数据达到海量的时候,es+hbase也是一种很好的解决方案,不在这里展开说明了。
2024-01-27 17:49:04
539
admin-tim
转载文章
...Kubernetes集群中运行 These 6 Pis are my personal cloud, so maybe there's 16 Pis in the house and one Pi Cloud/Cluster. 这6个Pis是我的个人云,所以也许房子里有16个Pis和一个Pi Cloud / Cluster。 6 are running in a local Kubernetes Cluster 6在本地Kubernetes集群中运行 One is an internet radio in the 13 year old's room running PiMusicBox. 一个是13岁的房间里运行PiMusicBox的互联网广播。 One is a touchscreen tablet the 11 year old uses for Scratch. Imagine a Linux iPad. 一个是11岁的Scratch使用的触摸屏平板电脑。 想象一下一个Linux iPad。 One runs Kodi as an entertainment center in the kids' play room. 其中一个将科迪作为儿童游乐室的娱乐中心。 One lives in a CrowPi that we use for experiments and .NET Core remote debugging. 一个住在我们用于实验和.NET Core远程调试的CrowPi中。 Another three are Raspbery Pi Zero Ws for various experiments with one Pi Zero W acting as as backup Open Source Artificial Pancreas. 另外三个是Raspbery Pi Zero Ws,用于各种实验,其中一个Pi Zero W作为备用开源人工胰腺。 and most recently one is a Pi-hole. A Black hole that eats tracking cookies, advertising, and other bad stuff. See also "shut your pie hole." AKA that place you put pie. 最近的一个是PiKong。 一个黑洞,它吞噬了跟踪Cookie,广告和其他不良内容。 另请参阅“关闭派Kong” 。 又就是你放馅饼的那个地方。 A Pi-hole is a Raspbery Pi appliance that takes the form of an DNS blocker at the network level. You image a Pi, set up your network to use that Pi as a DNS server and maybe white-list a few sites when things don't work. PiKong是Raspbery Pi设备,在网络级别采用DNS阻止程序的形式。 您对Pi进行映像,将网络设置为将该Pi用作DNS服务器,并在无法正常工作时将一些站点列入白名单。 I was initially skeptical, but I'm giving it a try. It doesn't process all network traffic, it's a DNS hop on the way out that intercepts DNS requests for known problematic sites and serves back nothing. 最初我对此表示怀疑,但现在尝试一下。 它不会处理所有网络流量,它是途中的DNS跃点,可拦截对已知问题站点的DNS请求,并且不提供任何服务。 Installation is trivial if you just run unread and untrusted code from the 'net ;) 如果您只是从'net;)运行未读和不受信任的代码,则安装很简单。 curl -sSL https://install.pi-hole.net | bash Otherwise, follow their instructions and download the installer, study it, and run it. 否则,请遵循他们的指示并下载安装程序,对其进行研究并运行。 I put my pi-hole installation on the metal, but there's also a very nice Docker Pi-hole setup if you prefer that. You can even go further, if, like me, you have Synology NAS which can also run Docker, which can in turn run a Pi-hole. 我将pi-hole安装在金属上,但是如果您愿意的话,还有一个非常好的Docker Pi-hole设置。 如果像我一样,如果您拥有也可以运行Docker的Synology NAS ,那么它甚至可以运行Pi-hole,您甚至可以走得更远。 Within the admin interface you can tail the logs for the entire network, which is also amazing to see. You think you know what's talking to the internet from your house - you don't. Everything is logged and listed. After installing the Pi-hole roughly 18% of the DNS queries heading out of my house were blocked. At one point over 23% were blocked. Oy. 在管理界面中,您可以跟踪整个网络的日志,这也很令人惊讶。 您认为自己知道从家里到互联网的谈话内容,而您却不知道。 一切都记录并列出。 安装完Pi漏洞后,大约有18%的DNS查询从我家出来。 一度超过23%被阻止。 哦 NOTE: If you're using an Amplifi HD or any "clever" router, you'll want to change the setting "Bypass DNS cache" otherwise the Amplifi will still remain the DNS lookup of choice on your network. This setting will also confuse the Pi-hole and you'll end up with just one "client" of the Pi-hole - the router itself. 注意:如果您使用Amplifi HD或任何“智能”路由器,则需要更改设置“绕过DNS缓存”,否则Amplifi仍将是您网络上首选的DNS查找。 此设置还会混淆PiKong,您最终只会得到PiKong的一个“客户端”,即路由器本身。 For me it's less about advertising - especially on small blogs or news sites I want to support - it's about just obnoxious tracking cookies and JavaScript. I'm going to keep using Pi-hole for a few months and see how it goes. Do be aware that some things WILL break. Could be a kid's iPhone free-to-play game that won't work unless it can download an add, could be your company's VPN. You'll need to log into http://pi.hole/admin (make sure you save your password when you first install, and you can only change it at the SSH command line with "pihole -a -p") and sometimes disable it for a few minutes to test, then whitelist certain domains. I suspect after a few weeks I'll have it nicely dialed in. 对我来说,它与广告无关,尤其是在我要支持的小型博客或新闻网站上,它只是关于令人讨厌的跟踪cookie和JavaScript。 我将继续使用Pi-hole几个月,看看效果如何。 请注意,有些事情会中断。 可能是一个孩子的iPhone免费游戏,除非可以下载附件,否则它将无法正常工作,可能是您公司的VPN。 您需要登录http://pi.hole/admin (确保在首次安装时保存密码,并且只能在SSH命令行中使用“ pihole -a -p”更改密码),有时将其禁用几分钟以进行测试,然后将某些域列入白名单。 我怀疑几周后我会拨好电话。 翻译自: https://www.hanselman.com/blog/blocking-ads-before-they-enter-your-house-at-the-dns-level-with-pihole-and-a-cheap-raspberry-pi pi-hole 本篇文章为转载内容。原文链接:https://blog.csdn.net/cunfusq0176/article/details/109051003。 该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。 作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。 如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。
2023-08-12 20:49:59
62
转载
转载文章
...上述关于计算机编程与系统学习的经典书籍推荐后,我们了解到这些书籍对于构建扎实的计算机科学基础至关重要。实际上,随着技术的快速发展和行业需求的变化,不断有新的资源涌现以帮助读者深化理解、紧跟时代步伐。 近日,《Python Crash Course》(Python快速上手)一书因其实践性强、与时俱进的内容受到广大编程爱好者的热烈追捧。该书通过项目驱动的方式,引导初学者从零开始逐步掌握Python编程,并应用于Web开发、数据可视化等多个热门领域,具有极强的时效性和实用性。 同时,针对近年来愈发重要的数据结构与算法领域,LeetCode等在线平台提供了大量实时更新的题目和详尽解析,为《算法导论》的学习者们提供了丰富的实战演练机会。众多科技公司也将LeetCode上的刷题成果视为衡量程序员技术水平的重要标准之一。 另外,在云计算、容器化技术大行其道的今天,《Docker in Action》成为了深入理解容器技术和实践DevOps理念的必备读物。它不仅介绍了Docker的基础操作,更探讨了如何利用Docker实现持续集成、微服务架构设计等前沿议题。 此外,随着人工智能与机器学习热潮的兴起,《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow》成为许多想入门AI领域的读者首选。此书通过实例教学,使读者能迅速掌握使用Python进行机器学习模型构建与应用部署。 综上所述,结合经典书籍与最新技术趋势的延伸阅读,能够帮助学习者拓宽视野、增强技能,更好地应对日新月异的计算机科学技术挑战。
2023-12-11 11:49:14
120
转载
NodeJS
...的飞速发展,实时监控系统的需求日益增长。特别是在工业制造领域,企业需要对生产线上的各种参数进行实时监测,以确保产品质量和生产效率。例如,某知名汽车制造商近期宣布在其全球多个工厂部署基于 Node.js 和 WebSocket 的实时监控平台,该平台不仅能够实时采集生产设备的运行数据,还能通过智能算法预测潜在故障,从而大幅降低维护成本并提高生产稳定性。 此外,在医疗健康行业,类似的实时监控解决方案也开始崭露头角。一家专注于远程医疗的初创公司最近推出了一款基于 Node.js 的健康管理应用,用户可以通过佩戴智能手环等设备,将心率、血压等生理指标实时上传至云端,医生则可随时随地查看患者的健康状况并提供个性化建议。这一创新模式不仅改善了医疗服务的可及性,也为慢性病管理带来了新的可能性。 值得注意的是,随着《个人信息保护法》等相关法律法规的出台,企业在开发此类实时监控系统时必须格外注意数据安全与隐私保护。一方面,企业需要严格遵守数据收集、存储和传输的相关规定;另一方面,还需加强技术手段,如加密通信、匿名化处理等,以防止敏感信息泄露。正如某网络安全专家所言:“技术本身没有善恶之分,关键在于如何正确使用。”因此,在追求技术创新的同时,企业应当始终将合规性和安全性放在首位,确保技术进步真正造福于社会。 总之,Node.js 和 WebSocket 技术的应用前景十分广阔,但同时也面临着诸多挑战。只有不断探索新技术、新方法,同时坚守法律底线和社会责任,才能让这一技术更好地服务于各行各业的发展需求。
2025-05-06 16:24:48
77
清风徐来
转载文章
...程序、Windows系统安装和网络配置的详细内容后,读者可以进一步探索以下领域的最新动态与技术解析: 首先,对于GRUB及MBR/PBR相关的更深入研究,近期Linux内核社区对UEFI Secure Boot功能的安全性进行了强化升级,通过改进GRUB2的引导流程以适应最新的安全规范。同时,针对新型存储设备如NVMe SSDs,开发者正在优化GRUB对新硬件的支持,并研究如何确保在不同启动环境下MBR与GPT分区表的有效兼容。 其次,在Windows安装与部署方面,微软于今年发布了Windows 11新版操作系统,不仅引入了全新的用户界面设计,还在安装流程中融入了智能化安装选项和更快捷的驱动识别机制。此外,随着云技术和虚拟化技术的发展,Windows To Go和Azure Sphere等新型安装方式为系统部署提供了更多可能。 在网络配置方面,IPv6在全球范围内的普及速度加快,许多网络设备厂商正致力于提升产品对IPv6协议栈的支持。与此同时,Windows操作系统也在不断更新其网络功能,包括DHCPv6客户端功能增强、DNS-over-HTTPS(DoH)支持以及更完善的组播服务管理工具。此外,Windows防火墙已新增多项高级策略设置,以满足日益复杂的网络安全需求。 最后,关于Office软件中的实用技巧,Microsoft Office 365定期发布更新,提供更丰富的协作工具和智能功能,例如Excel的数据预处理和分析能力得到显著提升,Outlook则集成了更多智能邮件管理和日程安排助手。这些实时更新和新增功能有助于用户提高工作效率,应对各种办公场景挑战。 总之,随着科技不断发展,无论是操作系统的基础架构、网络配置的复杂度还是办公应用的智能化程度都在持续演进,关注行业动态和技术前沿将帮助我们更好地理解和运用文中提及的相关知识。
2023-09-10 16:27:10
271
转载
转载文章
...种统一的方式来优化和部署深度学习模型到各种硬件平台,包括CPU、GPU、ASIC和FPGA等。在本文中,作者详细介绍了如何在Linux环境下从源码安装、编译以及验证TVM的正确性,并演示了如何将PyTorch模型转换为可在TVM上运行的形式。 Conda虚拟环境 , Conda是一种开源包管理器和环境管理系统,用于在同一个系统上创建和管理多个独立的Python环境。在本文语境中,用户通过Conda创建了一个名为tvmenv的虚拟环境,在其中安装特定版本的Python和其他依赖库,以便于在隔离的环境中编译和使用TVM。 CMake构建系统 , CMake是一种跨平台的开源自动化构建系统,用于管理软件项目构建过程中的配置、编译和安装步骤。在本文中,用户在TVM目录下创建build文件夹并使用CMake来配置和编译TVM源代码,生成适用于目标平台(如CPU)的动态链接库libtvm.so和libtvm_runtime.so。 PyTorch模型转换 , 在深度学习领域,PyTorch模型转换是指将训练或预训练好的PyTorch模型转化为另一种框架或中间表示形式的过程。在本文中,展示了如何利用TVM前端接口将PyTorch模型转换成TVM可识别和执行的Relay IR(中间表示),从而实现在TVM上运行和优化该模型的功能。 Relay IR , Relay IR是Apache TVM中的一个关键组件,它是TVM采用的一种高级中间表达格式,用于表示深度学习模型。通过将不同深度学习框架(例如PyTorch)导出的模型转换为Relay IR,TVM能够进一步对模型进行优化并在不同后端硬件上高效执行。在文章中,用户通过from_pytorch函数将PyTorch模型转化为Relay IR以供后续编译和执行。
2023-12-12 20:04:26
88
转载
转载文章
...度学习框架的智能门禁系统成功落地,该系统能够实时识别并验证用户手写的门牌号,大大提升了社区的安全性和便利性,充分展示了MNIST数据集训练模型在实际场景中的高效应用。 此外,针对跨国文化背景下的数字识别差异问题,有研究团队正着手构建包含多元书写风格的全球手写数字数据库,以期通过更全面的数据训练,提升各类设备对手写数字识别的普适性和准确性。同时,也有科研人员积极探索新的图像预处理技术和网络优化算法,如超分辨率技术、注意力机制等,进一步提高识别系统的鲁棒性和精度。 值得注意的是,云端训练与边缘计算的结合正在为OpenMV等嵌入式设备提供强大的后盾支持。例如,阿里云IoT部门最近推出的云端-边缘协同训练方案,允许用户在云端完成大规模数据训练后,将轻量化模型部署至OpenMV等终端设备上,既保证了模型性能,又降低了设备存储和计算压力,对于推动智能硬件在数字识别领域的广泛应用具有深远意义。 总之,在当今AI技术蓬勃发展的大背景下,OpenMV作为微型计算机视觉平台的角色愈发重要,其在手写数字识别项目中的实践不仅体现了技术的先进性,也昭示着未来物联网设备智能化的发展趋势。
2024-01-10 08:44:41
283
转载
转载文章
...理机会有多个虚拟操作系统公用这些物理资源; 然后组合成群后,就是最下面的形式; 五、虚拟化分类 1.硬件虚拟化 硬件虚拟化代表:KVM 2.软件虚拟化 软件虚拟化代表:Qemu 硬件虚拟化是需要CPU支持,如果CPU不支持将无法创建KVM虚拟机 六、虚拟化技术 全虚拟化:全虚拟化代表有:KVM 半虚拟化:半虚拟化代表有Hypervisor 针对IO层面半虚拟化要比全虚拟化要好,因为磁盘IO多一层必定会慢。一般说IO就是网络IO和磁盘IO 因为这两个相对而言是比较慢的 ; 提示: Qemu和KVM的最大区别就是,如果一台物理机内存直接4G,创建一个vm虚拟机分配内存分4G,在创建一个还可以分4G。支持超配,但是Qemu不支持; 七、虚拟化使用场景分类 服务器虚拟化:解决资源利用率低的问题 桌面虚拟化:有一些弊端,图形显示层面会有问题 应用虚拟化:没接触过,公司比较穷买不起,基本上只有银行等国企才会用Xenapp ICA 八、虚拟化工具KVM介绍 KVM 全称:Kernel-based Virtual Machine(内核级虚拟化机器) 原本由以色列人创建,现在被红帽收购 ESXI 虚拟套件,现在是免费使用 VMware vSphere Hypervisor – 安装和配置 提示:一台服务器首选ESXI 九、KVM安装 调整虚拟机 虚拟化Intel使用的是Intel VT-X ; 虚拟化AMD使用的是AMD-V 创建虚拟机步骤 1.准备虚拟机硬盘 2.需要系统iso镜像3.需要安装一个vnc的客户端来连接 查看系统环境 [root@linux-node1 ~] cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@linux-node1 ~] uname -r 3.10.0-327.36.2.el7.x86_64 检查是否有vmx或者svm [root@linux-node1 ~] grep -E '(vmx|svm)' /proc/cpuinfo 安装kvm用户态模块 [root@linux-node1 ~] yum list|grep kvm libvirt-daemon-kvm.x86_64 1.2.17-13.el7_2.5 updates pcp-pmda-kvm.x86_64 3.10.6-2.el7 base qemu-kvm.x86_64 10:1.5.3-105.el7_2.7 updates qemu-kvm-common.x86_64 10:1.5.3-105.el7_2.7 updates qemu-kvm-tools.x86_64 10:1.5.3-105.el7_2.7 updates [root@linux-node1 ~] yum install qemu-kvm qemu-kvm-tools libvirt -y libvirt 用来管理kvm kvm属于内核态,不需要安装。但是需要一些类似于依赖的 kvm属于内核态,不需要安装。但是需要安装一些类似于依赖的东西 启动 [root@linux-node1 ~] systemctl start libvirtd.service [root@linux-node1 ~] systemctl enable libvirtd.service 启动之后我们可以使用ifconfig进行查看,libvirtd已经为我们安装了一个桥接网卡 libvirtd为我们启动了一个dnsmasqp,这个主要是用来dhcp连接的,这个工具会给我们的虚拟机分配IP地址 [root@linux-node1 ~] ps -ef|grep dns nobody 5233 1 0 14:27 ? 00:00:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 5234 5233 0 14:27 ? 00:00:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelperoot 5310 2783 0 14:31 pts/0 00:00:00 grep --color=auto dns 查看磁盘空间大小 最好是20G以上 [root@linux-node1 tmp] df -h 上传镜像 提示:如果使用rz上传镜像可能会出现错误,所以我们使用dd命令,复制系统的镜像。只需要挂载上光盘即可 [root@linux-node1 opt] dd if=/dev/cdrom of=/opt/CentOS-7.2.iso [root@linux-node1 opt] ll total 33792 -rw-r--r-- 1 root root 34603008 Jun 12 18:18 CentOS-7.2-x86_64-DVD-1511.iso 下载VNC 下载地址:http://www.tightvnc.com/download/2.8.5/tightvnc-2.8.5-gpl-setup-64bit.msi 安装完VNC如下图 创建磁盘 提示: qemu-img软件包是我们安装qemu-kvm-tools 依赖给安装上的 [root@linux-node1 opt] qemu-img create -f raw /opt/CentOS-7.2-x86_64.raw 10GFormatting '/opt/Centos-7-x86_64.raw', fmt=raw size=10737418240 [root@linux-node1 opt] [root@linux-node1 opt] ll /opt/Centos-7-x86_64.raw -rw-r--r-- 1 root root 10737418240 Oct 26 14:53 /opt/Centos-7-x86_64.raw-f 制定虚拟机格式,raw是裸磁盘/opt/Centos 存放路径 10G 代表镜像大小 安装启动虚拟机的包 [root@linux-node1 tmp] yum install -y virt-install 安装虚拟机 [root@linux-node1 tmp] virt-install --help 我们可以指定虚拟机的CPU、磁盘、内存等 [root@linux-node1 opt] virt-install --name CentOS-7.2-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.2.iso --disk path=/opt/CentOS-7.2-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --name = 给虚拟机起个名字 --ram = 内存大小 --cdrom = 镜像位置,就是我们上传iso镜像的位置,我放在/tmp下了 --disk path = 指定磁盘--network network= 网络配置 default 就会用我们刚刚ifconfig里面桥接的网卡--graphics vnc,listen= 监听vnc, 分区说明 提示:我们不分交换分区,因为公有云上的云主机都是没有交换分区的 十、Libvirt介绍 libvirt是一个开源免费管理工具,可以管理KVM、VMware等 他需要起一个后台的进程,它提供了API。像openstack就是通过libvirt API来管理虚拟机 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vcp4lgAZ-1596980494935)(libvirt.jpg)] 二、KVM虚拟机和VMware区别 虚拟机监控程序(KVM)是虚拟化平台的根基。从传统供应商到各种开源替代品,可供选择的虚拟机监控程序有很多。 VMware 是一款实现虚拟化的热门产品,可以提供 ESXi 虚拟机监控程序和 vSphere 虚拟化平台。 基于内核的虚拟机(KVM)则是 Linux® 系统上的一种开源解决方案。 VMware vSphere 与 VMware ESXi VMware 可以提供 ESXi 虚拟机监控程序和 vSphere 虚拟化平台。VMware ESXi 是一个能够直接安装到物理服务器上的裸机虚拟机监控程序,可以帮你整合硬件。你可以用 VMware 的虚拟化技术来创建和部署虚拟机(VM),从而现代化改造自己的基础架构,来交付和管理各种新旧应用。 选用 VMware vSphere 后,你需要使用 VMware 的控制堆栈来管理虚拟机,而且有多个许可证授权级别可供使用。 KVM 开源虚拟化技术 KVM 是一种开源虚拟化技术,能将 Linux 内核转变成可以实现虚拟化的虚拟机监控程序,而且可以替代专有的虚拟化技术(比如 VMware 提供的专有虚拟化技术)。 迁移到基于 KVM 的虚拟化平台,你就可以检查、修改和完善虚拟机监控程序背后的源代码。能够访问源代码,就如同掌握了开启无限可能的钥匙,能够让你虚拟化传统工作负载和应用,并为云原生和基于容器的工作负载奠定基础。由于 KVM 内置于 Linux 内核中,所以使用和部署起来非常方便。 KVM 虚拟机和 VMware vSphere 的主要区别 VMware 可以提供一个完善稳定的虚拟机监控程序,以及出色的性能和多样化的功能。但是,专有虚拟化会阻碍你获得开展云、容器和自动化投资所需的资源。解除供应商锁定,你就可以任享自由、灵活与丰富的资源,从而为未来的云原生和容器化环境打下基础。 生产就绪型的 KVM 具有支持物理和虚拟基础架构的功能,可以让你以更低的运营成本为企业工作负载提供支持。相比使用 VMware vSphere 等其他解决方案,选用基于 KVM 的虚拟化选项能够带来很多优势。 开源Linux KVM的优势: 更低的总拥有成本,从而省下运营预算,用来探索现代化创新技术。 不再受供应商捆绑。无需为不用的产品付费,也不会受到软件选择限制。 跨平台互操作性:KVM 可以在 Linux 和 Windows 平台上运行,所以你可以充分利用现有的基础架构投资。 出色简便性:可以通过单个虚拟化平台,在数百个其他硬件或软件上创建、启动、停止、暂停、迁移和模板化数百个虚拟机。 卓越性能:应用在 KVM 上的运行速度比其他虚拟机监控程序都快。 开源优势:不但能访问源代码,还能灵活地与各种产品集成。 享受 Linux 操作系统的现有功能: 安全防护功能 内存管理 进程调度器 设备驱动程序 网络堆栈 红帽 KVM 企业级虚拟化的优势 选择红帽® 虚拟化,就等于选择了 KVM。红帽虚拟化是一款适用于虚拟化服务器和技术工作站的完整基础架构解决方案。红帽虚拟化基于强大的红帽企业 Linux® 平台和 KVM 构建而成,能让你轻松、敏捷、安全地使用资源密集型虚拟化工作负载。红帽虚拟化可凭借更加优越的性能、具有竞争力的价格和值得信赖的红帽环境,帮助企业优化 IT 基础架构。 红帽的虚拟化产品快速、经济、高效,能够帮助你从容应对当前的挑战,并为未来的技术发展奠定基础。VMware 等供应商提供的纵向扩展虚拟化解决方案不但成本高昂,而且无法帮助企业完成所需的转型,因而难以支持在混合云中运行云原生应用。要转而部署混合云环境,第一步要做的就是摆脱专有虚拟化。 红帽虚拟化包含 sVirt 和安全增强型 Linux(SELinux),是红帽企业 Linux 专为检测和预防当前 IT 环境中的复杂安全隐患而开发的技术。 业完成所需的转型,因而难以支持在混合云中运行云原生应用。要转而部署混合云环境,第一步要做的就是摆脱专有虚拟化。 红帽虚拟化包含 sVirt 和安全增强型 Linux(SELinux),是红帽企业 Linux 专为检测和预防当前 IT 环境中的复杂安全隐患而开发的技术。 借助红帽虚拟化,你可以尽享开源虚拟机监控程序的所有优势,还能获得企业级技术支持、更新和补丁,使你的环境保持最新状态,持续安心运行。开源和 RESTful API,以及 Microsoft Windows 的认证,可帮你实现跨平台的互操作性。提供的 API 和软件开发工具包(SDK)则有助于将我们的解决方案扩展至你现有和首选管理工具,并提供相关支持。 本篇文章为转载内容。原文链接:https://blog.csdn.net/qq_34799070/article/details/107900861。 该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。 作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。 如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。
2023-04-06 08:58:59
122
转载
转载文章
...式处理器、Linux系统管理和文件系统操作后,以下是一些相关的“延伸阅读”内容: 1. 嵌入式处理器最新动态:近期,Arm公司发布了其最新的Cortex-A78AE和Cortex-X1AE处理器,专为高级驾驶辅助系统(ADAS)及自动驾驶汽车设计,提供了更高的效能与安全性。同时,RISC-V架构作为一种开源指令集体系结构,在嵌入式领域逐渐崭露头角,得到了SiFive等公司的大力推广和应用,有关RISC-V的生态建设和市场前景可深入研究。 2. Linux内核更新与优化:Linux 5.13版内核正式发布,该版本在硬件支持、性能优化以及安全增强等方面有显著提升,尤其对于嵌入式设备的支持更加全面。例如,对新型NAND Flash控制器的原生支持得到加强,有助于提高存储效率和稳定性。 3. Linux文件系统创新:科研人员正不断探索新的文件系统技术以适应大数据时代的需求。如Facebook主导开发的开源文件系统——Rocksteady,旨在提供超大规模数据中心所需的高效能、高稳定性和低延迟特性。此外,持久化内存(PMEM)技术的发展也在推动着Linux文件系统的变革,如pmemfs文件系统,它利用持久性内存的优势实现高性能的数据存取。 4. 跨平台开发与容器化趋势:随着云原生理念的普及,嵌入式开发开始关注容器化技术在边缘计算场景的应用。Docker和Kubernetes等工具正在帮助开发者更便捷地构建和部署跨平台的嵌入式应用,通过统一的容器环境简化了不同处理器架构间的移植难题。 5. 用户权限管理与安全实践:针对Linux系统安全问题,近年来有许多关于如何强化用户权限管理的研究报告和技术文章发表。例如,SELinux策略的深入解读,以及如何结合最小权限原则进行服务账户设置,避免因权限过高导致的安全风险,这些内容都是嵌入式系统安全运维的重要参考。
2023-11-23 17:18:30
80
转载
转载文章
...而阿里云通过智能派单系统,基于海量历史订单数据、餐厅数据、骑手数据、用户数据等信息实现智能派单,逐步替代调度员的大部分工作。智能派单系统整体全面上线后将释放90%以上人工派单的人力,每年节省人力支出预计超过亿元。 饿了么的IT系统架构伴随业务量飙升,进行了三次重大升级。 1)起步期(2009至2013年):饿了么由上海交通大学创始团队起家,发展至35人规模,日订单量维持在十万量级,由“IDC+Python”技术组合支撑业务运营,但面临Python人才难觅等困扰。 2)成长期(2014年至2015年):14年8至9月短短2个月内日均订单量增长10倍,从10万迅猛飙升至100万,业务规模主攻全国200个城市,原有IT系统架构压力极大,依靠人肉运维举步维艰,故障波动影响业务,创始人与核心技术团队坚守机房运维一线,才勉强扛住100万量级业务订单。开始借鉴阿里淘宝架构模式,人员团队也涨至500人,技术生态从Python扩展至“Java+Python”开发体系,从“人肉”支撑百万订单运营到自动化运维,并筹备同城异地容灾体系。 3)规模期(2015年至2017年):2015年7至8月,日均订单量从200万翻倍,以往积压的问题都暴露出来,技术架构面临大考验,坚定了架构上云的方案,团队扩展至1000人,架构要承载数百万量级业务时,出现峰值成本、灾备切换、IDC远程运维等种种挑战,全面战略转型采用“IDC+云计算”的混合云架构。在2016年12月25日圣诞节日订单量迎来前所未有的900万单,因此在技术架构上探索多活部署等创新性研发。 为什么选择架构转型上云?据饿了么CTO张雪峰先生所说,技术架构从IDC经典模式发展至混合云模式,主要原因是三个关键因素让管理层下定决心上云: 1) 脉冲计算:从技术架构配套业务发展分析,网络订餐业务具有明显的“脉冲计算”特征,在每日上午10:00至13:00、晚间16:00至19:00业务高峰值出现,而其他时间则业务量很低,暑假是业务高峰季,2016年5.17大促,饿了么第一次做“秒杀”,一秒订单15000笔,巨大的波峰波谷计算差异,引发了自建数据中心容量不可调和的两难处境,如果大规模投入服务器满足6小时的高峰业务量,则其余18个小时的业务低谷计算资源闲置,若满足平均业务量,则无法跟上业务快速发展节奏,落后于竞争对手;搞电商大促时,计算资源投入巨大,大促之后计算峰值下降,采用自建机房利用率仅10%,所以技术团队摸索出用云计算扛营销大促峰值的新模式,采用混合云架构满足 “潮汐业务”峰值计算,阿里云海量云计算资源弹性随需满足巨大的脉冲计算力缺口,这与每年“双11” 淘宝引入阿里云形成全球最大混合云架构具有异曲同工的创新价值。 2) 数据量爆炸:伴随饿了么近五年业务量呈几何级数的爆发式发展,数据量增速更加令人吃惊,是业务量增速的5倍,每日增量数据接近100TB,2015年短短2个月内业务量增长10倍,数据量增长了50倍,上海主生产机房不堪重负。30GB的DDoS攻击对业务系统造成较大风险,上云成为承载大数据、抗网络攻击的好方法。 3) 高可用性挑战:众所周知,IDC自建系统运维要承担从底层硬件到上层应用的“全栈运维”运营能力与维修能力,当2015年夏天上海数据中心故障发生,主核心交换机宕机时,备核心交换机Bug同时被触发,从事故发生到硬件厂商携维修设备打车赶往现场维修的整个过程中,饥饿的消费者无法订餐吃饭,技术团队第一次经历业务中断而束手无策,才下定决心大笔投入混合云灾备的建设,“吃一堑,长一智”,持续向淘宝学习电商云生产与灾备架构,以自动化运维替代人肉运维,从灾备向多活演进,成为饿了么企业架构转型的必经之路。 4) 大数据精益运营:不论网络打车还是网络订餐,共享服务平台脱颖而出的关键成功要素是智能调度算法,以大数据训练算法提升调度效率,饿了么在高峰时段内让百万“骑士”(送餐快递员)完成更多订单是算法持续优化的目标,而这背后隐藏着诸多复杂因素,包括考虑餐厅、骑士、消费者三者的实时动态位置关系,把新订单插入现有“骑士”的行进路线中,估计每家餐厅出餐时间,每个骑手的行进速度、道路熟悉程度各不相同,新老消费者获客成本、高价低价订单的优先级皆不相同。种种考量因素合并到一起,对于人类调度员来说,每天中午和晚上的高峰都是巨大的挑战。以上海商城路配送站为例,一个调度员每6秒钟就要调度1单,他需要考虑骑手已有订单量、路线熟悉度等。因此可以说,这份工作已经完全不适合人类。但对人工智能而言,阿里云ET则非常擅长处理这类超复杂、大规模、实时性要求高的“非人”问题。 饿了么是中国最大的在线外卖和即时配送平台,日订单量900万单、180万骑手、100万家餐饮店,既是史无前例的计算存储挑战,又是人无我有的战略发展机遇。饿了么携手阿里云人工智能团队,通过海量数据训练优化全球最大实时智能调度系统。在基础架构层,云计算解决弹性支撑业务量波动的基础生存问题,在数据智能层,利用大数据训练核心调度算法、提升餐饮店的商业价值,才是业务决胜的“技术神器”。 在针对大数据资源的“专家+机器”运营分析中,不断发现新的特征: 1) 区域差异性:饿了么与阿里云联合研发小组测试中发现有2个配送站点出现严重超时问题。后来才知道:2个站点均在成都,当地人民喜欢早、中餐一起吃,高峰从11点就开始了。习惯了北上广节奏的ET到成都就懵了。据阿里云人工智能专家闵万里分析:“不存在一套通用的算法可以适配所有站点,所以我们需要让ET自己学习或者向人类运营专家请教当地的风土人情、饮食习惯”。除此之外,饿了么覆盖的餐厅不仅有高大上的连锁店,还有大街小巷的各类难以琢磨的特色小吃,难度是其他智能调度业务的数倍。 2) 复杂路径规划:吃一口热饭有多难?送餐路径规划比驾车出行路径规划难度更高,要考虑“骑士”地图熟悉程度、天气状况、拼单效率、送餐顺序、时间对客户满意度影响、送达写字楼电梯等待时间等各种实际情况,究竟ET是如何实现智能派单并确保效率最优的呢?简单来说,ET会将配送站新接订单插入到每个骑手已有的任务中,重新规划一轮最短配送路径,对比哪个骑手新增时间最短。为了能够准确预估新增时间,ET需要知道全国100万家餐厅的出餐速度、超过180万骑手各自的骑行速度、每个顾客坐电梯下楼取餐的时间。一般来说,餐厅出餐等待时间占到了整个送餐时间的三分之一。ET要想提高骑手效率,必须准确预估出餐时间以减少骑手等待,但又不能让餐等人,最后饭凉了。饿了么旗下蜂鸟配送“准时达”服务单均配送时长缩短至30分钟以内。 3) 天气特殊影响:天气等环境因素对送餐响应时间影响显著,要想计算骑手的送餐路程时间,ET需要知道每个骑手在不同区域、不同天气下的送餐速度。如果北京雾霾,ET能看见吗?双方研发团队为ET内置了恶劣天气的算法模型。通常情况下,每逢恶劣天气,外卖订单将出现大涨,对应的餐厅出餐速度和骑手骑行速度都将受到影响,这些ET都会考虑在内。如果顾客在下雪天点个火锅呢?ET也知道,将自动识别其为大单,锁定某一个骑手专门完成配送。 4) 餐饮营销顾问:饿了么整体业务涉及C端(消费者)、B端(餐饮商户)、D端(物流配送)、BD端(地推营销),以往区域业务开拓考核新店数量,现在会重点关注餐饮外卖“健康度”,对于营业额忽高忽低、在线排名变化的餐饮店,都需要BD专家根据大数据帮助餐饮店经营者找出原因并给出解决建议,避免新店外卖刚开始就淹没在区域竞争中,销量平平的新店会离开平台,通过机器学习把餐饮运营专家的经验、以及人看不到的隐含规律固化下来,以数据决策来发现餐饮店经营问题、产品差异定位,让餐饮商户尝到甜头,才愿意继续经营。举个例子,饿了么员工都喜欢楼下一家鸡排店的午餐,但大数据发现这家店的外卖营收并不如实体店那么火爆,9元“鸡排+酸梅汁”是所有人都喜欢的爆款产品,可为什么同样菜品遭遇“线下火、线上冷”呢?数据预警后,BD顾问指出线上外卖鸡排产品没有写明“含免费酸梅汁一杯”的关键促销内容,导致大多数外卖消费者订一份鸡排一杯酸梅汁,却收到一份鸡排两杯酸梅汁,体验自然不好。 饿了么是数据驱动、智能算法调度的自动化生活服务平台,通过O2O数据的在线实时分析,与阿里云人工智能团队不断改进算法,以“全局最优”取代“局部最优”,保证平台上所有餐饮商户都能享受到数据智能的科技红利。 “上云用数”的外部价值诸多,从饿了么内部反馈来看,上云不仅没有让运维团队失去价值,反而带来了“云原生应用”(Cloud Native Application)、“云上多活”、“CDN云端压测”、“安全风控一体化”等创新路径与方案,通过敏捷基础设施(IaaS)、微服务架构(PaaS和SaaS)、持续交付管理、DevOps等云最佳实践,摆脱“人肉”支撑的种种困境,进而实现更快的上线速度、细致的故障探测和发现、故障时能自动隔离、故障时能够自动恢复、方便的水平扩容。饿了么CTO张雪峰先生说:“互联网平台型组织,业务量涨数倍,企业人数稳定降低,才是技术驱动的正确商业模式。” 在不久的将来,你每天订餐、出行、娱乐、工作留下的大数据,会“驯养”出无处不在、无所不能的智能机器人管家,家庭助理帮你点菜,无人机为你送餐,聊天机器人接受你的投诉……当然这个无比美妙的“未来世界”背后,皆有阿里云的数据智能母体“ET”。 本篇文章为转载内容。原文链接:https://blog.csdn.net/weixin_34126557/article/details/90592502。 该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。 作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。 如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。
2023-01-31 14:48:26
344
转载
转载文章
...使用Python生态系统获得结果的开发人员,Python生态系统是专业机器学习的新兴平台。 在Python机器学习方面需要帮助吗? 参加我为期2周的免费电子邮件课程,发现数据准备,算法等(包括代码)。 单击立即注册,并获得该课程的免费PDF电子书版本。 立即开始免费的迷你课程! 迷你课程概述 该微型课程分为14节课。 您可以每天完成一堂课(推荐),也可以在一天内完成所有课程(核心!)。这实际上取决于您有空的时间和您的热情水平。 以下是14个课程,可帮助您入门并提高使用Python进行机器学习的效率: 第1课:下载并安装Python和SciPy生态系统。 第2课:深入了解Python,NumPy,Matplotlib和Pandas。 第3课:从CSV加载数据。 第4课:了解具有描述性统计信息的数据。 第5课:通过可视化了解数据。 第6课:通过预处理数据准备建模。 第7课:使用重采样方法进行算法评估。 第8课:算法评估指标。 第9课:现场检查算法。 第10课:模型比较和选择。 第11课:通过算法调整提高准确性。 第12课:利用集合预测提高准确性。 第13课:完成并保存模型。 第14课:Hello World端到端项目。 每节课可能需要您60秒钟或最多30分钟。花点时间按照自己的进度完成课程。提出问题,甚至在以下评论中发布结果。 这些课程希望您能开始学习并做事。我会给您提示,但每节课的重点是迫使您学习从哪里寻求有关Python平台的帮助(提示,我直接在此博客上获得了所有答案,请使用搜索特征)。 在早期课程中,我确实提供了更多帮助,因为我希望您树立一些信心和惯性。 挂在那里,不要放弃! 第1课:下载并安装Python和SciPy 您必须先访问平台才能开始使用Python进行机器学习。 今天的课程很简单,您必须在计算机上下载并安装Python 3.6平台。 访问Python主页并下载适用于您的操作系统(Linux,OS X或Windows)的Python。在计算机上安装Python。您可能需要使用特定于平台的软件包管理器,例如OS X上的macports或RedHat Linux上的yum。 您还需要安装SciPy平台和scikit-learn库。我建议使用与安装Python相同的方法。 您可以使用Anaconda一次安装所有内容(更加容易)。推荐给初学者。 通过在命令行中键入“ python”来首次启动Python。 使用以下代码检查所有您需要的版本: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Python version import sys print('Python: {}'.format(sys.version)) scipy import scipy print('scipy: {}'.format(scipy.__version__)) numpy import numpy print('numpy: {}'.format(numpy.__version__)) matplotlib import matplotlib print('matplotlib: {}'.format(matplotlib.__version__)) pandas import pandas print('pandas: {}'.format(pandas.__version__)) scikit-learn import sklearn print('sklearn: {}'.format(sklearn.__version__)) 如果有任何错误,请停止。现在该修复它们了。 需要帮忙?请参阅本教程: 如何使用Anaconda设置用于机器学习和深度学习的Python环境 第2课:深入了解Python,NumPy,Matplotlib和Pandas。 您需要能够读写基本的Python脚本。 作为开发人员,您可以很快选择新的编程语言。Python区分大小写,使用哈希(#)进行注释,并使用空格指示代码块(空格很重要)。 今天的任务是在Python交互环境中练习Python编程语言的基本语法和重要的SciPy数据结构。 练习作业,在Python中使用列表和流程控制。 练习使用NumPy数组。 练习在Matplotlib中创建简单图。 练习使用Pandas Series和DataFrames。 例如,以下是创建Pandas DataFrame的简单示例。 1 2 3 4 5 6 7 8 dataframe import numpy import pandas myarray = numpy.array([[1, 2, 3], [4, 5, 6]]) rownames = ['a', 'b'] colnames = ['one', 'two', 'three'] mydataframe = pandas.DataFrame(myarray, index=rownames, columns=colnames) print(mydataframe) 第3课:从CSV加载数据 机器学习算法需要数据。您可以从CSV文件加载自己的数据,但是当您开始使用Python进行机器学习时,应该在标准机器学习数据集上进行练习。 今天课程的任务是让您轻松地将数据加载到Python中并查找和加载标准的机器学习数据集。 您可以在UCI机器学习存储库上下载和练习许多CSV格式的出色标准机器学习数据集。 练习使用标准库中的CSV.reader()将CSV文件加载到Python 中。 练习使用NumPy和numpy.loadtxt()函数加载CSV文件。 练习使用Pandas和pandas.read_csv()函数加载CSV文件。 为了让您入门,下面是一个片段,该片段将直接从UCI机器学习存储库中使用Pandas来加载Pima Indians糖尿病数据集。 1 2 3 4 5 6 Load CSV using Pandas from URL import pandas url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = pandas.read_csv(url, names=names) print(data.shape) 到现在为止做得很好!等一下 到目前为止有什么问题吗?在评论中提问。 第4课:使用描述性统计数据理解数据 将数据加载到Python之后,您需要能够理解它。 您越了解数据,可以构建的模型就越精确。了解数据的第一步是使用描述性统计数据。 今天,您的课程是学习如何使用描述性统计信息来理解您的数据。我建议使用Pandas DataFrame上提供的帮助程序功能。 使用head()函数了解您的数据以查看前几行。 使用shape属性查看数据的维度。 使用dtypes属性查看每个属性的数据类型。 使用describe()函数查看数据的分布。 使用corr()函数计算变量之间的成对相关性。 以下示例加载了皮马印第安人糖尿病发病数据集,并总结了每个属性的分布。 1 2 3 4 5 6 7 Statistical Summary import pandas url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = pandas.read_csv(url, names=names) description = data.describe() print(description) 试试看! 第5课:通过可视化了解数据 从昨天的课程继续,您必须花一些时间更好地了解您的数据。 增进对数据理解的第二种方法是使用数据可视化技术(例如,绘图)。 今天,您的课程是学习如何在Python中使用绘图来单独理解属性及其相互作用。再次,我建议使用Pandas DataFrame上提供的帮助程序功能。 使用hist()函数创建每个属性的直方图。 使用plot(kind ='box')函数创建每个属性的箱须图。 使用pandas.scatter_matrix()函数创建所有属性的成对散点图。 例如,下面的代码片段将加载糖尿病数据集并创建数据集的散点图矩阵。 1 2 3 4 5 6 7 8 9 Scatter Plot Matrix import matplotlib.pyplot as plt import pandas from pandas.plotting import scatter_matrix url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = pandas.read_csv(url, names=names) scatter_matrix(data) plt.show() 样本散点图矩阵 第6课:通过预处理数据准备建模 您的原始数据可能未设置为最佳建模形式。 有时您需要对数据进行预处理,以便最好地将问题的固有结构呈现给建模算法。在今天的课程中,您将使用scikit-learn提供的预处理功能。 scikit-learn库提供了两个用于转换数据的标准习语。每种变换在不同的情况下都非常有用:拟合和多重变换以及组合的拟合与变换。 您可以使用多种技术来准备数据以进行建模。例如,尝试以下一些方法 使用比例和中心选项将数值数据标准化(例如,平均值为0,标准偏差为1)。 使用范围选项将数值数据标准化(例如,范围为0-1)。 探索更高级的功能工程,例如Binarizing。 例如,下面的代码段加载了Pima Indians糖尿病发病数据集,计算了标准化数据所需的参数,然后创建了输入数据的标准化副本。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Standardize data (0 mean, 1 stdev) from sklearn.preprocessing import StandardScaler import pandas import numpy url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values separate array into input and output components X = array[:,0:8] Y = array[:,8] scaler = StandardScaler().fit(X) rescaledX = scaler.transform(X) summarize transformed data numpy.set_printoptions(precision=3) print(rescaledX[0:5,:]) 第7课:使用重采样方法进行算法评估 用于训练机器学习算法的数据集称为训练数据集。用于训练算法的数据集不能用于为您提供有关新数据的模型准确性的可靠估计。这是一个大问题,因为创建模型的整个思路是对新数据进行预测。 您可以使用称为重采样方法的统计方法将训练数据集划分为子集,一些方法用于训练模型,而另一些则被保留,并用于估计看不见的数据的模型准确性。 今天课程的目标是练习使用scikit-learn中可用的不同重采样方法,例如: 将数据集分为训练集和测试集。 使用k倍交叉验证来估计算法的准确性。 使用留一法交叉验证来估计算法的准确性。 下面的代码段使用scikit-learn通过10倍交叉验证来评估Pima Indians糖尿病发作的Logistic回归算法的准确性。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Evaluate using Cross Validation from pandas import read_csv from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score from sklearn.linear_model import LogisticRegression url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] kfold = KFold(n_splits=10, random_state=7) model = LogisticRegression(solver='liblinear') results = cross_val_score(model, X, Y, cv=kfold) print("Accuracy: %.3f%% (%.3f%%)") % (results.mean()100.0, results.std()100.0) 您获得了什么精度?在评论中让我知道。 您是否意识到这是中间点?做得好! 第8课:算法评估指标 您可以使用许多不同的指标来评估数据集上机器学习算法的技能。 您可以通过cross_validation.cross_val_score()函数在scikit-learn中指定用于测试工具的度量,默认值可用于回归和分类问题。今天课程的目标是练习使用scikit-learn软件包中可用的不同算法性能指标。 在分类问题上练习使用“准确性”和“ LogLoss”度量。 练习生成混淆矩阵和分类报告。 在回归问题上练习使用RMSE和RSquared指标。 下面的代码段演示了根据Pima Indians糖尿病发病数据计算LogLoss指标。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Cross Validation Classification LogLoss from pandas import read_csv from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score from sklearn.linear_model import LogisticRegression url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] kfold = KFold(n_splits=10, random_state=7) model = LogisticRegression(solver='liblinear') scoring = 'neg_log_loss' results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring) print("Logloss: %.3f (%.3f)") % (results.mean(), results.std()) 您得到了什么日志损失?在评论中让我知道。 第9课:抽查算法 您可能无法事先知道哪种算法对您的数据效果最好。 您必须使用反复试验的过程来发现它。我称之为现场检查算法。scikit-learn库提供了许多机器学习算法和工具的接口,以比较这些算法的估计准确性。 在本课程中,您必须练习抽查不同的机器学习算法。 对数据集进行抽查线性算法(例如线性回归,逻辑回归和线性判别分析)。 抽查数据集上的一些非线性算法(例如KNN,SVM和CART)。 抽查数据集上一些复杂的集成算法(例如随机森林和随机梯度增强)。 例如,下面的代码片段对Boston House Price数据集上的K最近邻居算法进行了抽查。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 KNN Regression from pandas import read_csv from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score from sklearn.neighbors import KNeighborsRegressor url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data" names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV'] dataframe = read_csv(url, delim_whitespace=True, names=names) array = dataframe.values X = array[:,0:13] Y = array[:,13] kfold = KFold(n_splits=10, random_state=7) model = KNeighborsRegressor() scoring = 'neg_mean_squared_error' results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring) print(results.mean()) 您得到的平方误差是什么意思?在评论中让我知道。 第10课:模型比较和选择 既然您知道了如何在数据集中检查机器学习算法,那么您需要知道如何比较不同算法的估计性能并选择最佳模型。 在今天的课程中,您将练习比较Python和scikit-learn中的机器学习算法的准确性。 在数据集上相互比较线性算法。 在数据集上相互比较非线性算法。 相互比较同一算法的不同配置。 创建比较算法的结果图。 下面的示例在皮马印第安人发病的糖尿病数据集中将Logistic回归和线性判别分析进行了比较。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Compare Algorithms from pandas import read_csv from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score from sklearn.linear_model import LogisticRegression from sklearn.discriminant_analysis import LinearDiscriminantAnalysis load dataset url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] prepare models models = [] models.append(('LR', LogisticRegression(solver='liblinear'))) models.append(('LDA', LinearDiscriminantAnalysis())) evaluate each model in turn results = [] names = [] scoring = 'accuracy' for name, model in models: kfold = KFold(n_splits=10, random_state=7) cv_results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring) results.append(cv_results) names.append(name) msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std()) print(msg) 哪种算法效果更好?你能做得更好吗?在评论中让我知道。 第11课:通过算法调整提高准确性 一旦找到一种或两种在数据集上表现良好的算法,您可能希望提高这些模型的性能。 提高算法性能的一种方法是将其参数调整为特定的数据集。 scikit-learn库提供了两种方法来搜索机器学习算法的参数组合。在今天的课程中,您的目标是练习每个。 使用您指定的网格搜索来调整算法的参数。 使用随机搜索调整算法的参数。 下面使用的代码段是一个示例,该示例使用网格搜索在Pima Indians糖尿病发病数据集上的Ridge回归算法。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Grid Search for Algorithm Tuning from pandas import read_csv import numpy from sklearn.linear_model import Ridge from sklearn.model_selection import GridSearchCV url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0]) param_grid = dict(alpha=alphas) model = Ridge() grid = GridSearchCV(estimator=model, param_grid=param_grid, cv=3) grid.fit(X, Y) print(grid.best_score_) print(grid.best_estimator_.alpha) 哪些参数取得最佳效果?你能做得更好吗?在评论中让我知道。 第12课:利用集合预测提高准确性 您可以提高模型性能的另一种方法是组合来自多个模型的预测。 一些模型提供了内置的此功能,例如用于装袋的随机森林和用于增强的随机梯度增强。可以使用另一种称为投票的合奏将来自多个不同模型的预测组合在一起。 在今天的课程中,您将练习使用合奏方法。 使用随机森林和多余树木算法练习装袋。 使用梯度增强机和AdaBoost算法练习增强合奏。 通过将来自多个模型的预测组合在一起来练习投票合奏。 下面的代码段演示了如何在Pima Indians糖尿病发病数据集上使用随机森林算法(袋装决策树集合)。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Random Forest Classification from pandas import read_csv from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score from sklearn.ensemble import RandomForestClassifier url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] num_trees = 100 max_features = 3 kfold = KFold(n_splits=10, random_state=7) model = RandomForestClassifier(n_estimators=num_trees, max_features=max_features) results = cross_val_score(model, X, Y, cv=kfold) print(results.mean()) 你能设计出更好的合奏吗?在评论中让我知道。 第13课:完成并保存模型 找到有关机器学习问题的良好模型后,您需要完成该模型。 在今天的课程中,您将练习与完成模型有关的任务。 练习使用模型对新数据(在训练和测试过程中看不到的数据)进行预测。 练习将经过训练的模型保存到文件中,然后再次加载。 例如,下面的代码片段显示了如何创建Logistic回归模型,将其保存到文件中,之后再加载它以及对看不见的数据进行预测。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Save Model Using Pickle from pandas import read_csv from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression import pickle url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = read_csv(url, names=names) array = dataframe.values X = array[:,0:8] Y = array[:,8] test_size = 0.33 seed = 7 X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size, random_state=seed) Fit the model on 33% model = LogisticRegression(solver='liblinear') model.fit(X_train, Y_train) save the model to disk filename = 'finalized_model.sav' pickle.dump(model, open(filename, 'wb')) some time later... load the model from disk loaded_model = pickle.load(open(filename, 'rb')) result = loaded_model.score(X_test, Y_test) print(result) 第14课:Hello World端到端项目 您现在知道如何完成预测建模机器学习问题的每个任务。 在今天的课程中,您需要练习将各个部分组合在一起,并通过端到端的标准机器学习数据集进行操作。 端到端遍历虹膜数据集(机器学习的世界) 这包括以下步骤: 使用描述性统计数据和可视化了解您的数据。 预处理数据以最好地揭示问题的结构。 使用您自己的测试工具抽查多种算法。 使用算法参数调整来改善结果。 使用集成方法改善结果。 最终确定模型以备将来使用。 慢慢进行,并记录结果。 您使用什么型号?您得到了什么结果?在评论中让我知道。 结束! (看你走了多远) 你做到了。做得好! 花一点时间,回头看看你已经走了多远。 您最初对机器学习感兴趣,并强烈希望能够使用Python练习和应用机器学习。 您可能是第一次下载,安装并启动Python,并开始熟悉该语言的语法。 在许多课程中,您逐渐地,稳定地学习了预测建模机器学习项目的标准任务如何映射到Python平台上。 基于常见机器学习任务的配方,您使用Python端到端解决了第一个机器学习问题。 使用标准模板,您所收集的食谱和经验现在可以自行解决新的和不同的预测建模机器学习问题。 不要轻描淡写,您在短时间内就取得了长足的进步。 这只是您使用Python进行机器学习的起点。继续练习和发展自己的技能。 喜欢点下关注,你的关注是我写作的最大支持 本篇文章为转载内容。原文链接:https://blog.csdn.net/m0_37337849/article/details/104016531。 该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。 作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。 如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。
2023-07-11 10:04:06
93
转载
转载文章
...维过程开发出的计算机系统或机器。这些系统通常包括机器学习、深度学习、自然语言处理等技术,能够实现感知环境、理解指令、做出决策及执行任务等功能,文中以“电脑人”现象为例,探讨了AI发展到一定程度时,其行为与人类玩家难以区分的现象。 心流(Flow) , 心流概念由心理学家米哈里·契克森米哈伊提出,指个体在进行某项活动时全神贯注、完全投入的状态,此时个人技能与挑战难度达到最佳平衡,从而产生一种忘我而愉悦的心理体验。在文章中,作者将心流视为生物体中的明确现实,区别于可能存在的灵魂,它包含感觉和欲望,并指出心流是所有生物共有的特质,而非仅限于人类。 确定机与概率机模型 , 这是作者构建的一种理论框架,用以解释生物思考过程的本质。确定机模型描述的是输入确定条件下会产生确定输出的部分,在生物体内表现为对相同刺激始终作出一致反应的机制;而概率机模型则指即使输入确定,输出也存在一定的概率分布,即在特定情况下可能出现不同结果。在大脑思维过程中,这两种模型共同作用,反映了人类及其他生物思考的随机性和必然性,其中“灵魂”被比喻为旁观者,观察并体验着由概率机产生的各种心流状态。
2023-01-02 11:30:59
621
转载
转载文章
... 用root登录系统,运行/usr/sbin/sndconfig。出现选择声卡类型的画面。一般声卡可以选取Sound Blaster 。 选完声卡后再设置有关的资源。用TAB键结合方向键作出选择后,按OK,如果听到Linus(Linux的创始人)说话的声音,就说明声卡设置成功了。真像老式DOS游戏的声卡设置…… 七、如何设置显卡 要设置好你的显卡,首先,要知道你的显卡的型号,是什么公司出的,什么样的类型的显卡,显存有几MB,还要知道显卡的显示芯片是什么类型的,是 ALG2302的,还是SIS6326的,还是Savage3D的,等;然后,在超级用户的权限下,你可以运行界面比较友好的Xconfigurator 工具,这里的X记住一定要大写的,一步一步跟着指导来选择,应该不是很难的,当选择你的显卡的芯片的时钟时,不用选择它,让测试程序自动检查;最后,还要知道你的显示器的类型,是VGA的,还是SVGA的,以及水平和垂直分辩率。你还可以运行界面不友好的xfree86,如果你比较精通Linux的话,用 xfree86命令配置的X Windows效果比Xconfigurator好很多的。界面最友好的,当属XF86Setup工具,若你有安装这个工具的话,不妨就用这个工具来设置你的显卡吧。 八、如何设置网卡 九、如何播放CD音乐 声卡设置好了,可以在光驱中插入一张CD,用装载命令mount将光盘载入,然后输入cdp命令就可以播放了。在屏幕上可以看到CD的音轨清单,小键盘的9是播放,7是停止,6进到下一音轨,4退到前一音轨,0退出播放程序,2弹出CD,8是暂停。 如果是在X-Window中,可以用xplaycd播放CD,这是一个有图形界面的播放器,按钮及功能一目了然,这里就不多说了。 10、如何播放VCD影碟 11、如何拨号上网 12、Linux下能玩游戏吗 光盘中有bsd-games-2.1-3.src.rpm文件包,用RPM命令进行安装,然后到安装目录中去找游戏吧。不过这些游戏都不够精致,如果你想玩好的,就须要进入X-Window,acm是空战模拟游戏,paradise和xpilot是联网战斗游戏,xdemineur是挖地雷(没想到吧),xjewel是俄罗斯方块,xboard是国际象棋,xpat2是扑克牌游戏,xboing是弹珠台游戏,还有Doom——大名鼎鼎的第一人称射击游戏!这些游戏有的可以直接调出,有的须要用RPM命令安装。所有的RPM包都在安装光盘中的srpms目录下,自己去看看吧。 十.用xvidtune调整你的显示器 大家会发现装了linux之后在windows下用的好好的显示器有时进到linux的xwindows里后就歪掉了,调整好之后回到windows后windows的桌面也外调了,来回启动系统每次都要调整很麻烦的,这里介绍一个办法一劳永逸 j进入linux启动x在xterm里执行xvidtune,会弹出这个软件的窗口,点Auto然后点Left,Right等按钮调整你的显示器到最佳的位置,然后点界面上的Show按钮会得到类似这样的输出: "1152x864" 121.50 1152 1232 1360 1568 864 865 868 911 +hsync -vsync 然后退出这个软件,修改你的/etc/X11/XF86Config-4文件在 Section "Monitor" Identifier "AS 786T" VendorName "Unknown" ModelName "Unknown" HorizSync 30 - 87 VertRefresh 50 - 160 Option "dpms" EndSection 里加上刚才的输出,我的是: Section "Monitor" Identifier "AS 786T" VendorName "Unknown" ModelName "Unknown" HorizSync 30 - 87 VertRefresh 50 - 160 Modeline "1152x864" 121.50 1152 1232 1360 1568 864 865 868 911 +hsync -vsync Option "dpms" EndSection 保存然后重起试试看吧 十一.问:我的机器是windows和linux双系统,如何改变grub默认启动的系统? 答:这需要修改/boot/grub/grub.conf。举一个例子你就明白了。假设你的/boot/grub/grub.conf是这样子的: default=0 timeout=10 splashimage=(hd0,7)/grub/splash.xpm.gz title Red Hat Linux (2.4.18-14) root (hd0,7) kernel /vmlinuz-2.4.18-14 ro root=LABEL=/ initrd /initrd-2.4.18-14.img title DOS rootnoverify (hd0,0) chainloader +1 那么你的grub会默认启动Red Hat Linux (2.4.18-14)这个系统,把default=0改成default=1,那么grub会默认启动DOS这个系统。注意,这里的要点是:你想默认启动第n个title所指的系统,那么default应该是等于n-1 十二.问:我的文本控制台怎么总是出现乱码呢? 答:这是因为你安装了中文支持的缘故。解决的方法是安装一个zhcon(一个快速地外挂式CJK(中文/日文/韩文)的多内码平台),我把他放在附件中提供大家下载。关于zhcon的更进一步的消息,大家可以到他的官方主页zhcon.gnuchina.org查看。安装和使用请参考这个连接 http://hepg.sdu.edu.cn/Service/tips/zhcon_manual.html zhcon下载连接: http://zhcon.gnuchina.org/download/...on-0.2.1.tar.gz 十三.问:我在安装一个软件的时候,提示我缺少一个.so文件,安装无法继续,怎么办? 答:.so文件就像windows中的.dll文件一样,是库文件。一个程序的正常安装和运行需要特定的库文件的支持。所以你需要去找到包含这个.so的包装上。去 http://www.rpmfind.net用你缺的那个.....剿枰?rpm包 十四.我访问windows分区时发现所有windows分区中的文件和文件夹名中的中文全变成问号,怎么办? 答:在第三贴中我们讲解了通过编辑/etc/fstab实现在linux中访问windows的fat32分区。同样,我们可以通过进一步修改 /etc/fstab来实现中文文件名显示。只要把/dev/hda1 /mnt/c vfat default 0 0中的default全改为iocharset=cp936就行了。 十五.我的rh8.0中的XMMS不好使,不能播放MP3,怎么办? 答:这是因为rh公司怕别人告他侵权,所以在rh8.0中去掉了XMMS对MP3的支持,8.0以前的版本都是好使的。在8.0中要解决也很简单,装一个插件就行了。这个插件我放在本贴的附件里,rpm格式,经winrar压缩 附件: http://www.chinalinuxpub.com/vbbfor...s=&postid=86299 十六.问:我在linux中怎样才能使用windows分区呢? 答:先说一点背景知识。linux支持很多种文件系统,包括windows的fat32和ntfs。对fat32的支持已经很好,可以直接使用,而对ntfs 的支持还不是太好,只能读,而写是极危险的,并且对ntfs的支持不是默认的,也就是说你想要使用ntfs的话,需要重新编译内核。鉴于重编内核对于新手的复杂性,这里只讲解使用fat32分区的方法下面给出上述问题的两种解决方案:1.在安装系统(linux),进行到分区选择挂载点时,你可以建立几个挂载点,如/mnt/c,/mnt/d等,然后选择你的windows fat32分区,把它们分别挂载到前面建立的挂载点即可。(注意,正如前面所说,在这里你不能把一个ntfs分区挂载到一个挂载点,应为ntfs不是默认支持的。)这样你装好系统后就能直接使用你的windows fat32分区了。例如,你把windows的c盘(linux中的/dev/hda1)挂载到/mnt/c,那么你就能在/mnt/c目录中找到你的c 盘中的全部数据。2. 如果你在安装系统时没有像方案1所说的那样挂载上你的fat32分区,没关系,仍然能够很方便的解决这个问题。首先,用一个文本编辑器(如vi)打开 /etc/fstab,在文件的最后加入类似如下的几行 /dev/hda1 /mnt/c vfat default 0 0 你所要做的修改就是,把/dev/hda1改成你要挂载的fat32分区在linux中的设备号,把/mnt/c改成相应的挂载点即可。注意,挂载点就是一个目录,这个目录要事先建立。举一个例子,我有三个fat32分区,在windows中是c,d,e盘,在linux中的设备号分别为 /dev/hda1,/dev/hda5,/dev/hda6。那么我就要先建立3个挂载点,如/mnt/c,/mnt/d,/mnt/e,然后在 /etc/fstab中加上这么几行: /dev/hda1 /mnt/c vfat default 0 0 /dev/hda5 /mnt/d vfat default 0 0 /dev/hda6 /mnt/e vfat default 0 0 保存一下退出编辑器。这样以后你重启机器后就能直接使用c,d,e这三个fat32格式的windows分区了 十七.问:我的机器重装windows后,开机启动就直接进入了windows,原来的linux进不去了,怎么办? 答:这是由于windows的霸道。重装windows后,windows重写了你的mbr,覆盖掉了grub。解决方法很简单:用你的linux第一张安装盘引导进入linx rescue模式(如何进入?你注意一下系统的提示信息就知道了),执行下面两条命令就可以了 chroot /mnt/sysimage 改变你的根目录 grub-install /dev/hda 安装grub到mbr 十八.问:我的linux开机直接进入文本界面,怎样才能让它默认进入图形界面? 答:修改/etc/inittab文件,其中有一行id:3:initdefault,意思是说开机默认进入运行级别3(多用户的文本界面),把它改成id:5:initdefault,既开机默认进入运行级别5(多用户的图形界面)。这样就行了。 十九.如何同时启动多个x 以前的帖子,估计很多人没看过,贴出来温习一下 Linux里的X-Windows以其独特的面貌和强大的功能吸引了很多原先对linux不感兴趣的人,特别是KDE和GNOME,功能强大不说,而且自带了很多很棒的软件,界面非常友好,很适合于初学者。下面告诉大家一个同时启动6个X的小技巧: 在~/.bashrc中加入 以下几行: alias X=startx -- -bpp 32 -quiet& alias X1=startx -- :1 -bpp 32 -quiet& alias X2=startx -- :2 -bpp 32 -quiet& alias X3=startx -- :3 -bpp 32 -quiet& alias X4=startx -- :4 -bpp 32 -quiet& alias X5=startx -- :5 -bpp 32 -quiet& 其中32是显示器的色彩深度,你应该根据自己的实际情况设置。 之后运行 bash 使改变生效,以后只要依次运行X,X1,X2,X3,X4,X5就可以启动6个X-Windows了。 二十.装了rpm的postgresql之后启动 /etc/init.d/postgresql start 是不能启动postgresql的tcp/ip连接支持的,所以打开/etc/init.d/postgresql这个文件把 su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $PGDATA -p /usr/bin/postmaster start > /dev/null 2>&1" < /dev/null 改为: su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -o -o -F -i -w -D $PGDATA -p /usr/bin/postmaster start > /dev/null 2>&1" < /dev/null 这样就可以启动数据库的tcp/ip链接了 二十一.如何将man转存为文本文件 以ls的man为例 man ls |col -b >ls.txt 将info变成文本,以make为例 info make -o make.txt -s 二十二.如何在文本模式下发送2进制文件 首先检查系统有没有uuencode 和 uudecode如果没有从光盘上装 rpm -ivh sharutils-x.xx.x-x.rpm 假设要发送的文件是vpopmail-5.2.1.tar.gz执行 uuencode -m vpopmail-5.2.1.tar.gz vpopmail.tar.gz>encodefile 说明: uuenode是编码命令,-m是使用mime64编码,vpopmail-5.2.1.tar.gz是要编码的文件,vpopmail.tar.gz是如果解码后得到的文件名,encodefile是编码后的文件名。 执行上述命令之后就可以通过mail命令发送编码后的文件了 mail chenlf@chinalinuxpub.com<encodefile 好了,现在我来接收邮件 在控制台上输入mail命令: mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/chenlf": 2 messages 2 new >N 1 chenlf@ns1.catv.net Mon Jun 10 16:44 17/363 N 2 root@ns2.catv.net Mon Jun 10 16:45 6091/371145 & 2 Message 2: From root@ns2.catv.net Mon Jun 10 16:45:28 2002 Date: Mon, 10 Jun 2002 16:44:51 +0800 From: root <root@ns2.catv.net> To: chenlf@chinalinuxpub.com begin-base64 644 vpopmai.tar.gz H4sIABr15TwAA+w9a2PbNpL7NfwVqNPbWIlFPSzbiR2n9SuxE7/OcuLNtdmU EiGLMUWqfFhWt7u//eYBgKRE2U7iTa+3VndjiQQGg5nBYDAYDC6H4XDgeH51 yW7ajdpf/h2fer1VX1lagr/1+spyq/BXff5SX2mtNBZXmovN5l/qjWZrqfEX sfRvwWbik8aJEwnxl7ifDofXlLvp/Z/0c1nk/8uN/777NuqNen251ZrB/+XF pcUG8r/ZbC0vL9ZXoPwi/O8von73qEx//sP5bwHHxanT8aUIe2IrDBIZJLFl 7QVJFFovpZOkkYxFL4yEFhVLCKhk1W2xG45E1wnEnohlIsJAiksvSlLHF24I JQORhKIjRdKXYhh5Ayca6xcAD8DQm4HT7XuB/EGcSXgbPErEyAkSrNp3LqVw grGoyaRbGzpxPHJFGssotq0Gtw6l9gTgJbixode9EOlQDMaTmEjE/AerydVc rAY4jJzIFY7vC3wL2DgJvJIxIjFwkm6fWkfw1KoAIti/EgkWc3A6YRp05ReB aeXAQH34GoXOwAvOVUnoEnwRYRqJeJAMgczRpYzEyEv6YQoUH8oACltLtjjD Rr1YOCJ2BkPgJop1IuJu5A0TYh9xIdQwfrCWTdt9pMKvaZg4j5jT3PgojC5+ sFZswM0LAJzvSyhGXQSCOmLoO9DtEOAicBCD2qUT1agAg44BSd+1niIEzVPs ................. ................. ................. & s 2 encodefile "encode" [New file] & q 然后进行解码 uudecode encodefile ls encodefile vpopmai.tar.gz tar zxvf vpopmail.tar.gz OK了 二十三.将 man page 转成 HTML 格式 使用 man2html 这个指令,就可以将 man page 转成 HTML 格式了。用法是: man2html filename > htmlfile.html 二十四.如何在gnome和kde之间切换。 如果你是以图形登录方式登录linux,那么点击登录界面上的session(任务)即可以选择gnome和kde。如果你是以文本方式登录,那执行switchdesk gnome或switchdesk kde,然后再startx就可以进入gnome或kde。 25...tar,.tar.gz,.bz2,.tar.bz2,.bz,.gz是什么文件,如何解开他们? 他们都是文件(压缩)包。 .tar:把文件打包,不压缩:tar cvf .tar dirName 解开:tar xvf .tar .tar.gz:把文件打包并压缩:tar czvf .tar.gz dirName 解开:tar xzvf .tar.gz .bz2:解开:bzip2 -d .bz2 .bz:解开:bzip -d .bz .gz:解开:gzip -d .gz 26.linux下如何解开.zip,.rar压缩文件? rh8下有一个图形界面的软件file-roller可以做这件事。令外可以用unzip .zip解开zip文件,unrar .rar解开rar文件,不过unrar一般系统不自带,要到网上下载。 27.linux下如何浏览.iso光盘镜像文件? a.建一个目录,如:mkdir a b.把iso文件挂载到该目录上:mount -o loop xxxx.iso a 现在目录a里的内容就是iso文件里的内容了。 28.linux下如何配置网络? 用netconfig。“IP address:”就是要配置的IP地址,“Netmask:”子网掩码,“Default gateway (IP):”网关,“Primary nameserver:”DNS服务器IP。 29.如何让鼠标支持滚轮? 在配置鼠标时,选择微软的鼠标,并正确选择端口如ps2,usb等 30.如何让控制台支持中文显示? 安装zhcon。zhcon需要libimm_server.so和libpth.so.13这两个库支持。一般的中文输入法应该都有libimm_server.so。libpth.so.13出自pth-1.3.x。把这两个文件放到/usr/lib下就行了。 31.如何配置grub? 修改/boot/grub/grub.conf文件。其中 “default=n”(n是个数字)是grub引导菜单默认被选中的项,n从0开始,0表示第一项,1表示第二项,依此类推。 “timeout=x”(x是一个数)是超时时间,单位是妙。也就是引导菜单显示后,如果x秒内用户不进行选择,那么grub将启动默认项。 “splashimage =xxxxxx”,这是引导菜单的背景图,先不理他。 其它常用项我用下面的例子来说明: title Red Hat 8.0 root (hd1,6) kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hdb7 initrd /boot/initrd-2.4.18-14.img 其中"Red Hat 8.0"是在启动菜单列表里显示的名字 root (hdx,y)用来指定你的boot分区位置,如果你没有分boot分区(本例就没分boot分区),那就指向根分区就行了,hdx是linux所在硬盘,hd0是第一块硬盘,hd1是第二块,依此类推。y是分区位置,从0开始,也就是等于分区号减一,比如你要指向的分区是hdx7,那么y就是6,如果是hdx1,那y就是0。注意root后面要有一个空格。 kernel /boot/vmlinuz-2.4.18-14,其中"/boot/vmlinuz-2.4.18-14"是你要用的内核路径,如果你编译了心内核,把它改成你的新内核的路径就行了。 ro就不用管,写上不会有错。 root=/dev/hdxx指定根分区,本例是hdb7,所以root=/dev/hdb7 initrd xxxxxxxxxxxxx这行不要也行,目前我还不清楚它是做什么用的。 上面是linux的,下面是windows的 title windows 98 rootnoverify (hd0,0) chainloader +1 title xxxxxxx不用解释了,上面有解释。 rootnoverify (hdx,y)用来指定windows所在分区,x,y跟上面一样,注意rootnoverify后有空格。 chainloader +1照抄就行,注意空格。 本篇文章为转载内容。原文链接:https://blog.csdn.net/gudulyn/article/details/764890。 该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。 作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。 如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。
2023-10-27 09:27:49
256
转载
转载文章
...该超声雾化-LIBS系统的适用性,相关实验装置如图 10、图 11所示[15]。 图 10 用于金属气溶胶分析的LIBS实验装置图[15] M:532 nm反射镜,L:聚焦准直透镜,W:石英,P:泵浦,BD:光束转储 图 11 样品导入部分结构图[15] (A)与薄膜干燥器相连的USN颗粒发生器去溶装置(加热器和冷凝器);(B)与5个武装聚四氟乙烯等离子电池相连的薄膜干燥器。G:进气口,DU:脱溶装置,W:废料,MD:薄膜干燥机,L:激光束方向,C:样品池,M:反射镜,F.L.:聚焦透镜 4. 总结与展望 本文简要介绍了LIBS和LIBS-LIF的原理,并对LIBS-LIF在环境监测中的土壤监测和水质检测做了简要的介绍和分类。 LIBS-LIF在土壤监测的技术已经逐渐成熟,基本实现了土壤的快速检测,同时也有相关便携式设备的研究正在进行。对于水质监测方面,使用LIBS-LIF检测往往集中在液固转换法的使用上,对于气体和液体直接检测,由于部分实验装置的限制,联用LIF技术往往比较困难,只能使用传统的LIBS技术。 LIBS-LIF技术快速检测、不需要样品预处理或只需要简单处理、可以实现就地检测等优势与传统实验室检测相比有着独到的优势,虽然目前由于技术限制精度还不够高,但是在当前该领域的火热研究趋势下,相信未来该技术必定可以大放异彩,为绿色中国奉献光学领域的智慧。 参考文献 [1] Hu B, Jia X, Hu J, et al.Assessment of Heavy Metal Pollution and Health Risks in the Soil-Plant-Human System in the Yangtze River Delta, China[J].International Journal of Environmental Research and Public Health,2017, 14 (9): 1042. [2] 康娟. 基于激光剥离的物质元素高分辨高灵敏分析的新技术研究[D]. 华南理工大学,2020. [3] 马菲, 周健民, 杜昌文.激光诱导击穿原子光谱在土壤分析中的应用[J].土壤学报: 1-11. [4] Gaudiuso R, Dell'aglio M, De Pascale O, et al.Laser Induced Breakdown Spectroscopy for Elemental Analysis in Environmental, Cultural Heritage and Space Applications: A Review of Methods and Results[J].Sensors,2010, 10 (8): 7434-7468. [5] Zhou R, Liu K, Tang Z, et al.High-sensitivity determination of available cobalt in soil using laser-induced breakdown spectroscopy assisted with laser-induced fluorescence[J].Applied Optics,2021, 60 (29): 9062-9066. [6] Hussain Shah S K, Iqbal J, Ahmad P, et al.Laser induced breakdown spectroscopy methods and applications: A comprehensive review[J].Radiation Physics and Chemistry,2020, 170. [7] V S D, George S D, Kartha V B, et al.Hybrid LIBS-Raman-LIF systems for multi-modal spectroscopic applications: a topical review[J].Applied Spectroscopy Reviews,2020, 56 (6): 1-29. [8] Gornushkin I B, Kim J E, Smith B W, et al.Determination of Cobalt in Soil, Steel, and Graphite Using Excited-State Laser Fluorescence Induced in a Laser Spark[J].Applied Spectroscopy,1997, 51 (7): 1055-1059. [9] Hilbk-Kortenbruck F, Noll R, Wintjens P, et al.Analysis of heavy metals in soils using laser-induced breakdown spectrometry combined with laser-induced fluorescence[J].Spectrochimica Acta Part B-Atomic Spectroscopy,2001, 56 (6): 933-945. [10] Gao P, Yang P, Zhou R, et al.Determination of antimony in soil using laser-induced breakdown spectroscopy assisted with laser-induced fluorescence[J].Appl Opt,2018, 57 (30): 8942-8946. [11] Zhang Y, Zhang T, Li H.Application of laser-induced breakdown spectroscopy (LIBS) in environmental monitoring[J].Spectrochimica Acta Part B: Atomic Spectroscopy,2021, 181: 106218. [12] Barreda F A, Trichard F, Barbier S, et al.Fast quantitative determination of platinum in liquid samples by laser-induced breakdown spectroscopy[J].Anal Bioanal Chem,2012, 403 (9): 2601-10. [13] Chen Z, Li H, Liu M, et al.Fast and sensitive trace metal analysis in aqueous solutions by laser-induced breakdown spectroscopy using wood slice substrates[J].Spectrochimica Acta Part B: Atomic Spectroscopy,2008, 63 (1): 64-68. [14] Kang J, Li R, Wang Y, et al.Ultrasensitive detection of trace amounts of lead in water by LIBS-LIF using a wood-slice substrate as a water absorber[J].Journal of Analytical Atomic Spectrometry,2017, 32 (11): 2292-2299. [15] Aras N, Yeşiller S Ü, Ateş D A, et al.Ultrasonic nebulization-sample introduction system for quantitative analysis of liquid samples by laser-induced breakdown spectroscopy[J].Spectrochimica Acta Part B: Atomic Spectroscopy,2012, 74-75: 87-94. 本篇文章为转载内容。原文链接:https://blog.csdn.net/yyyyang666/article/details/129210164。 该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。 作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。 如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。
2023-08-13 12:41:47
361
转载
站内搜索
用于搜索本网站内部文章,支持栏目切换。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
sed -i 's/old_text/new_text/g' file.txt
- 替换文件中所有旧文本为新文本。
推荐内容
推荐本栏目内的其它文章,看看还有哪些文章让你感兴趣。
2023-04-28
2023-08-09
2023-06-18
2023-04-14
2023-02-18
2023-04-17
2024-01-11
2023-10-03
2023-09-09
2023-06-13
2023-08-07
2023-03-11
历史内容
快速导航到对应月份的历史文章列表。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"