第十九回 梁山泊义士尊晁盖 郓城县月夜走刘唐-FreeBSD Ubunut系统后台运行程序

林冲请晁盖坐了第一把交椅,吴用坐了第二把交椅,公孙胜坐了第三把交椅,还想让,晁盖吴用公孙胜都不肯接受相让,因此林冲坐了第四把交椅。 一天小喽啰报济州府派了2000人马来攻打梁山。吴用说不须兄长挂心,吴某自有措置。 果然,梁山大获全胜,济州府团练黄安带队的人马,包括其本人,被梁山生擒了一二百人。 吴用真牛,运筹帷幄,悄眯眯就把事情做了。在类Unix系统中,后台任务也是这样默默无闻而强大! FreeBSD/Ubunut系统后台运行程序 刚开始接触类Unix系统的时候,感觉后台运行太牛了,可以让机器后台慢慢干活,管理员只需要最后检查一下结果就行了。 后台运行程序常用的场景就是后台编译或者后台运行一个长耗时的程序。 用&启动后台任务 使用方法,在命令后加上一个&符号就可以了,比如 make & 使用& 输出还是会正常输出到当前控制台,但是因为是后台运行,所以不会响应当前的按键,比如Ctrl+c、Ctrl+z键等。 这时候按一下fg,即可将其切换回前台。fg这两个字符是盲打出来的,由于make的时候输出较多,未必能看到这两个字符的回显。 Ctrl+Z挂起命令 对于已经在正常执行的指令,可以使用Ctrl+Z将其挂起,命令进入挂起-Suspended模式。 在挂起的情况下,如果输入fg,则切换回前台;如果输入bg则会后台执行。也就是如果输入命令make ,然后输入Ctrl+Z,然后输入bg,相当于直接运行make & 使用nohup配合后台任务 有一些任务希望一直运行,即使意外(程序崩溃,tty退出),也再次启动,那么可以使用 nohup demoserver & 这样这个demoserver就会一直运行,除非手动终止。nohup适合自己写的简单的小服务程序,大部分流行的服务程序可以使用系统的服务调度,不需要这样用nohup指令。 另外还要注意使用nohub输出会重定向到log文件(nohup.out),而不在当前终端输出。 使用jobs查看后台的任务 如: jobs [1] - Suspended ping airoot.org [2] + Suspended vi test.sh 如果有多个任务,那么可以用序号定位任务。比如可以使用fg 1 可以将挂起的任务一切回前台执行。使用bg 2 将挂起的任务二放到后台执行。 举例:我们当前正在编辑一个文件,但是突然想去看一下当前目录里有哪些文件,这时候就可以Ctrl+Z将其挂起,然后输入ls命令,查看完之后,再键入fg返回vi编辑界面。当然vi本身也有强大的类似功能。 蔡京新派了太守换了老太守,新太守随即发了公文到个个县,要求严格执行。郓城县知县看了,让宋江下发到各乡村。 王婆介绍阎婆惜给宋江,但是宋江冷落了她。一天宋江见到一个跨一口腰刀的汉子,看着有点眼熟,原来那人正是赤发刘唐。刘唐代表晁盖等好汉带了一封信和一百两黄金来看宋江,宋江只收了一条金子,写了一封回信。 FreeBSD/Ubunut系统后台运行程序 刚开始接触类Unix系统的时候,感觉后台运行太牛了,可以让机器后台慢慢干活,管理员只需要最后检查一下结果就行了。 后台运行程序常用的场景就是后台编译或者后台运行一个长耗时的程序。 使用方法,在命令后加上一个&符号就可以了,比如 make & 使用& 输出还是会正常输出到当前控制台,但是因为是后台运行,所以不会响应当前的按键,比如Ctrl+c、Ctrl+z键等。 这时候按一下fg,即可将其切换回前台。fg这两个字符是盲打出来的,由于make的时候输出较多,未必能看到这两个字符的回显。 对于已经在正常执行的指令,可以使用Ctrl+Z将其挂起,命令进入挂起-Suspended模式。 在挂起的情况下,如果输入fg,则切换回前台;如果输入bg则会后台执行。也就是如果输入命令make ,然后输入Ctrl+Z,然后输入bg,相当于直接运行make & 有一些任务希望一直运行,即使意外(程序崩溃,tty退出),也再次启动,那么可以使用 nohup demoserver & 这样这个demoserver就会一直运行,除非手动终止。nohup适合自己写的简单的小服务程序,大部分流行的服务程序可以使用系统的服务调度,不需要这样用nohup指令。 另外还要注意使用nohub输出会重定向到log文件(nohup.out),而不在当前终端输出。 使用jobs可以查看后台的任务,如: jobs [1] - Suspended ping airoot.

npm 被滥用 -- 有人上传了 700 多个武林外传切片视频

Sonatype 安全研究团队最近曝光了一起滥用 npm 的案例 —— 他们发现在 npm 上托管的 748 个软件包实际上是视频文件。 据介绍,这些软件包每个大小约为 54.5MB,包名以 “wlwz” 为前缀,并附带了代表日期的数字。根据时间戳显示,这些包至少自 2023 年 12 月 4 日起就一直存在于 npm,但 GitHub 上已经开始删除这些软件包。 每个包中都包含以 “.ts” 扩展名结尾的视频剪辑,这表明这些视频剪辑是从 DVD 和蓝光光盘中翻录的。 这里的 ts 并非指 TypeScript 文件,而是 transport stream 的缩写,全称为 “MPEG2-TS”。MPEG2-TS 是一种标准数字封装格式,用于传输和存储视频、音频以及频道、节目信息,常用于数字电视广播系统,如 DVB、ATSC、ISDB、IPTV 等。 此外,一些包(例如 “wlwz-2312”)在 JSON 文件中包含普通话字幕。 尽管这些视频不像挖矿程序、垃圾邮件包和恶意依赖软件那样对社区造成危害,但这种将开源基础设施用作内容分发网络的行为无疑是违反了规则,也违反了供应商的服务条款,应该得到关注和制止。

低代码核心思想:插件化开发(vue3实现)

我们在开发一些组件插件的时候,需要动态的从外部去注入第三方插件 1. 如何做一个插件化的项目,模拟代码如下 // 插件设计内容 // 1. 插件底座 // 2. 插件注册方式 // 3. 调用插件 class Calculator{ // 插件底座 plugins = [] constructor(){ } // 注册 use(plugin){ this.plugins.push(plugin) this[plugin.name] = plugin.fn } } // 设置两个插件 const AddPlugin = { name : 'add', fn: function (a, b){ return a + b } } class MinusPlugin{ name = 'minus'; fn(a, b) { return a- b } } const caculator = new Calculator() // 把插件应用到组件中 caculator.

chromedriver安装和环境变量配置

chromedriver 1、安装2、【重点】环境变量配置(1)包的复制:(2)系统环境变量配置 3、验证 1、安装 网上随便搜一篇chromedriver的安装文档即可。这里是一个快速链接 特别提醒:截止2024.1.30,chromedriver.exe已经更新到121.xx了,如果你在官网上没有找到和你google chrome版本一致的chromedriver.exe,建议先把本地的google chrome升级到最新版本,再去下载对应版本的chromedriver.exe。 2、【重点】环境变量配置 对解压包里的chromedrive.exe进行如下操作: (1)包的复制: ① 复制1:复制任意一个不需要管理员就可以访问的文件夹下! 默认google 的安装目录在"C:\Program Files\Google\Chrome\Application",但C:\Program Files需要管理员权限,如果把chromedriver.exe放在该目录下,可能无法正常访问。我的最终路径:“D:\othersoft\google”: ② 复制2:检查引用from selenium import webdriver的.py脚本所使用的python环境,把chromedrive.exe在当前python环境下也复制一份。 比如.py使用的环境安装在“D\python3.10\xx”, 则直接把chromedrive.exe复制到“D\python3.10”目录下即可。 (2)系统环境变量配置 把复制1中chromedriver.exe的路径添加到系统环境PATH中。 3、验证 (1)第一种 chromedriver --version (2)第二种 from selenium import webdriver driver = webdriver.Chrome() 会启动一个chrome窗口,并马上关闭。

微软Office Plus与WPS Office的较量:办公软件市场将迎来巨变?

微软Office Plus在功能表现上远超WPS Office? 微软出品的Office套件实力强劲,其不仅在办公场景中扮演着不可或缺的角色,为用户带来高效便捷的体验,而且在娱乐生活管理等多元领域中同样展现出了卓越的应用价值 作为中国本土办公软件的领军者,WPS与微软Office展开了长达30多年的竞争较量,这一过程生动反映了国产软件的成长历程及其背后付出的努力与艰辛。 近年来,在国家信创政策的持续推动下,WPS迎来了全新的发展机遇期。 用户在面对WPS时,往往持有复杂的情感态度,既有欣喜也有忧虑(此处因篇幅限制,不再详细展开)。 微软Office对中国市场的高度重视体现在其产品升级和服务优化上,无论是全球流行的Office365版本,还是专为中国Office用户定制推出的OfficePLUS服务。 无论你是职场精英、企业新秀、大学毕业生,抑或是创业者,每一位用户对Office的需求都有其独特性。 OfficePLUS提供了一系列丰富多元、高质量且专业化的内容资源,包括原创PPT模板、实用文档、数据图表等,并针对用户的个性化需求提供定制服务,旨在助力用户随时随地提高工作效率。 OfficePLUS所主打的模块化功能,WPS同样具备,但需开通会员才能享用,这也是众多用户选择Office而非付费WPS的重要因素之一。 微软推出的OfficePLUS模块所提供的服务并非免费,而是采取收费模式,但在价格比较上,WPS的相应功能显得更为经济实惠。 是否觉得我在过分推崇WPS呢? 您有权保留自己的观点,但我想强调的是,只有亲自尝试和深入了解,才能真正评判一款国产软件的好坏。如果我们不给予机会、一味地批评并抗拒改变,又怎能断定国产软件就一定不如人意呢? 提到WPS,若它果真不具备竞争力,为何微软会持续关注并视其为对手呢?这从侧面反映出WPS在办公软件市场中的地位不容小觑。 事实上,在各个领域中,国产软件始终顶着巨大的压力,坚韧不拔地追求进步与发展。从国家战略层面看,国产软件的崛起对于保障产业安全与推动科技创新具有极其重要的作用。 金山办公软件不仅在与微软的竞争中展现出强劲的实力,更与其长期以来勇于探索的精神和卓越的团队协作能力紧密相关。早在2017年,金山就已经前瞻性地涉足AI技术领域,致力于为用户带来前所未有的办公体验。为了实现全方位的发展而不局限于基础设施服务,金山积极携手华为、钉钉、飞书、百度等业界领先企业,保持着深度合作的关系。 金山旗下还孕育了众多其他行业的领军者,它们在各自的行业中深耕细作,有力地引领着科技进步与创新的步伐。 是一款真正能实现增效降本的工具 在当今全球低代码技术盛行的时代背景下,一些曾深度参与WPS研发的核心团队成员独辟蹊径,创新性地研发出了一种独特的“表格编程”技术。尽管起初该技术并未受到广泛认同,许多人更倾向于信任低代码解决方案的潜力,但事实证明,这款基于低代码技术的平台已经在工业制造业中实现了广泛应用,并且在企业级应用场景中占据了显著份额,成功满足了企业在复杂业务场景下的需求。 正如ChatGPT展示的那样,AI技术能够显著提升生产力,同样地,低代码开发也与AI一样,扮演着提升效率、节约成本的关键角色。 这款别具一格的“表格编程技术”,实际上就是国内自主研发的一款无代码开发工具——云表企业应用平台。借助这一平台,用户无需编写传统代码即可构建各类企业所需的管理软件,可以说它是一款能够生成其他软件的高效工具。 复杂吗?其实用法很简单! 采用类似WPS的图形化界面操作方式,无需编写任何代码,仅需通过直观的点击和拖拽功能,即可轻松构建起一系列管理系统,如人事管理系统、合同管理系统、营销管理系统、进销存系统、办公自动化系统(OA)、设备管理系统、企业资源规划系统(ERP)、物料需求计划系统(MRP)、仓储管理系统、物流管理系统以及物料管理系统等。这种便捷的操作方式极大地提升了工作效率,并有效降低了成本。 运用云表开发平台,即使是没有专业技术背景的企业也能自主搭建一套高度贴合自身个性化需求的系统。原本可能耗时数月的系统构建流程,现在可以被大幅缩短至几周,甚至几天。更令人欣喜的是,企业员工能够随时对系统进行灵活调整与更新,从而持续提升运营效率。 小结: 2024年,无代码开发技术预示着一个重要的未来发展趋势,并且这一趋势正得到越来越多企业的广泛应用。通常情况下,以前瞻性的视角审视问题将带来更优的见解。无论是WPS办公软件,还是云**表工具,在当前国产替代的关键阶段,它们都在各个行业领域中切实解决了大量问题。

谷歌把GenAI装进Chrome

谷歌不甘示弱,在其Chrome浏览器中引入了新的实验性生成式AI功能,以简化并为用户提供更高效的浏览体验。 值得注意的是,微软去年推出了Edge浏览器和人工智能驱动的必应搜索引擎的集成。随着Chrome M121版本的发布,谷歌打算利用最新的机器学习和人工智能技术,不仅让浏览变得更容易,而且更个性化。 1、Tab管理器 谷歌推出了三个主要功能,对普通用户和开发人员都很有用,尤其是新的选项卡管理器。选项卡管理器将自动将类似的打开选项卡组合在一起,以帮助管理许多选项卡。它还为这些团体提供了名字和表情符号。 例如,谷歌Chrome副总裁Parisa Tabriz在一篇关于GenAI新功能的博客文章中写道:“标签组是管理大量标签的有用方法,但管理它们可能是一个相当手动的过程。有了标签管理器,Chrome将自动根据打开的标签建议和创建标签组。”“如果你同时在Chrome中执行多项任务,这会特别有帮助”,例如研究有助于编写、修改和测试代码的主题,计划旅行,研究其他主题和购物。 此外,Chrome M121允许用户使用AI图像生成创建自定义Chrome主题。他们选择主题、情绪、风格和颜色,Chrome会生成相应的主题。还有一组预制的人工智能生成的主题。 2、写作助手 此外,新版本还包括一个人工智能写作助手功能,允许用户右键单击任何网站上的文本框,然后选择“帮助我写作”,以获得人工智能建议,从而启动他们的写作,如评论或回复。此外,在下个月的Chrome浏览器发布中,谷歌“将推出另一项实验性的人工智能功能,帮助用户在网上更有信心地写作——无论你是想给餐厅留下一篇写得很好的评论,还是想为派对制作一个友好的回复,还是想对公寓租赁进行正式询问,”Tabriz 说。 3、如何开始 与此同时,在接下来的几天里,从美国开始,用户可以登录Chrome浏览器,从三点菜单中选择“设置”,然后导航到“Experimental AI”页面。由于这些新功能是早期的公共实验,目前将在企业和教育账户中禁用。 Tabriz 表示:“首先,右键单击Chrome中访问的任何网站上的文本框或字段,然后选择“帮助我写作”。输入几个字,我们的人工智能就会为你启动写作过程。” 4、未完待续 这些最初的实验都集中在消费者账户上,以帮助完成日常浏览任务。然而,Chrome计划在2024年晚些时候进行更多的人工智能集成。Tabriz 说:“今年我们将寻找更多将人工智能和ML引入Chrome的方法,包括集成我们的新人工智能模型Gemini,帮助你更轻松、更快地浏览。” 上个月,谷歌向开发者提供了Gemini Pro人工智能模型,开始使用该公司最近宣布的LLM构建应用程序。 在过去的几年里,谷歌在Chrome中添加了机器学习和AI技术,例如:帮助用户在视频中添加实时字幕,更好地检测恶意网站,管理权限提示,并生成网页的关键点等等。 参考链接:https://blog.google/products/chrome/google-chrome-generative-ai-features-january-2024/#custom-themes

跨境电商利用item_get-根据ID取商品详情(shopee.item_get)提升用户体验

跨境电商利用item_get-根据ID取商品详情(shopee.item_get)提升用户体验 一、引言 随着全球电商市场的迅猛发展,跨境电商逐渐崭露头角,成为连接不同国家和地区消费者的桥梁。在这个背景下,如何利用先进的技术手段提升用户体验,成为跨境电商能否在竞争中立足的关键。Shopee作为东南亚及中国台湾地区的领先电商平台,其提供的API接口为卖家提供了丰富的商品信息获取手段。其中,item_get接口,即根据ID获取商品详情的功能,更是对提升用户体验具有重要意义。本文将详细探讨如何利用item_get接口提升用户体验。 二、item_get接口的原理与应用 item_get接口允许卖家通过商品的唯一ID获取商品的详细信息。通过这个接口,卖家可以快速获取到商品的标题、描述、价格、库存等关键信息。这不仅简化了商品信息的获取流程,而且提高了信息的准确性和实时性。 在跨境电商的实际应用中,item_get接口的价值主要体现在以下几个方面: 实时获取商品信息:对于消费者来说,实时、准确的商品信息是决定购买的重要因素。通过item_get接口,卖家可以确保商品信息的实时更新,为消费者提供最新、最准确的商品详情。提高商品详情页的加载速度:对于消费者来说,一个快速加载的详情页意味着更好的购物体验。通过预先使用item_get接口获取商品信息,卖家可以在详情页加载时直接展示这些信息,从而大大提高页面加载速度。个性化推荐与营销:通过item_get接口获取的商品信息,卖家可以进一步分析消费者的购买习惯和喜好,进行精准的个性化推荐和营销活动。这不仅能提高转化率,还能增强消费者的忠诚度。 三、如何利用item_get接口提升用户体验 优化商品搜索结果:在商品搜索页面,通过使用item_get接口预先获取相关商品的详细信息,卖家可以在搜索结果中展示更丰富、更准确的商品描述,从而提高搜索结果的准确性和相关性。这将使用户更容易找到他们感兴趣的商品,从而提高转化率。个性化推荐与用户画像:通过分析用户搜索和浏览的行为数据,结合item_get接口返回的商品信息,卖家可以构建更准确的用户画像。基于这些画像,卖家可以进行个性化推荐,提高用户满意度和忠诚度。实时库存管理与购物车功能:库存管理是电商运营的关键环节。通过使用item_get接口,卖家可以实时获取商品的库存信息,实现库存预警、自动补货等功能。此外,结合库存信息,卖家可以在用户添加商品到购物车时给出实时提示,提高购物的顺畅度。快速响应与售后支持:利用item_get接口获取的商品信息,卖家可以在用户咨询时快速提供准确的答复,提高售前和售后的服务质量。这不仅有助于提高客户满意度,还有助于建立良好的品牌形象。实现多语言与本地化支持:针对不同国家和地区的消费者,利用item_get接口获取的商品信息,卖家可以实现多语言和本地化的支持。这将大大增强跨境电商的适应性,满足不同国家和地区消费者的需求。

AI大模型专题:大模型安全与伦理研究报告2024

今天分享的是AI大模型系列深度研究报告:《AI大模型专题:大模型安全与伦理研究报告2024》。 (报告出品方:腾讯研究院) 报告共计:76页 大模型具有不同于传统模型的特点和优势 第一,大模型和传统模型在规模上存在差异。大模型是基于深度学习的方法,具有更多的参数和更复杂的模型结构,往往具有数十亿百亿干亿以上个参数。这样大的参数量使得大模型能够更好地捕捉数掘中的复杂模式和特征,通过多层次的神经元连接和权重调整,能够学习到更丰富的语义和特征表示,从而提升了模型的表现能力。 第二,大模型和传统模型在训练数据上存在差异。大模型能够更好地捕提数据中的统计规律和模式,提高模型的泛化能力和预测准确性。然而,海量训练数据中也可能包含着一些敏感数掘和个人信息,这使得数据泄露和隐私侵犯的风险不可忽视。一旦这些敏感信息遭受泄露,个人隐私权益可能会遭受严重损害,甚至被用于恶意行为,这些恶性事件的发生不仅会给受害者带来经济损失,还可能引发社会的恐慌和对大模型的信任危机。 第三,大模型和传统模型在计算资源上存在差异。由于大模型具有更多的参数和更复杂的模型结构,因此需要更多的计算资源进行训练和推理。传统模型通常可以在较低的计算资源下进行训练和推理,而大模型则需要更强大的计算设备和算力支持。因此,大模型的发展进步与深学习和硬件计算能力的提升密不可分,硬件计算能力的提升也为大模型的训练和推理提供了强大的计算支持。 第四,大模型和传统模型在任务表现上存在差异。由于大模型具有更强大的表达能力和更多的参数,因此在许多任务上展现出更好的性能。而传统模型通常只能在一些简单的任务上表现良好,但在复杂的任务上往往无法达到大型模型的水平。而大模型的强大能力也是一把双刃剑它也可能被用于进行各种形式的恶意攻击。恶意使用者制造的虚假信息,借用大模型的能力可能放大危害结果,例如在社交媒体平台上传播误导性信息,从而扰乱社会秩序。此外,大那模型的使用往往涉及到社会伦理和法律问题。例如,算法的歧视性问,即模型在处理数据时产生的不公平或偏见,可能引发社会的不满和争议。 第五,大模型和传统模型在可解释性上存在差异。传统模型通常具有较好的可解释性,可以清晰地解释模型的决策过程和特征权重。而大模型由于参数数量庞大和模型结构复杂,往往难以直观地解释其决策过程。此外,大模型本身也很容易成为攻击者的目标。模型参数和权重的泄可能导致知识产权的损失,甚至使恶意使用者能够复制或修改模型,进一步加剧风险。对模型的针对性攻击,如投毒攻击,可能会导致模型输出产生不良影响,从面影响到正常的业务运营。 综上所述,建立可靠的大型模型安全风险控制体系势在必行。本白皮书旨在全面探讨大模型安全与伦理问题,并为各界提供指导,以确保大型模型在广泛应用中的安全性和可信度。通过深入分析大型模型领域的安全挑战,我们可以制定切实可行的措施,确保大型模型在为人类创造价值的同时,也能够保障个人隐私、社会稳定和信息安全。 范式和模型结构的改变 早期的神经网络因为结构简单,针对不同的任务分化出了不同的应用方向,例如计算机视觉自然语言处理,语音等等。但是在2017年,随着 Google 团队的Transformer 架构出现,这一模型在自然语言处理的问题当中取得了惊人的成功,该模型架构仅有 Attention 机制组成能够实现自然语言文本的翻译。 大模型的萌芽最早诞生于自然语言处理领域,Transformer取代了 ResNet 等模型架构成为了研究的主流,谷歌和微软分别针对 Transformer 的编码部分以及解码部分进行研究从而产生了两条技术路线,即以 Bert为代表的仅用编码器部分的路线和以 GPT 为代表的仅用解码器部分的路线。 而 Bert 以及 GPT 都用到了预训练的训练范式,也即是利用大量的数据训练一个基础模型,然后在下游任务上进行一点微调就能够在相应的任务上得到很好的性能表现。 报告共计:76页

一篇文章,彻底理解数据库操作语言:DDL、DML、DCL、TCL

最近与开发和运维讨论数据库账号及赋权问题时,发现大家对DDL和DML两个概念并不了解。于是写一篇文章,系统的整理一下在数据库领域中的DDL、DML、DQL、DCL的使用及区别。 通常,数据库SQL语言共分为四大类:数据定义语言DDL,数据操作语言DML,数据查询语言DQL,数据控制语言DCL。再加上事务控制语言TCL,一个共5个。 下面,我们就详细了解一下它们。 数据定义语言DDL DDL(Data Definition Language)是数据定义语言,它用于定义或改变数据库或表的结构等初始化工作上。通常,包括数据类型、表(Table)之间的关系以及数据库(Database)中的约束、索引、视图、存储过程、触发器等。 DDL命令通常用于创建数据库模式,例如CREATE、ALTER、DROP、TRUNCATE、RENAME、COMMENT等。这些命令一旦执行,就无法被撤销,因为它们改变了数据库的结构。 DDL常见命令及使用 CREATE:用来创建数据库、表、索引等对象。例如: CREATE DATABASE testDB; --创建一个名为testDB的数据库 CREATE TABLE Students (ID INT, Name TEXT); --创建一个名为Students的表,包含ID和Name两个字段 ALTER:用来修改已存在的数据库对象。例如, ALTER TABLE Students ADD Grade INT; --在Students表中添加一个名为Grade的字段 ALTER TABLE Students DROP COLUMN Grade; --在Students表中删除名为Grade的字段 DROP:用来删除整个数据库或者数据库中的表。例如, DROP DATABASE testDB; --删除名为testDB的数据库 DROP TABLE Students; --删除Students表 TRUNCATE:用来删除表中所有的行,但不删除表本身。例如, TRUNCATE TABLE Students; --删除Students表中的所有数据,但不删除表本身 RENAME:用来重命名数据库或者表。例如, ALTER TABLE Students RENAME TO Pupils; --将Students表重命名为Pupils COMMENT:用来为数据库对象如表、列添加注释。例如, COMMENT ON COLUMN Students.Name IS 'Student Name'; --在Students表的Name列上添加注释'Student Name' 以上是几种常见的DDL命令示例,不同的数据库系统可能语法稍有不同,使用时需要参考对应数据库的文档。

腾讯云SDK并发调用优化方案

目录 一、概述 二、 网关的使用 2.1 核心代码 三、腾讯云SDK依赖包的改造 一、概述 此网关主要用于协调腾讯云SDK调用的QPS消耗,使得多个腾讯云用户资源能得到最大限度的利用。避免直接使用腾讯云SDK 时,在较大并发情况下导致接口调用异常。网关的工作流程如下图所示: 如上图所示,各个客户端在发起腾讯云SDK调用时,请求统一先发到网关,网关会根据现有的腾讯云账户资源使用情况,通过负载均衡算法,选择一个合适的腾讯云账户来执行请求,将请求转发到腾讯云服务,从而保证了腾讯云用户资源的最大利用。在这个过程中,如果暂时未找到可用的腾讯云用户,则会阻塞线程,直到有可用的账户时再将线程唤醒放行,避免了在较大并发量时直接调用SDK,而导致接口报错的情况发生。 二、 网关的使用 2.1 核心代码 RequestLimitFilter.java package com.tencentcloudapi.gateway.filter; import com.tencentcloudapi.common.Sign; import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.gateway.api.dto.UserInfo; import com.tencentcloudapi.gateway.api.service.UserManageService; import io.micrometer.common.util.StringUtils; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; import javax.xml.bind.DatatypeConverter; import java.nio.charset.StandardCharsets; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.Semaphore; /** * @Description 限流过滤器 * @Author miller.Lai * @Date 2023-11-06 10:23 */ @Component @Slf4j public class RequestLimitFilter implements GlobalFilter, Ordered { @Resource private UserManageService userManageService; @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpRequest request = exchange.

在Windows11的WSL上运行Llama2-7b-chat 下

上一篇博客讲了我跑Llama的demo的心路历程(上一篇博客传送门),这篇我们主要是讲下怎么配置。 快速开始 使用Linux、Linux、Linux,重要的事情说三遍,如果你和我一样懒得安装双系统,那么在Windows下安装一个WSL2。我假设大家都有了WSL2,并且开了ubuntu系统,我们需要做如下操作: 1. 安装Anaconda:如何在Linux服务器上安装Anaconda(超详细) 感谢这位博主 2. 配置git的代理:WSL2 cannot access Windows proxy、WSL2网络代理配置(apt与git) 3. 获取代码,获取的方式很多反正能拿到代码就行:git clone https://github.com/facebookresearch/llama.git 4. 使用代码仓库的 download.sh 下载模型,下载之前先去这个网站填表Meta模型下载申请。开源了个寂寞,扭扭捏捏的。 下载模型请选择:llama-2-7b-chat 太贪了什么都得不到。。。 5. 安装Llama所需的各种库 pip install -e . 6. 运行demo torchrun --nproc_per_node 1 example_chat_completion.py \ --ckpt_dir llama-2-7b-chat/ \ --tokenizer_path tokenizer.model \ --max_seq_len 512 --max_batch_size 6 7. 官方demo没有持续对话,需要自己做修改,按照他们的格式改,我改过的输出如下: 8. 我倒是想用gradio做一个页面,但是我没有界面。。。。后续有时间再看 结尾 这就是我在Windows上运行Llama的经历了,血泪教训:用Linux!!! 如果觉得文章对你有用请点赞、关注 ->> 你的点赞对我太有用了 群内交流更多技术 130856474 <-- 在这里

在Windows11的WSL上运行Llama2-7b-chat 上

最近在玩大模型,玩了ChatGLM3感觉不过瘾,又去玩了Llama2(在Windows上简直难的离谱),下边我讲为大家讲一下我的心路历程。 心路历程 第一天:GLM那么简单,有手就行啊,最近Llama2开源了挺火的,俺也试试 1. 去huggingface跑demo:显示跑不了,所在地区受限 2. 算了去官网download代码:readmd显示要去官网申请下载模型(给我整不会了) 3. 一通操作猛如虎,一看下载error 第二天:今天怎么也能把模型下载下来了吧,爷爷换邮箱了 1. 一顿操作,把所有模型都进行下载,下载到Llama2-70B中断了(这是个伏笔) 2. 总算能跑了,报错nccl,简单gloo,报错缺库,安装 pip install -e . 3. 总算能运行了,再次报错,官网查询(心都凉了) 第三天 :我选择放弃 第四天:我选择放弃 第五天: 在双卡机器上搭建WSL 1. 真是个勤劳的孩子,博文在此Windows11快速安装WSL2 2. 搭建conda环境、pytorch环境 3. 本来是该结束的,好死不死我想安装个桌面,然后搞了一天多,又遇到git无法联网的问题 绝绝子 第六天:终于跑出demo了(不得不吐槽支持做的没有ChatGLM3好) 官方demo太简陋了,只能等其他大佬写界面了。展示结果: 避坑点 1. 使用Linux系统跑避免90%以上的坑 2. 不太推荐使用国内的邮箱获取链接 3. 最好跟着博客走,能避免不少的麻烦 结尾 下一篇文章我们讲述一下如何在WSL上运行Llama的demo,传送门:在Windows11的WSL上运行Llama2-7b-chat 下 如果觉得文章对你有用请点赞、关注 ->> 你的点赞对我太有用了 群内交流更多技术 130856474 <-- 在这里

通过低代码开发实现数据可视化应用的简易指南

随着数据分析和决策变得越来越重要,数据可视化应用的需求也不断增长。低代码开发平台为开发人员提供了一种快速构建数据可视化应用的途径,本文将介绍如何利用低代码平台实现数据可视化应用的方法和步骤。 在当今数据驱动的时代,企业和组织需要能够迅速、清晰地理解和分析大量的数据。数据可视化应用成为了实现这一目标的重要工具,它能够以图标、图表和仪表盘等形式将数据以易于理解的方式展示出来。传统的数据可视化应用开发过程往往需要大量的编码和开发工作,但现在,低代码开发平台的出现为开发人员提供了更加高效和简便的开发方法。 数据集成与处理 在开始开发数据可视化应用前,需要对数据进行集成和处理。低代码平台通常提供了连接各种数据源的功能,可以轻松地将数据从数据库、API或其他来源导入到应用中。此外,还可以使用低代码平台提供的数据处理功能对数据进行清洗、转换和聚合等操作。 数据可视化基础 在当今信息爆炸的时代,数据可视化已经成为了一种至关重要的技能,它可以帮助我们更清晰、更高效地理解和传达数据信息。为了更好地掌握数据可视化,首先需要了解常见的数据可视化图表类型,如柱状图、折线图、饼图等。此外,正确选择合适的图表类型以传达数据信息也是至关重要的。本文将简要介绍常见的数据可视化图表类型,并强调选择正确图表类型的重要性。 柱状图 柱状图是一种用于比较不同类别之间数据量的图表。它由一系列垂直或水平的柱子组成,每个柱子表示一个类别,柱子的高度表示该类别的数据量。柱状图适用于展示分类数据和分组数据,可以帮助我们直观地发现数据之间的差异。 折线图 折线图是一种展示数据随时间、顺序或其他连续变量的变化的图表。它由一系列连接的点组成,这些点表示数据在不同时间点或顺序上的取值。折线图适用于展示时间序列数据和连续变量数据,可以帮助我们了解数据的变化趋势和波动情况。 饼图 饼图是一种用于展示各部分占总量的比例的图表。它由一个圆形区域和多个扇形区域组成,每个扇形区域表示一个部分,扇形区域的角度表示该部分占总量的比例。饼图适用于展示组成部分的比例关系,可以帮助我们直观地发现各部分在总量中的地位。 散点图 散点图是一种用于展示两个变量之间关系的图表。它由一系列散点组成,每个散点表示一个数据点,横坐标表示一个变量,纵坐标表示另一个变量。散点图适用于展示两个连续变量之间的关系,可以帮助我们了解变量之间的相关性和分布情况。 地图图 地图图是一种用于展示地理信息系统(GIS)数据的图表。它将地理数据与可视化元素相结合,如点、线、面等,以展示地理区域的特征和空间关系。地图图适用于展示地理位置数据,可以帮助我们了解地理特征和空间分布。 选择正确的图表类型的重要性 提高信息传递的效率 正确选择图表类型有助于提高数据信息的传递效率。不同类型的图表能够直观地展示不同类型的数据,使观众能够迅速理解数据的特点和关系。 增强数据表达的准确性 选择合适的图表类型可以增强数据表达的准确性。错误的图表类型可能导致数据信息的误解,而正确的图表类型可以帮助我们更清晰地展示数据。 提升数据可视化的美观度 合适的图表类型可以提升数据可视化的美观度。正确搭配图表类型,使视觉元素更加丰富多样,有助于吸引观众的注意力。 数据可视化的重要性 在当今这个数据爆炸的时代,数据可视化已经成为了各个领域不可或缺的工具。它通过图表、地图、仪表盘等形式将数据直观地展示出来,使得用户能够更加清晰地理解和分析数据。数据可视化在决策制定、问题发现和机会挖掘等方面都发挥着至关重要的作用。 首先,数据可视化有助于提高信息传递的效率。相较于大量的文字描述,图表、地图等形式的数据可视化更能吸引人们的注意力,使信息更易于理解和记忆。这有助于提高决策者在制定决策时对数据的关注度和理解程度,从而降低决策失误的风险。 其次,数据可视化能够帮助我们发现潜在的问题和机会。通过将数据以可视化的形式呈现,我们可以快速地发现数据中的规律、趋势和异常值。这对于发现潜在问题并提供针对性的解决方案具有重要意义。同时,数据可视化也有助于发现数据背后的商业机会,为企业创造更多的价值。 此外,数据可视化还能促进跨部门的合作和沟通。在一个组织中,不同部门可能需要共享和分析相同的数据。通过数据可视化,各部门可以更直观地了解彼此的工作成果和需求,从而加强合作,提高整个组织的协同效率。 在我国,数据可视化的应用范围已经非常广泛。从政府部门发布的各类统计数据,到企业内部的经营管理,再到个人生活中的信息服务,数据可视化已经渗透到了社会的方方面面。随着大数据、人工智能等技术的快速发展,数据可视化在未来将继续发挥重要作用,为各个领域提供更加智能、高效的数据服务。 数据可视化在现代社会的重要性不言而喻。它不仅有助于提高数据的传播效率,发现潜在问题与机会,还能促进跨部门合作和沟通。随着技术的不断发展,我们有理由相信,数据可视化将继续为我们的生活和工作带来更多的便利和价值。 低代码开发平台简介 低代码开发平台是一种通过图形化界面、模板和自动化工具来帮助开发人员快速创建和部署应用程序的平台。这种平台降低了编程的门槛,使不具备深厚编程技能的人员也能参与软件开发。低代码开发平台将编程逻辑、业务流程和界面设计等多个环节进行模块化、标准化,从而提高了开发效率。 提高开发效率 低代码开发平台提供了丰富的模板和组件,使开发人员可以快速搭建应用程序,缩短开发周期。此外,平台还提供了自动化的编译、测试和部署等功能,进一步提高了开发效率。 降低成本 低代码开发平台使得非专业开发人员也能参与软件开发,企业无需花费大量资金聘请高级开发人员。同时,由于开发周期缩短,企业在项目开发和维护方面的成本也得到了降低。 加速创新 低代码开发平台使得企业内部更多的员工可以参与到软件开发和创新中来,激发了员工的创造力。此外,平台提供的模块化和标准化的组件可以轻松地与其他系统进行集成,为企业提供更为灵活的业务解决方案。 提高协作能力 低代码开发平台具有可视化的界面,使得开发人员、业务人员和设计师等团队成员可以更好地沟通和协作,共同完成项目。这有助于提高项目的成功率和质量。 增强可持续性 低代码开发平台可以帮助企业实现业务的快速迭代和升级,以适应市场的不断变化。同时,平台提供的自动化工具使得开发人员可以更专注于业务逻辑的优化,提高应用的可持续性。 选择合适的低代码开发平台 要实现数据可视化应用,首先需要选择一个合适的低代码开发平台。在选择时,应考虑平台的易用性、灵活性和可扩展性等方面。一些主流的低代码开发平台包括简道云、宜搭和JNPF等。 JNPF通过在线开发、流程引擎、代码生成等核心功能快速构建相关业务系统,可以帮助开发者实现5分钟配置一张业务表单、5小时搭建一个专属应用、5天落地一个管理方案,并且易于维护、易于扩展、安全稳定,助力企业打通数字化的“最后一公里”。项目搭建地址引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构 低代码开发平台中的数据可视化功能 在当今快速发展的数字时代,数据已成为企业的重要资产。为了更好地挖掘、分析和利用这些数据,低代码开发平台应运而生。低代码开发平台通过简化应用程序的开发过程,帮助企业快速搭建并落地数据项目。其中,数据可视化功能作为的重要组成部分,对于提升数据分析和决策效率具有重要意义。 数据可视化是将复杂数字数据转换为直观图表的过程,它有助于更清晰地呈现数据规律、发现潜在问题并指导决策。在低代码开发平台上,数据可视化功能可以帮助开发人员轻松地在应用程序中添加各种图表和视觉化组件,从而提高数据呈现的效果,降低数据分析的门槛。 低代码开发平台通常集成了丰富的数据可视化组件,涵盖各类图表和地图。以下为一些常见的数据可视化组件: 柱状图 用于比较不同类别或时间序列的数据分布,直观展示数据的差异。 折线图 展示数据随时间或其他变量的变化趋势,便于观察数据波动及变化规律。 饼图 显示各部分在总数中的占比,帮助分析各项数据间的相对重要性。 散点图 用于分析两个变量之间的关系,展示数据点的分布及趋势。 热力图 以颜色映射的方式展示数据值的大小,适用于表示空间或地理位置信息。 地图 将地理空间数据与可视化相结合,展示地理位置分布及变化趋势。 数据可视化的自动化 数据可视化是数据分析过程中至关重要的一环,它能够将复杂的数据以直观、清晰的形式展现出来,使数据分析结果更容易被理解。随着低代码开发平台的发展,数据可视化的自动化功能日益得到重视。在这样的平台上,开发者可以轻松地创建和定制数据可视化组件,从而提高数据分析的效率。 先进的低代码开发平台不仅支持可视化组件的创建和定制,还具备数据可视化的自动化功能。这意味着,当数据发生变化时,系统能够自动识别并更新可视化结果,无需开发者手动干预。这种自动化功能极大地简化了数据可视化的过程,降低了开发者的操作难度。 首先,数据可视化自动化功能能够提高数据更新的实时性。在传统的手动更新方式中,开发者需要定期检查数据变化,并手动修改可视化组件。这种方式不仅耗时耗力,而且容易遗漏。而通过低代码开发平台的自动化功能,系统会实时监测数据变化,并在数据发生变化时自动更新可视化结果,确保数据分析的实时性和准确性。 其次,数据可视化自动化功能有助于提高开发效率。在低代码开发平台上,开发者可以利用丰富的可视化组件库和模板,快速搭建数据可视化应用。同时,自动化功能减轻了开发者在更新和维护可视化组件方面的负担,使开发者能够将更多精力投入到数据分析和业务逻辑的实现上,提高整体开发效率。 此外,数据可视化自动化功能还可以提高数据分析的可视化效果。通过低代码开发平台,开发者可以轻松地创建具有个性化风格和布局的数据可视化应用,以满足不同场景和需求。同时,自动化功能可以确保数据可视化结果的准确性和一致性,使数据分析结果更加具有说服力。

再学webpack

1 优化 webpack 打包体积的思路 优化 webpack 打包体积的思路包括: 提取第三方库或通过引用外部文件的方式引入第三方库:将第三方库单独打包,并通过 CDN 引入,减少打包体积。使用代码压缩插件:例如 UglifyJsPlugin,可以压缩 JavaScript 代码,减小文件体积。启用服务器端的 Gzip 压缩:通过服务器端配置 Gzip 压缩,减少传输体积。按需加载资源文件:使用 require.ensure 或动态导入(import())的方式按需加载资源文件,避免一次性加载所有资源,优化加载速度和体积。优化 devtool 中的 source-map:选择合适的 devtool 配置,确保在开发阶段能够提供足够的错误追踪信息,但不会增加过多的打包体积。剥离 CSS 文件:将 CSS 文件单独打包,通过 <link> 标签引入,利用浏览器的并行加载能力。去除不必要的插件:检查 webpack 配置中的插件,移除不必要的插件或根据环境区分开发环境和生产环境的配置,避免将开发环境的调试工具打包到生产环境中。 除了上述优化思路,还可以考虑以下几点: 使用 Tree Shaking:通过配置 webpack,将未使用的代码在打包过程中消除,减少打包体积。使用模块化引入:合理使用 ES6 模块化语法或其他模块化方案,按需引入模块,避免不必要的全局引入。按需加载第三方库:对于较大的第三方库,可以考虑按需加载,而不是一次性全部引入。优化图片资源:压缩图片,使用适当的图片格式,尽量减小图片体积。优化字体文件:如果使用了大量的字体文件,可以考虑只引入需要的字体文件,避免全部引入。使用缓存:通过配置合适的缓存策略,利用浏览器缓存机制,减少重复加载资源。 综合以上优化思路,可以有效减小 webpack 打包生成的文件体积,提升应用性能和加载速度。需要根据具体项目情况和需求,选择合适的优化策略和配置。 2 优化 webpack 打包效率的方法 使用增量构建和热更新:在开发环境下,使用增量构建和热更新功能,只重新构建修改过的模块,减少整体构建时间。避免无意义的工作:在开发环境中,避免执行无意义的工作,如提取 CSS、计算文件 hash 等,以减少构建时间。配置合适的 devtool:选择适当的 devtool 配置,提供足够的调试信息,但不会对构建性能产生太大影响。选择合适的 loader:根据需要加载的资源类型选择高效的 loader,避免不必要的解析和处理过程。启用 loader 缓存:对于耗时较长的 loader,如 babel-loader,可以启用缓存功能,避免重复处理同一文件。采用引入方式引入第三方库:对于第三方库,可以通过直接引入的方式(如 CDN 引入)来减少打包时间。提取公共代码:通过配置 webpack 的 SplitChunks 插件,提取公共代码,避免重复打包相同的代码,提高打包效率。优化构建时的搜索路径:指定需要构建的目录和不需要构建的目录,减少搜索范围,加快构建速度。模块化引入需要的部分:使用按需引入的方式,只引入需要的模块或组件,避免加载不必要的代码,提高构建效率。 通过以上优化措施,可以有效提升 webpack 的打包效率,减少开发和构建时间,提升开发效率和用户体验。根据具体项目需求和场景,选择适合的优化方法进行配置和调整。 3 编写Loader 编写一个名为 reverse-txt-loader 的 Loader,实现对文本内容进行反转处理的功能。

Unity-XCode 一些编译错误记录及解决方法

自己用unity编译导出ios项目,然后在ios项目中再次编译时,有时候会有一些编译错误出现,现记录一下内容及解决方法,内容会不断更新! 错误:Undefined symbol: _compress2 解决:XCode工程 -> Targets -> UnityFramework -> 添加 『libz.tbd』库即可 错误:Undefined symbol: _sqlite3_errmsg(只要是 _sqlite3_ 相关的,后面后缀是啥都一样) 解决:XCode工程 -> Targets -> UnityFramework -> 添加 『libsqlite3.tbd』库即可

【解决问题】raise Exception(“Data must be 1-dimensional“) Exception: Data must be 1-dimensional

根据您提供的错误信息,问题出在尝试将y_test转换为Pandas DataFrame时。错误提示“Data must be 1-dimensional”表明y_test不是一个一维数组,而Pandas的DataFrame要求每个列是一维的。 您需要确保在创建DataFrame之前,y_test是一个一维数组。通常,在读取CSV文件后,即使数据只有一列,Pandas也会将其作为二维数组处理。可以通过添加.squeeze()方法来解决这个问题,这将把二维数组转换为一维数组(如果可能)。 修改代码如下: # 获取数据集 x_test, y_test = data_preprocess() # 确保y_test是一维数组 y_test = y_test.squeeze() y_test_len = len(y_test) # 创建一个DataFrame data = {'index': range(y_test_len), 'label': y_test} df = pd.DataFrame(data) # 保存为CSV文件,包含表头 csv_file_path = 'y_test_labels_true.csv' # 指定保存路径 df.to_csv(csv_file_path, index=False) print('CSV文件保存成功') 在这个修改中,.squeeze()方法将y_test数组从可能的二维形式(例如,(n, 1))转换为一维形式((n,)),这样就可以正确地创建DataFrame并保存为CSV文件了。

马可波罗API中的item_get方法详解

一、引言 随着电子商务的飞速发展,API(应用程序编程接口)成为了不同平台之间数据交互的关键。马可波罗网作为国内知名的B2B平台,其API为开发者提供了丰富的数据接口,其中,item_get方法主要用于获取商品详情。本文将对马可波罗API中的item_get方法进行详细解析。 二、item_get方法概述 item_get方法是马可波罗API中用于获取商品详情的接口。通过该方法,开发者可以获取到商品的详细信息,如商品ID、商品名称、价格、库存量等。这对于开发者的集成和二次开发具有重要意义。 三、使用item_get方法的前提条件 在使用item_get方法之前,需要满足以下前提条件: 拥有马可波罗平台的账户,并注册成为开发者。在马可波罗开发者平台申请API密钥,用于身份验证。了解并遵守马可波罗API的使用条款和政策。 四、item_get方法的请求参数 item_get方法的请求参数主要包括: api_key:用于身份验证的API密钥。item_id:需要获取详情的商品ID。其他可选参数,如分类ID、关键词等,用于进一步筛选商品。 五、item_get方法的返回值 item_get方法返回的数据主要包括: 商品ID:唯一标识商品的编号。商品名称:商品的名称。商品价格:商品的售价或市场价。商品库存:商品的库存数量。其他详情:如商品描述、规格参数等。 返回的数据以JSON格式呈现,方便开发者进行解析和处理。 六、item_get方法的调用示例 以下是一个使用item_get方法的示例代码(以Python为例): import requests import json # 设置请求参数 api_key = "your_api_key" # 替换为你的API密钥 item_id = "123456" # 替换为你要查询的商品ID url = f"https://api.m.mkbl.cn/openapi/item/get?api_key={api_key}&item_id={item_id}" # 发起GET请求 response = requests.get(url) data = response.json() # 解析返回的JSON数据 print(json.dumps(data, indent=4)) # 格式化输出结果 在上述示例中,我们使用了requests库来发起GET请求,并通过json库解析返回的JSON数据。请确保已经安装了这两个库,或者使用你喜欢的其他库来进行网络请求和JSON解析。请将your_api_key和123456替换为你实际的API密钥和商品ID。 七、常见问题与解决方案 在使用item_get方法的过程中,可能会遇到一些常见问题,如请求超时、返回数据格式错误等。以下是一些常见问题及其解决方案: 请求超时:如果服务器响应时间过长,可能会导致请求超时。可以尝试增加请求的超时时间或稍后再进行查询。返回数据格式错误:返回的数据格式可能不符合预期的JSON格式,导致解析错误。可以检查返回的数据是否符合JSON格式,并进行相应的错误处理。

谷歌工程师十年心血:615页Java实战笔记,深入浅出解析Java核心技术

本书的作用 本书将引领你跨越那道"原理悦耳却稍显陌生,难以驾轻就熟"的障碍,助你熟练掌握编程之道。 "也许你会想,'Lambda、函数式编程,这些难道不是那些留着胡子、穿着凉鞋的学究们在象牙塔里琢磨的东西吗?'"确实,这些概念最初可能源于学术环境,但幸运的是,Java 8为我们带来了它们,而且是以一种易于理解的方式。这本书将从普通程序员的视角出发,带你领略其中的奥妙。偶尔,我们也会探寻"这是怎么来的"。 Java 8的新特性,如Lambda表达式、流(Stream)以及接口的默认方法,这些不仅仅是学术上的概念。相反,它们为程序员带来了实实在在的好处,让代码变得更加优雅。想象一下,在Java 8之前,实现策略模式需要编写接口,并创建新的类文件或接口实现。而现在,有了Lambda表达式,一切都变得简单多了。 此外,将传统的命令式编码方式转变为Java 8的流声明式编码,使得代码更加简洁。这不仅提高了代码的可读性,还为解决问题提供了更清晰、更直接的途径。因此,无论你是资深的Java开发者,还是刚刚踏入这个领域的新手,这本书都将为你带来全新的编程体验。" 本书的内容 先看看目录 本书分为六个部分,分别是: “基础知识” “使用流进行函数式数据处理” “使用流和Lambda进行高效编程” “无所不在的Java” “ 提升Java的并发性” “函数式编程以及Java未来的演进” 我们强烈建议你按顺序阅读前两部分的内容,因为很多概念都需要前面的章节作为基础,后面四个部分的内容你可以按照任意顺序阅读。大多数章节都附有几个测验,可以帮助你学习和掌握这些内容。 关于代码 所有代码清单和正文中的源代码,均以等宽字体呈现,仿佛是固定宽度的字体,如这般严谨的排列,与普通文字形成了鲜明的对比。在众多代码示例中,注释的加入,如同指路明灯,为读者照亮了重要的概念,使其更加突出醒目。 最后 需要这份【Java实战笔记】的朋友 👇👇点击下方名片👇👇

npm安装下载修改镜像源

问题描述一 npm install 时,报错:npm ERR! network request to https://registry.npmjs.org/postcss-pxtorem failed, reason: connect ETIMEDOU,这是因为默认npm安装会请求国外的镜像源,导致下载缓慢容易断开请求下载失败的 npm ERR! code ETIMEDOUT npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/postcss-pxtorem failed, reason: connect ETIMEDOUT 104.16.1.35:443 npm ERR! network This is a problem related to network connectivity. npm ERR! network In most cases you are behind a proxy or have bad network settings. npm ERR! network npm ERR! network If you are behind a proxy, please make sure that the npm ERR!