怎么查看java 安装路径

查看Java安装路径的方法因操作系统而异。以下是几种常见操作系统中查看Java安装路径的方法: Windows系统: 使用命令提示符: 打开命令提示符(cmd)。输入以下命令:for %i in (java.exe) do @echo %~$PATH:i。这将输出java.exe的完整路径。使用注册表: Windows操作系统中的注册表记录了许多系统信息,包括已安装的软件信息。可以通过注册表来查找Java的安装路径。使用where命令: 打开命令提示符(Command Prompt)。输入以下命令并按下回车键:where java。命令执行后,将显示Java可执行文件的完整路径,即Java的安装地址。查看环境变量: 按下Win键和R键,打开运行窗口。在运行窗口中输入“cmd”,然后点击“确定”。打开命令行窗口后,输入“java”,然后按下回车键。如果Java已正确安装并设置了环境变量,则命令行窗口中将显示Java的相关信息,包括其安装路径。 Linux/macOS系统: 使用命令行: 打开终端。输入以下命令之一:which java 或 whereis java。这两个命令都会返回Java可执行文件在文件系统中的路径。查询Java环境变量: 打开终端。输入以下命令:echo $JAVA_HOME。echo命令将返回Java的安装路径。查看Java的版本信息: 打开终端。输入以下命令:java -version。该命令将返回安装的Java版本和路径信息。 以上方法仅供参考,具体操作可能会因操作系统版本、Java版本等因素而有所不同。如果以上方法无法找到Java的安装路径,可能需要检查Java是否已正确安装或咨询相关技术支持。

解决java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘1‘ for key ‘book.PRIMARY‘

目录 问题 原因 解决方案 问题 场景:有张图书表,主键是自增的。现在我写了个添加图书功能。因为主键是自增的我插入时无需设置主键值。 关键代码如下: 然后就报这个异常了: 找了一圈并没有发现能解决我这个问题的。最终仔细分析想了下才发现端倪,听我慢慢道来。 原因 先说结论 原因就是自增序列的值跟表里数据的主键值不匹配 何以见得?仔细观察这两次调用报错的提示信息有何不同 你第一出现的异常信息这里是1或者其他数,这个数代表目前自增序列为你分配的主键值 你再次调用还是会抛这个异常,但是这个值+1了。这让我瞬间想到了自增序列与当前表里数据主键不一致问题。你第一次调用mysql自增序列给你匹配了主键是1但是表里面有数据的主键是1了所以主键重复,这是mysql底层自增序列知道1重复了会进行自增++操作,这是第二次调用就会提示主键值2重复。你再次调用会提示3重复、、、、循环以往,直到自增队列的值在表里不存在了就没这个错误了。 为何会导致主键自增序列跟表里的数据主键不匹配呢? 导致我遇到这个问题的原因很简单 CREATE TABLE Book ( id INT PRIMARY KEY COMMENT '图书ID', title VARCHAR(100) NOT NULL COMMENT '标题', publisher VARCHAR(100) NOT NULL COMMENT '出版商', isbn VARCHAR(20) NOT NULL COMMENT 'ISBN号', publishDate DATE NOT NULL COMMENT '出版日期', author VARCHAR(100) NOT NULL COMMENT '作者' ); INSERT INTO Book (id, title, publisher, isbn, publishDate, author) VALUES (1, 'Java编程', '清华大学出版社', '978-7-302-32950-4', '2023-12-01', '张三'), (2, 'Python入门指南', '人民邮电出版社', '9787115423681', '2023-11-15', '李四'), (3, 'C++ Primer Plus', '机械工业出版社', '9787111540953', '2024-01-20', '王五'), (4, '数据结构与算法分析', '电子工业出版社', '9787121347883', '2024-02-28', '赵六'), (5, '计算机网络', '高等教育出版社', '9787040292726', '2024-03-10', '孙七'), (6, '数据库系统概论', '清华大学出版社', '9787302423284', '2024-04-05', '周八'), (7, '软件工程导论', '人民邮电出版社', '9787111226532', '2024-05-18', '吴九'), (8, '操作系统原理', '机械工业出版社', '9787111538905', '2024-06-25', '郑十'), (9, '计算机组成原理', '电子工业出版社', '9787121270012', '2024-07-12', '钱十一'), (10, '嵌入式系统设计', '高等教育出版社', '9787040284652', '2024-08-30', '孙十二'), (11, '人工智能导论', '清华大学出版社', '9787302463242', '2024-09-05', '周十三'), (12, '大数据技术与应用', '人民邮电出版社', '9787111488774', '2024-10-18', '吴十四'), (13, '信息安全原理', '机械工业出版社', '9787111514145', '2024-11-25', '郑十五'), (14, '移动应用开发', '电子工业出版社', '9787121209830', '2024-12-08', '钱十六'), (15, '云计算基础', '高等教育出版社', '9787040263824', '2025-01-15', '孙十七'), (16, '物联网技术与应用', '清华大学出版社', '9787302346727', '2025-02-20', '周十八'), (17, '区块链原理与应用', '人民邮电出版社', '9787111530480', '2025-03-28', '吴十九'), (18, '软件测试与质量保障', '机械工业出版社', '9787111568384', '2025-04-10', '郑二十'), (19, 'Python数据分析', '电子工业出版社', '9787121308827', '2025-05-05', '钱二十一'), (20, 'Java Web开发', '高等教育出版社', '9787040348033', '2025-06-15', '孙二十二'); 一开始我让al生成的表创建sql,就没指定为自增主键,但是已经初始化了20条数据,后面我才发现主键不是自增,就给修改成自增了,这是自增序列并不知道表里面有数据,主键已经排到20了。

小程序如何刷新当前页面

小程序刷新当前页面的方法有多种,以下是几种常见的方法及其详细解释: 使用wx.navigateBack方法: 原理:通过返回上一页并再次进入当前页来刷新页面。方法:调用wx.navigateBack({ delta: 1 }),其中delta参数表示返回的页面数,如果delta为1,则返回到上一页。注意事项:这种方法实际上是模拟了页面的返回和重新进入,因此如果页面有缓存数据,可能需要额外的处理来确保数据的一致性。使用location.reload()方法: 原理:直接在页面的JavaScript代码中调用location.reload()方法来刷新当前页面。方法:在需要刷新的地方直接调用location.reload()。注意事项:使用此方法会重新加载当前页面和所有依赖的数据,因此请确保小程序已经保存了所有需要的数据,以避免数据丢失或用户界面状态改变的问题。使用wx.pageScrollTo方法: 原理:通过滚动页面到顶部来模拟刷新的效果。方法:在需要刷新的页面中添加一个触发元素(如按钮),并绑定相应的点击事件。在事件处理函数中,调用wx.pageScrollTo({ scrollTop: 0, duration: 0 })将页面滚动到顶部。注意事项:这种方法只是模拟了刷新的视觉效果,实际的数据更新仍需要通过其他方式(如调用接口获取新数据)来实现。使用小程序内置的下拉刷新功能: 原理:在页面的配置中开启enablePullDownRefresh选项,并在对应的js文件中定义onPullDownRefresh函数,当用户下拉页面时触发该函数来刷新页面。方法:在页面的json配置文件中添加"enablePullDownRefresh": true,并在对应的js文件中实现onPullDownRefresh函数。注意事项:使用此方法时,需要注意处理下拉刷新后的数据更新和页面状态的恢复。使用setData方法: 原理:在某些情况下,你可能不需要真正刷新整个页面,而只是需要更新页面的某部分数据。这时可以通过调用setData方法来更新页面数据。方法:在需要更新数据的地方,通过调用this.setData({ /* 数据对象 */ })来更新页面的数据。注意事项:使用setData方法时,需要注意避免频繁调用和传递过大的数据对象,以免影响小程序的性能。使用this.onLoad()、this.onReady()或this.onShow()方法: 原理:通过重新调用页面的onLoad、onReady或onShow生命周期函数来刷新页面。方法:在需要刷新的地方调用这些生命周期函数。但请注意,这些函数通常在小程序的生命周期中自动调用,因此手动调用它们可能需要额外的逻辑来处理页面状态和数据。注意事项:使用这些生命周期函数来刷新页面可能不是最佳实践,因为它们通常用于处理页面加载、准备和显示时的逻辑。如果可能的话,建议使用其他更直接的方法来刷新页面。 总结:小程序刷新当前页面的方法有多种,你可以根据具体的需求和场景选择合适的方法。在选择方法时,请考虑性能、数据一致性、用户体验和代码可读性等因素。

Linux 原生安装最新版MySQL 8.4 不分发行版Linux系统通用

文章目录 Linux 下安装最新版MySQL 8.4不分发行版 ```Linux系统通用```准备工作切换到root账户查看系统是否支持glibc2.28移除旧版本 安装mysql依赖下载MySQL开始安装mysql创建运行mysql的用户和用户组解压安装包修改权限创建目录初始化mysql 设置配置文件启动mysql修改默认密码 Linux 下安装最新版MySQL 8.4不分发行版 Linux系统通用 Linux下安装mysql8的方式很多通过系统带的包管理器apt|yum|dpkg 等工具安装简单快捷,但是每种方式多多少少有些区别懒得记,为什么就不统一呢? 而且安装文件分布位置不是很清楚,管理服务命令还不一样 。想到这里我就要吐🤢🤢🤢🤢🤢🤢。 纯纯浪费我时间、脑容量。真的很无语! 还好MySQL官方提供了二进制安装包可以在Linux系统下通用。无论是基于Debian的Ubuntu系列还是Redhat系列的CentOS是可以,终于可以只用专注一种安装方式了。 下面就使用MySQL 二进制安装包方式安装,我的软件目录、数据目录、配置文件目录、日志目录、PID文件目录 ,自己安装的都清楚知道。有一种更能掌握掌控的感觉,更放心! 亲测 CentOS 8、Ubuntu 20.04、Ubuntu 18.04 OK ! 准备工作 切换到root账户 ubuntu系统 执行 sudo -i 切换到root 方便操作 查看系统是否支持glibc2.28 因为安装的版本比较新需要新版glic2.28 redhat、centos系列使用以下命令 strings /lib64/libc.so.6 | grep GLIBC_2.28 有输出版本号证明支持 debian、ubuntu系列使用以下命令 strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_2.28 若是不支持需要添加 GLIBC_2.28 查看这篇教程安装 移除旧版本 如果你安装过mysql 为了防止出现奇奇怪怪问题,我们把旧版本卸载删除相关包和残留文件 redhat、centos系列使用yum命令 # yum 查询已安装的 MySQL 相关包 rpm -qa | grep -i mysql # 卸载 MySQL 相关包 yum remove mysql-* # 卸载完再查询还有无相关包 rpm -qa | grep -i mysql debian、ubuntu系列使用apt命令

前端三大主流框架

目录 1.概述 2.React 2.1.作用 2.2.诞生背景 2.3.版本历史 2.4.优缺点 2.5.应用场景 2.6.示例 2.7.未来展望 3.Vue 3.1.作用 3.2.诞生背景 3.3.版本历史 3.4.优缺点 3.5.应用场景 3.7.示例 3.8.未来展望 4.Angular 4.1.作用 4.2.诞生背景 4.3.版本历史 4.4.优缺点 4.5.应用场景 4.6.示例 4.7.未来展望 5.总结 1.概述 前端三大主流框架是啥?我认为是React、Vue和Angular。下面我们来探讨React、Vue和Angular这三大主流前端框架的相关信息。 2.React 2.1.作用 React是一个用于构建用户界面的JavaScript库,专注于构建单页应用的视图层。由Facebook开发和维护,React允许开发者以组件为基础构建复杂和高性能的UI。 2.2.诞生背景 React诞生于2013年,由Facebook的软件工程师Jordan Walke开发。解决了Facebook在高动态数据量应用(如新闻推送)中界面更新效率低下的问题。 2.3.版本历史 2013年:首次开源发布React 0.3.0。 2014年:React 0.9.0,引入Virtual DOM。 2015年:React 0.14.0,正式支持ES6。 2016年:React 15.0,重大性能增强。 2017年:React 16.0(Fiber),重写内部算法,优化性能。 2020年:React 17.0,引入新的升级策略,提高兼容性。 2022年:React 18.0,启用并发模式等新特性。 2.4.优缺点 优点: 高效的Virtual DOM(虚拟DOM)实现。 组件化开发,提高代码可维护性和重用性。 单向数据流,有助于控制复杂的应用状态。 强大的社区和生态系统。 丰富的开发工具和第三方库支持。 缺点: 仅专注于视图层,需要结合其他库(如Redux)管理状态。 学习曲线较陡,JSX语法可能让初学者感到困惑。 更新节奏较快,可能导致频繁的踩坑经验。 2.5.应用场景 1. 社交媒体应用(如Facebook、Instagram) 2. 单页应用(SPA)(如Gmail、Trello) 3. 数据可视化仪表板(如DataDog)

【数据结构】【C语言】快速排序~动画超详解

目录 1 快速排序的基本原理2 霍尔版快速排序的实现3 快速排序的基本优化方式3.1 关于小数组的优化3.2 关于key处数字过小或者过大导致遍历整个数组的优化3.3 优化之后的快排 4 *快速排序为什么一定要先向右取小的讨论(重要)*4.1 霍尔版快速排序的深度解构4.2 霍尔版快速排序的 key 值交换规律 5 快速排序的其他实现方法 - 前后指针法6 本篇文章代码汇总 1 快速排序的基本原理 快速排序的基本思想为分治,即将一个大数组分为左右2个小数组,不断下分直到无法再进行下分为止再具体一点,即取一个下标为 key 处,调整除了 key 处以外的剩下的值,直到 key 处的值到了它应该到的位置, key 左边的数应该全部小于等于 key , key 右边的数应该全部大于 key ,此时 key 左边的部分看作一个新的数组, key 右边的部分也看做一个新的数组,不断让新数组重复此操作,直到所有的数字全部到了它们所应该在的位置上,即排序完毕,详细可见动图快速排序有很多种写法,但都离不开分治的思想,具体写法详见下文 2 霍尔版快速排序的实现 //快速排序 void QuickSort(SortType* a, int left, int right) { //1.key(标记数) //2.begin(向左找比 key 大的数) //3.end(向右找比 key 小的数) //4.left(标记当前需要处理的数组的范围) //5.right(标记当前需要处理的数组的范围) assert(a); //检测指针是否为空 if (right <= left) //范围如果小于等于1,那就不需要排序,直接return { return; } int key = left; //key默认设置为最左边的数 int begin = left; //begin从最左边往右走 int end = right; //end从最右边往左走 while (begin < end) { //向右找小 while (begin !

Elasticsearch实战

sudo apt-get install openjdk-7-jre-headless wget -c https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2.2.1/elasticsearch-2.2.1.zip unzip elasticsearch-2.2.1.zip sudo mv elasticsearch-2.2.1 elasticsearch //chmod a+x elasticsearch sudo chown -R python elasticsearch 用vi打开elasicsearch执行文件,在变量ES_JAVA_OPTS使用前添加以下命令 ES_JAVA_OPTS="-Des.insecure.allow.root=true" ./elasticsearch/bin/elasticsearch -Des.insecure.allow.root=true 终端 curl -XGET http://127.0.0.1:9200/?pretty 主机访问虚拟机中的服务 线上环境切忌不要这样配置,否则任何人都可以通过这个接口修改你的数据 修改 /home/python/Downloads/elasticsearch/config/elasticsearch.yml 文件,加入以下两行: network.bind_host: "0.0.0.0" network.publish_host: _non_loopback:ipv4_ 离线安装 IK Analysis,需安装elasticsearch对应版本 到https://github.com/medcl/elasticsearch-analysis-ik/网站自行下载对应版本 unzip ./elasticsearch-analysis-ik-1.8.1/elasticsearch-analysis-ik-1.8.1.zip 将 elasticsearch-analysis-ik 的配置也拷贝到 ~/es_root 对应目录 cp -r elasticsearch-analysis-ik-1.8.1/elasticsearch-analysis-ik-1.8.1/ /home/python/Downloads/elasticsearch/plugins/ ./elasticsearch/bin/elasticsearch -Des.insecure.allow.root=true 配置同义词 打开 ~/es_root/config/elasticsearch.yml 文件,加入以下配置: index: analysis: analyzer: ik_syno: type: custom tokenizer: ik_max_word filter: [my_synonym_filter] ik_syno_smart: type: custom tokenizer: ik_smart filter: [my_synonym_filter] filter: my_synonym_filter: type: synonym synonyms_path: analysis/synonym.

C#朗读语音

最近有个需求,需要在C#程序发生异常时候,朗读文字,C#提供了.net framework可以提供简单的语音朗读功能。 引入依赖 using System.Media; using System.Speech.Synthesis; using System.Runtime.InteropServices; //报警音量 SystemSounds.Exclamation.Play(); //设置阅读 SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(); //音量 speechSynthesizer.Volume = 100; //倍速 speechSynthesizer.Rate = 2; //阅读 speechSynthesizer.SpeakAsync(message)

Android Webview 详解

一 简介 一个基于webkit引擎、展现web页面的控件 Android 4.4前:Android Webview在低版本 & 高版本采用了不同的webkit版本的内核Android 4.4后:直接使用了Chrome内核 1.1 作用 在 Android 客户端上加载h5页面在本地 与 h5页面实现交互 & 调用其他:对 url 请求、页面加载、渲染、对话框 进行额外处理。 二 具体使用 Webview的使用主要包括:Webview类 及其 工具类(WebSettings类、WebViewClient类、WebChromeClient类) 2.1 Webview常用方法 2.1.1 WebView的状态 //激活WebView为活跃状态,能正常执行网页的响应 webView.onResume() ; //当页面被失去焦点被切换到后台不可见状态,需要执行onPause //通过onPause动作通知内核暂停所有的动作,比如DOM的解析、plugin的执行、JavaScript执行。 webView.onPause(); //当应用程序(存在webview)被切换到后台时,这个方法不仅仅针对当前的webview而是全局的全应用程序的webview //它会暂停所有webview的layout,parsing,javascripttimer。降低CPU功耗。 webView.pauseTimers() //恢复pauseTimers状态 webView.resumeTimers(); //销毁Webview //在关闭了Activity时,如果Webview的音乐或视频,还在播放。就必须销毁Webview //但是注意:webview调用destory时,webview仍绑定在Activity上 //这是由于自定义webview构建时传入了该Activity的context对象 //因此需要先从父容器中移除webview,然后再销毁webview: rootLayout.removeView(webView); webView.destroy(); 2.1.2 关于前进 / 后退网页 //是否可以后退 Webview.canGoBack() //后退网页 Webview.goBack() //是否可以前进 Webview.canGoForward() //前进网页 Webview.goForward() //以当前的index为起始点前进或者后退到历史记录中指定的steps //如果steps为负数则为后退,正数则为前进 Webview.goBackOrForward(intsteps) 常见用法:Back键控制网页后退 问题:在不做任何处理前提下 ,浏览网页时点击系统的“Back”键,整个 Browser 会调用 finish()而结束自身目标:点击返回后,是网页回退而不是推出浏览器解决方案:在当前Activity中处理并消费掉该 Back 事件 public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KEYCODE_BACK) && mWebView.

AI初识--LLM、ollama、llama都是些个啥?

LLM全称(large language model)也就是大语言模型 什么是Ollama,它与Llama是什么关系? Ollama是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型,降低使用大语言模型的门槛,使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和部署最新大语言模型,包括如Llama 3、Phi 3、Mistral、Gemma等开源的大型语言模型。 Ollama目前支持以下大语言模型:library 因此,Ollama与Llama的关系:Llama是大语言模型,而Ollama是大语言模型(不限于Llama模型)便捷的管理和运维工具 那么我们如何在本地部署这个大模型呢? 首先我们需要到ollama官网下载,然后在命令窗中输入一些ollama的命令 ollama只是个工具,那怎么跑我们想要的大模型呢? 下载模型 Ollama可以直接下载内置的几种模型,但选择有限。我们更希望从HuggingFace下载以便方便地评估各种模型,所以,这里我们并不从Ollama直接下载,而是从HuggingFace下载。 在HuggingFace搜索llama3,设置Languages为Chinese,可以看到若干基于LLaMa3的中文模型,我们选择一个GGUF格式的模型,GGUF格式是llama.cpp团队搞的一种模型存储格式,一个模型就是一个文件,方便下载与运行。 点击Files,可以看到若干GGUF文件,其中,q越大说明模型质量越高,同时文件也更大,我们选择q6,直接点击下载按钮,把这个模型文件下载到本地。 导入模型 下载到本地的模型文件不能直接导入到Ollama,需要编写一个配置文件,随便起个名字,如config.txt,配置文件内容如下: FROM "/Users/liaoxuefeng/llm/llama3-8b-cn-q6/Llama3-8B-Chinese-Chat.q6_k.GGUF" TEMPLATE """{{- if .System }} <|im_start|>system {{ .System }}<|im_end|> {{- end }} <|im_start|>user {{ .Prompt }}<|im_end|> <|im_start|>assistant """ SYSTEM """""" PARAMETER stop <|im_start|> PARAMETER stop <|im_end|> 第一行FROM "..."指定了模型文件路径,需要修改为实际路径,后面的模板内容是网上复制的,无需改动。 然后,使用以下命令导入模型: $ ollama create llama3-cn -f ./config.txt llama3-cn是我们给模型起的名字,成功导入后可以用list命令查看: $ ollama list NAME ID SIZE MODIFIED llama3-cn:latest f3fa01629cab 6.6 GB 2 minutes ago 可以下载多个模型,给每个模型写一个配置文件(仅需修改路径),导入时起不同的名字,我们就可以用Ollama方便地运行各种模型。

G5 - Pix2Pix理论与实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目录 理论知识图像翻译CGANU-NetPix2Pix损失函数模型结构生成器差别器 模型效果总结与心得体会 理论知识 前面已经学习了GAN与CGAN,这节开始学习Pix2Pix。 Pix2Pix是一个以CGAN为基础,用于图像翻译(Image Translation)的通用框架,旨在将一个图像域中的图像转换成另一个图像域中的图像,它实现了模型结构和损失函数的通用化,并在诸多的图像翻译数据集上取得了令人瞩目的效果。 图像翻译 首先要先理解 图像内容(Image Content)、图像域(Image Domain)和图像翻译这三个概念。 图像内容:指的是图像的固有内容,它是区分不同图像的依据图像域:指在特定上下文中所涵盖的一组图像的集合,这些图像通常具有某种相似性或共同特征。图像域可以用来表示 一类具有共同属性或内容的图像。在图像处理和计算机视觉领域,图像域常常被用于描述参数某项任务或问题的图像集合图像翻译:是将一个物体的图像表征转换为该物体的另一个表征,例如根据皮包的轮廓得到皮包的彩色图。也就是找到一个函数,能让域A的图像映射到域B,从而实现图像的跨域转换。 CGAN 在之前的学习中我们知道CGAN是在GAN的基础上进行了一些改进。对于原始的GAN生成器而言,其生成的图像数据是随机不可预测的,因此CGAN在生成器和判别器中加入了额外的条件。它的本质是将额外添加的信息融入到生成器和判别器中,其中添加的信息可以是图像的类别、人脸表情和其他辅助信息等,旨在把无监督学习的GAN转化为有监督学习的CGAN,便于网络能够在我们的掌控下更好地进行训练 。 U-Net U-Net是一个用于医学图像分割的全卷积模型。它分为两个部分,其中左侧是由卷积和降采样操作组成的压缩路径,右侧是由卷积和上采样组成的扩张路径,扩张的每个网络块的输入由上一层上采样的特征和压缩路径部分的特征拼接而成。网络模型整体是一个U形的结构,因此被叫做U-Net 分割任务是图像翻译任务的一个分支,因此U-Net也可以被用作其它的图像翻译任务,Pix2Pix就是采用了U-Net作为主体结构。 Pix2Pix 在Pix2Pix中,图像翻译任务可以建模为给定一个输入数据 x x x和随机噪声 z z z,生成目的图像 y y y,即 G : { x , z } → y G:\{x,z\} \rightarrow y G:{x,z}→y。 与传统的CGAN不同的是,在Pix2Pix中判别器的输入是生成图像 G ( x ) G(x) G(x)(或是目标图像 y y y)和源图像 x x x,而生成器的输入是源图像 x x x和随机噪声 z z z 损失函数 因为Pix2Pix和CGAN相比,输入的数据不太相同了,所以它们的损失函数也要对应进行调整,可以表示为

数据结构之ArrayList与顺序表(上)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 顺序表的学习,点我 上面这篇博文是关于顺序表的基础知识,以及顺序表的实现。 目录 手动实现顺序表的源码: 分析Java 8 的 ArrayList 的源码 字段: 构造方法: ArrayList本身的扩容机制和分配内存机制 ArrayList常见操作 ArrayList的遍历 普通for循环遍历 for-each遍历 toString方法遍历 迭代器遍历 手动实现顺序表的源码: 下面是Java版的顺序表源码: public class MyArraylist { public int[] elem; public int usedSize;//0 //默认容量 private static final int DEFAULT_SIZE = 10; public MyArraylist() { this.elem = new int[DEFAULT_SIZE]; } /** * 打印顺序表: * 根据usedSize判断即可 */ public void display() { for (int i = 0; i < this.usedSize; i++) { System.

Vagrant CentOS7 安装 Docker 及使用 Docker 安装 MySQL

1、安装 Docker 1.1、删除旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 1.2、安装必要的依赖包 sudo yum install -y yum-utils 1.3、配置源地址,即告诉系统去哪里下载 Docker sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 如果访问Docker的官方下载地址比较慢,可以更换成其它地址,例如阿里云的 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 1.4、安装Docker引擎、客户端、容器等 sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 1.5、启动Docker sudo systemctl start docker 1.6、检查 Docker 版本查看是否安装启动成功 docker -v 1.7、设置 Docker 开机启动 sudo systemctl enable docker 1.8、配置镜像加速 1.8.1、创建或修改 vi /etc/docker/daemon.json 文件

八款国产 AI 地狱挑战 2024 高考数学压轴大题:只给一张模糊拍屏,从读题开始考验!...

在这个“多模态元年”里,AI 展现了知识评估从单一文本向跨媒体认知与协同问题解决的进化趋势。于是,我们今年给 AI 的“高考大题”可不只是写作文而已。 文 | 王启隆 编 | 唐小引 出品丨AI 科技大本营(ID:rgznai100) 一年一度的高考在大雨中掀开帷幕。今年语文考试的“新课标 I 卷”与人工智能有关,激发了广泛的社会讨论:有人认为人工智能是“超纲”问题,因为不是所有学生都用过 AI 产品;有人认为这就是标准的议论文问题,“so eazy”。于是,我们让人工智能们自己写了一遍这道题目,并进行自评。 考试结束后,教育部教育考试院随即发布了他们的命题思路。 随着午后的阳光逐渐驱散了早晨的凉意,战场转移到了数学的疆域。2022 年高考数学的压轴大题因其难度被许多网友一直惦记着,那今年的难度又如何呢?我们找来了当前主流的八款国产大模型挑战今年“新课标 I 卷”的压轴大题,看看 AI 目前的数学能力表现如何。 但是先等等 —— 2024 年的 AI,已经不需要人类手打文字问题啦!今年的 AI 圈热词一直都是“多模态”,所以我们将直接把图丢给这八款主流大模型,让它们从“读题”这一步开始进行全方面考验。 而且,目前官方的数学真题还没正式放出,只有网络上流传的“手写版试卷”,所以,我们的测试内容也将是这些“超糊手写拍屏”,看看当前大模型的多模态能力是否能准确识别出这些模糊的字迹,以下便是我们将提交给 AI 的「2024 数学压轴大题」: 如果你没看清这张图上的字,请以下面这张高清大图作为参考: 对于接下来挑战视觉识别失败的大模型,我们也会给它们提供这张高清图片,让它们进行补测作为更基础的图片识别与数学能力方面的考验(全程还是不会输入文字题目,只有图片)。 话不多说,马上开始。 温馨提示:挑战内容仅供娱乐,不能代表大模型能力上限! 通义千问 阿里云的通义千问,我们将选用五月更新的最新版本客户端:「通义千问 2.5」。值得一提的是,今天阿里云还开源了最新的 Qwen2 大模型,并且登顶 Hugging Face 榜首,我们可以在未来 2024 高考数学真题正式上线后进行测试。 通义千问首先认出了这是道「等差数列」的问题,顺带确认了题目中提到的「可分数列」是什么。 然后,通义千问开始逐步给出每一小题的答案: 第一小题 第二小题 第三小题 讯飞星火 下一位闯关者是科大讯飞旗下的讯飞星火,而星火 AI 则是先将自己的解题思路梳理了一遍: 第一小题 讯飞星火居然记得写“解”,值得称赞;但直接给出答案可以拿满这小题的全部分数吗? 第二小题 第二小题写得非常长,希望星火的试卷上还有位置。 第三小题 第三小题解的也很有模有样,你觉得星火写对了吗? 字节豆包 字节的豆包 App 里内置了一个非常显眼的「学习小助手」智能体,告诉我不用给她打字,只发张图就能解题,让我们试试:

单臂路由的配置(思科、华为)

#交换设备 不同vlan属于不同广播域,不能互相通信,他们配置的是不同网段的IP地址,针对不同网段的IP地址进行通信,就需要用到路由技术 实现不同vlan之间的通信技术有两种 单臂路由三层交换 单臂路由 一、思科设备的单臂路由配置 在路由器上划分子接口,每一个子接口作为一个vlan的网关,需要做vlan封装交换机与主机连接的链路为:access交换机与路由器连接的链路为trunk 工作原理 配置过程 交换机 en conf t valn 10 vlan 20 exit int f0/1 sw acc vlan 10 int f0/2 sw acc vlan 20 int f0/3 sw mo trun 路由器 en conf t int g0/0.1 #将g0/1接口划分为两个子接口,这个接口是逻辑接口,并不实际存在,但是功能却和物理接口是一样的 encapsulation dot1Q 10 #为这个接口配置802.1Q协议,最后面的10是vlan 号 ip add 192.168.10.254 255.255.255.0 exit int g0/0.2 encapsulation dot1Q 20 #为这个接口配置802.1Q协议,最后面的20是vlan 号 ip add 192.168.20.254 255.255.255.0 exit int g0/0 no shut exit ip dhcp pool vlan10 network 192.

无涯教程-C++ 算法 - reverse函数

C++算法 reverse()函数用于在[first,last)参数内反转元素的顺序。 reverse - 语法 template <class BidirectionalIterator> void reverse (BidirectionalIterator first, BidirectionalIterator last); Note: BidirectionalIterator是一个迭代器,用于以正向和反向访问容器的任何元素。 reverse - 参数 first:一个双向迭代器,它指向第一个元素在元素反转参数内的位置。 last:前向迭代器,在元素反转参数内,将位置指向最后一个元素之后的位置。 reverse - 返回值 没有 reverse - 例子1 让我们看一个简单的例子来反转给定的字符串: #include <algorithm> #include <iostream> #include <string> using namespace std; int main() { string str = "Hello Myself Nikita"; cout << "Before Reverse : "<< str << endl; reverse(str.begin(), str.end()); cout <<"After Reverse : " << str << endl; return 0; } 输出:

[动态规划]---part1

前言 作者:小蜗牛向前冲 专栏:小蜗牛算法之路 专栏介绍:"蜗牛之道,攀登大厂高峰,让我们携手学习算法。在这个专栏中,将涵盖动态规划、贪心算法、回溯等高阶技巧,不定期为你奉上基础数据结构的精彩算法之旅。一同努力,追逐技术的星辰大海。" 目录 一、什么是动态规划 1、什么是动态规划 2、动态规划的学习 二、动态规划刷题 1、第 N 个泰波那契数 a、解题思路: b、代码 2、 面试题 08.01. 三步问题 a、解题思路: b、代码 3 、746. 使用最小花费爬楼梯 a、解题思路 b、代码 4、解码方法 a、解题思路 b、代码 c、代码优化 5、不同路径(medium) a、解题思路 b、代码 本期我们将探讨动态规划,并提供5道经典动态规划问题,难度由浅入深。 一、什么是动态规划 1、什么是动态规划 在学习算法的过程中,我们往往会遇到一些算法题是要用动态规划来解决。 但是做为小白的我们哪里知道动态规划是什么? 从概念上说 动态规划(Dynamic Programming)是一种解决复杂问题的算法设计技术。它通常用于解决具有重叠子问题和最优子结构性质的问题,通过将问题分解为更小的子问题,并利用子问题的解来构建原始问题的解。 看完概念我们知道什么是动态规划,求重叠类子问题的 一般会用到动态规划的思路。 那我们如何求学习动态规划 2、动态规划的学习 对于算法类题目,在我们掌握算法的基本原理后,就是进行大量刷题,进经验的总结。 求解动态规划的五步骤: 1、状态表示 在求解过程中,我们往往要创建dp表(其实就是数组),状态表示就是我们要找出dp表中值的含义是什么。 状态表 怎么来? 根据题目要求经验+题目要求分析题目的过程中,发现重复子问题 2、状态转移方程 简单说是和dp[i]有关的一个方程 3、初始化 保证在填写dp表的时候不越界 4、填写顺序 根据前面的计算得来,可以从前往后,也可以从后往前。 5、返回值 根据题目要求+状态表示 讲完了解题步骤,下面就进行刷题训练。 特别提醒:后面博客会带领大家由易到难进行刷题,每期都为五题。 二、动态规划刷题 1、第 N 个泰波那契数 泰波那契序列 Tn 定义如下: T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2

当C++的static遇上了继承

比如我们想要统计下当前类被实例化了多少次,我们通常会这么写 class A { public: A() { Count_++; } ~A() { Count_--; } int GetCount() { return Count_; } private: static int Count_; }; class B { public: B() { Count_++; } ~B() { Count_--; } int GetCount() { return Count_; } private: static int Count_; }; int A::Count_ = 0; int B::Count_ = 0; int main() { A a1, a2, a3; B b1, b2, b3, b4, b5; std::cout << a1.

mysql optimizer_switch : 查询优化器优化策略深入解析

码到三十五 : 个人主页 在 MySQL 数据库中,查询优化器是一个至关重要的组件,它负责确定执行 SQL 查询的最有效方法。为了提供DBA和开发者更多的灵活性和控制权,MySQL 引入了 optimizer_switch 系统变量。这个强大的工具允许用户开启或关闭特定的优化策略,从而可以根据具体的工作负载和数据分布调整查询的执行计划。 目录 optimizer_switch 的概念查看当前的优化器标志集修改optimizer_switch的值 主要优化标志介绍如何使用 optimizer_switch注意事项和最佳实践结论 optimizer_switch 的概念 optimizer_switch 是一个由多个标志组成的字符串,每个标志控制一个特定的优化器行为。这些标志可以被设置为 on 或 off,以启用或禁用相应的优化策略。通过调整这些标志,数据库管理员可以精细地控制查询优化器的行为,以达到最佳的性能表现。 ptimizer_switch系统变量可以控制优化器行为。它的值是一组标志,每个标志都有一个on或off值,用于指示相应的优化器行为是启用还是禁用。此变量具有全局值和会话值,可以在运行时更改。全局默认值可以在服务器启动时设置。 查看当前的优化器标志集 mysql> SELECT @@optimizer_switch\G *************************** 1. row *************************** @@optimizer_switch: index_merge=on,index_merge_union=on, index_merge_sort_union=on,index_merge_intersection=on, engine_condition_pushdown=on,index_condition_pushdown=on, mrr=on,mrr_cost_based=on,block_nested_loop=on, batched_key_access=off,materialization=on,semijoin=on, loosescan=on,firstmatch=on,duplicateweedout=on, subquery_materialization_cost_based=on, use_index_extensions=on,condition_fanout_filter=on, derived_merge=on,use_invisible_indexes=off,skip_scan=on, hash_join=on,subquery_to_derived=off, prefer_ordering_index=on,hypergraph_optimizer=off, derived_condition_pushdown=on 1 row in set (0.00 sec) 修改optimizer_switch的值 要修改optimizer_switch的值,指定一个由一个或多个命令组成的逗号分隔的值: SET [GLOBAL|SESSION] optimizer_switch='command[,command]...'; 每个命令值应该具有下表所示的形式之一: 该值中命令的顺序并不重要,但如果存在,默认命令将首先执行。将opt_name标志设置为default将其设置为on或off中的任意一个为其默认值。不允许在值中多次指定任何给定的opt_name,这会导致错误。该值中的任何错误都会导致赋值失败,并导致optimizer_switch的值保持不变。 主要优化标志介绍 index_merge index_merge 控制是否允许索引合并优化。当查询条件可以通过多个索引来满足时,MySQL 可以合并这些索引以更有效地检索数据。在复杂查询中,这可以显著提高性能。 index_condition_pushdown (ICP) ICP 允许将 WHERE 子句中的条件推送到存储引擎层进行处理。这减少了存储引擎需要返回给优化器的数据量,因为它可以在检索数据时就过滤掉不符合条件的行。

Python—使用LangChain调用千帆大模型

文章目录 前言一、安装LangChain二、获取千帆API Key、Secret Key三、简单对话案例实现四、构建语言模型应用程序:LLM1.初始化模型2.LLM初始化和调用 五、提示词模板(PromptTemplate): 管理 LLM 的提示1.定义提示模板2.组合 LLM 和提示词3.组合输出解析器 六、信息检索链(Retrieval Chain)1.加载索引数据2.存储向量数据3.创建检索链传入问题4.使用检索器动态选择最相关的文档并将其传递5.完整代码及调用 七、实现简单的聊天机器人1.聊天模型将使用消息进行响应。2.传入一个消息列表:3.使用ConversationChain记住过去的用户输入和模型输出4.对话5.聊天检索1)加载博客文章。2)将其拆分并存储在向量中3)创建会话记忆4)整体代码示例 总结 前言 LangChain就是一个 LLM 编程框架,你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;甚至针对常规的应用流程,它利用链(LangChain中Chain的由来)这个概念已经内置标准化方案了。 LangChain是一个用于开发由语言模型提供支持的应用程序的框架。它使应用程序能够: 数据感知:将语言模型连接到其他数据源具有代理性质:允许语言模型与其环境交互 名称网址LangChain中文网https://www.langchain.com.cn/LangChain官网https://www.langchain.com/LangChain API文档地址https://api.python.langchain.com/en/latest/langchain_api_reference.html# 环境: 名称版本Python3.9LangChain0.1.0 一、安装LangChain 此次我安装的最新版为:0.1.0 pip install langchain #安装qianfan pip install qianfan 二、获取千帆API Key、Secret Key 登录百度云搜索进入千帆大模型控制台没有应用则创建应用获取APIKey、SecretKey 三、简单对话案例实现 调用千帆大模型,实现让大模型讲个故事 """For basic init and call""" import os from langchain_community.chat_models import QianfanChatEndpoint from langchain_core.messages import HumanMessage os.environ["QIANFAN_AK"] = "API_KEY" os.environ["QIANFAN_SK"] = "SECRET_KEY" chat = QianfanChatEndpoint( streaming=True, ) res = chat([HumanMessage(content="