【Java】Java 11 新特性概览

Java 11 新特性概览 1. Java 11 简介2. Java 11 新特性2.1 HTTP Client 标准化2.2 String 新增方法(1)str.isBlank() - 判断字符串是否为空(2)str.lines() - 返回由行终止符划分的字符串集合(3)str.repeat(n) - 重复字符串多少次(4)str.stripLeading() - 删除字符串前面的空格(5)str.stripTrailing() - 删除字符串后面的空格(6)str.strip() - 删除字符串前后的空格 2.3 ZGC:可伸缩低延迟垃圾收集器2.4 Optional.isEmpty()2.5 lambda 参数的局部变量语法2.6 简化启动单个源代码文件的方法2.7 Epsilon 垃圾收集器 3. 其他新特性 1. Java 11 简介 Java 11 于 2018 年 9 月 25 日正式发布,且为长期支持版本(Long-Term-Support - LTS)。 下面为 Oracle Java SE 产品的一些关键产品日期示例(Oracle Java SE Product Releases): 2. Java 11 新特性 2.1 HTTP Client 标准化 Java 11 对 Java 9 中引入并在 Java 10 中更新的 Http Client API 进行了标准化,实现了几乎完全重写,并且现在是完全异步非阻塞的 (以前的 HTTP/1.

技巧 | 如何解决 zsh: permission denied 问题 | Mac

技巧 | 如何解决 zsh: permission denied 问题 | Mac 问题描述 在 macOS 系统终端执行 sh 程序脚本时,抛出异常 zsh: permission denied 原因分析 用户没有权限,所以才出现了这个错误,所以只需要用 chmod 修改一下权限就可以了 解决方法 给文件权限,可执行以下命令 chmod u+x *.sh chmod 是权限管理命令 change the permissions mode of a file 的缩写。 u 代表所有者,x 代表执行权限,+ 表示增加权限。 chmod u+x file.sh 就表示对当前目录下的 file.sh 文件的所有者增加可执行权限。

【vue3】踩坑日记,vite与node版本对应(mac环境)

创建vue3+vite+ts项目时,报错The requested module ‘vue’ does not provide an export named ‘computed’; node版本问题, Vite 需要 Node.js 版本 14.18+,16+; 升级node版本步骤: 先查看node的版本: node -v; 安装n: npm install -g n sudo n latest // 升级到最新版本 sudo n stable // 升级到稳定版本 sudo n xx.xx // 升级到具体版本号 我采用的是升级到14.18.2 sudo n 14.18.2 n 切换之后的 node 默认装在 /usr/local/bin/node,先用 which node 检查一下当前使用的 node 是否在这个路径下。是的话,就更新下/etc/profile文件指定: source /etc/profile node就完美升级到想要的版本,vite抛错也完美解决!

【LeetCode力扣】86. 分隔链表

目录 1、题目介绍 2、解题思路 2.1、双链表双指针 2.2、代码描述 1、题目介绍 原题链接:86. 分隔链表 - 力扣(LeetCode) 示例 1: 输入:head = [1,4,3,2,5,2], x = 3 输出:[1,2,2,4,3,5] 示例 2: 输入:head = [2,1], x = 2 输出:[1,2] 提示: 链表中节点的数目在范围 [0, 200] 内-100 <= Node.val <= 100-200 <= x <= 200 2、解题思路 根据题意,考虑通过「新建两个链表」实现原链表分割,算法流程为: 新建两个链表 small 和 BigEqu ,分别用于链接小于标志数 x 的结点和大于等于标志数 x 的结点。遍历链表head并依次比较各节点值 head->val 和 x 的大小,若head->val < x ,则将head指向的该结点添加到链表 small 最后面。若head->val >= x,则将head指向的该结点添加到链表BigEqu最后面。遍历完成后,拼接 small 和 BigEqu 链表。最终判断头结点并返回。 2.1、双链表双指针 首先比较head->val与x,发现此时head->val小于x,因此放入small链表中,此时small的链头smallH和链尾smallT都指向结点1。head指向下一个结点。

【C++】引用之带你“消除”C语言版数据结构教材的一些困惑(虽然是C++的内容,但是强烈建议正在学习数据结构的同学点进来看看)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 引用的概念 引用的特性 引用的使用场景 引用和指针的区别 C语言版数据结构教材的解惑 前言 不知道你有没有这样的经历,在学习数据结构的时候,教材中有一个地方总是搞不明白,如下图: 我记得当时我问过老师:《这是引用,你只要记得只要这个值被改变了,就加上它&》 我也没有继续探索,导致我数据结构阶段虽然考试成绩还行,但是还是😭蒙蒙的状态😭 直到今天,我学习了引用,我才知道为什么要这么用。 🌐🌐🌐希望这篇文章可以让遇到同样困惑的你得到解答🌐🌐🌐 🔯那就让我们赶紧进入引用的学习吧🔯 欢迎大家📂收藏📂以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。 ========================================================================= GITEE相关代码:🌟fanfei_c的仓库🌟 ========================================================================= 1.引用的概念 引用是给已存在变量取了一个别名。 编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 比如:孙悟空,别名齐天大圣、美猴王等等,这些别名都指的是孙悟空。 用法: void TestRef() { int a = 10; int& ra = a;//<====定义引用类型 printf("%p\n", &a); printf("%p\n", &ra); } 我们说引用与它引用的变量共用同一快内存空间,那么他们的地址就是相同的,如图: 注意:引用类型必须和引用实体时同种类型的。 2.引用的特性 引用在定义时必须初始化一个变量可以有多个引用引用一旦引用一个实体,再不能引用其他实体(引用不能改变指向) 了解了以上三条特性,请思考:引用能够替代指针么? 在C++中,引用不能替代指针,因为引用不能改变指向,而指针可以。 在JAVA中,引用可以改变指向。 有关常引用: void TestConstRef() { const int a = 10; //int& ra = a; // 该语句编译时会出错,a为常量 const int& ra = a; // int& b = 10; // 该语句编译时会出错,b为常量 const int& b = 10; double d = 12.

MySQL连接错误错误2003 - Can‘t connect to MySQL server on ‘‘(10060 “Unknown error“)处理方法

2003 - Can't connect to MySQL server on '192.168.18.1'(10060 "Unknown error") MySQL 错误代码 10060 表示无法连接到 MySQL 服务器。这个错误通常与网络连接问题或服务器配置问题有关。 当尝试连接到 MySQL 服务器时,如果出现错误 10060,可能会有以下原因: 1. MySQL 服务器没有运行或未正确配置:确保 MySQL 服务器正在运行,并且可以接受来自所在的机器的连接。可以使用以下命令检查 MySQL 服务器的状态: sudo service mysql status 如果 MySQL 服务器未运行,请使用适当的命令来启动它,如: sudo service mysql start 2. MySQL 服务器的网络连接设置不正确:检查 MySQL 服务器的配置文件(一般是 `/etc/mysql/my.cnf` 或 `/etc/my.cnf`)中的 `bind-address` 参数是否设置为正确的 IP 地址或主机名。确保它允许来自所在的机器的连接。 3. 防火墙阻止了连接:如果服务器上启用了防火墙,请确保防火墙允许来自所在的机器的 MySQL 连接。可以尝试暂时禁用防火墙来测试连接是否成功。 4. MySQL 服务器限制了远程连接:默认情况下,MySQL 服务器可能只允许本地连接。需要修改 MySQL 服务器的配置文件,允许远程连接。在配置文件中找到 `bind-address` 参数,并将其设置为服务器的 IP 地址或 0.0.0.0(表示允许来自任何 IP 的连接)。 5. 网络连接故障:确保的机器可以与 MySQL 服务器建立网络连接。可以尝试使用 `telnet` 命令来测试与服务器的网络连接。

使用docker-compose部署Redis(单机部署)

目录 一、查看Redis镜像版本二、拉取自己需要的镜像版本三、创建挂载目录四、添加配置文件五、编写 docker-compose.yml 文件六、启动容器七、连接测试 一、查看Redis镜像版本 先去Docker Hub查看Redis镜像有那些版本,我部署的时候Redis最新已经到7.x的版本了,我这里准备部署6.x的版本。 https://hub-stage.docker.com/_/redis/tags 二、拉取自己需要的镜像版本 我这里选择部署redis:6.0.20的版本,小版本差别不大,先拉取镜像。 docker pull redis:6.0.20 三、创建挂载目录 创建两个挂载目录用来存放redis配置文件和持久化数据 mkdir -p /home/docker/redis6/conf mkdir -p /home/docker/redis6/data 四、添加配置文件 在/home/docker/redis6/conf目录下创建一个redis.conf配置文件,启动时会将这个配置文件挂载到容器中。 vi /home/docker/redis6/conf/redis.conf 将下面内容写入配置文件 # 关闭保护模式,允许远程连接 protected-mode no # 开启AOF持久化 appendonly yes # 密码 requirepass 123456 五、编写 docker-compose.yml 文件 version: '3' services: redis: # 服务名称 image: redis:6.0.20 # redis镜像版本 container_name: redis6 # 容器名称 ports: - 6379:6379 # 指定宿主机端口与容器端口映射关系,宿主机:容器 volumes: - /home/docker/redis6/conf/redis.conf:/etc/redis/redis.conf # 映射配置文件目录,宿主机:容器 - /home/docker/redis6/data:/data # 映射数据目录,宿主机:容器 restart: always # 容器开机自启 privileged: true # 获取宿主机root权限 command: ["

解决Flutter启动一直卡在 Running Gradle task ‘assembleDebug‘...

前言 新建了一个Flutter工程后,Run APP 却一直卡在了Running Gradle task ‘assembleDebug’… 这里。百度查询原因是因为 Gradle 的 Maven 仓库在国外, 因此需要使用阿里云的镜像地址。 1、修改项目中android/build.gradle文件 将 buildscript.repositories 下面的 //google() //mavenCentral() 注释掉,改成 maven { allowInsecureProtocol = true url 'https://maven.aliyun.com/repository/google' } maven { allowInsecureProtocol = true url 'https://maven.aliyun.com/repository/jcenter' } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/groups/public' } allprojects.repositories 同上修改 使用"阿里云"仓库为下载源,可能会报错(gradle的仓库地址不安全警告的错误),因为配置了除 maven 中央仓库之外的其他不安全的仓库(一些国内的镜像仓库,如"阿里云"镜像仓库也是不安全的),如下所示: A problem occurred configuring root project 'Packer'. > Could not resolve all dependencies for configuration ':classpath'. > Using insecure protocols with repositories, without explicit opt-in, is unsupported.

文心一言插件开发全流程,ERNIE-Bot-SDK可以调用文心一言的能力

文心一言插件开发 前言插件插件是什么工作原理申请开发权限 开始第一步:安装python第二步:搭建项目manifest 描述文件:ai-plugin.json插件服务描述文件:openapi.yaml开发自己的plugin-server 第三步:上传插件 SDK相关链接 前言 2023年8月31日,文心一言 率先向全社会全面开放。 随之而来的便是向开发者开放 插件 生态。 插件 插件是什么 如果说文心一言是一个智能中枢大脑,插件就是文心一言的耳、目、手。插件将“文心一言”AI能力与外部应用相结合,既能丰富大模型的能力和应用场景,也能利用大模型的生成能力完成此前无法实现的任务,比如发邮件等。 工作原理 插件注册:开发者将插件的 manifest 文件注册到一言插件库中,校验通过后一言即可使用插件处理用户 query 。插件触发:解析调度模块将使用生成的API,来调用插件服务。插件服务完成处理后,返回 json 数据由一言汇总结果进行返回。插件解析:一言插件系统的触发调度模块,将识别用户 query,并将根据 manifest 文件中的插件API接口和参数的自然语言描述来选择使用哪个插件,以及生成调用插件的 API。 例如用户在平台上选择天气插件,输入:“今天北京的天气怎么样?”。 模型首先会根据用户意图调用天气插件,并且解析query中时间(今天)和地点(北京)信息,然后以 json 结构输入开发者提供的天气API接口中,获得接口返回的天气信息,经过大模型进行语言润色后,生成面向用户的回答。 申请开发权限 申请开发权限:https://yiyan.baidu.com/developer 等待申请通过的邮件就可以开始了 开始 第一步:安装python python下载链接:https://www.python.org/downloads/ 问题1:如果在cmd中输入python会打开应用商店,就在用户变量的 PATH 中把WindowsApps移到python下面 问题2:如果cmd中报“pip指令找不到”,那就要在用户变量的 PATH 中添加C:\Users\25218\AppData\Local\Programs\Python\Python311\Scripts 第二步:搭建项目 单词本的项目:https://pan.baidu.com/s/1K7wjPMPMprxtosnF5D-3tQ?pwd=q7xa 接入一个插件核心流程如下所示: 构思插件 manifest 描述文件(ai-plugin.json,必选)定义插件服务描述文件(openapi.yaml,必选)开发自己的plugin-server(openapi服务,必选) manifest 描述文件:ai-plugin.json { "schema_version":"v1",(插件的版本号,用于开发者标记和使用) "name_for_human":"天气预报_dwh",(此字段将面向用户查看,平台内全局唯一标识,后缀数字建议长且随机,更不容易重名冲突) "name_for_model":"weather_prediction_dwh",(模型将用于定位插件的名称,建议是有语义信息的英文字符串) "description_for_human":"个性化查询不同地区的天气",(面向用户介绍插件,建议介绍插件的主要能力,相关限制等。不超过100个字符,前端可完整显示前40 个字符,超出的字符将在用户 hover 时展示。) "description_for_model":"帮助用户查询不同地区的天气",(面向模型的自然语言描述,请描述插件的核心能力、使用场景等,将用于模型参考解析是否触发插件,建议不超过200个字符。) "auth": (用户鉴权相关字段) { "type": "none" }, "api":(API规范) { "type": "

python for循环20例

python for循环20例 以下是20个关于Python中for循环的例子及其中文说明: 1.遍历列表: fruits = [‘apple’, ‘banana’, ‘cherry’] for fruit in fruits: print(fruit) # 输出:apple、banana、cherry 2.遍历字符串: str = ‘Hello, World!’ for char in str: print(char) # 输出:H、e、l、l、o、、、W、o、r、l、d、! 3.遍历数字范围: for i in range(10): print(i) # 输出:0、1、2、3、4、5、6、7、8、9 4.遍历用户输入: for user_input in input("Please enter something: ").split(): print(user_input) # 用户输入:hello world,输出:hello、world 5.遍历字典: person = {‘name’: ‘John’, ‘age’: 28, ‘city’: ‘New York’} for key, value in person.items(): print(key, “:”, value) # 输出:name: John、age: 28、city: New York

通过Python行命令搭建HTTP服务器结合内网穿透实现外网访问

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 Python作为热度比较高的编程语言,其语法简单且语句清晰,而且python有良好的兼容性,可以轻松的和其他编程语言((比如C/C++))建立的模块连接起来,而且python丰富强大的库,经过封装可以轻松调用,因此深受欢迎。 今天我们就尝试用python,建立一个简单的http服务器,用来展示本地电脑上指定的目录和文件。 2.本地http服务器搭建 一般来说,Python的简单http服务器不依赖Apache、IIS等这些复杂的服务器程序,因为其自带了只需一行命令就能建立http服务。但相对的,这个简单http服务也没法提供复杂功能,只能提供相对简单的目录服务。但对于想要学习和熟悉python,这又是必须进行的一步。 2.1.Python的安装和设置 首先,我们需要在本地安装python程序。Python程序可以在其官网(www.python.org/)找到对应操作系统版本下载。笔者使用的是Windows操作系统,因此选择Windows版本下载。 Python下载完成后,直接点击安装程序.exe即可进行安装。同时需要注意的是,在安装过程中,需要注意勾选Add python.exe to PATH选项。 完成python程序的安装后,我们就可以着手建立python的http服务器了 2.2.Python服务器设置和测试 由于python内建了简单http服务包,因此对于python来说,只需输入一行命令,就能轻松打开http服务。当然,要运行网页,就需要网页有显示内容。因此我们可以先建立一个用于存放网页文件的文件夹。例如笔者在本地电脑的E盘下新建了一个“test”文件夹 接着,以管理员身份运行本地电脑的命令提示符界面,并输入命令转入该文件所存放的硬盘 e: 再转入打算共享的文件夹 cd test 接着输入命令启动http服务 如果Python版本为2.x,输入命令 python -m SimpleHTTPServer 8081 如果Python版本为3.x,输入命令 python -m http.server 8001 其中的8081为打算搭建的服务器的输出端口,只要选择没有被占用的端口即可。如果出现防火墙的提示信息,只要选择允许访问即可。 命令行输入完毕后,python给出反馈Serving HTTP on 0.0.0.0 port 8081 ...,就说明我们python的http服务已经成功开启了,在本地8081端口下。 接着我们在本地电脑上的浏览器地址栏中,输入localhost:8081,就能打开打算分享的文件夹下的文件。 能看到这些内容,就说明本地电脑上python的http服务已经开启,并且已经可以查阅到这个文件夹下的文件。同样的,如果我们在这个文件夹下放入网页文件,也能够显示为网页。 此时在同一局域网下的设备,只要在浏览器中输入本地电脑的ip地址+端口号(具体格式为192.168.XXX.XXX:端口号),就能显示出python的网页。 不过,不能在公共互联网访问的网页总觉得缺少灵魂,因此我们可以借助cpolar内网穿透,创建一条内网穿透数据隧道,让我们可以在公共互联网条件下,访问到python。 3.cpolar的安装和注册 同样的,我们可以在cpolar的官网(https://www.cpolar.com/)找到对应操作系统版本的软件,笔者这里也是选择Windows版本。 Cpolar软件下载完成后,将压缩包解压,并双击其中的.msi文件,即可自动进行安装,我们只要一路点击Next即可。 由于cpolar会为每个用户创建独立的数据隧道,并辅以用户密码和token码保证数据安全,因此我们在使用cpolar之前,需要进行用户注册。注册过程也非常简单,只要在cpolar主页右上角点击用户注册,在注册页面填入必要信息,就能完成注册。 3.1 Cpolar云端设置 完成cpolar的安装和注册后,我们就可以着手使用cpolar,创建一条内网穿透数据隧道,将本地电脑的python网页与公共互联网连接起来。需要注意的是,cpolar免费版的数据隧道每24小时重置一次。笔者并不想每天进行重置数据隧道设置,因此将cpolar升级至vip版,以便能获得能长期稳定存在的内网穿透数据隧道。 要生成长期稳定存在的内网穿透数据隧道,我们要先访问cpolar官网并登录,并在“仪表盘”页面左侧,找到并点击预留按钮,进入“预留”页面。 在“预留”页面中,我们可以看到cpolar提供了多种协议的数据隧道保留项目。而python服务器是http协议,因此我们找到保留二级子域名栏位。当然,如果已经向域名供应商购买了自己的域名的,也可以选择“保留自定义域名”栏位。 在“保留二级子域名”栏位,我们需要对打算保留的二级子域名进行信息设置,而这些设置的信息,也会成为我们在公共互联网访问本地python服务器的隧道入口(公共互联网地址的一部分)。具体需要设置的信息为: 地区:服务器所在区域,就近选择即可二级域名会最终出现在生成的公共互联网地址中,作为网络地址的标识之一描述可以看做这条数据隧道的描述,能够与其他隧道区分开即可 输入这几项设置后,就可以点击右侧的保留按钮,将这条数据隧道保留下来。如果我们不想要这条隧道的入口了,也可以点击右侧的“x”,轻松将隧道删除 3.2 Cpolar本地设置 完成cpolar云端设置后,我们回到本地电脑上,打开并登录cpolar客户端(可以在浏览器中输入localhost:9200直接访问,也可以在开始菜单中点击cpolar客户端的快捷方式)。 点击客户端主界面左侧隧道管理——创建隧道按钮,进入本地隧道创建页面(如果要创建每24小时重置地址的临时数据隧道,可直接在此进行设置,不必再cpolar官网设置空白数据隧道)。 在这个页面,同样需要进行几项信息设置,这些信息设置包括: 隧道名称——可以看做cpolar本地的隧道信息注释,只要方便我们分辨即可;协议——tomcat输出的是web网页,因此选择http协议;本地地址——本地地址即为本地网站的输出端口号,我们之前设置了8081为输出端口,因此这里也填入8081;域名类型——在这个例子中,我们已经在cpolar云端预留了二级子域名的数据隧道,因此勾选“二级子域名”(如果预留的是自定义域名,则勾选自定义域名),并在下一行“Sub Domain”栏中填入预留的二级子域名,这里我们填入“pythonweb”(如果只是创建临时数据隧道,则直接勾选“随机域名”,由cpolar客户端自行生成网络地址);地区——与cpolar云端设置时一样,我们依照实际所在地就近填写; 完成这些设置后,就可以点击页面下方的创建按钮,将本地python服务器网页与cpolar云端保留的二级子域名连结起来,生成一条完整的内网穿透数据隧道。 隧道创建完成后,cpolar会自动跳转至隧道管理——隧道列表页面,在这个页面看到数据隧道的状态(是否畅通),或是控制隧道的开启、关闭或删除。如果需要对隧道的信息进行变更,也可以通过这里的“编辑”按钮进行

Hadoop启动时出现错误:Cannot execute /home/hadoop/libexec/hadoop-config.sh.

出现错误: Hadoop启动时出现错误:Cannot execute /home/hadoop/libexec/hadoop-config.sh. 原因分析 'ERROR: Cannot execute /usr/local/Hadoop/libexec/hdfs-config.sh'表示无法执行指定路径下的 hdfs-config.sh 文件。 可能是环境变量配置错误导致的,所以要检查 Hadoop 的环境变量配置是否正确。确保 Hadoop 的相关路径正确设置。具体解决方法如下: 解决方法: 输入运行: source /etc/profile #重新加载/etc/profile文件 vim ~/.bashrc 检查.bashrc文件中的HADOOP_HOME是否有错,HADOOP_HOME需要被配置成你机器上Hadoop的安装路径,比如这里是安装在/usr/local./hadoop目录。 保存退出后,运行如下命令使配置立即生效: source ~/.bashrc 此时再次启动Hadoop显示启动成功: ./sbin/start-dfs.sh 搞定! ❗注: 输入命令source /etc/profile时,会重新加载/etc/profile文件,这个文件包含了系统范围的环境变量和配置。这个命令通常用于在当前会话中更新环境变量。 如果想要恢复到之前的环境,可以关闭当前终端会话,并重新打开一个新的终端会话。这将重新加载默认的环境变量和配置文件。 如果想在当前终端会话中恢复到之前的环境,可以使用以下命令: exec bash 这将重新启动当前shell会话,并重新加载~/.bashrc文件,其中包含用户特定的环境变量和配置。

在前端html页面中向服务器发送post登录请求

目录 前言 搭建服务器 搭建前端登录页面 获取表单值 使用axios发送post登录请求 前言 一般在html页面中向服务器发送post请求的模块为登录请求,本文将介绍如何向服务器发送post请求 搭建服务器 如何搭建服务器请看JWT认证这篇文章,有详细的解说。这里之所以使用JWT认证是因为在前端html页面发起post请求会有跨域问题。这里直接附上完整代码 // 导入express模块 const express = require('express') // 创建express服务器实例 const app = express() // 导入jwt相关的包 const jwt = require('jsonwebtoken') const expressJWT = require('express-jwt') // 允许资源跨域共享 const cors = require('cors') app.use(cors()) // 解析post提交的表单数据 app.use(express.urlencoded({extended:false})) // 定义secret密钥 const secretKey= 'notbald' // 登录接口 app.post('/post',(req,res)=> { const userinfo = req.body if(userinfo.username !=='admin'||userinfo.password!=='000000'){ return res.send({ status:400, msg:'登录失败', hh:userinfo }) } const tokenStr = jwt.sign({username:userinfo.username},secretKey,{expiresIn:'60s'}) res.send({ status:200, msg:'登录成功', token:tokenStr }) }) // 将JWT字符串还原为JSON对象 app.

在Mac上安装和配置Node.js

在Mac上安装和配置Node.js是一项相对简单但重要的任务。Node.js是一个开源的、跨平台的JavaScript运行时环境,用于构建高效、可扩展的网络应用程序。下面将详细介绍如何在Mac上安装和配置Node.js。 准备工作 在安装配置Node.js之前,你需要确保你的Mac已经满足以下要求: 操作系统:MacOS Big Sur或更高版本。开发工具:Xcode Command Line Tools。安装Xcode Command Line Tools 打开终端,输入以下命令来安装Xcode Command Line Tools: xcode-select --install 这个命令将会弹出一个对话框,询问你是否要安装Xcode Command Line Tools。点击“安装”按钮进行安装。 下载Node.js 在终端中输入以下命令来下载最新版本的Node.js: brew install node 这个命令将会下载并安装最新版本的Node.js以及npm(Node.js的包管理器)。 配置Node.js 安装完成后,你需要配置Node.js的环境变量。在终端中输入以下命令: echo 'export PATH="$PATH:/usr/local/lib/node_modules/.bin"' >> &#126;/.bash_profile 这个命令将会将Node.js的路径添加到你的环境变量中。 验证安装 最后,输入以下命令来验证Node.js是否已经成功安装: node -v 如果一切正常,Node.js应该会显示其版本信息。 优化设置 为了让Node.js在Mac上运行更加优化,你可以通过以下方法进行设置: 内存管理 使用 swap 文件:MacOS 支持使用 swap 文件来扩展内存。你可以在终端中输入以下命令开启 swap 文件: sudo rm -rf /private/var/vm/swapfile* sudo mkswap /private/var/vm/swapfile0 sudo swapon /private/var/vm/swapfile0 进程管理 使用 nvm(Node Version Manager):nvm 是一个 Node.js 的版本管理器,它允许你在同一台机器上安装和切换不同版本的 Node.

Ubuntu系统安装配置ADB

1.ADB概述 1.1概述 adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序,说白了就是debug工具。 2.ADB安装 2.1 安装命令 ADB的安装命令非常简单,只需要在Ubunu终端下输入如下命令即可安装: $sudo apt-get install adb 2.2 查看是否安装成功 在Ubuntu终端下输入如下命令即可查看adb版本: $adb version 3.连接Android主板 3.1 查看PC是否识别到Android主板 PC通过USB数据线连接Android主板后,在终端输入: $lsusb 如图所示,PC已经通过USB已经识别到了Android主板,其中VendorID:10d6;ProductID:0c02 3.2 adb devices 通过adb devices命令来查看是否识别到adb设备: 如果没有识别到adb设备,在终端输入如下命令: $echo 0x10d6 > ~/.android/adb_usb.ini(10d6为VendorID,记得前面必须加上0x) 到这一步如果还是识别不到adb设备,可以尝试拔插一下PC与Android主板连接的usb线,并在终端输入: $adb kill-server;adb start-server(重启adb服务) 4.权限问题 4.1 新建udev规则文件 当你在终端输入adb devices命令时,如果出现no permissions字样,就说明需要添加权限。 在/etc/udev/rules.d目录下新建一个51-android.rules,如果有必要的话,修改一下权限。在51-android.rules文件中添加如下内容: SUBSYSTEM=="usb", ATTR{idVendor}=="10d6", ATTR{idProduct}=="0c02", MODE="0666" 其中10d6为Vendor ID;0c02为Product ID。 4.2 重启udev服务 $sudo service udev restart 4.3重启adb服务 $adb kill-server;adb start-server 到这一步如果显示no permissions,可以尝试拔插一下PC与Android主板连接的usb线。 5.正常使用adb 5.1 正常使用adb PS:注意,以上所有操作必须在Android主板已经开启了USB调试模式的前提下进行。

adb : 无法将“adb”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

当我们初次输入adb shell,会遇到下面这个报错 这个错误是由于计算机上没有找到adb命令所导致的。adb是Android Debug Bridge的缩写,它是Android操作系统的一个调试工具。在使用adb命令之前,首先需要安装Android SDK并设置环境变量,如果没有正确地设置环境变量,计算机将无法找到adb命令。在解决这个问题之前,需要确保Andrid SDK已经正确地安装。如果已经安装SDK但仍找不到adb命令,可以通过以下步骤解决 进入Android SDK目录,例如D:Androidsdklplatform-tools输入adb命令,例如adb devices(点击在终端打开)如果找不到adb相关命令,如图则执行以下步骤打开设置的系统,点击高级系统设置打开环境变量设置界面找到Path变量并双击编辑添加Android SDK目录:Android\sdklplatform-tools保存并关闭窗口重新打开控制台或终端输入adb命令,例如adb devices,如果成功执行,则说明问题已经解决

python 出现 更新库失败 A new release of pip is available: 23.0.1 -> 23.3

文章目录 概要技术细节解决方法 概要 安装python的时候出现 [notice] A new release of pip is available: 23.0.1 -> 23.3 [notice] To update, run: python.exe -m pip install --upgrade pip 技术细节 出现上面的提示这意味着 pip 无法找到满足你要安装第三方库的版本。 这可能有几个原因 1、你的 Python 版本与 第三库 版本不兼容。 2、网络问题。如果你的网络连接有问题,或者你在使用代理服务器,那么这可能导致 pip 无法下载。 3、pip 版本过旧。如果你的 pip 版本过旧,那么它可能无法找到一些新的库,或者无法正确安装它们。 解决方法 1、检查你的 Python 版本。你可以在命令行中运行 python --version 来查看你的 Python 版本。支持你的 Python 版本。 2、检查你的网络连接。如果你在中国或其他网络审查严重的地区,你可能需要使用 VPN 或者其他方式来访问 PyPI。 更新你的 pip。 你可以使用以下命令来更新 pip:python -m pip install --upgrade pip。 3、更换镜像包 例如,使用阿里云的镜像源可以使用命令pip install -i https://mirrors.

【内网穿透】在Ubuntu搭建Web小游戏网站,并将其发布到公网访问

目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置固定二级子域名 4.1 保留一个二级子域名 4.2 配置二级子域名 4.3 测试访问公网固定二级子域名 前言 网:我们通常说的是互联网;站:可以理解成在互联网上的一个房子。把互联网看做一个城市,城市里面的每一个房子就是一个站点,房子里面放着你的资源,那如果有人想要访问你房子里面的东西怎么办? 在现实生活中,去别人家首先要知道别人的地址,某某区某某街道,几号,在互联网中也有地址的概念,就是ip。通过ip我们就能找到在互联网上面的站点,端口可以看做是这个房子的入口,不同的入口所看到的东西也就不一样,如从大门(80端口)进是客厅,从窗户(8080端口)进是书房。 接下来我们将通过简单几步来在ubuntu搭建一个web站点 html小游戏,并使用cpolar内网穿透将其发布到公网上,使得公网用户也可以正常访问到本地web站点的小游戏。 1. 本地环境服务搭建 apach2是一个服务,也可以看做一个容器,也就是上面说的房子,运行在ubuntu里,这个服务可以帮助我们把我们自己的网站页面通过相应的端口让除本机以外的其他电脑访问。 下载apach2 sudo apt install apache2 php -y 下载好后启动apache2 sudo service apache2 restart 然后打开Ubuntu 浏览器,输入:http://localhost 即可看到我们apache 默认的页面,此时说明本地站点已经搭建好了。 进入Apache默认服务器主目录路径,这个目录放的是想要让别人看到的资源,如一张图片,一个html页面等 cd /var/www/html 进入后删掉index.html这个文件,由于apache默认页面并不是我们自己想要的页面,我们想要换成自己喜欢的页面,所以需要删掉.执行以下命令: sudo rm -rf index.html 为了达到测试效果,我们设置一个html页面小游戏,创建名称为game.html的页面 sudo vim game.html 按i键 进入编辑模式,复制以下html代码进去(复制全部) <!DOCTYPE html> <html> <head><h4>Take it Easy!Please playing Game</h4></head> <body> <div></div> <!

数据结构王道强化应用题打卡表【第二章】(代码部分)

代码更贴近伪代码,未经过调试,仅用于回答初试题目准备 2.1 栈 1. 顺序栈(数组) 写代码:定义顺序存储的栈(数组实现),数据元素是 int 型实现“出栈、入栈、判空、判满”四个基本操作 #define Maxsize 50 typedef struct{ int data[Maxsize]; int top; //栈顶指针,所指为栈顶元素 }stack; //初始化 void Init(stack &s){ s.top = -1; } //判空 bool empty(stack s){ if(s.top == -1) return true; else return false; } //判满 bool full(stack s){ if(s.top == Maxsize - 1) return true; else return false; } //入栈 bool push(stack &s, int x){ if(full(s) == false){ s.data[++s.top] = x; //栈顶指针先移动一位,再赋值 return true; } else return false; } //出栈 bool pop(stack &s){ if(empty(s) == false){ x = s.

oracle表分区

1.范围分区 比如:根据时间进行分区 注意:分区语句中只能使用less,不能使用more,也不能使用less than (xxx) and more than (xxx) 1.1.创建分区 创建分区 create table worker_202301( id varchar2(32) not null, name varchar2(200), technology varchar2(100), save_date date ) partition by range (save_date) ( partition worker202301 values less than (to_date(‘20230201’,‘YYYYMMDD’)), partition worker202302 values less than (to_date(‘20230301’,‘YYYYMMDD’)), partition worker202303 values less than (maxvalue) ); –添加数据 insert into worker_202301 (id,name,technology,save_date) values (sys_guid(),‘ddd’,‘c++’,to_date(‘20221231’,‘YYYYMMDD’)); insert into worker_202301 (id,name,technology,save_date) values (sys_guid(),‘aaa’,‘java’,to_date(‘20230128’,‘YYYYMMDD’)); insert into worker_202301 (id,name,technology,save_date) values (sys_guid(),‘bbb’,‘c++’,to_date(‘20230228’,‘YYYYMMDD’)); insert into worker_202301 (id,name,technology,save_date)