关于程序员:如何解决跨域问题

<article class=“article fmt article-content”><h2>跨域</h2><h3>何为跨域?</h3><p>这就须要理解浏览器的同源策略,所谓同源是指 ‘协定+域名+端口’三者雷同,而跨域就是非同源的申请</p><h3>如何解决?</h3><ul><li><p>通过代理来防止,如应用nginx在后端转发申请,来防止前端呈现跨域</p><p>在server块中减少</p><pre><code># 容许跨域申请的域,*代表所有add_header ‘Access-Control-Allow-Origin’ *;# 容许带上cookie申请add_header ‘Access-Control-Allow-Credentials’ ’true’;# 容许申请的办法 GET POST等add_header ‘Access-Control-Allow-Methods’ *;# 容许申请的headeradd_header ‘Access-Control-Allow-Headers’ *;</code></pre></li></ul><ul><li><p>应用jsonp</p><p>浏览器的同源策略不蕴含&lt;script>、&lt;img>、&lt;iframe>这几个标签,而jsonp就是利用&lt;script>标签跨域个性来进行的跨域数据拜访,其原理是与服务器端约定好一个函数名,服务端接管到申请后,将返回一段JavaScript,在这段JavaScript代码中调用约定好的回调函数,并且将数据作为参数进行传递,当网页接管到这段JavaScript后,就会执行回调函数,数据就胜利传输到客户端了</p><p>其毛病是只反对GET申请</p></li><li><p>在web我的项目中配置过滤器或拦截器来解决跨域</p><pre><code class=“java”>httpServletResponse.setHeader(“Access-Control-Allow-Origin”, origin);httpServletResponse.setHeader(“Access-Control-Allow-Credentials”, “true”);httpServletResponse.setHeader(“Access-Control-Allow-Methods”, “POST, GET, OPTIONS”);httpServletResponse.setHeader(“Access-Control-Allow-Headers”, “Origin, X-Requested-With, Content-Type, Accept”);</code></pre><blockquote>https://zhhll.icu/2023/javaweb/问题/8.跨域/</blockquote></li></ul><p>本文由mdnice多平台公布</p></article>

March 5, 2024 · 1 min · jiezi

关于程序员:独立开发周记-552-月总结新-App-上架

2024,第九周,0226-0303间断两个月没有点外卖,持续放弃! 2月数据总结下载量(只统计极简时钟)App Store,降落 17.73%Google Play,降落 17.70%国内安卓市场,降落 0.51%支出App Store,降落 3.3%Google Play,降落 10.24%Admob,增长 14.18%国内安卓市场,增长 35.19%2 月份都在忙安卓端,极简时钟和极简日记都更新了版本,新 App 也上架了。然而极简时钟的下载量在 GP 上整个月都在降落,就很奇怪。相同的是国内安卓市场的付费率显著晋升,可能是受暑假快完结的影响吧。 极简便签极简系列 App 又添新成员。 极简便签的前身是安卓小哥的集体作品,然而因为国内越来越严苛的上架要求,这个 App 不得不下线了。为了让这个 App 可能持续经营上来,安卓小哥提议将这个 App 转到极简软件工作室名下,于是从去年 11 月就开始策划这个 App 的翻新和上架工作。 终于在上周所有准备就绪了,周四早晨在小米利用市场提交了。那天早晨,我做了个梦,梦见这个 App 上架后,国内安卓的支出一天超过了 3200……没想到的是周五上午就收到了上架的邮件告诉,竟然一次性就顺利通过了审核。之后也在华为、Vivo、Oppo 都提交了,然而这三家还在审核中。 上架第一天,有 30 多个下载,有一个付费,我感觉在齐全零宣传下,这样也算是不错了。 在批改极简便签的代码过程中,我发现一个最简略不过的赋值语句 val name = “text” 竟然呈现了编译谬误,而且其余的代码竟然都是以分号结尾的。再认真一看,原来这是一个 java 文件……这个 App 创立于 2016 年,过后 Kotlin 刚刚公布第一个版本,所以安卓小哥过后还是用 java 写的,而我没写 java 好多年了,一时居然茫然了。 北京一日往返上周日刚从北京回来,这周三又去了一趟,当日往返。 赞美高铁,早上从家八点登程,在北京吃了顿胡辣汤,还逛了逛商场,买了两件优衣库,又买了一堆零食,早晨七点多就到家了。 本文由博客一文多发平台 OpenWrite 公布!

March 4, 2024 · 1 min · jiezi

关于程序员:202434

neo4j下载地址:https://neo4j.com/download-center 启动服务器:neo4j.bat console2.jdk11装置 配置门路

March 4, 2024 · 1 min · jiezi

关于程序员:使用了智能表格后不禁感叹现在的生产力工具真牛

集体博客:无奈何杨(wnhyang) 集体语雀:wnhyang 共享语雀:在线常识共享 Github:wnhyang - Overview 办公三件套,我想不会有人没用过吧,如果你还停留在简略编辑、套模版的的办公三件套时代,那只能说你真的out了! 这周因为一些工作上的须要,关上WPS创立并应用了一下智能表格,不必不晓得,应用后属实是把我惊到了。 智能表格个性: 多人合作,这个性能其实不算是个性的,因为绝大多数表格都能够做到简略的在线数据库,高效的治理数据搭积木一样建利用,每个人都会用接下来我会从模版和本人的实际上重点介绍后两点! 模版创立 废话不多讲,间接从模版来看,这里抉择“团队工作项目管理看板”。 能够看到上面有5个sheet,依据图标可知其实有区别的,能够通过最左边的新建sheet看出,模版里是由1个数据表和4个利用形成的。此数据表和利用就是后面提到的“简略的在线数据库,高效的治理数据”和“搭积木一样建利用,每个人都会用”。 数据表首先从模版第一个sheet来看,也就是数据表。 其实它和一般的表格区别不是十分大,一眼看去感觉就是一般表格丑化了而已。其实不然,智能表格中,每一列叫做“字段”,字段能够先限度其类型,如上图开始日期模版中设置的是日期,在输出时就能够间接通过日历来抉择,所有输出最终都会标准成咱们设置的格局,这相比于一般的表格好太多了。字段类型十分丰盛,如果不是本人摸索着玩,可能永远不必了这么多格局,所以其余的本人摸索吧! 就这!!!就敢说是“智能表格”。 稍安勿躁,持续看。 从前一张图能够看到,智能表格工具栏排列在头部了,个别的如:字体色彩、填充色、筛选、排序、分组等,自是不用多讲。比拟有意思的是前面几个,这也是“智能表格”智能的体现。 自动化流程不晓得你们之前是否见过这个性能的,反正对我来讲是第一次,挺震惊的。 点开自动化流程,显示进去的也只是模版,想要自定义就能够本人编辑。 如下,设置触发条件和后续操作,相当简略,更多具体的能够查看自动化流程帮忙核心。 高级性能高级性能次要是两块:自定义打印和高级开发(脚本和定时工作)。 目前没有须要,还没尝试过,但肯定也很乏味。 利用从后面的图片和介绍,“智能表格”最乏味的中央还是应用“利用”。 就从此次“团队工作项目管理看板”模版来看吧。 “团队工作汇总”利用如上图,实质上是关联了“团队工作治理看板”数据表,而后通过“状态”字段分组实现的,不要感觉这个毫无意义,首先数据表和利用的数据是双向绑定的,其次数据表对利用是1对多的关系,也是说,通过一份数据表,咱们能够从不同角度创立咱们须要的的数据,而这些利用因为与数据表自身就是绑定的,所以所有利用其实也是对立的。 来看第三张表“负责人看板”利用,它与上一张“团队工作汇总”利用区别其实只是分组字段不同,但其实这是两个角度。作为我的项目管理员,我必定既心愿通过人物状态来看那些工作已实现/未实现/延期,又心愿通过工作负责人理解到每个人的工作执行状况,不便我进行人员/任务分配。 “延期工作预警”利用也差不多,上面的是“工作甘特图”利用。 从后面创立新sheet的截图能够看出,利用其实有很多分类的,其中甘特图算是比拟常见的吧,模版通过配置甘特图工夫线的开始/完结工夫就实现了上图的成果,非常简单不便。真就是“搭积木一样建利用,每个人都会用”。 总结最初的最初,我还是表白我的感触,智能表格真牛,当初的生产力工具真不错! 题外话,从程序员的角度来看,收集数据-存储数据-解决数据-展现数据。。。 写在最初拙作艰苦,字句心血,望诸君垂青,多予反对,不胜感激。 集体博客:无奈何杨(wnhyang) 集体语雀:wnhyang 共享语雀:在线常识共享 Github:wnhyang - Overview

March 4, 2024 · 1 min · jiezi

关于程序员:低代码与MES的结合万界星空科技低代码平台

疾速构建MES界面和性能低代码平台的可视化UI设计和逻辑解决开发能力,使开发者能疾速构建合乎企业理论需要的MES界面和性能。无论是数据采集、设施监控,还是品质治理、生产调度,都能通过简略的拖拽和配置实现。这升高了MES的开发难度,进步了零碎的可维护性和可扩展性。 实现与其余信息系统的连贯和协同低代码平台的扩大和集成能力,使MES能更容易地与企业其余信息系统进行连贯和协同。通过数据库集成,实现了生产数据的实时传输和共享;通过WebAPI集成,反对了与SaaS服务和古代软件系统的无缝对接。这意味着企业能在对立的平台上实现生产、销售、库存等各环节的数据买通和业务协同,进步了企业经营效率和竞争力。 反对二次开发和性能扩大低代码平台提供了丰盛的组件库和编程接口,反对企业依据理论需要进行二次开发和性能扩大。这让MES不仅能满足通用的生产治理需要,还能依据企业的非凡工艺和业务流程进行定制。通过二次开发,企业能够将本身的行业教训和业务需要融入MES零碎,造成具备企业特色的智能制作解决方案。 低代码与MES在智能制作畛域的利用前景个性化定制生产随着消费者需要的多样化,个性化定制生产成为制造业的发展趋势。低代码与MES的联合,使企业可能依据客户需要疾速调整生产打算和工艺流程,实现个性化产品的疾速交付。这不仅满足了消费者的个性化需要,还进步了企业的生产效率和经济效益。 柔性制造系统柔性制造系统是一种可能适应多种产品、多种工艺流程的生产模式。低代码与MES的联合,使企业可能依据市场需求灵便调整生产线和生产打算,实现多种类、小批量生产。这不仅进步了企业的生产能力和市场竞争力,还升高了生产成本和产品周期。工业物联网利用工业物联网是智能制作的重要组成部分,通过连贯设施、传感器等终端设备实现生产数据的实时采集和剖析。低代码与MES的联合,使企业可能疾速构建工业物联网利用,实现对设施状态、生产过程等的实时监控和预警。这不仅进步了生产效率和品质稳定性,还为企业的数字化转型提供了无力反对。论断与瞻望低代码与MES的联合为智能制作畛域带来了新的倒退时机和挑战。通过疾速构建MES界面和性能、实现与其余信息系统的连贯和协同以及反对二次开发和性能扩大等特点,低代码平台为制造业的数字化转型提供了无力反对。展望未来,随着技术的不断进步和市场需求的继续变动,咱们有理由置信这一联合将产生更多令人瞩目的成绩。

March 4, 2024 · 1 min · jiezi

关于程序员:子线程如何获取Request

子线程获取Request有时候在进行业务解决时对于一些对于业务不那么重要且对于返回后果无关的状况会开启一个新的线程进行解决,然而在开启新线程进行解决时发现无奈从RequestContextHolder中获取到以后的申请,取出来是null 这是因为RequestContextHolder中的信息都是存储在ThreadLocal中的,而ThreadLocal中的数据是应用线程进行查找的,不是该线程存储的,是无奈查找到的 private static final ThreadLocal<RequestAttributes> requestAttributesHolder = new NamedThreadLocal<RequestAttributes>("Request attributes");private static final ThreadLocal<RequestAttributes> inheritableRequestAttributesHolder = new NamedInheritableThreadLocal<RequestAttributes>("Request context");然而有时候子线程就是须要获取到以后申请怎么办呢? <!-- more --> 此时就须要将RequestAttributes对象设置为子线程共享的,在开启子线程之前 // 主线程先获取到申请信息RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();// 设置子线程共享RequestContextHolder.setRequestAttributes(requestAttributes,true);这是什么原理? public static void setRequestAttributes(RequestAttributes attributes, boolean inheritable) { if (attributes == null) { resetRequestAttributes(); } else { if (inheritable) { // 如果为true,则将信息存储在inheritableRequestAttributesHolder中 inheritableRequestAttributesHolder.set(attributes); requestAttributesHolder.remove(); } else { requestAttributesHolder.set(attributes); inheritableRequestAttributesHolder.remove(); } }}能够看到NamedInheritableThreadLocal重写了getMap办法 ThreadLocalMap getMap(Thread t) { return t.inheritableThreadLocals;}https://zhhll.icu/2020/javaweb/问题/7.子线程获取Request/本文由mdnice多平台公布

March 4, 2024 · 1 min · jiezi

关于程序员:AJAX-学习笔记Day4

写在后面本文为黑马程序员 AJAX 教程的学习笔记。本着本人学习、分享别人的态度,分享学习笔记,心愿能对大家有所帮忙。举荐先按程序浏览往期内容:\1. AJAX 学习笔记(Day1) \2. AJAX 学习笔记(Day3) ::: block-1 目录4 AJAX进阶 4.1 同步代码和异步代码4.2 回调函数天堂和 Promise 链式调用4.3 async 和 await 应用4.4 事件循环-EventLoop4.5 Promise.all 静态方法4.6 案例 - 商品分类4.7 案例 - 学习反馈:::4 AJAX进阶4.1 同步代码和异步代码P47:https://www.bilibili.com/video/BV1MN411y7pw?p=47同步代码:逐行执行,需原地期待后果后,才持续向下执行 异步代码:调用后耗时,不阻塞代码继续执行(不用原地期待),在未来实现后触发一个回调函数 例子:答复打印数字的程序是什么? JS 中有哪些异步代码? setTimeout / setInterval事件AJAX4.2 回调函数天堂和 Promise 链式调用回调函数天堂 P48:https://www.bilibili.com/video/BV1MN411y7pw?p=48概念:在回调函数中嵌套回调函数,始终嵌套上来就造成了回调函数天堂 毛病:可读性差,异样无奈捕捉,耦合性重大,牵一动员全身 axios({ url: 'http://hmajax.itheima.net/api/province' }).then(result => { const pname = result.data.list[0] document.querySelector('.province').innerHTML = pname // 获取第一个省份默认上司的第一个城市名字 axios({ url: 'http://hmajax.itheima.net/api/city', params: { pname } }).then(result => { const cname = result.data.list[0] document.querySelector('.city').innerHTML = cname // 获取第一个城市默认上司第一个地区名字 axios({ url: 'http://hmajax.itheima.net/api/area', params: { pname, cname } }).then(result => { document.querySelector('.area').innerHTML = result.data.list[0] }) })})Promise 链式调用 ...

March 4, 2024 · 3 min · jiezi

关于程序员:Golang动态高效JSON解析技巧

JSON现在宽泛用于配置和通信协议,但因为其定义的灵活性,很容易传递谬误数据。本文介绍了如何应用mapstructure工具实现动静灵便的JSON数据解析,在就义肯定性能的前提下,无效晋升开发效率和容错能力。原文: Efficient JSON Data Handling: Dynamic Parsing Tips in Golang打造无缝 Golang 体验,摸索动静 JSON 解析技术,实现最佳开发实际。 在 Golang 开发畛域,常常须要解析 JSON 数据。然而,如果值的类型不确定,是否有优雅的解决方案? 例如,当 JSON 字符串为 { "age":1 },而相应的构造体定义为字符串时,解析就会报错。 除了为构造体定义反序列化办法外,还有其余解决方案吗?明天,我将介绍另一种解决这一难题的办法。 Mapstructure 次要用于将任意 JSON 数据解码为 Go 构造。在解决 JSON 数据中的动静或不确定类型时,这将是一个弱小的工具,提供了灵便的解决方案,超过了僵化构造定义的限度。 实质上讲,它善于解析数据流,并将其映射到定义的构造中。 咱们通过几个例子来探讨如何应用 mapstructure。 1.惯例用处type Person struct { Name string Age int Emails []string Extra map[string]string}func normalDecode() { input := map[string]interface{}{ "name": "Foo", "age": 21, "emails": []string{"one@gmail.com", "two@gmail.com", "three@gmail.com"}, "extra": map[string]string{ "twitter": "Foo", }, } var result Person err := mapstructure.Decode(input, &result) if err != nil { panic(err) } fmt.Printf("%#v\n", result)}后果: ...

March 4, 2024 · 4 min · jiezi

关于程序员:DevOps自动化简单完整模板案例

案例阐明模仿场景:模仿common、user、大数据代码扫描根本流程:下载代码 -> 执行扫描命令指标:用最简略的形式演示残缺模板性能实现思路分三步: 编写project.yaml:形容我的项目、运行环境、编排模板、环境配置等信息定义模块:定义扫描代码的执行脚本执行:结构申请参数和执行利用模板的所有配置文件如下图: 编写project.yaml蕴含内容如图 project.yaml内容(编排模板另建文件编写,外围且较简单): kind: ProjectapiVersion: api/v1metadata: name: sonar # 项目名称spec: engine: sonar: | # 定义编排模板(个别较简单且外围,因而另建文件治理) %{readText "_projects/sonar.engine.yaml" | indent 6}% default: # 设置全局的默认属性 env: info: sonar: # 设置所有环境的默认sonar地址和token url: http://xxx:9090 token: xxx envs: prod: code: branch: master # 按环境设置默认分支 mvn: profile: prod # maven治理代码 设置profile为prod编排模板(_projects/sonar.engine.yaml)内容: first: &first # 扫描的第一局部代码 sonar: - name: commonsecond: &second # 扫描的第二局部代码 sonar: - name: usermetadata: annotations: notify-types: "group,personal" template: 'sonar:latest'spec: global: workflow: # 定义工作流信息 parallelism: 256 # 并发工作数 ttlStrategy: secondsAfterCompletion: 86400 # 完结工作流保留1天工夫 secondsAfterSuccess: 86400 # 完结工作流保留1天工夫 secondsAfterFailure: 172800 # 失败工作流保留2天工夫 kube: # 定义k8s的运行环境信息 affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: app operator: In values: - ops tolerations: - key: cattle.io/os operator: Equal value: linux effect: "NoSchedule" - key: app operator: Equal value: ops effect: "NoSchedule" @{- $part := $.params.annotations.part }@ stages: - name: "sonar" desc: "代码品质扫描" modules: @{- if eq $part "first" }@ <<: *first # 当代码仓库数量很多,而资源又无限时离开扫描 @{- else if eq $part "second" }@ <<: *second # 当代码仓库数量很多,而资源又无限时离开扫描 @{- else if eq $part "bigdata" }@ # 分类扫描:为大数据独立构建工作流 sonar: - name: bigdata @{- end }@定义模块蕴含内容如图: ...

March 3, 2024 · 3 min · jiezi

关于程序员:post请求体内容无法重复获取

post申请体内容无奈反复获取为什么会无奈反复读取呢? 以tomcat为例,在进行申请体读取时理论底层调用的是org.apache.catalina.connector.Request的getInputStream()办法,而该办法返回的是CoyoteInputStream输出流 public ServletInputStream getInputStream() throws IOException { if (usingReader) { throw new IllegalStateException(sm.getString("coyoteRequest.getInputStream.ise")); } usingInputStream = true; if (inputStream == null) { inputStream = new CoyoteInputStream(inputBuffer); } return inputStream;}在应用CoyoteInputStream进行读取时 public int read(byte[] b, int off, int len) throws IOException { // 如果流敞开,则抛出异样 if (closed) { throw new IOException(sm.getString("inputBuffer.streamClosed")); }// 如果曾经读完了,则返回-1 if (checkByteBufferEof()) { return -1; } int n = Math.min(len, bb.remaining()); bb.get(b, off, n); return n;}而流读取结束都会进行close,这个流close之后,close状态就置为了true,所以导致流无奈进行二次读取 <!-- more --> ...

March 3, 2024 · 1 min · jiezi

关于程序员:探索数字支付时代的便捷神器一文详解WildCard虚拟信用卡

在数字领取日益遍及的明天,虚构信用卡作为一种新兴的领取工具,正逐步走进人们的视线。其中,WildCard虚构信用卡凭借其便捷性和多功能性,曾经成为许多消费者和网络购物爱好者的新宠。本文将深入探讨WildCard虚构信用卡的特点、如何订阅海内软件,以及应用虚构信用卡时应留神的平安危险和技巧,带您全面理解这一领取新趋势。 一、什么是WildCard虚构信用卡? WildCard虚构信用卡是一种基于网络的信用卡服务,用户能够通过平台生成一个虚构信用卡信息,包含卡号、有效期、和平安码(CVV),以便于在线领取而无需应用实体信用卡。这样不仅大大加强了领取的灵活性,同时也无效晋升了交易的安全性。 二、WildCard虚构信用卡平台详解 WildCard虚构信用卡的操作平台通常具备用户敌对的界面,容许用户疾速生成和治理他们的虚构信用卡。用户注册后,能够设定信用卡的生产限额,甚至能够针对特定商户设置一次性应用的卡号,无效避免信用卡信息被盗用。 此外,许多Wildcard虚构信用卡平台还提供了估算管理工具,让用户能够更好地跟踪和管制他们的收入。这一点对于喜爱治理集体财务的用户来说是一个微小的加分项。 三、能够订阅哪些海内软件? WildCard虚构信用卡因为其寰球通用性,使得用户能够用它来订阅多种海内软件和服务。例如Claude,Apple Store,Google Play,Midjourney。因为某些服务可能会有地区限度,WildCard虚构信用卡帮忙用户逾越这一阻碍,享受全球化的数字生存。 四、虚构信用卡的特点及其危险 虚构信用卡最大的特点之一是安全性。用户在进行在线交易时,不须要走漏实在的信用卡信息,从而大大降低了信息被盗用的危险。另一方面,它的便捷性也是一个重要长处,因为用户能够随时生成和登记虚构信用卡。 然而,只管有许多劣势,虚构信用卡在应用过程中也可能存在危险。如技术故障可能导致交易失败,或者平台的安全性不够高,导致个人信息透露。因而,用户在抉择虚构信用卡服务时,必须认真钻研平台的安全性和可靠性。 五、WildCard虚构信用卡介绍 WildCard虚构信用卡作为市场上的佼佼者,提供了一系列操作简略和高安全性的服务。它容许用户设定不同的生产限额,并可能依据用户的需要生成工夫限度或特定商户限度的卡片。同时,它也提供实时的生产追踪和告诉,以及简略的在线收入统计性能。 六、虚构信用卡反对多平台充值的原理 虚构信用卡可能反对在不同平台上充值,是因为它建设在国内信用卡组织制订的寰球领取规范之上。当你应用WildCard虚构信用卡进行领取时,实际上是通过这些国际标准与不同的领取零碎进行沟通。因而,无论是美国的购物网站,还是欧洲的软件订阅服务,都能够应用同一张虚构信用卡进行领取。 七、虚构信用卡科普 对于不相熟虚构信用卡的用户来说,理解一些根本信息是十分有必要的。虚构信用卡实际上与传统信用卡在性能上并无太大差异,它们都能够用于在线领取、订阅服务等。不同之处在于虚构信用卡不存在物理状态,这也使得其更加难以被复制和盗用。 八、采纳虚构信用卡的实用功能 在采纳虚构信用卡时,有几个实用功能能够帮忙用户更加平安和便捷地应用它们。如一次性领取明码生成、主动填充卡信息、虚构卡号锁定、生产剖析等等。这些性能不仅为用户带来了更大的便当,更重要的是,它进步了在线交易的安全性。【全面攻略】WildCard虚构卡:开启国内服务订阅的神器!https://ai-sora-chat.com/#/handbook/Comprehensive-Strategy-Wi...总结来说,WildCard虚构信用卡作为一款全新的领取工具,不仅提供了传统领取形式所不能比较的安全性,其独特的便捷个性也使得它成为数字时代不可或缺的一部分。只管其在应用上存在肯定的危险,但只有咱们认真抉择牢靠的服务提供商,并且采取肯定的安全措施,这些危险是能够失去无效管制的。随着人们对数字领取需要的减少,虚构信用卡必将在将来领取畛域表演更加重要的角色。

March 3, 2024 · 1 min · jiezi

关于程序员:AJAX-学习笔记Day3

写在后面本文为黑马程序员 AJAX 教程的学习笔记。本着本人学习、分享别人的态度,分享学习笔记,心愿能对大家有所帮忙。举荐先按程序浏览往期内容:\1. AJAX 学习笔记(Day1) ::: block-1 目录3 AJAX 原理 3.1 XMLHttpRequest3.2 Promise3.3 封装简易版 axios3.4 案例 - 天气预报:::3 AJAX 原理3.1 XMLHttpRequestP33:https://www.bilibili.com/video/BV1MN411y7pw?p=33什么是 XMLHttpRequest: 关系:axios 外部采纳 XMLHttpRequest 与服务器交互 应用 XMLHttpRequest 步骤: 创立 XMLHttpRequest 对象配置申请办法和申请 url 地址监听 loadend 事件,接管响应后果发动申请 XMLHttpRequest - 查问参数 P34:https://www.bilibili.com/video/BV1MN411y7pw?p=34定义:浏览器提供给服务器的额定信息,让服务器返回浏览器想要的数据 语法:http://xxxx.com/xxx/xxx?参数名1=值1&参数名2=值2 案例:应用XHR携带查问参数,展现某个省上司的城市列表 const xhr = new XMLHttpRequest()xhr.open('GET', 'http://hmajax.itheima.net/api/city?pname=辽宁省')xhr.addEventListener('loadend', () => { console.log(xhr.response) const data = JSON.parse(xhr.response) console.log(data) document.querySelector('.city-p').innerHTML = data.list.join('<br>')})xhr.send()案例:地区查问 P35:https://www.bilibili.com/video/BV1MN411y7pw?p=35 XMLHttpRequest - 数据提交 P36:https://www.bilibili.com/video/BV1MN411y7pw?p=36步骤和语法: 没有 axios 了,咱们须要本人设置申请头 Content-Type:application/json,来通知服务器端,咱们发过来的内容类型是 JSON 字符串,让他转成对应数据结构取值应用没有 axios 了,咱们前端要传递的申请体数据,也没人帮我把 JS 对象转成 JSON 字符串了,须要咱们本人转换原生 XHR 须要在 send 办法调用时,传入申请体携带const xhr = new XMLHttpRequest()xhr.open('申请办法', '申请url网址')xhr.addEventListener('loadend', () => { console.log(xhr.response)})// 1. 通知服务器,我传递的内容类型,是 JSON 字符串xhr.setRequestHeader('Content-Type', 'application/json')// 2. 筹备数据并转成 JSON 字符串const user = { username: 'itheima007', password: '7654321' }const userStr = JSON.stringify(user)// 3. 发送申请体数据xhr.send(userStr)3.2 PromiseP37:https://www.bilibili.com/video/BV1MN411y7pw?p=37什么是 Promise ? ...

March 3, 2024 · 3 min · jiezi

关于程序员:探索数据结构解锁计算世界的密码

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:数据结构与算法贝蒂的主页:Betty‘s blog 前言随着应用程序变得越来越简单和数据越来越丰盛,几百万、几十亿甚至几百亿的数据就会呈现,而对这么大对数据进行搜寻、插入或者排序等的操作就越来越慢,人们为了解决这些问题,进步对数据的管理效率,提出了一门学科即:数据结构与算法 1. 什么是数据结构数据结构(Data Structure)是计算机存储、组织数据的形式,指相互之间存在一种或多种特定关系的数据元素的汇合。 下标是常见的数据结构: 名称定义数组(Array)数组是一种聚合数据类型,它是将具备雷同类型的若干变量有序地组织在一起的汇合。链表(Linked List)链表是一种数据元素依照链式存储构造进行存储的数据结构,这种存储构造具备在物理上存在非间断的特点。栈(Stack)栈是一种非凡的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作队列(Queue)队列和栈相似,也是一种非凡的线性表。和栈不同的是,队列只容许在表的一端进行插入操作,而在另一端进行删除操作。树(Tree)树是典型的非线性构造,它是包含,2 个结点的有穷汇合 K堆(Heap)堆是一种非凡的树形数据结构,个别探讨的堆都是二叉堆。图(Graph)图是另一种非线性数据结构。在图构造中,数据结点个别称为顶点,而边是顶点的有序偶对2. 什么是算法算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输出,并产生出一个或一组值作为输入。简略来说算法就是一系列的计算步骤,用来将输出数据转化成输入后果。 算法个别分为:排序,递归与分治,回溯,DP,贪婪,搜索算法 算法往往数学密切相关,就如数学题一样,每道数学题都有不同的解法,算法也是同理。3. 复杂度剖析3.1 算法评估咱们在进行算法剖析时,经常须要实现两个指标。一个是找出问题的解决办法,另一个就是找到问题的最优解。而为了找出最优解,咱们就须要从两个维度剖析: 工夫效率:算法运行的快慢空间效率:算法所占空间的大小3.2 评估办法评估工夫的办法次要分为两种,一种是试验分析法,一种是实践分析法。 (1) 试验分析法试验分析法简略来说就是将不同种算法输出同一台电脑,统计工夫的快慢。然而这种办法有两大缺点: 无奈排查试验本身条件与环境的条件的影响:比方同一种算法在不同配置的电脑上的运算速度可能齐全不同,甚至后果齐全相同。咱们很难排查所有状况。老本太高:同一种算法可能在数据少时体现不显著,在数据多时速率较快(2) 实践分析法因为试验分析法的局限性,就有人提出了一种实践测评的办法,就是渐近复杂度剖析(asymptotic complexity analysis),简称复杂度剖析。 这种办法体现算法运行所需的工夫(空间)资源与输出数据大小之间的关系,能无效的反馈算法的优劣。 4. 工夫复杂度与空间复杂度4.1 工夫复杂度一个算法所破费的工夫与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的工夫复杂度。 为了精确的表述一段代表所需工夫,咱们先假如赋值(=)与加号(+)所需工夫为1ns,乘号(×)所需工夫为2ns,打印所需为3ns。 让咱们计算如下代码所需总工夫: int main(){ int i = 1;//1ns int n = 0;//1ns scanf("%d", &n); for (i = 0; i < n; i++) { printf("%d ", i);//3ns } return 0;}计算工夫如下: $$T(n)=1+1+3×n=3n+2$$ 然而实际上统计每一项所需工夫是不事实的,并且因为是实践剖析,当n—>∞时,其余项皆可疏忽,T(n)的数量级由最高阶决定。所以咱们计算工夫复杂度时,能够简化为两个步骤: 疏忽除最高阶以外的所有项。疏忽所有系数。而上述代码工夫能够记为O(n),这种办法被称为大O的渐进表示法。如果计算机后果全是常数,则记为O(1)。 并且计算复杂度时,有时候会呈现不同状况的后果,这是应该以最坏的后果思考。4.2 空间复杂度空间复杂度也是一个数学表达式,是对一个算法在运行过程中长期占用存储空间大小的量度 。空间复杂度的示意也遵循大O的渐进表示法 让咱们计算一下冒泡排序的空间复杂度 // 计算BubbleSort的空间复杂度?void BubbleSort(int* a, int n){ assert(a); for (size_t end = n; end > 0; --end) { int exchange = 0; for (size_t i = 1; i < end; ++i) { if (a[i - 1] > a[i]) { Swap(&a[i - 1], &a[i]); exchange = 1; } } if (exchange == 0) break; }}通过观察咱们能够看出,冒泡排序并没有开拓多余的空间,所以空间复杂度为O(1).5. 复杂度分类算法的复杂度有几个量级,示意如下: ...

March 2, 2024 · 4 min · jiezi

关于程序员:AJAX-学习笔记Day1

写在后面本文为黑马程序员 AJAX 教程的学习笔记。本着本人学习、分享别人的态度,分享学习笔记,心愿能对大家有所帮忙。 ::: block-1 目录0 课程介绍1 AJAX 入门 1.1 AJAX 概念和 axios 应用1.2 意识 URL1.3 URL 查问参数1.4 罕用申请办法和数据提交1.5 HTTP协定-报文1.6 接口文档1.7 案例 - 用户登录1.8 form-serialize 插件:::0 课程介绍P1:https://www.bilibili.com/video/BV1MN411y7pw?p=1 1 AJAX 入门1.1 AJAX 概念和 axios 应用P2:https://www.bilibili.com/video/BV1MN411y7pw?p=2什么是 AJAX ? AJAX 是浏览器与服务器进行数据通信的技术 比方:浏览器网页中,应用 AJAX技术(XHR对象)发动获取省份列表数据的申请,服务器代码响应筹备好的省份列表数据给前端,前端拿到数据数组当前,展现到网页 怎么用 AJAX ? 先应用 axios 库,与服务器进行数据通信因为 axios 库语法简略,让咱们有更多精力关注在与服务器通信上,而且后续 Vue,React 学习中,也应用 axios 库与服务器通信再学习 XMLHttpRequest 对象的应用,理解 AJAX 底层原理axios 应用 语法: 引入 axios.js:https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js应用 axios 函数传入配置对象再用 .then 回调函数接管后果,并做后续解决axios({ url: '指标资源地址'}).then((result) => { //对服务器返回的数据做后续解决})案例: ...

March 2, 2024 · 2 min · jiezi

关于程序员:手把手教你免费用Flashduty做消息通知

为什么须要音讯告诉?如果有重要的状况产生,心愿能通过各种媒介告诉咱们。能够举几个例子: 家里燃气费没有了,心愿能有短信或者app告诉api频繁500报错,心愿及时感知,及时修复公司网站是https自签名证书,为了保障可用性,每天会有e2e测试保障证书的有效性,如果过期及时告诉为什么不必腾讯云/阿里云等云服务而用Flashduty?因为它们很贵且没有收费额度,还须要实名认证,相比之下Flashduty注册简略,不必实名认证,且有收费额度。 Flashduty反对哪些告警渠道?目前反对电话、微信机器人、企业微信、钉钉、飞书、短信、邮件、Slack、Zoom、Telegram等(更多形式在一直开发中)。上面就来看看具体如何操作吧,用不了 5 分钟。 1.注册Flashduty很简略,只须要关上 https://console.flashcat.cloud/login 收一个验证码就搞定了 2.设置告诉策略登录后,进入 https://console.flashcat.cloud/channel 点击【创立合作空间】。合作空间是告诉和合作的根本单位,FlashDuty 次要用途是做告警事件的协同 OnCall 解决,咱们这里是想白嫖其音讯通道能力,所以轻易创立个默认合作空间即可。理论对于新注册用户,FlashDuty 会主动疏导你创立,间接点击下一步下一步即可。 创立合作空间的第二步,设定分派(告诉)策略按下图配置就好。Flashduty的分派策略非常灵活,能够遵循集体,也能够遵循团队,还有能够设置不同的优先级,不同的IM渠道,简略起见,能够先按下图的配置保留就好。 抉择自定义事件,点击【保留】。这意味着生成了一个专属于你的 integration key,每次只有往这个地址发申请,Flashduty 就会收到。 3.推送音讯并查看成果简简单单一个curl,里边内容能够自定义,收到内容的模版也能够自定义。 curl -X POST 'https://api.flashcat.cloud/event/push/alert/standard?integration_key=04ed7d2d06d3549a8079489a1ad76b0xxx' \-H 'Content-Type: application/json' \-d '{ "event_status": "Warning", "alert_key": "1", "description": "测试告警", "title_rule": "手把手教你白嫖Flashduty做音讯告诉", "event_time": 1706614721, "labels": { "name":"guguji5", "env":"prod" }}' -v成果如下图,全程不超过5分钟,如果有须要的能够尝试一下。

March 2, 2024 · 1 min · jiezi

关于程序员:启动Tomcat时出现其他无关的项目

解决方案: 应该是tomcat以前部署的我的项目有残留,删除掉webapps外面的其余我的项目,删除掉work文件夹下Catalina下localhost文件夹里其余的我的项目,删除掉conf文件夹下Catalina下localhost文件夹下的其余我的项目配置,最初如果还是不行,查看一下conf下的server.xml里是不是有其余我的项目残留的配置 https://zhhll.icu/2020/javaweb/问题/3.web我的项目之启动tomcat呈现无关我的项目/本文由mdnice多平台公布

March 2, 2024 · 1 min · jiezi

关于程序员:Solo-开发者周刊-第6期

这里会整合 Solo 社区每周推广内容、产品模块或流动投稿,每周五公布。在这期周刊中,咱们将深入探讨开源软件产品的开发旅程,分享来自一线独立开发者的教训和见解。本杂志开源,欢送投稿。 产品举荐1. 助眠类播客《静夜斋》上线一款可能愉悦身心,放松情绪,帮忙你疾速入眠的博客节目,建设初衷并非为了盈利,而是心愿可能帮忙到更多的人在面对低压工作时获取片刻的劳动,不仅能够疾速调整本人的状态,也能晋升专一力。(春沐橙光投稿) 2. Mindr——让你成为工夫治理巨匠大多数待办事项 App 都是在工作到期时揭示你,让你立即去实现,但往往那并非是实现工作的最佳时机。与之不同,Mindr 采纳视觉进度显示,让你对工作是否逾期以及逾期时长高深莫测,从而激发你的紧迫感。(Shigeru 投稿) 3. kee.so ——创立你的网上 "主屏幕"kee.so 心愿给人们提供一个在互联网上的 "主屏幕",一个在概念和状态上与手机主屏幕一样的集体页面。借助 app + widgets 的状态,让每个人都轻松制作一个互联网上的主屏幕。 这个页面,能够集中展现一个用户的各个社交链接、网页链接、图片作品、文字作品。页面链接,由用户惟一定义,能够放在任何中央,放在 instagram 、twitter 、tiktok ,放在任何社交平台。(Paranoid_K投稿) 4. 标小智——AI智能logo生成工具标小智是一款简略好用的AI智能logo生成工具,为用户提供从logo设计到名片设计、VI设计海报营销等一系列智能品牌设计服务,将品牌创意AI产品化,目前中英文平台已累计为1000w+用户提供设计服务。(Yalan投稿) 订阅这个专栏会同步更新在 Solo 社区、公众号、知乎、社群。 微信搜寻"Solo 独立开发者社区"或者扫描二维码,即可手机订阅。 社区网址:Solo 独立开发者社区-链接每一位独立开发者, 从 Solo 开始

March 1, 2024 · 1 min · jiezi

关于程序员:编程两年半了还要坚持写博客吗

前言思否的敌人你们好,我是何将来,计算机专业本科在读,在大学期间通过本人的致力取得了多个全国计算机类大赛奖项并间断两年取得奖学金,目前次要在学习Java后端开发,这是我在思否上公布的第一篇文章,今后我会继续更新Java后端,数据结构与算法,web前端,开源,效率开发工具和技巧等对你们有价值的计算机常识和问题解答,我会严格把关本人文章内容的品质,继续为大家输入高质量技术文章!三人行,必有我师焉,心愿通过写文章的形式和你们一起交换软件开发技术,我十分期待和你们一起学习成长和提高!更期待和酷爱编程技术的你们成为敌人!明天这篇文章我将给大家介绍:作为一名程序员,写博客有哪些益处。 咱们都晓得,在现在这个数字化时代,程序员不仅是代码的创造者,更是技术信息的传播者。作为一名程序员,写博客不仅是分享常识、教训的平台,它还能带来许多其余的益处。接下来本文将深入探讨程序员写博客的各种好处。 程序员写博客的15大好处0x001晋升沟通技能 编程是一项专业技能,而将简单的技术问题用易于了解的语言表述进去是一个挑战。写博客迫使程序员练习将简单概念简化,通过文字清晰地传播思维。这种沟通技能不仅对写作无益,对团队合作和客户交换也同样重要。 以一个编程博客为例,让咱们思考一篇对于“递归”的文章。递归在计算机科学中是一个根底概念,但对初学者来说可能并不直观。一个程序员在博客中不仅能够提供递归的定义,而且能够通过活泼的比喻来解释递归如何工作,比方“俄罗斯套娃”。这样的解释可能帮忙读者更好地了解,并且显示了作者将简单概念转化为简略解释的能力。 0x002构建集体品牌 在竞争强烈的技术行业,集体品牌的重要性日益减少。通过博客,程序员能够展现本人的专业知识、技能和对技术的激情。这有助于建设行业内的名誉,甚至能够成为求职和职业倒退的无力工具。 假如你是一位专一于Java编程语言的程序员。通过写作有对于Java的博客文章,分享技巧、最佳实际、我的项目案例钻研等,你逐步在读者中建设起专家形象。当人们想到Java相干问题时,你的博客成为他们脑海中的去处。在求职简历上注明你的博客地址,将进一步增强你作为牢靠资源的形象。 0x003学习新常识 为了写出有价值的博文,程序员往往须要对主题进行深入研究。这个过程天然带来学习和坚固新常识的机会。一直学习是程序员职业倒退的外围,写博客提供了一个继续学习的能源和路径 设想一下,你正在尝试学习一个新的JavaScript框架,如React。为了写一篇对于React的介绍文章,你须要深刻学习并实际这一技术。在这个过程中,你的了解会变得更加粗浅,而你的读者也会从你的学习经验中获益。 0x004技术交换与反馈 博客平台容许读者留言评论,这为程序员提供了与同行进行交换的机会。通过读者的反馈,博主能够取得不同的观点,甚至是代码改良的倡议,这对技术晋升是极为无益的。 你可能在博客中分享了如何应用Java汇合。一个读者可能会在评论中指出了一个潜在的平安问题或者提供了一个更优化的应用办法。这种交换让你及时理解到了可改良的方面,并且可能带来了学习新常识和技术的机会。 0x005记录与回顾 写博客是一种记录个人成长和技术旅程的形式。随着工夫的积攒,博客能够成为一种资料库,记录着程序员在特定技术畛域的摸索和成就。在将来回顾时,这些文章可能帮忙咱们回顾过来的教训,甚至激发新的灵感。 数年前,你可能写了一系列文章,记录了你在应用Git进行版本控制时的心得体会。现在,随着技能的晋升,这些文章成为了展现你成长门路的证据,并且为那些刚开始学习Git的老手提供了领导。 0x006网络建设 通过写博客,程序员能够连贯到一个更广大的网络。博客的读者可能包含潜在的雇主、共事或者是行业内的影响者。通过定期公布内容,能够吸引这些人的关注,从而为将来的单干和机会搭建桥梁。 例如通过在博客上公布对于机器学习我的项目的文章,你吸引了一个数据科学家的留神,他在寻找合作伙伴。通过博客上的互动,你们开始了对话,并最终联手在一个开源我的项目上单干。 0x007技术影响力 当博客内容品质高、读者群体宏大时,程序员能够逐步建设起技术影响力。成为某一畛域的意见首领,可能影响技术趋势甚至参加到开源我的项目和技术社区的建设中。 构想,你写了一个对于新的Web API个性的深度解析,这篇文章引起了业界的关注,被开发者社区宽泛分享。这晋升了你在Web开发畛域的权威性,甚至可能被邀请作为专家加入相干的技术会议或研讨会。 0x008发明支出 尽管发明支出并不是咱们写文章的次要目标,但博客也有后劲成为支出起源。通过广告、资助内容或者发售课程和电子书等形式,胜利的技术博客能够为程序员带来额定的收益。 例如你可能开始通过博客采购本人编写的电子书《深入浅出Java汇合》,或者你的博客上有企业资助的广告。随着工夫的推移,这些渠道可能为你带来可观的副业支出。 0x009扩大专业知识 博客写作能够促成对已知概念的深刻了解。在尝试解释一个简单的概念时,程序员往往须要从多个角度扫视问题,这可能揭示先前未留神到的细节。此外,编写教程或解释概念时,往往须要验证信息的准确性,这无形中减少了对新技术、工具或编程语言的熟练度。 以前端开发为例,一名程序员可能决定写一篇对于“响应式网页设计”的博客。在撰写过程中,他发现自己须要钻研新的CSS框架,比方Flexbox或Grid,以深刻了解并分享最新的布局技术。通过这个过程,他不仅坚固了现有常识,还可能摸索到先进的设计模式,如应用CSS变量来进步样式表的可维护性。这些额定的钻研最终使他在工作中能够更快地解决布局问题,并在团队中成为响应式设计方面的“专家”。 0x00A加强问题解决能力 通过写作,程序员能够反思和剖析之前解决问题的过程,这有助于辨认解决问题的模式和策略。文章能够围绕如何无效地解决某个编程难题或优化代码性能来构建,这不仅为读者提供了解决方案,也锤炼了作者的问题解决能力。 假如有一个程序员专门在博客上写对于调试技巧的文章。在一次特地简单的bug解决过程中,他记录了应用调试工具的步骤,如何造成假如,以及验证这些假如的办法。他甚至可能解说了如何应用二分法疾速定位问题代码。将这一过程分享进去,不仅有助于他反思本身的问题解决策略,也帮忙读者学习如何系统地剖析和解决编程问题。此外,读者的评论可能提供了不同的视角或解决方案,进一步扩大了他的问题解决内容库。 0x00B进步自我激励 写博客设立了一个非正式的公共承诺。当程序员公开发表他们会在博客上继续分享内容时,这种公开性自身就是一种能源,推动他们去学习新货色并定期写作。这种自我激励形式对于放弃技术激情和维持业余成长十分重要。 思考一个游戏开发者,他在博客上承诺每周分享一篇对于游戏开发过程的文章。这个承诺迫使他放弃对我的项目的关注,即便在面对诸如代码瓶颈或创意枯竭时也是如此。写作成为了他推动我的项目停顿的一个额定能源。例如,他可能在一个月内专一于游戏引擎的抉择和配置,通过将这个过程记录在博客上,不仅给予本人一个学习和实际的周期性回顾,也为那些面临类似抉择的开发者提供了贵重的实践经验。 0x00C建设长期资产 随着工夫的推移,高质量的博客文章能够成为可继续的常识资产。它们不仅可能继续吸引新读者,而且随着搜索引擎的优化,这些内容会为本人“工作”,在一直带来流量的同时,也减少了博主在特定畛域的可见度和领导力。 0x00D反对开源文化 编程社区对开源我的项目的反对是家喻户晓的。通过写作,程序员能够为开源文化贡献力量,无论是通过分享本人的我的项目,还是通过传授别人如何参加和应用开源软件。这种分享精力不仅有益于整个生态系统的倒退,也可能帮忙集体建设起踊跃的职业形象。 在你的博客上,你分享了本人奉献给一个风行开源我的项目的经验,这不仅展现了你的技术能力,也激励其余程序员退出开源我的项目,独特推动技术提高。 0x00E拓宽视线 编写博客时,程序员往往会接触到不同的观点和思维。这能够通过读其他人的博客、参加探讨或者钻研一个新的技术畛域来实现。这种常识的交换和对不同观点的承受有助于拓宽视线,促成翻新和创造性思考。 你可能在博客上写了一篇对于在近程工作中如何放弃高效的文章。在撰写过程中,你调研了多个国家的程序员的生存形式和工作习惯,这让你对寰球编程社区的多样性有了更深的了解。 0x00F治理工夫 定期写博客是一种自我管理的练习,特地是对于那些也有全职工作的程序员。治理写作、钻研和公布内容的工夫须要组织和纪律。在这个过程中,程序员会学习到如何更无效地治理本人的工夫,这是职业倒退中极为贵重的技能。 在尝试维持博客更新的同时,你开始学习怎么更好地进行工夫治理,并应用工夫管理工具来追踪你的写作进度。这些工具帮忙你更好地治理工夫,确保你能够在忙碌的工作日程中找到工夫写作。 结语作为一名程序员,写博客的益处是多方面的。从晋升集体技能到建设职业网络,从促成继续学习到集体品牌的塑造,博客都是一个强有力的工具。尽管开始写博客可能须要工夫和致力,但长期来看,它所带来的集体和职业回报是不言而喻的。随着工夫的积攒,博客不仅成为了常识共享的平台,更成为了个人成长和职业倒退的见证。如果你是一名程序员并且还没有开始写博客,当初就是最好的时候。开启你的写作之旅,分享你的专业知识,影响这个世界,同时塑造更好的本人。 博客社区分享然而有敌人可能就会提出一个问题了,我写的文章公布在哪里呢?其实在国内是有很多技术社区的,这些技术社区都能够公布技术文章,例如: CSDN: 国内当先的IT技术社区和服务平台,提供丰盛的编程资源和交换空间。官网:https://www.csdn.net/掘金: 一个帮忙开发者成长的社区,提供编程相干的高质量内容和技术交流平台。官网:https://juejin.cn/51CTO: 面向IT技术专业人士的中国出名技术网站,提供IT技术资讯及社区交换。官网:https://www.51cto.com/博客园: 以开发者为主的中文IT技术博客社区,内容并重程序开发和技术分享。官网:https://www.cnblogs.com/思否: 面向业余开发者的技术问答与分享社区,激励高质量的技术常识分享。官网:https://segmentfault.com/开源中国: 专一于推广和服务开源软件我的项目的中文社区,提供开源软件发现、开发、交换、推广服务。官网:https://www.oschina.net/infoQ: 面向软件开发者提供技术趋势、新闻和评论的业余网站。官网:https://www.infoq.cn/简书: 一个以写作为外围的平台,汇聚各行各业的创作者,分享个人见解和生存记录。官网:https://www.jianshu.com/知乎: 一个中文问答网站,用户能够在这里发问、答复及分享常识、教训和见解。官网:https://www.zhihu.com/V2EX: 一个对于分享和摸索创意的中央,尤其受到技术开发者和设计师的青眼。官网:https://www.v2ex.com/阿里云开发者社区: 阿里云官网的开发者社区,提供阿里云产品的技术文章、开发者交换等。官网:https://developer.aliyun.com/腾讯云开发者社区: 腾讯云提供的官网社区,汇合腾讯云产品应用技巧、开发者教训分享等资源。官网:https://cloud.tencent.com/developer华为云论坛: 华为云的官网社交平台,供用户交换云计算技术和企业信息化教训。官网:https://bbs.huaweicloud.com/这些平台通过提供各种模式的技术文章、论坛探讨和业余交换,为宽广技术人员和创作者提供了学习和分享的空间。 好了,将来明天的分享到这里就完结了,如果这篇文章帮忙到了你或者给了你一些启发,那么我会很开心,如果可能顺便关注我,那么我会更开心哟 ~ 接下来我将会继续更新【程序员博主教程】哦,手把手教你成为一名程序员博主!

March 1, 2024 · 1 min · jiezi

关于程序员:工具笔记

JAVA工具Hutool:一个Java根底工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK办法进行封装,组成各种Util工具类

March 1, 2024 · 1 min · jiezi

关于程序员:设计模式

建造者模式1、什么是建造者模式建造者模式: 是将一个简单的对象的构建与它的示意拆散,使得同样的构建过程能够创立不同的形式进行创立。工厂类模式是提供的是创立单个类的产品而建造者模式则是将各种产品集中起来进行治理,用来具备不同的属性的产品 建造者模式通常包含上面几个角色: 1、 uilder: 给出一个形象接口,以标准产品对象的各个组成成分的建造。这个接口规定要实现简单对象的哪些局部的创立,并不波及具体的对象部件的创立。ConcreteBuilder: 实现 Builder 接口,针对不同的商业逻辑,具体化简单对象的各局部的创立。 在建造过程实现后,提供产品的实例。3、Director: 调用具体建造者来创立简单对象的各个局部,在指导者中不波及具体产品的信息,只负责保障对象各局部残缺创立或按某种程序创立。Product: 要创立的简单对象。 2、建造者模式的应用场景应用场景: 须要生成的对象具备简单的内部结构须要生成的对象外部属性自身相互依赖。与工厂模式的区别是: 建造者模式更加关注与整机拆卸的程序。 JAVA 中的 StringBuilder就是建造者模式创立的,他把一个单个字符的 char数组组合起来。Spring 不是建造者模式,它提供的操作应该是对于字符串自身的一些操作,而不是创立或扭转一个字符串。 单例模式1、对于单例模式,谈谈你的理解吧(1)单例模式是一种罕用的设计模式,单例模式比较简单但蕴含了对于线程平安、内存模型、类加载机制等一些比拟外围的知识点。 (2)单例模式就是在整个运行时域,一个类只有一个实例对象。 (3)为什么须要单例模式呢?因为有的类型的实例对象的创立和销毁对资源来说耗费不大,比方string,然而有的类型呢就比较复杂宏大,如果频繁的创立和销毁对象并且这些对象齐全是能够复用的话,那么将会造成一些不必要的性能节约。 (4)举个例子吧,比方我当初要写一个拜访数据库的demo,而创立数据库链接对象是一个耗资源的操作并且数据库链接齐全是能够复用的,那么我能够将这个对象设计成单例的,这样我只有创立一次并且重复使用这个对象就能够了,而不是每次都要去拜访数据库去创立一个链接对象。3、实现java单例模式的几种模式?(1)饿汉式一动态常量形式(线程平安): 类加载时就初始化实例,防止了多线程同步问题,人造线程平安。 (2)饿汉式一动态代码块形式 (线程平安:其实就是在动态常量饿汉式实现上略微变动了一下,将类的实例化放在了动态代码块中而已,其余没区别。 (3)懒汉式(线程不平安) 这是最根本的实现形式,第一次调用才初始化,实现了懒加载的个性。多线程场景下禁止应用,因为可能会产生多个对象,不再是单例。 (4)懒汉式(线程平安,办法上加同步锁) 线程不平安懒汉式实现上惟一不同是:获取实例的getInstance0办法上加了同步锁。保障了多线程场景下的单例。然而效率会有所折损,不过还好。 (5)双重校验锁(线程平安,效率高) 此种实现中不必每次须要取得锁,缩小了获取锁和期待的事件。留神volatile关键字的应用,保障了各线程对singleton动态实例域批改的可见性。 (6)动态外部类实现单例(线程平安、效率高) 这种形式下Singleton类被装载了,instance不肯定被初始化。因为SingletonHolder类没有被被动应用,只有通过显式调用getInstance办法时,才会显式装载SingletonHolder类,从而实例化instance.。 4、java单例模式的根本特点?答:持有本人类型的属性:类结构器公有:对外提供获取实例的静态方法。 5、饿汉式和懒汉式的区别?(1)线程平安方面:饿汉式天生就是线程平安的,能够间接用于多线程而不会呈现问题,懒汉式自身是非线程平安的。 (2)资源加载和性能方面:饿汉式在类创立的同时就实例化一个动态对象进去,不论之后会不会应用这个单例,都会占据肯定的内存,然而相应的,在第一次调用时速度也会更快,因为其资源曾经初始化实现,而懒汉式顾名思义,会提早加载,在第一次应用该单例的时候才会实例化对象进去,第一次调用时要做初始化,如果要做的工作比拟多,性能上会有些提早,之后就和饿汉式一样了。 工厂模式001什么是工厂设计模式?工厂模式提供了一种创建对象的最佳形式。在工厂模式中,咱们在创建对象时不会对客户端裸露创立逻辑,并且是通过应用一个独特的接口来指向新创建的对象。实现了创建者和调用者拆散,工厂模式分为简略工厂、工厂办法、形象工厂模式。 002什么是简略工厂模式?简略工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法)现实生活中,工厂是负责生产产品的;同样在设计模式中,简略工厂模式咱们能够了解为负责生产对象的一个类,称为“工厂类”。 003简略工厂模式解决的问题?将“类实例化的操作”与“应用对象的操作”离开,让使用者不必晓得具体参数就能够实例化出所须要的“产品”类,从而防止了在客户端代码中显式指定,实现理解耦。即使用者可间接生产产品而不须要晓得其生产的细节 004简略工厂设计模式的实现。简略工厂模式:把对象的创立放到一个工厂类中,通过参数来创立不同的对象。 005简略工厂模式的长处?将创立实例的工作与应用实例的工作离开,使用者不用关怀类对象如何创立,实现理解耦;把初始化实例时的工作放到工厂里进行,使代码更容易保护。 更合乎面向对象的准则 & 面向接口编程,而不是面向实现编程。 006简略工厂模式的毛病?1)工厂类集中了所有实例(产品)的创立逻辑,一旦这个工厂不能失常工作,整个零碎都会受到影响;2)违反“凋谢 - 敞开准则”,一旦增加新产品就不得不批改工厂类的逻辑,这样就会造成工厂逻辑过于简单。3)简略工厂模式因为应用了动态工厂办法,静态方法不能被继承和重写,会造成工厂角色无奈造成基于继承的等级构造。 007简略工厂模式的利用场景?客户如果只晓得传入工厂类的参数,对于如何创建对象的逻辑不关怀时;当工厂类负责创立的对象(具体产品)比拟少时。 008什么是工厂办法模式?工厂办法模式,又称工厂模式、多态工厂模式和虚构结构器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。 009工厂办法模式的具体实现。工厂办法模式: 每种产品由一种工厂来创立,一个工厂解决一个对象。角色组成 形象工厂: 定义工厂类所具备的根本的操作具体工厂:该类必须继承形象工厂,实现形象工厂定义的办法,返回一个对象形象产品:定义了形象产品具备的基本操作产品实现类:实现形象产品类对定义的形象办法,和具体工厂一一对应;010工厂办法模式解决的问题?工厂办法模式把具体产品的创立推延到工厂类的子类(具体工厂)中,此时工厂类不再负责所有产品的创立,而只是给出具体工厂必须实现的接口,这样工厂办法模式在增加新产品的时候就不批改工厂类逻辑而是增加新的工厂子类,合乎凋谢关闭准则,克服了简略工厂模式中毛病。011工厂办法模式的长处?1)更合乎开-闭准则新增一种产品时,只须要减少相应的具体产品类和相应的工厂子类即可简略工厂模式须要批改工厂类的判断逻辑2)合乎繁多职责准则每个具体工厂类只负责创立对应的产品简略工厂中的工厂类存在简单的switch逻辑判断3)不应用动态工厂办法,能够造成基于继承的等级构造。简略工厂模式的工厂类应用动态工厂办法总结:工厂模式能够说是简略工厂模式的进一步形象和拓展,在保留了简略工厂的封装长处的同时,让扩大变得简略,让继承变得可行,减少了多态性的体现。 012工厂办法模式的毛病?1)增加新产品时,除了减少新产品类外,还要提供与之对应的具体工厂类,零碎类的个数将成对减少,在肯定水平上减少了零碎的复杂度;同时,有更多的类须要编译和运行,会给零碎带来一些额定的开销;2)因为思考到零碎的可扩展性,须要引入形象层,在客户端代码中均应用形象层进行定义,减少了零碎的抽象性和了解难度,且在实现时可能须要用到DOM、反射等技术,减少了零碎的实现难度。3)尽管保障了工厂办法内的对批改敞开,但对于应用工厂办法的类,如果要更换另外一种产品,依然须要批改实例化的具体工厂类;一个具体工厂只能创立一种具体产品。 013工厂办法模式的利用场景。1)当一个类不晓得它所须要的对象的类时,在工厂办法模式中,客户端不须要晓得具体产品类的类名,只须要晓得所对应的工厂即可;2)当一个类心愿通过其子类来指定创建对象时,在工厂办法模式中,对于形象工厂类只须要提供一个创立产品的接口,而由其子类来确定具体要创立的对象,利用面向对象的多态性和里氏代换准则,在程序运行时,子类对象将笼罩父类对象,从而使得零碎更容易扩大。3)将创建对象的工作委托给多个工厂子类中的某一个,客户端在应用时能够毋庸关怀是哪一个工厂子类创立产品子类,须要时再动静指定,可将具体工厂类的类名存储在配置文件或数据库中。 014什么是形象工厂模式?形象工厂模式,即Abstract Factory Pattern,提供一个创立一系列相干或相互依赖对象的接口,而无须指定它们具体的类;具体的工厂负责实现具体的产品实例。 容许应用形象的接口来创立一组相干产品,而不须要晓得或关怀理论生产出的具体产品是什么,这样就能够从具体产品中被解耦。 015形象工厂模式的具体实现。形象工厂模式:工厂办法模式的进一步延长。角色组成 形象工厂: 定义工厂类所具备的根本的操作具体工厂:具体工厂实现了形象工厂,每个工厂办法返回多个具体对象抽象类接口:定义了产品具备的基本操作,提供一组所有类都具备的业务办法抽象类:用于实现形象接口所定义的业务办法,只做形象接口,具体由产品实现类解决产品实现类:实现形象产品类对定义的形象办法,和具体工厂一对多;016形象工厂模式的长处。1)升高耦合形象工厂模式将具体产品的创立提早到具体工厂的子类中,这样将对象的创立封装起来,能够缩小客户端与具体产品类之间的依赖,从而使零碎耦合度低,这样更有利于前期的保护和扩大;2)更合乎开-闭准则新增一种产品类时,只须要减少相应的具体产品类和相应的工厂子类即可3)合乎繁多职责准则每个具体工厂类只负责创立对应的产品4)不应用动态工厂办法,能够造成基于继承的等级构造。017形象工厂模式的毛病。形象工厂模式很难反对新品种产品的变动。这是因为形象工厂接口中曾经确定了能够被创立的产品汇合,如果须要增加新产品,此时就必须去批改形象工厂的接口,这样就波及到形象工厂类的以及所有子类的扭转,这样也就违反了“开发——关闭”准则。 018形象工厂模式的利用场景。1)一个零碎不要求依赖产品类实例如何被创立、组合和表白的表白,这点也是所有工厂模式利用的前提。2)这个零碎有多个系列产品,而零碎中只生产其中某一系列产品3)零碎要求提供一个产品类的库,所有产品以同样的接口呈现,客户端不须要依赖具体实现。 019工厂模式和形象工厂模式比照?工厂办法模式:具体工厂类只能创立一个具体产品类的实例。形象工厂模式:具体工厂类能够创立多个具体产品类的实例。 原型模式实用场景: 类初始化耗费资源较多。new产生的一个对象须要十分繁琐的过程(数据筹备、拜访权限等)。构造函数比较复杂。循环体中生产大量对象时。长处: 性能低劣,Java自带的原型模式是基于内存二进制流的拷贝,比间接new一个对象性能上晋升了许多。能够应用深克隆形式保留对象的状态,应用原型模式将对象复制一份并将其状态保存起来,简化了创立的过程。毛病: ...

March 1, 2024 · 1 min · jiezi

关于程序员:常用的Linux命令Linux常用命令用法及实现方式

1.零碎工作命令(1)echo命令:echo命令用于在终端设备上输入字符串或变量提取后的值,语法格局为“echo [字符串] [$变量]”。(2)date命令:date命令用于显示或设置零碎的工夫与日期,语法格局为“date [+指定的格局]”。(3)timedatectl命令:timedatectl命令用于设置零碎的工夫,英文全称为“time date control”,语法格局为“timedatectl [参数]”。(4)reboot命令:reboot命令用于重启零碎,输出该命令后按回车键执行即可。(5)poweroff命令:poweroff命令用于关闭系统,输出该命令后按回车键执行即可。(6)wget命令:wget命令用于在终端命令行中下载网络文件,英文全称为“web get”,语法格局为“wget [参数] 网址”。(7)ps命令:ps命令用于查看零碎中的过程状态,英文全称为“processes”,语法格局为“ps [参数]”。pstree命令:pstree命令用于以树状图的模式展现过程之间的关系,英文全称为“process tree”,输出该命令后按回车键执行即可。 2.零碎状态检测 3.查找定位文件(1)pwd命令:pwd命令用于显示用户以后所处的工作目录,英文全称为“print working directory”,输出该命令后按回车键执行即可。(2)cd命令:cd命令用于切换以后的工作门路,英文全称为“change directory”,语法格局为“cd [参数] [目录]”。(3)ls命令:ls命令用于显示目录中的文件信息,英文全称为“list”,语法格局为“ls [参数] [文件名称]”。tree命令:tree命令用于以树状图的模式列出目录内容及构造,输出该命令后按回车键执行即可。 4.文本文件编辑命令(1)touch命令:touch命令用于创立空白文件或设置文件的工夫,语法格局为“touch [参数] 文件名称”。(2)mkdir命令:mkdir命令用于创立空白的目录,英文全称为“make directory”,语法格局为“mkdir [参数] 目录名称”。(3)cp命令:cp命令用于复制文件或目录,英文全称为“copy”,语法格局为“cp [参数] 源文件名称 指标文件名称”。(4)mv命令:mv命令用于剪切或重命名文件,英文全称为“move”,语法格局为“mv [参数] 源文件名称 指标文件名称”。 喜爱点赞珍藏,如有疑难,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

March 1, 2024 · 1 min · jiezi

关于程序员:一睹赛题门道开放原子开源大赛-BMC-赛题辅导培训来啦

由凋谢原子开源基金会牵头发动的首届 “凋谢原子开源大赛” 正在炽热进行中,为推动 BMC 技术和相干软硬件生态的凋敝倒退,OurBMC 社区及其理事长单位飞腾信息技术有限公司作为联结承办单位参加凋谢原子开源大赛根底软件赛道,以 “基于 BMC 技术的服务器故障诊断与预测平台设计” 为赛题,并设置奖金总额 30 万元,优良队伍最高可取得 12 万处分! 本次大赛报名截止工夫为 3 月 16 日,大赛组委会专家评审团将从性能完整性、资料规范性、畛域创新性、利用落地性等维度对参赛作品进行深刻评审,最终确定每支参赛队伍的综合得分和排名,并于 3 月 25 日颁布决赛队伍入围名单。 为了帮忙参赛队伍了解赛题、晋升比赛技能,社区将于 3 月 2 日 14:00(周六) 进行业余的赛火线上辅导培训。本次培训邀请到了 OurBMC 社区技术委员会主席李煜以及技术委员会委员、BMC 专家王敏,为参赛团队提供业余的技术支持,包含软硬件资源、开发领导等(OurBMC V1.0.0 源码包、飞腾派等)。心愿通过本次培训,助力参赛队伍把握解题技巧、加强翻新思维,赛出好问题,勇夺大奖! 培训具体安排如下,欢送参赛队伍和感兴趣的搭档积极参与,独特探讨,携手提高! 更多大赛详情可点击下方链接跳转查看: https://mp.weixin.qq.com/s/hmOupFnYyF5UDq7KlBpHCw 对于 OurBMCOurBMC 社区是国内首个交换和翻新 BMC 开源技术的根社区,社区秉承 “凋谢、平等、合作、翻新” 准则,保持 “开源、共建” 的单干形式,旨在独特推动 BMC 技术疾速倒退,辐射上下游造成产业共振,减速构建凋敝的信息系统软硬件生态。

March 1, 2024 · 1 min · jiezi

关于程序员:掌握字符与字符串C语言中的神奇函数解析三

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 简介除了字符函数和字符串函数,<string.h>中还有一类内存操作函数,如memset(),memcmp()等函数,他们在性能和某些字符串函数很像,但作用范畴更广,除了作用于字符串外,还能够作用于int ,double等内置类型,但因为是以字节为单位扭转,所以限度也很大。上面就让咱们来看看吧 2. memset()函数2.1 用法申明:void memset(void str, int c, size_t n) str -- 指向要填充的内存块。c -- 要被设置的值。该值以 int 模式传递,然而函数在填充内存块时是应用该值的无符号字符模式。n -- 要被设置为该值的字符数。作用:复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。返回值:该值返回一个指向存储区 str 的指针。memset()函数罕用于初始化2.2 实例#include <stdio.h>#include <string.h>int main(){ char str[] = "hello world"; memset(str, 'x', 6);//以字节为单位 printf(str); return 0;}输入后果:xxxxxxworldint main(){ int arr[4] = { 1,2,3,4 }; memset(arr, 1, sizeof(arr)); int i = 0; for (i = 0; i < 4; i++) { printf("%d ", arr[i]); } return 0;}输入后果:16843009 16843009 16843009 16843009尽管memset能够作用于int,float等类型,然而memset设置是以字节为单位,容易造成不合乎咱们预期的状况。咱们也能够通过查看内存来验证一下: ...

March 1, 2024 · 3 min · jiezi

关于程序员:Vue3-学习笔记Day6

写在后面本文为尚硅谷禹神 Vue3 教程的学习笔记。本着本人学习、分享别人的态度,分享学习笔记,心愿能对大家有所帮忙。举荐先按程序浏览往期内容:\1. Vue3 学习笔记(Day1) \2. Vue3 学习笔记(Day2) \3. Vue3 学习笔记(Day3) \4. Vue3 学习笔记(Day4) \5. Vue3 学习笔记(Day5) ::: block-1 目录7 其它 API 7.1 shallowRef 与 shallowReactive7.2 readonly 与 shallowReadonly7.3 toRaw 与 markRaw7.4 customRef8 Vue3 新组件 8.1 Teleport8.2 Suspense8.3 全局API转移到利用对象8.4 其余:::7 其它 API7.1 shallowRef 与 shallowReactiveP64:https://www.bilibili.com/video/BV1Za4y1r7KE?p=64shallowRef 作用:创立一个响应式数据,但只对顶层属性进行响应式解决。 用法: let myVar = shallowRef(initialValue);特点:只跟踪援用值的变动,不关怀值外部的属性变动。 shallowReactive 作用:创立一个浅层响应式对象,只会使对象的最顶层属性变成响应式的,对象外部的嵌套属性则不会变成响应式的 用法: const myObj = shallowReactive({ ... });特点:对象的顶层属性是响应式的,但嵌套对象的属性不是。 总结 通过应用 shallowRef() 和 shallowReactive() 来绕开深度响应。浅层式 API 创立的状态只在其顶层是响应式的,对所有深层的对象不会做任何解决,防止了对每一个外部属性做响应式所带来的性能老本,这使得属性的拜访变得更快,可晋升性能。 7.2 readonly 与 shallowReadonlyP65:https://www.bilibili.com/video/BV1Za4y1r7KE?p=65readonly ...

March 1, 2024 · 2 min · jiezi

关于程序员:JavaWeb解决中文乱码问题

中文乱码问题在应用Get申请进行拜访是因为地址中参数的编码问题可能会造成中文乱码问题,能够应用如下几种形式进行解决 tomcat的server.xml文件中,在Connector 节点中增加useBodyEncodingForURI="true" 属性 应用申请体的编码,而后在获取申请内容之前应用request.setCharacterEncoding("UTF-8")tomcat的server.xml文件中,在Connector 节点中增加URIEncoding="UTF-8"属性tomcat的get申请默认应用ISO-8859-1来编码,能够在获取的时候进行转码,new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")https://zhhll.icu/2020/javaweb/问题/2.中文乱码问题/本文由mdnice多平台公布

March 1, 2024 · 1 min · jiezi

关于程序员:NetNewsWire-一款免费开源的MaciPhone和iPad上的RSS阅读器

It’s like podcasts — but for _reading_.自从国内网易云浏览和轻芒浏览相继下架后,尝试过很多款RSS阅读器都不尽人意,直到发现了NetNewsWrie。 NetNewsWire是一款RSS阅读器,领有良好的浏览体验和便捷的文章治理性能;具备RSS阅读器的所有劣势--过滤广告,界面简洁;会向您展现来自您青睐的博客和新闻网站的文章,并跟踪您曾经浏览过的内容。这意味着不用再在浏览器中来回浏览页面查找新文章。相同,让NetNewsWire以简便的形式为您带来新闻。 如果您始终通过网易或头条得一些资讯网站获取新闻 — 其中包含广告、算法、用户跟踪、愤恨和误导 — 能够切换到NetNewsWire,间接从您信赖的网站获取更牢靠的新闻。 从新掌控您的新闻。应用Mac和iOS的收费、高质量、浏览喜爱的博客和网站文章。 性能safari浏览器扩大,便捷增加订阅源间接下载订阅源通过iCloud、Feedbin、Feedly、BazQux、Inoreader、NewsBlur、The Old Reader和FreshRSS进行同步可定制的文章主题(6款主题可选)浏览视图零碎分享性能,分享到Mail、Messages等;分享出原文链接,能够任意关上。反对键盘操作AppleScript反对暗黑模式星标文章所有未读和今日智能订阅和分类暗藏已读文章和已读订阅源自定义文件夹后盾刷新导入和导出OPML订阅列表搜寻性能反对多个账户可定制的工具栏Apple Silicon原生反对多窗口反对(Mac)预览Mac iPhone/iPad 舒适提醒软件提供5中可选主题,举荐Spia也反对自定义主题,详情参见https://github.com/Ranchero-Software/NetNewsWire/blob/main/Technotes/Themes.md可应用第三方服务进行账号同步,苹果生态无缝应用iCloud同步;反对订阅源和查看记录的同步;也反对Feedly Inoreader Feedbin Feedbin BazQux NewsBlur The old Reader 和本人本地部署的FreshRss RSS浏览源如何发现RSS浏览源?能够配合浏览器扩大 RSSHub Radar 和 挪动端辅助 App RSSBud (iOS) 与 RSSAid (Android) 食用分享一下我订阅的源: 联合早报 https://rsshub.app/zaobao/realtime/china 新加坡、中国、亚洲和国内的即时、评论、商业、体育、生存、科技与多媒体新闻,尽在联合早报。纽约时报 https://feedx.best/rss/nytimes.xml前端周刊 https://mdhweekly.com/rss.xml陈成(sorrycc)整顿的前端周刊,内容包含每周社区的一周新闻、深度好文阮一峰的网络日志 https://www.ruanyifeng.com/blog/atom.xml记录每周值得分享的科技内容,每周五公布少数派 https://client.sspai.com/feed ,能够应用NetNewsWire为这个订阅源全局开启浏览模式,能够查看全部内容致⼒于汇聚多数⼈的⼒量,通过优质内容和产品,和大家一起用迷信的办法和多维视角摸索数字生存,晋升⼤众⽤⼾的⼯作效率和⽣活品质。晚点 - 最新报道 https://rsshub.app/latepost晚一点,好一点 Later better;聚焦在互联网畛域,为读者提供最好的商业故事。力求实在、不偏不倚、无畏无惧。异次元软件世界 https://rsshub.app/iplay/home极具人气和特色的软件网站!专一于举荐优良软件、APP利用和互联网资源,每篇图文评测都极其用心。IT之家 https://www.ithome.com/rss/疾速播报科技行业新闻头条快讯和手机数码产品评测,关注智能车电动车、AR/VR虚拟现实、苹果iOS/iPadOS、鸿蒙OS、谷歌Android、微软Win11/Win10/Win7,紧盯iPhone/iPad、安卓智能设施手机等数码潮流。Readhub https://rsshub.app/readhub无码科技出品的科技资讯聚合浏览工具,每天3分钟互联网行业动态速览。本文由mdnice多平台公布

March 1, 2024 · 1 min · jiezi

关于程序员:常用的Linux命令Linux常用命令用法及实现方式

1.零碎工作命令(1)echo命令:echo命令用于在终端设备上输入字符串或变量提取后的值,语法格局为“echo [字符串] [$变量]”。(2)date命令:date命令用于显示或设置零碎的工夫与日期,语法格局为“date [+指定的格局]”。(3)timedatectl命令:timedatectl命令用于设置零碎的工夫,英文全称为“time date control”,语法格局为“timedatectl [参数]”。(4)reboot命令:reboot命令用于重启零碎,输出该命令后按回车键执行即可。(5)poweroff命令:poweroff命令用于关闭系统,输出该命令后按回车键执行即可。(6)wget命令:wget命令用于在终端命令行中下载网络文件,英文全称为“web get”,语法格局为“wget [参数] 网址”。(7)ps命令:ps命令用于查看零碎中的过程状态,英文全称为“processes”,语法格局为“ps [参数]”。(8)pstree命令:pstree命令用于以树状图的模式展现过程之间的关系,英文全称为“process tree”,输出该命令后按回车键执行即可。 2.零碎状态检测 3.查找定位文件(1)pwd命令:pwd命令用于显示用户以后所处的工作目录,英文全称为“print working directory”,输出该命令后按回车键执行即可。(2)cd命令:cd命令用于切换以后的工作门路,英文全称为“change directory”,语法格局为“cd [参数] [目录]”。(3)ls命令:ls命令用于显示目录中的文件信息,英文全称为“list”,语法格局为“ls [参数] [文件名称]”。(4)tree命令:tree命令用于以树状图的模式列出目录内容及构造,输出该命令后按回车键执行即可。 4.文本文件编辑命令(1)touch命令:touch命令用于创立空白文件或设置文件的工夫,语法格局为“touch [参数] 文件名称”。(2)mkdir命令:mkdir命令用于创立空白的目录,英文全称为“make directory”,语法格局为“mkdir [参数] 目录名称”。(3)cp命令:cp命令用于复制文件或目录,英文全称为“copy”,语法格局为“cp [参数] 源文件名称 指标文件名称”。(4)mv命令:mv命令用于剪切或重命名文件,英文全称为“move”,语法格局为“mv [参数] 源文件名称 指标文件名称”。

March 1, 2024 · 1 min · jiezi

关于程序员:PHP进阶Rabbitmq的实际使用

RabbitMQ是一个风行的音讯队列中间件,它提供了牢靠的消息传递机制。在应用RabbitMQ时,有几个重要的概念须要理解: 音讯队列(Message Queue):RabbitMQ中的外围概念之一。它是音讯的缓冲区,用于存储发送者发送的音讯,以便期待接收者解决。 音讯生产者(Producer):负责向音讯队列中发送音讯的应用程序或组件。 音讯消费者(Consumer):从音讯队列中接管并解决音讯的应用程序或组件。 交换机(Exchange):用于将音讯路由到一个或多个音讯队列的组件。交换机依据规定(如路由键)将音讯发送到相应的队列。 队列绑定(Queue Binding):将队列与交换机关联的过程。绑定定义了交换机如何将音讯路由到与之绑定的队列。 路由键(Routing Key):用于将音讯从交换机路由到特定队列的关键字。交换机依据音讯的路由键将音讯发送到一个或多个与之匹配的队列。 确认(Acknowledgment):指消费者收到音讯并已确认解决实现的机制。RabbitMQ反对确认机制,确保音讯被正确地解决。 长久化(Durability):指音讯队列和音讯是否长久化存储到磁盘上,以避免音讯失落。长久化确保在RabbitMQ服务器重启时不会失落音讯。 PHP理论使用: 咱们来创立一个简略的 PHP 实例来应用 RabbitMQ。首先,你须要确保曾经装置了 RabbitMQ 服务器,并且在 PHP 中装置了 RabbitMQ 扩大。而后,咱们将创立一个简略的生产者和消费者来发送和接管音讯。 步骤 1: 装置 RabbitMQ PHP 扩大你能够应用 pecl 来装置 RabbitMQ PHP 扩大: pecl install amqp步骤 2: 编写生产者<?phprequire_once __DIR__ . '/vendor/autoload.php'; // 载入 Composer 主动加载器use PhpAmqpLib\Connection\AMQPStreamConnection;use PhpAmqpLib\Message\AMQPMessage;// 连贯到 RabbitMQ 服务器$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');$channel = $connection->channel();// 申明队列$channel->queue_declare('hello', false, false, false, false);// 创立音讯$msg = new AMQPMessage('Hello World!');// 发送音讯到队列$channel->basic_publish($msg, '', 'hello');echo " [x] Sent 'Hello World!'\n";// 敞开连贯$channel->close();$connection->close();?>步骤 3: 编写消费者<?phprequire_once __DIR__ . '/vendor/autoload.php'; // 载入 Composer 主动加载器use PhpAmqpLib\Connection\AMQPStreamConnection;// 连贯到 RabbitMQ 服务器$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');$channel = $connection->channel();// 申明队列$channel->queue_declare('hello', false, false, false, false);echo " [*] Waiting for messages. To exit press CTRL+C\n";// 定义回调函数来解决接管到的音讯$callback = function ($msg) { echo ' [x] Received ', $msg->body, "\n";};// 生产队列音讯$channel->basic_consume('hello', '', false, true, false, false, $callback);// 继续监听音讯while ($channel->is_consuming()) { $channel->wait();}// 敞开连贯$channel->close();$connection->close();?>这就是一个简略的 RabbitMQ 示例。生产者发送音讯到名为 "hello" 的队列,而消费者监听这个队列并打印出收到的音讯. ...

February 29, 2024 · 1 min · jiezi

关于程序员:强大好用的shellshell命令

命令名称:就是语法中的“动词”,表白的是想要做的事件,例如创立用户、查看文件、重启零碎等操作。命令参数:用于对命令进行调整让“修,改”过的命令能更好地贴合工作需要,达到事倍功半的成果。命令对象:个别指要解决的文件、目录、用户等资源名称,也就是命令执行后的“接受方”。shell终端 切换至root管理员身份 关上命令行终端 查看man命令的帮忙信息 man命令

February 29, 2024 · 1 min · jiezi

关于程序员:授权的艺术

管理者在面对缭乱简单的工作时,最须要做的就是受权。受权能够帮忙管理者留出工夫做更重要的事件,同时倒退团队技能,实现更好的团队绩效。原文: The Art of Delegation: a step-by-step guide to build a stronger team 你是否经验过,当新工作呈现时,却基本没精力再做这件事的状况?这种状况就须要受权。 但不应该只思考受权那些比其余事件更重要的工作。 受权是造就团队技能、激励团队并为团队提供意义的无力工具。 问题不在于是否应该受权,而在于受权给谁、如何受权。 假如曾经确定了一项重要且须要实现的工作。 第一步:评估工作第一步是评估工作的复杂性和紧迫性。答复以下问题: 工作到底是什么?实现这项工作须要哪些技能?做得好的工作是什么样的?有哪些利益相关者?工作的影响是什么?例如,在 4 个月后的公司客户流动中,须要建设并治理"培训角",预计约有 1000 人加入该流动。 工作是什么?治理一个跨部门我的项目,在公司流动期间搭建一个展台,以进步培训我的项目的知名度,并为每位参与者提供一份学习材料。实现这项工作须要哪些技能?协调、横向合作、促成、沟通。杰出的工作是什么样的?在流动中,参与者来到培训角,加入提议的流动,来到时感觉学到了新货色。在流动开始之前,单干团队在筹备工作中领有平等的发言权,工夫安顿明确,工作井井有条,毫无压力。有哪些利益相关者?培训团队、销售团队、市场营销工作的影响是什么?训练有素的客户是忠诚的客户。此时,你曾经对工作有了整体概念,须要找到分配任务的适合人选。 第二步:找到适合的候选人其次,为所确定的工作抉择适合人选,影响决策的次要因素是紧迫性和技能程度。 能够将委派的工作作为延长工作,造就优先技能,为集体、团队和公司带来长期价值。 请以上面的流程图为框架,从而为抉择适合人选提供领导。 右上角"本人做"的决定可能有点违反直觉。这里的推理是,如果评估出某项工作对企业至关重要,但没有其他人能胜任,而且与之相干的技能对团队没有久远意义,那么最好的抉择就是腾出其余事件的空间,承受这项工作。这样,你就能在最有意义的中央倒退团队技能,确保长久的业绩。 第三步:分配任务分配任务一旦选定了适合的人选,就该调配工作了。 利用这个机会,针对选定人选采取个性化办法,并应用教练技术,使其最符合要求。 此时最须要牢记的两件事是: 对工作的冀望应明确且具备激励性。提供必要的反对,造就员工技能,帮忙他们胜利实现工作。援用步骤 1 中确定的因素,具体解释工作:工作是什么、有什么影响、有哪些必备技能、有哪些人参加、出色完成的工作是什么样子。 提供的反对能够是长时间一起工作,也能够在专门的时间段进行沟通,还能够是将他们与公司内外部在该畛域的专家分割起来,能够是正式培训,或者是帮忙他们入门的精彩在线资源。 第四步监测和反对最初,引入里程碑和检查点来跟进工作执行状况。 要十分具体的定义在哪个工夫点的冀望。特地是当工作比较复杂时,提供这种领导并将其合成为里程碑式的工作,将为团队成员提供清晰的路标。 为了造就团队成员的自主性,须要退后一步,但也须要随时染指,以廓清误会、纠正错误或庆贺胜利。 将受权作为一种技能倒退工具。 受权做得好,能够腾出贵重的工夫,能够激发你和团队成员之间的信赖,还能够将团队技能晋升到更高水平,从而促成他们的职业倒退。 咱们很容易陷入与受权无关的 5 个常见陷阱,让咱们来看看如何克服。 受权陷阱 1:认为本人应该领有最忙碌的日程安排 你是管理者,所以接踵而至的沉积工作、连续不断的召开会议,忙得没有工夫思考团队的将来,这很失常。认为本人不应该放弃调配给本人的工作是一个常见陷阱,尤其是当你从集体贡献者转变为管理者时。作为新任经理,须要经验的一个重要心态转变是,这不再是你本人的事,而是团队的事。事实上,你应该委以重任,以便倒退员工技能。这将帮忙你腾出空间来发展新的工作,而这些工作应该成为你的首要任务--倒退团队、加强凝聚力、进步整体绩效和个人福利。 受权陷阱 2:没工夫受权,所以不受权 咱们可能会胆怯破费大量工夫来传授或解释一项工作。实际上,在受权时,应该领导员工,而不是像宜家手册那样对他们进行领导。依据员工的成熟度和教训,应该给予他们自主权和足够的反对,让他们可能顺利开展工作。记住,反对往往不是来自你,而是来自共事或内部网络。 受权陷阱 3:心愿他人依照你的形式做事 重要的是最终后果,而不是达到后果的办法。你有一套特定的工作办法,让你获得了当初的问题。每个人的工作办法都是举世无双的,都具备创造性。放宽心,置信员工能以不同形式达到预期指标,只有给他们机会。 受权陷阱 4:把工作交给曾经把握技能的人 受权是一种弱小的技能开发工具。想想谁能从退职学习经验中获益,并晋升本人的能力。要找的是曾经开始倒退所需技能的人,以及可能在所提供的反对下达到更高水平的人。例如,如果某人在公众演讲方面一塌糊涂,你就不会要求他在 500 人背后介绍新策略,但能够委派他负责团队会议议程的筹备和介绍。 受权陷阱 5:只受权"无聊的工作" 每个人都有一份本人很想解脱的工作清单。然而,如果只把工作中"无聊"的局部委派进来,就会在团队中造成令人担忧的不均衡,你也会背上自私管理者的名声。 委派工作时,列出能够或须要委派给团队的工作候选清单,将其与团队成员的技能欲望/或要求分割起来,并排出工作的优先程序。 咱们都用不同眼光对待工作,对你来说枯燥乏味的工作,对他人来说可能是令人愉悦的。始终围绕干燥的工作描述一幅踊跃的画面,并将其与对底线或近期指标的影响分割起来。 受权是治理工具箱中最弱小的工具之一,能够利用受权使本人专一于须要关注的事件,同时倒退团队。团队期待你的受权,心愿与你独特承当实现团队指标的责任。 遵循受权的四个步骤,你就会发现团队的工作体现有了显著进步。 你好,我是俞凡,在Motorola做过研发,当初在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓重的趣味,平时喜爱浏览、思考,置信继续学习、一生成长,欢送一起交流学习。为了不便大家当前能第一工夫看到文章,请敌人们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的反对和能源,激励我继续写下去,和大家独特成长提高!本文由mdnice多平台公布

February 29, 2024 · 1 min · jiezi

关于程序员:强大好用的shellshell命令

命令名称:就是语法中的“动词”,表白的是想要做的事件,例如创立用户、查看文件、重启零碎等操作。命令参数:用于对命令进行调整让“修,改”过的命令能更好地贴合工作需要,达到事倍功半的成果。命令对象:个别指要解决的文件、目录、用户等资源名称,也就是命令执行后的“接受方”。shell终端 切换至root管理员身份 关上命令行终端 查看man命令的帮忙信息 man命令 喜爱点赞珍藏,如有疑难,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

February 29, 2024 · 1 min · jiezi

关于程序员:单元测试数据库回滚问题

问题景象: 在进行单元测试时,测试执行胜利,可是数据库中的数据没变 问题解决:单元测试主动回滚,须要加上注解Rollback(false) https://zhhll.icu/2020/javaweb/问题/1.单元测试数据问题/本文由mdnice多平台公布

February 29, 2024 · 1 min · jiezi

关于程序员:没有一朵花-一开始就是花

2023/总结、2024/1 月份 「 总有一些想写下来的,每一段经验都有它存在的意义。」 2023-12-31 周日早上七点半起床,跟杨红杰哥汇合,筹备好各种物资后就登程~ 小小梧桐山拿捏 ,没记错的话路线是:登云梯~电视塔~大梧桐~秀桐道下山。 2023 的最初一天圆满爬完大小梧桐给往年画上了圆满的句号。 2024-01-03 周三如诗如画的夕阳,和煦而平静 2024-01-06 周六这天,黄总张总齐聚光明,黄昏汇合,随后去吃甲鱼鸡煲,到处逛~啃甘蔗~打游戏~,第二天中午起吃猪脚饭~唱歌~ 顺手拍 待续…… ⌈ 总有些值得记录的~ ⌋2023 年开始逐步进入安稳,22 年经验了太多事件,9 月底开始到 23 年 3 月简直都是在东莞,甚至元旦那天过完后半夜就来到返回东莞进行工作了,工作是属于兼职性的,做的是市集。 23 年 3 月份开始来到了深圳,又做回了本职业余工作。 兴许是 2023 年是本命年的起因,年初的时候就开始有一些不好的事件产生,年初三就在东莞工作的中央手机就掉了,不晓得是被捡到还是被偷走的,当天找了一整天,好在最初当天早晨九点半左右通过派出所人脸识别找回来了,就是被格式化了气死我了,好在最初是找回了,认为找回来了就好了,没想到最初手机卡掉了。 往年到处流动工作的次数是最多的,东莞,惠州,深圳,其中在东莞与深圳之间流动是最多的。 工作性质使我接触面有所增加,做暖场流动,做市集摊位,做流动设计以及效果图计划,流动落地执行等等。 当然除了工作还得要有集体工夫,趁着闲暇的时候常常去找大学同学玩,团聚,往年国庆末还跟高中几个良久没有分割的同学聚了,刚好都在深圳,所以有工夫咱们都会进去聚聚的~ 2023 年最初一天,再次踏足深圳梧桐山,这次我终于把大小梧桐爬完了。这次流动是杰哥和杨红组织的,从登云梯到电视塔再到大梧桐再从秀桐道下山,这天刚好就是爬了一条最难爬的路线了。20 在富士康做兼职当保安的时候,跟着立彬去爬梧桐山,过后是走那条大公路下来的而后到电视塔而后逛到了黄昏,走了一条废除的小路迷路了,过后是很失望的 AHXIN|我是 ah 新呀~ 本文由mdnice多平台公布

February 29, 2024 · 1 min · jiezi

关于程序员:Vue3-实现一个简单的方位动画

这是最近遇到的一个有点意思的需要,须要依据后端返回的数据,在一块地图的具体的方位上显示对应地位标识(地位图钉)。不必非常准确,只有能体现出大抵的方位即可。 相似上面的成果,有点像游戏里的地图标识。 设计思路因为不必非常准确,就用最简略的 div + css 来实现地位标识的显示和动画。之后再通过配合背景图片来保障最根底的成果。 方位总共 9 个,东南西北中加上四个角,通过 Grid 布局让其造成 3 * 3 的格子。地位标识只须要依据方位数据呈现在对应的 div 中即可。 最初将这些方位用一个 div 包裹起来,只有设置外层 div 的背景即可实现。 代码实现和 Demo 演示梳理清思路后,代码实现就比较简单了。这里用 Vue3 在 CodeSandbox 因为这里无奈渲染,放上链接和局部代码。也能够在我的博客上看到 Demo。 Demo 地址:https://codesandbox.io/p/devbox/simple-direction-animation-de... 局部要害代码: <template> <!-- 九宫格局部 --> <div class="display"> <div class="direction-container"> <div v-for="direction in directions" :key="direction.value" class="item"> <div v-if="selectedDirection === direction.value" class="pin"></div> </div> </div> </div> <!-- 下拉框 --></template><script setup>import { ref } from "vue";const directions = [ { name: "north-west", value: "nw" }, { name: "north", value: "n" }, { name: "north-east", value: "ne" }, { name: "west", value: "w" }, { name: "center", value: "c" }, { name: "east", value: "e" }, { name: "south-west", value: "sw" }, { name: "south", value: "s" }, { name: "south-east", value: "se" },];const selectedDirection = ref(directions[0].value);</script><style scoped>/* 抖动动画 */@keyframes shake { 0% { transform: translateY(0); } 100% { transform: translateY(10px); }}.direction-container { ... /* 3*3 grid 布局 */ display: grid; grid-template-columns: repeat(3, 1fr); ...}.item { ...}.pin { /*坐标动画和地位*/ ... animation: shake 0.5s ease infinite alternate;}</style>拓展在这个实现下,要取得不错的成果次要依赖背景图片是否适合,图片大小、边缘留白等都会影响最终的成果。如果是针对不规则的地形组合,可能用 SVG 或 Canvas 来实现更好,但绝对的代码复杂度也会回升。 ...

February 28, 2024 · 1 min · jiezi

关于程序员:OurBMC社区SIG建设进展2024年2月

为更好地推动社区技术倒退,打造以技术为外围的开源 BMC 根社区,OurBMC 社区围绕开发者关注的软硬件适配、产业化落地等方向成立了多个 SIG,针对特定或多个技术主题成立不同组,依照不同 SIG 进行组织治理。所有 SIG 均平等凋谢,欢送大家退出 SIG 并参加奉献。 社区 SIG 列表:https://www.ourbmc.cn/#/SigList 概述以后已实现 OurBMC 社区产品 V 1.0.0 版本的公布,软硬件适配  SIG 下的各仓库配合社区产品的公布生成了各自对应的版本,同时在 V 1.0.0 的根底上进行推动。 SIG工作进展及安顿1. 软硬件适配 SIG (1)bmc-openbmc 停顿: ➢ 共推送 3 个 PR,其中两个已合入,一个还在评审中; ➢ 新建 OurBMC/phytium-ipmi-oem 仓库,用于开发 Phytium 自定义的 IPMI、IPMB 指令集。 打算: ➢ 飞腾自定义 IPMI/IPMB 指令集开发。 (2)bmc-web 停顿: ➢  共推送一个 PR,已合入; ➢  Web 端,新增操作日志页面。 (3)bmc-linux 本期无停顿。 (4)bmc-uboot 停顿: ➢ PR 次数=2,commit 数量=2,代码数量=4802行; ➢ 基于 U-Boot v2019.04 开发,在反对业界支流 BMC 芯片的根底上,使能飞腾腾珑 E2000S BMC 芯片,包含:     1. 反对运行状态呼吸灯 ...

February 28, 2024 · 1 min · jiezi

关于程序员:MES系统中的手动排产和自动排产助力生产效率

企业在排产治理中面临的问题:大多数的企业在调度排产过程中,都会遇到以下问题。首先是插单十分的多,打算调整艰难,会经常性的产生原材料、零部件的备货有余。打算按MRP或库存展现计算出需要后将产生大量工单,这些工单无奈全副确定生产程序,车间按本身生产收益安顿导致转配时缺件,才紧急生产缺配的整机。其次是无奈精确预测将来机台的产能负荷,无奈平衡调配产能,前后工序无奈精确的连接,造成大量的闲置资源。在发现缺件的状况下,长期赶工,不能零碎的预测须要优先生产的整机,手工统计简直无奈实现并且效率低下,造成人员身心疲乏。最初是在执行过程中,不足人员的监控,车间生产有可能变样,对于打算可能没有按时按量生产。MES零碎中的生产调度模块,能够应用主动排产和手动排产对生产工单进行调度:安顿每个工单在各个工序的具体生产线体、打算开始工夫和打算完结工夫,并依据库房治理模块提供的库房原料库存信息,进行物料齐套等可用性查看。通过排产后公布相干的生产工作和岗位工作. 在企业的生产流程中,车间接管到来自生产的订单(能够抉择手动录入订单和主动扫描SPA零碎的订单),零碎依据加工订单加工对应的规范工艺门路,生成以后工单生产加工的各个工序信息及各个工序的参数信息。在录入订单信息之后,就进入到工单保护环节,因为录入的是标准化的生产工艺流程,难免会有一些非标准的非凡状况。就要对工单上的工单号、加工的产品、打算生产数量、打算开工日期、打算竣工日期等,做出适当的调整。 之后,进入到工单调度、齐套性检查和排产后果公布阶段。MES提供主动排产和人工排产两种模式,主动排产根据工单上的工艺、设施产能、人员配备等因素,主动的寻求最佳的排产后果。手工排产则是通过加工某工序得出的机台效率、工单的批量大小、转折种工夫设置等条件主动算出。排产的后果以表格和甘特图两种形式进行展现。齐套性查看是在联合了生产工单和主动产的后果上,逐个的查看物料的筹备状况。做好上述的动工筹备工作当前,就能够公布排产的后果了。 在MES零碎中进行排产操作时,首先须要进行生产订单的派工。生产订单是依据客户订单和销售预测等信息生成的,其中蕴含了产品的数量、型号、交货日期等信息。通过MES零碎,能够将生产订单分派给相应的生产线或工作核心,确定生产的起止工夫和生产量。同时,也能够依据理论状况进行排程调整,以满足客户需要和生产资源的利用率。 在派工实现后,MES零碎会依据生产订单和排产规定主动生成工序打算。工序打算包含了产品的加工工序、工序之间的前后关系、所需的工时和设施等。万界星空科技MES零碎能够依据企业的工艺流程和工序能力主动进行优化和调整,确保每个工序的合理安排和资源的最优利用。同时,也能够依据理论状况进行手动调整,以满足生产的需要和要求。 在生成工序打算后,MES零碎会依据工序的优先级和约束条件进行任务调度。任务调度是指将工序依照肯定的程序安顿到可用的设施或工作核心进行生产。在任务调度中,MES零碎会思考设施的利用率、能力和可靠性等因素,并进行合理安排和调配。同时,还会依据工作的紧急水平和优先级进行调度,以确保生产的及时性和高效性。 在任务调度实现后,MES零碎会依据工序的执行状况进行生产进度的跟踪和监控。通过MES零碎,能够实时查看每个工序的进度和实现状况,理解生产的状态和停顿。同时,也能够通过MES零碎主动生成生产报表和生产统计数据,以进行生产效率和品质的剖析和评估。通过对生产进度的监控和剖析,能够实现生产打算的调整和优化,以进步生产效率和降低生产老本。在瞬息万变的市场环境中,企业须要一直地对本身进行改良和翻新。而万界星空科技MES零碎正是企业实现这一指标的无力助手。通过继续的数据分析和性能优化,企业能够更好地适应市场变动,晋升本身的竞争力。

February 28, 2024 · 1 min · jiezi

关于程序员:强大好用的shellshell的工作原理

Shell的工作原理能够简要概括为以下几个步骤:1.命令行输出:用户在命令行界面输出命令。2.命令解析:Shell接管用户的输出,并对命令进行解析。这个过程包含解析命令名、参数、选项等,将其转换成计算机能够了解的模式。3.命令执行:解析实现后,Shell会执行相应的命令。这通常波及到调用零碎调用或者启动新的过程来执行命令。4.后果输入:命令执行实现后,Shell将后果输入到命令行界面,供用户查看。在整个过程中,Shell还会保护一些上下文信息,例如以后的工作目录、环境变量等,这些信息会影响命令的执行后果。Shell还提供了一些高级性能,如命令补全、历史命令查看、脚本编程等,这些都加强了Shell的易用性和功能性。须要留神的是,不同品种的Shell(如bash、zsh、fish等)在具体的工作原理和个性上可能会有一些差别,但上述形容是个别Shell的工作原理。 喜爱点赞珍藏 ,如有疑难,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

February 28, 2024 · 1 min · jiezi

关于程序员:面试整理

一、mysql数据库的原理答:mysql是基于客户端与服务器的数据库管理系统,是由mysqld服务过程和一些工具程序组成,mysql客户端能够连贯到该过程,并向其发送sql,mysqld负责解释及执行这些语句二、mysql架构答:次要分三层,别离是连贯层,服务层,存储层三、如何高效的设计数据库表构造1.设计规范和标准化 标准和标准化是数据库设计的根底。在设计数据库表构造时,应该遵循一系列规范和标准,这些规范和标准包含但不限于: – 表名和字段名应该易于了解和表白含意; – 表和字段应该应用小写字母和下划线命名; – 表中应该有一个惟一标识符字段; – 表中应该有一个主键字段; – 表间应该应用外键字段进行关联; – 应该尽可能应用数据库束缚(主键、惟一键、外键、默认值、非空值、查看束缚等)来保证数据的完整性和准确性; – 不应用特殊字符或关键字作为表名或字段名; 2.防止适度设计 适度设计是数据库设计中一种常见的问题,它会导致数据库结构复杂,难以保护和了解。因而,数据库设计师必须防止适度设计。 在设计数据库时,应该始终记住以下准则: – 最小化表的数量; – 最小化表中字段的数量; – 最小化字段中的数据类型; – 最小化索引的数量。 3.抉择适合的数据类型 抉择适合的数据类型对于进步数据库性能十分重要。当抉择数据类型时,应该思考以下因素: – 数据类型应该尽可能小。应用较小的数据类型能够节俭存储空间并进步查问的速度。例如,如果须要存储年份,应用INT更大只须要4个字节。 – 应该应用正确的数据类型。当波及到日期和工夫时,应用日期和工夫类型,而不是字符串类型。当波及到金额时,应用DECIMAL而不是FLOAT类型,因为DECIMAL可能提供更高的精度。 – 应该应用对立的数据类型。同一表中,应该应用雷同的数据类型来存储雷同类型的数据。 4.应用索引 索引对于进步数据库查问速度十分重要。当应用索引时,应该思考以下因素: – 应该只在须要时才应用索引。应用索引会减少数据插入和更新的工夫,因而应该仅在查问过程中须要它们时应用。 – 应该仅对查问频繁的列应用索引。 – 应该仅为小型表应用索引。大型表的索引会占用大量存储空间并且升高查问性能。 – 应该应用联结索引来进步性能。 5.正规化数据表 正规化是缩小数据冗余和保护数据完整性的过程。在设计数据库表构造时,应该遵循正规化的规定。 正规化的指标是将数据划分为多个互相关联的表,每个表仅蕴含其实体的惟一信息。不同的表之间应用主键和外键进行关联。 在进行正规化时,应该遵循以下准则: – 打消反复的数据; – 将表拆分成绝对较小的表; – 最小化对反复数据的更新操作; – 确保每个表只蕴含惟一数据。 6.应用存储过程和触发器 存储过程和触发器旨在为数据库提供额定的安全性和性能。存储过程是一组SQL语句的,能够在须要时进行查问。触发器是与表相关联的一些逻辑,只有表中的一些操作产生,就会主动启动。 应用存储过程和触发器能够进步数据库的性能和可维护性。 7.备份和复原 备份和复原是数据库设计中最重要的局部之一。备份和复原能够在数据库呈现故障时帮忙复原数据库。 应用备份和复原时,应该思考以下因素: – 应该定期备份数据库,以确保在系统故障时可能疾速进行复原; – 应该进行备份测试,以确保备份是可用的; – 应该在服务器上多个地位存储备份,以确保不会失落所有备份; ...

February 28, 2024 · 1 min · jiezi

关于程序员:掌握字符与字符串C语言中的神奇函数解析二

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. strncmp()函数1.1 用法申明:int strncmp(const char str1, const char str2, size_t n)str1 -- 要进行比拟的第一个字符串。str2 -- 要进行比拟的第二个字符串。n -- 要比拟的最大字符数。作用: 把 str1 和 str2 进行比拟,最多比拟前 n 个字符返回值:如果返回值 < 0,则示意 str1 小于 str2。如果返回值 > 0,则示意 str1 大于 str2。如果返回值 = 0,则示意 str1 等于 str2。1.2 实例#include<stdio.h>#include<string.h>int main(){ char arr1[20] = "abcdef"; char arr2[20] = "abcddd"; int ret1 = strncmp(arr1, arr2, 3);//比拟前三个字符 int ret2 = strncmp(arr1, arr2, 8);//即便给出的num太大,遇见'\0'也会进行 int ret3 = strncmp(arr1, arr2, 6);//比拟全副字符 printf("%d %d %d\n", ret1, ret2,ret3); return 0;}输入后果:0 1 11.3 实现strncmp()思路:总体思路与strcmp()的设计思路一样,只需退出限度比拟字符个数的条件即可~代码实现: ...

February 28, 2024 · 4 min · jiezi

关于程序员:强大好用的shellshell的工作原理

Shell的工作原理能够简要概括为以下几个步骤: 1.命令行输出:用户在命令行界面输出命令。2.命令解析:Shell接管用户的输出,并对命令进行解析。这个过程包含解析命令名、参数、选项等,将其转换成计算机能够了解的模式。3.命令执行:解析实现后,Shell会执行相应的命令。这通常波及到调用零碎调用或者启动新的过程来执行命令。4.后果输入:命令执行实现后,Shell将后果输入到命令行界面,供用户查看。在整个过程中,Shell还会保护一些上下文信息,例如以后的工作目录、环境变量等,这些信息会影响命令的执行后果。Shell还提供了一些高级性能,如命令补全、历史命令查看、脚本编程等,这些都加强了Shell的易用性和功能性。 须要留神的是,不同品种的Shell(如bash、zsh、fish等)在具体的工作原理和个性上可能会有一些差别,但上述形容是个别Shell的工作原理。 喜爱点赞珍藏,如有疑难,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

February 28, 2024 · 1 min · jiezi

关于程序员:web项目的目录结构

web我的项目的目录构造WEB-INF 寄存class文件、jar文件和配置文件,对于用户来说该文件夹是不可见的WEB-INF/web.xml web应用程序的形容文件,用来配置资源,如servlet、过滤器、监听器等WEB-INF/classes 用于寄存class文件,也是该web应用程序的类加载门路WEB-INF/lib 用于寄存第三方的类库jar文件其余资源文件寄存到和WEB-INF同级的目录中web应用程序只能拜访到寄存在classes和lib目录下的java类 https://zhhll.icu/2024/javaweb/根底/13.web我的项目的目录构造/本文由mdnice多平台公布

February 28, 2024 · 1 min · jiezi

关于程序员:Vue3-学习笔记Day5

写在后面本文为尚硅谷禹神 Vue3 教程的学习笔记。本着本人学习、分享别人的态度,分享学习笔记,心愿能对大家有所帮忙。举荐先按程序浏览往期内容:\1. Vue3 学习笔记(Day1) \2. Vue3 学习笔记(Day2) \3. Vue3 学习笔记(Day3) \4. Vue3 学习笔记(Day4) ::: block-1 目录6 组件通信 6.1 props6.2 自定义事件6.3 mitt6.4 v-model6.5 $attrs6.6 $refs、$parent6.7 provide、inject6.8 pinia6.9 slot:::6 组件通信P52:https://www.bilibili.com/video/BV1Za4y1r7KE?p=52Vue3组件通信和Vue2的区别: 移出事件总线,应用mitt代替。vuex换成了pinia。把.sync优化到了v-model外面了。把$listeners所有的货色,合并到$attrs中了。$children被砍掉了。常见搭配模式: 6.1 props概述:props是应用频率最高的一种通信形式,罕用与 :父 ↔ 子。 若 父传子:属性值是非函数。若 子传父:属性值是函数。父组件: <template> <div class="father"> <h3>父组件,</h3> <h4>我的车:{{ car }}</h4> <h4>儿子给的玩具:{{ toy }}</h4> <Child :car="car" :getToy="getToy"/> </div></template><script setup lang="ts" name="Father"> import Child from './Child.vue' import { ref } from "vue"; // 数据 const car = ref('飞驰') const toy = ref() // 办法 function getToy(value:string){ toy.value = value }</script>子组件 ...

February 28, 2024 · 3 min · jiezi

关于程序员:强大好用的shell什么是shell

零碎内核是操作系统的根本组成部分,它负责管理系统的硬件和软件资源,并提供一组根本的零碎服务。内核是操作系统的外围,管制着计算机的所有次要性能,包含内存治理、过程治理、设施驱动程序、零碎调用和平安防护等。内核在计算机中扮演着重要的角色,它为用户空间的应用程序提供拜访硬件资源的接口,并通过过程间通信机制及零碎调用来实现这些操作。内核的设计和实现对于操作系统的性能和稳定性有着至关重要的影响。Linux零碎的内核负责实现对硬件资源的调配、调度等治理工作,对系统的失常运行起着非常重要的作用。与批改Windows零碎中的注册表相似,间接改变内核参数的难度比拟大,而且一旦“手滑”还有可能导致系统间接解体。因而不倡议间接去编辑内核中的参数,而是用基于零碎调用接口开发进去的程序或服务来治理计算机,以满足日常的工作须要。 看到被一层层“包裹”起来的硬件设施,大家有没有感觉像一只蜗牛的壳呢?英文中的壳叫作Shell,咱们在行业中也将用户终端程序称之为Shell。 Shell在计算机科学中,是指“为使用者提供操作界面”的软件(command interpreter,命令解析器),通常被称为命令解析器或命令行界面。它接管用户命令,而后调用相应的应用程序。Shell位于操作系统和应用程序之间,是他们二者的接口,负责把应用程序的输出命令信息解释给操作系统,将操作系统指令解决后的后果解释给应用程序。简而言之,Shell是一个用户与操作系统进行交互的工具。通过Shell,用户能够运行程序、管理文件、配置零碎环境等。常见的Shell有bash、sh、zsh等。当初包含红帽零碎在内的许多支流Linux零碎默认应用的终端是Bash(Bourne-Again SHell)解释器。 。

February 27, 2024 · 1 min · jiezi

关于程序员:在Linux操作系统中如何解决软件依赖关系

依赖关系指的就是通常咱们所须要装置的软件须要另外一个软件来撑持,两者相互依赖,所以,咱们装置软件会非常麻烦,因为有的软件有很多种依赖关系。 红帽开发一个解决RPM软件依赖的问题的软件,名称YUM,简称黄狗更新器。 YUM能够主动查找并解决RPM之间的依赖关系,无需用户一一手动的去装置或者卸载 YUM必须在根用户模式下才能够应用,前面能够跟很多参数。

February 27, 2024 · 1 min · jiezi

关于程序员:JavaWeb之异步处理

异步解决在Servlet3.0版本中引入了异步解决的性能,使线程能够返回到容器,从而执行更多的工作 应用AysncContext来进行异步操作 public interface ServletRequest { // 应用原始申请和响应对象用于异步解决 public AsyncContext startAsync() throws IllegalStateException; // 将申请转换为异步模式,并应用给定的申请和响应对象初始化,能够应用ServletRequestWrapper和ServletResponseWrapper public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException; // 检测申请是否为异步模式,应用原始申请和响应对象进行解决 public boolean isAsyncStarted(); // 是否反对异步解决 public boolean isAsyncSupported(); // 返回由startAsync调用创立的AsyncContext public AsyncContext getAsyncContext();}public interface AsyncContext { // AsyncContext中的申请响应进行分派 void dispatch(); // 分派到指定资源 void dispatch(String path); // 分派到指定资源 void dispatch(ServletContext context, String path); // 实现异步操作,并完结与这个异步上下文的关联的响应,在异步上下文中写入响应对象之后调用该办法 void complete(); // 容器提供了一个不同的线程,在该线程中解决阻塞操作 void start(Runnable run); // 注册监听器用于接管 onTimeout、onError(用于告诉监听器在Servlet上启动的异步操作未能实现)、onComplete(用于告诉监听器在Servlet上启动的异步操作实现了)、onStartAsync(用于告诉监听器正在通过调用一个ServletRequest.startAsync办法启动一个新的异步周期)告诉 void addListener(AsyncListener listener); void addListener(AsyncListener listener, ServletRequest request, ServletResponse response);}要在servlet上启用异步解决,须要配置asyncSupported为true<!-- more --> ...

February 27, 2024 · 1 min · jiezi

关于程序员:独立开发周记-54北京天津五日游

2024,第八周,0219-0225这周前两天做了一点点兼职的工作,剩下的五天都在暴走,每天步数陡然增高,后果就是每天脚底板都疼得要死。 十年前的记忆周三周四两天在北京,早晨别离吃了小吊梨汤和南京大排档。 上次吃小吊梨汤还是十年前,就是研究生毕业的那一天,加入完毕业典礼后,同学请我吃了一顿。 这次是一家三口,点了一大桌子,吃得是很爽,然而剩下很多。 上次吃南京大排档也是十年前了(如同是十一年前了),就在新中关那里,这次是在悠唐,又是一大桌子,然而只花了 158,几乎不敢相信。 天津之旅这个暑假原本是打算去上海及其周边旅游的,然而打算有变就勾销了。眼看着暑假行将完结,就抉择了离北京十分近的天津作为暑假之旅的目的地。 之前我从未去过天津,也从未去过北京南站,令我震惊的是北京和天津之间的高铁车次也太多了,简直是每隔三分钟就有一个车次,而且全程只须要半小时。 这次我住的酒店就在津湾广场地铁站旁边,出了地铁站还有个 7-11,坐地铁去各个中央都十分不便。 五小道入住酒店后,放下行李就直奔五小道。原谅我满腹经纶,整个五小道波及的名人我简直一个都没听过。 孩子对马车非常向往,尽管很贵,尽管网上的人都说不值,但还是坐了。马车前进过程中,路人纷纷拿起手机拍咱们的时候,有那么一丢丢自卑感。坐完马车,又坐了一遍观光三轮车在民园第一次吃天津正宗的煎饼果子,果然吃不惯,感觉还不如家里的好吃 西北角周六早上坐地铁去西北角,后果很悲观,因为人太多了,天还冷,基本排不起队伍。只买了队伍最短的三个货色,面茶、糖果子、牛肚,还买了个冰箱贴纪念品。 古文化街&意式风情区从西北角进去,间接打车到古文化街。这个古文化街还是个 5A 景区,然而我看就是各个游览城市都有的购物一条街。相声没听,天后宫没进去,就吃了一顿狗不理包子,点完才发现这包子竟然是速冻的…… 而后做了个观光三轮车去到了意式风情区。除去人多垃圾多的情况,这里还真和电影里看到的意大利小广场截然不同。坐了观光巴士把这一片周边的著名景点都蜻蜓点水看了一遍,iPhone 15 Pro Max 的 5 倍变焦太给力了。 不得不吐槽一下,意式风情区的公厕太少太荫蔽了,连星巴克外面都没有,不像古文化街,走一段就有一个公厕。 鼓楼灯会周六正值正月十五,据说天津的鼓楼灯会还不错,就提前买好了票,早晨坐地铁间接奔了过来。 后果也是大喜过望,根本原因就是人太多!多到人挨人人挤人的境地,什么古筝和舞狮表演基本看不到。而且提前买好的电子票也要换成纸质票能力进去……公厕极少,女厕排队特地长,还有人因为插队吵架。不过我往年肯定行大运,肚子有感觉后就立即往公厕赶,正好男厕进门后第一个坑位没人,危机顺利解除,再晚几秒钟结果不堪设想。 因为人太多,就围着鼓楼四个面拍了四张照片就回去了,怕散场的时候连地铁都挤不上。 返程周日早上返回北京,为了满足孩子,又又又去了一次北京动物园。因为去的时候将近中午,所有的动物都是垂头丧气的,熊猫、狮子、老虎都是躺着睡觉。 从动物园进去,坐 6 号线,路过了东大桥,我毕业后第一份工作就在这里,也是十年前。看着一个个相熟又生疏的站名,心里一阵唏嘘。奇怪的是,周日下午怎么 6 号线还是这么挤!!! 为了满足老婆吃一顿日料大餐的欲望,在向阳大悦城选了一个日料新店,此时的咱们曾经累到解体了,也没有人任何力量点菜了,就间接选了店里的一个四人套餐,尽管比拟贵,然而切实是不想在花力量去翻菜单了。后果这个四人套餐,咱们两大一小竟然都吃光了…… 本文由博客一文多发平台 OpenWrite 公布!

February 26, 2024 · 1 min · jiezi

关于程序员:掌握字符与字符串C语言中的神奇函数解析一

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 引言咱们在学习C语言的过程中,除了应用最多的头文件<stdio.h>,还会应用其余头文件,利用其中的库函数帮忙咱们简化代码的过程,比方像<math.h>,<string.h>等头文件,而明天贝蒂就带大家具体理解一下<string.h>吧。 1. 简介<string.h>中有很多实用的库函数,大抵分为两类:一类是像strlen(),strchr()等作用于字符或字符串的字符函数和字符串函数,明天就让咱们先来介绍字符函数和字符串函数吧 2.strlen()函数2.1 用法1.申明:size_t strlen(const char *str) str -- 要计算长度的字符串。2.作用:计算字符串 str 的长度,直到空完结字符('\0'),但不包含空完结字符。 3.返回值:该函数返回字符串的长度 2.2 实例strlen()函数的用法很简略,贝蒂来简略介绍一下吧~ #include<stdio.h>#include<string.h>int main(){ char arr[] = "abcdef"; int len = strlen(arr);//计算arr字符串的长度 printf("%d\n", len); return 0;}输入后果: 62.3 实现strlen()咱们曾经晓得了strlen()函数的用法,那咱们可不可以自我实现一个my_strlen()函数来模仿strlen()函数的性能,当然是能够的呀,上面贝蒂将介绍三种实现办法。 (1)计数法思路:咱们能够用一个指针变量p指向首元素和一个计数变量count并初始化为0,而后循环解援用指针所指向的元素,判断这个元素是否为‘\0’,不是每次p++,count++,是就跳出循环,返回count。 代码实现如下: #include<stdio.h>int my_strlen(char* p){ int count = 0; while (*p)//当指向'\0',也就是0,为假跳出循环 { p++;//指向下一个元素 count++;//计数 } return count;}int main(){ char arr[] = "abcdef"; int len = my_strlen(arr);//计算arr字符串的长度 printf("%d\n", len); return 0;}(2)递归法思路:假如咱们要计算字符串“abcdef”的长度,咱们能够拆分为1+“bcdef”的长度,同理“bcdef”的长度能够拆分为1+“cdef”的长度......了解了这个思路,咱们就能够实现递归,首先定义一个指针变量p,如果p!='\0',咱们就把p+1作为参数调用本函数,直到p为0. 代码实现如下: ...

February 26, 2024 · 4 min · jiezi

关于程序员:MoonBit支持云原生调试功能

MoonBit 更新1. 反对云原生调试性能当初,你能够通过拜访try.moonbitlang.com,间接在浏览器中应用 devtools 调试 MoonBit 程序,无需装置任何软件。具体的应用步骤如下: 2. MoonBit 反对应用 for 关键字定义的函数式循环控制流MoonBit 当初反对应用 for 关键字定义的函数式循环控制流,其性能靠近于 C/C++ 等底层语言,比方 fib 函数能够写成如下模式: fn fib( n : Int ) -> Int { for i = 0, a = 1, b = 2 i < n i = i + 1, a = b, b = a + b { } else { b }}MoonBit 的 for 循环能够作为表达式返回一个值,比方上述程序中在循环完结后应用 b 作为整个 for 循环的值,也能够在 for 的循环体中通过 break 提前返回,比方: ...

February 26, 2024 · 2 min · jiezi

关于程序员:玩转OurBMC第四期深入探索BMC日志管理模块上

栏目介绍:“玩转OurBMC”是OurBMC社区创始的常识分享类栏目,次要聚焦于社区和BMC全栈技术相干基础知识的分享,全方位涵盖了从实践原理到实际操作的常识传递。OurBMC社区将通过“玩转OurBMC”栏目,帮忙开发者们深刻理解到社区文化、理念及特色,增进开发者对BMC全栈技术的了解。 欢送各位关注“玩转OurBMC”栏目,独特摸索OurBMC社区的精彩世界。同时,咱们诚挚地邀请各位开发者向“玩转OurBMC”栏目投稿,独特学习提高,将栏目打造成为汇聚智慧、激发创意的常识园地。 本期内容咱们将深刻摸索 BMC 日志治理模块。首先,咱们将对 BMC 日志治理模块的框架进行全面解析,理解其组件间的交互与协同工作。其次,通过理论案例的分析,深入探讨功能模块的具体作用,并展现其在日常运维中的理论利用操作。这不仅可能帮忙读者更好地了解和应用 BMC 日志治理模块,还将为服务器的稳固运行和故障排查提供无力的反对。 日志治理框架在 OpenBMC 中,日志解决是一项外围工作,确保零碎事件、谬误、正告和其余重要信息失去妥善记录和治理。其次要采纳 rsyslog 作为日志解决工具,下图为 OpenBMC 日志治理流程图: 1. 日志生成: 零碎中的各个组件和利用在运行时会产生日志音讯。这些音讯蕴含了零碎运行的重要信息,如谬误、正告、告诉等。 2. 日志发送: 日志音讯通常会被发送到日志治理过程。在 OpenBMC 中,罕用的日志治理过程是 systemd-journald(简称 journald )。systemd-journald 负责收集、存储和治理来自零碎各个局部的日志音讯。3. 日志同步: rsyslog 过程蕴含一个名为 imjournal 的模块,该模块负责同步 systemd-journald 中的日志音讯。这意味着 rsyslog 可能获取到零碎中所有要害事件的日志记录。4. 日志筛选与格式化: rsyslog 依据其配置文件中的规定,筛选特定的日志音讯。同时,依据用户定义的格局,rsyslog 将筛选后的日志音讯转换为易于浏览和了解的格局。5. 日志存储与治理: 格式化后的日志音讯会被保留到指定的文件中。这些文件通常位于零碎的规范日志目录下,如 /var/log。通过这种形式,能确保日志音讯的长久化存储,不便后续查看和剖析。同时,为防止日志文件过大导致性能问题或存储空间有余,OpenBMC 应用 logrotate 过程来治理日志文件。logrotate 能够依据配置规定定期轮转、压缩、删除旧的日志文件,从而确保日志零碎的高效运行。 上面咱们将结合实际的案例,介绍各个功能模块的作用和理论应用的操作。 systemd-journaldsystemd-journald 是 systemd 我的项目的一部分,它是一个守护程序,用于收集、存储和检索来自各种零碎组件的日志音讯。systemd-journald 功能强大,它应用二进制格局在文件系统中存储日志,这容许它疾速地将日志转换为文本或 JSON 格局,便于检索和剖析。它由以下三局部组成:守护程序(systemd-journald)、配置文件(/etc/systemd/journald.conf)和调试工具(journalctl),同时 Linux 还提供了一个疾速生成日志的工具 logger,容许用户或应用程序间接向 systemd-journald 发送日志音讯。 日志显示格局有多种,systemd-journald 反对以 JSON 格局输入日志,这使得日志音讯更加结构化和易于解析。一条 JSON 格局的日志音讯次要由 [KEY:VALUE] 键值对组成,如下所示,次要由工夫、音讯内容、日志等级、日志产生者等要害信息组成。 ...

February 26, 2024 · 1 min · jiezi

关于程序员:掌握C语言指针轻松解锁代码高效性与灵活性下

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 引言通过后面的刻苦学习,明天咱们终于来到了指针的最初一节,这一节将是对后面内容的总结与深入,置信学完之后,大家能对指针有一个更深的了解~ 1. 函数指针1.1 函数的地址函数也有地址吗?置信大家看到这里肯定会有这个疑难吧,咱们其实能够做一个小的试验来证实一下。 代码如下: #include<stdio.h>int Add(int a, int b){ return a + b;}int main(){ int x = 1; int y = 2; int ret = Add(x, y); printf("%p \n", Add);//打印函数名 printf("%p \n", &Add);//对函数名取地址 return 0;} 从上述试验咱们能够发现,函数确实有地址,并且贝蒂还能够通知大家函数名和对函数名取地址示意的含意雷同,都是指函数的地址 1.2 函数指针变量既然函数是有地址的,那咱们就能够用指针来接管,而这个指针咱们称为函数指针变量 定义如下: 函数的返回值类型(*指针名)(函数的参数类型)咱们以下面的加法函数给大家演示一下 int(*pf)(int a, int b) = &Add;int(*pf)(int , int ) = Add;//省略&,a和b也是可行的int(*)(int a, int b)//pf的函数指针变量类型1.3 函数指针的应用 int (*pf)(int a, int b) = &Add; int ret1 = (*pf)(3, 5);//相当于Add(3,5) int ret2 = pf(3, 5);//相当于Add(3,5)对pf解援用相当于通过pf找到Add函数名,而后输出参数进行应用。而咱们晓得&Add==Add,所以咱们也能通过间接应用函数指针变量来调用函数。然而函数指针变量不能像其余指针变量进行+-运算2. 两段乏味的代码2.1 typedef的应用typedef是一个关键字,它能将简单的类型简化。 ...

February 26, 2024 · 5 min · jiezi

关于程序员:李亚飞什么是开发人员的工程能力如何考察

能够说工程能力是软件工程师最外围的能力,工程能力强的人工作效率往往很高,在入手之前就想分明更多研发危险,也能够提出更多产品意见。 但到底什么是工程能力,该如何考查,是本文想跟大家探讨的内容。 知乎上对于【工程能力】有一个通用的行业定义我觉得很有情理:用系统化的办法,在保证质量的前提下,更高效率的为用户/客户继续交付有价值的软件或服务的能力。 还有很多敌人会将:是否写出好的代码品质、Debug能力、业务需要理解能力、解决抵触、可维护性、代码可重用性、自测意识等退出评估项。 这些仿佛很有情理。但我有一句印象特地粗浅的话—— Linus(Linux创始人)在 2000 年写了一篇邮件是对于内核调试器的认识,“我不喜爱调试器。素来没有喜爱过,可能未来也不会喜爱。” 没有人能否定 Linus 是最顶级的开发者。 优良的开发者往往有以下的品质:器重自测、器重团队标准、器重代码可维护性。但并不是说把这几项做好的就是优良的开发者。ShowMeBug 外部也已经淘汰过一个代码很重视标准但效率很低的同学。 这几项品质是好品质,但也是可能通过肯定的训练形式去扭转集体的,所以这并非是工程能力的实质。(从招人来说,这几项的确是大大的加分项) 我的认识如下:工程能力是一种系统性解决问题的能力,在软件开发畛域基本上是可能基于需要提出优良代码和架构设计的能力,并能高效的、有品质的实现工作。 最为要害的是代码与架构设计的能力,例如体现在时序图、ER关系图、流程图、用例图等的设计上(但绝不是画得丑陋标准就是好的设计)。其次是开发品质与效率。代码结构设计分明、类与模块分的良好、品质有保障、效率也高效。这就是真正的工程能力。 有人可能会问:那工程能力与架构能力有什么区别? 如果拿盖楼做比喻,架构是盖高楼大厦的力学结构设计。而工程能力是盖3层小洋楼的设计就能够了,但工程能力更强调高质量高效率竣工,而架构能力不是特别强调这一点。 讲到这里,我忽然想到去年大火的 OpenAI 还有近期的 Sora,就是科研能力与工程能力完满联合的产物。大家都晓得很多科研学者并不重视工程能力,代码写到500行以上就开始失控。而 ChatGPT 正是在正确的迷信模型领导下,超大规模的使用强有力的工程能力构建零碎,训练出的大语言模式。工程能力在其中起到的作用至关重要。 如何在短时间对开发者进行工程能力考查成为了招对人的要害一环。代码品质、自测能力、代码标准、还有空间工夫复杂度的考查都并非是实质。 ShowMeBug 团队认真钻研了三年,基于齐全自研弱小的 IDE 引擎,最卓有成效的外围办法就是形象出一个适合难度的工作,给予候选人肯定的工夫,进行代码构思、类结构设计、数据库设计、或者前端页面布局设计。而后通过三种形式进行综合评估。 一是测试用例正确性:ShowMeBug 集成了所有语言最支流的测试用例,题目主动内置示例用例与暗藏用例。这是一个十分主观的针对正确性的评估。 二是 AI 驱动的智能打分:这里要充沛利用一下 AGI 大模型的能力,咱们会将用户写的代码传递给大模型针对代码设计、代码品质进行综合评分。 三是保底回放,ShowMeBug 会记录所有的用户行为,并记录回放数据,企业能够在必要的时候随时随地进行复盘剖析。 ShowMeBug 的工程能力题目还有以下几个特点: 不偏科,不去预设一些冷门的需要,例如上传下载,加密解密,门路布局这种无意义的。背景常识少,尽可通用。工作中罕用的数据库设计、模块设计是最受欢迎。管制工夫,复杂度适中,不会呈现要超过30分钟以上的设计问题。总结来看,工程能力的判断外围就是是否能正确对问题建模,并给出较好的代码设计,再通过良好的代码品质与习惯将代码高效的实现,最初交付的过程。 同时,ShowMeBug 特地推出“分享获场次”流动,旨在为技术招聘注入新生机,实现高效、便捷的老本优化。流动详情及规定详见下方海报。

February 26, 2024 · 1 min · jiezi

关于程序员:Helm-vs-Kustomize-深度比较

<article class=“article fmt article-content”><blockquote><em>Helm和Kustomize都是风行的Kubernetes集群部署管理工具,本文比拟了两者的优缺点,不便读者依据我的项目理论状况采纳适宜的计划。原文: Helm vs Kustomize: why, when, and how</em></blockquote><p></p><h4>挑战</h4><p>开始探讨之前,先来看看为什么要应用 Helm 或 Kustomize。</p><p><strong>这么多环境,这么多 YAML 文件!</strong></p><p>Kubernetes 帮忙咱们非常容易的为不同用例创立不同的环境,能够在同一个集群甚至多个集群上应用命名空间,能够托管开发、测试、QA、UAT、预发、生产……等等不同的环境。但问题是:如何治理所有这些环境?</p><p>第一种也是最间接的办法是创立雷同manifest的正本,并为每个正本命名。也就是说,把源文件复制粘贴到每个环境上。</p><p></p><p>对于只需对每个环境做出极少改变的简略我的项目,上述办法可能很实用。例如,除了镜像外,所有 YAML 清单都完全相同。能够关上每个目录中的 <code>deployment.yaml</code> 文件进行更改,保留后运行 <code>kubectl apply -f .</code>,就功败垂成了。</p><p>然而,在大多数状况下,环境之间的差别并不那么简略。请看上面的例子:</p><ul><li>开发环境通过某些容器命令参数进行调试,而这些参数在 QA 或生产环境中不可用。</li><li>QA 部署了一些边车,用于运行测试,开发和生产环境不具备这种能力。</li><li>出于不言而喻的起因,生产环境的 RBAC 比其余两个环境的限制性更强。</li></ul><p>还有其余更多的可能性:</p><ul><li>利用变得越来越大,须要其余依赖服务。例如,MySQL 后端和 Redis 缓存服务器。每个服务都有本人的清单、配置设置和环境差别。</li><li>须要施行 CI/CD 流水线,将应用程序(连同其依赖项)测试、构建和部署到多个环境中。</li></ul><p>如你所见,独自应用 <code>kubectl</code> 会变成一场噩梦,这就是咱们开始摸索更高级工具(特指 Helm 和 Kustomize)的起因。让咱们先来探讨一下它们各自是如何应答上述挑战的。</p><h4>Helm</h4><p>作为 Kubernetes 的包管理器,Helm 提供了一种以"图表(charts)“模式打包、散发和管理应用程序的办法。Helm chart由模板(template)和值(value)文件汇合组成,其中模板定义 Kubernetes 资源(如Deployment、Service、ConfigMap),值文件容许自定义模板值。</p><p>这样就能够领有一组模板,为在不同部署(或环境)中发生变化的参数提供占位符。例如,上面是一个 Helm 部署模板,它从值文件中获取正本数量、镜像名称和标签、容器端口和容器启动参数:</p><pre><code class=“yaml”>apiVersion: apps/v1kind: Deploymentmetadata: name: {{ .Release.Name }}-deploymentspec: replicas: {{ .Values.replicaCount }} selector: matchLabels: app: {{ .Release.Name }} template: metadata: labels: app: {{ .Release.Name }} spec: containers: - name: {{ .Chart.Name }} image: {{ .Values.image.repository }}:{{ .Values.image.tag }} ports: - containerPort: {{ .Values.containerPort }} args: - {{ .Values.startupArguments }}</code></pre><p><code>{{</code> 和 <code>}}</code> 之间的内容都是动静的。也就是说,在chart部署时,它们会被理论值取代。相应的值文件如下所示:</p><pre><code>replicaCount: 3image: repository: myapp/image tag: v1.0.0containerPort: 8080startupArguments: arg1 arg2 arg3</code></pre><p><strong>留神:</strong> <code>.Release.Name</code> 和 <code>.Chart.Name</code> 变量取自 <code>Chart.yaml</code>,可视为另一个参数起源,用于为集群中的 Kubernetes 组件赋予惟一的名称,这样咱们就能在同一个集群中部署同一chart的多个版本。</p><p>当 Helm 利用于集群时,Kubernetes API 服务器会收到这些信息:</p><pre><code class=“yaml”>apiVersion: apps/v1kind: Deploymentmetadata: name: myapp-deploymentspec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: myapp/image:v1.0.0 ports: - containerPort: 8080 args: - arg1 - arg2 - arg3</code></pre><p>这样就能够为每种环境/用例设置不同的值文件。</p><p>对于整个环境的更改,只需批改一次源模板。而对于特定环境的更改,能够利用每个环境对应的值文件。</p><p></p><h4>Kustomize</h4><p>Kustomize 的指标是一样的,但不应用模板。相同,它在一个目录中保留<strong>残缺</strong>版本的 YAML 文件。依照常规,这个文件被称为 <code>base</code>,但也能够依据本人的爱好给它命名。而后能够为每个环境/场景/用例创立一个目录(或目录树),每个目录都须要一个名为 <code>kustomization.yaml</code> 的 YAML 文件,该文件的目标是告知 Kustomize 应该思考哪些 manifest 文件,以及须要对这些文件进行哪些批改。上面通过例子来阐明这,看看如何应用 Kustomize 得出与 Helm 雷同的后果。</p><p>首先创立一个目录构造:</p><pre><code>myapp/├── kustomization.yaml├── base│ └── deployment.yaml└── overlay └── deployment.yaml</code></pre><p><code>myapp/kustomization.yaml</code> 的内容如下:</p><pre><code class=“yaml”>apiVersion: kustomize.config.k8s.io/v1beta1kind: Kustomizationresources: - base/deployment.yamlpatchesStrategicMerge: - overlay/deployment.yaml</code></pre><p><code>base/deployment.yaml</code> 看起来像这样:</p><pre><code class=“yaml”>apiVersion: apps/v1kind: Deploymentmetadata: name: myapp-deploymentspec: replicas: 3 template: spec: containers: - name: myapp image: myapp/image:v1.0.0 ports: - containerPort: 8080</code></pre><p>请留神,这是一个齐全无效的 YAML,如果须要,也能够按原样利用。</p><p>要更改该部署以适应环境需要,能够应用 <code>overlay/deployment.yaml</code> 文件:</p><pre><code class=“yaml”>apiVersion: apps/v1kind: Deploymentmetadata: name: myapp-deploymentspec: template: spec: containers: - name: myapp args: - arg1 - arg2 - arg3</code></pre><p>这样,发送到 Kubernetes API 服务器的文件就变成了</p><pre><code class=“yaml”>apiVersion: apps/v1kind: Deploymentmetadata: name: myapp-deploymentspec: replicas: 3 template: spec: containers: - name: myapp image: myapp/image:v1.0.0 ports: - containerPort: 8080 args: - arg1 - arg2 - arg3</code></pre><p>把同样的机制利用到三个环境中,目录构造能够是这样的:</p><pre><code>myapp/├── kustomization.yaml├── base│ └── deployment.yaml├── overlays│ ├── dev│ │ └── kustomization.yaml│ ├── qa│ │ └── kustomization.yaml│ └── prod│ └── kustomization.yaml└── patches └── deployment-patch.yaml</code></pre><p>如果须要对整个环境进行更改,只需在 <code>base/deployment</code> 文件中进行一次更改,就会流传到所有中央。针对特定环境的更改在相应环境的自定义文件中实现。</p><p></p><p>当初咱们晓得了每种工具是如何应答挑战的,上面来看看其优缺点。</p><p></p><h4>第1回合:装置和设置</h4><p>须要在服务器上安装 Helm,请参阅Five ways to install Helm。</p><p>尽管能够从 https://kubectl.docs.kubernetes.io/installation/kustomize/ 下载独自的 Kustomize 软件包,但从 1.14 版开始,就曾经与 kubectl 捆绑在一起了。因而,除非你的零碎中没有(或不须要)kubectl,否则只需运行 <code>kubectl -k</code> 即可调用 Kustomize。</p><p><em>优胜者:Kustomize</em></p><h4>第2回合:软件包治理</h4><p>因为 Helm 顾名思义是软件包管理器,它提供的软件仓库能够搜寻和下载特定版本的chart,也能够在同一集群中同时装置多个版本的chart。Kustomize 不会将文件打包成可部署的单元,不过咱们能够通过 Kustomize 手动实现同样的成果(Git 公布是其中一种抉择)。不过,Helm 提供了开箱即用的性能。</p><p><em>优胜者:Helm</em></p><h4>第3回合:模板化能力</h4><p>Helm 齐全依赖 Go 模板,此外还从 Sprig库中借用了一些函数,使模板性能更加多样化。Kustomize 齐全不应用模板,而是在将 YAML 清单利用到集群之前,应用overlay和patch对其进行即时批改。</p><p>Go 是一种成熟的编程语言,提供了弱小的文本操作技术。例如</p><ul><li>循环和条件式,如(<code>range</code>)和条件式(<code>if</code>、<code>else</code>、<code>with</code>),这在生成反复资源或依据用户提供的值进行决策时十分有用。</li><li>模板性能通过 Sprig 库实现,该库提供了各种性能,如<code>default</code>、<code>pick</code>、<code>omit</code>、<code>trim</code>、<code>upper</code>、<code>lower</code>、<code>quote</code>等。</li></ul><p>而 Kustomize 却无奈做到这一点。不过,它也有一些小技巧。例如</p><ul><li>ConfigMaps 和 Secrets 的生成器。这些都是申明式指定的,Kustomize 会在构建最终 YAML 时生成资源。</li><li>Variants(变体):Kustomize 应用overlay层来治理同一应用程序的不同变体,这有助于治理不同的环境(开发、预发、生产)。</li><li>用于更新资源字段的转换器(transformers)。常见的转换器包含为资源名称增加前缀/后缀、更新标签和正文以及更新命名空间。转换器能够有抉择的利用于不同的资源,从而提供高度的管制。</li></ul><p><em>优胜者:不定(取决于所谋求的定制化水平)</em></p><h4>第4回合:调试</h4><p>很显著,在将 YAML 文件利用到群集之前,须要测试这些文件是否存在谬误。YAML 应用空格和缩进来定义对象、列表和其余组件,一个不正确的缩进可能会毁掉整个部署。Helm 和 Kustomize 都容许咱们在将 YAML 清单利用到群集之前就"查看"这些清单。</p><p>Kustomize 有<code>build</code>命令,在将所有patch、overlay、转换器(transformers)等利用到一个蕴含整个无效负载的大文件后,会生成最终的清单。不过,也能够运行 <code>kubectl apply -k –dry-run</code> 来依赖 API 服务器验证 YAML 清单。</p><p>Helm有几种办法能够做同样的事件:</p><p>能够应用 <code>helm template</code> 在 YAML 清单发送到 API 服务器之前对其进行渲染,还能够应用 <code>helm lint</code> 依据最佳实际查看chart。</p><p>应用 <code>helm install –dry-run</code> (或 <code>helm upgrade</code> )还能够针对 API 服务器测试清单。也就是说,即便 YAML 在语法上是正确的,API 服务器也可能因为其余起因而拒绝接受(例如,短少 CRD 或接入控制器)。Helm 容许咱们在将无效负载利用到 Kubernetes 之前捕捉这些谬误,从而防止卸载和重新安装有问题的chart。</p><p><em>优胜者:不定</em></p><h4>第5回合:版本控制和回滚</h4><p>如前所述,Helm 可能同时在同一集群中部署同一chart的多个版本。Helm 将部署版本称为<code>revision</code>(修订版),并保留了部署到群集的revision版本历史记录,容许咱们在须要时回滚到之前的revision版本。尽管 Kustomize 也能够做同样的事件,但过程简单且容易出错。</p><p><em>优胜者:Helm</em></p><h4>第6回合:Secrets治理</h4><p>许多状况下,咱们须要存储一些敏感信息,作为应用程序部署的一部分。比方 API 密钥、用户凭证、令牌等。在所有状况下,Kubernetes 都提供了 Secret 对象,能够在其中保留机密信息。让咱们看看每个工具是如何解决 Secret 创立的:</p><h5>Helm</h5><p>将隐衷数据存储在 <code>values.yaml</code> 文件中,并应用 <code>b64enc</code> 函数在Secret YAML 清单中将其即时转换为 base64。例如</p><pre><code class=“yaml”># values.yamldatabase: username: admin password: secret</code></pre><p>以及</p><pre><code class=“yaml”># templates/secrets.yamlapiVersion: v1kind: Secretmetadata: name: db-secrettype: Opaquedata: username: {{ .Values.database.username | b64enc }} password: {{ .Values.database.password | b64enc }}</code></pre><p>由此产生的 YAML 能够是这样的</p><pre><code class=“yaml”>—# Source: my-chart/templates/secrets.yamlapiVersion: v1kind: Secretmetadata: name: db-secrettype: Opaquedata: username: YWRtaW4= password: c2VjcmV0</code></pre><p>这里的问题不言而喻: 须要将 Values 文件(其中蕴含纯文本证书)提交到版本控制中。一个可行的解决方案是创立独自的 Values 文件来存储敏感信息,并通过将其增加到 <code>.gitignore</code> 文件来防止将其蕴含在 git 仓库中。不过这样须要治理多个Values文件,又减少了复杂性。</p><h5>Kustomize</h5><p>能够应用 Kustomize <code>secretGenerator</code> 主动从纯文件创建Secret YAML。例如,能够创立如下凭证文件:</p><pre><code># Create the secret fileecho -n ‘admin’ > ./username.txtecho -n ‘secret’ > ./password.txt</code></pre><p>Kustomization 文件看起来会像这样:</p><pre><code class=“yaml”># kustomization.yamlsecretGenerator:- name: db-secret files: - username.txt - password.txt</code></pre><p>由此产生的清单将是</p><pre><code class=“yaml”>apiVersion: v1kind: Secretmetadata: name: db-secret-8h5h97g6k8type: Opaquedata: username.txt: YWRtaW4= password.txt: c2VjcmV0</code></pre><p>尽管 <code>username.txt</code> 和 <code>password.txt</code> 也会被增加到 <code>.gitignore</code>,但除非想批改凭据,否则无需在每次部署时都从新创立它们(在运行 <code>git clone</code> 或 <code>git pull</code> 后)。</p><p>显然,用 Base64 存储敏感信息和应用纯文本是一样的,因为 Base64 是一种编码格局,而不是加密办法。也就是说,任何人都能够应用命令行工具将 Base64 字符串转换为原始格局。因而,最佳实际要求咱们对secret数据进行加密。Helm 和 Kustomize 都能够应用第三方插件实现这一性能。</p><p>例如,如果应用 Kustomize,能够应用 kustomize-secret-generator 插件,它能让你从 Google Cloud Secret Manager、AWS Secrets Manager 或 HashiCorp 获取secret。这样做的目标是将secret以加密模式存储在其中某个反对的平台中。须要时,用户能够依附插件获取secret、解密并将其利用于群集。上面演示了 Kustomize 如何利用 HashiCorp 的 Vault 实现这一性能:</p><pre><code class=“yaml”># kustomization.yamlsecretGenerator:- name: db-secret kvSources: - pluginType: vault name: my-vault namespace: default path: secret/data/my-service key: db-password</code></pre><p>尽管 Helm 有 Helm-Secrets 插件,但不提供从其余平台获取secret的本地反对。相同,它应用 Mozilla SOPS 进行加密。密钥自身能够存储在各种密钥管理系统中,如 AWS KMS、GCP KMS、Azure Key Vault 和 PGP。例如</p><pre><code class=“bash”>helm secrets enc secrets.yaml</code></pre><p>上述命令对 Secret 模板进行了动态加密,而后能够间接提交到 Git。当咱们在另一台机器上从新获取时,须要先解密,而后再将其利用到 Kubernetes:</p><pre><code class=“bash”>helm secrets dec secrets.yaml</code></pre><p><em>优胜者:Kustomize</em></p><h4>第7回合:解决超大型应用程序</h4><p>如果应用程序有数百个清单,蕴含数千行内容,那么应用 Helm 模板解决这些清单很快就会变得力不从心,这里 Kustomize 可能是更好的抉择。</p><p>例如驰名的基于 Kubernetes 的机器学习平台 Kubeflow,正在应用 Kustomize 作为部署工具。起因是该平台过于宏大,而且有许多依赖项须要按特定程序部署。为了解释的更分明,这是须要部署的资源的一个子集(咱们甚至还没有思考patch或overlay):</p><p></p><p><em>优胜者:Kustomize</em></p><h4>第8回合:与 CI/CD 工具集成</h4><p>Helm 已被宽泛采纳,被许多 CI/CD 工具所反对。对 Kustomize 的反对也在减少,但并不宽泛。</p><p><em>优胜者:Helm</em></p><h4>第9回合(最初一轮):次级组成部分和依赖关系</h4><p>Helm 内置反对依赖关系解决。如果chart须要一些先决条件(数据库、缓存服务器、OAuth 服务等),能够轻松的在 <code>Chart.yaml</code> 文件中将它们增加为<code>dependencies</code>(依赖项)。Helm 将确保在运行主chart前下载并提供这些先决条件,并且能够抉择所需版本。而 Kustomize 则齐全由用户手动解决。</p><p><em>优胜者:Helm</em></p><p><strong>获胜者是</strong></p><p></p><p><strong>Helm!</strong></p><p>不过,这里没有输赢之分。每种工具都有本人的优缺点,齐全取决于我的项目的指标、规模、须要部署的环境数量以及复杂程度。这场"对决"的目标只是展现这两种工具之间的区别,而不是宣扬其中一种优于另一种。</p><p>尽管如此,许多我的项目事实上会在同一个代码库中同时应用这两种工具。不过,本文篇幅过长,无奈探讨 Kustomize 的这一性能。不过,能够通过以下链接查看文档:https://github.com/kubernetes-sigs/kustomize/blob/master/examples/chart.md</p><h4>论断</h4><p>Helm 和 Kustomize 的指标是统一的:以 DevOps 的形式更轻松的部署蕴含许多相互依赖的 YAML 清单的大型应用程序。不过,每种工具都有其优于其余工具的用例。在本文中,咱们试图让这两种工具面对面比拟,看看它们的优缺点。在下一个我的项目中抉择应用 Helm 还是 Kustomize 很大水平上取决于多个因素,但咱们心愿本文能帮忙你做出正确的决定。</p><p></p><p>心愿这篇对于 Helm 和 Kustomize 的文章对你有所帮忙。如果深刻理解并精通 Helm,强烈推荐 Udemy 上的课程:Helm - Kubernetes 包管理器实际。该课程适宜各种程度的学习者,蕴含大量实际示例和精辟技巧。</p><hr/><blockquote>你好,我是俞凡,在Motorola做过研发,当初在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓重的趣味,平时喜爱浏览、思考,置信继续学习、一生成长,欢送一起交流学习。为了不便大家当前能第一工夫看到文章,请敌人们关注公众号"DeepNoMind”,并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的反对和能源,激励我继续写下去,和大家独特成长提高!</blockquote><p>本文由mdnice多平台公布</p></article> ...

February 26, 2024 · 3 min · jiezi

关于程序员:Linux操作系统中软件安装用RPM包管理器安装软件步骤

装置软件的个别步骤如下:1.关上终端,作为root用户或应用sudo命令获取管理员权限。2.应用RPM命令进行软件包的装置。例如,应用“rpm -ivh 软件包名称.rpm”命令来装置软件包,其中“-i”示意装置,“-v”示意显示具体装置信息,“-h”示意以适当的哈希标记显示装置进度。常用命令如下: 除了RPM包管理器外,Linux中还有其余罕用的软件包管理工具,如APT(Advanced Packaging Tool)和YUM(Yellowdog Updater Modified)。这些工具提供了更高级的软件包治理性能,能够主动解决依赖关系,并提供更不便的软件包搜寻、装置和降级选项。无论应用哪种软件包管理工具,用户在装置软件时应留神以下几点:*确保从牢靠的起源获取软件包,以防止装置恶意软件或蕴含破绽的软件。*仔细阅读软件包的形容和装置阐明,确保理解软件的性能和所需的依赖项。*定期更新已装置的软件包,以确保取得最新的平安修复和性能改良。请留神,具体的软件装置步骤可能因应用的Linux发行版和包管理器而有所不同。因而,在实际操作时,倡议参考相干文档和官网指南以取得精确的装置阐明。 另外须要留神的是,装置软件通常须要管理员权限。因而,在装置软件时,可能须要应用sudo命令来获取管理员权限。此外,还有一些其余的软件装置形式,如源代码编译装置。这种形式须要从软件的官方网站下载源代码包,而后依照阐明进行编译和装置。这种形式绝对简单,个别实用于特定需要或包管理器中没有提供的软件包。 喜爱点赞珍藏,如有疑难,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

February 26, 2024 · 1 min · jiezi

关于程序员:在Linux操作系统中如何解决软件依赖关系

依赖关系指的就是通常咱们所须要装置的软件须要另外一个软件来撑持,两者相互依赖,所以,咱们装置软件会非常麻烦,因为有的软件有很多种依赖关系。 红帽开发一个解决RPM软件依赖的问题的软件,名称YUM,简称黄狗更新器。 YUM能够主动查找并解决RPM之间的依赖关系,无需用户一一手动的去装置或者卸载 YUM必须在根用户模式下才能够应用,前面能够跟很多参数。 喜爱点赞珍藏,如有疑难,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

February 26, 2024 · 1 min · jiezi

关于程序员:文献阅读秀丽隐杆线虫的神经肽能连接组

::: block-1 文献介绍 文献题目 The neuropeptidergic connectome of C. elegans \钻研团队 William Schafer(MRC分子生物学实验室)\发表工夫 2023-11-15 \发表期刊 Neuron \影响因子 16.2 \DOI 10.1016/j.neuron.2023.09.043::: 摘要人们正在致力绘制突触接线图或连贯组,以理解大脑性能的神经根底。然而,化学突触仅代表一种性能上重要的神经元连贯;特地是,神经肽的突触外“无线”信号传导宽泛存在,并在所有神经系统中施展着重要作用。通过将单细胞解剖和基因表白数据集与受体-配体相互作用的生化剖析相结合,作者生成了秀丽隐杆线虫神经系统中神经肽信号传导的连贯组草案。该网络的特点是高连贯密度、扩大的信号级联、自分泌灶和扩散的拓扑构造,具备一个大型、高度互连的外围,其中蕴含三个共享类似输出连贯模式的组成社区。乏味的是,几个要害的网络中枢是很少被钻研的神经元,它们仿佛专门用于肽能神经调节。作者预计线虫神经肽能连贯组将作为原型来理解神经调节信号网络的组织形式。 钻研后果1. 神经肽能连贯组的构建 (A) 用于构建网络的数据集,包含神经肽-GPCR相互作用数据、神经系统解剖学和单个神经元表白数据。\(B) 后果神经肽连贯组的图形示意;所有神经元造成繁多连贯的网络。 2. 应用单拷贝敲除报告基因评估基因表白阈值 GFP-阳性神经元是应用 NeuroPAL 多色转基因鉴定的。显示神经元表白的片段;单个神经元被标记。比例尺示意 10um。\(A) 神经元辨认策略。报告基因表白与多色 NeuroPAL 表白模式叠加,容许神经元辨认。\(B) 代表性 NPP 基因 nlp-45(左)和 flp-20(右)的报告基因。\(C) 代表性 GPCR 基因 tkr-1(上方)和 dmsr-6(下方)的报告基因。残缺的 17 个 NPP 和 9 个 GPCR 报告基因的图像在 Figure S1 中。 3. 神经肽信号传导的空间尺度评估 (A) 线虫雌雄同体神经系统的解剖概述。神经束用红色示意,咽用绿色示意。\(B) 评估扩散模型的详细信息。接触相互作用被定义为在同一神经环层或小的过程束中具备过程的神经元之间的相互作用。短程连贯包含在同一神经束内的相互作用。中程连贯产生在同一身材区域内不同束之间,即头部、中身材或尾部。长程连贯产生在不同身材区域的神经元之间。\(C) 23 种 GPCRs 的表白矩阵,由繁多激活不激活其余受体的配体激活。列示意神经元,按类型排序;每行示意一个 GPCR。色彩示意与至多一个表白配体的神经元进行通信所需的扩散范畴:蓝色示意神经环层内(深蓝色)或细小神经束内(浅蓝色)的接触相互作用;芥末色示意在神经环层之间的短程连贯;红色示意在不同束中的神经元之间的中程连贯。\(D) 示意(C)中受体的 23 个同源神经肽前体基因的表白矩阵。神经元按类型在 x 轴上排序;神经肽基因在 y 轴上。色彩示意与表白受体的神经元进行通信所需的扩散范畴,如上所述。GPCR 和 NPP 的身份蕴含在 Figure S2 中。 ...

February 26, 2024 · 2 min · jiezi

关于程序员:JavaWeb之国际化

国际化国际化(i18n): i18n internationalization,网站可能提供翻译成访问者的语言或国籍的不同版本的内容本地化(i10n): 向网站增加资源,使其适应特定的天文或文化区域,例如将网站翻译为中文区域设置:通常为语言符号后跟一个由下划线分隔的国家符号。例如"en_US"获取区域//获取以后国家和语言Locale locale = request.getLocale();<!-- more --> 获取区域设置// 获取该区域设置的国家public String getCountry() { return baseLocale.getRegion();}// 获取该区域设置的国家名称public final String getDisplayCountry() { return getDisplayCountry(getDefault(Category.DISPLAY));}// 获取该区域设置的语言代码public String getLanguage() { return baseLocale.getLanguage();}// 获取该区域设置的语言名称public final String getDisplayLanguage() { return getDisplayLanguage(getDefault(Category.DISPLAY));}// 返回该区域设置的国家的三个字母缩写public String getISO3Country() throws MissingResourceException { String country3 = getISO3Code(baseLocale.getRegion(), LocaleISOData.isoCountryTable); if (country3 == null) { throw new MissingResourceException("Couldn't find 3-letter country code for " + baseLocale.getRegion(), "FormatData_" + toString(), "ShortCountry"); } return country3;}// 返回该区域设置的语言的三个字母缩写public String getISO3Language() throws MissingResourceException { String lang = baseLocale.getLanguage(); if (lang.length() == 3) { return lang; } String language3 = getISO3Code(lang, LocaleISOData.isoLanguageTable); if (language3 == null) { throw new MissingResourceException("Couldn't find 3-letter language code for " + lang, "FormatData_" + toString(), "ShortLanguage"); } return language3;}工夫国际化工夫格式化 DateFormat ...

February 26, 2024 · 1 min · jiezi

关于程序员:2023年终总结

2023年终总结2023 记事去年制订的指标,实现了3项多吧。 学习以自我利益为导向,再思考其余问题学习英语(争取考一个雅思)持续学习linux源码 (网络模块,内核模块,内存模块,驱动模块)持续学习jvm源码(初始化,运行时(内存,字节码散发))算法1800+ (leetcode周赛4题)德语除了下面的指标之外,基于Spring + Vue实现了一个低代码我的项目,并用docker-compose部署我的项目。 而后系统性的学习了typescript。总体来说,实现的事件不多。 2023 回顾原来我本人属于讨好型人格,所以他人让我干点什么事,就会不假思索的许可了。然而有的时候他人把你的善意当成了一种任务。所以总会感觉本人过的很累。2023年对于我来说次要是劳动和扭转的一年。 扭转一去年,我看了一本心理书,书上写着一个公式:“本人 + 亲热之人+ 陌生人 = 100%”。对于我很有启发,我应该要把我本人的生存和节奏放在首要地位,我也没有任务和必要去帮忙他人,更没有必要去为他人的谬误买单。 缓缓的学习说 ”不“。扭转二弱小本人的心田。坦然的面对挫折。以倒退的眼光对待本身的局限性,一直的进步本人。其次,从小事做起,扭转本人的迁延症,回避心理。扭转三在学习形式的扭转,我以前比拟喜爱利用整段的工夫去学习,比如说五一长假,十一长假等等。导致我想放松的时候,却没有什么工夫。当初化整为零,利用每天的一些工夫,一直学习。2024年的方向没有指标,有的时候不晓得要干什么。所以还是制订指标,然而不规定完成度。 将Spring Boot我的项目降级到Spring Boot 3.0+, Java 21, 并且应用GraalVM编译欠缺Uno游戏,并实现基于Canva是的UI组件库学习C++, 进步算法程度

February 26, 2024 · 1 min · jiezi

关于程序员:JavaWeb之上传文件

上传文件对于很多网站都会遇到一些文件上传的性能,比方上传头像,上传excel等,而基于表单的提交对于传送二进制数据有些力不从心,因为表单数据是拼接在url上的,而url自身是有长度限度的,所以呈现了multipart格局的数据,将一个表单拆分为多个局部(part),每个局部对应一个输出域 ------WebKitFormBoundaryBlo55fOFFMVhQ5pvContent-Disposition: form-data; name="file"; filename="timg.jpeg"Content-Type: image/jpeg------WebKitFormBoundaryBlo55fOFFMVhQ5pv--<!-- 上传文件肯定要应用post申请 enctype须要设置为multipart/form-data input标签的type类型设为file--><form method="post" enctype="multipart/form-data"><input type="file" name="file">form表单的编码格局 application/x-www-form-urlencoded 默认 在发送前编码所有字符multipart/form-data 不对字符编码,二进制text/plain 空格转换为+号,但不对特殊字符编码<!-- more --> 应用读取流的形式来读取太过于麻烦 request.getInputStream() 获取到的是整个申请体,须要解析各个字段和分隔 解析multipart/form-data比较复杂 能够应用内部依赖包commons-fileupload.jar 依赖于 commons-io.jar <!-- 文件上传 --><dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version></dependency>commons-fileupload解析申请commons-fileupload解析申请会将申请解析成FileItem汇合,无论是文本域还是文件域,通过应用FileItem.isFormField()来判断是不是一个表单域,对于表单域,有以下办法(item.getFieldName item.getString) ;对于非表单域 ,有以下办法(item.getFieldName item.getName item.getContentType item.isImemory item.getSize item.getInputStream) public class UploadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //先判断上传的的数据是文件 if ( ServletFileUpload.isMultipartContent(request) ) { FileItemFactory fileItemFactory = new DiskFileItemFactory(); ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory); try { // 解析 上传的数据,失去每一个表单项 FiltItem List<FileItem> list = servletFileUpload.parseRequest(request); for (FileItem fileItem : list) { // 是一般表单项 if ( fileItem.isFormField() ) { String fieldName = fileItem.getFieldName(); // 表单项的name属性值 String value = fileItem.getString("UTF-8"); //表单项的value属性值 } else { //是上传的文件 String name = fileItem.getFieldName(); String fieldName = fileItem.getName(); // 将数据写到指定的地位 fileItem.write(new File( "/var/lib/upload/" + fileItem.getName())); } } } catch (Exception e) { e.printStackTrace(); } } }https://zhhll.icu/2021/javaweb/根底/10.上传文件/本文由mdnice多平台公布 ...

February 25, 2024 · 1 min · jiezi

关于程序员:掌握C语言指针轻松解锁代码高效性与灵活性中

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 引言后面给大家介绍了一些指针的基本概念,明天就让咱们持续深刻指针的世界,和贝蒂一起战胜指针大魔王吧 2. 二级指针指针变量也是变量,是变量就有地址,那咱们就把寄存指针变量地址的指针称为二级指针。 可能了解起来有点绕,咱们能够通过上面示意图演示一下 代码如下: int a = 10; int* pa = &a;//一级指针,寄存a的地址 int** ppa = &a;//二级指针,寄存指针变量p的地址不能间接把&&a赋值给ppa哦,因为&&在C语言中是且的意思” (1)对ppa解援用,找到pa,也就是说*ppa==pa (2)对pa解援用,找到a,也就是说**ppa==a int* b = *ppa;//找到a的地址 int c = **ppa;//找到a顺次内推咱们能够衍生出三级指针,四级指针。3. 数组与指针的关系3.1 数组名的了解咱们在后面学习数组时就明确,数组名是首元素地址,然而解说的不够深刻,明天就让咱们深刻理解一下吧~ 首先让咱们察看一下如下代码 #include <stdio.h>int main(){ int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; //&arr[0],arr,&arr的区别 printf("&arr[0] = %p\n", &arr[0]);//首元素地址 printf("arr = %p\n", arr);//一维数组数组名 printf("&arr = %p\n", &arr);//对整个数组取地址 return 0;} 从后果来说&arr[0],arr,&arr到底有什么区别呢? 让咱们再看看上面这段代码 #include <stdio.h>int main(){ int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; printf("&arr[0] = %p\n", &arr[0]); printf("&arr[0]+1 = %p\n", &arr[0] + 1); printf("arr = %p\n", arr); printf("arr+1 = %p\n", arr + 1); printf("&arr = %p\n", &arr); printf("&arr+1 = %p\n", &arr + 1); return 0;}输入后果: ...

February 25, 2024 · 3 min · jiezi

关于程序员:掌握C语言指针轻松解锁代码高效性与灵活性

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 指针与地址1.1 概念咱们都晓得计算机的数据必须存储在内存里,为了正确地拜访这些数据,必须为每个数据都编上号码,就像门牌号、身份证号一样,每个编号是惟一的,依据编号能够精确地找到某个数据。而这些编号咱们就将其称为地址或者指针 1.2 指针变量数据在内存中的地址称为指针,如果一个变量存储了一份数据的指针(地址),咱们就称它为指针变量。 那咱们如何应用指针变量呢? datatype *name;*示意这是一个指针变量,datatype示意该指针变量所指向的数据的类型 例如: int* p1;//指向一个整型的指针char* p2;//指向一个字符的指针float* p3;//指向一个单精度浮点数的指针double* p4;//指向一个双精度浮点数的指针1.3 &和*咱们早在学习scanf时候就用过取地址符&,它是将某个变量的地址取出来,而解援用*的意思就是通过某个地址找到该地址存储的变量。可能解释起来比拟形象,咱们能够通过一个不失当的例子形象阐明一下。 首先咱们能够失去如下几个关系: int a = 1;//第一个客户,&a为0x00000001 int b = 2;//第二个客户,&b为0x00000002 int c = 3;//第三个客户,&c为0x00000003而后咱们能够通过指针变量把他们地址存储进去 int* pa = &a;//把a的地址存进去 int* pb = &b;//把b的地址存进去 int* pc = &c;//把c的地址存进去在酒店中,咱们能够通过门牌号精确找到每个客户。同理,咱们也能够通过每个地址精确找到每个变量。 printf("a=%db=%dc=%d", *pa, *pb, *pc);//通过*解援用地址找到对应的值输入后果 a=1 b=2 c=3并且咱们能够通过指针变量进行赋值。 *pa = 4;*pb = 5;*pc = 6;printf("a=%d b=%d c=%d\n", *pa, *pb, *pc);输入后果:a=4 b=5 c=61.4 void*指针和NULL(1)void*是一种非凡的指针类型,它能够指向任意类型的数据,就是说能够用任意类型的指针对 void 指针赋值。 ...

February 25, 2024 · 3 min · jiezi

关于程序员:函数探秘深入理解C语言函数实现高效模块化编程

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 函数的概念在数学中咱们就晓得了函数这个概念,而C语言同样引入了函数这个概念,那C语言的函数到底是什么样的呢? 在C语言中,函数也叫子程序,它是一段能够重复使用的代码,用来独立地实现某个性能,它能够接管用户传递的数据,也能够不接管。 2. 函数的分类C语⾔的程序其实是由⽆数个⼩的函数组合⽽成的,也能够说:⼀个⼤的计算工作能够分解成若⼲个较⼩的函数(对应较⼩的工作)实现。同时⼀个函数如果能实现某项特定工作的话,这个函数也是能够复⽤的,晋升了开发软件的效率。而C语言函数大抵能够分为两类:库函数与自定义函数 2.1 库函数C语⾔规范中规定了C语⾔的各种语法规定,然而C语⾔并不提供库函数;C语⾔的国际标准ANSIC规定了⼀些常⽤的函数的规范,被称为规范库,那不同的编译器⼚商依据ANSI提供的C语⾔规范就给出了⼀系列函数的实现。这些函数就被称为库函数。 比如说咱们后面学习的printf和scanf都是库函数,它的头文件时<stdio.h>。然而咱们明天的主题不是解说库函数,如果大家想学习其余库函数,能够去C/C++官网学习 2.2 自定义函数自定义函数是由程序员自主设计的函数,和库函数一样有函数名、返回类型、形式参数等,明天咱们的指标就是学习如何写自定义函数。 3. 自定义函数3.1 语法dataType functionName(形式参数) {//body} dataType 是返回值类型,它能够是C语言中的任意数据类型,例如 int、float、char 等。functionName 是函数名,它是标识符的一种,命名规定和标识符雷同。函数名前面的括号( )不能少。body 是函数体,它是函数须要执行的代码,是函数的主体局部。即便只有一个语句,函数体也要由{ }突围。如果有返回值,在函数体中应用 return 语句返回。return 进去的数据的类型要和 dataType 一样。3.2 实例通过函数的定义咱们能够写一个简略的加法函数: #include<stdio.h>int Add(int x, int y)//函数名Add//两个形式参数x,y,类型都是int//返回类型也是int{ int c = 0; c = x + y; return c;//返回x+y的和}int main(){ int a, b; scanf("%d%d", &a, &b); int ret = Add(a, b);//加法函数 printf("两个数和为%d\n", ret); return 0;}当然咱们也能够优化一下 ...

February 24, 2024 · 3 min · jiezi

关于程序员:探秘C语言数组解锁高效数据管理与多维空间编程技巧

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 引言后面贝蒂给大家介绍了抉择构造与循环构造,明天,贝蒂筹备给大家介绍C语言中一个十分重要的构造——数组 1. 数组的定义数组到底是什么呢,顾名思义就是很少数的汇合,其大抵满足上面两个条件: 这些数的类型必须雷同。这些数在内存中必须是间断存储的。换句话说,数组就是在内存中间断存储的具备雷同类型的一组数据的汇合。数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。2. 一维数组2.1创立与初始化(1) 创立一维数组的定义形式如下: 类型说明符 数组名[常量表达式]; 类型说明符就是咱们罕用的存储类型(char int float double....),当然也能够自定义类型。数组名就是咱们为其取的名字,最好简略易懂,不便他人浏览。[] 中的常量值是⽤来指定数组的⼤⼩的,这个数组的⼤⼩是依据理论的需要指定就⾏留神:在C99之后C语言语法是反对变长数组的,即[]中能够是未知数,然而VS2022编译器是不反对的。例如: int arr[5];//示意此时数组arr中有 5 个元素,每个元素都是 int 型变量char arr2[6];float arr3[7];double arr4[1 + 4];//也能够是一个表达式(2) 初始化有时候,数组在创立的时候,咱们须要给定⼀些初始值,这种就称为初始化。那数组如何初始化呢?数组的初始化⼀般使⽤⼤括号,将须要初始化的数据放在⼤括号中。 初始化分为两种:齐全初始化和不齐全初始化 int arr1[4] = { 1,2,3,4 };//齐全初始化int arr2[4] = { 1,2,3 };//不齐全初始化,残余元素默认为0char arr3[10] = "hello ";//初始化字符串int arr4[];//谬误初始化 如果进行初始化,能够不在[]申明有几个元素,数组会默认初始化几个元素,数组大小就是几个元素,然而不初始化就肯定要申明有几个元素,否则就会报错。2.2 数组输出和输入(1) 数组下标C语⾔规定数组是有下标的,下标是从0开始的(而不是1),假如数组有n个元素,最初⼀个元素的下标是n-1,例如:int arr[10]={1,2,3,4,5,6,7,8,9,10},其下标如下图所示: arr12345678910下标0123456789(2) 输出其实数组输出和咱们平时输出差不多,只是输出对象换成了数组。 int main(){ int arr[10]; int i = 0; for (i = 0; i < 10; i++) { scanf("%d", &arr[i]);//循环像数组中输出元素 } return 0;}(3) 输入输入也是同理,咱们能够利用循环输入其数组的每一个元素。 ...

February 24, 2024 · 3 min · jiezi

关于程序员:JavaWeb之异常处理

异样解决当servlet出现异常时,servlet容器应用exception-type元素来找到与抛出的异样类型相匹配的配置 public class ExceptionHandler extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Throwable throwable = (Throwable) req.getAttribute("javax.servlet.error.exception"); Integer code = (Integer) req.getAttribute("javax.servlet.error.status_code"); String message = (String) req.getAttribute("javax.servlet.error.message"); System.out.println("========="); System.out.println(throwable); System.out.println("========="); System.out.println(code); System.out.println("========="); System.out.println(message); }}<!-- more --> <!-- 配置异样解决的servlet --><servlet> <servlet-name>ExceptionHandler</servlet-name> <servlet-class>com.zhanghe.study.servlet.ExceptionHandler</servlet-class></servlet><servlet-mapping> <servlet-name>ExceptionHandler</servlet-name> <url-pattern>/ExceptionHandler</url-pattern></servlet-mapping><!-- 配置哪些错误码会调用该异样解决类 --><error-page> <error-code>404</error-code> <location>/ExceptionHandler</location></error-page><!-- 配置哪些异样类型会调用该异样解决类 --><error-page> <exception-type>java.lang.ArithmeticException</exception-type> <location>/ExceptionHandler</location></error-page>如果出现异常,会在申请域中设置相应的属性 能够应用request.getAttribute("")取出 javax.servlet.error.status_code //错误码,Integer类型javax.servlet.error.exception_type // 异样类型,Class类型javax.servlet.error.message //异样信息,String类型javax.servlet.error.request_uri //出现异常的uri地址,String类型javax.servlet.error.exception //异样,Throwable类型javax.servlet.error.servlet_name //servlet名称,String类型https://zhhll.icu/2021/javaweb/根底/9.异样解决/本文由mdnice多平台公布

February 24, 2024 · 1 min · jiezi

关于程序员:Vue3-学习笔记Day4

写在后面本文为尚硅谷禹神 Vue3 教程的学习笔记。本着本人学习、分享别人的态度,分享学习笔记,心愿能对大家有所帮忙。举荐先按程序浏览往期内容:\1. Vue3 学习笔记(Day1) \2. Vue3 学习笔记(Day2) \3. Vue3 学习笔记(Day3) ::: block-1 目录5 pinia 5.1 筹备一个成果5.2 搭建 pinia 环境5.3 存储+读取数据5.4 批改数据(三种形式)5.5 storeToRefs5.6 getters5.7 $subscribe5.8 store组合式写法:::5 piniaP43:https://www.bilibili.com/video/BV1Za4y1r7KE?p=435.1 筹备一个成果P44:https://www.bilibili.com/video/BV1Za4y1r7KE?p=44 5.2 搭建 pinia 环境P45:https://www.bilibili.com/video/BV1Za4y1r7KE?p=45第一步:npm install pinia 第二步:操作src/main.ts import { createApp } from 'vue'import App from './App.vue'/* 引入createPinia,用于创立pinia */import { createPinia } from 'pinia'/* 创立pinia */const pinia = createPinia()const app = createApp(App)/* 应用插件 */{}app.use(pinia)app.mount('#app')此时开发者工具中曾经有了pinia选项 5.3 存储+读取数据P46:https://www.bilibili.com/video/BV1Za4y1r7KE?p=46Store是一个保留:状态、业务逻辑 的实体,每个组件都能够读取、写入它。它有三个概念:state、getter、action,相当于组件中的: data、 computed 和 methods。具体编码:src/store/count.ts// 引入defineStore用于创立storeimport {defineStore} from 'pinia'// 定义并裸露一个storeexport const useCountStore = defineStore('count',{ // 动作 actions:{}, // 状态 state(){ return { sum:6 } }, // 计算 getters:{}})具体编码:src/store/talk.ts// 引入defineStore用于创立storeimport {defineStore} from 'pinia'// 定义并裸露一个storeexport const useTalkStore = defineStore('talk',{ // 动作 actions:{}, // 状态 state(){ return { talkList:[ {id:'yuysada01',content:'你明天有点怪,哪里怪?怪难看的!'}, {id:'yuysada02',content:'草莓、蓝莓、蔓越莓,你想我了没?'}, {id:'yuysada03',content:'心里给你留了一块地,我的死心塌地'} ] } }, // 计算 getters:{}})组件中应用state中的数据<template> <h2>以后求和为:{{ sumStore.sum }}</h2></template><script setup lang="ts" name="Count"> // 引入对应的useXxxxxStore import {useSumStore} from '@/store/sum' // 调用useXxxxxStore失去对应的store const sumStore = useSumStore()</script><template> <ul> <li v-for="talk in talkStore.talkList" :key="talk.id"> {{ talk.content }} </li> </ul></template><script setup lang="ts" name="Count"> import axios from 'axios' import {useTalkStore} from '@/store/talk' const talkStore = useTalkStore()</script>5.4 批改数据(三种形式)P47:https://www.bilibili.com/video/BV1Za4y1r7KE?p=47第一种批改形式,间接批改countStore.sum = 666第二种批改形式:批量批改countStore.$patch({ sum:999, school:'atguigu'})第三种批改形式:借助action批改(action中能够编写一些业务逻辑)import { defineStore } from 'pinia'export const useCountStore = defineStore('count', { /*************/ actions: { //加 increment(value:number) { if (this.sum < 10) { //操作countStore中的sum this.sum += value } }, //减 decrement(value:number){ if(this.sum > 1){ this.sum -= value } } }, /*************/})组件中调用action即可// 应用countStoreconst countStore = useCountStore()// 调用对应actioncountStore.incrementOdd(n.value)5.5 storeToRefsP48:https://www.bilibili.com/video/BV1Za4y1r7KE?p=48借助storeToRefs将store中的数据转为ref对象,不便在模板中应用。留神:pinia提供的storeToRefs只会将数据做转换,而Vue的toRefs会转换store中数据。<template> <div class="count"> <h2>以后求和为:{{sum}}</h2> </div></template><script setup lang="ts" name="Count"> import { useCountStore } from '@/store/count' /* 引入storeToRefs */ import { storeToRefs } from 'pinia' /* 失去countStore */ const countStore = useCountStore() /* 应用storeToRefs转换countStore,随后解构 */ const {sum} = storeToRefs(countStore)</script>5.6 gettersP49:https://www.bilibili.com/video/BV1Za4y1r7KE?p=49概念:当state中的数据,须要通过解决后再应用时,能够应用getters配置。追加getters配置。// 引入defineStore用于创立storeimport {defineStore} from 'pinia'// 定义并裸露一个storeexport const useCountStore = defineStore('count',{ // 动作 actions:{ /************/ }, // 状态 state(){ return { sum:1, school:'atguigu' } }, // 计算 getters:{ bigSum:(state):number => state.sum *10, upperSchool():string{ return this. school.toUpperCase() } }})组件中读取数据const {increment,decrement} = countStorelet {sum,school,bigSum,upperSchool} = storeToRefs(countStore)5.7 $subscribeP50:https://www.bilibili.com/video/BV1Za4y1r7KE?p=50通过 store 的 $subscribe() 办法侦听 state 及其变动 ...

February 24, 2024 · 2 min · jiezi

关于程序员:Stable-Diffusion-3来啦AI画画大跃进预览版等你体验

关注微信公众号DeepGoAI计算机杂谈及深度学习记录&分享 各位创意达人,握紧你的画笔(咳咳,键盘),因为Stable Diffusion 3的预览版正在向咱们招手!这不仅仅是一个更新,这是一次反动,带着更高级的多主题了解、更清晰的图像品质和更聪慧的文字拼写能力,咱们的AI小伙伴学会了更多花色。模型从玲珑的800M到宏大的8B参数,堪称是小身材大能量。不论你是想制作一幅简略的插画还是打造一个简单的视觉世界,Stable Diffusion 3都能满足你。它的推出体现了咱们的初衷:让每个人都能用上高大上的AI工具。 先看看成果:算法可能实现对物体的轻松替换,背景替换,指标物体移除等等。还能够生成背景和动画。当然这里还是有一点点小瑕疵,比如说小鱼的游动还是有点假,可能辨别出来。当然也曾经是十分大的提高了这是图片生成的成果: 能够看到画面成果拉满,十分丑陋且真切! 那些急不可待想要尝鲜的敌人,别急,Stability AI曾经筹备了自托管服务和开发者平台API,等正式版公布前你就能够先玩起来。对于社区的反馈,咱们听到了各种声音:Reddit上曾经有人放心Stability AI会滤掉一些敏感内容;还有小伙伴对这个模型能听话到什么水平拍案叫绝。当然,对于可能的审查和开放性问题,大家也有本人的认识。Stable Diffusion 3就像是在技术的马拉松中冲刺的选手,不仅仅跑得快,还要确保跑得正。Stability AI心愿这个工具不仅能让你的创造力爆棚,也能放弃一个平安、衰弱的数字环境。链接在此: https://stability.ai/news/stable-diffusion-3 下次见 祝大家新年快乐! Happy New Year! 欢送关注和分享 关注微信公众号DeepGoAI

February 24, 2024 · 1 min · jiezi

关于程序员:循环掌控深入理解C语言循环结构高效实现重复性任务

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 引言后面贝蒂带大家理解了抉择构造,明天就来为大家介绍循环构造,也就是咱们相熟的while,do while,还有for的用法。只有给定的条件为真,C 语言中的 while 循环语句会反复执行一个指标语句。它的流程图大抵如下: 1.while1.1 while的用法while循环的个别模式为: while(表达式) {语句块;} 代码会先判断表达式的内容,如果为真(非0),则执行语句块的内容,而后再次判断表达式的内容......始终到表达式的内容为假(0),跳出循环,执行其余语句。个别条件下,表达式执行次数比循环体外部语句块执行次数多1,因为最初一次判断表达式内容为0,跳出循环。 举个简略的例子: //计算1~100的和#include<stdio.h>int main(){ int i = 1; int sum = 0; while (i <= 100)//判断条件,当i大于100跳出循环 { sum = sum + i; i++;//判断条件 } printf("%d\n", sum); return 0;}1.2 死循环循环语句有一个常见的谬误那就是陷入死循环,即条件为永真,循环始终不进行,下列就是一种简略的死循环: #include<stdio.h>int main(){ while (1) { printf("陷入死循环啦\n"); } return 0;}这段代码会始终打印“陷入死循环啦” 2. do while2.1 do while的用法除了while,C语言还有一种类似的do while的语法的构造,它的构造与while语句相似。do-while循环的个别模式为: do{语句块;}while(表达式);do-while循环与while循环的不同在于:它会先执行“语句块”,而后再判断表达式是否为真,如果为真则持续循环;如果为假,则终止循环。因而,do-while 循环至多要执行一次“语句块”。2.2 简略的例子输⼊⼀个正的整数,逆序打印这个整数的每⼀位例如:输⼊:1234,输入:4321输⼊:521,输入:125 剖析: 1.咱们要想逆序打印一个正整数,首先咱们要先失去每一位的数字。 2.要失去每一位数字,咱们能够先定义一个整数n,输入n%10,而后将n/10。 3.反复步骤2,直到n=0,也就是达到咱们的循环条件。 ...

February 23, 2024 · 3 min · jiezi

关于程序员:OpenAI-Sora-如何使用最新详细教程新手小白必看

Sora 是什么?2024年2月16日,OpenAI 在其官网下面正式发表推出文本生成视频的大模型 Sora: https://openai.com/sora (PS:目前 openai 官网还未凋谢 sora 灰度,不过依据文生图模型 DALL·E 案例,肯定是先给 ChatGPT Plus 付费用户应用,须要注册或者降级 GPT Plus 能够看这个教程: 降级 ChatGPT Plus 的教程 ,一分钟实现降级 Sora可能依据简略的文本形容,生成高达60秒的高质量视频,使得视频创作变得前所未有的简略和高效。 本文将为您提供对于如何应用Sora的最新具体教程。 2. Sora 视频案例Sora的利用范畴十分宽泛,从教育教学、产品演示到内容营销等,都能够通过Sora来实现高质量的视频内容创作。 上面是 OpenAI 官网公布的利用案例: 1.Prompt: A stylish woman walks down a Tokyo street filled with warm glowing neon and animated city signage. She wears a black leather jacket, a long red dress, and black boots, and carries a black purse. She wears sunglasses and red lipstick. She walks confidently and casually. The street is damp and reflective, creating a mirror effect of the colorful lights. Many pedestrians walk about.翻译:一位时尚的女性走在东京街头,四周是和煦闪亮的霓虹灯和生机四射的城市标识。她衣着一件彩色皮夹克,一条长长的红色连衣裙,搭配彩色靴子,并背着一个彩色手提包。她戴着墨镜,涂着红色口红。她步履自信,悠然自得地走着。街道湿润而反光,呈现出丰富多彩的灯光的镜面成果。许多行人在街上走动。 ...

February 23, 2024 · 3 min · jiezi

关于程序员:Linux操作系统中软件安装

在零碎中,应用软件是必不可少的,比方一些社交软件,影音娱乐软件,那么咱们Windows中装置软件办法次要有两种:第一种是从网站上下载安装包,双击关上安装包后依照提醒一步步操作实现装置;第二种是从微软利用商店下载应用程序,只需点击下载按钮,利用商店就会主动装置应用程序。 在Linux操作系统中,因为存在很多产生版本,所以往往会呈现在一种Linux发行版本中的软件应用,转换到另一种的发行版本就不能失常应用。因而在Linux操作系统中装置软件通常有多种办法,其中包含应用RPM包管理器。RPM(Red Hat Package Manager)是一种在基于Red Hat的Linux发行版中罕用的软件包管理系统。应用RPM,用户能够装置、降级、查问和删除软件包,它提供了不便的形式来管理软件依赖关系和版本。 RPM包管理器是“Red Hat Package Manager”的缩写,只管其名称中蕴含“Red Hat”,但其原始设计理念是开放式的。除了Red Hat Linux,其余散发版本如OpenLinux、S.u.S.E.以及TurboLinux等也采纳了RPM。因而,RPM能够被认为是Linux行业中的一个规范。作为一个软件包管理工具,RPM治理着零碎已装置的所有RPM程序组件的材料。这意味着,通过RPM,用户能够不便地装置、卸载、降级和治理各种软件包。 应用RPM,用户能够确保软件包的一致性和完整性,因为RPM会解决软件包之间的依赖关系,并确保所有必要的文件都被正确地装置到零碎中。此外,因为RPM数据库的存在,用户还能够不便地查问已装置的软件包的信息。 RPM也提供了软件商店,咱们能够在软件商店中搜寻海量的利用,只须要在浏览器中关上:rpmfind.net即可。

February 23, 2024 · 1 min · jiezi

关于程序员:冲突管理最佳实践

任何团队都无奈防止抵触,如何无效治理抵触,将抵触转化为团队成长和凝聚的能源,是任何一个团队管理者的必修课。原文: Best Practices for Managing Conflict in Engineering Management 抵触在任何组织中都不可避免,工程团队也不例外。作为工程主管,解决抵触是最具挑战性的工作之一。然而,如果解决切当,抵触能够带来翻新、改善团队生机、进步生产力。本文将探讨在工程治理中治理抵触的最佳实际。 理解抵触的实质在深入探讨抵触管理策略之前,理解什么是抵触以及抵触产生的起因至关重要。简略来说,抵触源于一致。一致能够是观点、利益或价值观上的差别。 在工程团队中,抵触可能源于对技术决策、我的项目优先级或资源分配的一致,也可能源于集体一致或沟通阻碍。 无论起因如何,如果不加以解决,抵触都会产生重大的负面影响,包含生产力降落、人际关系受损、压力增大以及工作环境好转。 采取积极主动的办法治理抵触的第一个做法是积极主动。须要发明一种环境,在这种环境中,抵触不易产生,即便产生了,也能失去建设性解决。 促成开放式交换:激励团队成员公开分享想法、担心和反馈。定期团队会议、一对一交换和开放政策都能促成这种交换。设定明确冀望:确保团队理解他们的角色、责任和冀望规范。激励合作:造就合作文化,让团队成员群策群力、相互支持。提供培训:为团队提供沟通、会谈和解决抵触技巧方面的培训。只管尽了最大致力,抵触还是不可避免会产生。以下是一些在抵触产生时解决抵触的最佳做法。踊跃聆听当抵触产生时,第一步是踊跃聆听所有相干方的意见。不仅包含聆听话语,还包含理解潜在感触、需要和关切。 换位思考:试着从每个人的角度去了解状况。提出问题:提出开放式问题,以便更深刻理解问题。转述:转述你听到的内容,以确认你的了解。偏心调解作为管理者,你的职责是以偏心中立的形式调解抵触,防止偏袒任何一方或过早做出判断。 促成对话:激励抵触各方间接交换,以尊重的形式表白本人的观点。关注趣味,而非立场:激励团队成员表白他们潜在的需要和担心,而不是保持他们最后的立场。生成选项:帮忙无关各方提出解决抵触的多种计划。解决问题并学习一旦达成解决方案,要害是要确保解决方案失去执行,抵触不再产生。 跟进:监测状况,确保约定的解决方案失去执行。反思和学习:反思抵触及其解决方案。能够学到什么?今后如何预防相似抵触?不要回避艰难的对话管理者犯的最大谬误之一就是回避艰难的对话。然而,漠视抵触不仅不会让抵触隐没,反而往往会让抵触变得更加重大。及时、间接的解决抵触,同时尊重和偏心的看待各方。 利用多样性多元化团队会带来不同的观点和想法,这可能会导致抵触。然而,这种多样性也能够成为一种力量,激励团队将差别视为学习和翻新的机会,而不是抵触的本源。 须要时寻求帮忙如果抵触特地具备挑战性,或者造成了严重破坏,不要犹豫,寻求帮忙。能够向下级经理、人力资源专业人士、内部调解员或教练寻求帮忙。 理解何时降级尽管大多数抵触能够在团队层面失去解决,但在某些状况下,有必要将抵触降级。这种状况可能是抵触波及重大不当行为(如骚扰或歧视),或对集体以及团队造成重大挫伤。 造就尊重文化无效治理抵触的外围是尊重文化,包含即便在出现分歧时,也要以善意和了解的态度看待对方,还包含尊重多样性和不同观点。 情商的作用情商(EQ)在抵触治理中起着至关重要的作用,包含自我意识、自我调节、同理心和社交技巧。 自我意识:意识到本人的情绪,以及这些情绪会如何影响你对抵触的反馈。自我调节:无效治理本人的情绪,在抵触中放弃沉着和镇定。同理心:了解并分享别人的感触,有助于弛缓抵触。社交技能:使用无效的沟通和人际交往技能来治理和解决抵触。均衡自信与单干无效治理抵触须要在自信与单干之间获得均衡,包含保持本人或团队的需要和利益,同时也要设法了解和满足别人的需要。 心理平安是团队成员之间的信赖和尊重感,在这种安全感下,集体能够释怀表白本人的想法、承担风险,甚至犯错,而不用放心受到惩办或讥笑。心理平安水平高的团队更有可能建设性的解决抵触,因为团队成员在公开和尊重的表白不同意见时会感到平安。 常见抵触情景和解决策略情景 1:技术决策上的一致构想这样一种状况:两位资深工程师Alice和Bob在为一个新我的项目做技术选型时产生了一致。Alice认为,采纳新的尖端技术是最好的办法,因为它能提供先进的性能,并使我的项目面向未来。而Bob则主张应用团队相熟的成熟技术,以最大限度升高危险并按时交付。 解决策略在这种状况下,作为经理,你的职责是促成Alice和Bob之间的建设性对话,激励他们表白本人的观点,关注潜在的利益和担心,而不是保持本人最后的立场。 例如,Alice的趣味可能是翻新和放弃竞争力,而Bob的趣味可能是风险管理和高效交付。意识到这些根本利益能够开拓新的抉择,兴许有方法以一种无限的、可控的形式将新技术融入其中,从而在治理危险的同时实现翻新。或者,团队能够投资于培训和反对,以升高与新技术相干的危险。 情景 2:性情抵触再看另一种状况,两个团队成员Carlos和David产生了性情抵触。Carlos性格外向,敢说敢做,喜爱在公开场合集思广益。David性格内向,喜爱宁静的集中精力,在分享想法之前喜爱三思而行。他们的不同格调导致了关系紧张和误会。 解决策略在这种状况下,重要的是促成Carlos和David之间的对话,帮忙他们理解彼此的工作格调和需要,激励换位思考和相互尊重。 例如,能够激励Carlos在探讨前给David提个醒,尊重他对宁静工作工夫的需要。另一方面,能够激励David表白本人的想法,即便这些想法还没有齐全造成,也要为团队的头脑风暴会议做出奉献。 通过了解和容纳彼此的格调,Carlos和David能够将差别转化为劣势,造就出更加多元化和容纳的团队文化。 情景 3:优先事项的抵触在另一种状况下,软件工程师Emma感到很丧气,因为她常常被拉去解决紧急的谬误修复工作,导致她没有工夫解决本人的次要我的项目。反对工程师Frank则认为,解决客户问题应该始终是首要任务。 解决策略在这种状况下,明确角色、责任和优先事项至关重要。主管可能须要染指并做出决定,或与Emma和Frank探讨如何均衡客户的即时需要和我的项目的长期指标。 或者有方法简化谬误修复流程,或为其调配特定工夫,从而防止打断Emma的我的项目工作。另外,我的项目团队和反对团队之间可能须要额定的资源或更好的协调。 论断在工程治理中治理抵触是一项简单的工作,须要从无效沟通、踊跃聆听到换位思考、急躁和偏心等多方面的技能。团队须要发明一种文化,在这种文化中,人们不会害怕或回避抵触,而是将抵触视为学习、成长和翻新的机会。 请记住,抵触自身并不是好事。如果解决切当,能够带来更好的决策、更高的创造力、更牢固的关系以及更投入、更富有成效的团队。作为工程经理,你的职责不是打消抵触,而是建设性的治理抵触,将挑战转化为团队成长和胜利的时机。 你好,我是俞凡,在Motorola做过研发,当初在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓重的趣味,平时喜爱浏览、思考,置信继续学习、一生成长,欢送一起交流学习。为了不便大家当前能第一工夫看到文章,请敌人们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的反对和能源,激励我继续写下去,和大家独特成长提高!本文由mdnice多平台公布

February 23, 2024 · 1 min · jiezi

关于程序员:JavaWeb之分布式事务规范

J2EE包含了两套标准用来反对分布式事务:一种是Java Transcation API(JTA),一种是Java Transcation Service(JTS) JTA是一种高层的、与实现无关的、与协定无关的规范API。 <!-- more --> JTS规定了反对JTA的事务管理器的实现标准。 两阶段提交协定多个分布式数据库,有一个全局的事务管理器来协调各个数据库的事务提交,为了实现分布式事务,须要两个阶段 第一阶段:全局的事务管理器向各个数据库收回筹备音讯,各个数据库须要在本地把所有都筹备好,执行操作,锁住资源,记录redo/undo日志,但不提交第二阶段:如果所有的数据库都报告说筹备实现,全局事务管理器告诉事务提交,如果有任何一个数据库没有筹备好,就会回滚然而在高并发的状况下这样做的代价太高,而采纳了音讯队列,来保障最终一致性 JTA Javax.transcation中 UserTranscation接口 Status接口 Synchronization接口 Transcation接口 https://zhhll.icu/2020/javaweb/根底/8.事务处理/本文由mdnice多平台公布

February 23, 2024 · 1 min · jiezi

关于程序员:Linux操作系统中软件安装用RPM包管理器安装软件步骤

装置软件的个别步骤如下:1.关上终端,作为root用户或应用sudo命令获取管理员权限。2.应用RPM命令进行软件包的装置。例如,应用“rpm -ivh 软件包名称.rpm”命令来装置软件包,其中“-i”示意装置,“-v”示意显示具体装置信息,“-h”示意以适当的哈希标记显示装置进度。 常用命令如下: 除了RPM包管理器外,Linux中还有其余罕用的软件包管理工具,如APT(Advanced Packaging Tool)和YUM(Yellowdog Updater Modified)。这些工具提供了更高级的软件包治理性能,能够主动解决依赖关系,并提供更不便的软件包搜寻、装置和降级选项。无论应用哪种软件包管理工具,用户在装置软件时应留神以下几点:*确保从牢靠的起源获取软件包,以防止装置恶意软件或蕴含破绽的软件。*仔细阅读软件包的形容和装置阐明,确保理解软件的性能和所需的依赖项。*定期更新已装置的软件包,以确保取得最新的平安修复和性能改良。请留神,具体的软件装置步骤可能因应用的Linux发行版和包管理器而有所不同。因而,在实际操作时,倡议参考相干文档和官网指南以取得精确的装置阐明。 另外须要留神的是,装置软件通常须要管理员权限。因而,在装置软件时,可能须要应用sudo命令来获取管理员权限。此外,还有一些其余的软件装置形式,如源代码编译装置。这种形式须要从软件的官方网站下载源代码包,而后依照阐明进行编译和装置。这种形式绝对简单,个别实用于特定需要或包管理器中没有提供的软件包。喜爱点赞珍藏,如有疑难,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

February 23, 2024 · 1 min · jiezi

关于程序员:Vue3-学习笔记Day3

写在后面本文为尚硅谷禹神 Vue3 教程的学习笔记。本着本人学习、分享别人的态度,分享学习笔记,心愿能对大家有所帮忙。举荐先按程序浏览往期内容:\1. Vue3 学习笔记(Day1) \2. Vue3 学习笔记(Day2) ::: block-1 目录4 路由 4.1 对路由的了解4.2 根本切换成果4.3 两个留神点4.4 路由器工作模式4.5 to的两种写法4.6 命名路由4.7 嵌套路由4.8 路由传参4.9 路由的props配置4.10 replace属性4.11 编程式导航4.12 重定向:::4 路由4.1 对路由的了解P30:https://www.bilibili.com/video/BV1Za4y1r7KE?p=30 4.2 根本切换成果P31:https://www.bilibili.com/video/BV1Za4y1r7KE?p=31Vue3中要应用vue-router的最新版本,目前是4版本。 路由配置文件代码如下: import {createRouter,createWebHistory} from 'vue-router'import Home from '@/pages/Home.vue'import News from '@/pages/News.vue'import About from '@/pages/About.vue'const router = createRouter({ history:createWebHistory(), routes:[ { path:'/home', component:Home }, { path:'/about', component:About } ]})export default routermain.ts代码如下: import router from './router/index'app.use(router)app.mount('#app')App.vue代码如下 <template> <div class="app"> <h2 class="title">Vue路由测试</h2> <!-- 导航区 --> <div class="navigate"> <RouterLink to="/home" active-class="active">首页</RouterLink> <RouterLink to="/news" active-class="active">新闻</RouterLink> <RouterLink to="/about" active-class="active">对于</RouterLink> </div> <!-- 展示区 --> <div class="main-content"> <RouterView></RouterView> </div> </div></template><script lang="ts" setup name="App"> import {RouterLink,RouterView} from 'vue-router' </script>4.3 两个留神点P32:https://www.bilibili.com/video/BV1Za4y1r7KE?p=32路由组件通常寄存在pages 或 views文件夹,个别组件通常寄存在components文件夹。通过点击导航,视觉效果上“隐没” 了的路由组件,默认是被卸载掉的,须要的时候再去挂载。4.4 路由器工作模式P33:https://www.bilibili.com/video/BV1Za4y1r7KE?p=33history模式长处:URL更加好看,不带有#,更靠近传统的网站URL。毛病:前期我的项目上线,须要服务端配合解决门路问题,否则刷新会有404谬误。 ...

February 23, 2024 · 2 min · jiezi

关于程序员:解密C语言选择结构掌握条件语句与分支逻辑的利器

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 引言C语⾔是结构化的程序设计语⾔,这⾥的构造指的是程序构造、抉择构造、循环构造。为什么有着三种构造呢,大家其实能够设想一下,生存中的绝大数事件都能够形象着三种构造,而咱们明天要给大家介绍的就是三大构造之一——抉择构造 抉择构造要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必须的)和条件为假时要执行的语句(可选的)。它的流程图大抵如下: 1. 逻辑运算符在解说什么是抉择构造前,咱们要先理解一些C语言常见的逻辑运算符。 ### 1.1 逻辑取反运算符 逻辑取反运算符的模式特地简略,只须要在须要进行取反操作的变量前+!: !(变量名)假如有变量a,它的取反规定如下: a!a假真真假1.2 与运算符在C语言中,并不反对数学上的且,而是由一个运算符&&代替的。比如说数学上的0<x<10写成C语言的模式就是x>0&&x<10。 假如有两个变量a,b,与运算符的运算规定如下: aba&&b假假假假真假真假假真真真1.3 或运算符在C语言中,或者也有专门的运算符示意——|| 假如有两个变量a,b,或运算符的运算规定如下: aba\\b假假假假真真真假真真真真2. if......else语句2.1 if语句if语句是最简略抉择构造语法之一,他的语法结构如下: if ( 表达式 )语句表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。 C语言特地规定:非零为真,零为假。 例⼦:输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数#include<stdio.h>int main(){ int num = 0; scanf("%d", &num); if (num % 2 == 1) printf("%d 是奇数\n", num); return 0;}首先输出一个值(num),而后进入if语句判断,如果num%2等于1,条件就为真,就会打印;反之,条件为假,就不会进入打印。特地留神:C语言中判断是否相等的运算符是==,=是赋值符号。2.2 else咱们持续以下面例子为列,如果⼀个数不是奇数,那就是偶数了,如果任意⼀个整数,咱们要分明的判断是奇数还是偶数怎么表⽰呢?这⾥就须要 if...else... 语句了,语法模式如下: if ( 表达式 )语句1else语句2所以下面的例子能够改写成如下代码: #include<stdio.h>int main(){ int num = 0; scanf("%d", &num); if (num % 2 == 1) printf("%d 是奇数\n", num); else printf("%d 是偶数\n", num); return 0;}默认在 if 和 else 语句中默认都只管制⼀条语句2.3 多个if else的应用if else 语句也能够多个同时应用,形成多个分支,模式如下: ...

February 22, 2024 · 4 min · jiezi

关于程序员:RTC-免费用助力探索社交出海最短变现路径融云-1V1-音视频送福利

在社交赛道,1V1 业务是最好的切入点。 对于初创公司来说,1V1 业务的技术老本和经营老本绝对可控,并且具备与秀场直播等业务交融拓展的微小空间。将来,置信 1V1 业务会吸引更多开发者投身其中。 一位社交出海经验丰富的从业者曾在“融云社交泛娱乐出海赋能会”如是表白。投入可控、变现门路清晰、业务空间广大的 1V1 业务始终是开发者入局社交泛娱乐赛道的首选品类,也因社交效率高、玩法丰盛等特点在寰球领有宽泛的受众根底。 依据 Google 数据,2019 年以来,社交利用在寰球下载增速放缓,但支出保持稳定增长。其中,约会类利用约占社交总收入的三分之二,1V1 社交和直播紧随其后。 由音视频通话能力撑持的约会和 1V1 社交利用在商业价值变现方面的能力失去了无力验证。 融云去年上线的 CallPlus SDK,作为新一代音视频通话场景化 SDK,残缺封装了呼叫场景业务流程,就是反对开发者疾速上线高清晰、低提早的约会交友、视频匹配等利用的利器。移步【融云寰球互联网通信云】收费获取 为更好助攻开发者试验 1V1 社交这条出海最短变现门路,融云更于近期推出了【限时收费】流动,给 1V1 开发者送上一份重磅开年大礼。 首次开通融云 RTC 服务的 1V1 客户有福啦!2024 年 2 月 21 日~2024 年 6 月 30 日,首次开通融云 RTC 音视频通话服务的 1V1 新客(蕴含新注册及 IM 老客户首次增购 RTC 服务),前三个月免月性能使用费,每月赠送 20 万分钟通话时长;不限音视频,视频最高分辨率可反对 1080P;“所见即所得”,无需因分辨率不同档位等起因做赠送时长换算抵扣。 尤其是对灵便麻利的中小团队来说,融云本次限时优惠活动不仅从费用上让利,还通过高品质产品性能、残缺解决方案等为团队下马我的项目扫清阻碍,提供全面助力。 性能稳固融云 CallPlus 上线了独立后端 CallServer 服务,为 1V1 场景影响用户体验感和业务晦涩度的接通率、首帧工夫两大要害指标提供了弱小撑持和保障。    依据行业标准,1V1 业务由匹配呼叫、接听、结算等环节形成。其中,用户呼叫期待的阈值个别为 2 秒,超过这一时间将导致用户勾销呼叫,间接影响业务体现。而在主播批准接通后的画面首帧工夫上,则以 1 秒内为体验优劣分界值。在这方面,不同于传统业务架构,融云的独立 CallServer 服务,将为用户提供极致晦涩的通话体验。 传统架构:通过 IM 音讯下发呼叫信令,当音讯量并发较大时,呼叫相干信令达到将会产生肯定延时,导致接通耗时较长。 ...

February 22, 2024 · 1 min · jiezi

关于程序员:2024开工探讨工作的意义是什么

前言刚刚完结春节几天假,大年初七返回到深,睡醒后我关上手机,发现到处都是OpenAI在2月15日公布Sora模型的新闻或视频。比如说,OpenAI深夜公布首个文生视频模型Sora,事实将被彻底颠覆,还有的示意内容创作行业曾经永远的扭转了……照网络上这些博主的写法,感觉连远在大洋彼岸的五星级上将麦克阿瑟醒来后,都得上街要饭。在小年初九动工之际,趁人没来齐,事件不多,就简略探讨一下对于工作的话题。 工作是什么能说分明工作是什么,应该是有了比拟清晰的职业规划开始的,有人牵引真是人生幸事,这里要说说我刚进去工作的事。 过后的技术总监对咱们要求极高,除了要实现本职工作外(过后我的项目并不多),每天要写技术博客发给他看,而上班的时候他还要像审作业一样,把咱们每个人叫到一起,对每个人博客里提到的技术进行实际和解说,一到周五,每个人还要筹备一个PPT分享本人学习到的技术。 在同一批进去的人里,可能因为我年龄小,他最看重的是我,但有一天我感觉前端安闲一点,于是我就跟他说我想转前端。而后他就独自跟我聊了很久,我记得很分明的是,他说做前端做到顶,可能就只是一个部门组长。 而后端不一样,大部分开发我的项目的主导权都是在做后端的手里。做后端能分明业务,离钱近也更靠近外围,天花板更高,而且会后端简直也就会前端,当前违心的话还能本人单干。从那以后我也就按他的形式来了。 这里我没有要引战的意思(听我解释),因为当年的前端,MVVM框架在一线大厂都没遍及,小程序还没进去,就是刚从后端中剥离进去的新兴岗位,和今日前端不是一回事。当然今日后端也非来日后端,就说是产能过剩吧,轮子多,各种框架随随便便就能堆出一个零碎,所以当初的外围也逐步往算法岗上转移了。 说了这么多,也没说清工作是啥,其实我想表述的是,如果有了成长布局,那么就是对本人工作最好的了解。(有点牵强) 为什么而工作到这里就开始进入工作意义的主线剧情了,工作为了什么? 本能脑说,工作为了吃饭啊;情绪脑说,工作为了诗与远方;感性脑说,工作为了发明价值。 而不同人也有不同的说法,有的人说工作就是为了赚更多的钱,也有的人说工作的目标是为社会做奉献。 三种不同脑的分配比例决定了事物的后果走向,工作的意义其实也能够回升到人生意义,如果简略划分的话,人也就两个阶段,以前是读书,起初是工作。 尽管也有人探讨读书的意义,然而读书的意义还是很明确的,后期能够被动地接管课程内容,当前好好考试,考个好大学就能够。 如果有幸,在学校就提前开悟,那么祝贺你,可能提前感触常识的神奇。不至于后知后觉地认为以前学的数理化,语文,历史,天文,政治切实太有意思了。当初我甚至认为连音乐乐理地编排都十分乏味,怎么有人能把这么形象的声音拆解成这么成体系的货色。 扯远了,持续回到工作的意义,就联合一下过年回家的感悟说说。这次回去,我发现很多村庄的学校都曾经撤掉了,以前一个大队至多一所,当初一个镇都找不出几所小学了,大部分并到了镇里小学。而农村也仍然还有装修奢华的小洋房,并且路也修得不错,周围环境也粗劣起来了。 沿着路始终看,我也始终在想,学校都没了,还得接孩子去当地上学,老家干嘛整这么好?旁边的敌人给出了解答,户与户间比,村与村之间也比,这种攀比风在当地相当之强烈,因为这些也是人们工作的意义。 这一景象,我感觉是受儒家思想影响。在儒家文化中,人不是为本人而活的,从某种意思来说,人是为本人的社会评估而活。大部分人工作苦楚,能够始终在被社会的规范绑架,比方社会要求男人工作了就要买房买车,不然没资格去结婚;社会要求女人工作后30岁了就得把本人嫁出去不然就不失常。 但这时,脑子里就冒出了一个更大的纳闷? 这些所谓的“规范”到底是哪一类人提出来的,他们能失去什么,为什么提出后就能和社会中少数人达成共识而造成 “规范” ? 工作始终都在扭转打开人类历史,晚期的石器时代就不说,因为任何工作迹象都曾经不在了。而农业时代和工业时代,在历史书上的划分尽管已是上世纪或几世纪前的事。但又因为社会的天然分流效应,咱们还是能够看到传统农耕和传统重工的工作形式,工作演变大家也是引人注目。 有时候我在想,咱们本就应该说一句话就产出一幅画,一个视频或是一段程序,甚至屋子和食物,为什么非得学那些反人类的工业软件和机器呢? 牢骚话,倒退是有阶段性的,因为咱们懒,咱们才想让工作变得更安闲。工作形式的扭转是必然事件,那么工作求稳就是伪命题了,咱们是被动地承受企业价值观,参加一场留存比赛,并且企业也在一直调整中。 就拿一些寻求转型的企业来说,他们千方百计数字化。只有数字化了,就能够进行复制流传和计算;只有能够进行计算了,就能够进行数字建模,就能够自动化了;能够自动化了就能够规模化;只有规模化了,就能够扭转整个行业。

February 22, 2024 · 1 min · jiezi

关于程序员:妨碍有效沟通的5种认知谬误

在沟通过程中,某些认知舛误会让咱们看不到实在的信息,做出谬误的沟通行为,既挫伤到本人和他人,又无奈达成真正的沟通用意。本文介绍了5种认知舛误,如果在沟通过程中可能无效辨认并克服这些舛误,就能够达成更好的沟通成果。原文: Want to Communicate Effectively at Work? Eliminate These 5 Cognitive Distortions 在上一篇对于认知舛误扭曲的文章中,介绍了5种侵害人们清晰思考的能力、影响决策过程的认知舛误。 本文将介绍影响沟通的5种认知舛误: 天道酬勤舛误(Heaven’s reward fallacy)常识的咒骂(Curse of knowledge)根本归因谬误(Fundamental attribution error)扭转舛误(Fallacy of change)自行车棚效应(Bikeshedding)让咱们开始吧。 天道酬勤舛误(Heaven’s reward fallacy)咱们都心愿本人的致力工作能失去褒扬,都心愿被观赏、被留神、被处分。但咱们所做的大部分工作往往没有被留神到。做好事并不总能失去回报,致力工作、就义本人、在无休止的工作中耗尽本人,并不会更胜利。 寻求内部处分和内部认可只会导致悲观、愤恨、丧气和恼恨,因为事实往往与咱们的冀望不统一。 那些受天道酬勤谬论影响的人很难对他人说不。他们认为,如果始终帮忙他人,他人也会给他们回报,或者如果他们总是乐于助人,他人也会在他们须要的时候伸出援手。 但世界并不偏心,一直给予他人并不能保障有回报。 天道酬勤舛误影响认知的例子假如你正在领导一个大我的项目。你认为这个我的项目是你展现技能、证实价值,并在职业倒退上更上一层的机会。所以你加倍努力,就义家庭工夫,甚至在周末和深夜工作,以确保没有任何事件障碍我的项目的胜利。但就在最初交付的前几个星期,公司决定终止这个我的项目。 组织外部重组导致公司策略的变动,已经被认为十分有价值的我的项目不再有用了。 你感觉曾经做了被要求做的事,公司扭转策略不是你的错。你认为迄今为止所做的所有致力和就义都必须失去处分,当你发现没有取得冀望的处分的时候,你感觉到了愤恨、悲观和苦楚。 如何解决?为了防止这种认知舛误的影响,不要用想要达到的具体后果来思考你的致力。相同,要依据正在获得的提高、正在学习的货色以及正在晋升的能力来构建。 通过寻求外在认可而不是外在的价值掂量,通过从新定义从绩效到学习的处分,能够将你的行为与你的准则和价值观保持一致,并将精力用于变得更好,而不是寻求某个特定职位、处分或认可。 简而言之,将输出与输入拆散。 常识的咒骂(Curse of knowledge)"常识的咒骂"是一种认知偏见,指的是那些在特定畛域或某些畛域领有渊博常识的人,会谬误的认为其他人在相干畛域领有与本人雷同的背景和常识。 被常识咒骂使得与别人分享会变得有效,大多数人要么不了解,要么记不住信息。因为晓得这些常识会让你难以想象其他人没有达到本人的程度,而他们还有很多事件不晓得。不晓得他人的心理状态会造成传播的信息和他人了解的信息之间脱节。 那些受常识咒骂影响的人应用形象的语言,在话题之间切换而没有建设明确的分割,或者应用只有对话题有深刻理解的人才能了解的短语和行话。 咱们中许多人都有特定畛域的专业知识。成为某方面的专家意味着咱们对细微差别和复杂性越来越着迷。这时,常识的咒骂开始起作用了,咱们开始遗记不晓得本人晓得什么是什么感觉。——奇普和丹·希思《行为设计学》常识的咒骂影响认知的例子假如你是一名高级工程师,负责领导一名刚刚退出团队的高级工程师。在常识的咒骂下,你可能会跳过上下文,不解释术语或团队中某些事件是如何实现的。 在你的事件上成为专家,并且花了很多工夫把它做好,这会让你遗记刚开始的时候你并不是专家。当高级工程师对你刚刚说的话或如何做某件事无所不知时,他们无奈跟上你的节奏,而这会减少你的挫败感。 如何解决?能够应用费曼技术防止这种认知扭曲的影响,就像你在和一个5岁孩子谈话一样,关注基本概念和它们之间的关系,防止应用简单词汇和术语,应用容易了解的单词和短语。 简而言之,如果你是某一特定畛域的专家,或者是一位心愿无效沟通的领导者,请记住你当初所晓得的与你以前所晓得的之间的差距,并应用简略的语言来传播想法和策略。 根本归因谬误(Fundamental attribution error)根本归因谬误或归因偏见是一种认知扭曲,在这种状况下,咱们在没有剖析导致其行为的情境因素的状况下,就对人们做出判断或贴上标签。 咱们对一个人理解得越少,就越容易给他们贴标签,把他们的行为归因于性情,而后保持这些假如,而不思考可能的限度和束缚。 当共事回绝你的会议邀请时,你会感觉无礼吗? 当共事回绝帮忙时,你会说他们高傲吗? 以这种形式判断他人是一种有缺点的思维形式。应用无限或不残缺的信息,而不思考其余可能导致其行为的观点或因素,可能会毁坏沟通、影响单干,甚至使某人失去工作。 咱们犯的谬误是认为性情是对立的,无所不包的,这与咱们解决信息的形式中的盲点十分类似。心理学家称这种偏向为根本归因谬误(FAE,Fundamental Attribution Error),这是一种奇异的说法,当谈到解释别人行为时,人类总是会犯高估根本性格特征重要性、低估特定状况和背景的重要性的谬误。——马尔科姆·格拉德威尔,《引爆点》 根本归因谬误的产生是因为大脑在主动驾驶,而它抉择了集体归因(简略和主动的),而不是情境归因(简单和成心的)。没有通过三思而行的思考,咱们就会走捷径。 当咱们给他人贴上难以相处、能干、懈怠、大意或愚昧的标签时,并没有发现自己的判断有什么问题,因为咱们置信本人对事实的认识。 根本归因谬误影响认知的例子假如你是一家在线教育公司的高管,有一个新的团队成员Rhea明天退出来领导新业务打算。 在与Rhea和其余高管的晨会上,你留神到Rhea总是心烦意乱。她仿佛很迷茫了,始终在看手机,而不是试图与别人交换。Rhea的妈妈住院了,她第一天下班就来了办公室,但当初很放心,期待着在医院关照她妈妈的丈夫的音讯。 在没有和Rhea交谈并了解她为什么心烦意乱的状况下,你可能会认为她不牢靠、高傲或不适宜这个角色。 如何解决?你无奈齐全打消根本归因谬误,因为它源于大脑应用捷径的必要性,这通常是必要和无益的,因为在很多流动中都不可能进行三思而行的思考,它太慢了。 然而,当危险很高的时候,能够通过问这些问题来防止根本归因谬误: 为什么这个人会有这样的行为?在什么状况下,我能够看到本人或别人以相似形式行事?是什么环境因素造成的?慢下来,暂停一下,寻找能够指向不同方向的证据,而不是默认设置。 简而言之,地图不是领土。故事里总有比你设想的更多的货色。 扭转舛误(Fallacy of change)这种认知扭曲随同着这样一种信念,即咱们的胜利和幸福取决于咱们四周的人,而扭转他们是取得咱们想要的货色的惟一路径。 只有老板不再对我发号施令,我能力在工作中感到高兴。 只有当我的队友不再拥护我,开始聆听我的意见,我的工作才会更有意义。 冀望他人扭转是一种谬论,给他人施加压力、操纵他们或激励他们扭转并不能保障幸福,因为真正的幸福不是外在的,而是来自心田。 ...

February 22, 2024 · 1 min · jiezi

关于程序员:Linux操作系统中软件安装

在零碎中,应用软件是必不可少的,比方一些社交软件,影音娱乐软件,那么咱们Windows中装置软件办法次要有两种:第一种是从网站上下载安装包,双击关上安装包后依照提醒一步步操作实现装置;第二种是从微软利用商店下载应用程序,只需点击下载按钮,利用商店就会主动装置应用程序。在Linux操作系统中,因为存在很多产生版本,所以往往会呈现在一种Linux发行版本中的软件应用,转换到另一种的发行版本就不能失常应用。因而在Linux操作系统中装置软件通常有多种办法,其中包含应用RPM包管理器。RPM(Red Hat Package Manager)是一种在基于Red Hat的Linux发行版中罕用的软件包管理系统。应用RPM,用户能够装置、降级、查问和删除软件包,它提供了不便的形式来管理软件依赖关系和版本。RPM包管理器是“Red Hat Package Manager”的缩写,只管其名称中蕴含“Red Hat”,但其原始设计理念是开放式的。除了Red Hat Linux,其余散发版本如OpenLinux、S.u.S.E.以及TurboLinux等也采纳了RPM。因而,RPM能够被认为是Linux行业中的一个规范。作为一个软件包管理工具,RPM治理着零碎已装置的所有RPM程序组件的材料。这意味着,通过RPM,用户能够不便地装置、卸载、降级和治理各种软件包。应用RPM,用户能够确保软件包的一致性和完整性,因为RPM会解决软件包之间的依赖关系,并确保所有必要的文件都被正确地装置到零碎中。此外,因为RPM数据库的存在,用户还能够不便地查问已装置的软件包的信息。RPM也提供了软件商店,咱们能够在软件商店中搜寻海量的利用,只须要在浏览器中关上:rpmfind.net即可。

February 22, 2024 · 1 min · jiezi

关于程序员:万界星空科技电子机电行业MES系统

电子行业在生产治理上具备典型的离散制作特点,采纳多种类、多批量或单件的生产组织形式。产品升级换代迅速,生命周期短,变更频繁,版本控制简单。同时产品的品种较多,非标准产品多,加工工序简单,客户需要不容易把握,订单往往交期短且长期插单景象频繁,导致生产过程管制艰难。电子机电行业MES是一种不可或缺的生产管理系统,电子机电行业MES可能无效地晋升企业的生产效率、降低成本、优化资源利用,并晋升企业的整体竞争力。对于电子机电行业的企业来说,引入MES是实现继续倒退和晋升竞争力的必要路径。 万界星空科技电子机电行业MES零碎,2000元/年起,已胜利用于上千电子机电生产厂家,有须要能够私信。 万界星空科技电子行业MES零碎功能设计:1、电子MES零碎制程防呆防错:通过生产模型的搭建,管制生产过程中非受权操作、上料谬误、站点误投、异样信息报警等。包含: 受权信息验证、班次人员验证、条码规定验证、操作流程验证、物料信息验证、完整性验证、可用性验证、存在性验证、冲突性验证、生产状态验证、兼容性验证等;2、电子MES零碎SMT贴片上料:进行SMT上料防错、缺料预警、物料追踪、物料盘点、钢板管控、锡膏管控、Feeder管控、MSD元件管控.对于领有SMT设施的企业,在施行数据采集和产品追溯、制程防呆后, SMT性能将是重点思考的性能。3、电子MES零碎生产进度监控与预警提醒:监控工单的达成状况,并评估对客户订单是否存在影响。在客户插单进来时,能够帮忙评估达交期。实时对要害指标进行监控,异样呈现时通过Mail、短信、看板等形式进行警示,变被动治理为被动治理,包含:Cpk指标、不良整机指标、缺点指标、直通率指标预警等;4、电子MES零碎车间看板治理:实时监控各时段产线的产量,实时监控各产线的直通率的状况,实时监控各产线缺点散布状况; 5、电子MES零碎产出剖析:针对机种、产品、工单、工段、产线、工序、设施七大维度,依照不同的工夫类型,如时段、班别、天、周、月,剖析投入产出的推移状况和不同对象的比照状况,以便追究出问题点和改善方向。如果发现同一产品在2条线生产,而其中一条产线的产出较多地超出另外一条产线,那么剖析高效率产线达成的起因就成为重点,找出优良的中央,而后进行推广。6、电子MES零碎良率剖析:针对机种、产品、工单、工段、产线、工序、设施七大维度,依照不同的工夫类型,如时段、班别、天、周、月,剖析不良率、直通率和 M的推移状况和不同对象的比照状况,以便追究出问题点和改善方向。如果发现差别,,那么差别点就成为了剖析的重点,找出优良的中央,而后进行推广。7、电子MES零碎一次交验合格率:产线的无效产出是否高,次要看的就是一次交验合格率。无效产出指的是能够销售给客户的良品,这些产品才是制作企业能够用于获利的。一次交验合格率低就意味着产线返工的状况要减少,更多的精力用在已有产品的补漏上,而不是新的产品的产出上,这样就会高的老本投入,而只有较低的产出。所以一次校验合格率往往成为品质管控的重点。8、电子MES零碎培修缺点剖析:根据柏拉图原理疾速找出需重点改善的缺点,并根据缺点与不良起因,缺点与解决方案,缺点与不良地位,缺点与责任部门的穿插剖析,找出无效的改善措施;对成品出厂后的销售和服务过程中品质相干问题进行无效治理,实现售后服务过程中的品质问题的本源追溯,将品质治理贯通于产品的整个生命周期。9、电子MES零碎在制品查问:实时监控产线的在制品状况,帮忙找出产线的瓶颈岗位。同时因为有了电子化的在制品数据,在交接班时,能够疾速实现数据的交接,缩短交接班的用时,进步生产筹备的效率。10、电子MES零碎数据接口:本零碎可实现与SAP 、ORACLE、用友、金碟等支流 ERP 零碎无缝集成,也可依据用户需要提供二次开发,满足成长型企业个性化治理的需要。11、电子MES零碎零碎权限:零碎用户治理、权限治理、日志治理、零碎设置、布告与告诉、在线短信息、数据备份复原、明码批改、ERP接口、LED接口等功能模块。 想要理解更多智能制作MES零碎信息,能够百度万界星空科技官网分割咱们哦,咱们能够为您演示以及发送更多相干案例。

February 22, 2024 · 1 min · jiezi

关于程序员:Python可视化工具集合来报道-下

6.Geopandas是一个弱小的天文空间数据处理与可视化库。它联合了Pandas和Shapely等库的性能,提供了对天文空间数据进行高效解决和可视化的能力。通过Geopandas,咱们能够轻松读取各种格局的天文空间数据,如Shapefile、GeoJSON等,并进行数据预处理、剖析和转换。同时,Geopandas还反对绘制地图和空间数据的可视化。咱们能够应用Geopandas疾速绘制各种类型的地图,如点图、线图、多边形等,并进行自定义款式和标注。此外,Geopandas还具备丰盛的空间剖析性能,如缓冲区剖析、空间叠加等,不便用户对天文空间数据进行进一步的剖析和解决。7.Seaborn是建设在Matplotlib根底上的统计数据可视化库。它通过简化和丑化Matplotlib的图表款式,使用户可能疾速创立具备业余外观的图表。Seaborn特地实用于摸索数据集中的关系和散布,反对绘制热力求、箱图、小提琴图等。 8.ggplot是一个基于R语言中的ggplot2库进行移植的Python可视化库。它以其简洁、优雅的语法格调而闻名,使用户能够应用更少的代码创立好看而高质量的统计图表。ggplot提供了丰盛的图形元素和统计变换选项,例如散点图、线图、柱状图等。通过应用不同的图层(layer)和分面(facet),用户能够轻松地依据数据的特点进行摸索和展现。ggplot的杰出之处在于其弱小的配置能力,使用户能够灵便地调整图表的细节,包含坐标轴、图例、标签等。不仅如此,ggplot还反对主题(theme)性能,用户能够依据需要定制图表的整体格调和款式。总之,ggplot是一款功能强大且应用便捷的可视化工具,实用于各种数据分析和数据展现的场景。9.Holoviews是一个高级可视化库,它可能疾速构建简单的可视化利用。与其余可视化库不同的是,Holoviews采纳面向对象的办法组织数据和可视化组件,使得使用者能够通过简略的代码实现弱小的可视化成果。Holoviews反对多种后端输入,包含Matplotlib、Bokeh和Plotly等,这意味着您能够依据须要抉择最适宜的输入平台。另外,Holoviews还提供了丰盛的交互式操作和自定义扩大性能,使得用户可能依据具体需要进行定制化展现。无论是探索性数据分析还是精美的数据报告,Holoviews都可能满足您的需要。10.Plotnine是基于ggplot2的Python移植版本。它采纳简洁、直观的语法格调,让用户可能轻松地绘制高质量的统计图表。借助Plotnine,用户能够通过几行代码疾速生成各种类型的图表,包含散点图、线图、柱状图等等。Plotnine也提供了丰盛的主题和选项,使用户可能自定义图表的外观和款式。不仅如此,Plotnine还反对数据的聚合和转换操作,进一步加强了数据可视化的灵活性和功能性。 喜爱点赞珍藏,如有疑问请进群交换,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85viUFgIqzkDY3OC&authKey=2SKLwlmvTpbqlaQtJ%2FtFXJgHVgltewcfvbIpzdA7BMjIjt2YM1h71qlJoIuWxp7K&noverify=0&group_code=721096495

February 22, 2024 · 1 min · jiezi

关于程序员:JavaWeb之会话管理

会话治理HTTP是无状态的协定,每次客户端拜访web页面时,都会关上一个独自的连贯到web服务器,服务器不会主动保留客户端申请的任何记录,须要应用cookie和session来将一系列的申请和响应关联起来,维持客户端和服务器之间的会话 <!-- more --> cookieCookie是服务器发送到浏览器并存储在计算机上的文本文件,用于追踪各种信息,记录在客户端,会在浏览器下次向同一服务器再发动申请时被携带并发送到服务器,使得无状态的HTTP协定记录了状态。浏览器能够禁用cookie,能够删除cookie,在服务器产生,作为响应头的一部分返回给客户端,浏览器收到cookie后,把cookie的键值写入到文本中,发送申请时浏览器会把cookie信息与申请发送给服务器 每个浏览器存储cookie地位不同,所以cookie不能跨浏览器cookie原理底层原理:WEB服务器通过在HTTP响应音讯中减少Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP申请信息中减少Cookie申请头字段将Cookie回传给WEB服务器 操作cookie创立cookie// 第一个参数是cookie的键,第二个参数是cookie的值Cookie cookie = new Cookie("name","value")resp.addCookie(cookie)获取cookieCookie[] cookies = req.getCookies();设置cookie的一些办法// 形容cookie的正文public void setComment(String purpose) { this.comment = purpose;}// 设置cookie实用的域名public void setDomain(String pattern) { this.domain = pattern.toLowerCase(Locale.ENGLISH);}// 设置过期工夫(单位是秒),如果不设置,cookie在以后session中无效// 如果设置生命周期会写在文件里// 如果不设置生命周期会写在浏览器内存里,浏览器敞开,cookie就没了public void setMaxAge(int expiry) { this.maxAge = expiry;}// 设置cookie实用的门路,如果不指定,在当前目录及其子目录的URL下会返回cookie,request.getContextpublic void setPath(String uri) { this.path = uri;}// 是否只在加密的连贯上(SSL)发送public void setSecure(boolean flag) { this.secure = flag;}// 设置cookie值public void setValue(String newValue) { this.value = newValue;}public void setVersion(int v) { this.version = v;}获取cookie属性的办法// 获取cookie的正文,如果没有为nullpublic String getComment() { return this.comment;}// 获取cookie实用的域名public String getDomain() { return this.domain;}// 获取cookie过期工夫,如果为-1,cookie示意继续到浏览器敞开public int getMaxAge() { return this.maxAge;}// 获取cookie实用的门路public String getPath() { return this.path;}// 获取是否只在加密的连贯上发送public boolean getSecure() { return this.secure;}// cookie的名称,创立后不可批改public String getName() { return this.name;}// 获取cookie值public String getValue() { return this.value;}public int getVersion() { return this.version;}删除cookie设置生命周期 cookie.setMaxAge()办法设置,秒为单位,若为0,示意立刻删除该cookie,将该cookie放到响应中返回 ...

February 22, 2024 · 1 min · jiezi

关于程序员:文献阅读海马单个神经元投射组的全脑空间组织

::: block-1 文献介绍 文献题目 Whole-brain spatial organization of hippocampal single-neuron projectomes \钻研团队 徐春、孙衍刚、龚辉、姚海珊、李澄宇、孙怡迪\钻研单位 中国科学院脑科学与智能技术卓越翻新核心 \发表工夫 2024-02-02 \发表期刊 Science \影响因子 56.9 \DOI 10.1126/science.adj9198::: 摘要绘制单个神经元投射对于了解海马体(HIP)的全脑连贯和不同性能至关重要。在这里,作者重建了 10,100 个小鼠 HIP 的单个神经元投射组,并分类了 43 个具备不同投射模式的投射组亚型。投射靶的数量和轴突尖端的散布取决于沿着 HIP 纵轴和横轴的胞体地位。许多投射组亚型在由空间转录组谱定义的特定 HIP 亚结构域中富集。此外,作者绘制了专门投射在 HIP 造成(HPF)内的 HIP 神经元以及投射到 HPF 内和 HPF 外靶的 HIP 神经的综合布线图。双半球投射神经元通常投射到一对具备同侧偏好的同源靶上。单神经元投射组的这些组织原理为了解 HIP 神经元的性能提供了构造根底。 钻研后果1. HIP 神经元的投射组亚型分类 (A) 一张显示在胞体(上图)轴突树(底部图)中稠密表白 EGFP 的 HIP 切片的荧光图像。右侧的图像是左侧方框区域的高分辨率图像。比例尺:左侧,100 um;右侧,20 um。\(B) 左图,所有绘制神经元的胞体散布(一个点等于一个神经元),并用示意图描述冠状切片中的 HIP 亚区。虚线示意 HIP 边界,实线是纵向 HIP 轴。D,背侧;V,腹侧;A,前侧;P,后侧。以雷同色彩编码 HIP 亚区和其中的神经元。右图,饼图显示各种 HIP 亚区中神经元数量及其投射组的绘制。\(C) 顶部图,一个示例神经元显示轴突侧枝沿着尾侧(蓝色)和头侧(棕色)门路投射的。底部图,两个投射门路的示意图。\(D) 热图显示单个 HIP 神经元在不同指标区域的轴突投射强度,头侧和尾侧门路的分支离开显示。所有神经元(每个垂直线一个)在 7 个 HIP 亚区(DG,CA3,CA2,CA1,SUB,ProS,SUBr)中按其胞体地位沿 D-V 轴排序,下方显示神经元数目。上游指标分为 9 个次要区域,即同侧和对侧 HPF,ISO,OLF,CTXsp,CNU,TH,HY,MB,显示在左侧(请参见 table S3 中所有缩写的全名)。投射强度由指标区域中的总轴突长度(以微米为单位)定义,并进行色彩编码(下方的彩条)。所有神经元在每个指标区域的均匀投射强度总结在最右侧的列中,针对两个门路之间的较大值进行归一化,并由点的大小编码。\(E) 基于它们的轴突树模式对 HIP 投射组亚型进行的档次聚类(Ward's method)。每个投射组亚型在 13 个指标区域的投射强度通过其最大长度进行归一化。依据它们对头侧或尾侧门路的不同偏好,对指标区域进行下标“R”和“C”的正文,如(D)所示。上图,从每个投射组亚型的所有神经元均匀的投射强度的热图。下图,胞体位于不同 HIP 亚区的神经元分数(黑白编码),体细胞沿 D-V 轴的密度散布曲线以及每个投射组亚型的总神经元数。\(F-H) 示例神经元,group 1 中的 subtype 3(F),group 2 中的 subtype 26(G),group 3 中的 subtype 37(H)。指标区域内的轴突树以彩色显示。黑点示意胞体。 ...

February 22, 2024 · 5 min · jiezi

关于程序员:妨碍做出正确决策的5种认知谬误

人类的大脑在极其状况下会呈现出不可理喻的一面,从而障碍咱们做出正确的决策。本文介绍了5种常见的认知舛误,辨认并克服这些认知舛误,能够帮忙咱们更好的决策。原文: Want to Make Better Decisions? Avoid These 5 Cognitive Distortions 咱们所处的环境并不适宜做出牢靠决策,有时咱们会陷入非理性或消极的思维模式,从而导致习惯性思维谬误,无奈精确对待事实。 从进化角度来看,人类倒退出的认知舛误是一种生存形式——适应即时生存的思维使人类走到了明天,但在史前时代对咱们很有帮忙的思维曾经不再实用于当今信息和数字时代。 人类在科技、医药、食品、农业等畛域获得了惊人成就,但大脑中的神经回路没有足够的工夫跟上新的事实。 造成认知偏差的起因有很多,但人类大脑偏向于走捷径是次要起因。 安妮·杜克在《对赌》中写道:"咱们每天做的大部分事件都是主动解决,有一些咱们很少觉察的习惯和默认行为(从紧握铅笔到为了防止车祸而急转弯)。咱们须要捷径,但这是有代价的。许多决策失误源于对反射零碎的压力,要求它疾速、主动实现工作。没有人早上醒来会说'我想要关闭思维,不思考他人。'" 在高风险决策或非理性思维具备长期影响的事件中,与这些认知舛误作奋斗须要自我意识和养成良好的思维习惯,这些习惯能让你做出无意识的决定,而不是让大脑主动运行。 本文将介绍5种认知舛误。 含糊效应(Ambiguity effect)聚光灯效应(Spotlight effect)出现效应(Framing effect)情感跷跷板(Emotional seesaw)非黑即白(All or nothing thinking)咱们将逐个深入研究。 含糊效应(Ambiguity effect)模糊性效应是一种认知偏差,即决策受到信息不足或"模糊性"的影响。该效应表明,人们偏向于抉择呈现无利后果的概率已知的选项,而不是呈现无利后果的概率未知的选项。 咱们都不喜爱不确定性,也不喜爱不晓得后果会如何而带来的不适感,这让咱们抉择平安的抉择,而放弃了蕴含危险的微小机会。 不冒险就不会有增长。尽职尽责很重要,但敢于承担风险的能力也很重要。 人们在职业生涯晚期总是犯这样的谬误。他们胆怯失败,放心出错对职业生涯的不良影响。因而总是抉择那些曾经晓得如何做好的抉择,而不是去寻找那些能帮忙他们成长和造就新技能的机会,做始终在做的事件或失败危险较低的事件所带来的短期舒适感限度了他们的长期成长。 含糊效应影响认知舛误的例子假如你的老板让你在两个我的项目中抉择一个。一个我的项目比另一个更清晰,有更高的胜利机会,但能够学到的货色不多。另一个我的项目有许多不确定性,不能保障胜利。解决未知并且补全缺失局部的机会应该会吸引许多人,但含糊效应使大多数人抉择更平安的抉择。 如何解决?为了防止这种认知舛误的影响,要练习走出舒服区,挑一些艰难的问题,有目的地把本人置于不难受的环境中,要求本人克服压力和焦虑,这些压力和焦虑来自于你不晓得如何做某事。这样做能够锤炼你承受危险的精神力量,这样就不再把未知视为威逼,而是一个施展后劲和造就新技能的机会。 简而言之,危险越低=增长越慢。 聚光灯效应(Spotlight effect)聚光灯效应是一种心理现象,在这种景象中,人们偏向于认为本人受到了比理论更多的关注。 高估他人留神到咱们行为的水平会导致不必要的压力和焦虑。认为他人在关注咱们,判断咱们的行为和口头,会让咱们无奈实在表白本人。 这种认知舛误使咱们沉迷于过来的谬误、已经说过或做过的事件。当咱们总是关注他人如何评估咱们时,他人也在做同样的事件。他们总是为本人的毛病和不完满而懊恼,简直没有工夫思考他人。 很难精确评估一个人被他人留神的水平。 聚光灯效应影响认知舛误的例子假如你给团队做了一个对于行将推出的产品线的演示。所有都很顺利,但在探讨中却发现了一个谬误,你不会为后果如何而快乐,你的思路总是飘到谬误被指出的那一刻。 讨论会曾经完结,每个人都去忙别的事件了,但你却陷在那里。在聚光灯效应下,你心田在一直反复"我怎么会犯那样的谬误?大家肯定都感觉我很蠢。" 如何解决?为了防止这种认知舛误的影响,与其放心他人怎么想,不如揭示本人没有人真正关怀你。每个人都被困在本人的聚光灯效应中,没人有这个闲工夫把你放在聚光灯下。 简而言之,集中精力做好本人的工作,不要放心他人的想法。 出现效应(Framing effect)出现效应(也称为框架效应)是一种认知偏见,在这种偏见中,人们决定抉择的根据是抉择的出现后果是踊跃还是消极的(比方是损失还是收益)。当呈现踊跃的出现时,人们偏向于躲避危险,而当呈现消极的出现时,人们偏向于寻求危险。 即便有多个同样无效的选项,依据信息出现形式、突出的性能,某个选项也可能比另一个更有吸引力。 出现效应使咱们抉择出现较好的蹩脚选项,而不是出现较差的好选项。 正如心理学家、经济学家丹尼尔•卡尼曼(Daniel Kahneman)在《思考,快与慢》(Thinking, Fast and Slow)一书中所指出的那样,"当间接比拟或衡量彼此时,损失会比收益更大。"换句话说,咱们对损失讨厌的主动偏向使咱们防止有损失的抉择。因而,咱们天然会发现突出出现踊跃属性的选项更具吸引力。 出现效应影响认知舛误的例子假如两个产品经理就两个要开发的新产品提出想法。一个产品经理说产品有90%的可能性会大获胜利,而另一个产品经理说产品失败的可能性只有10%。在出现效应下,即便两条信息都指向雷同的后果,你也可能抉择成功率为90%的那条。 如何解决?为了防止这种认知扭曲的影响,不要依据事物的出现来做出抉择。更深刻开掘信息,提出问题,从其余方面评估,而只依赖以后所出现的。揭示本人,仅仅因为蹩脚的信息被侧面解读,并不会让抉择变得更好。这样做并不能保障胜利,但这个过程可能会带来更好的抉择。 简而言之,不要沉迷于更好的故事叙述,而要超过外表文字。 情绪跷跷板(Emotional seesaw)情绪跷跷板的玩法与坐在真正的跷跷板上高低起伏时体验一系列情绪的形式十分类似。 可能这一刻还满怀希望,下一刻就感到失望。有些日子你势不可挡,有些日子你仿佛一无是处。有时你精力充沛,筹备好迎接这个世界,有时你会感觉四周的一切都在土崩瓦解。 被情绪所吸引会扰乱认知性能,从而侵害清晰思考的能力。在某些状况下,情绪的忽然转变(例如,从恐怖到解脱)甚至会导致有意识状态。因为以后认知资源较少,你可能会在不思考结果的状况下做出决定。 情绪跷跷板影响认知舛误的例子假如你刚刚发现自己在工作中犯了一个谬误,导致诸如恐怖、耻辱和难堪等负面情绪的忽然暴发。然而,没有人发现你的谬误,这又带来了解脱的感觉。当这种状况产生时,在刚刚经验的情绪拉锯的影响下,你的认知性能会受损。因为以后认知能力较差,随后做出的决定将不足思考。 如何解决?为了防止这种认知扭曲的影响,要警觉强烈的情绪。当遇到问题时,推延做决定或临时停下来,无意识分配资源来思考,而不是做最简略的抉择或最省力的抉择。 简而言之,不要让情绪压倒你或管制你的想法。 二极管思维(All or nothing thinking)在二极管思维(非黑即白)中,思维是极其的,不是胜利就是失败,老板不是对的就是错的,敌人不是偏心的就是不偏心的,你不是赢就是输。 当"永远"和"从不"这两个词摆布着你的生存时,你看不到生存并不是在两个极其之间运行,而是在两者之间的某个中央。决策并不总是好的或坏的,两头有一个灰色地带。 在这种认知偏差的影响下,你看不到决策和后果之间并不是1:1的关系——好的决策并不总是导致好的后果,坏的决策有时也可能导致好的后果。 正如安妮·杜克(Annie Duke)在《对赌》中解释的那样,"当咱们从后果中回溯,找出事件产生的起因时,很容易陷入各种认知陷阱,比方在只有相关性的状况下假如因果关系,或者筛选数据来证实咱们喜爱的叙述。为了维持后果和决策之间紧密联系的假象,咱们会把很多方块插进圆洞里。" ...

February 21, 2024 · 1 min · jiezi

关于程序员:Python可视化工具集合来报道-上

Python作为一种宽泛应用的编程语言,领有丰盛的可视化工具选项,使得用户能够轻松地将数据转化为易于了解和吸引人的图表和图形。可视化工具在数据分析和数据展现中扮演着重要的角色。这些工具不仅能够帮忙用户更好地了解数据,还能反对决策制定、故事讲述和洞察发现等方面。无论是用于学术研究、商业剖析还是数据迷信我的项目,Python提供的可视化工具都可能满足不同需要,晋升数据分析的成果与效率。以下是收集的可视化工具: 1.Matplotlib是Python中最罕用的可视化工具之一。它是最古老、最经典的Python可视化库,作为一个根底绘图工具,Matplotlib能够绘制各种动态图表,例如线图、散点图等,十分实用于数据的可视化展现。它提供了丰盛的配置选项,使得用户可能自定义图表的款式和外观。Matplotlib还反对多种输入格局,包含图像文件和矢量图形,不便用户在不同的媒介上应用生成的图表。这一灵活性和性能的组合,使得Matplotlib成为数据迷信畛域中必不可少的工具。 2.Seaborn是一种基于Matplotlib的高级数据可视化库。它提供了简略易用的接口,能够轻松绘制统计图表、热力求等。绝对于Matplotlib,Seaborn具备更高的好看度和可定制性,使得生成各种业余程度的图形变得更加简略。无论是在数据分析、数据挖掘还是数据可视化畛域,Seaborn都是一种十分有用的工具。通过应用Seaborn,用户能够疾速而直观地察看数据集的散布、趋势和关系。此外,Seaborn还反对主动调整图标的主题和色彩格调,使得最终的图表更具一致性和美感。 3.Plotly是一款功能强大的Python可视化工具,它可能以交互式的形式创立动静和动态图表。作为一种多样化的绘图库,Plotly提供了许多常见的图表类型,比方折线图、散点图和饼图等。此外,Plotly还具备丰盛的图表定制选项,用户能够依据本人的需要进行个性化设置,如调整轴标签、字体款式和背景色彩等。另外,Plotly反对导出图表为HTML或动态图片,不便在其余中央进行分享与展现。通过其丰盛的性能和易用的接口,Plotly成为了数据科学家和分析师们常常应用的工具之一。 4.Bokeh是一个用于构建交互式Web利用和仪表盘的库。它提供了丰盛的绘图工具和性能,能够轻松绘制高性能的交互式图表。Bokeh的核心理念是将数据可视化为视觉元素的组合,通过用户的交互来实现对数据的摸索和了解。它反对绘制多种类型的图表,如散点图、线图、柱状图等,并可能解决大规模数据。在Bokeh中,用户能够通过增加交互式控件来实现数据筛选、缩放和平移等操作,使得用户能够依据本人的需要进行数据的动静摸索和剖析。Bokeh还提供了丰盛的输入选项,能够将绘制好的图表导出为动态图片或交互式的HTML页面。通过Bokeh,用户能够疾速构建出令人印象粗浅的可视化应用程序和仪表盘。 5.Altair是基于Vega和Vega-Lite的Python可视化库。它提供了一种简略而直观的申明式语法,能够疾速生成各种动态和交互式图表。Altair的设计理念是使数据可视化过程变得简略和灵便。通过应用简洁的语法,用户能够轻松定义数据和视觉元素之间的映射关系,从而创立出具备吸引力且易于了解的图表。此外,Altair也反对动静交互,使用户可能自在地摸索数据并与其进行互动。通过应用Altair,用户能够疾速无效地进行数据分析和展现,实现对简单数据的深刻洞察。未完待续,喜爱点赞珍藏,如有疑难,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

February 21, 2024 · 1 min · jiezi

关于程序员:玩转C语言深入理解输入输出函数的奥秘

✨✨ 欢送大家来到贝蒂大讲堂✨✨ 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 单字符输入函数在C语言中有一个函数putchar专门负责输入单个字符,其语法如下: 头文件:#include<stdio.h>申明:int putchar(int char) char -- 这是要被写入的字符。该字符以其对应的 int 值进行传递。作用:把参数 char 指定的字符(一个无符号字符)写入到规范输入 stdout 中,也就是输入单个字符。返回值:该函数以无符号 char 强制转换为 int 的模式返回写入的字符,如果产生谬误则返回 EOF。以下是对putchar的具体应用示例: #include<stdio.h>int main(){ putchar('A');//输入字符A putchar('1');//输入字符1 putchar('\106');//输入转义字符F return 0;}输入后果: 2. 多字符输入函数既然有单字符输入函数,那就天然有多字符输入函数——puts,其语法如下: 头文件:#include<stdio.h>申明:int puts(const char *str) str -- 这是要被写入的 C 字符串。作用:把一个字符串写入到规范输入 stdout,直到空字符,但不包含空字符。换行符会被追加到输入中。返回值:如果胜利,该函数返回一个非负值为字符串长度(包含开端的 \0),如果产生谬误则返回 EOF。以下是对puts的具体应用示例: int main(){ puts("hello world\n"); puts("贝蒂来啦\n"); return 0;}输入后果: 3. 格式化输入函数3.1 语法介绍完单字符与多字符输入函数,上面咱们将介绍格式化输入函数——printf,其语法如下: 头文件:#include<stdio.h>申明:int printf(const char *format, ...) format -- 这是字符串,蕴含了要被写入到规范输入 stdout 的文本。它能够蕴含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需要进行格式化。作用:将参数⽂本输入到屏幕返回值:如果胜利,则返回写入的字符总数,否则返回一个正数。3.2 占位符printf() 能够在输入⽂本中指定占位符。所谓“占位符”,就是这个地位能够⽤其余值代⼊。下表是常见的占位符: ...

February 21, 2024 · 3 min · jiezi

关于程序员:AI数字虚拟人来了你会失业吗

AI数字虚拟人是一种由人工智能技术驱动的虚构实体,以及通过语音和图像等界面与人进行交互。它能够模仿人的外貌、声音和行为,并能答复问题、提供信息和执行特定工作。AI数字虚拟人曾经开始在各个领域失去广泛应用,例如客户服务、教育、医疗保健和娱乐等。它们的呈现极大地扭转了人们与技术的互动形式,并对将来的待业市场产生了深远的影响。 随着AI数字虚拟人的呈现,待业市场将经验一系列的改革和挑战。这些虚拟人在某些行业中能够表演重要的角色,并具备一些显著劣势,如24小时全天候工作、高效率和准确性等。然而,与此同时,这种技术也可能取代某些传统的待业岗位,对现有的工作机会造成肯定的威逼。依据一些钻研和数据分析,AI数字虚拟人可能会在一些机械化和重复性工作畛域取代人力资源。例如,客服行业中的在线聊天机器人曾经可能无效地答复常见问题,取代传统客服人员的角色。同样的趋势也呈现在一些生产制作畛域,其中自动化机器人和智能零碎正在逐步代替人工操作。 然而,咱们不应漠视AI数字虚拟人所发明的新的就业机会和需要。随着技术的倒退,对于设计、开发、保护和改善这些虚拟人的专业人才的需要也在减少。同时,AI数字虚拟人的呈现还推动了全社会对于技术和翻新的需要,激发了更多相干行业的就业机会。因而,尽管AI数字虚拟人对某些待业岗位造成了冲击,但也为咱们带来了一些新的待业前景。 为了适应并与AI数字虚拟人单干,须要积极主动地更新本人的技能和常识。首先,关注技术发展趋势,继续学习和深造,以放弃与AI数字虚拟人相比的竞争力。其次,寻找本人善于且不易被AI取代的畛域,挖掘和磨难本人独特的技能,进步本人的专业性和创造力。 喜爱点赞珍藏,如有疑问请进群交换,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

February 21, 2024 · 1 min · jiezi

关于程序员:JavaWeb之监听器

监听器Servlet中存在一个EventListener接口,该接口有很多的子接口,如ServletContextListener、HttpSessionListener、ServletRequestListener等用于监听ServletContext、HttpSession、ServletRequest等对象的创立和销毁,以及属性批改 <!-- more --> 监听ServletContext、HttpSession、ServletRequest等对象的创立和销毁ServletContextListener 服务器启动时创立,调用contextInitialized办法;服务器失常敞开时销毁调用contextDestroyed办法HttpSessionListener 第一次访request.getHttpSession创立,调用sessionCreated办法;调用invalidate或者过期销毁,调用sessionDestroyed办法ServletRequestListener 每一次拜访创立,调用requestInitialized办法; 响应完结销毁,调用requestDestroyed办法以ServletContextListener为例 // 当Servlet容器启动或终止Web利用时,会触发ServletContextEvent事件,该事件由ServletContextListener解决public interface ServletContextListener extends EventListener { // 启动Web利用时调用该办法,该办法完结后才会对Filter进行初始化 void contextInitialized(ServletContextEvent var1); // web利用终止时调用该办法,该办法在Servlet和Filter销毁之后调用 void contextDestroyed(ServletContextEvent var1);}实现相应的接口,监听不同的域对象 <!-- web.xml --><listener> <listener-class>场景:ServletContextListener最罕用,在以后WEB利用加载的时候对以后WEB利用的相干资源进行初始化操作:创立数据库连接池,创立Spring的IOC容器,读取以后WEB利用的初始化参数监听域对象 ServletContext、HttpSession、ServletRequest 属性变更的监听器ServletContextAttributeListener attributeAdded attributeRemoved attributeReplacedHttpSessionAttributeListener attributeAdded attributeRemoved attributeReplacedServletRequestAttributeListener attributeAdded attributeRemoved attributeReplaced感知session绑定的监听器 保留到Session域中的对象能够有多种状态:绑定到Session中,从Session中解除绑定;随Session对象长久到到一个存储设备中;随Session对象从一个存储设备中复原 HttpSessionBindingListener和HttpSessionActivationListener接口,实现这两个接口不须要在web.xml文件中注册 放到session中的对象实现HttpSessionBindingListener 会触发两个办法 绑定valueBound 解除valueUnBanding实现了HttpSessionActivationListener接口的对象能够感知本人被钝化和被活化的事件 sessionWillPassivate 从内存写到磁盘 sessionDisActivate 从磁盘中读取进去session会被存储在tomcat以后我的项目下 .cer文件 https://zhhll.icu/2021/javaweb/根底/6.监听器/本文由mdnice多平台公布

February 21, 2024 · 1 min · jiezi

关于程序员:文献阅读在整个小鼠大脑中细胞类型的高分辨率转录组和空间图谱

::: block-1 文献介绍 文献题目 A high-resolution transcriptomic and spatial atlas of cell types in the whole mouse brain \钻研团队 曾红葵(Allen 脑科学研究所)\发表工夫 2023-03-06 \发表期刊 Nature \影响因子 64.8 \DOI 10.1038/s41586-023-06812-z::: 摘要哺乳动物大脑由数百万到数十亿个细胞组成,这些细胞分为多种具备特定空间分布模式、构造和性能个性的细胞类型。了解大脑性能的重要一步是取得部件清单,即大脑细胞类型目录。在这里,作者报告了整个成年小鼠大脑的全面和高分辨率的转录组和空间细胞类型图谱。细胞类型图谱基于两个单细胞程度、全脑规模数据集的组合创立:约700万个细胞的单细胞RNA测序(scRNA-seq)数据集和约430万个细胞应用 MERFISH 进行空间分辨率转录组数据集。图谱被分层组织为五个嵌套级别的分类:7个分区、32个类、306个子类、1,045个超类型和5,200个簇。作者系统地剖析了整个大脑中神经元、非神经元和不成熟神经元细胞类型,并确定了每个细胞类型的转录组身份和空间特异性之间的高度一致性。后果揭示了不同脑区的细胞类型组织的独特特色,特地是脑的背侧和腹侧之间的二分法:背侧局部含有绝对较少但高度不同的神经元类型,而腹侧局部则含有更多的神经元类型,它们之间更密切相关。作者还系统地表征了神经递质、神经肽和转录因子的细胞类型特异性表白。该钻研揭示了不同脑部细胞类型中神经递质和神经肽表白及共表达模式的极大多样性和异质性,表明它们介导了大量的细胞间通信模式。最初,作者发现转录因子是成年小鼠大脑细胞类型分类的次要决定因素,并确定了一个组合转录因子代码,该代码定义了大脑各个部位的细胞类型。整个小鼠大脑的转录组和空间细胞类型图谱建设了一个基准参考图谱和一个深刻整合钻研哺乳动物大脑细胞类型和环路性能、发育和进化的根底资源。 钻研后果1. 小鼠全脑的转录组细胞类型分类学 (a) 这是一个蕴含 306 个 subclasses 的转录组分类树状图(10xv2: n = 1,708,450 个细胞;10v3 n = 2,349,599 个细胞)。色彩块将树状图分为次要的细胞 divisions。从左到右,条形图示意 class、次要神经递质类型(NT type)、所剖析细胞的区域散布(Broad region)、 clusters 数目、RNA-seq细胞数目、MERFISH细胞数。带有橙色点标记的 subclasses 示意高度独特的 subclasses,灰色点标记的 subclasses 示意蕴含性别劣势聚类的 subclasses。对于每个细胞,在降维空间中确定了 15 个 nearest neighbors,并由 subclass 汇总。高度独特的 subclass 被认为是没有被调配到其余 subclass 的 nearest neighbors 或造成高度独特分支的 subclass。通过计算每个聚类的男女散布的概率和 log P value 来辨认 subclass 中的性别劣势聚类。具备 odds < 0.2 和 logPval <-10 的聚类被标记为性别劣势聚类。\(b-e) 所有细胞类型的 UMAP 示意,按 division(b)、class(c)、subclass(d)、brain region(e)着色。 ...

February 21, 2024 · 2 min · jiezi

关于程序员:人工智能起源和应用场景

人工智能(Artificial Intelligence,AI)作为一种模仿人类智能的技术,旨在通过计算机程序和设施来实现人类智能的性能。依据性能和技术的不同,人工智能能够分为三类:弱人工智能(针对特定工作的模仿智能)、强人工智能(可能实现人类所有智能工作的智能)和超人工智能(具备创新能力和自主意识的智能)。 人工智能的历史演变能够追溯到20世纪50年代。过后,科学家们提出了“人工智能”这个概念,并开始钻研如何让计算机具备人类智能。从那时起,人工智能经验了几次低潮与低谷。晚期的钻研次要集中在基于规定的符号操作和逻辑推理。随着计算机技术的倒退,机器学习、深度学习等关键技术逐步崛起,使得人工智能在近年来获得了重大突破。 人工智能的关键技术包含机器学习、深度学习、自然语言解决、计算机视觉、常识图谱等。其中,机器学习是一种通过训练数据对计算机进行主动学习和改善的办法。深度学习则是机器学习的一个分支,次要采纳多层神经网络进行学习。自然语言解决(Natural Language Processing,NLP)是人工智能畛域的一个重要方向,旨在让计算机了解和生成人类语言。计算机视觉则是钻研如何让计算机从图像或视频中获取有价值的信息。常识图谱则是用图谱构造示意实体和实体之间的关系,以便于计算机了解和解决。 人工智能在泛滥畛域获得了宽泛的利用,其中自然语言解决(NLP)和机器翻译是典型的利用场景。自然语言解决旨在让计算机了解和生成人类语言,为人类和计算机之间的交换提供了桥梁。在理论利用中,自然语言解决技术曾经广泛应用于搜索引擎、智能客服、语音辨认等畛域。 机器翻译则是自然语言解决的一个重要利用方向。随着全球化的倒退,人们对于跨语言沟通的需要日益增长。机器翻译技术通过剖析源语言和目标语言的语法、语义和语境,实现主动翻译。近年来,随着深度学习等技术的倒退,机器翻译的性能失去了显著晋升。现在,机器翻译曾经利用于在线翻译、跨国企业沟通、国内会议等多个场景。 除了自然语言解决和机器翻译,人工智能在其余畛域的利用也日益成熟。例如,在医疗畛域,人工智能能够通过剖析大量病例数据,辅助医生进行诊断和医治。在主动驾驶畛域,人工智能技术能够通过计算机视觉和机器学习,实现车辆主动驾驶。此外,人工智能还在金融、教育、物联网等畛域施展着重要作用。 总之,人工智能技术作为一种模仿人类智能的技术,其起源能够追溯到20世纪50年代。随着计算机技术的倒退,人工智能在多个畛域获得了重大突破,其中自然语言解决和机器翻译是典型的利用场景。在将来,人工智能技术将持续倒退,为人类社会带来更多便当和翻新。

February 20, 2024 · 1 min · jiezi

关于程序员:OurBMC-大咖说-第-3-期-BMC-国产化和开源之路

栏目介绍:"OurBMC 大咖说" 是由 OurBMC 社区精心策划的线上讲座栏目,邀请 BMC 相干畛域大咖独特探讨 BMC 全栈技术的发展趋势、挑战和时机。无论你是初学者还是资深从业者,"OurBMC 大咖说" 都将为你提供一个贵重的学习和交换的平台。 欢送各位关注 "OurBMC 大咖说",凝听大咖们的智慧之声,独特推动 BMC 全栈技术的提高和倒退! 本期人物介绍:李林晶,成都信息工程大学电子信息工程业余 98 级学员,中山大学 MBA 学员,长期专一于计算机体系嵌入式方向,参加了泛滥国家级科技我的项目。2014 年开始,作为汉为的创始人之一,负责飞腾架构产品在多个国家根底外围畛域的落地,迄今已获得多个行业全国首台套的胜利范例,反对各行业用户取得国家级科技进步一等奖 3 次,二等奖、三等奖若干,目前负责汉为产品需要定义端的全面数字化转型。 相较于其它信创行业的国产化代替,服务器 BMC 的国产化并不像其它畛域那样在聚光灯下被众人所关注。服务器作为互联网云计算等畛域的底层硬件基础设施架构,承载着要害业务的运行反对和各项技术的迭代优化,不可避免地对服务器整机性能有着卓越的要求,对系统可维护性有着远高于家用 PC 的规范,同时,也对运行稳定性有着更为严苛的标准。BMC 作为服务器主机监控、治理控制器,它比服务器享有更大的权限。所以在国产化方面,BMC 的国产化有着越来越重要、紧迫的要求。 咱们常说的 BMC 是软硬件的概念,它分为 BMC 硬件和 BMC 固件两个方面。无论是当初 D4 或者 OCP 的接口,还是新近板载于服务器主板上的 BMC,它其实都是独立于服务器的单元,在零碎上,它们是两个独立运行的,在数据上,它们是交互的。正因为这个独特的模式,使得 BMC 能作为服务器的管家,通过各种传感器和总线,监测着服务器的状态,并在必要的时候做出肯定的解决。BMC 承当着守护服务器的 “使命”。 在国产化代替之前,国内的服务器厂商次要应用的是台湾 Aspeed 公司的 BMC 芯片和 AMI 公司的 BMC 固件这套技术计划来实现对服务器的治理,其中存在着两大弊病,一是传统 BMC 固件架构绝对繁多,可扩展性差,难以适配各类型 BMC 芯片和服务器;二是代码闭源,存在平安危险。因为代码闭源,未通过用户和宽泛的同行安全检查,存在暗藏的安全漏洞且无奈辨认。 再者,传统 BMC 固件受商业模式限度,代码闭源,通常附带严格的代码许可应用协定,不容许用户擅自对软件进行散发和应用,妨碍了固件技术创新。在服务器设计多元化和国内模式一直变换的今日,这种技术计划曾经不再实用。在硬件方面,近些年来,国内一众 CPU 厂商奋起直追,曾经呈现一系列性能优越、稳固牢靠的 BMC 芯片,飞腾推出的 E2000S 芯片便是其中之一。在软件方面,随着 OurBMC 社区的建设,吸纳了泛滥对于 BMC 芯片设计、服务器厂商、开发者和用户的退出,BMC 的软件生态也正呈现出一片欣欣向荣的现象。 ...

February 20, 2024 · 1 min · jiezi

关于程序员:JavaWeb之过滤器Filter

过滤器Filter依赖于servlet容器,基于函数回调,能够对申请和响应进行拦挡,在拜访后端资源之前,拦挡这些来自客户端的申请,在发送回客户端之前,解决这些响应 过滤器的类型身份验证过滤器数据压缩过滤器加密过滤器触发拜访事件资源的过滤器图像转换过滤器日志记录和审核过滤器MIME-类型链过滤器Tokenizing过滤器转换XML内容的XSL/T过滤器<!-- more --> 过滤器的应用须要实现Filter接口,其中蕴含有FilterChain过滤器链和FilterConfig过滤器配置 public interface Filter { // 由servlet容器调用,批示一个过滤器被放入服务,能够获取web.xml中过滤器的参数 void init(FilterConfig config) throws ServletException; // 在每次一个申请或响应在所对应的资源下时通过链传递,由容器调用 void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException; // 由servlet容器调用,批示一个过滤器从服务去除 void destroy();} 并且在web.xml中配置写好的Filter <filter> <filter-name>security</filter-name> <filter-class>com.zhanghe.study.webstudy.filter.SecurityFilter</filter-class> <!--用户名--> <init-param> <param-name>userName</param-name> <param-value>john</param-value> </init-param></filter><!-- 拦挡的程序与在web.xml中 filter-mapping的配置程序无关,靠前的先被调用 --><filter-mapping> <filter-name>security</filter-name> <!-- 除了能够应用url-pattern形式进行拦挡,还能够指定servlet-name形式指定servlet来进行拦挡 --> <url-pattern>/*</url-pattern> <!-- 在filter-mapping中有一个dispatcher标签,指定过滤器所拦挡的资源被Servlet容器的调用形式 能够是REQUEST,INCLUDE,FORWARD和ERROR,默认是REQUEST REQUEST 间接拜访 INCLUDE 通过RequestDispatcher的include办法拜访 FORWARD 通过RequestDispatcher的forward办法拜访 ERROR 通过申明式异样解决机制调用时拜访 能够指定多个dispatcher来指定Filter对资源的多种调用形式进行拦挡 --> <dispatcher>REQUEST</dispatcher></filter-mapping>https://zhhll.icu/2021/javaweb/根底/5.过滤器/本文由mdnice多平台公布

February 20, 2024 · 1 min · jiezi

关于程序员:Vue3-学习笔记Day2

写在后面本文为尚硅谷禹神 Vue3 教程的学习笔记。本着本人学习、分享别人的态度,分享学习笔记,心愿能对大家有所帮忙。举荐先按程序浏览往期内容:\1. Vue3 学习笔记(Day1) ::: block-1 目录3 Vue3 外围语法 3.1 选项式API 与 组合式API3.2 setup3.3 ref 和 reactive3.4 computed3.5 watch3.6 标签的 ref 属性3.7 props3.8 生命周期3.9 hook:::3 Vue3 外围语法3.1 选项式API 与 组合式APIP6:https://www.bilibili.com/video/BV1Za4y1r7KE?p=6Vue2的API设计是Options(选项式)格调的。Vue3的API设计是Composition(组合式)格调的。Options API 的弊病: Options类型的 API,数据、办法、计算属性等,是扩散在:data、methods、computed中的,若想新增或者批改一个需要,就须要别离批改:data、methods、computed,不便于保护和复用。 :::: column::: column-left 44.5%:::::: column-right 55.5%::::::: Composition API 的劣势: 能够用函数的形式,更加优雅的组织代码,让相干性能的代码更加有序的组织在一起。 :::: column::: column-left 48.5%:::::: column-right 51.5%::::::: 3.2 setupsetup 概述P7:https://www.bilibili.com/video/BV1Za4y1r7KE?p=7setup是Vue3中一个新的配置项,值是一个函数,它是 Composition API “表演的舞台”,组件中所用到的:数据、办法、计算属性、监督......等等,均配置在setup中。 特点如下: setup函数返回的对象中的内容,可间接在模板中应用。setup中拜访this是undefined。setup函数会在beforeCreate之前调用,它是“当先”所有钩子执行的。<template> <div class="person"> <h2>姓名:{{name}}</h2> <h2>年龄:{{age}}</h2> <button @click="changeName">批改名字</button> <button @click="changeAge">年龄+1</button> <button @click="showTel">点我查看联系方式</button> </div></template><script lang="ts"> export default { name:'Person', setup(){ // 数据,原来写在data中(留神:此时的name、age、tel数据都不是响应式数据) let name = '张三' let age = 18 let tel = '13888888888' // 办法,原来写在methods中 function changeName(){ name = 'zhang-san' //留神:此时这么批改name页面是不变动的 console.log(name) } function changeAge(){ age += 1 //留神:此时这么批改age页面是不变动的 console.log(age) } function showTel(){ alert(tel) } // 返回一个对象,对象中的内容,模板中能够间接应用 return {name,age,tel,changeName,changeAge,showTel} } }</script>setup 的返回值P8:https://www.bilibili.com/video/BV1Za4y1r7KE?p=8若返回一个对象:则对象中的:属性、办法等,在模板中均能够间接应用(重点关注)。若返回一个函数:则能够自定义渲染内容,代码如下:setup(){ return ()=> '你好啊!'}setup 与 Options API 的关系P9:https://www.bilibili.com/video/BV1Za4y1r7KE?p=9Vue2 的配置(data、methos......)中能够拜访到 setup中的属性、办法。但在setup中不能拜访到Vue2的配置(data、methos......)。如果与Vue2抵触,则setup优先。setup 语法糖P10:https://www.bilibili.com/video/BV1Za4y1r7KE?p=10setup函数有一个语法糖,这个语法糖,能够让咱们把setup独立进来,代码如下: ...

February 20, 2024 · 7 min · jiezi

关于程序员:独立开发周记-53周记一周年

2024,第七周,0212-0218这周呈现了三个新纪录。 我还没看《热辣滚烫》,然而我也被激励到了。之前买的体脂秤电池都快没电了,上秤一量,冲破新高了,减! SwiftUI 深造这周看了两个学习材料。 一个是 Paul Hudson 去年在 iOS Conf SG 的演讲,Making it Rain – Advanced Special Effects with SwiftUI。大部分工夫其实都是 Paul 的女儿在解说如何从零开始写一个 Particle Effect,而过后她只有 13 岁……看完我大为震撼。演讲的最初,Paul 也颁布了他的开源特效库,Vortex,筹备当前试一下,看看能不能取代我当初用的。 另一个是Vincent Pradeilles 的直播视频,30 tips to be a better iOS developer。他这个视频其实是基于这个 blog 30 tips to make you a better iOS developer 来做的,整个视频太长了,而且我有点受不了他的法语口音,最初就间接看了文章。他下周还有一个更厉害的视频,65 tips to use Xcode like a PRO,也是基于一个开发者总结的技巧。 极简时钟 Android这周极简时钟在 Google Play 上终于全量公布了全新 UI 的新版本,两个月前就筹备好的新版截图终于能用上了。 另外才发现,在春节期间,极简时钟在 Google Play 的下载量冲破 300 万,又一个里程碑! ...

February 19, 2024 · 1 min · jiezi

关于程序员:基础知识localhost-与-127001-的区别

在信息技术的世界里,localhost和127.0.0.1频繁呈现在各种网络及软件开发的场景之中。它们仿佛指向同一个意义——那就是你的本地机器。但认真探索之下,你会发现它们之间其实存在着一些奥妙的差别。明天,咱们就来深究这两者之间的区别,并揭示它们在理论利用中的重要性。 一、基本概念首先,咱们须要明确localhost和127.0.0.1各自的定义。 localhost:在计算机网络中,localhost是一个主机名(hostname),指的是以后你正在应用的设施。它是一个罕用于拜访本机上运行的网络服务的域名。127.0.0.1:而127.0.0.1则是一个IP地址,属于IPv4协定下的一个非凡地址。它被称为环回地址(loopback address),用于网络软件 测试 以及拜访本机服务。二、技术细节与差别解析过程的不同尽管localhost和127.0.0.1都指向本机,但它们的工作形式存在差别。 当你应用localhost时,零碎会通过DNS(域名零碎)解析来将其转换为相应的IP地址。个别状况下,这个过程很快,因为大多数操作系统都会在本地的hosts文件中对localhost进行映射,使其指向127.0.0.1或相似的环回地址。相同,应用127.0.0.1时,因为它自身就是一个IP地址,因而无需通过DNS解析,数据包间接在本机外部路由。性能差别尽管这两者之间的性能差别微不足道,但在某些高性能要求的环境中,防止即便是最小的提早也是至关重要的。 应用localhost可能会引入渺小的提早,因为须要通过DNS解析的过程。127.0.0.1则能够省略这一步骤,略微晋升效率。IPv6环境在IPv6环境下,localhost的解析和应用还具备更多的考量。 localhost在IPv6中通常解析为::1,这是IPv6下的环回地址。间接应用127.0.0.1无奈利用IPv6的劣势,因而在IPv6优先的网络环境中,举荐应用localhost。三、利用场景举例开发环境在软件和网站开发过程中,开发 者常常须要在本地机器上运行和测试代码。应用localhost或127.0.0.1能够不便地拜访本地开发服务器,无需通过内部网络。 # 通过localhost拜访本地开发服务器curl http://localhost:8080# 或者应用IP地址curl http://127.0.0.1:8080网络软件测试开发网络应用或服务时,测试环回性能十分重要。这能够确保软件在将数据发送到网络之前能正确处理数据。127.0.0.1在这种状况下被宽泛应用。 四、最佳实际倡议在大多数惯例利用场景中,应用localhost和127.0.0.1不会造成显著的差异。然而,从性能和兼容性的角度思考,了解二者的差别是无益的。对于侧重于性能的利用,间接应用IP地址(127.0.0.1或::1)能够稍微缩小DNS解析的开销。当开发依赖于IPv6环境的利用时,优先应用localhost以确保正确解析环回地址。五、结语尽管localhost与127.0.0.1在日常应用中简直能够调换,它们之间的轻微差别却揭示了网络通信中的乏味细节。了解这些差别不仅能帮忙咱们更无效地利用网络资源,还能在特定情境下作出更加适合的技术抉择。 常识扩大:前端入门必读:JS 在线调试指南

February 19, 2024 · 1 min · jiezi

关于程序员:当一名有着-10w-听众的播客主播开始做-App

名字: AAAny 开发者 / 团队: AAAny Team 平台: iOS 请简要介绍下这款产品AAAny 是一个专为 AMA(咱们称之为 AAA)设计的 App。多解释一下的话,其实 AAA 是一种独特的交换模式,所以它应该有专门的展现和互动模式。AAAny 就是专门为这种交换模式设计的,比方以 Host 为核心的展现模式、多层对话的 Thread 浏览、不便答复的 Host Mode 等。 咱们想做的是降级 AMA:从 Ask Me Anything 到 Ask Anyone Anything,缩写是 AAA。这是一个心愿帮忙大家在线上能够更好交换的产品。 哪个霎时让你决定开发这款产品?咱们团队的几个人都十分喜爱玩 AMA,并且也是各个问答网站的忠诚用户。就想:为什么没有人专门为这件事独自做一个产品呢?既然没有,那咱们本人来吧! 相比于同类产品,你感觉它有什么特别之处?区别于传统论坛,AMA 实质上是一个人或者一小群人对所有人的交换——这种模式和论坛一楼一楼的盖楼是不同的。比方 AMA 的组织者,也就是 Host 的权重更高。所以 AAAny 为了这种构造做了很多优化。 更次要的问题可能还是 AMA 这件事自身素来没被搞明确过,素来没有。回忆一下你在 Reddit 看到那几十层评论来回嵌套时的感触、听无聊 Space 时的感觉或者在 Discord / 微信里搞 AMA 的繁琐——AMA 如此风行,但它却素来没有被认真对待过。 你尝试过哪些渠道推广它?过程中有什么播种吗?次要还是敌人之间的推广。我最大的发现是 X 的流量转化率特地低,还是朋友圈好使。但也不能止步于朋友圈,所以也是在思考怎么更好地做这件事。 公布这款产品至今,有哪些反馈让你印象粗浅?有一个齐全我没想到的事儿:很多人发现答复问题是高兴的!而且感觉答题会上瘾。这点我没想到。当然我晓得是高兴的,可能因为没有 AAAny 之前我就在常常答复问题了,所以我没意识到这件事对没有这个教训的人来说是什么感觉。如果 AAAny 能够始终放弃这一点,那么应该能让很多本来不在网上的常识和教训,第一次被感觉到答复问题是高兴的人分享进去。这种乐趣可能是咱们会思考如何更好去服务的一件事儿。 有哪些产品你感觉应该被更多用户晓得?Fog of World 是我很喜爱的一个软件,它会把你在地球上摸索过的中央一点点地点亮。这个软件最高级别的成就是世界之王,条件是摸索了 1% 的地球。仅仅是 1%。但这曾经很难了。这总让我想到很多事。融入的话就是我只有出门肯定关上这个软件。 ...

February 19, 2024 · 1 min · jiezi

关于程序员:MoonBit新增functional-for-loop控制流支持

MoonBit更新1. 减少了functional for loop控制流反对与传统的命令式for loop 不同,循环变量是不可变的。这样的设计未来也容易抽取进去做形式化验证: fn init { for i = 0; i < 5; i = i + 1 { debug(i) // i = i + 4 error: The variable i is not mutable. }}输入: 01234functional for loop也反对多个绑定。与其余语言不同的是,x和y在functional for loop的第三个表达式里具备同时更新的语义: fn init { for x = 0, y = 0; x < 10; x = x + 1, y = x + 1 { // ^~~ 这里x的值是更新前的 println("x: \(x), y: \(y)") }}输入: ...

February 19, 2024 · 1 min · jiezi

关于程序员:命名虚拟机及设置安装路径

设置“处理器数量”和“每个处理器的内核数量”,能够在网络上搜寻一下本人的CPU处理器的型号信息,或者在Windows零碎中关上工作管理器,而后拜访性能选项卡,该选项卡右下侧的逻辑处理器数量就是您的CPU内核数量。 设置CPU处理器信息 设置内存调配量 设置网络类型 设置SCSI控制器的类型 设置虚构磁盘类型 创立新虚构磁盘 设置最大磁盘容量 设置磁盘文件名 配置信息总览 选中rockylinux零碎映像文件门路 未完待续,喜爱点赞珍藏,如有疑难,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85v...

February 19, 2024 · 1 min · jiezi

关于程序员:产品面对面|我们做了一个能轻松配置的技术栈模型……

人才与策略不同,是无奈被对手公司轻易效仿的。——杰克·韦尔奇(Jack Welch)通用电气董事长 咱们发现,招聘最先遭逢的失败,就是不分明到底想让候选人做什么工作。 比方企业可能在发展招聘前,外部没有对立好技术岗位画像,也没有规范的技术岗位模型,导致最终招到的人始终不符预期,频繁更换,节约了大量的招聘老本。 近期咱们针对这个问题,发动一期外部对话「产品面对面」,ShowMeBug 产品负责人 Ivan 来跟咱们唠一唠,如何能力无效解决上述这样的问题。 以下是注释,Enjoy~ Q1:企业个别都会如何制订岗位模型呢?一家企业只有有招聘需要,都须要搭建岗位模型。各家企业做这件事儿所使用的办法和工具也都会有所不同。 比方有些大厂就会专门设立一个技术评定委员会或者技术专家小组,他们可能是从不同部门抽调进去组成的虚构小组,专门制订技术岗位模型规范,并将相干制度公开化、透明化。 而像咱们单干过的一家出名的电商赛道 B2B 平台,我和他们研发负责人聊过,他们外部采纳的就是记分卡(Score Card)的模式,以此在面试过程中对候选人的评估进行标准化。 记分卡(Score Card)是目前海内常见的、风行的面试评估工具。通常在面试前,企业外部先建设对立的岗位评估规范,并在随后的面试场景中,面试官和招聘官会依据雷同的评估规范,评估同一岗位的候选人,以确定他们是否具备这个岗位所需的技能和能力。 他给我看过他们的记分卡表格,下面有不同的岗位级别,左侧列是对应的能力项,并且他们会把能力项划分为软性的和硬性的——这样的岗位模型跟咱们思路就很像了,背地的逻辑都是建设一套对立的岗位评估规范。 这样做的益处不言而喻:能够在整个测评和面试过程中,建设外部统一、主观的评估办法,确保所有面试官能高效评估候选人,做出更好的招聘决策。 过后他看到咱们ShowMeBug 岗位模型就说,这不就很像他们在用的记分卡嘛! 但实际上记分卡是在岗位模型的根底上,针对候选人考核的工具,和岗位模型还不一样。 岗位模型自身是一个引擎,所有后续的动作都是基于它驱动的,否则的话在技术招聘过程中相当于是打一枪换一炮,岗位画像零散、不成体系。 而如果应用 ShowMeBug 的技术岗位模型工具,就能够很好地标准化了。 Q2: ShowMeBug 的技术岗位模型是怎么搭建起来的?我感觉能够先说一说,过后咱们做这件事件的初衷是什么。 一方面,咱们发现,企业倒退到肯定阶段下,对人才测评的科学性和公平性是有刚需的,企业须要建设起一套规范,来迷信、主观掂量技术人才。 另一方面,市面上很多软性能力的测评工具,曾经倒退到肯定成熟度了,而在业余的、颗粒度更细的技术能力评估这块,在国内依然是较为空白,这对 ShowMeBug 来说是个很好的机会。 最初是当初很多技术岗位曾经有成熟的、标准化的岗位模型标准了,只是少有人能把它们对立好、规范化,咱们来做这件事儿算是一个大势所趋。 咱们在做这个产品的后期,做了大量调研,和很多技术面试官聊过,发现大家最大痛点是怎么考核候选人的能力,这点很难。给再多题,也会挑花眼,因为不晓得这个岗位应该具备什么样的素质和技能,从而出什么样的题目。甚至就像前文所呈现的场景,面对同一个岗位,面试官认知不同,所以不同面试官会挑不一样的题,测评后果变得不可控。 所以咱们过后做完调研后,就做了一件事儿,对海量JD进行检索和剖析,失去多个根本的技术岗位画像,基于这样的岗位画像,帮企业间接在ShowMeBug 上智能抽题。 智能组卷1.0版本 比方一个前端开发工程师的外围能力是什么?咱们剖析后失去这几个综合维度:Vue实战根底、Web前端根底、前端工程化、前端性能优化、JavaScript。在理论利用中,80%的企业都不须要对这个能力维度进行二次调整。 客户在通过一段时间的应用之后,对咱们的岗位画像提出更高要求。咱们也认为,应该对岗位模型再次做深度优化,须要更加贴近市场规范认知,造成更丰盛的技术栈模型,让企业的个性化调整越来越少。 所以咱们找到不同特长的技术专家进行调研,看他们的职业规划,以及他们公司外部是怎么制订岗位模型的,同时咱们也参考了局部大厂的岗位模型制订规范和制订流程。 最终咱们有了第二代的「智能组卷」,更科学化的岗位模型作为驱动引擎,帮忙企业能疾速生成技术测评题目,精准考核候选人。 Q3: 您认为,这样的技术栈模型能给客户带来什么价值?提供这样一个标准化的技术岗位模型工具,或者说这么一个可轻松配置的技术栈模型,对咱们的客户来说最重要的价值,在于能够建设更加偏心的岗位机制。 我在和一些大厂的技术评定委员会专家成员交换时,有聊过,为什么企业会成立技术评定委员会?而且为什么他们会对咱们的能力提出更高的要求?因为这些规范决定了一个人在企业中的成长门路和职业倒退门路,更重大点来讲,它可能决定了一个人生死。 不论是招聘,还是外部评级、人员盘点,或者战斗力盘点,企业基于 ShowMeBug  可能造成一个对立的岗位模型规范体系,而且能够疾速迭代,这样会在很大水平上解决因为主观评估所带来的潜在危险。 而且,大厂有足够能力来组建技术评定委员会,但小规模企业则是没有能力专门抽时间和人力来搭建这样业余规范体系,这不代表他们没有偏心主观统一的岗位模型规范诉求。咱们用这样更简略、更规范的形式和工具,能够让小企业能疾速取得这样的能力。 当然也有人提出质疑:咱们更看重软性能力的考核,但你们工具只考核硬性能力、业余技术能力这部分。 确实, ShowMeBug  目前更多考查的是硬性能力。但很多企业更看重软性,而不看重硬性业余能力这块的评估,也会导致他们把人招进来之后,尽管文化匹配,但技能没有方法满足团队需要的状况。 所以 ShowMeBug 至多能辨认进去,技术能力的扎实水平,这是一个十分大的前提。 而且咱们也发现了,略微高端点的岗位,嘴炮的比例更高,他们可能真的很会讲,可能感觉他什么都懂,然而真的干活的时候什么都差一点,这个是很好受的。 另外,现阶段先思考硬性能力的考核,是因为它能够更靠近主观和偏心,这是我始终强调的。尽管想完全避免主观是不可能,咱们只能尽可能凑近偏心的方向。 Q4: 将来,这个性能会有什么样的状态出现给大家?和一个研发负责人聊的时候,他说,在国内能把这一套技术栈模型用起来且用得好的企业不算多,大家对这个事件依然停留在奢侈认知上。比方HR SaaS 这类的招聘软件,会重点关注和围绕候选人去做招聘流程治理,但对于岗位模型的构建和治理却是空白的。 他这番话也是切中我的心坎,接下来 ShowMeBug 确实要做这样的事件。 ...

February 19, 2024 · 1 min · jiezi

关于程序员:Go应用性能分析实战

Go很适宜用来开发高性能网络应用,但依然须要借助无效的工具进行性能剖析,优化代码逻辑。本文介绍了如何通过go test benchmark和pprof进行性能剖析,从而实现最优的代码效力。原文: Profiling Go Applications in the Right Way with Examples 什么是性能剖析?性能剖析(Profiling) 是剖析应用程序从而辨认妨碍利用性能的瓶颈的根本技术,有助于检测代码的哪些局部执行工夫太长或耗费太多资源(如CPU和内存)。 分析方法有三种分析方法。 Go test(蕴含基准测试)基于runtime/pprof的运行时剖析基于net/http/pprof的Web剖析剖析类型CPU (收集应用程序CPU应用状况的数据)堆(Heap)/内存(Memory) (收集应用程序内存应用状况的数据)Goroutine (辨认创立最多Goroutine的函数)阻塞 (辨认阻塞最多的函数)线程 (辨认创立线程最多的函数)互斥锁 (辨认有最多锁竞争的函数)本文将次要关注应用上述办法进行CPU和内存剖析。 1. 基准测试(Benchmarking)我想实现驰名的两数之和算法,这里不关注实现细节,间接运行: go test -bench=.-bench参数运行我的项目中的所有基准测试。 依据下面的输入,与其余办法相比,TwoSumWithBruteForce是最无效的办法。别忘了后果取决于函数输出,如果输出一个大数组,会失去不同的后果。 如果输出go help testflag,将看到许多参数及其解释,比方count、benchtime等,前面将解释最罕用的参数。 如果要运行特定函数,能够通过如下形式指定:go test -bench='BenchmarkTwoSumWithBruteForce'默认状况下,基准测试函数只运行一次。如果要自定义,能够应用count参数。例如,go test -bench='.' -count=2输入如下所示。 默认状况下,Go决定每个基准测试操作的运行工夫,能够通过自定义benchtime='2s'指定。能够同时应用count和benchtime参数,以便更好的度量基准函数。请参考How to write benchmarks in Go。 示例代码请参考Github。 在事实世界中,函数可能既简单又长,计时毫无作用,因而须要提取CPU和内存剖析文件以进行进一步剖析。能够输出 go test -bench='.' -cpuprofile='cpu.prof' -memprofile='mem.prof'而后通过pprof工具对其进行剖析。 1.1 CPU剖析如果输出 go tool pprof cpu.prof并回车,就会看到pprof交互式控制台。 咱们来看看最次要的内容。 输出top15查看执行期间排名前15的资源密集型函数。 (15示意显示的节点数。) 为了解释分明,假如有一个A函数。 func A() { B() // 耗时1s DO STH DIRECTLY // 耗时4s C() // 耗时6s}flat值和cum值计算为: flat值为A=4, cum值为A=11(1s + 4s + 6s) 。 ...

February 19, 2024 · 2 min · jiezi

关于程序员:Python可视化工具集合来报道-下

接上文: 6.Geopandas是一个弱小的天文空间数据处理与可视化库。它联合了Pandas和Shapely等库的性能,提供了对天文空间数据进行高效解决和可视化的能力。通过Geopandas,咱们能够轻松读取各种格局的天文空间数据,如Shapefile、GeoJSON等,并进行数据预处理、剖析和转换。同时,Geopandas还反对绘制地图和空间数据的可视化。咱们能够应用Geopandas疾速绘制各种类型的地图,如点图、线图、多边形等,并进行自定义款式和标注。此外,Geopandas还具备丰盛的空间剖析性能,如缓冲区剖析、空间叠加等,不便用户对天文空间数据进行进一步的剖析和解决。7.Seaborn是建设在Matplotlib根底上的统计数据可视化库。它通过简化和丑化Matplotlib的图表款式,使用户可能疾速创立具备业余外观的图表。Seaborn特地实用于摸索数据集中的关系和散布,反对绘制热力求、箱图、小提琴图等。 8.ggplot是一个基于R语言中的ggplot2库进行移植的Python可视化库。它以其简洁、优雅的语法格调而闻名,使用户能够应用更少的代码创立好看而高质量的统计图表。ggplot提供了丰盛的图形元素和统计变换选项,例如散点图、线图、柱状图等。通过应用不同的图层(layer)和分面(facet),用户能够轻松地依据数据的特点进行摸索和展现。ggplot的杰出之处在于其弱小的配置能力,使用户能够灵便地调整图表的细节,包含坐标轴、图例、标签等。不仅如此,ggplot还反对主题(theme)性能,用户能够依据需要定制图表的整体格调和款式。总之,ggplot是一款功能强大且应用便捷的可视化工具,实用于各种数据分析和数据展现的场景。9.Holoviews是一个高级可视化库,它可能疾速构建简单的可视化利用。与其余可视化库不同的是,Holoviews采纳面向对象的办法组织数据和可视化组件,使得使用者能够通过简略的代码实现弱小的可视化成果。Holoviews反对多种后端输入,包含Matplotlib、Bokeh和Plotly等,这意味着您能够依据须要抉择最适宜的输入平台。另外,Holoviews还提供了丰盛的交互式操作和自定义扩大性能,使得用户可能依据具体需要进行定制化展现。无论是探索性数据分析还是精美的数据报告,Holoviews都可能满足您的需要。10.Plotnine是基于ggplot2的Python移植版本。它采纳简洁、直观的语法格调,让用户可能轻松地绘制高质量的统计图表。借助Plotnine,用户能够通过几行代码疾速生成各种类型的图表,包含散点图、线图、柱状图等等。Plotnine也提供了丰盛的主题和选项,使用户可能自定义图表的外观和款式。不仅如此,Plotnine还反对数据的聚合和转换操作,进一步加强了数据可视化的灵活性和功能性。 喜爱点赞珍藏,如有疑问请进群交换,点击链接退出群聊【信创技术交换群】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=EjDhISXNgJlMMemn85viUFgIqzkDY3OC&authKey=2SKLwlmvTpbqlaQtJ%2FtFXJgHVgltewcfvbIpzdA7BMjIjt2YM1h71qlJoIuWxp7K&noverify=0&group_code=721096495

February 19, 2024 · 1 min · jiezi

关于程序员:JavaWeb之请求转发和重定向

申请转发和重定向// 申请转发request.getRequestDispatcher(url).forward(req,resp)// 申请重定向response.sendRedirect(url)<!-- more --> 申请转发forward申请转发是将一个申请转到服务器的另一个资源,在解决完初步申请另外的资源之后生成响应,应用的是RequestDispatcher.forward办法来实现的,先看一下RequestDispatcher这个接口是什么 RequestDispatcher接口RequestDispatcher的实例是由Servlet引擎创立的,用于包装一个要被其余资源调用的资源,并能够通过其中的办法将客户端的申请转发给所包装的资源 public interface RequestDispatcher { static final String FORWARD_REQUEST_URI = "javax.servlet.forward.request_uri"; static final String FORWARD_CONTEXT_PATH = "javax.servlet.forward.context_path"; static final String FORWARD_PATH_INFO = "javax.servlet.forward.path_info"; static final String FORWARD_SERVLET_PATH = "javax.servlet.forward.servlet_path"; static final String FORWARD_QUERY_STRING = "javax.servlet.forward.query_string"; static final String INCLUDE_REQUEST_URI = "javax.servlet.include.request_uri"; static final String INCLUDE_CONTEXT_PATH = "javax.servlet.include.context_path"; static final String INCLUDE_PATH_INFO = "javax.servlet.include.path_info"; static final String INCLUDE_SERVLET_PATH = "javax.servlet.include.servlet_path"; static final String INCLUDE_QUERY_STRING = "javax.servlet.include.query_string"; public static final String ERROR_EXCEPTION = "javax.servlet.error.exception"; public static final String ERROR_EXCEPTION_TYPE = "javax.servlet.error.exception_type"; public static final String ERROR_MESSAGE = "javax.servlet.error.message"; public static final String ERROR_REQUEST_URI = "javax.servlet.error.request_uri"; public static final String ERROR_SERVLET_NAME = "javax.servlet.error.servlet_name"; public static final String ERROR_STATUS_CODE = "javax.servlet.error.status_code"; // 用于将申请转发到RequestDispatcher对象封装的资源 public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException; // 将RequestDispatcher对象封装的资源作为以后响应的一部分蕴含进来 public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException;}申请重定向sendRedirect重定向应用的是response.sendRedirect办法,sendRedirect办法会产生一个302的响应码和Location的响应头,从而告诉客户端去从新拜访Location响应头中指定的URL,此时会创立一个新的申请。个别用于防止用户的非正常拜访。 ...

February 19, 2024 · 1 min · jiezi