MyBatis-Plus入门

目录 1.MyBatis-Plus介绍 (1)简介 (2)特性 (3)结构 (4)支持数据库 2.快速开始 3.安装与配置 4.代码生成 5.综合案例 (1)主键生成策略 (3)自动填充 1.MyBatis-Plus介绍 (1)简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了一些常用功能的增强,使得开发者可以更加便捷地进行数据库访问操作。 我们的愿景是成为MyBatis最好的搭档,就像魂斗罗中的 1P、2P,基友搭配,效率翻倍。 (2)特性 CRUD操作的增强:Mybatis-Plus通过提供通用的Mapper接口和封装的CRUD方法,简化了数据库的增删改查操作。开发者可以通过继承通用Mapper接口,无需编写SQL语句,就能完成基本的CRUD操作。 条件构造器:Mybatis-Plus提供了强大的条件构造器,使得构建复杂的查询条件变得更加灵活和易于维护。条件构造器支持链式调用,可以根据需求动态添加查询条件,包括等值条件、范围条件、模糊查询等。 自动分页:Mybatis-Plus可以自动处理分页查询,开发者只需要在查询方法中添加分页参数,即可实现数据的分页查询。它支持多种数据库的分页方式,如MySQL的LIMIT语句、Oracle的ROWNUM等。 代码生成器:Mybatis-Plus提供了一个代码生成器,可以根据数据库表结构自动生成实体类、Mapper接口、XML映射文件等基本代码。开发者可以通过简单的配置,快速生成大量的基础代码,减少了手写重复代码的工作量。 全局通用操作:Mybatis-Plus还提供了一些全局通用操作的增强,如逻辑删除、字段自动填充、乐观锁等。这些功能可以通过注解或配置进行开启,并且可以自定义实现,以满足不同业务场景的需求。 总的来说,Mybatis-Plus简化了Mybatis的开发流程,提高了开发效率。它提供了一些常用功能的增强,使得开发者无需编写繁琐的SQL语句,即可完成常见的数据库操作。同时,它也提供了一些附加功能,如条件构造器、自动分页、代码生成器等,进一步提升了开发效率和代码质量。 (3)结构 核心模块(Core Module):核心模块包含了Mybatis-Plus的核心功能和基本组件。它提供了通用的Mapper接口、通用的CRUD方法的实现、条件构造器、分页插件等核心功能的实现。核心模块是整个框架的基础,其他模块都依赖于它。 代码生成器(Code Generator):代码生成器是一个可选的辅助工具,用于根据数据库表结构自动生成实体类、Mapper接口、XML映射文件等基础代码。通过代码生成器,开发者可以快速生成基础代码,减少手写重复代码的工作量。 扩展模块(Extension Module):扩展模块是Mybatis-Plus提供的一些扩展功能和增强组件的集合。它包括了一些常用的增强功能,如逻辑删除、字段自动填充、乐观锁等。开发者可以通过引入扩展模块,轻松地增加这些功能的支持。 注解(annotation):用于对实体类、Mapper接口以及SQL语句进行配置和标记。通过使用注解,可以简化配置文件的编写,提高代码的可读性和可维护性。 (4)支持数据库 MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb,informix,TDengine,redshift 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库,优炫数据库 2.快速开始 使用Spring Initializer快速初始化一个 Spring Boot 工程(工程将以 MySQL 作为默认数据库) 添加依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.

SpringBoot实用篇

SpringBoot实用篇 1、热部署 什么是热部署? 所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。对于Java应用程序来说,热部署就是在运行时更新Java类文件。 热部署有什么用? 节约时间,热部署只需要重新更新一下改动过的class文件,不需要全部再编译一遍提高开发效率,热部署对于静态资源能够实现实时更新,不需要再重启项目 1.1 手动开启热部署 之前在SSM中我们热部署,是通过勾选两个选项就实现了: 而在SpringBoot首先我们需要通过热部署依赖实现热部署:(Step1) <!--热部署依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- 配置插件,让热部署依赖spring-boot-devtools生效 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 设置为true,让热部署devtools生效 --> <fork>true</fork> <addResources>true</addResources> </configuration> </plugin> 然后每次当我们修改了代码(Step2)后,我们需要点击构建项目:(Step3) 这样就不需要重启项目了 知识拓展:重启和重载 重启(Restart):自定义开发代码,包含类、页面、配置文件等,加载位置restart类加载器重载(ReLoad):jar包,加载位置base类加载器 重新运行项目也就是重启项目包括了Restart过程和ReLoad过程,而热部署只包含Restart过程 1.2 自动开启热部署 自动开启热部署,也是需要引入热部署依赖的 Step1: Step2: 温馨提示:如果使用的是IDEA 2021.2之前版本的话还是使用快捷键Shift+Ctrl+Alt+/,选择Registry...,将compiler.automake.allow.when.app.running选项勾上(这里我使用的是2022版的IDEA) 注意:汉化后的IDEA这个选项的位置发生了变化 Step3: IDEA鼠标悬停5秒不动,IDEA就会自动开启热部署 1.3 热部署相关配置 通过修改项目中的文件,你可以发现其实并不是所有的文件修改都会激活热部署的,原因在于在开发者工具中有一组配置,当满足了配置中的条件后,才会启动热部署,配置中默认不参与热部署的目录信息如下: /META-INF/maven/META-INF/resources/resources/static/public/templates 以上目录中的文件如果发生变化,是不参与热部署的。如果想修改配置,可以通过application.yml文件进行设定哪些文件不参与热部署操作,如果想添加不参与热部署的文件或文件夹,可以通过下面的配置: spring: devtools: restart: # 设置不参与热部署的文件或文件夹 exclude: static/**,public/**,config/application.yml # 关闭或开启热部署(false表示关闭) enable: false /**表示文件夹 知识拓展: 在resource下的配置文件中选择关闭热部署,可以会在其它地方打开,比如在resource/config/下的配置文件中开启了热部署,又或者在file下的配置文件,又或者是file下config下的配置文件中开启了热部署,这是由于其它三个配置文件的优先级要高于resource下的配置文件,我们可以通过设置临时属性来提高优先级,也可以通过设置Java系统属性值,具体相关知识可以参考:SpringBoot运维篇学习笔记 2、高级配置 相关配置学习,在基础篇的学习了配置,在运维篇也学习了配置,现在实用篇还是接着学习配置。越往后相关配置就越接近开发,相关配置也是在开发中最常用的那些 2.1 属性绑定 所谓的属性绑定就是指“属性文件中的属性和配置类中字段之间形成一个映射关系” 2.1.1 @ConfigurationProperties 使用@ConfigurationProperties实现属性绑定

初识SpringBoot(2023最后一篇文章)

初识SpringBoot 1、SpringBoot概述 Spring是什么? Spring是一个于2003 年兴起的一个轻量级开源Java开发框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但是Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从Spring中获益。 Spring官网:Spring | Home SpringBoot是什么? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 SpringBoot有什么用? 简化Spring的配置。 使用Spring开发存在两个十分繁琐的地方; 依赖设置繁琐。在开发Spring程序的时候,特别是在整合SSM时,一下就要导入一大推的依赖,让我们的pom.xml文件显得很混乱配置繁琐。在开发Spring程序时,我们通常都需要手动去编写配置类或配置文件,比如:Spring的配置文件、SpringMVC的配置文件,配置文件需要配置的东西也很多,但是大部分的东西都是可以服用的,这就显得繁琐 Spring的核心功能: 起步依赖(简化依赖配置):依赖配置的书写简化就是靠这个起步依赖达成的自动配置(简化常用工程相关配置):配置过于繁琐,使用自动配置就可以做响应的简化,但是内部还是很复杂的,后面具体展开说辅助功能(内置服务器,……):除了上面的功能,其实SpringBoot程序还有其他的一些优势,比如我们没有配置Tomcat服务器,但是能正常运行,这是SpringBoot程序的一个可以感知到的功能,也是SpringBoot的辅助功能之一。一个辅助功能都能做的这么6,太牛了 SpringBoot的优点: 避免版本冲突。当一个项目使用了多个技术时,如果版本不选择正确,就会发生冲突,而SpringBoot通过parent提供了很多套技术搭配,然后我们只需要通过stater直接引入你想要的一套就行了,此时就只需要引入一个stater依赖就可以了,通过依赖传递能够引入这一套技术所有的依赖,不用像以前一样写一个Spring程序,要搞得pom.xml很混乱、臃肿 注意:praent的目的是避免依赖冲突,它提供很多套技术组合;stater的目的是减少依赖配置,只需要依赖一个stater,通过依赖传递,可以使用到其它的依赖 SpringBoot如何用? 参考后文👇 2、快速入门 前置须知:在创建SpringBoot项目之前,必须先安装好Maven 推荐使用Maven3.6.1 方式一:直接在IDEA中创建(最常见也是最直接的方式) 创建SpringBoot项目 编写SpringBoot项目 运行SpringBoot项目 访问运行的SpringBoot项目 Step1:创建SpringBoot项目 备注:这一步需要进行联网,IDEA默认是访问https://start.spring.io,这是Spring官方提供用来初始化SpringBoot项目的在线工具,它和Github一样在服务器在国外,访问起来有点慢,推荐使用国内的淘宝镜像https://start.aliyun.com/ 备注:SpringBoot2版本是当下最稳定的版本 Step2:编写一个SpringBoot程序: package com.hhxy.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author ghp * @date 2022/12/16 * @title * @description */ @RestController @RequestMapping("/test") public class TestController { @GetMapping public String test(){ System.

在 WPF 中使用本地 Webview2 ,如何不依赖系统 Runtime

在 WPF 中使用本地 Webview2 ,如何不依赖系统 Runtime 在 WPF 中使用本地 Webview2 ,如何不依赖系统 Runtime 作者:WPFDevelopersOrg - ArcherSong 项目运行环境: .Net Framework 4.5.2 Windows 7 x64 Service Pack 1 WebView2 Microsoft.WebView2.FixedVersionRuntime.120.0.2210.91.x64 考虑到很多老项目,本项目使用的是.Net Framework 4.5.2,.Net 更高版本的其实也是可以支持的。 1、下载 WebView2 固定版本 Runtime 首先下载自己想要的固定版本的 WebView2 Runtime[1] 下载下来的文件为 Cab 格式的文件,此文件为压缩文件 将其解压,可得到如下的目录 \MICROSOFT.WEBVIEW2.FIXEDVERSIONRUNTIME.120.0.2210.91.X64 ├─EBWebView │ ├─x64 │ └─x86 ├─edge_feedback ├─Extensions ├─Locales ├─MEIPreload ├─Notifications ├─PdfPreview ├─Trust Protection Lists │ ├─Mu │ └─Sigma └─WidevineCdm └─_platform_specific └─win_x64 2、创建项目,将Webview2 复制到项目中 创建.Net Framework 4.5.2 WPF 项目,将解压的Webview2 复制到项目中,如下图所示:

2023年总结:坚持一些看似无用的东西

在不知不觉中,2023年已接近尾声,2024年也将乘风而至。回首这一年当中,有过迷茫,喜悦,希望,失落,却也在不断前行着。不管是工作,生活,都不会一帆风顺,虽有风雨,却也在不断砥砺前行,做着自己认为对的,却看似无用的事情。 工作上 公司主要以设备为主,其他业务为辅,时不时也会安排出差,任务安排自由度较高,个人感觉也还不错。技术上以.Net为主,主要和设备产出物,以及人工智能交互为主。在2023年,工作上虽不能做到尽善尽美,但也能无愧于薪,同事之间相处也挺融洽,偶尔还会和同事朋友小酌一番,参与户外爬山等活动。虽然大家都很忙碌,但也会偷得浮生半日闲,远离闹市,不谈工作,只为那一时半会儿的自然之情。 生活上 还记得2023年之初,疫情刚刚解封,母亲便因为身体原因紧急住院手术,而我也因为心中牵挂,火急火燎的从深圳赶回千里之外的河南。在老家待了10天不到,母亲身体稍微好点,又匆匆的回到深圳工作。虽然母亲说,太远,不好请假,不回来也行,家里还有姐姐和弟弟,但身为人子,如若不回去,属实心中难安。2023年5月份,女儿又因为内出血紧急住院,家中只有年迈的父母照顾,身为人父,哪有不牵挂子女的,又再次匆匆回到河南老家。因为乡下医院条件有限,不得不转到郑州治疗,好在上天垂怜,在经过15天的住院治疗后,成功康复。值得庆幸的是,父母和女儿的身体,在随后的几个月,也逐渐恢复。其他一整年,从未因为个人原因请过假,也不敢请假,真的是人到中年不如狗。再加上其他事情,生活真的是一地鸡毛。 技术上 其实从个人来说,我是喜欢编程的,因为在写程序的时候,心中想的只有程序,并没有其他乱七八糟的东西,至少那短暂的时刻是这样的。2023年,一直在不断的坚持分享编程相关知识,而自己也在不断总结中自我完善。所谓他山之石可以攻玉,学习,总结,分享,反馈,形成一个良好的循环。2023年主要在CSDN,博客园,公众号,阿里云社区等分享文章,虽然分享文章并不能获得啥实质的经济上的收入,在大部分人眼里,这些都不值一提, 但我会继续坚持下去。 2024展望 没有人的生活是一帆风顺的,坎坎坷坷的人生才是生活,在新的一年里,我依然会努力工作,热爱生活,不断学习,持续分享。希望2024年,我们都能不念过往,不畏将来,过好每一天。 虽然日子已经很不容易,但偶尔也要恣意一些,很喜欢的一首诗,送给大家: 鹧鸪天 【宋.朱敦儒】 我是清都山水郎,天教分付与疏狂。曾批给雨支风券,累上留云借月章。 诗万首,酒千觞。几曾着眼看侯王?玉楼金阙慵归去,且插梅花醉洛阳。

2023年终总结

文章目录 基调工作方面遇到了什么人技术高手内功深厚语言只是工具不要放过小问题 职场高手地狱开局三板斧 软实力高手文档能力工作职责 学到了什么技术上专业度上软技能上 个人生活展望2024工作上期望生活上的期望 结尾 博主最近3年都没写年终总结了,总是慌张又匆忙的渡过一年又一年。趁着今年时间充足,那就简单的做个总结吧,回望过去,展望未来。 基调 逢9生变,宜蛰伏,宜积累,不宜张扬。没错,今年就是博主的逢9之年,恰逢大环境不好,因此个人也认为今年是“积累之年”,默默沉淀,等待机会。 工作方面 遇到了什么人 技术高手 这个同事堪称我遇到过的技术巅峰。 内功深厚 linux内核+编译原理打底,就像一个修炼易筋经几十年的高手,再去学习各种招式都是手到擒来。 语言只是工具 做着基于c++的渲染工作,周末用ts撸个vscode扩展。花2周时间排查个安卓底层库的问题,再花2周用swift撸个ios的交互引擎库,再花2周支援云服务团队写个go应用。更过分的是,他之前是python专家。。。 完美践行了博主对于“语言只是工具”的理解,跨语言从来都不是问题,有问题的是恐惧跨语言的工程师。 不要放过小问题 举个例子,遇到一个node库耗时比较长的问题。对大部分人来说,基本发掘是库的原因就停了,大家潜意识里面可能觉得是库的原因,我没办法的。 但是大佬却说,不要放过小问题,深究下去就能学到很多东西。 一路深究下去,从node->wasm库->rust源码->优化->编译rust->发布npm包,知识也学到了,耗时问题也解决了。我想大佬之所以是大佬,就是在深究一个个小问题的过程中成长起来的吧,很好,我也学会了! 很幸运,他不是一个孤僻的高手,很乐意去分享他解决问题的思路,经验。博主跟着高手学到了很多,可惜内功不到位,学习新东西的速度还有待提高。 职场高手 这个同事的事迹,我愿称之为“逆天改命”。 地狱开局 入职前是带团队的P8title,由于没有坑位,组织架构上和博主这种大头兵挂到了一起,可谓地狱开局。但是人家没有表现出来什么不甘心之类的情绪,快速调整心态,认清当前的定位。 三板斧 第一板斧之先声夺人 入职第1天把团队的项目看了下,凭借自己丰富的行业经验,发现项目中的改进点。 入职第2天,输出项目改进文档,并给出改进后的数据支撑,拉大会,获取大领导的支持。 博主评价:一下子就把逼格拉起来了,跟我等入职熟悉项目都要一周的人形成了鲜明的对比。 第二板斧之勇于发声 完整的体验团队的产品,站在用户和技术角度给出自己的建议,体现个人专业性。发现并指出开发流程上不规范的地方,然后输出标准开发流程,自称互联网老兵,体现个人经验丰富。对事不对人,针对架构中的问题,给出更好的方案,并且参与进去解决问题,体现个人能力。 博主评价:这些问题就没其他人看出来吗?当然不是,有些问题是看出来了但推不动,有些问题是说出来就会得罪人的。但是这位同事不怕,一是工作中难免会得罪人,二是站在+2大领导的角度去提出和解决问题肯定是没毛病的。 第三板斧之扩大影响 例如提出Owner意识,并输出《Owner意识科普》,《Owner意识培养计划》,《Owner意识阶段性成果》等文档。联合hr和+2大领导,推动Owner意识成为部门级重要工作。 博主评价:Owner意识老早就在互联网传开了,为什么现在还在提这个概念?其实团队内早期也推行过Owner意识,但是失败了。这位同事的亮点在于不是只提出问题,而是给出了培养计划,给出了切实可行的方案。毕竟对老板来说,能加强下边人的Owner意识和责任感是绝对有意义的事情。 人家的三板斧,完美做到了三件事: 你的加入给团队带来了什么变化你提前发现并解决了什么问题除了公司安排的任务,其他的产出是什么 结果:耗时大半年逆天改命,成功成为+2大领导的心腹,团队地位还在小组leader之上。说实话,十分佩服。 软实力高手 博主认为工作越久,软实力就越重要,就比如智商和情商,缺一不可。 遇到这位同事之前,博主还觉得自己的文档能力不错,毕竟写了这么多年博客,结果被秒杀成渣,其他专业度方面也是拍马不及。 文档能力 例如文档相关的灵魂拷问: 你文档的受众人群是谁,满足受众人群的看文档的目的了吗?用词是否精准,是否节省了不必要的解释成本?没有数据支撑的结果有足够的说服力吗? 工作职责 例如工作职责相关的灵魂拷问: 你的团队和你自己的职责范围是什么,边界是否可以清晰描述出来?你职责范围内要如何递进成长,是否可以站在整条线的角度思考接下来工作计划?是否可以归纳总结一些方法或者分享一些自动化工具来提升影响力? 剩下的还有边界和承诺,工作习惯和方式等等。只能说跟他比起来,博主确实不算专业的工程师。 说了很多,既是大佬们的优点,也是博主自身还需要提升的方向。三人行必有我师,从大佬身上学习并认识到自身问题,那么解决问题就变得简单很多。很幸运,遇到这么多良师益友。 学到了什么 技术上 提升计算机内功,一通百通。网络抓包,程序debug,性能分析三位一体就能解决绝大部分工程问题语言只是工具,不要害怕不要多想,做就完了。不要放过小问题,这些小问题里面往往藏着你还未掌握的知识点。 专业度上 思考要如何对外输出自己的专业度,营造专业工程师身份除了工作内的任务,工作之外的产出是最大的加分项个人视野提升到整个产品上,只了解上下游并不够,要熟悉自己的产品,主动去了解竟品。思考半年后你负责的业务会如何发展,从技术角度输出建议给产品,当然,必须要拉大会。 软技能上 文档一定要慎重的去写,换位思考,你的目标人群需要的是什么过程会占用大量的时间,但最重要的是结果,重视结果的输出。低头干活儿抬头看路,你的工作职责定位边界是什么,提高一级视野去思考,会有不一样的风景。勇敢的发声,“从此在大场面,我不再站旁边” 个人生活 减肥。年中又捡起了减肥,好消息是减了20斤,坏消息是年底反弹了10斤。周末。今年基本没有错过周末的美好时光,要不是“周末逃离杭州”,要么是爬山,还去爬了雪山,非常满意。睡眠。睡觉时间往前提了1个小时,明显人更有精神了。以前可以说每天都残血状态,现在基本保持80分状态,很满意。学习。好消息是今年看书没停,坏消息是看了40本小说,却只看了2本正经书。一本是重温《计算机组成原理》,一本是因为工作要求学习了《计算机图形学》订婚。和女友爱情长跑4年,终于完成了订婚这件大事。感谢妹子的一路支持,我每天都很开心呢。 展望2024 工作上期望 向着技术专家前进。 年近30,也是时候向下一步出发了,目标只有一个,那就是称为技术专家! 提升路径还是老生常谈,主要就是以下三个方面: 技术上软实力上思考方式上 生活上的期望 继续减肥,希望拍婚纱照的时候可以瘦一些户外进行到底,可以让自己变得更加开朗早睡+锻炼,八段锦可以练起来了再看两本书吧,数据结构与算法,操作系统方面最重要的事,和我爱的人结婚,一起渡过这漫长的一生~ 结尾 不知不觉啰嗦了很多,那就以今年听最多次的《清白之年》的一句歌词结尾吧。“我想回头望,把故事从头讲,时光迟暮不返,人生已不再重来”。珍惜每一年,趁着还年轻,去体验,去感受,去享受生活。

Java之程序、进程、线程、管程和并发、并行的概念

文章目录 1. 进程与线程1.1 程序1.2 进程1.3 线程1.4 管程 2.并行与并发2.1 并发2.2 并行 1. 进程与线程 1.1 程序 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。简单的说就是我们写的代码。 1.2 进程 (1)程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。 (2)进程就是用来加载指令、管理内存、管理 IO 的 (3)当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 (4)进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等) (5)进程是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程。进程也是程序的一次执行过程,它是一个动态的概念,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程(比如我们使用的QQ,就启动了一个进程,操作系统就会为该进程分配内存空间。当我们使用迅雷,又启动了一个进程,操作系统将为迅雷分配新的内存空间。) 1.3 线程 (1)线程是由进程创建的,是进程的一个实体;一个进程可以拥有多个线程。例如:使用浏览器同时下载多个文件,就是一个进程有多个线程。 (2)一个进程之内可以分为一到多个线程。 (3)一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行 (4)Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。 在 windows 中进程是不活动的,只是作为线程的容器 ①单线程 同一个时刻,只允许执行一个线程 ②多线程 同一个时刻,可以执行多个线程,比如:一个qq进程,可以同时打开多个聊天窗口 1.4 管程 管程俗称Monitor(监视器),也就是我们平时所说的锁。 2.并行与并发 2.1 并发 (1)单核 cpu 下,线程实际还是 串行执行 的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片(windows下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是 同时运行的 。总结为一句话就是: 微观串行,宏观并行 ,一般会将这种 线程轮流使用 CPU 的做法称为并发, concurrent

Kubernetes技术与架构-集群管理

Kubernetes技术与架构提供支撑工具支持集群的规划、安装、创建以及管理。 数字证书 用户可以使用easyrsa、openssl、cfssl工具生成数字证书,在kubernetes集群的api server中部署数字证书用于访问鉴权 资源管理 如上所示,定义一个服务类service用于负载均衡器、定义三个分片实例的部署类deployment用于代理服务器nginx、服务类service绑定部署类deployment kubectl apply -f 提交配置文件命令行 kubectl delete -f 删除配置文件命令行 kubectl get 查询资源对象信息命令行 kubectl scale 扩缩容分片实例 kubectl autoscale 自动扩缩容分片实例 kubectl edit 编辑配置文件 kubectl patch 更新对象实例属性 kubectl replace 替换对象实例属性 如上所示,kubernetes集群提供不同的命令行管理配置文件或者对象实例 集群网络 Kubernetes集群的网络管理主要分为容器与容器之间的网络交互、Pod与Pod之间的网络交互、Pod与service之间的网络交互、外部与service之间的网络交互 日志架构 Kubernetes集群提供集群级别的日志管理方案,主要用于管理采集node节点级别日志、pod级别日志、容器级别日志以及其他日志。 如上所示,在每个node节点中运行一个DaemonSet守护进程Pod的日志代理logging-agent组件,用于采集日志到后端日志集成管理系统中,该日志架构的日志是由容器的日志组件输出到本地日志文件log-file.log中 如上所示,该日志架构在同一个pod中运行sidecar实例,由sidecar负责将日志输出到本地日志文件log-file.log中供采集 如上所示,该日志架构在同一个pod中运行logging-agent实例,直接将日志采集到后端日志集成管理系统中 如上所示,该日志架构由容器的应用组件,直接将日志采集到后端日志集成管理系统中

ChatGPT在15分钟内写一篇公众号文章*(ChatGPT源码系统GPT4.0MJ绘画系统)

主要功能: 1、已对接国内百度文心、讯飞星火、Azure GPT、通义千问、腾讯混元、智普AI、Claude2等主流AI系统,还可以自建模型对接,目前是功能最全的一款AI。 2、转发领次数 3、包月套餐 4、关键词过滤功能 5、多开版 6.PC端绘画 目前AI很火,自己搭建一个既能自用又可以卖会员 小狐狸AI智能问答绘画2.3.6 ChatGPT源码系统GPT4.0MJ绘画系统-YISHEN源码商店

【UE5蓝图】读取本地json文件修改窗口大小

效果 插件 蓝图 1.判断文件存在 2.1文件不存在,生成文件 {"ResolutionX":540, "ResolutionY":960} 2.2文件存在,直接读取 3.设置窗口大小 遇到的坑 1.分辨率太大,导致效果不理想,建议先往小填写。 2.选对路径。 3.选对模式 参考文章 UE5_官方Json插件来了! - 知乎 (zhihu.com) UE5读取json文件_ue5json-CSDN博客

Linux常见问题及解决方案

Linux常见问题及解决方案汇总,持续更新…… 1. 运行自己编译的程序时提示找不到.so文件 例如: ./mnist_caffe: error while loading shared libraries: libarmnn.so: cannot open shared object file: No such file ordirectory 出现该问题的原因是运行./mnist_caffe的时候找不到依赖的libarmnn.so。实际上libarmnn.so是已经编译好的文件,其所在目录是/home/lg/armnnSDK/armnn。 解决常用方法有两种,一是执行sudo gedit /etc/ld.so.conf,然后将libarmnn.so所在的目录/home/lg/armnnSDK/armnn加入其中,再执行sudo /sbin/ldconfig使其生效即可。不过一般对于自己编译生成的文件不这么做,自己编译生成的库一般采用方法二配置路径。二是执行sudo gedit ~/.bash_profile,然后加入export LD_LIBRARY_PATH=/home/lg/armnnSDK/armnn:$LD_LIBRARY_PATH。或是如果只在当前终端生效,只执行export LD_LIBRARY_PATH=/home/lg/armnnSDK/armnn:$LD_LIBRARY_PATH也是可以的。 2. 查看静态库中包含哪些.o文件 ar -tv libXXX.a 3. 查看静态库或.o中包含哪些函数 objdump -tT libXXX.a或objdump -tT libXXX.o 4. 如何生存静态库 ar -rcs libXXX.a A.o B.o 其中A.o和 B.o用下面方法生成,指定gcc -c生成的就是.o文件: gcc -c -O3 A.c -I ./、gcc -c -O3 B.c -I ./ 5. 统计文件、文件夹个数 当前目录文件个数:ls -l|grep "^-"| wc -l

1亿条数据批量插入MySQL该如何优化?

一、实现对事务的操作 事务:一个包含多个步骤的业务操作。 如果这个业务操作被事务管理,则这多个步骤要么同时成功,要么同时失败操作:开启事务 -> 提交事务 -> 回滚事务使用 Connection 对象来管理事务开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为 false, 即关闭数据库的动提交功能=自动开启事务在执行 sql 之前开启事务 提交事务:commit() 当所有 sql 执行完提交事务 回滚事务: rollback() [在 catch 中回滚事务] 1.本次测评一共通过三种策略,五种情况,进行大批量数据插入测试 策略分别是: Mybatis 轻量级框架插入(无事务)采用JDBC直接处理(开启事务、无事务)采用JDBC批处理(开启事务、无事务) 测试结果(慢 -> 快): Mybatis轻量级插入 -> JDBC直接处理 -> JDBC 批处理。 JDBC 批处理,效率最高 第一种策略测试: 2.1 Mybatis 轻量级框架插入(无事务) Mybatis是一个轻量级框架,它比hibernate轻便、效率高。 但是处理大批量的数据插入操作时,需要过程中实现一个ORM的转换,本次测试存在实例,以及未开启事务,导致mybatis效率很一般。 这里实验内容是: 利用Spring框架生成mapper实例、创建人物实例对象循环更改该实例对象属性、并插入。 //代码内无事务 private long begin = 33112001;//起始id private long end = begin+100000;//每次循环插入的数据量 private String url = "jdbc:mysql://localhost:3306/bigdata?useServerPrepStmts=false&rewriteBatchedStatements=true&useUnicode=true&amp;characterEncoding=UTF-8"; private String user = "root"; private String password = "

2022年中华人民共和国县以上行政区划代码

2022年中华人民共和国行政区划代码 摘自:https://www.mca.gov.cn/mzsj/xzqh/2022/202201xzqh.html 行政区划代码单位名称110000北京市110101东城区110102西城区110105朝阳区110106丰台区110107石景山区110108海淀区110109门头沟区110111房山区110112通州区110113顺义区110114昌平区110115大兴区110116怀柔区110117平谷区110118密云区110119延庆区120000天津市120101和平区120102河东区120103河西区120104南开区120105河北区120106红桥区120110东丽区120111西青区120112津南区120113北辰区120114武清区120115宝坻区120116滨海新区120117宁河区120118静海区120119蓟州区130000河北省130100石家庄市130102长安区130104桥西区130105新华区130107井陉矿区130108裕华区130109藁城区130110鹿泉区130111栾城区130121井陉县130123正定县130125行唐县130126灵寿县130127高邑县130128深泽县130129赞皇县130130无极县130131平山县130132元氏县130133赵县130181辛集市130183晋州市130184新乐市130200唐山市130202路南区130203路北区130204古冶区130205开平区130207丰南区130208丰润区130209曹妃甸区130224滦南县130225乐亭县130227迁西县130229玉田县130281遵化市130283迁安市130284滦州市130300秦皇岛市130302海港区130303山海关区130304北戴河区130306抚宁区130321青龙满族自治县130322昌黎县130324卢龙县130400邯郸市130402邯山区130403丛台区130404复兴区130406峰峰矿区130407肥乡区130408永年区130423临漳县130424成安县130425大名县130426涉县130427磁县130430邱县130431鸡泽县130432广平县130433馆陶县130434魏县130435曲周县130481武安市130500邢台市130502襄都区130503信都区130505任泽区130506南和区130522临城县130523内丘县130524柏乡县130525隆尧县130528宁晋县130529巨鹿县130530新河县130531广宗县130532平乡县130533威县130534清河县130535临西县130581南宫市130582沙河市130600保定市130602竞秀区130606莲池区130607满城区130608清苑区130609徐水区130623涞水县130624阜平县130626定兴县130627唐县130628高阳县130629容城县130630涞源县130631望都县130632安新县130633易县130634曲阳县130635蠡县130636顺平县130637博野县130638雄县130681涿州市130682定州市130683安国市130684高碑店市130700张家口市130702桥东区130703桥西区130705宣化区130706下花园区130708万全区130709崇礼区130722张北县130723康保县130724沽源县130725尚义县130726蔚县130727阳原县130728怀安县130730怀来县130731涿鹿县130732赤城县130800承德市130802双桥区130803双滦区130804鹰手营子矿区130821承德县130822兴隆县130824滦平县130825隆化县130826丰宁满族自治县130827宽城满族自治县130828围场满族蒙古族自治县130881平泉市130900沧州市130902新华区130903运河区130921沧县130922青县130923东光县130924海兴县130925盐山县130926肃宁县130927南皮县130928吴桥县130929献县130930孟村回族自治县130981泊头市130982任丘市130983黄骅市130984河间市131000廊坊市131002安次区131003广阳区131022固安县131023永清县131024香河县131025大城县131026文安县131028大厂回族自治县131081霸州市131082三河市131100衡水市131102桃城区131103冀州区131121枣强县131122武邑县131123武强县131124饶阳县131125安平县131126故城县131127景县131128阜城县131182深州市140000山西省140100太原市140105小店区140106迎泽区140107杏花岭区140108尖草坪区140109万柏林区140110晋源区140121清徐县140122阳曲县140123娄烦县140181古交市140200大同市140212新荣区140213平城区140214云冈区140215云州区140221阳高县140222天镇县140223广灵县140224灵丘县140225浑源县140226左云县140300阳泉市140302城区140303矿区140311郊区140321平定县140322盂县140400长治市140403潞州区140404上党区140405屯留区140406潞城区140423襄垣县140425平顺县140426黎城县140427壶关县140428长子县140429武乡县140430沁县140431沁源县140500晋城市140502城区140521沁水县140522阳城县140524陵川县140525泽州县140581高平市140600朔州市140602朔城区140603平鲁区140621山阴县140622应县140623右玉县140681怀仁市140700晋中市140702榆次区140703太谷区140721榆社县140722左权县140723和顺县140724昔阳县140725寿阳县140727祁县140728平遥县140729灵石县140781介休市140800运城市140802盐湖区140821临猗县140822万荣县140823闻喜县140824稷山县140825新绛县140826绛县140827垣曲县140828夏县140829平陆县140830芮城县140881永济市140882河津市140900忻州市140902忻府区140921定襄县140922五台县140923代县140924繁峙县140925宁武县140926静乐县140927神池县140928五寨县140929岢岚县140930河曲县140931保德县140932偏关县140981原平市141000临汾市141002尧都区141021曲沃县141022翼城县141023襄汾县141024洪洞县141025古县141026安泽县141027浮山县141028吉县141029乡宁县141030大宁县141031隰县141032永和县141033蒲县141034汾西县141081侯马市141082霍州市141100吕梁市141102离石区141121文水县141122交城县141123兴县141124临县141125柳林县141126石楼县141127岚县141128方山县141129中阳县141130交口县141181孝义市141182汾阳市150000内蒙古自治区150100呼和浩特市150102新城区150103回民区150104玉泉区150105赛罕区150121土默特左旗150122托克托县150123和林格尔县150124清水河县150125武川县150200包头市150202东河区150203昆都仑区150204青山区150205石拐区150206白云鄂博矿区150207九原区150221土默特右旗150222固阳县150223达尔罕茂明安联合旗150300乌海市150302海勃湾区150303海南区150304乌达区150400赤峰市150402红山区150403元宝山区150404松山区150421阿鲁科尔沁旗150422巴林左旗150423巴林右旗150424林西县150425克什克腾旗150426翁牛特旗150428喀喇沁旗150429宁城县150430敖汉旗150500通辽市150502科尔沁区150521科尔沁左翼中旗150522科尔沁左翼后旗150523开鲁县150524库伦旗150525奈曼旗150526扎鲁特旗150581霍林郭勒市150600鄂尔多斯市150602东胜区150603康巴什区150621达拉特旗150622准格尔旗150623鄂托克前旗150624鄂托克旗150625杭锦旗150626乌审旗150627伊金霍洛旗150700呼伦贝尔市150702海拉尔区150703扎赉诺尔区150721阿荣旗150722莫力达瓦达斡尔族自治旗150723鄂伦春自治旗150724鄂温克族自治旗150725陈巴尔虎旗150726新巴尔虎左旗150727新巴尔虎右旗150781满洲里市150782牙克石市150783扎兰屯市150784额尔古纳市150785根河市150800巴彦淖尔市150802临河区150821五原县150822磴口县150823乌拉特前旗150824乌拉特中旗150825乌拉特后旗150826杭锦后旗150900乌兰察布市150902集宁区150921卓资县150922化德县150923商都县150924兴和县150925凉城县150926察哈尔右翼前旗150927察哈尔右翼中旗150928察哈尔右翼后旗150929四子王旗150981丰镇市152200兴安盟152201乌兰浩特市152202阿尔山市152221科尔沁右翼前旗152222科尔沁右翼中旗152223扎赉特旗152224突泉县152500锡林郭勒盟152501二连浩特市152502锡林浩特市152522阿巴嘎旗152523苏尼特左旗152524苏尼特右旗152525东乌珠穆沁旗152526西乌珠穆沁旗152527太仆寺旗152528镶黄旗152529正镶白旗152530正蓝旗152531多伦县152900阿拉善盟152921阿拉善左旗152922阿拉善右旗152923额济纳旗210000辽宁省210100沈阳市210102和平区210103沈河区210104大东区210105皇姑区210106铁西区210111苏家屯区210112浑南区210113沈北新区210114于洪区210115辽中区210123康平县210124法库县210181新民市210200大连市210202中山区210203西岗区210204沙河口区210211甘井子区210212旅顺口区210213金州区210214普兰店区210224长海县210281瓦房店市210283庄河市210300鞍山市210302铁东区210303铁西区210304立山区210311千山区210321台安县210323岫岩满族自治县210381海城市210400抚顺市210402新抚区210403东洲区210404望花区210411顺城区210421抚顺县210422新宾满族自治县210423清原满族自治县210500本溪市210502平山区210503溪湖区210504明山区210505南芬区210521本溪满族自治县210522桓仁满族自治县210600丹东市210602元宝区210603振兴区210604振安区210624宽甸满族自治县210681东港市210682凤城市210700锦州市210702古塔区210703凌河区210711太和区210726黑山县210727义县210781凌海市210782北镇市210800营口市210802站前区210803西市区210804鲅鱼圈区210811老边区210881盖州市210882大石桥市210900阜新市210902海州区210903新邱区210904太平区210905清河门区210911细河区210921阜新蒙古族自治县210922彰武县211000辽阳市211002白塔区211003文圣区211004宏伟区211005弓长岭区211011太子河区211021辽阳县211081灯塔市211100盘锦市211102双台子区211103兴隆台区211104大洼区211122盘山县211200铁岭市211202银州区211204清河区211221铁岭县211223西丰县211224昌图县211281调兵山市211282开原市211300朝阳市211302双塔区211303龙城区211321朝阳县211322建平县211324喀喇沁左翼蒙古族自治县211381北票市211382凌源市211400葫芦岛市211402连山区211403龙港区211404南票区211421绥中县211422建昌县211481兴城市220000吉林省220100长春市220102南关区220103宽城区220104朝阳区220105二道区220106绿园区220112双阳区220113九台区220122农安县220182榆树市220183德惠市220184公主岭市220200吉林市220202昌邑区220203龙潭区220204船营区220211丰满区220221永吉县220281蛟河市220282桦甸市220283舒兰市220284磐石市220300四平市220302铁西区220303铁东区220322梨树县220323伊通满族自治县220382双辽市220400辽源市220402龙山区220403西安区220421东丰县220422东辽县220500通化市220502东昌区220503二道江区220521通化县220523辉南县220524柳河县220581梅河口市220582集安市220600白山市220602浑江区220605江源区220621抚松县220622靖宇县220623长白朝鲜族自治县220681临江市220700松原市220702宁江区220721前郭尔罗斯蒙古族自治县220722长岭县220723乾安县220781扶余市220800白城市220802洮北区220821镇赉县220822通榆县220881洮南市220882大安市222400延边朝鲜族自治州222401延吉市222402图们市222403敦化市222404珲春市222405龙井市222406和龙市222424汪清县222426安图县230000黑龙江省230100哈尔滨市230102道里区230103南岗区230104道外区230108平房区230109松北区230110香坊区230111呼兰区230112阿城区230113双城区230123依兰县230124方正县230125宾县230126巴彦县230127木兰县230128通河县230129延寿县230183尚志市230184五常市230200齐齐哈尔市230202龙沙区230203建华区230204铁锋区230205昂昂溪区230206富拉尔基区230207碾子山区230208梅里斯达斡尔族区230221龙江县230223依安县230224泰来县230225甘南县230227富裕县230229克山县230230克东县230231拜泉县230281讷河市230300鸡西市230302鸡冠区230303恒山区230304滴道区230305梨树区230306城子河区230307麻山区230321鸡东县230381虎林市230382密山市230400鹤岗市230402向阳区230403工农区230404南山区230405兴安区230406东山区230407兴山区230421萝北县230422绥滨县230500双鸭山市230502尖山区230503岭东区230505四方台区230506宝山区230521集贤县230522友谊县230523宝清县230524饶河县230600大庆市230602萨尔图区230603龙凤区230604让胡路区230605红岗区230606大同区230621肇州县230622肇源县230623林甸县230624杜尔伯特蒙古族自治县230700伊春市230717伊美区230718乌翠区230719友好区230722嘉荫县230723汤旺县230724丰林县230725大箐山县230726南岔县230751金林区230781铁力市230800佳木斯市230803向阳区230804前进区230805东风区230811郊区230822桦南县230826桦川县230828汤原县230881同江市230882富锦市230883抚远市230900七台河市230902新兴区230903桃山区230904茄子河区230921勃利县231000牡丹江市231002东安区231003阳明区231004爱民区231005西安区231025林口县231081绥芬河市231083海林市231084宁安市231085穆棱市231086东宁市231100黑河市231102爱辉区231123逊克县231124孙吴县231181北安市231182五大连池市231183嫩江市231200绥化市231202北林区231221望奎县231222兰西县231223青冈县231224庆安县231225明水县231226绥棱县231281安达市231282肇东市231283海伦市232700大兴安岭地区232701漠河市232721呼玛县232722塔河县310000上海市310101黄浦区310104徐汇区310105长宁区310106静安区310107普陀区310109虹口区310110杨浦区310112闵行区310113宝山区310114嘉定区310115浦东新区310116金山区310117松江区310118青浦区310120奉贤区310151崇明区320000江苏省320100南京市320102玄武区320104秦淮区320105建邺区320106鼓楼区320111浦口区320113栖霞区320114雨花台区320115江宁区320116六合区320117溧水区320118高淳区320200无锡市320205锡山区320206惠山区320211滨湖区320213梁溪区320214新吴区320281江阴市320282宜兴市320300徐州市320302鼓楼区320303云龙区320305贾汪区320311泉山区320312铜山区320321丰县320322沛县320324睢宁县320381新沂市320382邳州市320400常州市320402天宁区320404钟楼区320411新北区320412武进区320413金坛区320481溧阳市320500苏州市320505虎丘区320506吴中区320507相城区320508姑苏区320509吴江区320581常熟市320582张家港市320583昆山市320585太仓市320600南通市320612通州区320613崇川区320614海门区320623如东县320681启东市320682如皋市320685海安市320700连云港市320703连云区320706海州区320707赣榆区320722东海县320723灌云县320724灌南县320800淮安市320803淮安区320804淮阴区320812清江浦区320813洪泽区320826涟水县320830盱眙县320831金湖县320900盐城市320902亭湖区320903盐都区320904大丰区320921响水县320922滨海县320923阜宁县320924射阳县320925建湖县320981东台市321000扬州市321002广陵区321003邗江区321012江都区321023宝应县321081仪征市321084高邮市321100镇江市321102京口区321111润州区321112丹徒区321181丹阳市321182扬中市321183句容市321200泰州市321202海陵区321203高港区321204姜堰区321281兴化市321282靖江市321283泰兴市321300宿迁市321302宿城区321311宿豫区321322沭阳县321323泗阳县321324泗洪县330000浙江省330100杭州市330102上城区330105拱墅区330106西湖区330108滨江区330109萧山区330110余杭区330111富阳区330112临安区330113临平区330114钱塘区330122桐庐县330127淳安县330182建德市330200宁波市330203海曙区330205江北区330206北仑区330211镇海区330212鄞州区330213奉化区330225象山县330226宁海县330281余姚市330282慈溪市330300温州市330302鹿城区330303龙湾区330304瓯海区330305洞头区330324永嘉县330326平阳县330327苍南县330328文成县330329泰顺县330381瑞安市330382乐清市330383龙港市330400嘉兴市330402南湖区330411秀洲区330421嘉善县330424海盐县330481海宁市330482平湖市330483桐乡市330500湖州市330502吴兴区330503南浔区330521德清县330522长兴县330523安吉县330600绍兴市330602越城区330603柯桥区330604上虞区330624新昌县330681诸暨市330683嵊州市330700金华市330702婺城区330703金东区330723武义县330726浦江县330727磐安县330781兰溪市330782义乌市330783东阳市330784永康市330800衢州市330802柯城区330803衢江区330822常山县330824开化县330825龙游县330881江山市330900舟山市330902定海区330903普陀区330921岱山县330922嵊泗县331000台州市331002椒江区331003黄岩区331004路桥区331022三门县331023天台县331024仙居县331081温岭市331082临海市331083玉环市331100丽水市331102莲都区331121青田县331122缙云县331123遂昌县331124松阳县331125云和县331126庆元县331127景宁畲族自治县331181龙泉市340000安徽省340100合肥市340102瑶海区340103庐阳区340104蜀山区340111包河区340121长丰县340122肥东县340123肥西县340124庐江县340181巢湖市340200芜湖市340202镜湖区340207鸠江区340209弋江区340210湾沚区340212繁昌区340223南陵县340281无为市340300蚌埠市340302龙子湖区340303蚌山区340304禹会区340311淮上区340321怀远县340322五河县340323固镇县340400淮南市340402大通区340403田家庵区340404谢家集区340405八公山区340406潘集区340421凤台县340422寿县340500马鞍山市340503花山区340504雨山区340506博望区340521当涂县340522含山县340523和县340600淮北市340602杜集区340603相山区340604烈山区340621濉溪县340700铜陵市340705铜官区340706义安区340711郊区340722枞阳县340800安庆市340802迎江区340803大观区340811宜秀区340822怀宁县340825太湖县340826宿松县340827望江县340828岳西县340881桐城市340882潜山市341000黄山市341002屯溪区341003黄山区341004徽州区341021歙县341022休宁县341023黟县341024祁门县341100滁州市341102琅琊区341103南谯区341122来安县341124全椒县341125定远县341126凤阳县341181天长市341182明光市341200阜阳市341202颍州区341203颍东区341204颍泉区341221临泉县341222太和县341225阜南县341226颍上县341282界首市341300宿州市341302埇桥区341321砀山县341322萧县341323灵璧县341324泗县341500六安市341502金安区341503裕安区341504叶集区341522霍邱县341523舒城县341524金寨县341525霍山县341600亳州市341602谯城区341621涡阳县341622蒙城县341623利辛县341700池州市341702贵池区341721东至县341722石台县341723青阳县341800宣城市341802宣州区341821郎溪县341823泾县341824绩溪县341825旌德县341881宁国市341882广德市350000福建省350100福州市350102鼓楼区350103台江区350104仓山区350105马尾区350111晋安区350112长乐区350121闽侯县350122连江县350123罗源县350124闽清县350125永泰县350128平潭县350181福清市350200厦门市350203思明区350205海沧区350206湖里区350211集美区350212同安区350213翔安区350300莆田市350302城厢区350303涵江区350304荔城区350305秀屿区350322仙游县350400三明市350404三元区350405沙县区350421明溪县350423清流县350424宁化县350425大田县350426尤溪县350428将乐县350429泰宁县350430建宁县350481永安市350500泉州市350502鲤城区350503丰泽区350504洛江区350505泉港区350521惠安县350524安溪县350525永春县350526德化县350527金门县350581石狮市350582晋江市350583南安市350600漳州市350602芗城区350603龙文区350604龙海区350605长泰区350622云霄县350623漳浦县350624诏安县350626东山县350627南靖县350628平和县350629华安县350700南平市350702延平区350703建阳区350721顺昌县350722浦城县350723光泽县350724松溪县350725政和县350781邵武市350782武夷山市350783建瓯市350800龙岩市350802新罗区350803永定区350821长汀县350823上杭县350824武平县350825连城县350881漳平市350900宁德市350902蕉城区350921霞浦县350922古田县350923屏南县350924寿宁县350925周宁县350926柘荣县350981福安市350982福鼎市360000江西省360100南昌市360102东湖区360103西湖区360104青云谱区360111青山湖区360112新建区360113红谷滩区360121南昌县360123安义县360124进贤县360200景德镇市360202昌江区360203珠山区360222浮梁县360281乐平市360300萍乡市360302安源区360313湘东区360321莲花县360322上栗县360323芦溪县360400九江市360402濂溪区360403浔阳区360404柴桑区360423武宁县360424修水县360425永修县360426德安县360428都昌县360429湖口县360430彭泽县360481瑞昌市360482共青城市360483庐山市360500新余市360502渝水区360521分宜县360600鹰潭市360602月湖区360603余江区360681贵溪市360700赣州市360702章贡区360703南康区360704赣县区360722信丰县360723大余县360724上犹县360725崇义县360726安远县360728定南县360729全南县360730宁都县360731于都县360732兴国县360733会昌县360734寻乌县360735石城县360781瑞金市360783龙南市360800吉安市360802吉州区360803青原区360821吉安县360822吉水县360823峡江县360824新干县360825永丰县360826泰和县360827遂川县360828万安县360829安福县360830永新县360881井冈山市360900宜春市360902袁州区360921奉新县360922万载县360923上高县360924宜丰县360925靖安县360926铜鼓县360981丰城市360982樟树市360983高安市361000抚州市361002临川区361003东乡区361021南城县361022黎川县361023南丰县361024崇仁县361025乐安县361026宜黄县361027金溪县361028资溪县361030广昌县361100上饶市361102信州区361103广丰区361104广信区361123玉山县361124铅山县361125横峰县361126弋阳县361127余干县361128鄱阳县361129万年县361130婺源县361181德兴市370000山东省370100济南市370102历下区370103市中区370104槐荫区370105天桥区370112历城区370113长清区370114章丘区370115济阳区370116莱芜区370117钢城区370124平阴县370126商河县370200青岛市370202市南区370203市北区370211黄岛区370212崂山区370213李沧区370214城阳区370215即墨区370281胶州市370283平度市370285莱西市370300淄博市370302淄川区370303张店区370304博山区370305临淄区370306周村区370321桓台县370322高青县370323沂源县370400枣庄市370402市中区370403薛城区370404峄城区370405台儿庄区370406山亭区370481滕州市370500东营市370502东营区370503河口区370505垦利区370522利津县370523广饶县370600烟台市370602芝罘区370611福山区370612牟平区370613莱山区370614蓬莱区370681龙口市370682莱阳市370683莱州市370685招远市370686栖霞市370687海阳市370700潍坊市370702潍城区370703寒亭区370704坊子区370705奎文区370724临朐县370725昌乐县370781青州市370782诸城市370783寿光市370784安丘市370785高密市370786昌邑市370800济宁市370811任城区370812兖州区370826微山县370827鱼台县370828金乡县370829嘉祥县370830汶上县370831泗水县370832梁山县370881曲阜市370883邹城市370900泰安市370902泰山区370911岱岳区370921宁阳县370923东平县370982新泰市370983肥城市371000威海市371002环翠区371003文登区371082荣成市371083乳山市371100日照市371102东港区371103岚山区371121五莲县371122莒县371300临沂市371302兰山区371311罗庄区371312河东区371321沂南县371322郯城县371323沂水县371324兰陵县371325费县371326平邑县371327莒南县371328蒙阴县371329临沭县371400德州市371402德城区371403陵城区371422宁津县371423庆云县371424临邑县371425齐河县371426平原县371427夏津县371428武城县371481乐陵市371482禹城市371500聊城市371502东昌府区371503茌平区371521阳谷县371522莘县371524东阿县371525冠县371526高唐县371581临清市371600滨州市371602滨城区371603沾化区371621惠民县371622阳信县371623无棣县371625博兴县371681邹平市371700菏泽市371702牡丹区371703定陶区371721曹县371722单县371723成武县371724巨野县371725郓城县371726鄄城县371728东明县410000河南省410100郑州市410102中原区410103二七区410104管城回族区410105金水区410106上街区410108惠济区410122中牟县410181巩义市410182荥阳市410183新密市410184新郑市410185登封市410200开封市410202龙亭区410203顺河回族区410204鼓楼区410205禹王台区410212祥符区410221杞县410222通许县410223尉氏县410225兰考县410300洛阳市410302老城区410303西工区410304瀍河回族区410305涧西区410307偃师区410308孟津区410311洛龙区410323新安县410324栾川县410325嵩县410326汝阳县410327宜阳县410328洛宁县410329伊川县410400平顶山市410402新华区410403卫东区410404石龙区410411湛河区410421宝丰县410422叶县410423鲁山县410425郏县410481舞钢市410482汝州市410500安阳市410502文峰区410503北关区410505殷都区410506龙安区410522安阳县410523汤阴县410526滑县410527内黄县410581林州市410600鹤壁市410602鹤山区410603山城区410611淇滨区410621浚县410622淇县410700新乡市410702红旗区410703卫滨区410704凤泉区410711牧野区410721新乡县410724获嘉县410725原阳县410726延津县410727封丘县410781卫辉市410782辉县市410783长垣市410800焦作市410802解放区410803中站区410804马村区410811山阳区410821修武县410822博爱县410823武陟县410825温县410882沁阳市410883孟州市410900濮阳市410902华龙区410922清丰县410923南乐县410926范县410927台前县410928濮阳县411000许昌市411002魏都区411003建安区411024鄢陵县411025襄城县411081禹州市411082长葛市411100漯河市411102源汇区411103郾城区411104召陵区411121舞阳县411122临颍县411200三门峡市411202湖滨区411203陕州区411221渑池县411224卢氏县411281义马市411282灵宝市411300南阳市411302宛城区411303卧龙区411321南召县411322方城县411323西峡县411324镇平县411325内乡县411326淅川县411327社旗县411328唐河县411329新野县411330桐柏县411381邓州市411400商丘市411402梁园区411403睢阳区411421民权县411422睢县411423宁陵县411424柘城县411425虞城县411426夏邑县411481永城市411500信阳市411502浉河区411503平桥区411521罗山县411522光山县411523新县411524商城县411525固始县411526潢川县411527淮滨县411528息县411600周口市411602川汇区411603淮阳区411621扶沟县411622西华县411623商水县411624沈丘县411625郸城县411627太康县411628鹿邑县411681项城市411700驻马店市411702驿城区411721西平县411722上蔡县411723平舆县411724正阳县411725确山县411726泌阳县411727汝南县411728遂平县411729新蔡县419001济源市420000湖北省420100武汉市420102江岸区420103江汉区420104硚口区420105汉阳区420106武昌区420107青山区420111洪山区420112东西湖区420113汉南区420114蔡甸区420115江夏区420116黄陂区420117新洲区420200黄石市420202黄石港区420203西塞山区420204下陆区420205铁山区420222阳新县420281大冶市420300十堰市420302茅箭区420303张湾区420304郧阳区420322郧西县420323竹山县420324竹溪县420325房县420381丹江口市420500宜昌市420502西陵区420503伍家岗区420504点军区420505猇亭区420506夷陵区420525远安县420526兴山县420527秭归县420528长阳土家族自治县420529五峰土家族自治县420581宜都市420582当阳市420583枝江市420600襄阳市420602襄城区420606樊城区420607襄州区420624南漳县420625谷城县420626保康县420682老河口市420683枣阳市420684宜城市420700鄂州市420702梁子湖区420703华容区420704鄂城区420800荆门市420802东宝区420804掇刀区420822沙洋县420881钟祥市420882京山市420900孝感市420902孝南区420921孝昌县420922大悟县420923云梦县420981应城市420982安陆市420984汉川市421000荆州市421002沙市区421003荆州区421022公安县421024江陵县421081石首市421083洪湖市421087松滋市421088监利市421100黄冈市421102黄州区421121团风县421122红安县421123罗田县421124英山县421125浠水县421126蕲春县421127黄梅县421181麻城市421182武穴市421200咸宁市421202咸安区421221嘉鱼县421222通城县421223崇阳县421224通山县421281赤壁市421300随州市421303曾都区421321随县421381广水市422800恩施土家族苗族自治州422801恩施市422802利川市422822建始县422823巴东县422825宣恩县422826咸丰县422827来凤县422828鹤峰县429004仙桃市429005潜江市429006天门市429021神农架林区430000湖南省430100长沙市430102芙蓉区430103天心区430104岳麓区430105开福区430111雨花区430112望城区430121长沙县430181浏阳市430182宁乡市430200株洲市430202荷塘区430203芦淞区430204石峰区430211天元区430212渌口区430223攸县430224茶陵县430225炎陵县430281醴陵市430300湘潭市430302雨湖区430304岳塘区430321湘潭县430381湘乡市430382韶山市430400衡阳市430405珠晖区430406雁峰区430407石鼓区430408蒸湘区430412南岳区430421衡阳县430422衡南县430423衡山县430424衡东县430426祁东县430481耒阳市430482常宁市430500邵阳市430502双清区430503大祥区430511北塔区430522新邵县430523邵阳县430524隆回县430525洞口县430527绥宁县430528新宁县430529城步苗族自治县430581武冈市430582邵东市430600岳阳市430602岳阳楼区430603云溪区430611君山区430621岳阳县430623华容县430624湘阴县430626平江县430681汨罗市430682临湘市430700常德市430702武陵区430703鼎城区430721安乡县430722汉寿县430723澧县430724临澧县430725桃源县430726石门县430781津市市430800张家界市430802永定区430811武陵源区430821慈利县430822桑植县430900益阳市430902资阳区430903赫山区430921南县430922桃江县430923安化县430981沅江市431000郴州市431002北湖区431003苏仙区431021桂阳县431022宜章县431023永兴县431024嘉禾县431025临武县431026汝城县431027桂东县431028安仁县431081资兴市431100永州市431102零陵区431103冷水滩区431122东安县431123双牌县431124道县431125江永县431126宁远县431127蓝山县431128新田县431129江华瑶族自治县431181祁阳市431200怀化市431202鹤城区431221中方县431222沅陵县431223辰溪县431224溆浦县431225会同县431226麻阳苗族自治县431227新晃侗族自治县431228芷江侗族自治县431229靖州苗族侗族自治县431230通道侗族自治县431281洪江市431300娄底市431302娄星区431321双峰县431322新化县431381冷水江市431382涟源市433100湘西土家族苗族自治州433101吉首市433122泸溪县433123凤凰县433124花垣县433125保靖县433126古丈县433127永顺县433130龙山县440000广东省440100广州市440103荔湾区440104越秀区440105海珠区440106天河区440111白云区440112黄埔区440113番禺区440114花都区440115南沙区440117从化区440118增城区440200韶关市440203武江区440204浈江区440205曲江区440222始兴县440224仁化县440229翁源县440232乳源瑶族自治县440233新丰县440281乐昌市440282南雄市440300深圳市440303罗湖区440304福田区440305南山区440306宝安区440307龙岗区440308盐田区440309龙华区440310坪山区440311光明区440400珠海市440402香洲区440403斗门区440404金湾区440500汕头市440507龙湖区440511金平区440512濠江区440513潮阳区440514潮南区440515澄海区440523南澳县440600佛山市440604禅城区440605南海区440606顺德区440607三水区440608高明区440700江门市440703蓬江区440704江海区440705新会区440781台山市440783开平市440784鹤山市440785恩平市440800湛江市440802赤坎区440803霞山区440804坡头区440811麻章区440823遂溪县440825徐闻县440881廉江市440882雷州市440883吴川市440900茂名市440902茂南区440904电白区440981高州市440982化州市440983信宜市441200肇庆市441202端州区441203鼎湖区441204高要区441223广宁县441224怀集县441225封开县441226德庆县441284四会市441300惠州市441302惠城区441303惠阳区441322博罗县441323惠东县441324龙门县441400梅州市441402梅江区441403梅县区441422大埔县441423丰顺县441424五华县441426平远县441427蕉岭县441481兴宁市441500汕尾市441502城区441521海丰县441523陆河县441581陆丰市441600河源市441602源城区441621紫金县441622龙川县441623连平县441624和平县441625东源县441700阳江市441702江城区441704阳东区441721阳西县441781阳春市441800清远市441802清城区441803清新区441821佛冈县441823阳山县441825连山壮族瑶族自治县441826连南瑶族自治县441881英德市441882连州市441900东莞市442000中山市445100潮州市445102湘桥区445103潮安区445122饶平县445200揭阳市445202榕城区445203揭东区445222揭西县445224惠来县445281普宁市445300云浮市445302云城区445303云安区445321新兴县445322郁南县445381罗定市450000广西壮族自治区450100南宁市450102兴宁区450103青秀区450105江南区450107西乡塘区450108良庆区450109邕宁区450110武鸣区450123隆安县450124马山县450125上林县450126宾阳县450181横州市450200柳州市450202城中区450203鱼峰区450204柳南区450205柳北区450206柳江区450222柳城县450223鹿寨县450224融安县450225融水苗族自治县450226三江侗族自治县450300桂林市450302秀峰区450303叠彩区450304象山区450305七星区450311雁山区450312临桂区450321阳朔县450323灵川县450324全州县450325兴安县450326永福县450327灌阳县450328龙胜各族自治县450329资源县450330平乐县450332恭城瑶族自治县450381荔浦市450400梧州市450403万秀区450405长洲区450406龙圩区450421苍梧县450422藤县450423蒙山县450481岑溪市450500北海市450502海城区450503银海区450512铁山港区450521合浦县450600防城港市450602港口区450603防城区450621上思县450681东兴市450700钦州市450702钦南区450703钦北区450721灵山县450722浦北县450800贵港市450802港北区450803港南区450804覃塘区450821平南县450881桂平市450900玉林市450902玉州区450903福绵区450921容县450922陆川县450923博白县450924兴业县450981北流市451000百色市451002右江区451003田阳区451022田东县451024德保县451026那坡县451027凌云县451028乐业县451029田林县451030西林县451031隆林各族自治县451081靖西市451082平果市451100贺州市451102八步区451103平桂区451121昭平县451122钟山县451123富川瑶族自治县451200河池市451202金城江区451203宜州区451221南丹县451222天峨县451223凤山县451224东兰县451225罗城仫佬族自治县451226环江毛南族自治县451227巴马瑶族自治县451228都安瑶族自治县451229大化瑶族自治县451300来宾市451302兴宾区451321忻城县451322象州县451323武宣县451324金秀瑶族自治县451381合山市451400崇左市451402江州区451421扶绥县451422宁明县451423龙州县451424大新县451425天等县451481凭祥市460000海南省460100海口市460105秀英区460106龙华区460107琼山区460108美兰区460200三亚市460202海棠区460203吉阳区460204天涯区460205崖州区460300三沙市西沙区南沙区460400儋州市469001五指山市469002琼海市469005文昌市469006万宁市469007东方市469021定安县469022屯昌县469023澄迈县469024临高县469025白沙黎族自治县469026昌江黎族自治县469027乐东黎族自治县469028陵水黎族自治县469029保亭黎族苗族自治县469030琼中黎族苗族自治县500000重庆市500101万州区500102涪陵区500103渝中区500104大渡口区500105江北区500106沙坪坝区500107九龙坡区500108南岸区500109北碚区500110綦江区500111大足区500112渝北区500113巴南区500114黔江区500115长寿区500116江津区500117合川区500118永川区500119南川区500120璧山区500151铜梁区500152潼南区500153荣昌区500154开州区500155梁平区500156武隆区500229城口县500230丰都县500231垫江县500233忠县500235云阳县500236奉节县500237巫山县500238巫溪县500240石柱土家族自治县500241秀山土家族苗族自治县500242酉阳土家族苗族自治县500243彭水苗族土家族自治县510000四川省510100成都市510104锦江区510105青羊区510106金牛区510107武侯区510108成华区510112龙泉驿区510113青白江区510114新都区510115温江区510116双流区510117郫都区510118新津区510121金堂县510129大邑县510131蒲江县510181都江堰市510182彭州市510183邛崃市510184崇州市510185简阳市510300自贡市510302自流井区510303贡井区510304大安区510311沿滩区510321荣县510322富顺县510400攀枝花市510402东区510403西区510411仁和区510421米易县510422盐边县510500泸州市510502江阳区510503纳溪区510504龙马潭区510521泸县510522合江县510524叙永县510525古蔺县510600德阳市510603旌阳区510604罗江区510623中江县510681广汉市510682什邡市510683绵竹市510700绵阳市510703涪城区510704游仙区510705安州区510722三台县510723盐亭县510725梓潼县510726北川羌族自治县510727平武县510781江油市510800广元市510802利州区510811昭化区510812朝天区510821旺苍县510822青川县510823剑阁县510824苍溪县510900遂宁市510903船山区510904安居区510921蓬溪县510923大英县510981射洪市511000内江市511002市中区511011东兴区511024威远县511025资中县511083隆昌市511100乐山市511102市中区511111沙湾区511112五通桥区511113金口河区511123犍为县511124井研县511126夹江县511129沐川县511132峨边彝族自治县511133马边彝族自治县511181峨眉山市511300南充市511302顺庆区511303高坪区511304嘉陵区511321南部县511322营山县511323蓬安县511324仪陇县511325西充县511381阆中市511400眉山市511402东坡区511403彭山区511421仁寿县511423洪雅县511424丹棱县511425青神县511500宜宾市511502翠屏区511503南溪区511504叙州区511523江安县511524长宁县511525高县511526珙县511527筠连县511528兴文县511529屏山县511600广安市511602广安区511603前锋区511621岳池县511622武胜县511623邻水县511681华蓥市511700达州市511702通川区511703达川区511722宣汉县511723开江县511724大竹县511725渠县511781万源市511800雅安市511802雨城区511803名山区511822荥经县511823汉源县511824石棉县511825天全县511826芦山县511827宝兴县511900巴中市511902巴州区511903恩阳区511921通江县511922南江县511923平昌县512000资阳市512002雁江区512021安岳县512022乐至县513200阿坝藏族羌族自治州513201马尔康市513221汶川县513222理县513223茂县513224松潘县513225九寨沟县513226金川县513227小金县513228黑水县513230壤塘县513231阿坝县513232若尔盖县513233红原县513300甘孜藏族自治州513301康定市513322泸定县513323丹巴县513324九龙县513325雅江县513326道孚县513327炉霍县513328甘孜县513329新龙县513330德格县513331白玉县513332石渠县513333色达县513334理塘县513335巴塘县513336乡城县513337稻城县513338得荣县513400凉山彝族自治州513401西昌市513402会理市513422木里藏族自治县513423盐源县513424德昌县513426会东县513427宁南县513428普格县513429布拖县513430金阳县513431昭觉县513432喜德县513433冕宁县513434越西县513435甘洛县513436美姑县513437雷波县520000贵州省520100贵阳市520102南明区520103云岩区520111花溪区520112乌当区520113白云区520115观山湖区520121开阳县520122息烽县520123修文县520181清镇市520200六盘水市520201钟山区520203六枝特区520204水城区520281盘州市520300遵义市520302红花岗区520303汇川区520304播州区520322桐梓县520323绥阳县520324正安县520325道真仡佬族苗族自治县520326务川仡佬族苗族自治县520327凤冈县520328湄潭县520329余庆县520330习水县520381赤水市520382仁怀市520400安顺市520402西秀区520403平坝区520422普定县520423镇宁布依族苗族自治县520424关岭布依族苗族自治县520425紫云苗族布依族自治县520500毕节市520502七星关区520521大方县520523金沙县520524织金县520525纳雍县520526威宁彝族回族苗族自治县520527赫章县520581黔西市520600铜仁市520602碧江区520603万山区520621江口县520622玉屏侗族自治县520623石阡县520624思南县520625印江土家族苗族自治县520626德江县520627沿河土家族自治县520628松桃苗族自治县522300黔西南布依族苗族自治州522301兴义市522302兴仁市522323普安县522324晴隆县522325贞丰县522326望谟县522327册亨县522328安龙县522600黔东南苗族侗族自治州522601凯里市522622黄平县522623施秉县522624三穗县522625镇远县522626岑巩县522627天柱县522628锦屏县522629剑河县522630台江县522631黎平县522632榕江县522633从江县522634雷山县522635麻江县522636丹寨县522700黔南布依族苗族自治州522701都匀市522702福泉市522722荔波县522723贵定县522725瓮安县522726独山县522727平塘县522728罗甸县522729长顺县522730龙里县522731惠水县522732三都水族自治县530000云南省530100昆明市530102五华区530103盘龙区530111官渡区530112西山区530113东川区530114呈贡区530115晋宁区530124富民县530125宜良县530126石林彝族自治县530127嵩明县530128禄劝彝族苗族自治县530129寻甸回族彝族自治县530181安宁市530300曲靖市530302麒麟区530303沾益区530304马龙区530322陆良县530323师宗县530324罗平县530325富源县530326会泽县530381宣威市530400玉溪市530402红塔区530403江川区530423通海县530424华宁县530425易门县530426峨山彝族自治县530427新平彝族傣族自治县530428元江哈尼族彝族傣族自治县530481澄江市530500保山市530502隆阳区530521施甸县530523龙陵县530524昌宁县530581腾冲市530600昭通市530602昭阳区530621鲁甸县530622巧家县530623盐津县530624大关县530625永善县530626绥江县530627镇雄县530628彝良县530629威信县530681水富市530700丽江市530702古城区530721玉龙纳西族自治县530722永胜县530723华坪县530724宁蒗彝族自治县530800普洱市530802思茅区530821宁洱哈尼族彝族自治县530822墨江哈尼族自治县530823景东彝族自治县530824景谷傣族彝族自治县530825镇沅彝族哈尼族拉祜族自治县530826江城哈尼族彝族自治县530827孟连傣族拉祜族佤族自治县530828澜沧拉祜族自治县530829西盟佤族自治县530900临沧市530902临翔区530921凤庆县530922云县530923永德县530924镇康县530925双江拉祜族佤族布朗族傣族自治县530926耿马傣族佤族自治县530927沧源佤族自治县532300楚雄彝族自治州532301楚雄市532302禄丰市532322双柏县532323牟定县532324南华县532325姚安县532326大姚县532327永仁县532328元谋县532329武定县532500红河哈尼族彝族自治州532501个旧市532502开远市532503蒙自市532504弥勒市532523屏边苗族自治县532524建水县532525石屏县532527泸西县532528元阳县532529红河县532530金平苗族瑶族傣族自治县532531绿春县532532河口瑶族自治县532600文山壮族苗族自治州532601文山市532622砚山县532623西畴县532624麻栗坡县532625马关县532626丘北县532627广南县532628富宁县532800西双版纳傣族自治州532801景洪市532822勐海县532823勐腊县532900大理白族自治州532901大理市532922漾濞彝族自治县532923祥云县532924宾川县532925弥渡县532926南涧彝族自治县532927巍山彝族回族自治县532928永平县532929云龙县532930洱源县532931剑川县532932鹤庆县533100德宏傣族景颇族自治州533102瑞丽市533103芒市533122梁河县533123盈江县533124陇川县533300怒江傈僳族自治州533301泸水市533323福贡县533324贡山独龙族怒族自治县533325兰坪白族普米族自治县533400迪庆藏族自治州533401香格里拉市533422德钦县533423维西傈僳族自治县540000西藏自治区540100拉萨市540102城关区540103堆龙德庆区540104达孜区540121林周县540122当雄县540123尼木县540124曲水县540127墨竹工卡县540200日喀则市540202桑珠孜区540221南木林县540222江孜县540223定日县540224萨迦县540225拉孜县540226昂仁县540227谢通门县540228白朗县540229仁布县540230康马县540231定结县540232仲巴县540233亚东县540234吉隆县540235聂拉木县540236萨嘎县540237岗巴县540300昌都市540302卡若区540321江达县540322贡觉县540323类乌齐县540324丁青县540325察雅县540326八宿县540327左贡县540328芒康县540329洛隆县540330边坝县540400林芝市540402巴宜区540421工布江达县540422米林县540423墨脱县540424波密县540425察隅县540426朗县540500山南市540502乃东区540521扎囊县540522贡嘎县540523桑日县540524琼结县540525曲松县540526措美县540527洛扎县540528加查县540529隆子县540530错那县540531浪卡子县540600那曲市540602色尼区540621嘉黎县540622比如县540623聂荣县540624安多县540625申扎县540626索县540627班戈县540628巴青县540629尼玛县540630双湖县542500阿里地区542521普兰县542522札达县542523噶尔县542524日土县542525革吉县542526改则县542527措勤县610000陕西省610100西安市610102新城区610103碑林区610104莲湖区610111灞桥区610112未央区610113雁塔区610114阎良区610115临潼区610116长安区610117高陵区610118鄠邑区610122蓝田县610124周至县610200铜川市610202王益区610203印台区610204耀州区610222宜君县610300宝鸡市610302渭滨区610303金台区610304陈仓区610305凤翔区610323岐山县610324扶风县610326眉县610327陇县610328千阳县610329麟游县610330凤县610331太白县610400咸阳市610402秦都区610403杨陵区610404渭城区610422三原县610423泾阳县610424乾县610425礼泉县610426永寿县610428长武县610429旬邑县610430淳化县610431武功县610481兴平市610482彬州市610500渭南市610502临渭区610503华州区610522潼关县610523大荔县610524合阳县610525澄城县610526蒲城县610527白水县610528富平县610581韩城市610582华阴市610600延安市610602宝塔区610603安塞区610621延长县610622延川县610625志丹县610626吴起县610627甘泉县610628富县610629洛川县610630宜川县610631黄龙县610632黄陵县610681子长市610700汉中市610702汉台区610703南郑区610722城固县610723洋县610724西乡县610725勉县610726宁强县610727略阳县610728镇巴县610729留坝县610730佛坪县610800榆林市610802榆阳区610803横山区610822府谷县610824靖边县610825定边县610826绥德县610827米脂县610828佳县610829吴堡县610830清涧县610831子洲县610881神木市610900安康市610902汉滨区610921汉阴县610922石泉县610923宁陕县610924紫阳县610925岚皋县610926平利县610927镇坪县610929白河县610981旬阳市611000商洛市611002商州区611021洛南县611022丹凤县611023商南县611024山阳县611025镇安县611026柞水县620000甘肃省620100兰州市620102城关区620103七里河区620104西固区620105安宁区620111红古区620121永登县620122皋兰县620123榆中县620200嘉峪关市620300金昌市620302金川区620321永昌县620400白银市620402白银区620403平川区620421靖远县620422会宁县620423景泰县620500天水市620502秦州区620503麦积区620521清水县620522秦安县620523甘谷县620524武山县620525张家川回族自治县620600武威市620602凉州区620621民勤县620622古浪县620623天祝藏族自治县620700张掖市620702甘州区620721肃南裕固族自治县620722民乐县620723临泽县620724高台县620725山丹县620800平凉市620802崆峒区620821泾川县620822灵台县620823崇信县620825庄浪县620826静宁县620881华亭市620900酒泉市620902肃州区620921金塔县620922瓜州县620923肃北蒙古族自治县620924阿克塞哈萨克族自治县620981玉门市620982敦煌市621000庆阳市621002西峰区621021庆城县621022环县621023华池县621024合水县621025正宁县621026宁县621027镇原县621100定西市621102安定区621121通渭县621122陇西县621123渭源县621124临洮县621125漳县621126岷县621200陇南市621202武都区621221成县621222文县621223宕昌县621224康县621225西和县621226礼县621227徽县621228两当县622900临夏回族自治州622901临夏市622921临夏县622922康乐县622923永靖县622924广河县622925和政县622926东乡族自治县622927积石山保安族东乡族撒拉族自治县623000甘南藏族自治州623001合作市623021临潭县623022卓尼县623023舟曲县623024迭部县623025玛曲县623026碌曲县623027夏河县630000青海省630100西宁市630102城东区630103城中区630104城西区630105城北区630106湟中区630121大通回族土族自治县630123湟源县630200海东市630202乐都区630203平安区630222民和回族土族自治县630223互助土族自治县630224化隆回族自治县630225循化撒拉族自治县632200海北藏族自治州632221门源回族自治县632222祁连县632223海晏县632224刚察县632300黄南藏族自治州632301同仁市632322尖扎县632323泽库县632324河南蒙古族自治县632500海南藏族自治州632521共和县632522同德县632523贵德县632524兴海县632525贵南县632600果洛藏族自治州632621玛沁县632622班玛县632623甘德县632624达日县632625久治县632626玛多县632700玉树藏族自治州632701玉树市632722杂多县632723称多县632724治多县632725囊谦县632726曲麻莱县632800海西蒙古族藏族自治州632801格尔木市632802德令哈市632803茫崖市632821乌兰县632822都兰县632823天峻县640000宁夏回族自治区640100银川市640104兴庆区640105西夏区640106金凤区640121永宁县640122贺兰县640181灵武市640200石嘴山市640202大武口区640205惠农区640221平罗县640300吴忠市640302利通区640303红寺堡区640323盐池县640324同心县640381青铜峡市640400固原市640402原州区640422西吉县640423隆德县640424泾源县640425彭阳县640500中卫市640502沙坡头区640521中宁县640522海原县650000新疆维吾尔自治区650100乌鲁木齐市650102天山区650103沙依巴克区650104新市区650105水磨沟区650106头屯河区650107达坂城区650109米东区650121乌鲁木齐县650200克拉玛依市650202独山子区650203克拉玛依区650204白碱滩区650205乌尔禾区650400吐鲁番市650402高昌区650421鄯善县650422托克逊县650500哈密市650502伊州区650521巴里坤哈萨克自治县650522伊吾县652300昌吉回族自治州652301昌吉市652302阜康市652323呼图壁县652324玛纳斯县652325奇台县652327吉木萨尔县652328木垒哈萨克自治县652700博尔塔拉蒙古自治州652701博乐市652702阿拉山口市652722精河县652723温泉县652800巴音郭楞蒙古自治州652801库尔勒市652822轮台县652823尉犁县652824若羌县652825且末县652826焉耆回族自治县652827和静县652828和硕县652829博湖县652900阿克苏地区652901阿克苏市652902库车市652922温宿县652924沙雅县652925新和县652926拜城县652927乌什县652928阿瓦提县652929柯坪县653000克孜勒苏柯尔克孜自治州653001阿图什市653022阿克陶县653023阿合奇县653024乌恰县653100喀什地区653101喀什市653121疏附县653122疏勒县653123英吉沙县653124泽普县653125莎车县653126叶城县653127麦盖提县653128岳普湖县653129伽师县653130巴楚县653131塔什库尔干塔吉克自治县653200和田地区653201和田市653221和田县653222墨玉县653223皮山县653224洛浦县653225策勒县653226于田县653227民丰县654000伊犁哈萨克自治州654002伊宁市654003奎屯市654004霍尔果斯市654021伊宁县654022察布查尔锡伯自治县654023霍城县654024巩留县654025新源县654026昭苏县654027特克斯县654028尼勒克县654200塔城地区654201塔城市654202乌苏市654203沙湾市654221额敏县654224托里县654225裕民县654226和布克赛尔蒙古自治县654300阿勒泰地区654301阿勒泰市654321布尔津县654322富蕴县654323福海县654324哈巴河县654325青河县654326吉木乃县659001石河子市659002阿拉尔市659003图木舒克市659004五家渠市659005北屯市659006铁门关市659007双河市659008可克达拉市659009昆玉市659010胡杨河市659011新星市710000台湾省810000香港特别行政区820000澳门特别行政区

我的128天之创作纪念日

目录 序 机缘 收获 日常 成就 憧憬 序 今天收到CSDN的一条消息推送,“初九之潜龙勿用 ,不知不觉今天已经是你成为创作者的 第128天 啦。。。” 是啊,自今年8月24日开始写文章以来,时间过得好快,无论开心、痛苦、无聊、忙碌,感觉时间都过得好快。128天的创作者,只能算是一个新手,对自己而言,也确实短暂,感觉就像昨天发生的事。128天后,2023年也即将结束了,一年又有多少个128天,只想说,珍惜平静的每一天,感恩身边的所有人。 机缘 现在的大数据的记忆,比你自己还了解你自己,正式关注自己CSDN的帐号,发现2017年就已经注册了。和大多数伙伴都有着相似的经历,开始来到这个平台,是认可它的专业程度,搜索一些知识、发布一些问题以求解,或下载一些资料。与大家不太一样的是,与其说是第一篇创作,还不如说是有点赌气的成分,因为界面设计的问题,我突然想起了CSDN,想征求专业人士的意见,让前辈大佬们给出建议和帮助。所以文章写的非常粗糙、随意,就是写了点重点的提示和贴图就完事了。发布文章以后,没想到很快就有了回应和评论,每一条评论和私信都倍感兴奋与珍惜,后来发现还有个排行榜,进入到新晋作者榜第三,感觉很惊讶,也没做什么呀。这种感觉很玄妙,于是决定开始了自己的创作学习之路。 收获 128天的时间虽不长,但收获真的是太大了。以下是截止今日的截图: 博客的访问总量也达到了 4W+,非常开心的结识了很多博主,对CSDN的平台又有了一个新的认知。 日常 在CSDN写作已经成为了日常的一部分了,由工作比较繁忙,大部分的时间是在家里完成的,写一篇文章,从选材到构思,还是需要一些精力的。书写的过程也是一个学习的过程,质量分也在逐步提高。 创作和书写不但不会成为一种负担,反而会成为一种促进,可以分享技术心得、可以提高书写能力、可以总结工作内容,可以说是一举多得的事情。 成就 最立竿见影的成就要属排行榜了,它即是一种激励也是一种鞭策。不同的指数也反应了自己不同的状态,综合热榜、领域内容榜、作者周榜、原力榜、领军人物榜,当经常能看到自己在榜单上的身影的时候,我知道,我最大的成就就是源于大家的支持,而不是榜单的名次,通过浏览大佬们的文章,了解了非常多的前沿知识、实用知识,在日常的交流互动中更加充实了自己的认知,自己的生活。 憧憬 看到如火如荼的CSDN2023年度博客之星评选活动火热进行中,我在憧憬着我是否能入围2024年博客之星呢?呵呵,不强求,不放弃,坚持自己的风格,坚持自己的写作,更多的是希望自己分享的内容能够帮助到别人,也希望大家多支持和提出意见、建议,这都是促进成长的良药。 送别2023,2024,希望结识更多的良师益友,让我们一起努力加油! 在此,提前祝大家新年快乐!

QT自定义控件的2种开发方法

1. 插件法 注意编译插件的版本要和QT Creator的版本一致 Qt之实现自定义控件的两种方式——插件法_qt自定义控件-CSDN博客

分享Python采集40个NET整站程序源码,总有一款适合您

分享Python采集40个NET整站程序源码,总有一款适合您 Python采集的40个NET整站程序源码下载链接:https://pan.baidu.com/s/1z54JHJkFYa4Kx2oBtPrn_w?pwd=2ta4 提取码:2ta4 商品评论网站系统 小孔子内容管理系统XkCms V2.0 友间别墅整站程序 迷失吧.NET版 迪雅装饰工程有限公司全站程序 西德(福建)燃烧设备有限公司全站程序 自由领域NET版WEB+WAP同学录 蚂蚁企业程序3.5正式版 网店联盟3.5网址导航信息发布 廊坊安泰防水多功能企业网站管理系统 换客易物系统-商务通 商务桔子企业智能建站系统V1.01 ACCESS版 深圳博客问测系统 天龙企业网站管理系统 V2.0 SP1 黄金顶王 V1.2 千狐网站管理系统 V1.0 源码版 孤心夜雪个人主页 包哥CMS正式版 V1.0(开源) 小孔子全站管理系统(C#) 黄页吧 V1.0 import os import shutil def void_folder(path): # 访问path路径下的文件或文件夹 lst = os.listdir(path) # 打印每一层的文件或文件夹 for name in lst: # 拼接名称,得到绝对路径,判断该文件是否符合是文件夹 real_path = os.path.join(path, name) # 如果是文件夹,则打空格表示,并且递归访问下一层 if os.path.isdir(real_path): # print(name) files = os.listdir(real_path) if len(files) == 0: print("void_folder():"+name) shutil.

Python实现员工管理系统(Django页面版 ) 七

各位小伙伴们好久不见,2024年即将到来,小编在这里提前祝大家新的一年快快乐乐,能够事业有成,学习顺心,家庭和睦,事事顺利。 今天我们本篇要实现的是一个登录界面的实现,其实登录界面的实现看着挺好实现的,其实里面需要注意到的点还是很多的,因此我可能会需要多篇博客进行一个讲解,接下来我们开始本次的登录界面的实现。 大家可以从上面的登录界面可以发现,我们本次需要完成的是用户在输入账号和密码后,然后再输入一个验证码后点击登录就能进入到我们的界面中,在这里我们用户输入的账号和密码是与我们上一篇博客是挂钩的,如果有不明白的朋友可以去看一下。 Python实现员工管理系统(Django页面版 ) 六-CSDN博客 其次我们对于不同的等级的用户进去是需要展示不同的页面的,就比如员工他就只能看看他的同事是哪些,还有他的任务是什么,他也不能进行添加,删除,修改操作,其实这个板块是属于用户权限的划分,我们在本章博客先不做这个,我们把这个伏笔埋一下。 好好好,也不多说这么多啦,咱先把基础的模板搞定,到哪步咱再说哪步。 在之前我们都是使用model.ModelFrom来对数据库中的数据进行一个修饰,一般来讲我们在对数据进行操作的时候我们用这个是比较方便的,那对于我们并不需要对数据库的数据进行操作的时候我们有没有更简单的方式来解决呢,下面我们来介绍一下model.Form。 model.form是Django中的一个模块,用于创建和处理表单。它是一个基于Model的表单,可以很方便地与数据库模型进行交互。 下面我们在我们的views文件夹下,新建一个login.py 我们可以从最上面的展示效果来看,我们需要三个字段,分别是用户名,密码和验证码,因此我们需要新建一个Form类来创建这三个字段。 login.py from django import forms from project_manage.utils.encryption import md5 class LoginForm(forms.Form): username = forms.CharField(label='用户',widget=forms.TextInput(attrs={'class':'from-control','autocomplete':'off'})) password = forms.CharField(label='用户',widget=forms.PasswordInput(attrs={'class':'from-control','autocomplete':'off'})) code = forms.CharField(label='验证码',widget=forms.TextInput(attrs={'class':'from-control','autocomplete':'off'})) def clean_password(self): pwd = self.cleaned_data.get('password') return md5(pwd) 其中的md5是我们在上一篇博客中对密码的一个加密函数,不了解的朋友可以去看一下。我们会发现其实Form和ModelForm的使用方式是差不多的,只是Form我们用的更加简单。那个钩子方法会将我们输入的密码进行一个md5加密并返回给数据库。 下面我们来编写我们的模块函数,由于这次的登录界面对比之前的那些模板方法可能比较难理解,我就分开写方便大家理解。 首先我们在访问登录界面是一个get请求访问,那他就会给我们返回一个登录界面的展示 login.py def login(request): if request.method == 'GET': form = LoginForm() return render(request,'login.html',{'form':form}) 在模板文件中创建一个login.html文件 login,html {% load static %} <html lang="en"> <head> <meta charset="UTF-8"> <title>登录页</title> <link rel="stylesheet" href="{% static 'bootstrap-3.

html如何设置标签图标2023/12/30

HTML 网站图标:.ico还是.png正确的标签使用方法|极客笔记 (deepinout.com) 使用ico文件:加到<head>里 <link rel="icon" href="favicon.ico" type="image/x-icon"> 太痛……太痛

OTA PIM 被动互调失真 (一_基础)

什么是PIM OTA(Over The Air) PIM(Passive intermodulation) upstanding PIM from (rohde-schwarz.com)罗德与施瓦茨公司https://cdn.rohde-schwarz.com/pws/campaigns/rsa/Understanding-PIM.pdf 互调也可以叫作互调失真(intermodulation distrotion),互调的产生也是一个调制的过程。 mF1±nF2 其中m、n为任意正整数。任意特定的互调失真(IMD)项的阶数即m与n的和。下面列出一些互调失真项的阶数: F1-F2 2阶(偶次) F1+F2 2阶(偶次) 2F1-F2 3阶(奇次) F1-2F2 3阶(奇次) 2F1+F2 3阶(奇次) 3F1-F2 4阶(偶次) 3F1+2F2 5阶(奇次) 由于一个电子线路、器件、系统不可能做到完全理想的线性度,当不同频率的信号同时进入非线性器件,在非线性作用下,每个不同频率的讯号就会自动相加和相减,产生出两个在原信号中没有的额外信号。 PIM的产生 我们知道器件的非线性会被动的产生互调,例如器件本身或者接头并没有完美的材料或设计。 3GPP在MSR中有对互调的要求 (3gpp.org) 37.808https://www.3gpp.org/ftp/Specs/archive/37_series/37.808/ PIM产生的可能机制 from 3GPP Corrosion, Oxides (due to aging, i.e., can vary over time)Dissimilar metals in contact to each otherMagnetic or paramagnetic materials in the signal pathSharp edges in connectors, causing corona generationDefects in workmanshipLow contact pressure and small contact areaDebris, pollution and dust at the contact areasVibrationTemperature variation 工艺的缺陷: 导致材料腐蚀、氧化接触压力或者接触面小:金属器件之间非完美的接触在信号路径上的磁性材料振动或温度的变化:连接器锋利的边缘 什么是OTA PIM 来自近场(radiated near field)其他天线的干扰信号,辐射到非线性设备上而产生的互调失真信号而影响到近场的设备。(可能是产生干扰信号的设备或者其他5G 基站)

【矩阵论】5. 线性空间与线性变换——生成子空间

矩阵论的所有文章,主要内容参考北航赵迪老师的课件 [注]由于矩阵论对计算机比较重要,所以选修了这门课,但不是专业搞数学的,所以存在很多口语化描述,而且对很多东西理解不是很正确与透彻,欢迎大家指正。我可能间歇性忙,但有空一定会回复修改的。 矩阵论 1. 准备知识——复数域上矩阵,Hermite变换 1.准备知识——复数域上的内积域正交阵 1.准备知识——Hermite阵,二次型,矩阵合同,正定阵,幂0阵,幂等阵,矩阵的秩 2. 矩阵分解——SVD准备知识——奇异值 2. 矩阵分解——SVD 2. 矩阵分解——QR分解 2. 矩阵分解——正定阵分解 2. 矩阵分解——单阵谱分解 2. 矩阵分解——正规分解——正规阵 2. 矩阵分解——正规谱分解 2. 矩阵分解——高低分解 3. 矩阵函数——常见解析函数 3. 矩阵函数——谱公式,幂0与泰勒计算矩阵函数 3. 矩阵函数——矩阵函数求导 4. 矩阵运算——观察法求矩阵特征值特征向量 4. 矩阵运算——张量积 4. 矩阵运算——矩阵拉直 4.矩阵运算——广义逆——加号逆定义性质与特殊矩阵的加号逆 4. 矩阵运算——广义逆——加号逆的计算 4. 矩阵运算——广义逆——加号逆应用 4. 矩阵运算——广义逆——减号逆 5. 线性空间与线性变换——线性空间 5. 线性空间与线性变换——生成子空间 5. 线性空间与线性变换——线性映射与自然基分解,线性变换 6. 正规方程与矩阵方程求解 7. 范数理论——基本概念——向量范数与矩阵范数 7.范数理论——基本概念——矩阵范数生成向量范数&谱范不等式 7. 矩阵理论——算子范数 7.范数理论——范数估计——许尔估计&谱估计 7. 范数理论——非负/正矩阵 8. 常用矩阵总结——秩1矩阵,优阵(单位正交阵),Hermite阵 8. 常用矩阵总结——镜面阵,正定阵 8. 常用矩阵总结——单阵,正规阵,幂0阵,幂等阵,循环阵 5.2 子空间 5.2.1 定义 设 W ⊂ V W\subset V W⊂V , W W W 是数域 K K K 上的线性空间 V V V 的一个非空子集合,且

数据预处理中,异常值的检测方法

在数据预处理中,异常值(outlier)是指与其他数据明显不同的数据点,它们可能是由于测量误差、数据录入错误、样本选取错误或者随机事件等原因导致的。异常值可能会对数据分析和建模产生负面影响,因此需要对其进行检测和处理。 以下是一些常用的异常值检测方法: 箱线图(Boxplot):箱线图是一种常用的异常值检测方法,它通过绘制数据的四分位数和箱线来表示数据分布情况,然后根据箱线上下限之外的数据点来识别异常值。Z-score检测:Z-score检测是一种基于标准差的异常值检测方法,它通过计算数据点与平均值之间的差异,并除以标准差来判断数据点是否为异常值。DBSCAN聚类算法:DBSCAN是一种基于密度的聚类算法,它可以自动识别数据集中的异常值,并将其排除在聚类之外。孤立森林(Isolation Forest):孤立森林是一种基于随机森林的异常值检测方法,它通过构建随机森林来识别数据集中的异常值。 LOF算法:LOF(Local Outlier Factor)算法是一种基于密度的异常值检测方法,它通过计算每个数据点周围的密度来判断数据点是否为异常值。 总之,在数据预处理中,异常值检测是一个重要的步骤,可以帮助我们识别数据集中的异常值,并对其进行处理或排除,从而提高数据的质量和可信度。需要根据数据的特点和需求,选择合适的异常值检测方法。

洛谷入门B2005《打印数字三角形》

# include <stdio.h> void tra(int n,char ch){ int i,j; for(i=1;i<=n;i++){ for(j=1;j<=n-i;j++) #每行打印n-i个空格 printf(" "); for(j=1;j<=2*i-1;j++) #每行打印2*i-1个字符 printf("%c",ch); printf("\n"); } } int main (void){ int n; char ch; scanf("%d %c",&n,&ch); tra(n,ch); return 0; }

FPGA设计时序约束十四、Set_External_Delay

一、序言 在时序约束中对clock的约束还存在一种特殊的延时约束set external delay。set external delay如字面含义,设置外部的时延值,但这个外部时延主要是指反馈时延,即信号从FPGA的output端口输出后经过外部电路回到输入端口的时延值。 二、Set External Delay 2.1 设置界面 进入Timing Constraints界面,在左侧Clock栏中选中Set External Delay,右侧即显示Set External Delay 设置界面中需设置反馈路径中的输出端口output port和输入端口input port,delay value为设置的时延值。勾选“Specify min/max values”后可设置max和min,即指进行setup或hold分析,“Add to existing external delay”勾选后对于约束的端口如果存在其他的外部时延约束,则会将其覆盖。 2.2 命令语法 命令格式 set_external_delay ‑from <args> ‑to <args> [‑min] [‑max] [‑add] [‑quiet] [‑verbose] <delay_value> 参数含义 三、工程示例 3.1 工程代码 设计中以PLL的反馈时钟输入输出为例设置set_external_delay module set_external_delay(d1,rst,clk,clkfb,clkfb_out,out); output out; input d1,rst; input clk,clkfb; output clkfb_out; reg ff1,ff2; wire feedback,clk1; PLLE2_BASE #( .BANDWIDTH("OPTIMIZED"), // OPTIMIZED, HIGH, LOW .CLKFBOUT_MULT(5), // Multiply value for all CLKOUT, (2-64) .

python做数据分析时缺失值填补、缺失值填充方法汇总

在我们进行数据分析时,通常会遇到各种数据缺失的情况,针对这种情况我们该如何进行填补呢? 1、人工填补 该方法仅适用于小数据集,受个人因素影响。 2、平均值填补 对某一列的缺失值,采用该列的平均值填充 df.fillna(method=a.mean(),inplace=True) 此处重点讲解一下fillna的参数,后面不做说明 fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs) #value:固定值,可以用固定数字、均值、中位数、众数等,此外还可以用字典,series等形式数据; #method:填充方法,'bfill','backfill','pad','ffill' #axis: 填充方向,默认0和index,还可以填1和columns #inplace:在原有数据上直接修改 #limit:填充个数,如1,每列只填充1个缺失值 3、临近值填补 对每一列的缺失值,采用临近位置的数据进行填充。 #使用每列缺失值前面的值进行填充(按相应列填充,按照相应index前后填充) df.fillna(method='ffill',inplace=True) df.fillna(method='pad',inplace=True) #使用每列缺失值后面的值进行填充(按相应列填充,按照相应index前后填充) df.fillna(method='backfill',inplace=True) df.fillna(method='bfill',inplace=True) #使用每列缺失值前面的值进行填充(按相邻列填充,按照相应columns前后填充) df.fillna(method='ffill',inplace=True,axis=1) df.fillna(method='pad',inplace=True,axis='columns') #使用每列缺失值后面的值进行填充(按相邻列填充,按照相应columns前后填充) df.fillna(method='backfill',inplace=True,axis=1) df.fillna(method='bfill',inplace=True,axis='columns') 对每一列的缺失值,采用临近位置上下两个值的平均值来填充 #上下两个值的平均值进行填充 df=df.fillna(df.interpolate()) #在此详细介绍下interpolate函数的参数:'nearest', 'zero', 'slinear', 'quadratic', 'cubic', 'spline', 'barycentric', 'polynomial' 4、中位数填补 对每列的数值采用中位数进行填补 df.fillna(df.median(),inplace=True) 5、众数填补 对每列数值采用众数填补 df.fillna(df.mode(),inplace=True) 6、回归填补 对于有缺失值的特征值,将已知特征值代入模型来估计未知特征值,以此估计值来进行填充,该填充方法适用于缺失值为定量的数据类型。 from sklearn.experimental import enable_iterative_imputer from sklearn.impute import IterativeImputer #data为缺失的数据集 imp = IterativeImputer(max_iter=10, random_state=0) imp.fit(data) print(np.round(imp.transform(data))) 7、热平台填补 热平台插补又被称为热卡插补,是从每一缺失数据的估计分布抽取插补值来取代缺失值,使用回答单元中的抽样分布作为抽样分布是常见的方法。热卡插补包括随机抽样插补、分层热卡插补、最近距离热卡插补和序贯热卡插补。

第P8周:YOLOv5-C3模块实现

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/rbOOmire8OocQ90QM78DRA) 中的学习记录博客** >- **🍖 原作者:[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** 一、 前期准备 1. 设置GPU 如果设备上支持GPU就使用GPU,否则使用CPU import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision import transforms, datasets import os,PIL,pathlib,warnings warnings.filterwarnings("ignore") #忽略警告信息 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") device 2. 导入数据 import os,PIL,random,pathlib data_dir = './8-data/' data_dir = pathlib.Path(data_dir) data_paths = list(data_dir.glob('*')) classeNames = [str(path).split("\\")[1] for path in data_paths] classeNames # 关于transforms.Compose的更多介绍可以参考:https://blog.csdn.net/qq_38251616/article/details/124878863 train_transforms = transforms.Compose([ transforms.

传统项目基于tomcat cookie单体会话升级分布式会话解决方案

传统捞项目基于servlet容器 cookie单体会话改造分布式会话方案 ##引入redis,spring-session依赖 <!--redis依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> ##修改配置文件 spring: application: name: hnmop-consumer session: timeout: 3600 store-type: redis redis: namespace: yym:session redis: lettuce: pool: max-idle: 50 min-idle: 10 max-wait: 300 max-active: 25 timeout: 30000 cluster: nodes: - 192.168.3.156:6379 - 192.168.3.156:6380 - 192.168.3.156:6381 - 192.168.3.156:6382 - 192.168.3.156:6383 - 192.168.3.156:6384 # - redis-service.hdsst-ns.svc.cluster.local:6379 # - redis-service.hdsst-ns.svc.cluster.local:6379 # - redis-service.hdsst-ns.svc.cluster.local:6379 # - redis-service.hdsst-ns.svc.cluster.local:6379 # - redis-service.hdsst-ns.svc.cluster.local:6379 # - redis-service.

android studio常用插件

Android studio查看每行代码的修改提交记录 下载git tool box插件 安装完之后会提示重启Android studio,重启之后鼠标放在哪就可以看到哪行代码的修改记录啦 FlutterAssetsGenerator,一款Flutter资源索引插件 使用:build-》generate flutter assets 插件默认的快捷键是Alt/Opt + G。 路径更新:选中某个图片右键-》Flutter: Configuring paths 参考:FlutterAssetsGenerator,一款Flutter资源索引插件 - 简书 flutter自动生成bean的插件- JsonToDart插件 使用:在 Bean 类中右击,选择 Generate ->JsonToDart,输入后台返回的 Json 数据即可转换成 Java Bean flutter自动生成bean的插件- FlutterJsonBeanFactory插件 1.右键-》new-〉jsontodartbeanaction生成实体类文件2.可以自动生成helper文件,后期修改or添加entity中的字段,只需一个快捷键(alt+j)就可以重新生成文件,并且会删除多余文件. 使用说明参考:FlutterJsonBeanFactory插件json使用 - 简书 flutter intl 国际化插件使用:手动修改intl_zh.dart intl_en.dart文件后保存 flutter自动补全插件---Flutter Snippets插件 使用flutter-snippets/README.md at master · georgeherby/flutter-snippets · GitHub 无线调试APP的Android WiFi ADB插件 说明:第一次连接的时侯,要通过USB数据线联接, 并且电脑和手机必须在同一WIFI环境下 开源插件源码 GitHub - pedrovgs/AndroidWiFiADB: IntelliJ/AndroidStudio plugin which provides a button to connect your Android device over WiFi to install, run and debug your applications without a USB connected.

添加 Android App Links

添加 Android App Links功能 介绍一个简单的效果Android配置Add Url intent filtersAdd logic to handle the intentAssociate website 搭建网页支持AppLinks 介绍 Android App Links 是指将用户直接转到 Android 应用内特定内容的 HTTP 网址。Android App Links 可为您的应用带来更多流量,帮助您发现最常用的应用内容,并让用户更轻松地在已安装的应用中查找和分享内容。 一个简单的效果 //TODO 添加视频 我们在网页上输入:http://tobey-r1.github.io/tobey?23 然后效果如下: Android配置 在Android studio编译器里面顶部的Tools里面的App Links Assistant里面就是给你的app添加link配置的步骤,包括最后的url测试。麻烦点在于如果自己只是研究且测试需要一个网页去支持和app的绑定,这就是下一个流程要说的。Android上面的配置就比较简单了,大概是这样的: 按照前面三个步骤来。 Add Url intent filters 这里pathPattern就是host之后的匹配内容了,对应上才能link到app上面去。 Add logic to handle the intent 就是接受外部网页传递的参数intent,data之类的(点击insert code会自动插入到页面上去): // ATTENTION: This was auto-generated to handle app links. val appLinkIntent: Intent = intent val appLinkAction: String? = appLinkIntent.

【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别

【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别 前言概览一、 微信小程序基础/背景小程序的理解微信小程序的优点及缺点简述一下微信小程序的相关文件类型简述一下小程序的开发流程?简述一下微信小程序的框架? 二、微信小程序与其他的区别,联系微信小程序中的js和浏览器中的js以及node中的js的区别请谈谈wxml与标准的html的异同?请谈谈WXSS和CSS的异同?微信小程序与H5的区别?微信小程序与Vue区别小程序的父子传参和vue中的有什么区别小程序的双向绑定和 vue 哪里不一样请谈谈原生开发小程序,wepy,mpvue的对比?小程序与原生App哪个好微信小程序与公众号,微信之间的关系与区别 下篇笔记链接 前言 概览 下面是关于笔者我小程序八股文笔记,终于也来博客做同步的更新啦。下面给个图来概览一下吧。 这里是具体的目录情况,但在我的博客share中,我并不会完全按照下面篇章来。 那么在这里的第一篇章,笔者我主要想介绍两个部分的内容:一个是小程序的基础/背景,另外一个是小程序与其他平台的区别。 一、 微信小程序基础/背景 这一部分主要介绍小程序的基本架构,优缺点,开发的流程等。 小程序的理解 从开发的角度来看,小程序是一种开发能力,可以看成一种基于HTML、CSS 和 JavaScript 的移动应用程序,提供了大量的内置组件和API,具有开发成本低,开发效率高的优点。同时,开发人员可以将小程序集成到微信或其他社交媒体平台上,以提供快速访问和获取所需信息和服务的功能。对于使用者来说,小程序是一种轻量级的应用程序,无需下载安装,通常可以在微信或其他社交媒体平台上创建和发布,可以提供快速、便捷、高效的服务或体验。微信小程序的理解:微信小程序是一种轻量级应用程序,用户可以直接在微信内使用,无需下载或安装。 微信小程序的优点及缺点 优势:无需下载安装,随搜随用,用完即走,入口众多,使用便捷快速,服务请求快,流量大,也容易被接受,开发成本低,降低兼容性限制,可靠安全,具有良好的用户体验。劣势: 开发及发布的限制多(体积限制,资源限制),样式单一,依托微信或其他平台,推广面相对较窄,用户留存率相对较低。 💡 体积限制的个人感受:在打包小程序上面时,发现图标资源体积占用高,无法上传(微信小程序只有2M的大小,这样导致无法开发大型一些的小程序),所以后面一些大的图像资源使用的时网络资源请求的形式。 详情 优势:无需下载安装,随搜随用,用完即走,入口众多,使用便捷快速,服务请求快,流量大,也容易被接受,开发成本低,降低兼容性限制,可靠安全,具有良好的用户体验。 无需下载,通过搜索和扫一扫就可以打开。良好的用户体验:打开速度快。开发成本要比App要低。安卓上可以添加到桌面,与原生App差不多。为用户提供良好的安全保障。小程序的发布,微信拥有一套严格的审查流程,不能通过审查的小程序是无法发布到线上的。 劣势: 开发及发布的限制多(体积限制,资源限制),样式单一,依托微信或其他平台,推广面相对较窄,用户留存率相对较低。 限制较多。页面大小不能超过2M。不能打开超过5个层级的页面。样式单一。小程序的部分组件已经是成型的了,样式不可以修改。例如:幻灯片、导航。推广面窄,不能分享朋友圈,只能通过分享给朋友,附近小程序推广。其中附近小程序也受到微信的限制。依托于微信,无法开发后台管理功能。 简述一下微信小程序的相关文件类型 简单来说就是标记语言wxml,样式语言wxss,逻辑代码语言js,配置语言json. 全局主题文件: app.js 可以在里边监听生命周期函数、声明全局变量 小程序逻辑文件,主要用来注册小程序全局实例,编译时会和其他页面的逻辑文件打包成一个JavaScript文件,项目中不可缺少。 app.json 小程序的全局配置(页面路径、网络超时时间、底部tabBar 、导航背景颜色等) 程序公共设置文件,配置小程序全局设置,项目中不可缺少。 app.wxss 小程序主样式表文件,类似于HTML的css文件,主样式表文件中设置的样式,在其他页面文件中同样有效,该文件不是必需的。 页面文件: WXML:是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。 页面的结构文件,用来设计页面的布局、数据绑定等,相当于HTML页面中扩展名为html文件,其在页面中不可缺少。 WXSS:是一套样式语言,用于描述WXML组件样式。 页面样式表文件,用来定义页面中用到的各类样式表。若.wxml文件内联样式及app.wxss文件内的样式表定义同本页面的样式表定义相同时,内联样式优先于.wxss文件样式,.wxss文件样式优先于app.wxss文件样式,该文件不是必需的。 js:处理逻辑,网络请求。 页面逻辑文件,在该文件中编写javascript代码以控制页面逻辑,其在页面中不可缺少。 json 配置当前页面标题和引入组件等 页面配置文件,其在页面中不可缺少。 简述一下小程序的开发流程? 注册微信小程序账号获取微信小程序的 AppID下载微信小程序开发者工具创建demo项目去微信公众平台配置域名手机预览代码上传提交审核小程序发布 简述一下微信小程序的框架? 微信小程序使用的是WXML+WXSS+JS来进行应用程序的搭建,本质上是一个单页应用,所有的页面渲染和事件处理都在一个页面内进行,但可以通过微信客户端调用原生的各种接口。与网站不同,小程序是一个双线程框架,也就是说渲染线程和 JS 线程是互相别独立的。与采用Vue开发的网站相似,小程序也是基于数据驱动的框架,也就是说UI和数据是分离的。 二、微信小程序与其他的区别,联系 这一部分主要介绍小程序的以及它与网站,uniapp等其他前端的区别与联系 微信小程序中的js和浏览器中的js以及node中的js的区别 直观的说小程序中没有DOM和BOM对象,也无法对npm包进行管理 浏览器中JS ESDOMBOM Node中的JS

Unity | 快速修复Animation missing错误

目录 一、背景 二、效果 三、解决办法 一、背景 最近在做2D 骨骼动画相关的Demo,我自己使用Unity引擎进行骨骼绑定并创建了anim后,一切正常,anim也能播放。但是昨天我修改Obj及子物体的名称(由中文改为英文,如:头发改为了Head)后,出现了anim无法播放的问题。 原因:Unity中的动画系统依赖于对特定对象和属性的引用,如果这些被更改或重命名,那么之前建立的连接就会断开。 二、效果 三、解决办法 利用NotePad++打开.anim文件,修改path字段,用现在的名称替换原名称即可。但是由于原名称是中文,打开后是这个效果。 利用在线 Unicode 编码转换 | 菜鸟工具 (runoob.com),将unicode转为中文 利用notepad++批量修改要改的名称即可。

Compose中快捷监听软键盘收起弹出状态方法(兼容Android各个版本)

Compose中快捷监听软键盘收起弹出状态方法 非compose方法监听软键盘收起在compose中监听软键盘收起状态使用前提 非compose方法监听软键盘收起 在我们开发compose项目之前就有很多获取软键盘状态的方法,比如如下法1: fun getImeVisible(activity: Activity, callback: WindowsKeyboardCallback? = null) { //判断软键盘是否收起 ViewCompat.setOnApplyWindowInsetsListener(activity.window.decorView) { _, insets -> val imeVisible = insets.isVisible(WindowInsetsCompat.Type.ime()) val imeHeight = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom callback?.onKeyboardChanged(imeVisible, imeHeight) WindowInsetsCompat.CONSUMED } } 但是这种不适合navigation的多页面路由中使用判断,会导致状态栏显示异常。 方法二: fun Activity.listenForKeyboardVisibilityChange(callback: (Boolean) -> Unit) { val rootView = window.decorView.findViewById<View>(android.R.id.content) rootView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener { private val rect = Rect() private var isKeyboardVisible = false override fun onGlobalLayout() { rootView.getWindowVisibleDisplayFrame(rect) val screenHeight = rootView.rootView.height val keyboardHeight = screenHeight - rect.

VsCode(Visual Studio Code) 安装插件教程

VsCode(Visual Studio Code) 安装插件教程 1、打开VsCode 桌面上、最近安装程序上找找吧 在桌面上双击,打开 2、打开的效果图 3、点击左侧最后的插件图标 4、打开后如下图所示 5、在输入框中输入Go 6、同样在安装插件页面也可以卸载、安装其它版本和禁用操作 你有时间常去我家看看我在这里谢谢你啦... 我家地址:亚丁号 最后送大家一首诗: 山高路远坑深, 大军纵横驰奔, 谁敢横刀立马? 惟有点赞加关注大军。

mfc100u.dll文件丢失了要怎么解决?修复mfc100u.dll详细指南

mfc100u.dll文件丢失了要怎么解决?首先让我们扒一扒什么是 mfc100u.dll。这玩意儿是 Microsoft Visual Studio 2010 的一部分,它就像一款程序生活中不可或缺的零件,没了它,程序肯定跑不起来。想想看,没有一个重要的零件,那你的机器还能运行么?,程序也是一样的。那怎么解决呢?让我们开始修电脑之旅吧! 第一种方法:重启大法 这可是万能的,俗话说:“不行就重启,再不行就再重启。” 找到“开始”按钮,点“关机”,再选个“重启”就行了。 优点简单粗暴,但就跟喝凉水止渴一样,问题可能还在。 第二种方法:重新装程序 删掉那个抽风的程序,再装一遍,通常挺管用。 缺点就是如果问题在系统里面,这办法就像对牛弹琴。 别忘了要从官方下载哦,网上乱七八糟的东西多着呢。 第三种方法:搞技术式修复——系统文件检查器(SFC) 拉开命令提示符的序幕,以管理员的身份登场,输入 ​sfc /scannow​。 它就会自动的帮你检测你的电脑系统,修复损坏的系统文件。 当然它不是万能的,也有很多情况是修复不了的,这时候你就得换其他方法段落。 第四种方法:用点小工具 — DLL修复工具 这种小软件通常能快速搞定DLL问题。 不过呢,千万别随便下一个,不然不是修DLL,是送病毒。 在任意的浏览器上车俞入:dll修复.site 然后按确认Enter键就可以了 进入站点之后下载,直接使用就可以了 点击一键修复dll错误的按钮,就会自动的帮你扫描电脑系统中缺失的dll文件 等扫描完毕后,再点击修复,然后静待修复完成就可以了。 最后就是关机重启一下就能修复mfc100u.dll完成。(也可以选择手动修复,在dll修复工具上,选择手动修复,然后输入mfc100u.dll文件,直接查找,下载安装就可以了。) DLL修复工具_一键修复所有dll缺失msvcp140.dll丢失的解决方法–电脑修复精灵 第五种方法 — Visual C++ 2010 Redistributable Package mfc100u.dll是这个包的一份儿,去微软的官方网站上找找它,安装回来,多半能解决你的烦恼。 虽然有点费时,但是还是很有效的,这种方法能直接帮你更换掉相关有问题的mfc100u.dll文件。 记得噢,不管做啥,咱们总得做好防护工作,备份数据,免得弄巧成拙,本来是修个电脑,结果整崩溃了,那可就得哭晕在厕所了。 以上就是mfc100u.dll文件丢失了要怎么解决的一些相关方法分享,希望本文能帮助到大家,如果想了解更多,欢迎继续关注小编哦。

2024新趋势下的“电力行业数字化转型建设方案”

电力行业数字化转型背景 电力行业作为节能减排的核心领域,其数字化转型在推动“碳达峰、碳中和”目标实现中发挥着关键作用。为实现这些目标,能源与电力相关行业需要发挥主导作用,而国家有关部门为此出台了一系列引导相关产业数字化发展的政策。对于电力行业而言,积极进行数字化转型不仅可以提高效率和效益,更是履行社会责任的重要体现。 社会责任:在全球迈向低碳时代的大背景下,我国电力企业作为重要的能源枢纽,应积极运用数智化工具,从技术、业务、战略等多维度实现绿色转型。这不仅是响应国家政策的号召,更是承担社会责任的体现。 政策目标:国家发改委、国家能源局于2022年3月22日发布了《“十四五”现代能源体系规划》,提出加快能源产业数字化智能化升级,实施智慧能源示范工程。该规划对智慧电厂等建设进行了详细规划,包括推广电力设备状态检修、厂站智能运行、作业机器人替代、大数据辅助决策等技术应用,推进电站数字化与无人化管理,开展新一代调度自动化系统示范。 自身需求:传统电力产业“发-输-变-配-用”各节点彼此孤立,难以协同,导致电力生产效率低下,经济效益不高。而5G、AI、大数据、IoT、低代码等数字化技术与日常生产、经营、管理等各环节的深度融合,不仅能有效提升电力企业的生产效率和经济效益,构建安全可控、绿色低碳、高效敏捷的综合性能源基础设施,实现绿色能源运用,同时也有助于应对能源生产结构、存储形式、分享机制及消费模式变化带来的挑战。 在上述因素的共同推动下,我国电力数字化转型的需求正持续释放。据艾瑞咨询发布的数据显示,2021年我国电力数字化核心软件及服务市场规模为414亿元,预计未来几年将保持19.3%的复合增长率,到2025年市场规模将达到839亿元。 ​ 电力行业数字化转型的需求与挑战 在政策、技术和市场的共同推动下,我国电力数字化转型的需求正持续释放。然而,在转型过程中,电力企业也面临着一系列的挑战。 1、业务分布广+站点数量多,导致管理难度大 很多电力企业的水电、风电及光伏站点数量众多,业务现场分布广、人员少、同质性强,管理要素全、难度大。 2、数据接口不一致,造成集成困难 部分电力企业早早开启了数字化建设,但前期由于参与建设的厂商太多,分别采用各自的数据、接口、集成标准,导致后续在更高层面进行数据的深度应用存在困难。 3、业务没有系统支撑,数字化程度低 企业现有的业务系统不能覆盖所有部门,部分业务开展过程中缺少有效数据做支撑,此外,现有系统功能也不是很全面,无法满足新的业务需求,功能灵活性不足;系统自动化程度较低,存在需要手工填报数据的情况。 4、数据价值未有效挖掘,智能化程度还待加强 电力企业的数据价值分析的应用能力较弱,当前更多的是对数据收集、展示以及统计结果的呈现和罗列,大数据整合与分析能力较弱,进一步的数据挖掘分析较少,对企业的多维度分析、预测和决策支持能力有限,未充分体现数据的应用价值。 电力行业数字化转型解决方案 电力企业作为传统的能源行业,面临着业务范围广、分布站点多、决策流程长和智能化程度低等挑战。为了应对这些挑战,数字化转型成为电力企业的重要战略方向。数字化转型的目标是建设公司各级全覆盖、业务内外全贯通的数字型现代企业,提升全链条、全业务的智慧集成,打造高效的信息处理平台。 为了能帮助电力企业深入建设数字化转型,织信低代码平台结合与国家电网的实践经验,建议企业从以下几个方面着手: 首先,以智慧集成为目标导向,构建一体化、平台化、网络化的数字化底座。这个底座将包括数据中台、业务中台和技术中台,以促进数据流、信息流和业务流的高效流转。通过数字化底座的建设,将为企业提供坚实的数据基础和强大的信息处理能力。 其次,基于数字化底座推进全业务、全链条的数字化进程。这意味着对企业内部的各项业务进行全面数字化,覆盖从电力生产、传输到销售的整个价值链。通过数字化技术的应用,将实现对全局发展智能化应用的有效支撑,提高企业的运营效率和响应速度。 第三,加强内外部的信息共享与业务交融。电力企业需要与电力价值各主体建立生态合作关系,实现信息的互通和资源的共享。通过与合作伙伴、供应商和客户之间的深度融合,将加强电力与其他领域的叠加赋能,彰显能源平台生态的价值。 第四,实现电力的产销协同、服务延伸与智能决策。通过大数据的专业挖掘和软件开发,形成自动识别风险、智能决策管理以及多系统协同的“云脑”,对企业进行高效管理。这将有助于提升电力企业的市场竞争力,优化资源配置,并为企业创造更多的商业机会。 低代码:赋能电力企业高质量发展! 1、统一站点管理: 电力行业站点分布广泛,数量众多,管理难度大。传统管理方式已无法满足现代需求。织信低代码可快速构建集中式站点管理系统,统一管理水电、风电及光伏站点。通过可视化界面,可远程监控站点运行状态、数据采集和故障预警,提高管理效率和准确性。 2、标准化数据接口: 电力企业在运营中需处理大量数据,并确保数据在不同系统和应用间流通和共享。不同厂商系统采用不同数据接口和标准,导致数据流通受阻。织信低代码通过统一的API数据接口和集成标准,将各系统和应用有效串联,实现数据自动流转和处理。以智能电表为例,其数据可接入企业现有系统,提高数据分析准确率和电力调度、故障排查效率。 3、业务系统覆盖: 随着业务不断扩张和复杂化,传统业务系统难以满足数字化需求。定制开发成本高、周期长,且难以适应变化。织信低代码平台灵活敏捷、降本增效,可覆盖设备管理、调度、作业、生产、巡检、管控、实训等业务场景,替代传统开发流程,提升开发效率,消除业务与技术间壁垒,助力电力企业实现“数字化+智能化”一站式升级。 4、数据价值挖掘: 电力企业具备天然数据优势,但传统处理方式无法充分发挥价值。织信低代码可为数据价值挖掘提供新方案。例如,利用大数据分析引擎整合、清洗电力系统中的实时和历史数据,通过机器学习算法预测电力需求峰值和谷值,调整电力供应避免浪费和供需失衡;实时监控电力设备运行数据,通过预警和预测性维护提前发现设备问题,提高运行效率和降低维护成本及停机时间。低代码平台还提供可视化报表和仪表盘,为数据驱动决策提供支撑。 基于织信低代码开发平台,打造电力企业自主可控的数字化技术底座。业务和IT人员均可敏捷高效地构建业务应用,加速数字化应用场景的覆盖。平台的流程能力可打通跨部门、组织的业务流程,实现数据和业务的集成融合形成高质量数据,为数据驱动决策提供支撑。足够开放的织信低代码为多系统集成和上下游生态提供连接服务,推动电力行业数字化转型和智能运营创新能力。 低代码在电力数字化转型的实践 在国家“3060双碳战略”和“新基建战略”的背景下,织信低代码平台在电力行业数字化转型中发挥了关键作用。通过技术应用创新,成功地帮助电力企业推动了双碳目标的实现,同时也满足了政府对双碳双控管理平台的需求。 某电力企业面临的主要挑战: 如何利用信息技术应用创新推动双碳发展,如何与政府共同建设双碳双控管理平台,以及如何应对数字化应用场景不断增加、传统开发方式周期长和试错成本高等问题。 同时,市场竞争的日益激烈也要求该电力企业不断提升用电侧的智能服务水平,而现有的系统和流程割裂、数据资产分布各异、流程优化和数据管理依赖人工等问题也阻碍了这一目标的实现。另外,能源互联网衍生产品和服务对现有技术架构提出了新的挑战,需要一个统一的技术平台来支撑上下游生态、大数据、AI等新兴技术的融合。 针对电力企业各项挑战,织信低代码采取了以下实施方案: 利用适配丰富的织信低代码开发平台,从运维、生产、设备相关应用入手,通过低代码能力构建和迭代数字化应用; 打通系统间的流程和数据,实现售电业务流程化管理,深化客户服务场景,基于动态协调和优化流程提升用电侧服务水平; 利用企业级低代码底座打通上下游,与AI、大数据等实现互联互通,建立数据化、流程化、智能化于一体的能源互联网生态。 项目实施成效包括: 通过织信低代码搭建全国产化适配的数据平台,以生产经营相关应用为切入点,为信创落地奠定基础,并助力打造数字化、碳中和下的区域碳管理绿色; 帮助该电力企业量身定制业务部门所需的数字化应用,快速响应市场需求,降低验证成本,业务应用设计和迭代更加敏捷; 将新兴技术与科技创新相融合,催生新业务形态。创新生产管理模式,不断提升运营数字化、智能化能力。 未来,该电力企业还会基于织信低代码平台底座与信创能力,持续打通营销、客户、交易、风控及统计分析等购、售电业务全链条,既符合标准化的流程,也能满足分子公司的差异化调整,提高智能服务水平。

【解读】2024年SaaS 5大发展趋势,降低成本、提高效率、促进创新等方面的作用日益凸显。

SAAS(Software as a Service,软件即服务)是一种基于云计算的服务模式,它允许用户通过网络访问和使用软件,而无需在本地计算机上安装和维护这些软件。在这种模式下,软件供应商将应用程序托管在自己的服务器上,用户可以通过互联网在任何时间、任何地点访问这些应用程序,并且通常只需要为实际使用付费。 SAAS模式改变了传统软件的购买和使用方式。在过去,企业需要购买软件许可证,然后在本地服务器上安装和维护这些软件。这种方式不仅成本高,而且维护复杂。而SAAS提供了一种更为灵活和经济的服务模式,它允许企业根据实际需求来购买服务,无需担心硬件和软件的维护更新问题,因为这些都由SAAS提供商来承担。 随着互联网技术的发展和云计算的普及,SAAS已经成为企业尤其是中小企业在实现信息化、数字化过程中普遍采用的一种服务模式。它能够帮助企业降低IT成本,提高工作效率,实现业务流程的自动化,并为企业提供灵活、可扩展的解决方案。 在中国,随着数字化转型的推进和政策的支持,SAAS行业经历了快速的发展。尽管面临市场竞争、用户习惯培养等挑战,但SAAS依然被视为助力企业尤其是中小企业数字化转型的重要工具。政府也在推动企业上云,提供了一系列的政策和资金支持,以促进SAAS行业的发展和企业数字化进程。 总的来说,SAAS作为一种创新的软件服务模式,正逐渐成为企业信息化建设的重要选择,其在降低成本、提高效率、促进创新等方面的作用日益凸显。 AI和机器学习的进一步整合 在SAAS(Software as a Service)环境中,AI(人工智能)和机器学习的进一步整合指的是将这些先进技术更紧密地融入到云服务软件中,以便为客户提供更智能、更自动化、更个性化的服务。这种整合通常涉及以下几个方面: 1. 智能决策支持:通过集成AI和机器学习模型,SAAS应用可以自动处理和分析大量数据,为用户提供更精准的洞察和预测,帮助他们做出更明智的决策。 2. 自动化工作流程:AI和机器学习可以帮助自动化日常任务和重复性工作,提高效率,减少人为错误,并释放员工的时间,让他们专注于更有创造性和战略性的工作。 3. 个性化体验:通过机器学习,SAAS应用可以更好地了解用户的行为和偏好,从而提供个性化的用户体验和定制化的服务。 4. 智能推荐系统:类似于电子商务平台中的“推荐商品”,AI可以帮助SAAS应用根据用户的历史数据和模式识别,推荐相关的功能、服务或产品。 5. 自然语言处理:集成自然语言处理(NLP)技术可以使SAAS应用更好地理解和响应用户的自然语言查询,提供更自然的交互体验。 6. 预测分析:利用机器学习模型进行预测分析,可以帮助企业预测未来的趋势和需求,从而更好地规划资源和策略。 7. 增强的数据分析:AI和机器学习可以处理和分析比传统方法更多的数据类型,提供更深入的数据洞察,帮助用户发现新的模式和关联。 8. 自适应学习:机器学习模型可以不断学习和适应新的数据和环境变化,使SAAS应用能够随着时间的推移而不断改进和适应。 通过这些技术的整合,SAAS平台不仅能够提供传统的软件功能,还能够通过AI和机器学习的能力,为用户提供更高级别的智能服务,从而在竞争激烈的市场中脱颖而出。 垂直SAAS的增涨 在SAAS(Software as a Service)领域中,垂直SAAS的增涨指的是特定行业或领域内专门为该行业定制的SAAS解决方案的增长。这些解决方案通常专注于满足特定行业的需求,如医疗、教育、金融、零售、制造等,而不仅仅是提供通用的软件功能。 垂直SAAS的增长可以从以下几个方面来理解: 1. 市场渗透率的提升:随着行业对SAAS模式的接受度提高,越来越多的企业开始采用垂直SAAS解决方案来提升效率和竞争力。 2. 收入增长:随着市场需求的增加,垂直SAAS提供商的收入通常会有显著的增长,这可能是由于新客户的增加、现有客户的扩展部署或产品价格的提升。 3. 产品创新:为了满足市场的需求,垂直SAAS提供商可能会不断推出新的功能和服务,以保持竞争力并吸引新客户。 4. 行业专精:垂直SAAS提供商通常会深入理解特定行业的业务流程和挑战,提供更加贴合行业特点的解决方案,这种专业性和深入性是垂直SAAS增长的关键因素。 5. 客户关系的深化:通过与客户的紧密合作和持续服务,垂直SAAS提供商能够建立长期的客户关系,这有助于保持客户忠诚度和持续的收入增长。 6. 市场扩张:随着垂直SAAS解决方案的成熟,提供商可能会将业务扩展到新的地区或市场,以寻求更广泛的市场机会。 7. 投资和并购:随着垂直SAAS领域的吸引力增加,可能会吸引更多的投资和并购活动,这有助于推动行业增长和创新。 垂直SAAS的增长是SAAS行业整体发展趋势的一部分,它反映了企业对于更加专业化、定制化软件服务的需求。随着技术的进步和市场的成熟,预计垂直SAAS将继续保持增长势头。 低代码和无代码平台的兴起 在SAAS(Software as a Service)领域中,低代码(Low-Code)和无代码(No-Code)平台的兴起指的是一种新的软件开发趋势,它允许非技术用户(如业务分析师、业务流程专家和最终用户)通过图形界面和拖放工具来创建、部署和管理应用程序,而无需编写复杂的代码。 低代码和无代码平台的核心特点包括: 1. 可视化开发:用户可以通过图形界面来设计应用程序的界面和流程,这些界面和流程通常以可视化的方式呈现,使得非技术用户也能够轻松理解和操作。 2. 模型驱动:低代码和无代码平台通常依赖于模型驱动的方法,用户通过定义数据模型、流程模型等来构建应用程序的逻辑和结构。 3. 自动化生成代码:平台可以自动生成底层代码,用户无需手动编写。在低代码平台中,用户可能需要编写一些代码来处理特定的业务逻辑,而在无代码平台中,几乎所有的代码都是由平台自动生成的。 4. 易于部署和维护:由于这些平台通常提供云服务,因此应用程序的部署、扩展和维护都变得更加容易和快捷。 5. 快速迭代:低代码和无代码平台使得企业能够快速响应市场变化,持续迭代和优化应用程序,以适应不断变化的业务需求。 低代码和无代码平台的兴起对软件行业产生了深远的影响,它改变了传统软件开发模式,提供了更快的开发速度、更低的开发成本和更高的灵活性。这种趋势尤其适合希望快速实现数字化转型的企业,尤其是中小型企业,它们通常缺乏足够的IT资源来支持传统的软件开发流程。 随着技术的进步和市场的需求,预计低代码和无代码平台将继续保持增长势头,成为企业数字化转型的重要工具。

分享72个Python爬虫源码总有一个是你想要的

分享72个Python爬虫源码总有一个是你想要的 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1v2P4l5R6KT2Ul-oe2SF8cw?pwd=6666 提取码:6666 项目名称 10 photo websitespiders, 10 个国外图库的 scrapy 爬虫代码 A microasynchronous Python website crawler framework (Python微型异步爬虫框架) CSDN 爬虫,批量爬取指定用户全部博文并输出为 markdown 格式 DHT网络爬虫(python) iHealth 项目的内容爬虫(一个基于 python 和 MongoDB 的医疗咨询爬虫) life is simple,i use Python 业余时间做的python项目:自动发送邮件(爬虫相关)、游戏脚本尝试(图像识别与自动化操作)、算法入门学习 python 爬虫多个案例(清纯妹子图片,糗事百科,豆瓣前250电影评分、神评) Python 网络爬虫爬西瓜视频 Python 网络爬虫的案例,爬取的网站有豆瓣、MEITUAN、哔哩哔哩、图片资源、古诗词、广东工业大学官网等 Python+Flask+爬虫的新冠疫情实时监测系统 Python-vue 新闻爬虫网站 python3基础模块、网络模块Socket paramiko、GUI模块tkinter&pyqt5&wxpython、数据库模块MySQL、光学字符识别OCR、OpenCV、爬虫scrapy等等 Python兴趣点(POI)爬虫,通过某度地图API爬取指定城市兴趣点列表,包含其:坐标、名称、联系方式 Python实战-四周实现爬虫系统 import os import shutil import threading import pyperclip import tkinter from tkinter import messagebox from apscheduler.schedulers.blocking import BlockingScheduler from sprider.

CommandLineRunner、ApplicationRunner、ApplicationListener、@PostConstruct对比

Springboot启动时执行: CommandLineRunner、ApplicationRunner、ApplicationListener @PostConstruct 对比 使用场景: 我们在开发过程中会有这样的场景:需要在项目启动后执行一些操作,比如:读取配置文件信息,数据库连接,,删除临时文件,清除缓存信息,工厂类初始化,加载活动数据,或者缓存的同步等。我们会用多种实现方式,例如@PostConstruct、CommandLineRunner、ApplicationRunner、ApplicationListener都可以实现在springboot启动后执行我们特定的逻辑,接下来对比他们的区别 1、@PostConstruct 该注解被用来修饰一个非静态的void方法,被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务区执行一次 触发时机: SpringBoot会把标记了Bean相关的注解(例如@Component、@Service、@Repository等)的类或接口自动初始化全局的单一实例,如果标记了初始化顺序会按照用户标记的顺序,否则按照默认顺序初始化。在初始化的过程中,执行完一个Bean。 spring中bean的创建过程 配置Bean(@Component、@Service、@Controller等注解配置)-->解析为Bean的元数据(Bean容器中的BeanDefinition对象)-->根据Bean的元数据生成Bean(创建Bean) 创建Bean的时候执行顺序 Constructor(构造方法)–>@Autowired(依赖注入)–>@PostConstruct(注释的方法) 实例: @PostConstruct public void dispatcher() throws Exception { // 逻辑代码 } 优点: 使用简单,在spring容器管理的类中添加此注解即可 缺点: 1.在spring创建Bean的时候触发,此时容器还未完全初始化完毕,如果逻辑中引用了还未完成初始化的bean会导致异常,所以需要考虑加载顺序。 2.如果@PostConstruct方法内的逻辑处理时间较长,就会增加SpringBoot应用初始化Bean的时间,进而增加应用启动的时间。因为只有在Bean初始化完成后,SpringBoot应用才会打开端口提供服务,所以在此之前,应用不可访问。 3.一句话,会影响你程序启动的时间。 2、CommandLineRunner、ApplicationRunner 使用起来很简单,只需要实现CommandLineRunner或者ApplicationRunner接口,重写run方法就行。 触发时机: 通过springboot启动源码: 启动后会执行callRunner方法: public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); //设置线程启动计时器 stopWatch.start(); ConfigurableApplicationContext context = null; Collection<SpringBootExceptionReporter> exceptionReporters = new ArrayList<>(); //配置系统属性:默认缺失外部显示屏等允许启动 configureHeadlessProperty(); //获取并启动事件监听器,如果项目中没有其他监听器,则默认只有EventPublishingRunListener SpringApplicationRunListeners listeners = getRunListeners(args); //将事件广播给listeners listeners.starting(); try { //对于实现ApplicationRunner接口,用户设置ApplicationArguments参数进行封装 ApplicationArguments applicationArguments = new DefaultApplicationArguments( args); //配置运行环境:例如激活应用***.

三张表看懂POE POE+ POE++ 三个协议的相关参数

Hqst华强盛(盈盛电子)导读:三张表看懂POE POE+ POE++ 三个协议的相关参数。 一 ̖ POE协议区分: 802.3af(PoE) 百兆网络变压器H81621S 二 ̖ POE协议与受电设备(PD)工作功率分级 802.3at(PoE) 百兆网络变压器HX81621S 三 ̖POE协议与支持网线对应关系 POE协议与支持网线对应关系 802.3bt(PoE++)千兆网络变压器H84801DP 对POE POE+ POE++ 三个协议的相关参数有所了解了吗?接下来Hqst 盛生将继续给大家分享与网络变压器及配套的RJ45 网络连接器的相关知识,方便大家认识网络变压器和RJ系列网口产品,不足之处欢迎讨论; 感兴趣的朋友,可以继续关注!

Android Studio中Gradle问题解决方法(亲测有效)

当我们在新建或者导入一个项目时,会发现Gradle一直在编译,时间特别久。有时还会报错,如下图: 解决方法:其实是因为国内无法使用外网。所以我们需要使用国内镜像源来解决这个问题。 我们只需要点击project 在build文件夹下找到gradle-wrapper.properties 编辑如下 主要是替换这一行代码(仔细看代码使用的阿里云镜像源,自己也可以换成清华源或者豆瓣源) distributionUrl=http\://mtl-gradle-mirror.oss-cn-hangzhou.aliyuncs.com/gradle-7.3-bin.zip 然后再找到settings.gradle.kts修改如下: 注意只需要更改我选择的这一部分,不要修改下面默认的代码。 pluginManagement { repositories { maven { url = uri("https://www.jitpack.io") } maven { url = uri("https://maven.aliyun.com/repository/releases") } // maven { url = uri("https://maven.aliyun.com/repository/jcenter") } maven { url = uri("https://maven.aliyun.com/repository/google") } maven { url = uri("https://maven.aliyun.com/repository/central") } maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") } maven { url = uri("https://maven.aliyun.com/repository/public") } maven { url = uri("https://s01.oss.sonatype.org/content/groups/public") } google() mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.

FAST-LIO论文解析

题目:FAST-LIO:一种快速鲁棒的基于紧耦合迭代卡尔曼滤波的雷达-惯导里程计 摘要 本文提出了一种计算效率高、鲁棒性好的激光-惯性里程计框架。我们使用紧耦合的迭代扩展卡尔曼滤波器将LiDAR特征点与IMU数据融合在一起,从而在快速运动、嘈杂或混乱的环境中实现鲁棒导航。为了在大量测量数据的情况下降低计算负荷,我们提出了一个新的计算卡尔曼增益的公式。新公式的计算量依赖于状态维数而不是测量维数。在各种室内和室外环境中对所提出的方法及其实现进行了测试。在所有测试中,我们的方法实时产生可靠的导航结果:在四旋翼机载计算机上运行,它在扫描中融合了1200多个有效特征点,并在25毫秒内完成了iEKF步骤的所有迭代。我们的代码在Github2开源。 一、简介 主要贡献: 紧耦合卡尔曼滤波器,使用IMU运动模型的积分结果和点云匹配残差共同构建残差函数里程计频率,以固定采样时间间隔作为一个SCAN进行处理,而不是将整个激光帧作为一个处理单位 如一帧点云采样时间为100ms,将20ms作为一个SCAN,即将一帧激光点云变成5个SCAN点云运动补偿,基于IMU积分结果反推每个激光点采样时间对应的位姿,将所有的激光点变换到SCAN结束时间对应的坐标系卡尔曼增益计算,优化计算公式,将针对激光点的矩阵求逆转换为对状态的矩阵求逆,维度几大降低 二、相关工作 A.纯LIDAR方法 基于ICP、G-ICP进行匹配,以及结合点到平面和点到直线的距离进行迭代匹配计算(LOAM、Lego-Loam)。 B.松耦合LIO 将IMU的积分结果作为点云匹配的初值,或者对IMU积分以及点云匹配分别处理,然后再基于EKF进行滤波融合。 C.紧耦合LIO 将原始云点数据和IMU原始数据一起放在图优化或者滤波器中构建残差函数,并进行优化。 三、算法概述 A. 算法框架 本文将使用表1中所示的符号。我们的工作流程概述如图2所示。将激光雷达输入输入特征提取模块,获得平面特征和边缘特征。然后将提取的特征和IMU测量值输入我们的状态估计模块,在10Hz−50Hz下进行状态估计。然后,估计的姿态将特征点变换到世界坐标系并添加到全局地图。 t k t_k tk​ : 某组scan数据的终止时间 τ i \tau _i τi​ : 在两帧LIDAR时间戳区间内,第i个IMU数据对应时间 ρ j \rho _j ρj​ : lidar帧中第j个云点对应时间 I i I_i Ii​、 I j I_j Ij​、 I k I_k Ik​ : 在 t k t_k tk​、 τ i \tau _i τi​、 ρ j \rho _j ρj​时对应的IMU坐标系 L i L_i Li​、 L k L_k Lk​ : ρ j \rho _j ρj​、 t k t_k tk​时对应的LIDAR坐标系 x , x ^ , x ˉ x, \hat{x}, \bar{x} x,x^,xˉ : 状态估计时的真值、预测值和估计值 x ~ \tilde{x} x~ : 真值和估计值之间的差值 x ^ k \hat{x}^k x^k : 第k次迭代时的预测值 x i x_i xi​、 x j x_j xj​、 x k x_k xk​ : i,j,k时刻的状态向量 x ˘ j \breve{x}_j x˘j​ :在j时刻的后向传播位姿 B.

分享72个NodeJs项目源码总有一个是你想要的

分享72个NodeJs项目源码总有一个是你想要的 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1_bzxbmBlN8ga4-Ci1I0-0w?pwd=6666 提取码:6666 项目名称 A lottery webapp on Node.js basics with Express. Nodejs 彩票项目 Angular2种子项目 KoaHub.js -- 中文最佳实践Node.js Web快速开发框架 Layui+nodejs+axiosPC端项目 Liblog是一个简单易用的博客系统,它是基于开源框架thinkJS(使用 ES6&7 特性开发 Node.js 框架)开发的nodejs项目,支持Markdown文章导入,结构简单,较目前一些开源的cms及博客系统,Liblog易于拓展,特别适合前端开发工程师做二次开发 neoway 车载obd项目.NodeJs 和redis进行开发,使用socket nkm-admin的后端项目,基于Nodejs+Koa2+Mysql+Redis开发 Node+Angular+Ts项目,包含第三方登录、仿Discord聊天室(开发维护中)、天气等Demo Node.js + Koa2 +MySQL + Vue.js 21cake蛋糕项目 NodeJs + koa2 +sequelize-auto + sequelize 搭建项目 nodejs博客小项目 nodejs合作项目 nodejs和mongodb开发的一个简单留言板项目 nodejs商城项目 nodejs实现某东登录自动下单,最近口罩比较难买,所以做了一个这个项目用来买口罩 nodejs日志项目 NodeJs源码.rar Node图书管理系统项目- React-TS仿百词斩全栈项目 SAT, 简化的阿里云表格存储TableStore Nodejs SDK,适合小型项目快速构建 SeeDAO 市政厅治理后台公共项目 Octopus3, 使用 Vue2 + Express(Nodejs) Temp This is projectusing nodejs, express and socketio for develop a realtime chat app server.

证明:如果一个字符串的最小循环节是不完全循环节,那么该字符串没有完全循环节

一、相关定义及原理 以下描述中,s表示字符串,n为字符串s的长度: s[i]或 s i s_i si​表示字符串的第i个字符,从0开始。 使用python切片写法表示字符串的子串 s[x:y]表示字符串s下标范围为左闭右开区间[x, y)中的字符 s[:y]等价于s[0:y] s[x:]等价于s[x:n] 循环节:若某个字符串是由某个子串循环多次构成的,那么就称该子串为原串的循环节。(本文中循环节循环次数满足大于1次) 假设字符串s有长度为T的循环节,那么一定有: s i = s i + k T s_i=s_{i+kT} si​=si+kT​,k是整数。完全循环节:字符串由若干完整的循环节构成,这样的循环节叫完全循环节。 如果完全循环节的长度为T,那么有n%T == 0不完全循环节:字符串由若干完整的循环节和循环节的真前缀构成。 如果不完全循环节的长度为T,那么有n%T != 0有长为n的字符串s,s的最短循环节为n-next[n](s的前缀表为next,next[i]表示s的长为i的前缀s[:i]的最长相等前后缀的长度。可以使用KMP算法求出。) 二、证明 证明引理 引理1:字符串的循环节的长度都是最短循环节长度的倍数 最短循环节长度记为T 反证法: 假设存在循环节长度为U,满足 U > T U>T U>T,且U不是T的倍数。 由于最短循环节长度为T,则 s i = s i + a T s_i=s_{i+aT} si​=si+aT​,其中a为整数。 由于存在循环节长度为U,则 s i = s i + b U s_i=s_{i+bU} si​=si+bU​,其中b为整数。 因此存在 s i = s i + a T + b U s_i = s_{i+aT+bU} si​=si+aT+bU​,其中a、b为整数。

AI大模型时代下运维开发探索第二篇:基于大模型(LLM)的数据仓库

在SREWorks社区聚集了很多进行运维数仓建设的同学,大家都会遇到类似的挑战和问题: 数仓中存储大量数据消耗成本,但很多存储的数据却并没有消费。进数仓的ETL学习成本高、管理成本高,相关同学配合度低,以及上游结构改动后ETL却迟迟无人调整。数仓中数据的时效性、准确性问题,导致很多场景无法完全依赖数仓展开。 上面的种种让推广数仓的同学很犯难:明明花了大力气构建了统一数仓,但却又受限于各种问题,无法让其价值得到完全的落地。本文旨在阐述一种基于LLM的数仓构建方案,从架构层面解决上述的三个问题。 一、方案设计 从需求出发,再次思考一下我们进行运维数仓构建的初衷:用一句SQL可以查询或统计到所有我们关注的运维对象的情况。虽然有很多方案能做,但总结一下,就是这样两种抽象模型:Push 或 Pull。 Push的方式是我们去主动管理数据的ETL链路,比如使用Flink、MaxCompute等大数据方案将数据进行加工放到数仓中。在需要查询的时候,直接SELECT数仓就能出结果。这类方案的问题在于:1. ETL管理维护成本高。2. 数据准确性较数据源有所下降。Pull的方式是我们不去主动拉所有的数据,在执行时候再去各个数据源找数据,比较具有代表性的就是Presto。这种方案的优点就是不用进行ETL管理以及数据准确性较好,毕竟是实时拉的。但问题就在于这种方案把复杂性都后置到了查询那一刻,查询速度过慢就成了问题。 那么是否有一种方案能将这两种模型结合起来,取其中的优点呢?经过这段时间对于大模型熟悉,我认为这个方案是可行的,于是尝试设计了一下流程图: 二、基于LLM的SQL预查询 相信大家在使用了类似Presto的联邦查询(Federated Query),都会对此印象深刻,原本要好多个for循环的代码,放到里面只要一个select-join就能解决。但Presto本身的定位就是为分析型的负载设计,我们无法把它置于一些高频查询的关键链路上。 联邦查询的SQL和for循环的代码,看起来似乎只隔了一层纱,现在大模型的出现就直接把这层纱给捅破了。我们的思路也非常简单:既然大模型可以非常方便地把用户需求转换成SQL,那么把用户SQL转换成代码似乎也不是一件难事。 import os import sys from openai import OpenAI import traceback from io import StringIO from contextlib import redirect_stdout, redirect_stderr client = OpenAI() def get_script(content): return content.split("```python")[1].split("```")[0] def execute_python(code_str: str): stdout = StringIO() stderr = StringIO() return_head = 1000 context = {} try: # 重定向stdout和stderr,执行代码 with redirect_stdout(stdout), redirect_stderr(stderr): exec(code_str, context) except Exception: stderr.write(traceback.format_exc()) # 获取执行后的stdout, stderr和context stdout_value = stdout.

鸿蒙应用开发培训笔记02:应用开发入门

文章目录 零、本讲学习目标一、应用开发概述(一)鸿蒙应用开发定位(二)应用开发学习路线(三)应用开发实例 - 小鸿网课 二、搭建鸿蒙集成开发环境 - DevEco Studio 2.1(一)下载鸿蒙开发安装包(二)安装鸿蒙集成开发工具(三)启动鸿蒙集成开发环境 三、搭建鸿蒙集成开发环境 - DevEco Studio 3.0(一)下载鸿蒙开发安装包(二)安装鸿蒙集成开发环境(三)启动鸿蒙集成开发环境 四、利用DevEco Studio 2.1 创建鸿蒙应用程序(一)创建鸿蒙项目问题研讨:模板Empty Ability(JS)、Empty Ability(Java)的区别是什么? (二)使用华为远程模拟器问题研讨:启动远程模拟器之后,是不是程序也启动了? (三)启动应用,查看效果问题研讨:每次运行都只能依赖远程模拟器吗? 五、利用DevEco Studio 3.0 创建鸿蒙应用程序(一)创建鸿蒙项目(二)创建鸿蒙虚拟机 - 本地虚拟机(三)启动应用,查看效果 六、构建应用的步骤(一)项目工程结构(二)使用 XML 文件进行用户界面设计(三)从零开发一个应用 – 在代码中加载页面布局(四)监听触摸事件代码实现(五)申请分布式权限(六)应用开发流程总结 七、开发基础知识框架(一)应用包结构(二)配置文件(三)资源文件目录(四)使用资源文件1、base目录与限定词目录中的资源文件(1)Java文件引用资源文件的格式:ResourceTable.type_name(2)XML文件引用资源文件的格式:$type:name 2、rawfile目录中的资源文件 (五)数据管理1、本地数据管理2、分布式数据服务 (六)权限管理1、权限声明2、动态申请敏感权限3、自定义权限 (七)权限使用原则(八)隐私管理 八、思考题九、本讲总结 零、本讲学习目标 了解HarmonyOS应用开发学习路线掌握HarmonyOS应用开发环境搭建方式掌握HarmonyOS应用开发基础知识框架 本篇文章旨在引导读者步入HarmonyOS应用开发的世界。我们将从理解鸿蒙应用开发的定位和学习路线开始,通过实例“小鸿网课”展示其在多设备协同中的优势。接着,我们将详细阐述如何搭建鸿蒙集成开发环境DevEco Studio 2.1和3.0,包括下载、安装和启动过程,并强调每个步骤的关键细节。在环境搭建完成后,我们将通过实践,教授如何利用DevEco Studio 2.1创建一个基础的鸿蒙应用程序,并探讨使用华为远程模拟器进行调试的方法。此外,我们还将讨论Empty Ability(JS)和Empty Ability(Java)的区别,以帮助读者更好地选择适合自己的开发路径。通过这篇深入浅出的指南,读者将能够掌握HarmonyOS应用开发的基础知识框架,为进军万物互联的鸿蒙世界奠定坚实基础。 一、应用开发概述 (一)鸿蒙应用开发定位 对应用开发者而言,HarmonyOS采用了一次开发,多端部署的技术,使得应用程序的开发实现与不同终端设备的形态差异无关。手机应用开发,是整个分布式能力的核心。 (二)应用开发学习路线 (三)应用开发实例 - 小鸿网课 很多家长反馈,孩子上网课将家里的手机、电脑、iPad、投影仪全都用上了,电脑用来上课,iPad用来回答问题,手机用来拍照上传作业,多个设备使用起来常常会手忙脚乱。“小鸿网课”应用致力于解决这一痛点。 主要特性: 单设备播放教学视频并能答题,案例如下图所示。多设备协同时,使用大屏设备播放教学视频,使用手持设备答题。 在手机上保留答题功能 大屏幕设备播放教学视频 二、搭建鸿蒙集成开发环境 - DevEco Studio 2.1 开始开发HarmonyOS应用前,应首先搭建开发环境。HarmonyOS应用开发环境搭建主要包含以下步骤: 安装DevEco Studio。配置代理(可选)。下载HarmonyOS SDK。

can的总结

一.什么是can can就是车用主线,贯穿整个车的存在 can的分类2 默认是高速can 低速容错can 单线can 用两种can会减少can网络语言的负载率,就是原本一个小屋做核酸,现在是两个速度翻倍。可参考均衡负载原理 can的特征 1.节点间采用多主通信方式 即任意节点都可以发送,可以实现点对点发送和全局网络发送 2.采用短帧结构,报文帧的有效字节数为8个,可达汽车实时响应要求 即字节数越少响应速度越快 3.报文ID值越小,优先级越高。报文ID可分成不同的优先级,进一步满足汽车网络报文的实时性要求 4.非破坏性总线仲裁处理机制 即两个报文进行传输,不会只接收一个会根据id大小依次接收 5.可靠的CRC校验方式,传输数据出错率极低,满足汽车数据传输的可靠性要求 6.报文帧仲裁失败或传输期间被破坏有自动重发(机制) 即会将未发送成功的报文进行重新发送 7.节点在错误严重的情况下,具有自动脱离总线的功能,切断它与总线的联系,不影响总线的正常工作 如果一直发送不成功,会自动停止发送 8.通信距离最远达10km(速度5Kbps以下) 距离越远通信质量越差 9.通信速率最高1MB/s 距离越近速率越快 10.节点数实际可达110个 11.CAN节点设计成本较低,通信介质采用双绞线 can的收发器 can收发器定义:can收发器逻辑信号和物理信号之间的转换采用差分电平方式 1.将逻辑数字信号转化成物理信号 2.将物理信号转换成逻辑数字信号 can的模式 can高can低 即高速can和低速can,高速can系统采用硬线是动力型,速度快,适用于ABS、控制ECU等 低速can是舒适型,速度相对较慢,主要是控制仪表、防盗等 can信号电平 显性即差压过高然后为零 差压大于0.9v显零 隐形即无差压或者差压过低 差压小于0.5v隐1 显性0,隐性1 can编码方式 采用非归零编码 CAN编码采用NRZ非归零编码,相同带宽情况下,NRZ编码信息量比曼彻斯特编码更大 can信号电平之线与原理 多个can节点并接到同一个总线时,只要其中一个节点输出低电平,总线就为低电平;当所有节点输出高电平时,总线才为高电平 can的异步串行通信 can报文同步采用时钟线采样数据 can报文异步采用采样点按照约定的频率区采样数据 异步串行通信省去了时钟信号线,但遇到一个问题是:根据波特率做采样,波特率的误差会产生通信错误 波特率采样点每次出现一点偏差,后面偏差越来越大 can的采样点 一个标称的位时间=1/波特率 为时间分为:同步端、传播段、相位缓冲段1、相位缓冲段2 采样点在相位缓冲段1和2中提取采样 (C:\Users\10345\AppData\Roaming\Typora\typora-user-images\image-20221008212112517.png)] 1000=1024k 1位相当于一微妙 can的终端电阻与连接器 根据电磁场 和微波理论,高频电路中负载阻抗需与传输线的特性阻抗一致,否则电信号在线束端遭遇阻抗突变,产生反射现象,造成波形震荡 信号反射造成的信号不完整性,是属于直接将数据反射,不管数据反射到哪里 解决:反射都在首端或者末端进行数据传输,因此在首尾加上120欧姆,加在中间不推荐,有可能反射不到 协议推荐: 默认协议,但是根据制造商的设定,会有偏差[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ek2aAoEn-1665659904917)(C:%5CUsers%5C10345%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20221009194714109.png#pic_center)] can终端电阻和线缆 不符合要求会造成总线波形不好之类的,影响通信 can节点物理结构 1.can控制器/收发器 分别对应ISO/OSI模型的数据链路层和物理层,完成CAN报文的收发

【Vue2】倒计时功能(俩小时)

一、倒计时俩小时(刷新重新计时) 思路:俩小时=7200秒,将秒数转换为时分代码 <template> <span class="surplus_time">{{ count }}</span> </template> <script> data(){ return{ count: "", seconds: 7200, } }, mounted() { this.Time(); }, methods: { countDown() { let h = parseInt((this.seconds / (60 * 60)) % 24); h = h < 10 ? "0" + h : h; let m = parseInt((this.seconds / 60) % 60); m = m < 10 ? "0" + m : m; let s = parseInt(this.seconds % 60); s = s < 10 ?

SpringBoot 整合 MyBatisPlus

一、整合 MyBatisPlus 1. 导入依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> 2. 配置文件 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=UTF-8 username: root password: root mybatis-plus: # 指定 Mapper XML 文件的位置,使用 classpath 通配符指定路径 mapper-locations: classpath:/mapper/**/*.xml # 指定实体类的包路径,用于自动扫描并注册类型别名 type-aliases-package: com.cnbai.bean global-config: db-config: id-type: input # 驼峰下划线转换(将数据库字段的下划线命名规则转换为 Java 实体类属性的驼峰命名规则) db-column-underline: true # 刷新 mapper refresh-mapper: true configuration: # 将 Java 实体类属性的驼峰命名规则转换为数据库字段的下划线命名规则 map-underscore-to-camel-case: true # 查询结果中包含空值的列,在映射的时候,不会映射这个字段 call-setters-on-nulls: true # 开启 sql 日志 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 关闭 sql 日志 # log-impl: org.

flutter学习-day23-使用extended_image处理图片的加载和操作

文章目录 1. 介绍2. 属性介绍3. 使用 1. 介绍 在 Flutter 的开发过程中,经常会遇到图片的显示和加载处理,通常显示一个图片,都有很多细节需要处理,比如图片的加载、缓存、错误处理、图片的压缩、图片的格式转换等,如果每个地方都手动处理,就太麻烦了,这时候就可以使用糖果大佬的插件 extended_image,它是官方 Image 的扩展三方库,不但支持图片加载以及失败显示,缓存网络图片,缩放拖拽图片,图片浏览等,还支持滑动退出页面,编辑图片(裁剪旋转翻转),保存,绘制自定义效果等功能。 效果图: 2. 属性介绍 属性描述值url网络请求地址requiredkey唯一标识符-semanticLabel语义标签-excludeFromSemantics是否排除语义falsewidth宽度-height高度-color颜色-opacity透明度动画-colorBlendMode颜色混合模式-fit图片适应方式-alignment对齐方式Alignment.centerrepeat图片重复方式ImageRepeat.noRepeatcenterSlice九宫格切片区域-matchTextDirection是否匹配文本方向falsegaplessPlayback是否无缝播放falsefilterQuality滤镜质量FilterQuality.lowloadStateChanged图片加载状态回调Functionshape盒子形状-border盒子边框-borderRadius圆角半径-clipBehavior裁剪行为Clip.antiAliasenableLoadState是否启用加载状态truebeforePaintImage图片绘制前回调-afterPaintImage图片绘制后回调-mode扩展图片模式(默认/手势/编辑)ExtendedImageMode.noneenableMemoryCache是否启用内存缓存trueclearMemoryCacheIfFailed加载失败时是否清除内存缓存trueonDoubleTap双击事件回调-initGestureConfigHandler初始化手势配置回调-enableSlideOutPage是否启用滑动退出页面falseconstraints约束条件-cancelToken用于取消请求的 TokenCancellationToken()retries请求尝试次数3timeLimit请求超时时间-headers请求头-cache是否缓存truescale图片缩放比例1.0timeRetry请求重试间隔milliseconds: 100extendedImageEditorKey扩展图片编辑器键-initEditorConfigHandler初始化编辑器配置回调-heroBuilderForSlidingPage滑动退出页面时的英雄构建器-clearMemoryCacheWhenDispose销毁时是否清除内存缓存falsehandleLoadingProgress是否处理加载进度falseextendedImageGestureKey扩展图片手势键-cacheWidth缓存宽度-cacheHeight缓存高度-isAntiAlias是否开启抗锯齿falsecacheKey缓存键-printError是否打印错误信息truecompressionRatio压缩比例-maxBytes最大字节数-cacheRawData是否缓存原始数据falseimageCacheName图片缓存名称-cacheMaxAge缓存最大寿命-layoutInsets布局插入区域EdgeInsets.zero 3. 使用 更详细的使用方式,请参考extended_image 文档,本例子只针对图片的加载、成功、失败的处理以及放大查看。 ExtendedImage.network( imagePath, width: double.infinity, fit: BoxFit.fitHeight, cache: true, mode: ExtendedImageMode.gesture, initGestureConfigHandler: (state) { return GestureConfig( // 缩放最小值 minScale: 0.8, // 缩放动画最小值 当缩放结束时回到 minScale 值 animationMinScale: 0.8, // 缩放最大值 maxScale: 2.0, // 缩放动画最大值 当缩放结束时回到 maxScale 值 animationMaxScale: 3.5, // 缩放拖拽速度 speed: 1.0, // 拖拽惯性速度 inertialSpeed: 100.0, initialScale: 1.

K8s部署轻量级日志收集系统EFK(elasticsearch + filebeat + kibana)

文章目录 K8s部署EFK(elasticsear + filebeat + kibana)日志收集一.准备镜像二.搭建Elasticsearch + kibana1.在可执行kubectl命令的服务器准备安装的yml文件2.在elasticsearch-kibana目录下创建配置文件elasticsearch.yml3.创建kibana配置文件kibana.yml4.在k8s中创建elasticsearch和kibana的配置文件configmap5.检查是否有StorageClass6.创建es-kibana的yaml配置文件: es-statefulset.yaml7.创建es-kibana cluserip的svc8.创建es-kibana的nodeport类型的svc 三.配置NFS服务器1).安装NFS服务2).k8s注册nfs服务 四.创建filebeat服务1.创建filebeat主配置文件filebeat.settings.configmap.yml2.创建Filebeat索引生命周期策略配置文件3.Filebeat操作权限4.Filebeat Daemonset配置文件 五.检查File beat与es,Kibana是否配置成功1.首先在侧边栏找到Stack Management2.选择索引管理,查看是否有以filebeat-demo加时间戳为名的索引3.创建索引模式4.查看日志 K8s部署EFK(elasticsear + filebeat + kibana)日志收集 一.准备镜像 # 在本机拉取镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.2 docker pull docker.elastic.co/kibana/kibana:7.17.2 docker pull docker.elastic.co/beats/filebeat:7.17.2 # 对镜像重打标签 将${harbor_url}和${harbor_project}换成自己的harbor私服地址和目录 docker tag docker.elastic.co/elasticsearch/elasticsearch:7.17.2 ${harbor_url}/${harbor_project}/elasticsearch:7.17.2 docker tag docker.elastic.co/kibana/kibana:7.17.2 ${harbor_url}/${harbor_project}/kibana:7.17.2 docker tag docker.elastic.co/beats/filebeat:7.17.2 ${harbor_url}/${harbor_project}/filebeat:7.17.2 # 登陆自己的harbor服务器 docker login -u admin -p ${password} ${harbor_url} # 上传至harbor仓库 docker push ${harbor_url}/${harbor_project}/elasticsearch:7.17.2 docker push ${harbor_url}/${harbor_project}/kibana:7.17.2 docker push ${harbor_url}/${harbor_project}/filebeat:7.17.2 此处的目的是避免某些服务器从docker外网仓库拉取不了镜像,从而导致pod一直运行不了,当然也可以不用这一步,可以直接使用官方的镜像地址

Linux(CentOS)安装MinIo,详细教程,附防火墙端口开放操作

Linux安装MinIo(已配置开机重启) 1,准备安装目录和文件 系统:CentOs #进入安装目录 cd /home/minio #在线下载二进制文件 wget https://dl.min.io/server/minio/release/linux-amd64/minio 2,安装 赋权 #提权 chmod +x minio 设置临时用户名、密码(重启后会失效) #旧版使用 MINIO_ACCESS_KEY MINIO_SECRET_KEY,作废时间:Deprecated since version RELEASE.2021-04-22T15-44-28Z. #新版 配置用户名密码 export MINIO_ROOT_USER=minioadmin export MINIO_ROOT_PASSWORD=yourpassword #查看环境变量 echo $MINIO_ROOT_USER echo $MINIO_ROOT_PASSWORD 设置永久环境变量 # 修改系统配置 vim /etc/profile #最后一行输入(新版) export MINIO_ROOT_USER=admin export MINIO_ROOT_PASSWORD=password # 设置立即生效 source /etc/profile 创建存储目录及日志文件 #创建存储目录 mkdir -p /home/minio/data #进入 cd /home/minio #创建日志文件 touch minio.log 3,后台启动 进入执行文件目录 nohup /home/minio/minio server --address :9800 --console-address :9889 /home/minio/data >/home/minio/minio.log 2>&1 & 备注: nohup:后台启动 .

WebStorm 2023.3 简明安装教程

引言 在现代前端开发的世界里,WebStorm 突显其作为一个高效且强大的集成开发环境(IDE)的地位。由 JetBrains 出品,WebStorm 不仅提供了对 JavaScript、CSS 和 HTML 的全面支持,还融合了最新的技术趋势和工具,使得开发更加流畅、快捷。无论是对 Angular、React、Vue.js 等流行框架的深度集成,还是对 Node.js 应用的优化,WebStorm 都能提供卓越的开发体验,大大提高开发者的工作效率。 WebStorm 的另一个亮点在于其智能的代码编辑器,它提供了代码自动完成、实时错误检测、强大的重构工具以及版本控制等功能,帮助开发者更快地编写高质量代码。同时,它还支持众多现代化开发工具和测试框架,使得项目管理和测试变得更为便捷。 本篇博客旨在提供一个清晰、简洁的 WebStorm 激活教程。无论您是初学者还是有经验的开发者,如果您正在寻找有效激活 WebStorm 的方法,本文将是您的理想选择。我们将一步步引导您完成激活过程,确保您能够无缝地享受到 WebStorm 带来的所有功能和优势,进一步提升您的开发效率和项目管理能力。 WebStorm 2023.3 引入了许多新功能和改进,包括: 框架和技术支持: Angular: 提升了对 Angular 的支持,包括对信号的支持和严格模板类型检查。Svelte: 增强了对 Svelte 的支持,包括改进了对 TypeScript 文件的高亮显示和快速文档,以及对 context="module" 脚本的出口支持。Vue 3: 对 Vue 3 的支持也得到了提升,包括对 defineSlots 的支持,为 slot 名称和属性提供完成和导航,以及自动添加所需的组件导入。 AI 助手: JetBrains AI 助手现已正式发布,提供增强的代码生成、上下文感知的 AI 聊天和基于项目的 AI 动作。 测试框架支持: 对流行的 Cypress 和 Playwright 测试框架提供了支持,包括自动检测测试和通过编辑器中的运行图标运行和调试测试的功能。对原生 Node.js 测试运行器的初步支持。 JavaScript、TypeScript 和 CSS: 对 TypeScript 进行了改进,包括添加 import type 语句时的一致性和 package.

性能测试-jmeter:安装 / 基础使用

一、理解jmeter 官网-Apache JMeter-Apache JMeter™ JMeter是一款开源的性能测试工具,主要用于模拟大量用户并发访问目标服务器,以评估服务器的性能和稳定性。 JMeter可以执行以下任务序号用途描述1性能测试通过模拟多个用户在同一时间对服务器进行请求,可以测试服务器在不同负载下的响应时间、吞吐量和并发用户数等指标。2负载测试通过逐步增加用户负载,测试服务器的性能极限,以确定服务器在高负载情况下的稳定性和可靠性。3压力测试通过持续的高负载测试,评估服务器在长时间运行下的稳定性和性能表现。4功能测试可以模拟用户在实际应用中的操作,如点击按钮、填写表单等,以检查应用的功能是否正常。5API测试可以模拟对Web服务或RESTful API发起请求,并验证响应结果是否符合预期。6分布式测试通过将负载分散到多台机器上进行测试,以模拟更真实的用户行为和负载情况。7监控测试可以监控服务器的资源使用情况,如CPU、内存、磁盘IO等,以检测服务器瓶颈和性能问题。JMeter是一个功能强大的工具,可以帮助开发人员和测试人员进行性能和负载测试,并评估应用程序或服务器的性能和稳定性。 二、安装JMeter 2.1、Java环境 jmeter依赖Java环境,所以需要先安装Java环境 Java Software | Oracle Java 开发环境配置 | 菜鸟教程 2.2、下载JMeter 官网下载地址-Apache JMeter-Download Apache JMeter 2.3、解压JMeter 2.4、添加环境变量 变量名:JMETER_HOME 变量值:D:\software\jmeter\apache-jmeter-5.6.2 此电脑--属性--高级系统设置--环境变量--新建 新建 2.5、Path 配置 编辑path path 新建 %JMETER_HOME%\bin 2.6、打开JMeter 命令窗口输入jmeter JMeter工具打开成功 2.7、jmeter简体中文 选择后即是简体中文了,成功 三、基础使用 待补充 过程记录 记录一、安装JMeter需要maven环境吗 安装JMeter不需要Maven环境。JMeter是一个独立的Java应用程序,可以直接从官方网站下载并安装。不过,如果你希望使用Maven进行项目管理和构建,可以将JMeter引入Maven项目中,并使用Maven来管理JMeter的相关依赖项和构建过程。 参考链接 JMeter软件的安装(超详细教程)_jmeter安装-CSDN博客 Jemter 的安装(详细教程)_jemter安装-CSDN博客 Jmeter的基本使用(Jmeter压测实战) - 知乎 性能测试工具:Jmeter介绍 - 知乎

【计算机毕设文章】在线视频教育平台

毕业设计(论文) 在线视频教育平台 学 院 专 业 班 级 学 号 学生姓名 指导教师 完成日期 年 月 日 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线视频教育平台当然也不能排除在外,随着网络技术的不断成熟,带动了在线视频教育平台,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的平台特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对在线视频教育平台而言非常有利。 本系统采用的数据库是Mysql,使用SpringBoot框架开发,运行环境使用Tomcat服务器,ECLIPSE 是本系统的开发平台。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 关键字:在线视频教育平台 Mysql数据库 SpringBoot框架 Abstract With the rapid development of science and technology, all walks of life are trying to integrate with modern advanced technology, and improve their own advantages through scientific and technological means. Of course, the online video education platform can not be excluded. With the continuous maturity of network technology, the online video education platform has completely changed the traditional management mode in the past, which not only makes the difficulty of service management lower It also improves the flexibility of management.

【计算机毕设文章】校园周边美食探索及分享平台

校园周边美食探索及分享平台 摘要: 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起,互联网日益成为提供信息的最佳俱渠道和逐步走向传统的流通领域,传统的美食业进而也面临着巨大的挑战,此时推出网络订餐非常适时。 与传统的电话订餐以及去店里订餐的方式相比,网络订餐有着自己独特的优点——直观、互动性强、成本低、方便快捷。顾客可以及时了解到最新商品,及时反馈商家的服务;也能在商家营业的任何时候下单,并且自由决定送餐时间,这对于消费者也是更好的服务。对于商家来说,也可以更方便地留住有价值的客户,挖掘潜在客户等本论文系统地描绘了整个网上校园周边美食探索及分享平台的设计与实现,主要实现的功能有以下几点:管理员;首页、个人中心、用户管理、美食鉴赏管理、我的好友管理、我的收藏管理、系统管理,前台首页;首页、美食鉴赏、我的好友、个人中心、后台管理,用户后台;首页、个人中心、美食鉴赏管理、我的好友管理、我的收藏管理等功能,其具有简单的接口,方便的应用,强大的互动,完全基于互联网的特点。 现代社会的网络和信息技术不断提高,人们的生活水平达到一个新的层次。这篇文章研究了基于Spring Boot框架的校园周边美食探索及分享平台的开发和实现,从需求分析、总体设计到具体实现,最终完成了整个在线校园周边美食探索及分享平台,从而方便了用户和提高了管理员的管理水平。 关键词:校园周边美食探索及分享平台,Spring Boot框架,数据库MYSQL,Java语言 Abstract: Catering industry has always been closely related to people’s daily life. The traditional telephone ordering or store consumption can not meet the needs of market development. With the rapid rise of the Internet, the Internet is becoming the best channel to provide information and gradually moving towards the traditional circulation field. The traditional catering industry is also facing great challenges. At this time, it is very timely to launch online ordering.

【Spring】理解IoC与AOP:构建灵活而模块化的软件架构

🍎个人博客:个人主页 🏆个人专栏: Spring ⛳️ 功不唐捐,玉汝于成 前言 在现代软件开发中,构建可维护、可扩展的软件架构是至关重要的。IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)作为两种关键的编程范式,为开发人员提供了强大的工具来实现这一目标。IoC通过控制反转的思想降低组件之间的耦合度,而AOP则通过面向切面的编程方式将横切关注点抽象出来,提高了代码的模块化性。本文将深入探讨IoC和AOP的概念、原理以及在实际开发中的应用,以帮助读者更好地理解如何构建灵活而模块化的软件架构。 正文 IoC(Inversion of Control)- 控制反转: IoC 是一种设计原则,它改变了传统的程序控制流程。在传统的程序设计中,应用程序控制程序的执行,而在 IoC 中,控制权被反转,即由框架或容器控制应用程序的执行流程。最常见的实现方式是依赖注入(Dependency Injection)。 依赖注入(DI): DI 是 IoC 的一种实现方式,它通过将对象的依赖关系由程序内部创建转交给外部容器来实现控制反转。依赖注入可以通过构造函数注入、方法注入或属性注入的方式完成,从而实现对组件之间的松耦合。 优点: 降低组件之间的耦合度,增加了代码的可维护性和可测试性。提高了代码的灵活性,使得组件的替换、升级和扩展更加容易。 示例: // 传统方式 class Car { Engine engine = new Engine(); } // 使用依赖注入 class Car { Engine engine; // 通过构造函数注入依赖 Car(Engine engine) { this.engine = engine; } } AOP(Aspect-Oriented Programming)- 面向切面编程: AOP 是一种编程范式,它通过将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,以提高代码的模块化和可维护性。横切关注点包括日志、事务管理、安全性等,它们通常涉及多个模块和组件。 概念: AOP 强调将横切关注点抽象为切面(Aspect),切面定义了在何处、何时以及如何应用横切关注点。AOP 可以通过代码编织(code weaving)或代理机制实现,以在运行时动态地将切面与应用程序的主要逻辑织合在一起。 关键概念: 切面(Aspect): 包含横切关注点和通知(advice),定义了在何处以及何时应用横切关注点。连接点(Join Point): 在应用程序执行过程中能够插入切面的点,通常是方法调用、异常抛出或字段访问等。通知(Advice): 定义了在连接点上执行的操作,包括前置通知、后置通知、环绕通知等。 优点: 提高代码的模块化和可维护性,将横切关注点集中管理。降低重复代码,提高系统的可扩展性。 示例: // 业务逻辑 class OrderService { void placeOrder() { // 业务逻辑 } } // 切面 aspect LoggingAspect { before() : execution(void OrderService.

【RK3568】瑞芯微平台的编译

一、前言 在我们接触到一个新的平台时,最重要的就是熟悉编译手段达到快速开发的目的,在开发中主要需要编译的就是uboot、kernel、Android文件系统 二、编译uboot 根据这个shell脚本来编译 使用下面这个方法编译uboot ./build.sh -U 编译完成后在会在rockdev/Image-rk3568_s目录中生成uboot.img 三、编译内核 使用下面这个方法编译kernel,编译后会在 rockdev/Image-rk3568_s 目录下生成 boot.img ./build.sh -CKA 也可以在kernel目录下写一个脚本来快速编译内核,创建makekernel.sh,代码如下: make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld rockchip_defconfig android-11.config && make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld BOOT_IMG=../rockdev/Image-rk3568_s/boot.img rk3568-evb1-ddr4-v10.img 在kernel目录下编译,编译成功后会在该目录下生成boot.img ./makekernel.sh 四、编译Android文件系统 在源码根目录找到build.sh,找到make installclean命令,将其注释掉,以达到快速编译的结果,然后进行编译,编译命令如下: ./build.sh -A 编译后会在 rockdev/Image-rk3568_s 目录下生成 super.img,这样编译太久了。我们在开发中使用模块编译,采用mm命令,在文件目录中若存在Android.mk中执行mm编译该目录,或者使用mmm -指定目录,编译出来的so或其他文件,通过adb工具push到机器中,重启后再验证就可以了。使用此命令前需要把mm指令添加到环境变量中 source build/envsetup.sh lunch rk3568_s-userdebug 五、总结 我们在开发中经常会遇到难以解决的问题,我们通常都是百度,但是经常找不到方法,我们可以使用谷歌来进行搜索

数据压缩与打包:jar、war、arr、tar、zip

1,概念 1)无损压缩和有损压缩 有损压缩:压缩之后就无法完整还原原始信息,但是压缩率可以很高,主要应用于视频、话音等数据的压缩;无损压缩:用于文件等等必须完整还原信息的场合。ZIP、RAR、GZIP、GIF、PNG等等都是无损压缩格式。 2,文件压缩与打包 1)ZIP压缩 场景:jar包shell命令: 需要先下载zip for linux。 功能命令备注将jpg格式的文件压缩zip jpg.zip *.jpg将几个文件和目录同时压缩zip -r file1.zip file1 file2 dir1解压zipunzip file.zip 2)jar打包(Java Archive File,Java 归档文件)、war打包(Web Application Archive) jar包 = class文件 + 资源 + 配置文件 = zip + META-INF(清单文件); 一个jar包就是一个java应用程序。平台无关的文件格式;jar文件使用了ZIP压缩格式,通过unzip命令可以解压; 1>Pack200 Java5提供的压缩工具,能对普通的jar文件进行高效压缩。 实现原理:根据Java类特有的结构,合并常数池,去掉无用信息等来实现对java类的高效压缩。对于Jar文件却能轻易达到10-40%的压缩率,甚至接近90%。这在Java应用部署中很有用,尤其对于移动Java计算,能够大大减小代码下载量。 压缩 Packer packer=Pack200.newPacker(); OutputStream output=new BufferedOutputStream(new FileOutputStream(outfile)); packer.pack(new JarFile(jarFile), output); output.close(); 解压 Unpacker unpacker=Pack200.newUnpacker(); output=new JarOutputStream(new FileOutputStream(jarFile)); unpacker.unpack(pack200File, output); output.close(); 2>shell命令 常见参数: -c 创建新的JAR文件包、war文件包 -t 列出JAR文件包的内容列表。 -x 展开JAR文件包的指定文件或全部文件。 -u 更新已存在的JAR包。对于一个已经存在的JAR包。我们任然能够向当中加入新的字节码文件或旧的字节码文件,假设已经存在路径、类名都同样的文件,则更新源文件,假设不存在。则加入该文件。清单文件也能够通过这种方式更改。 -v 显示过程并输出。 -f 指定JAR包的文件名称。通常该选项是必选的。 -m 指定须要包括的MANIFEST.

Mac如何下载python?安装完python之后终端却找不到命令(已解决)

Mac如何下载python?安装完python之后终端却找不到命令(已解决) Mac安装python关于终端找不到python命令 Mac安装python 1.先在官网https://www.python.org/downloads/下载想安装的对应版本,然后双击下载的pkg,根据提示一步步安装即可,几乎没有需要另外修改的地方。 2. 安装完成之后,应用程序里面会有个python3.10(根据你下载的版本)文件,启动台会有它的IDLE和Python Launcher。 至此,安装成功,理论上终端输入python是能够找到的了。 可以在IDLE里面查看python路径,如下图,为后面添加路径做准备。 关于终端找不到python命令 一开始我输入“python”终端显示command not found,解决方法如下: 1.touch ~/.bash_profile(注意⚠️如果shell用的是zsh就把.bash_profile换成.zshrc); touch ~/.bash_profile; 如果shell为zsh输入就如下(后面均以.bash_profile为例说明了) touch ~/.zshrc; 2.打开.bash_profile; open ~/.bash_profile; 3.添加python路径,保存退出; PATH="/Library/Frameworks/Python.framework/Versions/3.10/lib:${PATH}" export PATH alias python="/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10" 4.激活配置; source ~/.bash_profile 5.最后重启一下终端就能找到python了。

Visual Studio Code (VSCode),快速跳转到指定行的代码

在 Visual Studio Code (VSCode),快速跳转到指定行的代码可以通过以下步骤实现: 使用快捷键: 在 Windows 或 Linux 系统中,按下 Ctrl + G;在 macOS 中,按下 Cmd + G。输入行号: 弹出的对话框中输入你想要跳转到的行号,例如 123。回车确认: 输入行号后按 Enter,VSCode 会立即跳转到指定的行。 这个方法非常高效,特别是在处理大型文件时,能快速定位到你感兴趣的部分。

MCU需要去耦电容的原因

一,去耦电路简介 供电电源与MCU之间的连接使用了各类电容以及磁珠电感等滤波器件,形成的去耦电路,有三点主要功能,一是抑制MCU内部产生的EMI辐射或者疏导外部干扰噪声进入MCU;二是提供MCU操作和维持电压的瞬态电流;三是作为信号回流的通道提高信号完整性。 当MCU系统级板上的去耦电路不起作用时会出现一下问题: 1,干扰噪声从外部导入,MCU收到其他的IC的噪声干扰,操作故障; 2,存在噪声泄露,MCU中的EMI辐射超标; 3,电源电压波动干扰MCU操作,降低信号完整性,信号线上的噪声叠加; 4,信号线上回流路径较长,信号完整性降低。 二,电源噪声的产生原理 数字IC如MCU大多数使用电路CMOS工艺,通过切换至电源VDD或者接地GND可以将信号设置为高“1”或低“0”。如图,CMOS反相器电路简化模型 ,以单个CMOS的反相器为例,当Vin切换低“0”,上管PMOS导通,栅电容充电,Vout输出高“1”;当Vin切换高“1”,下管NMOS导通,栅电容放电,Vout输出低“0”。 当时CMOS反相器高低切换电平时,寄生电流会流经电源VDD和接地GND,如图,CMOS 反相器寄生电流,MCU内部的CMOS反相器较多时,寄生电流跳动的非常激烈,很多频率器件如电感,会向外辐射能量造成噪声故障,或者引起外部电源的波动影响其他的IC。 通常为了控制流经MCU电源处的电流,需要在MCU的电源引脚和 GND引脚之间安装去耦电容,为了形成有效去耦电路,需要主要一下加点: 1,使用较小的ESR电容,形容可以在高频范围内运行的旁路; 2,严格限制寄生电流流过的范围,将电容安装在MCU附近; 3,保持layout的寄生电感较小,尤其IC和电容之间 ========== 往期回顾: 国产单片机的输出比较是小思考 MCU厂商推荐的外围敏感电路设计 GD32F470的RTC时间设置和获取 嵌入式软件工程师常用的 单片机的RTC获取网络时间 ========== 素材来源:GD官方

Jackson通过自定义序列化器给URL拼接访问域名

1、需求 在存储文件访问路径时,一般不会存储域名地址,若文件服务域名和当前应用域名不一致时,就需要在返回数据库的图片路径给前端时,拼接文件服务的域名。 2、处理方式 因为Spring Boot默认使用的是Jackson作为序列化工具,那么我们就可以通过继承JsonSerializer抽象类,实现自定义的序列化逻辑,在序列化时拼接访问域名。 自定义序列化类如下: import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.study.utils.PrincipalUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.IOException; /** * json序列化,拼接访问地址 */ @Component public class ImgJsonSerializer extends JsonSerializer<String> { @Value("${file.access-path}") private String imgAccessPath; @Override public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { if (StrUtil.isBlank(value)) { gen.writeString(StrUtil.EMPTY); return; } else if (StrUtil.isBlank(imgAccessPath)) { gen.writeString(value); return; } String[] imgs = value.split(StrUtil.COMMA); StringBuilder sb = new StringBuilder(); for (String img : imgs) { // 图片为http协议开头,直接返回 if (PrincipalUtil.

(Qt) 预编译头文件precompile_header

文章目录 什么是预编译头文件PCHQt中的预编译头文件qmakestable.h编译效果效果 END 什么是预编译头文件PCH 预编译头文件是C++编译系统中的一种机制,用于提高编译速度。 就是将我们需要的内容放在预编译头文件中,并单独编译成一个文件。但其他文件在编译时需要里面的内容时,可以直接去使用这个编译好的文件,节省编译时间。 我们常见的stdafx.h或pch.h就是在一些平台中常见的预编译头文件常用命名。 大多数编译工具的机制都是类似的,本文主要说一下qmake中的使用方式。 Qt中的预编译头文件 qmake 这里我们要把stable.h作为一个预编译头文件使用,应该在qmake中这么写。 # 添加config配置 CONFIG += precompile_header # 指定要使用的预编译头文件 PRECOMPILED_HEADER += stable.h stable.h 其实就是普通的写一个头文件,请注意什么样的内容可以写进头文件,什么不可以。 这是C++基础,不做过多解释,这里随便写点常用的。如:宏,常量,声明,模板,inline函数等等 #ifndef _STABLE_H_ #define _STABLE_H_ // 设置全局字符集 #pragma execution_character_set("utf-8") #include <QDebug> #include <QString> #define DEBUG_LOG(fmt, ...) \ do { \ qDebug() << QString::asprintf("Debug:[File:%s][Fun:%s][Line:%d] " fmt, \ __FILE__, __func__, (int)__LINE__, \ ##__VA_ARGS__); \ } while (0) constexpr int mod = 1e9 + 7; extern int g_var; template <typename Type> void show(Type&& obj) { qDebug() << obj; } // 需要设为内联函数 inline void fun() { DEBUG_LOG(); } #endif // _STABLE_H_ 编译效果 在最终编译上,会把这个stable.

产品经理学习-从0-1搭建策略产品

从0-1搭建策略产品 目录: 回顾策略产品 如何从0-1搭建策略产品 回顾策略产品 之前也了解过从产品实施的角度来看,策略就是针对问题的解决方案,在互联网时代更集中体现在2个维度:业务场景和数据应用 如何从0-1搭建策略产品 我们需要对策略产品要有一个整体的认知,个性化推荐是一种典型的策略产品,应用范围广泛。随着互联网的发展,信息数据越来越庞大,而用户的接收是有限度的,所以必须进行数据分发。 数据分发的3个阶段:分类处理--》精准搜索--》个性化推荐 分类处理 以门户网站为代表的分类处理技术,成为第一代处理复杂信息的内容分发手段;通过互联网技术,对内容进行汇总分类,并且在用户端不同的入口展示,极大的方便用户根据自己的目标内容所属的分类进行筛选和查看。 优点: 技术简单,实现成本较低 内容直观,且覆盖度很高 缺点: 随着内容越来越多,信息分类页随之增多,又会造成信息过载问题 精准搜索 以搜索引擎为代表的分类处理技术,成为了解决用户在有明确内容需求的情况下信息分发的核心手段;前提是用户知道自己想要什么,然后通过搜索引擎技术,从互联网海量的内容找到用户想要的内容。比如淘宝、京东、美团等都是垂直搜索。 优点: 结果精准 信息分发效率较高 能够满足用户有明确需求的场景 缺点: 无法满足用户“逛”的需求 个性化推荐 和搜索引擎不同的是,即使用户不主动为机器提供明确的需求,个性化推荐页能够识别用户意图,即单独展示为其量身打造的内容,促成用户在平台交易 优点: 结果多样性 信息分发效率较高 能够满足用户无明确需求,“逛一逛”的场景 缺点: 推荐系统以兴趣预测为主要手段,因此准确度并不能达到100%,推荐结果用户并不感兴趣 工业界推荐系统架构 数据层 用户基础数据、物品数据和事件数据 用户基础数据 指用户基础属性和社会学信息:账号、年龄、学历等 物品数据 物品的基础属性:物品名称、价格、类目库存等 事件数据 用户在物品上发生的行为数据:点击、搜索、收藏等 标签层 具备基础数据之后,需要对数据进行标签清洗,最常用的就是用户标签 用户偏好的计算基础方式:偏好=SUM(权重*行为) 除了利用平台本身的数据进行计算生产之外,还可以与第三方平台现有的标签产品进行对接, 召回环节 召回环节就是基于标签层计算出的用户偏好,从物品数据中选出与用户偏好相同/相似的物品 综合排序 召回结果中都是符合用户偏好的物品,符合召回条件的物品很多,那么哪个排前面哪个排后面? 粗排:按照规则,逻辑或者算法模型排序的结果,规则一般是通过物品的单品特征(商品销量,文章的浏览数量)加权计算来排序,模型一般采用CTR和CVR预测模型 精排:加入了业务干预逻辑的排序;精排阶段一般通过加权,降权来实现 运营干预 运营干预阶段一般是在进行精排之后,给到用户展示之前需要做的策略,一般考虑:广告、紧急屏蔽、运营配置位 广告 主要是排序结果如何和广告进行穿插 紧急屏蔽 一些违规(问题)商品如何进行紧急处理 运营配置位 满足一些运营的日常需求提报 结构化思维 结构化思维是指一个人在面对工作任务或难题时能从多个侧面进行思考,深刻分析导致问题出现的原因,系统制定行动方案,并采取恰当的手段使工作得以高效率的开展;结构化思维是一种解决问题的方式,能够帮助我们更高效解决问题。 机构化思维分析过程 案例:比如对于淘宝搜索结果页的商品排序异常问题 第一步:明确问题 排序异常是商品质量度问题还是商家质量度问题? 第二步:拆解问题 商品质量度:销量?主图?评分 商家质量度:商家信誉度?商家活动力度 第三步:进行假设

【在Visual Studio中使用CMake构建项目工程】

在Visual Studio中使用CMake构建项目工程 1 CMake概述2 CMake的使用2.1 注释2.1.1 注释行2.1.2 注释块 2.2只有源文件2.2.1 共处一室 2.3私人订制2.3.1 定义变量2.3.2 指定使用的C++标准2.3.3 指定输出的路径 2.4搜索文件2.4.1 方式12.4.2方式2 2.5 包含头文件2.6 制作动态库或静态库2.6.1 制作静态库2.6.2 制作动态库2.6.3 指定输出的路径 2.7 包含库文件2.7.1 链接静态库2.7.2 链接动态库2.7.3链接第三方动态库 2.8日志2.9 变量操作2.9.1 追加2.9.2 字符串移除2.9.3list命令其它功能 2.9 宏定义 3. 预定义宏4. 嵌套的CMake4.1 准备工作4.1.1 节点关系4.1.2 添加子目录 4.2 解决问题4.2.1 根目录4.2.2 calc 目录4.2.3 sort 目录4.2.4 test1 目录4.2.5 test2 目录4.2.6 构建项目 5. 流程控制5.1 条件判断5.1.1 基本表达式5.1.2 逻辑判断5.1.3 比较5.1.4 文件操作5.1.5 其它 5.2 循环5.2.1 foreach5.2.2 while 1 CMake概述 CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。

【Electron】富文本编辑器之文本粘贴

由于这个问题导致,从其他地方复制来的内容 粘贴发送之后都会多一个 换行 在发送的时候如果直接,发送innerHTML 就 可以解决 Electron h5 Andriod 都没问题,但是 公司的 IOS 端 不支持,且不提供支持(做不了。)。 于是,继续想办法。 把单纯的富文本插入操作,改一下,只粘贴文本内容 e.preventDefault(); const pastedText = e.clipboardData.getData('text/plain') if (pastedText) { document.execCommand('insertText', false, pastedText); } e.preventDefault(); const pastedText = e.clipboardData.getData('text') if (pastedText) { var newNode = document.createElement("span"); newNode.style = "white-space: pre-line"; newNode.innerHTML = pastedText; // 找到光标插入并且 右移光标 window.getSelection().getRangeAt(0).insertNode(newNode); window.getSelection().modify("move", "right", "character"); // document.execCommand('insertText', false, pastedText); }

GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思想)(一)

这几天没有更新,其主要的的原因是,在学习对Elasticsearch的使用。Elasticsearch是一个非常强大的数据库索引工具。是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。 所以你可以不用,但是你不能不知道,不可谓重要。 文章目录 Elasticsearch概念安装使用ElasticSearch`使用前提`存储结构Elasticsearch语法常见的几种查询方法`精确匹配单个字段``多值匹配``范围查询``bool组合查询``排序``聚合查询``count函数``cardinality``avg`求平均值`Sum`求和计算`max`求最大值`min`求最小值 Elasticsearch概念 ElasticSearch是一个分布式、RESTful风格的搜索和数据分析引擎,在国内简称为ES;使用Java开发的,底层基于Lucene是一种全文检索的搜索库,直接使用使用Lucene还是比较麻烦的,Elasticsearch在Lucene的基础上开发了一个强大的搜索引擎。 主要功能有: 分布式的搜索引擎和数据分析引擎全文检索、结构化检索、数据分析对海量数据进行近实时的处理 Elastic 是Lucene的封装,提供了REST API的操作接口,开箱即用 Lucene:是单机应用,只能在单台服务器上使用,最多只能处理单台服务器可以处理的数据量。Elasric:ES自动可以将海量数据分散到多台服务器上去存储和检索海量数据的处理: 分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理了,近实时;在秒级别对数据进行搜索和分析。 国外 维基百科,类似百度百科,全文检索,高亮,搜索推荐 - Stack Overflow(国外的程序异常讨论论坛)GitHub(开源代码管理)电商网站,检索商品日志数据分析,logstash采集日志,ES进行复杂的数据分析(ELK技术,elasticsearch+logstash+kibana)BI系统,商业智能,Business Intelligence 国内 站内搜索(电商,招聘,门户)IT系统搜索(OA,CRM,ERP)数据分析(ES热门的一个使用场景) 优点: Elasticsearch,将全文检索、数据饭呢西、分布式技术合并到了一起。lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)数据库的功能面对很多领域是不够用的(事务,还有各种联机事务型的操作);特殊的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;Elasticsearch作为传统数据库的一个补充,提供了数据库所不不能提供的很多功能可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂 安装 现在的安装并不像之前的版本那样,包括对Elasticsearch使用。主要存在的问题是密钥。说到密钥,这个就不得不说一个东西。 Elasticsearch其实有三个方面构成: 调用的服务器,这个服务器指代的是,你通过API去使用Elasticsearch引擎的服务器。Elasticsearch服务器。这个服务器就是搭载Elasticsearch的云服务器Elasticsearch可视化工具。这个可视化工具功能最齐全的就是Kibana,这个是Elacsticsearch官方指定的可视化工具。除了这个我推荐一个更加轻量的可视化工具es-client,当然对于Kibana的来说,是比不上的,但是轻量啊。安装没有那么复杂。执行需要在浏览器的插件管理中下载就可以用了,非常方便 这里建议安装用docker去安装。这里献上官方文档(官网的不一定能成,主要是看你的虚拟机是什么) 注意:如果是按照别人博客上的安装的话,跟着就行。诺是按照官网的上的,你就注意: 密钥的生成。这个密钥的生成非常重要,Kibana在登录的时候是需要的。这个密钥是安全密钥,在配置的时候是可以取消的。(一定要注意不然在后面是非常弄的)在用安全组中将相应的端口开放。可视化工具链接的接口与服务器调用端口是一致的。 这里不放我如何去安装的因为我怕更不上时代,到时候误人子弟,官网是一直在变的。 使用ElasticSearch 使用前提 必须要有一个ElasticSearch服务器必须要有一个可视化工具安装API包,"github.com/elastic/go-elasticsearch/v8" import "github.com/elastic/go-elasticsearch/v8" 但是这个包下面其实还有一些包,这些包非常的重要。当时我在使用的时候,根本不知道,走了不少的弯路的,找了官网的文档,又找了一些博客,都没有详细的说明情况和要点。要不就少些,要不就只把部分给列出来。但是现在我将这些无私的奉献给各位。 因为这个v8的包非常的多,所以很难将所有的放进去。这里我做一些解释: 客户端: 调用NewDefaultClient()和NewClient(cfg Config)方法会返回一个普通客户端 NewDefaultClient() 不需要去配置链接时的配置参数,默认参数链接,并返回一个普通客户端NewClient(cfg Config)需要按照总共需要的配置需求去配置参数,并返回一个普通客户端 调用NewTypedClient(cfg Config)会返回一个属性客户端(相比普通客户端强大,但是有局限,后面再说) 工具包: 这个工具包主要是普通客户端进行调用的,使用的范围是对于批量处理数据的情况 参数类型包: 我们在对ElasticSearch进行处理的时候会有很多中情况: 首先是对于语法的选择,ElasticSearch有独属于他自己的一套语法。查询时会有很多选择,比如对于字段是模糊查询,还是精确查询,还是对地图进行查询。这些参数都有,也有对于AI进行处理的参数。(建议下一个翻译软件,去看看。那个参数太多了。。。也就是说功能非常齐全) 存储结构 ES存储结构Mysql存储结构Index(索引)表document(文档)行,一行数据Field(字段)表字段mapping(映射)表结构定义 index ES中索引(index)就像mysql中的表一样,代表着文档数据的集合,文档就相当于ES中存储的一条数据 type type也就是文档类型,不过在Elasticsearch7.0以后的版本,已经废弃文档类型了。在Elasticsearch老的版本中文档类型,代表一类文档的集合,index(索引)类似mysql的数据库、文档类型类似Mysql的表。新的版本文档类型没什么作用了,那么index(索引)就类似mysql的表的概念,ES没有数据库的概念了。 document ES是面向文档的数据库,文档是ES存储的最基本的存储单元,文档类似mysql表中的一行数据。其实在ES中,文档指的就是一条JSON数据ES中文档使用JSON格式存储,因此存储上要比mysql灵活的很多,ES支持任意格式的json数据 要注意:虽然说, 一个索引就理解成一个表,但是这个表是可以存任意数据的,也就是说,不遵从约定的一开始的索引也是可以的。(所以索引名一定不能错否则,会有脏数据) 一个document的数据 { "_index" : "order", "

小米汽车首款车型SU7亮相,定位C级高性能生态科技轿车

12月28日,小米汽车技术发布会在国家会议中心盛大举行,五大自研核心技术重磅发布,首款车型小米SU7也在发布会上同步亮相,该车定位“C级高性能生态科技轿车”,是“科技大厂”小米迈入新能源赛道的首次成果落地,也是引领第二个百年汽车发展进程的跨时代创新之作。小米SU7在车型设计,新能源技术,智能科技等方面全面突破,充分展现小米造车的硬核实力,更展示出小米SU7所拥有的超强性能以及前瞻的智能空间与生态科技体验。 自然与科学的完美融合,缔造经得起时间考验的经典设计 小米SU7集结全球顶尖设计师团队倾力打造,由宝马全球首位中国设计师李田原,前奔驰德国总部高级外饰设计师仇臻,前宝马高级内饰设计师Shin共同操刀完成,在汽车工业设计中将自然之美与科学之美相互融合,以杰出的设计才华打造出新能源时代 “经得起时间考验的设计”,好看更耐看。优雅动感的车身线条,简洁流畅且不失力量与层次感的型面,呈现浑然一体的美感,尤其是整车的视觉黄金比例设计,3倍轮轴比,2倍轮高比,1.36倍宽高比营造出历久弥新的经典车身比例。 无论从哪个角度来看,小米SU7都拥有遵循自然与科学的设计之美。车头正面的水滴大灯,捕捉住自然界水珠滴落的瞬间形态,4透镜12颗像素矩阵式ADB自适应大灯随光而动,点缀出整车的灵动与精致;车身侧面则以精练线条勾勒出极富动感的腰线,兼具优美与力量感;而车尾部极具辨识度的光环尾灯,设计灵感汲取土星光环,以360颗632nm超红光LED元件组成渐进式动感光带,将跨越时空的未来感设计与美妙的自然设计融为一体。此外,小米SU7打造出海湾蓝、雅灰、橄榄绿三种车身色彩,带来源于自然、回归自然的美感体验。 小米SU7不仅为美而设计,也为驾驶而设计,28度前挡风,17度大溜背以及全车轮廓G4连续曲率,加之无边框水滴后视镜与鹅暖石激光雷达设计,历经1000+数字模型仿真试验与300+油泥模型调整,模型经过科学的风洞测试,在无数次的精打细磨中造出小米SU7“全球量产轿车最低风阻” ——0.195Cd,兼具极低的能耗与超高的续航表现,并以独有的经典设计成就高性能驾乘体验。 在空间表现方面,小米SU7的车身尺寸为4997mm x 1963mm x 1440mm,轴距为3000mm,具有低趴运动的跑车姿态与兼顾多种出行场景的C级大空间,前排竖向乘坐空间1012mm,后排膝部间隙105mm,后备厢容积517L,更有105L前备箱容积,为国内纯电轿车之最。 极致驾控体验,小米SU7为速度和性能而生 小米SU7 生而速度,搭载了小米联合研发的HyperEngine V6/V6s超级电机,转速达21000rpm,超越全球最强量产电机,具备行业顶级的超强性能表现。小米SU7 Max版采用双电机全轮驱动,峰值扭矩达838N·m,足以匹敌4.0L涡轮增压发动机的跑车性能,总功率高达495kW,最高车速可达265km/h,0-200km/h加速仅10.67秒,零百加速快至 2.78 秒(减去起步时间),一脚踏入超跑俱乐部阵营。 不仅如此,小米SU7还具有十足的驾控乐趣,可自定义包括加速特性、转向手感轻重、前后驱动分配比例等十项调节,配备Boost模式,持续20秒的超额扭矩输出,支持弹射起步,澎湃动力瞬间即达,开启属于速度与激情的极致性能享受。 小米SU7采用前双叉臂后五连杆独立悬架,搭载小米疾风智能底盘,配备CDC阻尼可变减振器,博世ESP10.0车身稳定系统,博世DPB制动控制器,布雷博四活塞固定卡钳等众多超强配置,转弯半径5.7米,百零制动距离33.3米,拥有超一流的综合操控性能表现。 高续航高安全,铸就高品质驾乘体验 小米坚实的底层核心研发技术为小米SU7提供了高续航高安全的品质保障。针对行业、用户高度关注的电池安全与续航表现,小米的CTB一体化电池技术集成效率高达77.8%,首创电芯倒置设计,拥有顶尖的散热、隔热设计以及全球最严苛的电池安全检测与14层硬核物理防护,还有小米车云协同安全预警系统等技术加持,铸就全方位无死角的安全体系,同时兼具优异的续航表现,小米SU7有两个续航版本,CLTC工况续航里程分别为668km与800km,MAX版采用800V超级快充,充电5分钟续航即达220km,真正做到性能与效能的最优化。 在重要的主被动安全方面,小米SU7 配备了铠甲笼式钢铝混合车身,车体高强度钢和铝合金占比高达90.1%,整车扭转刚度达51000N· m/deg,全面满足中欧双五星安全标准,同时搭载 16 项主动安全配置及严苛的隐私安全保护,打造出远超行业水平的高安全高性能高品质纯电出行体验。不仅于此,小米自主设计的9100t一体化大压铸设备集群及其全球首创、自主研发的泰坦合金,以及72合1一体化压铸后地板、三段式后地板防撞设计,令小米SU7在轻量化、结构强度、维修成本等方面均有显著的品质提升。 打通智能终端的全域全链路,构建“人车家生态”全场景 作为小米进军汽车领域的首款力作,小米SU7成为小米“科技大厂 生态造车”的最佳生态科技载体。此次发布会上亮相的小米SU7,采用全栈自研智能技术以及自研感知技术,自研自适应变焦BEV技术,道路大模型,超分辨率占用网络技术,在可见精度、感知精度、控制精度等方面实现全面跃升,“看得见、看得准、看得懂”,让高速、城市智驾更精准更安全,解决了城市NOA现存的过路口难等问题,打造出全国都适用的城市领航技术,令智能领航体验更为安全、便捷。 基于“以人为中心”的座舱交互架构以及小米澎湃OS操作系统的加持,小米SU7实现从硬件到软件的全面共享生态,进化成为移动智能空间。该座舱搭载16.1英寸3K分辨率中控生态屏,56英寸HUD,车规级7.1英寸翻转式仪表屏,采用2块原生车机系统的小米Pad后排拓展屏,匹配骁龙8295座舱芯片,AI算力30TOPS,五屏联动,带来极致流畅的人车交互体验。 围绕应用生态,硬件生态与小米CarIoT生态,小米SU7实现“人车家全生态”闭环,车机系统深度适配主流车载应用,手机应用pin到车内,可瞬间化身车机原生应用;具备超前的生态应用拓展能力,支持1000多种米家设备无感上车,5000多款应用逐步适配共享;全面向三方开放,统一标准化接口,全面支持无线Carplay车载,适配iPad配件及应用。小米SU7车机拥有如手机、平板一般的交互体验,开机快、升级快,手机观看的视频可直接车机全屏续播,让车载智能随心意自由流转。随着小米SU7到来,小米将打通居家、办公、出行等全场景,让全球用户感受移动智能空间的颠覆性用车体验。 汽车的前一百年,作为出行载具,保时捷是其中典范;新世纪以来,特斯拉率先开智能电动先河,让汽车成为“可移动的计算终端”;而当下,汽车工业全新使命就是打造“移动智能空间”。C级高性能生态科技轿车——小米SU7的全球首发亮相,向全世界展示了小米超前的科技创新能力以及雄厚的技术储备实力,更让新能源时代的电动汽车进化成为移动智能空间,拥有科技随心而动的全新自由体验,伴随全球用户在梦想的道路上恣意驰骋!

小米汽车正式亮相 雷军:目标是媲美保时捷与特斯拉

雷递网 雷建平 12月28日 小米集团今日举办小米汽车技术发布会,正式公布小米汽车五大核心技术——电驱、电池、大压铸、智能驾驶以及智能座舱,从底层核心技术开始,重新定义汽车工业的技术栈。 小米汽车首款作品——小米SU7也进行了“预发布”,外观设计、性能、续航、安全等细节首次公开亮相。它定位“C级高性能生态科技轿车”。 “我们要造的不是一款平庸的车,要造的是一辆媲美保时捷、Tesla 梦想之车。”小米CEO雷军分享了小米造车的目标:媲美保时捷和特斯拉,打造汽车工业新时代的梦想之车,做好看、好开、舒适、安全的移动智能空间。 “雄关漫道真如铁,而今迈步从头越。”雷军表示,小米汽车是小米集团从手机行业到汽车行业重大跨越,更是“人车家全生态”完整闭环的关键跨越。 雷军还表示,汽车行业已经100多年,百年赛道无捷径,“小米决定十倍投入,从底层核心技术做起,认认真真造一辆好车,并通过15年到20年的努力,成为全球前五的汽车厂商,为中国汽车工业全面崛起而奋斗!” 目前,小米汽车首期研发投入超100亿元,研发团队共有3400多名工程师,其中在关键领域拥有上千名国内外顶尖的技术专家。 小米智能自动驾驶将在2024年跻身行业第一梯队 据介绍,小米SU7轴距3000mm,车长4997mm,高1440mm,1963mm。 小米汽车配备16.1英寸中控屏,56英寸HUD,翻转式仪表屏,后排拓展屏可放小米Pad,实现五屏联动。 小米汽车搭载高通8295智能座舱芯片,以及澎湃OS。适配主流车载应用;兼容小米平板生态无缝上车,超过5000+应用逐步适配;手机应用可Pin到车上秒变车机原生应用。 雷军披露了小米汽车在五大核心技术领域的进展: 在工业硬科技领域,小米自主研发和生产的超级电机HyperEngine V8s,转速达到27200rpm,而预研的下一代小米超级电机,创新激光缠绕转子技术,在实验室中突破35000rpm;小米自研了CTB一体化电池技术,实现了目前CTB电池全球最高的77.8%电池集成效率,为了从源头保证电池性能和品质,小米甚至还自建了电池包工厂。 此外,小米自研了“9100t超级大压铸集群”和自研压铸合金材料“泰坦合金”,成为全球唯二、国内唯一同时自研大压铸和压铸材料的汽车厂商。 目前行业都在卷大压铸的锁模力吨位,小米称,坚定走全栈自研之路,从自研材料、设备集群系统,到成品铸件,小米完成了大压铸产业链里几乎所有环节的全栈自研。 在智能软科技领域,小米基于小米澎湃OS,小米智能座舱实现了底层重构、为车进化,打造先进的智能移动空间; 雷军称,在智能驾驶领域,小米行业首发自适应变焦BEV技术、道路大模型、超分辨率占用网络技术等三项关键技术,顶级配置、全栈自研的小米智能自动驾驶,将在2024年跻身行业第一梯队。 AI全面赋能也成为小米汽车融合前沿技术、实现硬核创新突破的新亮点。 比如小米针对智能驾驶的代客泊车场景,自研可量产的“端到端感知决策大模型”,可以实时观察、动态调整泊入机械库位等超高难度车位;再比如,在研发小米泰坦合金的过程中,小米还自研了多元材料性能A仿真系统,从1016万种配方中,遗选出兼顾强度、韧性和稳定性的最优合金配方。 小米称,小米SU7 Max整车零百加速飙到2.78秒,踏入“2秒超跑俱乐部”,最高车速也达到了265km/h,两项成绩均超过了保时捷Taycan Turbo。 雷军表示,小米SU7已经小批量量产,还要再过几个月再正式发布,还要进行大量测试,以保证万无一失。 雷军的最后一战 2021年3月,小米宣布正式进军智能电动汽车市场,预计10年投入100亿美元,首期为100亿人民币。 在十年前,雷军杀入智能手机市场,当时刚刚40岁,当时,雷军已经50岁了。 雷军说,“这是我人生最后一次重大创业项目。我愿意押上人生全部的声誉,亲自带队,为小米汽车而战!” 雷还透露,过去75天里,小米管理层经历85场业内拜访沟通、200多位汽车行业资深人士的深度交流,4次管理层内部讨论会,两次正式的董事会,进行了极为严谨详尽的调研与论证,才做出这个小米史上最重大决定。 小米涉足汽车领域的底气是,经过十年创业的小米,已有坚实的基础。 2023年11月,北京经济技术开发区管委会(亦庄)与小米科技签约仪式举行,随着双方签订《合作协议》,正式宣告小米汽车落户北京经开区。 汽车是高价值商品 以高端化为抓手 2023年初,雷军曾谈及小米汽车的策略。 雷军说,造车新势力比小米汽车提前了6-7年,两年前,小米做了很多访谈,认为汽车是百年赛道,只要看好汽车产业,任何时候都不晚。小米汽车2024年出车是刚刚好。 “智能电动汽车是传统汽车工业和消费电子的融合,和手机的很多能力高度重合。我们先学会传统汽车工业,再融入汽车电子的经验。让大家在各个场景无缝连接。” 过去几年,小米一直在主打产品高端化。雷军认为,未来3年是小米的高端战略进入成长和成熟期,继续稳价增量。汽车是高价值商品,所以小米会以高端化为抓手来改变大家的质量意识。 当前,小米100%持有小米汽车。雷军指出,过去3年,小米总裁卢伟冰建立的线下一万家门店对小米汽车的营销很有帮助。小米在全球多个国家都有业务,也会是个大的营销网络。小米汽车推出后,也会对小米资源的复用。小米汽车争取15-20年进入世界前五。 谈及小米汽车如何盈利的问题时,雷军指出,小米的整合能力非常好。长期和小米手机一样,除了硬件利润,小米更在意软件利润。汽车以往可以整合销售、售后服务、充电桩,未来汽车可以整合的服务越来越多。 雷军对智能汽车并不陌生 早在2014年前后,雷军就两次拜访特斯拉CEO马斯克,雷军问马斯克:“10年前你为什么做特斯拉?那时电动车还没这么火,你是怎样看待这个机会的?” 马斯克的回答让雷军终身难忘。 马斯克说:“我从不觉得这是个好机会,因为它的失败率要比成功率高得多,我只是觉得这是人类应该做的事情,也是值得做的事情,我不想苦苦等待着让别人来实现。” 从硅谷回来后,雷军感叹说:我们干的好像都是别人能干的事情,而马斯克干的事是别人想都想不到的。 也是那个时候,雷军就投资了蔚来汽车。2018年12月,蔚来ES6上市,雷军还到现场来助阵,并和李斌夫妇一起吃了一顿盒饭。 雷军与小鹏汽车CEO何小鹏也是超过十年以上的“亦师亦友”关系,何小鹏在小米上市时,投了1亿美元支持小米。小鹏汽车上市时,小米不仅是投资人,雷军还亲自参与了小鹏汽车上市活动。 如今,随着小米汽车的亮相,雷军与李斌、何小鹏的关系也会更加微妙,新能源汽车市场的竞争也会更加惨烈。 何小鹏就认为,在智能汽车领域,未来三年会是最残酷的三年,也是最有机会的三年。核心不光要建立几个长板,还要无任何短板,而且非常考验组织在激烈变化和快速发展中的基础功。要用非常之法,走奋斗之路。 ——————————————— 雷递由媒体人雷建平创办,若转载请写明来源。

kafka 开启认证授权

前言 1、前面自己写了一篇关于各个环境各个模式的安装的文章,大家可以去看看 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式 2、使用版本 kafka_2.13-3.4.1 3、kafka验证方式,有两大类如下,文档内容在 kafka官方文档的 第七节 security,强烈建议大家去看下,不想看英文的可以翻译中文后看 SSL ( 官方3.4.x SSL 文档链接)SASL ( 官方3.4.x SASL 文档链接) 4、而SASL 又细分如下 4 小类,这四种都可以使用 类型说明官方文档链接SASL/GSSAPI (Kerberos)使用的Kerberos认证,可以集成目录服务,比如AD。从Kafka0.9版本开始支持KerberosSASL/PLAIN使用简单用户名和密码形式。从Kafka0.10版本开始支持,不支持动态增加账户和密码SASL/PLAINSASL/SCRAM-SHA-256主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAMSASL/SCRAM-SHA-512主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAMSASL/OAUTHBEARER基于OAuth 2认证框架,从Kafka2.0版本开始支持OAUTHBEARER 5、在后面指定java 实现的时候,可以去源码里面找对应的,如下 6、需要先明确的一点是,用户认证和权限控制是两码事。用户认证是确认这个用户能否访问当前的系统,而权限控制是控制用户对当前系统中各种资源的访问权限。用户认证就是今天要讲的内容,而kafka的权限控制,则是对应 bin/kafka-acls.sh 工具所提供的一系列功能,这里不详细展开。 一、Linux 环境 在SASL/PLAIN 模式中 Kafka的SASL_SSL和SASL_PLAINTEXT是两种不同的安全协议,用于保护Kafka集群中的通信。它们提供了不同级别的安全性和身份验证选项: SASL_SSL (Simple Authentication and Security Layer over SSL/TLS):这是Kafka的高度安全的传输协议。它结合了SSL/TLS(用于加密通信)和SASL(用于身份验证)来提供强大的安全性。使用SASL_SSL,Kafka客户端和服务器之间的通信将是加密的,并且需要经过身份验证才能建立连接。常见的身份验证机制包括GSSAPI(Kerberos)、PLAIN(用户名和密码)等。SASL_SSL是Kafka中最安全的选项,适用于敏感数据和合规性要求高的场景。 SASL_PLAINTEXT (Simple Authentication and Security Layer over plaintext):这是Kafka的另一种SASL支持方式,但不涉及加密。使用SASL_PLAINTEXT,身份验证是必需的,但通信不加密。这意味着数据在传输过程中是以明文形式传输的,因此对于保护数据隐私要求较低的场景或在内部网络中使用时,可以选择此选项。常见的身份验证机制也包括PLAIN(用户名和密码)等。 通常,SASL_SSL是更安全的选项,因为它不仅提供身份验证,还提供数据的加密,从而更好地保护了数据的隐私和完整性。但是,它的配置相对复杂,可能需要设置SSL/TLS证书和密钥以及身份验证机制。SASL_PLAINTEXT相对来说更容易配置,但数据在传输过程中不加密,可能不适用于对数据隐私有更高要求的场景。 你的选择应该根据你的具体安全需求来决定。在需要高度安全性的生产环境中,通常会选择SASL_SSL,而在开发和测试环境中,SASL_PLAINTEXT可能更为方便。无论选择哪种方式,都需要谨慎配置和管理Kafka的安全设置,以确保系统的安全性。 所以下面文章中的 SASL_PLAINTEXT 可以替换为 SASL_SSL,相应的配置可以改成如下(可以看官网的 SASL/PLAIN)这一节,采用的就是这种 3、下载后解压 tar -xzf kafka_2.13-3.4.1.tgz cd kafka_2.13-3.4.1 1.1、Kafka with KRaft 单节点 SASL/PLAIN 模式授权 1.

Dependency not found解决方案(Springboot,绝对有效)

目录 问题描述解决方案systemPathmvn install 问题描述 今天在弄一个项目的依赖的时候,easyexcel 的依赖就是下载不了,虽然我的 Maven 配置没问题。 依赖: Maven 配置: 我切换了几个版本,也无法从镜像下载,甚至开了加速器,换回默认镜像下载都不行。 解决方案 systemPath 这个方案比较简单,如果这个方案报错,再用下面的解决方案 既然网上下载 jar 包不行,那我就从本地引入 jar 包,其步骤如下: https://mvnrepository.com/ 网站下载所需 jar 包 项目根目录下新建 lib 文件夹(当然,名字随便取都可以),把下载好的 jar 包放进去即可 打开 pom.xml 文件,修改 <dependency> 配置如下: <dependency> <groupId>com.alibaba</groupId> <artifactId>3.0.5</artifactId> <version>${easyexcel.version}</version> <scope>system</scope> <systemPath>${project.basedir}/lib/easyexcel-3.0.5.jar</systemPath> </dependency> 刷新 Maven ,成功引入 这个方案可能会报: dependencyManagement.dependencies.dependency.systemPath’ for com.alibaba:3.0.5:jar refers to a non-existing file 那就走 mvn install 的方案如果在 clean/build/package 的时候还是报找不到 jar 包,可以把 ${project.basedir} 改成 ${pom.basedir} mvn install 注意: 一定要给指令值加上""不然会报错: 感谢小小菜蜗牛的提醒,我之前写文章的时候没加""不报错,可能是因为我之前把terminal改成了gitBash

使用Python Flask搭建一个简单的Web站点并发布到公网上访问

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务,本期教程我们使用Python Flask搭建一个web问答应用程序框架,并结合cpolar内网穿透工具将我们的应用程序发布到公共网络上,实现可多人远程进入到该web应用程序访问。 在操作上我们将使用HTML来创建网页的结构,然后使用css设计这个结构并且使其看起来更漂亮,此外还会利用Javascript与页面上的不同元素进行交互,最后使用python与web服务器(也成为后端)进行连接。 1. 安装部署Flask并制作SayHello问答界面 本篇文章代码使用 Python3 运行 安装环境:需要在电脑上安装 Python3 和 pip3。建议安装最新版本 检查是否有安装了pip的可用Python,查看Python和pip版本: C:> py --version Python 3.N.N C:> py -m pip --version pip X.Y.Z from ... (python 3.N.N) 使用pip安装和更新: $ pip install -U Flask 创建环境: conda create -n SAYHELLO python=3.10 激活环境: conda activate SAYHELLO 创建项目目录: mkdir SAYHELLO 进入到创建的目录: cd SAYHELLO 在当前目录启动VS Code: code . 在SAYHELLO文件夹下新建两个附加文件夹,一个名为templates储存html文件的位置, 另一个名为static文件夹,下面新建一个名为css的文件夹。 在css文件夹下新建一个名为main.css的文件, body { text-align: center; background-color: SlateGrey; } p { color: white; font-family: Shanti; font-size: 1.

使用VScode通过内网穿透在公网环境下远程连接进行开发

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程连接服务器的工具有很多,比如XShell、putty等,可以通过ssh来远程连接服务器,但这用于写代码并不方便,可能需要现在本地写好代码后再将源代码传送到服务器运行、服务器上的图片也无法直接查看。 而vscode可以很好的解决这些问题,它的核心组件都运行在远程环境中,本地的开发机器完全不需要拥有远程开发环境的源代码,在vscode上编写代码可以直接同步更新到服务器上,给你带来丝滑般的远程开发体验。 所以这篇文章教程,我们将通过vscode实现远程开发,并通过cpolar内网穿透实现在公网环境下的远程连接,让你在出门在外任意地方也可以远程连接服务器进行开发写代码。 1、安装OpenSSH 打开Windows开始页面,直接进行搜索PowerShell,打开第一个Windows PowerShell,点击以管理员身份运行 打开之后,输入以下指令: Get-WindowsCapability -Online | ? Name -like 'OpenSSH*' 此时出现的结果就是电脑里没有安装OpenSSH的情况: 如果已经安装了OpenSSH那么跳过这一步,没有安装的话则输入以下指令 Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 最终结果为如下,则代表着OpenSSH安装成功: 显示OpenSSH安装成功后,在打开本地cmd进入之后输入命令ssh ssh 如果显示的是这样结果的话,则说明正确: 2、vscode配置ssh 在windows上安装vscode,安装成功后并打开。 点击左侧工具栏中的扩展,搜索“ssh”,选择第一个Remote - SSH进行安装(我已经安装过了,所有此时显示的是禁用状态) 点击左下角的“设置”按钮,紧接着点击“设置” 根据截图的提示,找到Show Login Terminal并勾选该选项 点击左侧工具栏中的远程按钮,可以查看远程连接,点击SSH TARGETS下面显示的服务器旁边的按钮进行连接操作 3. 局域网测试连接远程服务器 以ssh连接ubuntu为例,打开vscode后,先尝试使用局域网地址ssh远程ubuntu 输入命令到对话框中,并回车 ssh username@ip 选择一个配置文件 输入完成在右侧会显示出来刚刚添加的ssh 连接,点击 -->图标 连接,出现输入密码,输入密码即可 出现绿色标志表示连接成功 4. 公网远程连接 目前我们只能在局域网内进行远程,具有一定的局限性。不过我们通过内网穿透来实现在公网环境下的远程连接。这里我们借助工具cpolar内网穿透来实现,无需公网IP,也不用设置路由器,操作简单。 cpolar官网:https://www.cpolar.com/ 4.1 ubuntu安装cpolar内网穿透 本次教程我们使用的是ubuntu 图形化系统,我们需要先在ubuntu上安装配置cpolar内网穿透,支持一键自动安装脚本。 国内安装 curl -L https://www.

Vue3中使用JSX

vite中配置JSX 安装相关依赖: npm install --save-dev @vue/babel-plugin-jsx 然后,在项目的vite.config.ts文件中进行配置。具体的配置内容如下图所示: import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' export default defineConfig(({ command, mode }) => ({ plugins: [vue(), vueJsx(),...] 创建一个JSX组件 使用defineComponent封装一个组件 import { defineComponent, ref } from "vue"; const JSXComponent = defineComponent({ setup() { const title = ref("JSX in Vue3"); const showText = ref(true); const list = [ { id: 1, name: "Item 1" }, { id: 2, name: "

高维多阶段随机规划问题的正则化分解与马尔可夫不确定性研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭:行百里者,半于九十。 📋📋📋本文目录如下:🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Python代码及文章 💥1 概述 《高维多阶段随机规划问题的正则化分解与马尔可夫不确定性》 摘要:我们针对高维多阶段随机优化问题,其中可能包含大量时间段/阶段(例如数百个)、高维资源状态变量和马尔可夫信息过程,开发了一种二次正则化方法。在温和的技术假设下,我们证明了结果算法在有限次迭代后收敛到最优策略。我们使用大型输电网的能量存储优化设置进行了计算实验,这激发了我们问题的空间和时间维度。我们的数值结果表明,所提出的方法比传统方法表现出更快的收敛速度,对于高维问题,观察到更大的收益。 关键词:多阶段随机优化、二次正则化、嵌套分解、随机双动态规划 📚2 运行结果 部分代码: # HB-State ################### ic('------ HB-State --------') # Set algorithm parameter p_gain = options.PG i_gain = options.IG ic(mass, p_gain, i_gain) # Zero Initial Condition # pim_s_init = np.hstack((x_init,10*np.zeros(3*N*n))) # Random Initial Condition pim_s_init = np.hstack((x_init,10*z_init,10*np.random.random(2*N*n))) # Solve sln_pim_s = solve_ivp( PIM, t_span = [0,options.T_MAX], y0 = pim_s_init, max_step = 0.

机器学习、人工智能、深度学习的关系

人工智能(Artificial Intelligence,AI) 人工智能范围很广,它是一门新的科学与工程,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的技术科学,研究内容涵盖语音识别、图像识别、自然语言处理、智能搜索和专家系统等。人工智能可以对人的意识、思维的信息过程进行模拟,像人类那样思考、也有可能超过人的智能。人工智能起源于著名的图灵测试,从那时起,引发无数科学家为实现人工智能进行种种探索,从而不断地推动计算机技术进步,创造出一个又一个奇迹。 机器学习(Machine Learning) 机器学习是人工智能的一个分支,是实现人工智能的方法之一。机器学习是对人类生活中学习过程的一个模拟,而在这整个学习过程中,最关键的是数据。计算机科学家和机器学习先驱Tom M.Mitchell给机器学习下了这样一个定义:“机器学习是对计算机算法的研究,允许计算机程序通过经验自动改进。”任何通过数据训练进行学习算法的相关研究都属于机器学习。kNN、K-Means、Decision Trees、SVM、朴素贝叶斯、感知机、EM算法、逻辑回归及ANN(Artificial Neural Networks,人工神经网络),都是常见的机器学习算法。 深度学习(Deep Learning,DL) 深度学习是一种机器学习方法,发展于人工智能的联结主义学派,其概念源于人工神经网络,它通过组合低层特征形成更加抽象的高层特征,其动机在于建立、模拟人脑进行分析学习。与传统的机器学习方法一样,深度学习也是根据输入的数据进行分类或者回归。传统的机器学习方法在面对数据量激增的情况下,其性能表现得差强人意,与此形成鲜明对比的是,深度学习反而表现出卓越的性能,特别是在2010年之后,各种深度学习框架的发布及其在各领域的突出表现,更进一步促进了深度学习算法的发展。 机器学习(Machine Learning)、人工智能(Artificial Intelligence)和深度学习(Deep Learning)是三个紧密相关的概念,它们在实践中相互交织并共同推动了科技的发展。 人工智能是一个更广泛的概念,指的是使计算机系统具备智能和类似于人类的行为的能力。这包括模拟人类智能的各种技术和方法。 机器学习是人工智能领域的一个子领域,它关注如何让计算机通过学习和经验来改进性能,而不需要明确地编程。机器学习的主要目标是通过数据和统计建模来训练模型,并使用这些模型进行预测和决策。 深度学习是机器学习中的一种特殊分支,它模拟人脑神经网络的结构和功能,通过多层神经网络对数据进行层级化的学习和表示。深度学习利用大量的数据和强大的计算资源,可以自动从数据中学习到复杂的特征表达和模式,以及进行高级的模式识别、分类和生成等任务。 简而言之,深度学习是机器学习的一个细分领域——人工神经网络的一个分支,而机器学习作为实现人工智能最重要的方法之一。通过这些技术的不断发展和应用,我们可以构建出更加智能、自动化和高效的系统,推动科技的进步和社会的发展。

2024年软考有电子证书吗?如何下载?

并非所有地区都设有软考电子证书制度,目前只有广东、浙江和山东实行了软考电子证书。至于打印时间,由于各地区规定不同,一般在合格标准公布后约一个月左右进行打印。 广东软考电子证书 盖有”广东省人力资源和社会保障厅专业技术人员资格考试证书专用章(1) 根据《关于开展专业技术人员职业资格电子证书试点工作的通知》(粤人社函〔2020〕10号)可以得知,对于在广东省参加计算机技术与软件专业技术资格(水平)考试的合格人员,通过广东省电子证照系统制作专业技术人员职业资格考试电子合格证明。电子合格证明在全省范围内与纸质证书具有同等效力,其他任何形式的电子再转换版本,不具备同等效力。 打印方式:可通过广东省人力资源和社会保障厅网上服务平台、广东省人事考试网的电子证书专栏或证书发放栏目访问广东省专业技术人员职业资格电子证书系统(以下简称“电子证书系统”),或直接访问网址: https://ggfw.hrss.gd.gov.cn/zjzsh‍/ 浙江软考电子证书 盖有“浙江省人力资源和社会保障厅电子印章”。 根据《浙江省人力资源和社会保障厅关于加快推进专业技术人员资格信息化工作的意见》(浙人社发〔2017〕117号)可以得知。 加盖浙江省人力资源和社会保障厅电子印章的全国专业技术人员资格考试电子合格证明、浙江省专业技术人员资格考试电子证书、高级职称电子证书,表明持证人员取得相应专业技术资格,在省内与纸质资格证书具有同等效用,可作为浙江省相应系列、级别专业技术职务评聘、岗位聘任或执业注册的有效凭证。电子证书的任何形式的电子再转换版本,不具备同等法律效力。 打印方式: 在浙江政务服务网下载打印电子合格证明。 查询打印网址: http://www.zjzwfw.gov.cn/col/col1347442/index.html?webId=1&tabid=00001 山东软考电子证书 盖有“山东省人力资源和社会保障厅人事考试证书专用章”电子印章。 根据《山东省人力资源和社会保障厅等4部门关于推行专业技术人员职业资格考试 电子合格证明的通知》(鲁人社函〔2021〕36号)可以得知,计算机技术与软件(初级、中级、高级)将推行电子证书。山东软考电子证书,盖“山东省人力资源和社会保障厅人事考试证书专用章”电子印章,电子证书在山东省内有效。 打印方式: 合格人员可登录手机“爱山东”APP或登录“山东人事考试信息网( http://hrss.shandong.gov.cn/rsks)”查询、下载、打印电子合格证明。打开山东人事考试信息网——找到并点击“证书办理”栏目——找到并点击“电子合格证明”——点击“登录入口”——登录电子合格证明系统——下载电子合格证明。 备考资料分享如下:

vue2中使用百度地图BMapGL

1、npm 命令安装 npm install vue-bmap-gl --save 2、main.js 中文件引入 import VueBMap from 'vue-bmap-gl' import 'vue-bmap-gl/dist/style.css' VueBMap.initBMapApiLoader({ // 百度的key ak:'*********',// 这个密钥请使用自己注册的 }) Vue.use(VueBMap) 3、页面调用 <template> <div id="container" /></div> </template> import { lazyBMapApiLoaderInstance } from 'vue-bmap-gl' <script> export default { data() { return { map:null } }, mounted() { this.initMap(); }, methods: { initMap() { let that = this; lazyBMapApiLoaderInstance.load().then(() => { that.map = new BMapGL.Map("container", { restrictCenter: false, }); }) } } } </script> 5 、寄语 往事不可追,那些曾经的遗憾,错过了就放下吧;

Android apk安装包反编译——apktool工具

目录 一、apk 文件结构二、下载 apktool三、 使用 apktool 反编译 apk四、编译为apk五、apk签名1.生成密钥库2.使用 v1 签名3.使用 v2 签名 六、Dex 加解密原理 一、apk 文件结构 首先是 apk,即安卓程序的安装包。Apk 是一种类似于 Symbian Sis 或 Sisx 的文件格式。通过将 APK 文件直接传到 Android 模拟器或 Android 手机中执行即可安装。 而 apk 文件实际上就是一个 MIME 为 ZIP 的压缩包,只不过后缀名进行了更改。 我们可以直接把 .apk 后缀的文件修改成 .zip 后缀的压缩包格式,然后解压后就可以看到内部的文件结构,就像下面这样: 文件夹结构说明: assets 文件夹: 保存一些额外的资源文件,如游戏的声音文件,字体文件、图片等等,在代码中可以用 AssetManager 获取 assets 文件夹的资源。lib 文件夹: 存放用 C/C++ 编写的,用NDK编译生成的 so 文件,供 java 端调用。META-INF 文件夹: 存放 apk 签名信息,用来保证apk包的完整性和系统的安全。在 IDE 编译生成一个 apk 包时,会对里面所有的文件做一个校验计算,并把计算结果存放在 META-INF 文件夹内,apk 在安装的时候,系统会按照同样的算法对 apk 包里面的文件做校验,如果结果与 META-INF 里面的值不一样,系统就不会安装这个 apk,这就保证了 apk 包里的文件不能被随意修改和替换。比如拿到一个 apk 包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。res文件夹: 存放资源文件,包括icon,xml布局文件AndroidManifest.

k8s之部署kubeadm

master 20.0.0.71(4核8G) docker、kubelet、kubectl、kubeadm、flannel node1 20.0.0.73(最少2核4G) docker、kubelet、kubectl、kubeadm、flannel node2 20.0.0.74(最少2核4G) docker、kubelet、kubectl、kubeadm、flannel harbor节点 20.0.0.72(最少2核4G) docker、docker-compose harbor 1、环境准备 (1)iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X (2)swapoff -a (3)加载ip_vs模块(harbor节点除外) for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done (4)调整内核参数(harbor节点除外):vim /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv6.conf.all.disable_ipv6=1 net.ipv4.ip_forward=1 sysctl --system 2、配置时间同步 yum install ntpdate -y ntpdate ntp.

【开源】基于JAVA的大学生相亲网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询会员4.2 查询相亲大会4.3 新增留言4.4 查询新闻4.5 新增新闻 五、免责说明 一、摘要 1.1 项目介绍 基于JAVA+Vue+SpringBoot+MySQL的大学生相亲网站,包含了会员管理模块、新闻管理模块、相亲大会模块、留言管理模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,大学生相亲网站基于角色的访问控制,给相亲管理员、红娘老师使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。 1.2 项目录屏 二、功能模块 本系统包含容纳了各所高校人员的信息管理,另外还有站内新闻,交友信息,相亲大会活动,在线留言板等内容。 本系统共有账号管理、会员信息管理、新闻管理、相亲大会管理、留言管理五大模块。会员信息管理模块,记录了注册的会员的详细信息,管理注册的用户,进行审核、修改、删除信息等操作。账号管理模块包括对用户名、密码、确认密码、权限的管理。新闻管理模块主要有添加新闻、查询新闻,包括标题、内容、人等。相亲大会管理模块进行添加活动、查询活动,包括活动标题、时间、地点、费用、备注等。留言管理模块通过搜索姓名,留言概要查找会员的信息,可进行回复、修改、删除操作。 本系统将使用B/S体系结构,进行需求分析、体系结构设计、代码构建和测试,以Java、HTML5、CSS3、javaScript.,作为编程语言,使用Mwsa…数据库,以idea、VSCode 作为开发工具,采用三层架构模型,运用一些 Java 中经典框架如Spring、SpringBoot、SpringMVC、Mbatis等来进行开发。使用Maven构建工具来配置开发需要的环境。 可以实现会员注册,查看新闻(会员们的交友信息),交友查询,相亲大会活动,在线留言。 账号管理:用户名、密码、确认密码、权限。会员管理:注册会员管理(管理注册的用户,审核、修改、删除信息等操作)。新闻管理:添加新闻、查询新闻,包括标题、内容、人等。相亲大会管理:添加活动、查询活动,包括活动标题、时间、地点、费用、备注等。留言管理:通过搜索姓名,留言概要查找会员的信息,可回复、修改、删除。 三、系统展示 四、核心代码 4.1 查询会员 @RequestMapping(value = "/getByPage", method = RequestMethod.GET) @ApiOperation(value = "查询会员") public Result<IPage<Member>> getByPage(@ModelAttribute Member member ,@ModelAttribute PageVo page){ QueryWrapper<Member> qw = new QueryWrapper<>(); if(!ZwzNullUtils.isNull(member.getName())) { qw.like("name",member.getName()); } if(!ZwzNullUtils.isNull(member.getResidence())) { qw.like("residence",member.getResidence()); } if(!ZwzNullUtils.isNull(member.getAddress())) { qw.like("address",member.getAddress()); } if(!ZwzNullUtils.isNull(member.getHouse())) { qw.like("house",member.getHouse()); } if(!ZwzNullUtils.isNull(member.getSchooling())) { qw.

009:vue结合el-table实现表格行拖拽排序(基于sortablejs)

文章目录 1. 实现效果2. 安装 `sortablejs` 插件3. 完整组件代码4. 注意点 1. 实现效果 2. 安装 sortablejs 插件 sortablejs 更多用法 cnpm i --save sortablejs 3. 完整组件代码 <template> <div class="home"> <div class="body"> <el-table :data="tableData" border row-key="date" class="draggable-table" style="width: 100%"> <el-table-column prop="sortNo" label="序号"> <template slot-scope="{ row }"> <img class="handle" :src="require('./icon-drop.png')" style="width: 20px; height: 20px; object-fit: contain" /> </template> </el-table-column> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </div> </div> </template> <script> import Sortable from 'sortablejs' export default { name: 'Demo', data() { return { tableData: [ // 略去数据,与前段代码一直 { date: '2024-01-02', name: '张三1', address: '深圳市' }, { date: '2024-01-03', name: '李四2', address: '成都市' }, { date: '2024-01-04', name: '王五3', address: '重庆市' }, { date: '2024-01-05', name: '麻六4', address: '上海市' }, { date: '2024-01-07', name: 'kk5', address: '上海市01' }, { date: '2024-01-08', name: 'fantay6', address: '上海市02' }, ], } }, mounted() { const tbody = document.

递归删除文件夹及目录下所有文件

/** * 递归删除文件夹及目录下所有文件 */ public static void deleteDir(File dirFile) { if (!dirFile.exists()) { return; } if (dirFile.isDirectory()) { File[] files = dirFile.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { deleteDir(file); } else { file.delete(); } } } } dirFile.delete(); }

flutter学习-day20-使用SafeArea组件处理各机型的安全距离

文章目录 1. 介绍2. 解析3. 示例和效果图4. 特殊情况 1. 介绍 安全区域,指的是移动端设备的可视窗口范围。处于安全区域的内容不受圆角、刘海屏、iPhone 小黑条、状态栏等的影响,也就是说,我们要做好适配,必须保证页面可视、可操作区域是在安全区域内,而 SafeArea 组件会自动进行屏幕适配,帮你空出所占高度。如下图所示: 2. 解析 实际上 SafeArea 也是一个 StatelessWidget,它本身不用主动去更新 ui,它仅仅是包裹了一层 Padding 和 MediaQuery.removePadding 的容器。它外层的 Padding 填充了被异形屏所遮挡的部分,而内部的 MediaQuery.removePadding 则是把这部分的填充距离给去掉,这样就保证了 SafeArea 包裹的子元素不会被异形屏所遮挡,且后续其 child 获取外部 Padding 的时候就不会再重复获取多余的 Padding 了。 SafeArea 的属性如下: 属性说明默认值top左侧是否需要有安全距离falseleft左侧是否需要有安全距离falseright左侧是否需要有安全距离falsebottom左侧是否需要有安全距离falseminimum最小填充距离EdgeInsets.zeromaintainBottomViewPadding是否需要底部视图填充falsechild子元素Widget const SafeArea({ super.key, this.left = true, this.top = true, this.right = true, this.bottom = true, this.minimum = EdgeInsets.zero, this.maintainBottomViewPadding = false, required this.child, }); 3. 示例和效果图 如下,是一个没有设置安全距离的页面,可以看到,由于没有设置安全区域,所以页面顶部的一部分文字被状态栏给遮挡了: Widget build(BuildContext context) { return Scaffold( body: Container( alignment: Alignment.

flutter学习-day21-使用permission_handler进行系统权限的申请和操作

文章目录 1. 介绍2. 环境准备2-1. Android2-2. iOS 3. 使用 1. 介绍 在大多数操作系统上,权限不是在安装时才授予应用程序的。相反,开发人员必须在应用程序运行时请求用户的许可。在 flutter 开发中,则需要一个跨平台(iOS, Android)的 API 来请求权限和检查他们的状态,这时候就需要使用 flutter 插件permission_handler来帮忙了。它允许您请求和检查权限。你还可以打开设备的应用程序设置,以便用户授予权限。 2. 环境准备 项目更目录打开运行窗口,安装插件: flutter pub add permission_handler 当在运行时请求权限时,你仍然需要告诉操作系统你的应用程序可能会使用哪些权限。这需要在 Android 和 ios 特定文件中添加权限配置。 2-1. Android 检查你的 android 目录下的 gradle.properties 文件,是否有下列代码: android.useAndroidX=true android.enableJetifier=true 检查你的 android/app 目录下的 build.gradle 文件,是否有下列代码: android { compileSdkVersion 33 # 省略代码…… } 添加需要的权限到 android/app/src/main 目录下 AndroidManifest.xml 文件 <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 网络权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 写权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!

Excel formulas 使用总结(更新中)

最近在写task assigment的时候学习到的,记录下。 首先它所有需要写赋值formuls都要用 = 开头 相等赋值 =a1 这个就代表这格的数据和a1是一样的。如果希望其他格和它相同的逻辑,可以直接复制该cell或者直接拖动该cell右下角,他会自动进行匹配,如果你往下拖动他会自动变成=a2,=a3以此类推,之后提到的都可以这样操作,就不赘述了。 相加赋值 =sum( 首先这个是半成品,输入到这个的时候就可以用鼠标手动去选择具体哪些单元格了,可以直接拖动框选,也可以按住ctrl的点击复选。 重要的是选择完成之后敲击回车进行确认。 加减乘除或者一些高级运算都是差不多了,举一反三就行了 如果想进行复杂运算就可以这样 直接拼接不同的运算函数就行了 =SUM(C16:G16)-SUM(A1) IF判断 =IF(SUM(M12)=0,"",N11-M12) 这个就是判断如果m12如果等于0就显示n11-m12的值,否则就是“”,为什么要用对单个值sum函数呢,因为如果他是空值的情况,使用一次sum会自动转成0,这样就可以方便进行判断,不用写OR再去进行判空了 Nan值 =NA() 赋nan值使用NA()来进行的,展示会成 #N/A 固定cell引用 =SUM(C16:G16)-SUM(A1) 在Excel中固定单元格引用,使得拖动公式时,某些单元格不会随着位置变化而改变 例如这个情况,在引用在其他cell中时候,我们只想拖动的时候让他自动修改A1的值但是保持sum(C16:G16)不变。 这种情况下就需要用 $ 来做固定引用 例如 =SUM($C16:G16)-SUM(A1) 意思是固定C16中的C列,不管怎么拖动,这个C列不会变,但是16可能会变 =SUM($C$16:G16)-SUM(A1) 这种方式就是C 和 16 都不会变 =SUM(C$16:G16)-SUM(A1) 这个方式就是第一个16不会变,C可能会变。 除了手动添加$,还可以选中单元格之后按F4,按一下就是$c$16固定引用,再按一下就是c$16,再按一下就是$c16,再按一次返回c16不固定引用了。 暂时就学到这么多,持续更新...

自己写的Js有序的Map, 并且支持Key为对象

var map = newMap(); map.put({name:"张三"}, 23); map.put("李四", 24); map.get({name:"张三"}); map.remove({name:"张三"}); map.put("张三", 23); var objArray = map.allList("name", "age");// [{name: "李四", age: 24}, {name: "张三", age: 23}] map.values(); // [24, 23] map.keys();// ["李四", "张三"] map.has({name:"张三"});// false map.size();// 2 var obj = map.all(); // {"李四": 24, "张三": 23} map.clear(); map.size();// 0 map.getIndex({name: "张三"}); // -1 // 创建一个Map function newMap() { var objectMap = new Object(); objectMap.mapArray = []; objectMap.sortIndexArray = []; objectMap.getKeyStr = function(key) { var nKey = key; if (typeof key === 'object') { var obj = this.

【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)

就是看到了好些教程有些繁琐,我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本,可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中创建一个目录,例如/usr/local/arm,然后将下载好的gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz复制到该目录下。在该目录中对交叉编译工具进行解压,使用命令sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz。解压完成后会生成一个名为gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf的文件夹,这个文件夹里面就是你的交叉编译工具链。设置环境变量,使交叉编译工具链生效。就是编辑你的~/.bashrc文件,使用命令添加环境变量export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin,然后使用命令source ~/.bashrc使其立即生效,或者重新启动你的系统。验证交叉编译工具链是否安装成功,使用命令arm-linux-gnueabihf-gcc -v查看版本信息,如果显示4.9.4,说明安装成功。 编译(比如C文件):使用如 arm-linux-gnueabihf-gcc -o test test.c命令编译生成C语言可执行文件

鸿蒙系统的开发框架

鸿蒙系统的开发框架主要是HarmonyOS应用框架(HarmonyOS Application Framework),它提供了一套丰富的API和工具,帮助开发者构建鸿蒙系统上的应用。以下是鸿蒙系统的主要开发框架,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.分布式能力框架(Distributed Capability Framework): 允许应用在多个设备之间共享数据和能力。开发者可以使用分布式能力框架,实现设备之间的协同工作,创建更为智能的多设备应用。 2.分布式UI框架(Distributed UI Framework): 提供了分布式界面的支持,允许应用在不同设备上展示和交互。分布式UI框架允许开发者创建适应多种设备和屏幕的用户界面。 3.分布式数据管理框架(Distributed Data Management Framework): 允许应用在多设备间共享和同步数据。该框架使得在不同设备上实现数据的一致性和同步成为可能。 4.能力引擎(Ability Engine): 负责应用的启动、生命周期管理和资源分配。能力引擎使得应用能够在设备之间灵活切换,并优化资源的使用。 5.分布式安全框架(Distributed Security Framework): 提供了分布式安全服务,确保数据在设备之间的传输和共享是安全的。该框架支持加密和身份验证等安全机制。 6.设备发现和连接框架(Device Discovery and Connection Framework): 提供设备发现和连接的支持,使得设备能够快速发现和建立连接。这对于分布式应用的协同工作至关重要。 7.图形引擎(Graphic Engine): 负责处理应用的图形渲染,提供丰富的图形功能。图形引擎是鸿蒙系统中的一个核心组件,支持图形的绘制和渲染。 8.多媒体框架(Multimedia Framework): 提供了多媒体处理的功能,包括音频、视频和图像处理。多媒体框架允许开发者创建丰富的多媒体应用。 9.分布式消息通信框架(Distributed Message Communication Framework): 提供了设备之间消息通信的支持,使得应用能够实现实时通信和数据传输。 10.分布式调试框架(Distributed Debugging Framework): 支持分布式调试,允许开发者在多设备上进行调试操作,帮助定位和解决问题。 11.鸿蒙IDE(HarmonyOS IDE): 集成开发环境,提供了丰富的工具和资源,方便开发者创建、调试和发布鸿蒙应用。 这些框架共同构成了鸿蒙系统的应用开发生态,为开发者提供了丰富的工具和API,使得开发者能够更轻松地构建分布式、多设备的应用。开发者可以根据具体的应用需求选择合适的框架进行开发。

2023年_大模型相关的热门开源工具

1 引言 在 OPENAI 发布 ChatGPT 后的一年里,整个人工智能领域经历了迅猛的演变,对写作、编程等多个领域的工作方式产生了深刻的影响。2023 年整个行业都将聚焦于自然语言处理大模型,进行了大量实验和尝试,积累了宝贵的经验,或许明年将是人工智能应用大规模落地,真正产生价值的时刻。 开源项目可以被视为一个广阔的实验场,实验展示了许多可能性和成果,以及关注的热点。虽然并非全部应用场景,但从中我们可以窥见一二。 本文以 GitHub 上的开源项目为切入点,来看看大模型相关的高评分开源工具。旨在了解社区最关注的项目,这些工具实现了哪些功能,采用了什么样的技术,可能的盈利模式,以及它们当前仍然面临的挑战。 2 高星和热榜 梳理热门榜单和热门关键字搜索中的 topN 开源项目,深入了解社区对各个领域的关注、不同思路的探索,以及实现方法的多样性。 2.1 Python 中文新秀榜 GitHub-Chinese-Top-Charts(231204)中文新秀榜 ->软件类 ->Python 榜: 地址 binary-husky/gpt_academic 48.3k Star 学术 GPTTHUDM/ChatGLM-6B 36k Star 开源中英双语 LLMacheong08/ChatGPT 27.5k Star ChatGPT 反向工程,早期调用方法,已停更svc-develop-team/so-vits-svc 21k Star 唱歌合成引擎(与 LLM 无关)chatchat-space/Langchain-Chatchat 19k Star 基于 Langchain 与 ChatGLM 等模型的本地知识库问答OpenBMB/ChatDev 17k Star 利用大模型编写应用程序的框架ymcui/Chinese-LLaMA-Alpaca 15.5k Star 中文 LLaMA&Alpaca 大语言模型训练部署THUDM/ChatGLM2-6B 14k Star 开源中英双语 LLMGaiZhenbiao/ChuanhuChatGPT 13.4k Star 川虎 GPT Web 应用聊天界面,解决了搜索,本地文件问答等问题,界面简捷好用lss233/chatgpt-mirai-qq-bot 10.3k Star 聊天机器人,支持多种模型,以及多种聊天软件 可以看到,Python 新秀榜中 top10 中 9 个都与自然语言大模型相关。

python软件包管理和环境管理神器conda的使用详解

作者:程序员CKeen 博客:http://ckeen.cn 长期坚持做有价值的事!积累沉淀,持续成长,升维思考!希望把编码作为长期兴趣爱好😄 我们知道python2版本已于2020年1月1日终止维护, 现在都需要切到python3的版本, 那么之前python2的版本的程序需要维护, 那么我们经常就需要在python2和python3版本之间进行切换, 今天我们将通过 Conda 这一个工具就可以实现 Python包的管理。 1. Conda介绍 Conda是一个开源的、跨平台、与语言无关软件包管理和环境管理工具,它可以在Windows、macOS和Linux上运行。Conda的设计目标是简化软件包和依赖项的管理和部署过程。Conda 使环境成为一等公民,甚至可以轻松地为 C 库创建独立的环境。官方介绍可以支持Python, R, Ruby, Lua, Scala, Java, JavaScript, C/ C++, FORTRAN等语言包的管理。 Conda 完全用 Python 编写。并且是 BSD 许可的开源软件。 在本篇文章中,还是先重点关注 conda 的版本管理部分。 我们使用基本环境: 操作系统(OS):MacOs Catalina 10.15.7Conda 版本:23.11.0Python 3.11.5 在使用conda之前,我们有必要先区分一下Conda、Miniconda 和 Anaconda的区别 1.1 Conda、Miniconda 和 Anaconda的区别 Conda、Miniconda和Anaconda是与Python环境和软件包管理相关的三个相关但不同的概念: Conda: 定义:Conda是一个开源的包管理系统和环境管理系统。功能:它能够安装、管理和卸载软件包,并创建、导出、列出和移除环境。特点:Conda不仅限于Python,它可以管理任何语言的软件包。 Miniconda: 定义:Miniconda是一个轻量级的发行版,只包含Conda、Python和一些基本的工具。功能:Miniconda提供了一个最小化的Conda环境,使用户能够根据需要自定义安装所需的软件包。特点:由于是精简版,安装时只包含基本组件,用户可以根据自己的需求逐步添加所需的工具和库。地址:https://docs.conda.io/en/latest/miniconda.html) Anaconda: 定义: Anaconda 是一个更大的发行版,包含了 Conda、Python 以及一系列用于科学计算、数据分析和机器学习的预安装软件包(例如 NumPy、Pandas、Scikit-learn 等)。功能: Anaconda 主要用于提供一个完整的数据科学工具链,使用户可以快速搭建数据科学环境而无需手动安装每个软件包。地址:https://repo.anaconda.com/ 基于以上Conda、Miniconda和Anaconda的区别, 这里我们主要使用Miniconda进行使用讲解 2. Conda的安装 因为这里我们使用miniconda, 所以我们首先看下它需要的python环境, python版本可以参考以下链接:

我在CSDN的第一个1000粉

目录 一、这该死的才华,持续输出满足了我的表达欲 二、感谢CSDN,giszz是被新手福利期养大的 三、78篇原创,我都写了啥 3.1 在AIGC方面 3.2 在产品设计方面 3.3 在项目管理方面 3.4 个别的动态 四、改不了的臭毛病,忍不住说说涨粉的几个心得 4.1 提高质量分 4.2 评论发红包 4.3 流量券选好用的时间 4.4 起好标题,跟好热点 4.5 可以适当用AIGC 五、你又聪明,又好看,为什么要关注我 一、这该死的才华,持续输出满足了我的表达欲 今天,超过1000个粉丝了,很开心,正好有总结2023年收获的话题,顺势来参加一下。 现在我的全站排名是18666名,粉丝是1068个,这数字也太吉利了吧!总访问量超过5个W,这里是包含了动态的,实际文章的阅读,是3个W。 2023年,比较开心的就是在9月25日那天,不知道哪根神经搭错,翻到自己在CSDN的老账号,时隔22年,开始落笔写第一篇博客。名字是《注册CSDN应该有20年了吧!》注册CSDN应该有20年了吧!-CSDN博客 开始只写了几行字,感慨了一番,后来知道有文章质量分,于是回去编辑了几回。 之后9月写了4篇,10月写了10篇。9月的前3篇,都是拼凑的,后来发现有新手福利期,居然给发流量券!于是开始不停的写。 作为一个22年的老新手,给自己的博客内容,做个什么定位呢,思来想去,放到了人工智能、项目管理两个比较大专题上。由于自己一直也处于产研一体的工作状态或者管理模式当中,因此也兼顾一些产品设计理念和技术的主题。人工智能,着眼点放在了比较火爆的AIGC领域。确实有几篇文章,自己还是挺满意的,100%的原创,而且选题也有点意思,后面会给出链接。 到2023博客之星评选的最后一天,12月17日,我应该是刚好入围博客之星,大概是排到了98、97名的样子,好危险,哈哈!这几天都评选中,30日就公布了,不知道能不能拿到那个实体的铭牌,还挺想得一个的。注册CSDN22年的老同志,是不是还挺幼稚。 我这个人吧,和所有的老同志一样,都有好为人师的习惯,爱表达,爱输出,其实我深深的知道,想要不油腻,就不要总想教育别人。 可是这该死的才华,该死的表达欲呀!让我下笔就停不下来,我也没有办法。 二、感谢CSDN,giszz是被新手福利期养大的 CSDN的风格,和我一开始注册时,还是区别挺大的,不过界面居然没有大的改变,很多东西还有点熟悉的影子。巨大的变化,就是有了AIGC的创作助手。这个东西,我也经常用,有几篇文章,故意是用AI来写的,我也都有标明。 可以说,如果没有新手福利期,我肯定不会坚持的。也许写一篇,就拉倒了。因为你几乎是没有流量的。阅读数可能就是1位数、2位数。当然,也是和文章的质量有关系,开始我不知道CSDN的推荐模式,和抖音等短视频平台,是不是相同,比如是不是先给500基础曝光,看5秒完播率,看互动,看赞评比等。后来我看了文章质量分的计算,从几个版本的迭代趋势上来看,博客的推荐算法和导向,基本也是如出一辙的。 有了流量券的加持,总之还是开心很多,因为真的会有阅读数,基本上1000次展现,会有100次阅读,3-5个点赞,加2-3个粉丝这样。这个展现的逻辑,就和西瓜视频差不多,展现了不一定有阅读量。作为短视频,就是要看你的标题、封面,后期看互动,作为文章博客,当然就是头图、标题了。 每天完成打卡,获得流量券,找个好的时间,给用掉,看消息,等着涨几个粉丝,这几乎就是我这些天的创作标准动作。粉丝的点赞、评论,就是我创作的源泉。被小助手pick,来个评论,翻个牌子,一开始也开心好几分钟。 还有那些徽章。 我这个勤写标兵,转眼就LV10了,这些东西也很有趣呀! 对了,我大众点评是LV7,这个级别还行吧,我是不是很无聊。 三、78篇原创,我都写了啥 转眼78篇了,除了我自己都觉得害臊的几篇凑数的水货,大多还是用心写的。特别是AIGC的几篇原创—— 3.1 在AIGC方面 我写了提示词系列。我在百度文心一言的发现里,也有高访问量的提示词应用。比如“创业劝退大师”,梦的解析什么的。提示词还是有些心得,有兴趣的小伙伴,可以翻翻看看。 【AIGC】一起学习prompt提示词(1/4)-CSDN博客 这个系列有4篇,我就不一一重复了。 想了解国内都有哪些大模型的,可以看这篇: 群模乱舞,AI大模型盛开,国内大模型盘点_ai大模型有哪些-CSDN博客 很多人都是实用主义,职场人,最想干的,就是做PPT了,于是我写了这篇,研究了如何生成PPT效果最好: 【AIGC】如何让AI一键生成PPT_aigc 用到ppt-CSDN博客 我最引以为豪的,就是这2篇比较有趣的原创了: 【AIGC】用货拉拉拉不拉拉布拉多的梗调(ce)戏(shi)AI大模型,3.5和4.0的反应差别巨大!-CSDN博客 有3000多的阅读。 还有这个: 【AIGC】猴子拍照版权是谁的:一文读懂AIGC和版权问题_猴子拍照享不享有著作权-CSDN博客 讨论了版权问题,这篇是我第一次上热门,最高到全站第3!,这个好成绩,我兴奋了半天!哈哈! 洗稿、洗图,也是刚需,于是有了这2篇: 【AIGC】今天想用AI“洗个图”,失败了,进来看我怎么做的-CSDN博客 【AIGC】接着昨天的AI“洗图”骚操作,继续调戏国产大模型-CSDN博客 这个真是一个字一个字的写出来,很有意思,我觉得也有一定的实用性。 讨论了大量的文心一言,我其实会员都是自己买的,可真没有代言啊! 3.2 在产品设计方面 比较经典的就是这篇,写了快2万字的: 【giszz笔记】产品设计标准流程【合集】【1.79 万字】-CSDN博客

Security ❀ HTTP协议头部字段梳理

文章目录 1. Accept2. Accept-Charset3. Content-Type4. Accept-Language5. Content-Language6. Content-Length7. Content-Location8. Content-MD59. Date10. Age11. Expires12. ETag13. If-Match14. If-None-Match15. Allow16. Connection17. Expect18. From19. Host20. Last-Modified21. If-Modified-Since22. If-Unmodified-Since23. Range24. Content-Range25. If-Range26. Location27. Max-Forwards28. Pragma29. Referer30. Retry-After31. Server32. User-Agent33. Transfer-Encoding34. Upgrade35. Vary36. Via37. Warning38. WWW-Authenticate39. Authorization40. Proxy-Authenticate41. Proxy-Authorization42. ETag vs Last-Modified vs Expires43. Cache-Control 1. Accept 表示客户端期望服务器返回的媒体格式。客户端期望的资源类型服务器可能没有,所以客户端会期望多种类型,并且设置优先级,服务器根据优先级寻找相应的资源返回给客户端。 # 注意:先逗号分割类型,再分号分割属性 Accept: audio/*; q=0.2, audio/basic # q的取值范围是 (0-1] ,其具体值并没有意义,它仅用来排序优先级,如果没有指明q,则q默认为1代表最高优先级。 表示audio/basic类型的资源优先返回,如果没有则返回人意类型的audio资源。 2. Accept-Charset 表示客户端期望服务器返回的内容的编码格式。它同Accept头一样,也可以指定多个编码,以q值代表优先级。 # 注意:先逗号分割类型,再分号分割属性 Accept-Charset: utf8, gbk; q=0.

CSDN-2023年度总结:岁月如故

题记 花有重开日,人无再少年。 不须长富贵,安乐是神仙。 关于成长的那些事 我在CSDN的2023 古人学问无遗力,少壮工夫老始成。 人过留声,雁过留鸣 获得感满满 不断的积淀自己,方能厚积薄发。在CSDN上写作已经7年,第一篇博客时,是想写一系列的博客的,想了很多,但没写,最终只写了一篇就停滞了许久。 后来从2021年开始逐渐热爱用博客记录技术,从2021年的29篇,到今年的205篇,对于博客撰写的投入程度是逐渐增加的。 年份博客数量2021292022902023205 在2023年终于突破20w+浏览,认证成为一名CSDN认证博客 专家 给大家汇报下我在CSDN的现状: 个人主页数据 个人博客数据 浏览量还是可以的,但浏览量明显高于评论数等,会压缩其他数据,勾选去掉评论数如下,12 10号这天什么情况,这么多人给我评论。 博客带给我什么 参加CSDN的活动,大概累计获得了1600元的京东卡,很开心,但花的也特别快。 亚马逊的re:Invent大会、TableAgent(后文还会说)、腾讯云音视频 1W+的粉丝, 原本遥不可及,没想到,一步步的终会走到 写作的习惯: 有时为了每天2篇博客,很用力的把自己的工作内容进行萃取。 但后来,萃取已经不够了,就找了自己关注的主题,然后进行CV缝合,。 作为一个有一点点尊重知识产权的并且愿意知识付费的我,我会把参考的链接放在文章的顶部,并确保博客的良好排版以及阅读性。期望未来有一段时间,可以基于自当时缝合怪进行二次创作,把缝合的博客嵌入自己的理解,梳理程自己的体系。 TableAgent博文征集活动的收获 《劝学》唐·孟郊 击石乃有火,不击元无烟。 人学始知道,不学非自然。 万事须己运,他得非我贤。 青春须早为,岂能长少年。 内容第2,拉票落后,可怜我的ipad 这次比赛,评委对我的评分是排名第2的,但因为没有主动拉票导致排到了第8。如下 成绩分布 心得-关于主动规则真诚表达积累与分享 1.要主动争取,对于比赛,或是其他的事情。尽力是让自己的心安,取得成绩是对自我的交代。 2.要研究规则,在规则内做事情就要认真对待规则,把规则要求做到最好。 3.要真诚对待他人,这次活动,我认真对待自己的职业,不索取他人为我的利益而付出些许时间(尽管就是评价与点赞),这点让我心安,但也让我错失了一等奖的IPAD。尽管如此,这次的心得,反而更重要。💯。 4.用于表达,不用不好意思,下次再有类似的活动,我会更主动的让朋友们帮我下,不好意思这件事是没必要的,喜欢就表白、被拒就微笑岂不洒脱。 5.要积累,没有很多个日子的持续写作,也就没有这次机会,也就不会有评委的高分,终身学习,塑造个人光环。 6.要分享,自己获得了收益,要与支持者朋友分享,独乐乐不如总乐乐。谢谢我这些可爱的同学们,一听我要发红包,就第一时间把我拉进了友谊群!!😄 某某工作的事情 天行健,君子以自强不息。地势坤,君子以厚德载物 背景 我的一个朋友-某某,不是我,你懂的😄😢。 某某是我的一个朋友,快35岁了,从事IT行业,一次一个央企联系上他,做大数据和数据治理,问他去不去,钱多事少离家近。工作内容某某很感兴趣,稳定的未来也是人类的固有追求。 … 以下省略1w字。 … 最终因为现公司待某某不错,因为某某对工作固有的始终感,某某不可以因为个人利益损害团队利益的朴素想法,某某放弃这个机会。 心得-关于主动持续学习和感恩之心 1.要主动做出选择,不仅仅是被动的选择。很多时候,等待事情发生再做出选择是一个很好的策略,但有些事情,要主动选择,要主动承担,要主动争取,要主动选择,要主动舍去。 2.要努力提升自己的能力,经常和朋友说,只要认真的去努力一年,可能就会成为一个行业的小有水准的专家。我对这句话是信服的,知行合一,让自己成为能为社会为朋友们解决问题的专家,以利他之心行利他之事。 3.要感谢善待自己的人。有很多人因为种种原因,善待了自己,要以德报德,多些感激,天地自然款。 python代码人生 参考:https://zhuanlan.zhihu.com/p/571341359 from rich import print print('神奇的励志公式'.center(48, '*')) print(':raccoon:' * 20) print('每天进步一点点 VS 每天退步一点点'.

HTB Sau Maltraill-v0.53 CVE-2021-3560

htb | sau 使用nmap扫描端口 nmap -sV -sC -v -oN Sau 10.10.11.224 # Nmap 7.93 scan initiated Mon Dec 25 08:56:25 2023 as: nmap -sV -sC -v -oN Sau 10.10.11.224 Nmap scan report for 10.10.11.224 Host is up (2.4s latency). Not shown: 997 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 aa8867d7133d083a8ace9dc4ddf3e1ed (RSA) | 256 ec2eb105872a0c7db149876495dc8a21 (ECDSA) |_ 256 b30c47fba2f212ccce0b58820e504336 (ED25519) 80/tcp filtered http 55555/tcp open unknown | fingerprint-strings: | FourOhFourRequest: | HTTP/1.

【性能优化】EFCore性能优化(二)-禁用实体跟踪

阅读本文你的收获 了解EF Core的实体跟踪机制及其对性能的损害学习EF Core禁用跟踪机制的应用场景 在【性能优化】EFCore性能优化(一)中我分享了EF Core在使用上需要注意的地方,有: IEnumerable和IQueryable两种接口要充分理解,区别使用。EF默认自带实体跟踪机制,只读查询用非跟踪式查询可以提高效率。用AsNoTracking方法。EF对批量操作的支持不太高效,所以像批量添加、删除、修改等操作的执行效率,要注意分析与改进。对于一些复杂查询,EF帮我们生成的SQL语句有时是低效的,这时可以让EF直接执行原生SQL语句,或者改用ADO.NET方式去执行。 接着上一篇,本次继续分享EF的实体跟踪机制,及如何禁用跟踪机制。 一、EF Core的实体跟踪机制 EF Core的实体跟踪机制是一种在应用程序中跟踪由EF(实体框架)管理的实体对象的方式。它能够自动检测对实体对象的更改,并将这些更改同步到数据库中。 1.1 实体跟踪机制什么情况下生效? 实体跟踪机制在以下情况下生效: 当通过查询从数据库中检索实体对象时,实体框架会自动跟踪这些对象的状态。当应用程序对实体对象进行更改时,实体框架会自动检测这些更改,当你调用SaveChanges方法时,EF Core会将这些更改应用到数据库中。 以下案例将创建一个方法来演示实体跟踪: using(var context = new BlogContext()) { // 加载一个博客及其所有帖子(开始跟踪) var blog = context.Blogs .Include(b => b.Posts) // 使用 Include 方法确保相关实体的加载,这会导致实体被 EF Core 开始跟踪。 .FirstOrDefault(b => b.BlogId == 1); // 假设我们修改了某些属性值,例如博客的 URL 和帖子的标题。 blog.Url = "http://example.com/new-url"; blog.Posts[0].Title = "New Post Title"; // 修改了第一个帖子的标题。 //当我们提交更改时,EF Core 会自动检测到这些更改并生成相应的 SQL 语句来更新数据库。这是因为我们在加载时开始跟踪了这些实体。 context.SaveChanges(); // 这将提交所有更改到数据库。 } 1.2 实体对象的状态有哪些? 实体对象的状态有以下几种:

多模态医学图像数据集

多模态医学图像数据集 多模态医学图像数据集是指包含不同模态(如CT、MRI、PET等)的医学图像的数据集,它们可以提供更多的信息和视角,有助于医学图像分析和诊断。 MedMNIST:这是一个包含10个医学公开数据集的集合,共计包含45万张28*28的医学多模态图片数据,可用于解决医学图像分析相关问题。 BraTS:这是一个用于脑肿瘤分割的数据集,包含多模态的MRI图像,如T1、T1c、T2和Flair,以及对应的肿瘤标注。 IXI:这是一个用于人类脑部分析的数据集,包含多模态的MRI图像,如T1、T2和PD,以及一些人口统计学和临床信息。 LIDC-IDRI:这是一个用于肺结节检测和分类的数据集,包含多模态的CT图像,以及来自四位放射科医生的结节标注。 Medpix:由美国国立卫生研究院(NIH)维护,是一个包含超过5万张医学多模态图片和案例的数据库,涵盖了不同的疾病类型和部位,可用于教学和研究目的。 ISBI challenge:由国际生物医学成像研讨会(ISBI)举办,是一个包含多个医学图像分析任务和数据集的竞赛平台,其中有一些任务涉及到多模态医学图像的分割、配准和融合,如head and neck cancer segmentation、domain adaptation for segmentation等。 OASIS:由华盛顿大学和宾夕法尼亚大学合作,是一个包含超过2000个MR会话的数据集,包括T1w, T2w, FLAIR, ASL, SWI, time of flight, resting-state BOLD, and DTI等多种序列,可用于研究脑部的结构和功能。 Harvard Whole Brain Atlas:这是一个由哈佛大学医学院提供的医学图像数据集,包含了正常和病理的脑部图像,涵盖了MRI、PET、SPECT等多种模态。您可以在网站上浏览或下载这些图像,也可以使用在线的图像融合工具进行图像融合的实验。 Multimodal Brain Tumor Image Segmentation Benchmark (BRATS):这是一个用于脑肿瘤图像分割的数据集,由MICCAI 2012-2019的BRATS挑战赛提供。该数据集包含了来自不同机构和扫描仪的多模态MRI图像,包括T1、T1c、T2和FLAIR四种模态。您可以在网站上注册并下载这些图像,也可以参与BRATS挑战赛并提交您的分割结果。 Multimodal Brain Image Analysis (MBIA):这是一个用于多模态脑图像分析的数据集,由MICCAI 2011-2019的MBIA研讨会提供。该数据集包含了多种类型的脑图像,如MRI、fMRI、DTI、EEG等,涉及到多种脑疾病,如阿尔茨海默病、帕金森病、癫痫等。您可以在网站上注册并下载这些图像,也可以参与MBIA研讨会并提交您的分析结果。 Multimodal Biomedical Image Registration (MBIR):这是一个用于多模态生物医学图像配准的数据集,由MICCAI 2016-2019的MBIR研讨会提供。该数据集包含了多种器官和组织的多模态图像,如脑、心脏、肺、肝、胰腺等,涉及到CT、MRI、PET、超声等多种模态。您可以在网站上注册并下载这些图像,也可以参与MBIR研讨会并提交您的配准结果。 SynthRAD2023:This challenge aims to provide the first platform offering public data evaluation metrics to compare the latest developments in sCT generation methods.

【Linux--多线程同步与互斥】

目录 一、线程互斥1.1相关概念介绍1.2互斥量mutex1.3互斥量接口1.3.1初始化互斥量1.3.2销毁互斥量1.3.3互斥量加锁1.3.4互斥量解锁1.3.5使用互斥量解决上面分苹果问题 1.4互斥原理 二、可重入与线程安全2.1相关概念2.2常见线程不安全的情况2.3常见不可重入的情况2.4 可重入与线程安全的关系 三、死锁四、线程同步4.1同步概念与竞态条件4.2条件变量4.2.1概念4.2.2接口4.2.2.1初始化条件变量4.2.2.2销毁条件变量4.2.2.2等待条件变量满足4.2.2.3唤醒等待4.2.2.5改进分苹果 一、线程互斥 1.1相关概念介绍 临界资源: 多线程执行流共享的资源叫做临界资源临界区: 每个线程内部访问临界资源的代码,被称为临界区互斥: 任何时刻,互斥保证有且只有一个执行流进入临界区访问临界资源,通常对临界资源起保护作用原子性: 不会被任何调度机制打断的操作,该操作只有两态:要么完成,要么未完成 为什么要有线程互斥?下面模拟下4人分苹果的代码。 代码: #include<iostream> using namespace std; #include<pthread.h> #include<string> #include<vector> #include<unistd.h> const int NUM=4; class ThreadDate { public: ThreadDate(string name) { _name=name; } string _name; }; int Apples=100; void* GetApple(void* args) { ThreadDate* td=static_cast<ThreadDate*>(args); while(1) { if(Apples>0) { sleep(1); cout<<td->_name<<"get a apple,apple number"<<--Apples<<endl; } else break; } return nullptr; } int main() { vector<pthread_t> tids; vector<ThreadDate*> tds; for(int i=0;i<NUM;i++) { string name="

js获取url后的参数

前端页面传参主要是通过url实现:https://www.baidu.com?id=45&user=Jack 该链接,传递了id和user两个参数,那么我们需要获取到这两个参数。 方法一 1、封装一个方法 export const getUrlSingleParam = (name) => { const reg = new RegExp("(^|\\?|&)" + name + "=([^&]*)(\\s|&|$)", "i"); if (reg.test(window.location.href)) { return unescape(RegExp.$2.replace(/\+/g, " ")) } else { return false; } } 2、在需要接收参数的页面调用 let id = getUrlParam('id'); let user = getUrlParam('user'); 方法二 const params = new URLSearchParams(location.search); const id = params.get('id'); const user = params.get('user');

Docker安装mysql8.0并开启远程访问

环境: centos7 1. 拉取镜像 docker pull mysql:8.0.15 2. 构建镜像 新增挂载文件夹 mkdir -p /mydata/mysql/log mkdir -p /mydata/mysql/data mkdir -p /mydata/mysql/conf mkdir -p /mydata/mysql/mysql-files 新增mysql配置文件 cd /mydata/mysql/conf vim my.cnf 将如下配置复制到my.cnf文件并保存 [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci #忽略客户端信息并使用默认服务器字符集 skip-character-set-client-handshake #禁止DNS解析 skip-name-resolve #限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()传到哪个指定目录 secure_file_priv=/var/lib/mysql 构建 docker run -p 3308:3306 \ --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -v /mydata/mysql/mysql-files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:8.