【JavaSE语法】类和对象(一)

一、面向对象的初步认知 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情 1.2 面向对象与面向过程 注意:面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景 (1)面向过程:类似于传统把大象放进冰箱的过程,打开冰箱->把大象塞进去->把冰箱关上 这种方式注重的是把大象放进冰箱的过程,少一个环节都不行。如果要把其他东西放进冰箱又是另一种方式。 按照该种方式来写代码,将来扩展或者维护起来会比较麻烦 (2)面向对象: 总共有四个对象:人、衣服、洗衣粉、洗衣机 整个洗衣服的过程:将衣服放进洗衣机、倒入洗衣粉,启动洗衣机,洗衣机就会完成洗衣过程并且甩干 整个过程主要是:人、衣服、洗衣粉、洗衣机四个对象之间交互完成的,人不需要关新洗衣机具体是如何洗衣服的,是如何甩干的 以面向对象方式来进行处理,就不关注洗衣服的过程,具体洗衣机是怎么来洗衣服,如何来甩干的,用户不用去关心,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的 二、类定义和使用 2.1 简单认识类 类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了(类似C语言中的结构体) 比如:洗衣机,它是一个品牌,在Java中可以将其看成是一个类别。 属性:产品品牌,型号,产品重量,外观尺寸,颜色... 功能:洗衣,烘干、定时.... 2.2 类的定义格式 在java中定义类时需要用到class关键字 //创建类 class ClassName { field; //字段(也叫属性或者成员变量) method; //行为(也叫成员方法) } class为定义类的关键字,ClassName为类的名字,{ }中为类的主体 类包括两部分: (1)成员变量(字段\属性):用来描述类的 (这些成员变量定义在方法外部,类的内部) (2)成员方法(行为):说明类具有哪些功能 class WashMachine { //此时的WashMachine就是自定义的类型 //成员变量(字段\属性) public String brand; public String type; public double weight; public double length; public double width; public double height; public String color; //成员方法(行为) public void washClothes() { System.

C/C++ static关键字详解(最全解析,static是什么,static如何使用,static的常考面试题)

目录 一、前言 二、static关键字是什么? 三、static关键字修饰的对象是什么? 四、C 语言中的 static 🍎static的C用法 🍉static的重点概念 🍐static修饰局部变量 💦static在修饰局部变量和函数的作用 🍓static修饰全局变量和函数 💦static在修饰全局变量和函数的作用 五、C++中的 static 🍌static的C++用法 🍊static在C++中的重点概念 💦静态成员为所有类对象所共享,不属于某个具体的实例 💦静态成员变量必须在类外定义,定义时不添加static关键字 💦静态成员函数没有隐藏的this指针,不能访问任何非静态成员 💦访问静态成员变量的特殊方式 💦静态成员和类的普通成员一样,也有public、protected、private3种访问级别,也可以具有返回值 六、static面试题 七、static OJ面试题 八、共勉 一、前言 static,中文意思是静态的,作为C/C++中常用关键字中的一个很重要的关键字,其中用法多样且复杂难以理解,用起来总是丈二和尚摸不着头脑,把我折磨的一头雾水(主要是博主很菜😂)。 也许大家对于这些知识都是一知半解(除过一些大佬),没有真正的搞透澈,一问我都会(这就是我),但是真正引用的时候,就会出现很多问题,而且百度的时候,大部分都讲得不是很清楚,所以为了帮助大家解决这个问题(实际上是自己不会),在这里进行一个全面的static介绍和总结。 本文将会循序渐进,先从C语言的static讲起,慢慢延申到C++,从易到难,每一步都会举一些通俗易懂的例子帮助大家理解(帮助自己理解,怕忘记😂),好了开始整活! 二、static关键字是什么? static是 C/C++中的关键字之一,是常见的函数与变量(C++中还包括类)的修饰符,它常被用来控制变量的存储方式和作用范围。 在众多高级语言中都有其作为关键字或函数出现,所以这也是应当被程序员熟知其各种含义的一个单词 三、static关键字修饰的对象是什么? 1.局部变量 2.全局变量 3.函数 四、C 语言中的 static 🍎static的C用法 1️⃣: 修饰局部变量(称为静态局部变量) 2️⃣: 修饰全局变量(称为静态全局变量) 3️⃣: 修饰函数(称为静态函数) 🍉static的重点概念 1️⃣:在函数中声明变量时, static 关键字指定变量只初始化一次,并在之后调用该函数时保留其状态。 2️⃣:在声明变量时,变量具有静态持续时间,并且除非您指定另一个值。 3️⃣ :在全局和/或命名空间范围 (在单个文件范围内声明变量或函数时) static 关键字指定变量或函数为内部链接,即外部文件无法引用该变量或函数。 4️⃣:static 关键字 没有赋值时,默认赋值为 0 5️⃣:static修饰局部变量时,会改变局部变量的存储位置,从而使得局部变量的生命周期变长。 ⭐:接下来,将重点讲解上面三个作用个五点概念的理解,和应用 🍐static修饰局部变量 1️⃣:在函数中声明变量时, static 关键字指定变量只初始化一次,并在之后调用该函数时保留其状态。 5️⃣:static修饰局部变量时,会改变局部变量的存储位置,从而使得局部变量的生命周期变长。

微信小程序完整项目实战(前端+后端)

基于微信小程序的在线商城点单系统 前言:闲来无事,制作一个微信小程序商城。系统采用Java语言作为后端实现与小程序的交互,给用来学习或者想自己开个小店的朋友当个参考。 目录 前言项目功能及技术效果图小程序管理端 APISpringBoot框架搭建实体映射创建Mapper接口封装整合Swagger常用字段类型 参考代码块 前言 项目功能及技术 小程序主要有首页、商品详情、商品分类、商品评价、购物车、个人中心等模块。 管理端主要有人员管理、权限管理、商品管理、订单管理等模块。 html+css+js:微信小程序界面。 SpringBoot框架+Java程序语言:小程序及后台管理系统API的实现。 Layui前端框架:web后台管理界面样式及数据渲染框架。 MySQL数据库:数据支持。 效果图 小程序 管理端 API SpringBoot框架搭建 1.创建maven project,先创建一个名为SpringBootDemo的项目,选择【New Project】 然后在弹出的下图窗口中,选择左侧菜单的【New Project】 在project下创建module,点击右键选择【new】—【Module…】 左侧选择【Spring initializr】,通过idea中集成的Spring initializr工具进行spring boot项目的快速创建。窗口右侧:name可根据自己喜好设置,group和artifact和上面一样的规则,其他选项保持默认值即可,【next】 Developer Tools模块勾选【Spring Boot DevTools】,web模块勾选【Spring Web】,此时,一个Springboot项目已经搭建完成,可开发后续功能 实体映射创建Mapper 创建一个entity实体类文件夹,并在该文件夹下创建项目用到的实体类 package com.example.demo.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Data public class User { @TableId(type = IdType.AUTO) private Long id; private String account; private String pwd; private String userDesc; private String userHead; private LocalDateTime createTime; private Long role; private String nickname; private String email; private String tags; } 接口封装 由于我们使用mybatis-plus,所以简单的增删改查不用自己写,框架自带了,只需要实现或者继承他的Mapper、Service

使用Java API操作HDFS

(1)实验原理 使用Java API操作HDFS的实验原理如下: 配置Hadoop环境:首先需要配置Hadoop的环境,包括设置Hadoop的安装路径、配置core-site.xml和hdfs-site.xml等文件,以便Java程序能够连接到HDFS。 引入Hadoop依赖:在Java项目中,需要引入Hadoop的相关依赖,包括hadoop-common、hadoop-hdfs等依赖,以便能够使用Hadoop提供的API。 创建Configuration对象:使用org.apache.hadoop.conf.Configuration类创建一个Configuration对象,该对象包含了Hadoop的配置信息。 创建FileSystem对象:使用org.apache.hadoop.fs.FileSystem类的静态方法get(),传入Configuration对象,创建一个FileSystem对象,该对象用于与HDFS进行交互。 执行HDFS操作:通过FileSystem对象,可以执行各种HDFS操作,如创建目录、上传文件、下载文件、删除文件、重命名文件等。具体操作可以使用FileSystem对象提供的方法,如create()、copyFromLocalFile()、copyToLocalFile()、delete()、rename()等。 关闭FileSystem对象:在操作完成后,需要调用FileSystem对象的close()方法关闭与HDFS的连接,释放资源。 通过以上步骤,就可以使用Java API操作HDFS,实现对HDFS文件系统的管理和操作。 (2)实验环境 要使用Java API操作HDFS,需要搭建以下实验环境: 安装Java Development Kit (JDK):首先需要安装JDK,建议使用Java 8或更高版本。 安装Hadoop:在本地或远程服务器上安装Hadoop。可以从Hadoop官方网站下载最新版本的Hadoop,并按照官方文档进行安装和配置。 设置Hadoop环境变量:将Hadoop的安装路径添加到系统的环境变量中,以便Java程序能够找到Hadoop的相关依赖库和配置文件。 引入Hadoop依赖:在Java项目中,需要引入Hadoop的相关依赖,包括hadoop-common、hadoop-hdfs等依赖。可以使用Maven或Gradle等构建工具来管理依赖。 编写Java代码:使用Java编写代码,通过Hadoop提供的Java API来操作HDFS。在代码中需要配置Hadoop的相关参数,如HDFS的URL、配置文件路径等。 编译和运行Java程序:使用Java编译器将Java代码编译成字节码文件,然后使用Java虚拟机(JVM)运行编译后的字节码文件。 在实验环境搭建完成后,就可以使用Java API操作HDFS,实现对HDFS文件系统的管理和操作 (3)实验步骤 一.创建Maven项目 首先,打开IDEA,点击新建项目,在左侧中选择Maven,然后直接点击next 设置项目名称为HadoopDemo,点击Finish 点击右下角的 Enable Auto-Import(自动导入Jar包文件),一个空的Maven项目就创建完毕啦 二、导入依赖 首先编辑pom.xml(Maven项目的核心文件)文件,添加如下内容,导入依赖(所需jar包) 代码显示 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>untitled</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>20</maven.compiler.source> <maven.compiler.target>20</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.

【Mysql】WITH AS 语法详解

WITH AS 语法是MySQL中的一种临时结果集,它可以在SELECT、INSERT、UPDATE或DELETE语句中使用。通过使用WITH AS语句,可以将一个查询的结果存储在一个临时表中,然后在后续的查询中引用这个临时表。这样可以简化复杂的查询,提高代码的可读性和可维护性。 WITH AS语法的基本结构如下: WITH temporary_table_name (column1, column2, ...) AS ( SELECT column1, column2, ... FROM table_name WHERE condition ) SELECT * FROM temporary_table_name; 其中,temporary_table_name是临时表的名称,column1, column2, ...是临时表的列名,table_name是要查询的表名,condition是筛选条件。 举个例子 假设我们有一个员工表(employees),包含员工的姓名、年龄和部门信息。现在我们想要查询所有年龄大于30的员工,并按照部门进行分组。我们可以使用WITH AS语句来实现这个需求: WITH employees_over_30 AS ( SELECT name, age, department FROM employees WHERE age > 30 ) SELECT * FROM employees_over_30; 在这个例子中,我们首先创建了一个名为employees_over_30的临时表,将年龄大于30的员工的信息存储在其中。然后,我们在后续的查询中引用了这个临时表,按照部门进行了分组。这样可以使查询更加简洁,易于理解。 复杂的例子 下面是一个比较复杂的例子,假设我们有一个销售数据表(sales_data),包含日期(date)、产品ID(product_id)、销售额(sales)和利润(profit)。现在我们需要计算每个产品的总销售额和总利润,并按照产品ID进行分组。我们可以使用WITH AS语句来实现这个需求: WITH product_sales AS ( SELECT product_id, SUM(sales) as total_sales, SUM(profit) as total_profit FROM sales_data GROUP BY product_id ), product_sales_with_rank AS ( SELECT product_id, total_sales, total_profit, RANK() OVER (ORDER BY total_sales DESC) as sales_rank, RANK() OVER (ORDER BY total_profit DESC) as profit_rank FROM product_sales ) SELECT product_id, total_sales, total_profit, sales_rank, profit_rank FROM product_sales_with_rank; 在这个例子中,我们首先使用WITH AS语句创建了一个名为product_sales的临时表,用于计算每个产品的总销售额和总利润。然后,我们创建了另一个名为product_sales_with_rank的临时表,用于计算每个产品的销售额排名和利润排名。最后,我们从product_sales_with_rank临时表中选择所需的列进行查询。

网络爬虫——urllib(5)

前言🍭 ❤️❤️❤️网络爬虫专栏更新中,各位大佬觉得写得不错,支持一下,感谢了!❤️❤️❤️ Python网络爬虫_热爱编程的林兮的博客-CSDN博客 上一篇我们讲解有关ajax的相关案例,下面我们来学习新的关于urllib的知识。 11、URLError\HTTPError🍉 简介: HTTPError类是URLError类的子类导入的包urllib.error.HTTPError urllib.error.URLErrorhttp错误:http错误是针对浏览器无法连接到服务器而增加出来的错误提示。引导并告诉浏览者该页是哪里出 了问题。通过urllib发送请求的时候,有可能会发送失败,这个时候如果想让你的代码更加的健壮,可以通过try‐ except进行捕获异常,异常有两类,URLError\HTTPError 那我们下面来举一个例子,获取下面页面的网页源码 正常代码: # 异常 import urllib.request url ="https://blog.csdn.net/m0_63951142/article/details/134013573" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36' } request = urllib.request.Request(url = url, headers = headers) response = urllib.request.urlopen(request) content =response.read().decode('utf-8') print(content) 运行代码: 我们这是不是就爬取成功了,但是如果我们万一有哪些地方出错了,比如url多了一个1,我们就需要添加try‐ except进行捕获异常 # 异常 import urllib.request import urllib.error url ="https://blog.csdn.net/m0_63951142/article/details/1340135731" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.

2023-10 最新jsonwebtoken-jjwt 0.12.3 基本使用

导入依赖 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.12.3</version> </dependency> 包括了下面三个依赖, 所以导入上面一个就OK了 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.12.3</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.12.3</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred --> <version>0.12.3</version> <scope>runtime</scope> </dependency> 之前很多方法都弃用了, 好多博文也还是用的废弃的方法 import io.jsonwebtoken.Jwts; import io.jsonwebtoken.security.Keys; import io.jsonwebtoken.security.SecureDigestAlgorithm; import javax.crypto.SecretKey; import java.sql.Timestamp; import java.time.Instant; import java.util.Date; import java.util.UUID; /** * @author Tiam * @date 2023/10/23 16:38 * @description */ public class TokenUtil { /** * 过期时间(单位:秒) */ public static final int ACCESS_EXPIRE = 60; /** * 加密算法 */ private final static SecureDigestAlgorithm<SecretKey, SecretKey> ALGORITHM = Jwts.

【MySql】Navicat 连接数据库出现1251 - Client does not support authentication protocol 问题的解决方法

Navicat 连接 mysql,连接时出现问题:1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client 1251-客户端不支持服务器请求的身份验证协议;请考虑升级mysql客户端。 再次安装MySQL后,使用 Navicat 或者 MySQL yog都会出现上面这个异常。 解决方法 其实这是一个简单的权限与安全问题 1、以管理员身份运行 CMD 窗口。 2、通过 cd 语句进入 mysql 的安装目录bin目录下笔(我使用的 MySQL 是8.0.33版本的,mysql server安装的默认路径为:F:\ruanjianinstalll\mysql\mysql-8.0.33-winx64\bin 3、输入mysql -uroot -p和数据库密码进入 MySQL 控制台。 4、把下面的两条指令依次复制粘贴到控制台就可以了 ( 'password’为你的数据库登录密码 )。 alter user 'root'@'localhost' identified with mysql_native_password by 'password'; flush privileges; 5、在 Navicat 中重新连接,出现连接成功即可(测试使用Navicat for mysql)。

浙大版PTA《Python 程序设计》题目集 参考答案

浙大版PTA《Python 程序设计》题目集 参考答案 本答案配套详解教程专栏,欢迎订阅: PTA浙大版《Python 程序设计》题目集 详解教程_少侠PSY的博客-CSDN博客 01第1章-1 从键盘输入两个数,求它们的和并输出 a=int(input()) # 输入a的值 b=int(input()) # 输入b的值 print(a+b) # 输出a+b的值 02第1章-2 从键盘输入三个数到a,b,c中,按公式值输出 a,b,c=input().split() a=int(a) b=int(b) c=int(c) print(b*b-4*a*c) 03第1章-3 输出“人生苦短,我学Python” print("人生苦短,我学Python") 04第2章-1 计算 11+12+13+…+m m=int(input()) s=sum([i for i in range(11,m+1)]) print("sum =",s) 05第2章-2 计算分段函数[1] x = float(input()) if x != 0: y = 1 / x else: y = 0 print("f({:.1f}) = {:.1f}".format(x, y)) 06第2章-3 阶梯电价 e = float(input()) cost = 0 if e < 0: print("

Mac版本Mysql详细安装教程(8.0版本 保姆级教学~)

—————————————————————————————————————————————————————————————————————— 本章节将分为俩个部分来讲述在Mac版本下如何对Mysql进行安装和对环境的配置 1.Mysqld的安装 2.Mysql环境的配置 Mac安装Mysql(8.0)版本 1.首先打开Mysql的官方网站 点击跳转到官网 2.进入页面后点击DOWNLOADS 3.进入Downloads页面后,下滑页面选择MySQL Community (GPL) Downloads » 4.进入页面后,点击MySQL Community Server 5.按照图片选择对应的版本(8.0)、系统(macOS)和处理器(ARM) 6.点击No thanks, just start my download.进行下载 7.打开安装包,一直点击继续无脑安装,在Configuration安装页面中选择第一种设置密码方式,并点击Next 8.在进入下一个页面后,设置Mysql登录密码,之后点击Finnish完成安装 9.打开系统偏好设置,点击Mysql出现此画面则证明安装成功 安装部分到此结束 —————————————————————————————————————————————————————————————————————— Mac对Mysql环境进行配置 1.首先在我们的设备上找到终端并打开,输入 vim ~/.bash_profile(注意vim后面的空格),输入完成后点击回车键(Enther) 2.点击回车键后会出现此画面,此时按下键盘上的“ i ”键进行编写,输入 export PATH=$PATH:/usr/local/mysql/bin 3.按下Esc键,输入 :wq (“ : ”也要输入),按下回车键进行保存 4.输入 source ~/.bash_profile 使此文本生效(注意source后面的空格),按下回车 5.此时输入 mysql --version 可以查看Mysql安装的版本,此时环境配置完成 环境配置到此结束 —————————————————————————————————————————————————————————————————————— Mysql启动教程 输入 mysql -u root -p 启动mysql,输入密码,出现此页面代表成功 本期教程到此技术,欢迎各位大佬斧正🧍‍♂️,如有问题请评论留言,感谢大家支持🙏

CrossOver 23.6 Mac 中文破解版含最新CrossOver 2023 激活码

如果您想要在mac上运行windows 软件,那么CrossOver 23.6 Mac版是一个非常不错的选择,该应用可以让用户在Mac运行自己的Windows软件,因此就可以摆脱双启动的繁琐和虚拟机的卡顿,也就是可以让Windows办公软件、实用工具,以及游戏都原生地在Mac上进行运行。有了它,用户可以Windows程序和Mac程序之间随意切换,并且这一切无需重启、无需虚拟机,也不需要购买Windows授权,能够让Windows软件就像Mac软件一样运行着,完美的实现跨平台的复制粘贴、文件互通、快捷键以及窗口管理,这也就意味着用户从此之后就不需要运行Windows的副本,也不会为同时运行的两个操作系统支付RAM和CPU代价,如果您需要原生速度,它是最好的选择。 同时全新版本的CrossOver 23.6相比于之前的版本也是进行看全面的更新以及添加了超多新功能,如:新增了对QQ游戏、企业微信、微信、同花顺、网易云音乐以及QQ音乐等软件的支持,这也就可以更好的满足不同用户的使用需求。 ps:小编为大家带来的是CrossOver 23.6 Mac 中文破解版 ,集破解补丁于一体,在这里用户无需购买即可免费使用到软件中的所有功能,并且还支持简体中文语言,有需要的朋友欢迎前来下载。 软件功能 1、在MAC上运行WINDOWS软件而不重新启动 兼容Mojave的CrossOver Mac是在Mac上运行Microsoft Windows软件而不购买Windows许可证,重新启动或使用虚拟机的最简单方法。可以轻松地从Dock中本地启动Windows程序。还为您的Windows应用程序集成了macOS功能,如跨平台复制和粘贴以及共享文件系统。在一个应用程序中运行Windows游戏,生产力软件和实用程序。如果没有虚拟机的开销,程序和游戏可以比在Windows操作系统下快速或快速地运行。 2、在不重新启动的情况下运行Windows软件 安装后,像安装任何Mac应用程序一样安装和启动Windows程序。您可以轻松访问自己喜欢的Windows程序。无需启动或启动虚拟机。无需将文件从一个文件系统复制到另一个文件系统。CrossOver直接在Mac上运行,Windows软件也是如此。 3、一键安装 我们的CrossTie技术是用户迈出的重要一步,因为它使安装Windows应用程序变得简单。只需单击CrossOver中的“安装”按钮,即可让该软件负责其余工作。您可以从我们庞大的兼容中心做同样的事情,该中心拥有数千个CrossTie安装程序。放松,让该软件完成工作。 4、软件以原生速度运行 CrossOver在Mac上本机运行。这意味着您不必运行Windows的副本。这意味着您不会为同时运行的两个操作系统支付RAM和CPU代价。这意味着没有陷入困境,波涛汹涌的表现。如果您需要原生速度,该软件是更好的选择。 5、与您的桌面环境无缝集成 由于该软件在您的原生Mac文件系统上运行,因此无需在Windows分区和OS X之间来回移动文件。所有内容都在一个地方,就在您需要的地方。在Windows文档和Mac文档之间无缝剪切和粘贴。从Dock启动Windows程序。您的Windows程序就像本机Mac应用程序一样。 6、Bottles bottles是该软件的一个独特功能,允许单独的Windows环境(XP,Win7等)与您喜欢的程序打包和自包含。瓶子非常有用,因为它们可以让您轻松备份软件,并将其从机器移动到机器。它们还可确保您根据应用程序的需要获得正确版本的Windows。这就像在您的计算机上一起运行几台不同的Windows机器一样。 CrossOver23.6破解版安装教程 1、首先下载挂载dmg包; 2、得到如下程序,然后将软件拖放至Applications当中进行安装; 3、等待软件拷贝完成; 4、成功后,直接启动软件便可无限制使用软件中所有服务。 v23.6版本安装教程 crossover Mac版下载完成后打开,拖动软件到右边的应用程序中进行安装 CrossOver Mac版下载地址:https://souurl.cn/p3dNXb CrossOver linux 版下载地址:https://souurl.cn/eCQ08d 软件安装完成后双击license.tool 输入crossover软件破解版激活码 1.CROSS94AFX3DDSAD98DASJDJKWJEKWQUI 2.CROSS94AFX3DJKASHDJKS23JI12J1HJ21H12 稍等片刻,crossover 会自动激活。 如需享受更好的售后服务,请支持正版,也为各位粉丝争取了大额优惠 有条件请支持正版安装:https://souurl.cn/hUz5JB 优惠码: KWVA5830(限时优惠) 使用教程 1、首先打开软件。 2、找到 CrossOver的菜单,在苹果电脑图标的右边,找到并选择配置-新建容器来创建一个新的容器,为容器命名并选择操作系统,如上图显示,点击创建。 3、选择您刚刚新建的CrossOver容器或一个已存在的容器,并按下“浏览...“按钮。在弹出的窗口选择您想要运行的.exe文件。 4、然后返回“运行命令”窗口并按下“运行”按钮。您也可以使用“运行命令”窗口为您的程序创建快捷方式。 总的来说,CrossOver 23.6 for Mac是一款非常实用的应用程序,它可以让Mac用户轻松地运行Windows应用程序,而无需在Mac上安装Windows操作系统。它非常适合需要使用某些只能在Windows上运行的应用程序的Mac用户。

前端(二十三)——轮询和长轮询

😫博主:小猫娃来啦 😫文章核心:实现客户端与服务器实时通信的技术手段 文章目录 前言轮询技术轮询的概念轮询的实现原理轮询的优缺点轮询的使用场景 长轮询技术长轮询的概念长轮询的实现原理长轮询的优缺点长轮询的使用场景 轮询与长轮询的比较示例代码结论 前言 现代Web应用程序对实时通信的需求越来越高,为了满足这种需求,轮询和长轮询成为了常用的技术手段。本文将深入探讨轮询和长轮询的实现原理、优缺点以及使用场景,并提供代码示例,以帮助读者更好地理解和应用这两种技术。 轮询技术 轮询的概念 轮询是一种客户端与服务器之间实时通信的技术手段,它的基本原理是客户端定期发送请求来查询服务器是否有新数据或事件,并将响应返回给客户端。如果服务器有新的数据或事件,则将其返回给客户端;如果没有,则返回一个空响应。客户端收到响应后,可以处理数据或事件,并根据需要继续发送下一个请求。 轮询的实现原理 轮询的实现原理很简单,客户端期发送HTTP请求给服务器并等待响应。客户端可以使用定时器来定期发送请求,通常间隔时间设置为几秒钟到几分钟。服务器收到请求后检查是否有新数据或事件,并将其返回给客户端作为响应。客户端收到响应后,处理数据或事件,并随后发送下一个请求。 // 客户端代码 function pollServer() { fetch('/api/data') .then(response => response.json()) .then(data => { // 处理服务器响应的数据 console.log('Received data:', data // 继续下一次轮询 setTimeout(pollServer, 5000); }); } // 开始轮询 pollServer(); // 服务器端代码 (使用 Express 框架) const express = require('express'); const app = expressapp.get('/api/data', (req, res) => { // 假设需要返回的数据为 { "status": "ok", "data": ... } const responseData = { status: 'ok', data: .

引领位置服务驱动:腾讯地图 WebService 服务端 API 实用指南

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏:业务设计 🤔 我当前正在学习微服务领域、云原生领域、消息中间件等架构、原理知识 💬 向我询问任何您想要的东西,ID:vnjohn 🔥觉得博主文章写的还 OK,能够帮助到您的,感谢三连支持博客🙏 😄 代词: vnjohn ⚡ 有趣的事实:音乐、跑步、电影、游戏 目录 简介配置管理配额申请步骤 地理位置解析基础代码配置腾讯 API 配置信息基础地图结构定义公用数据结构抽象请求工具类 IP 定位接口地址解析接口逆地址解析接口关键字输入提示接口 总结 简介 在工作中,一旦涉及到地理位置经纬度的解析,通过经纬度解析所在的详细地址,通过 IP 解析所在的经纬度再解析所在的详细地址,常用的地图 API 有百度、腾讯等第三方可以用于集成在项目中使用,本文我们会以腾讯地图 API 实现地理位置信息解析,提供源码以及应用的场景 腾讯地图 API 官方文档:WebService API|腾讯位置服务 腾讯地图 WebService API 是基于 HTTPS/HTTP 协议的数据接口 开发者可以使用任何客户端、服务器和开发语言,按照腾讯地图 WebService API 规范,按需构建 HTTPS 请求,并获取结果数据(目前支持JSON/JSONP方式返回) 配置管理 配额 针对个人开发者和企业开发者,提供的服务 API 调用量有明显的差别,以下图来自官方文档 从上图可知,普通的接口 API 能够让我们自由的调用,根据不同的身份来区分对应的可用额度,个人开发者 -> 企业开发者 -> 商业授权开发者 除了:路线规划|距离矩阵:货车|智能地址解析这些复杂的地理位置信息采集,其他啊的接口都有可限的使用额度 申请步骤 前往腾讯位置服务注册页,通过手机号+邮箱认证号个人开发者身份,随即登录至控制台

数据结构:阶段测试(查漏补缺)

目录 选择题: 题一: 题二: 题三: 题四: 编程题: 题一:左叶子之和 思路一: 题二:约瑟夫问题(用单链表实现) 思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连! 选择题: 题一: 1.将长度为n的单链表连接在长度为m的单链表之后,其算法的时间复杂度为() A. O(m) B. O(1) C. O(n) D. O(m+n) 答案解析: 长度为n的单链表链接长度为m的单链表只需要长度为m的单链表的头节点的地址,所以时间复杂度还是O(n)。 题二: 2.以下属于链表的优点的是( ) A. 用数组可方便实现 B. 插入操作效率高 C. 不用为节点间的逻辑关系而增加额外的存储开销 D. 可以按元素号随机访问 答案解析: 链表插入不需要挪动数据,所以插入效率高。 题三: 3.对于序列{ 12,13,11,18,60,15,7,19,25,100 },用筛选法建堆,应该从值为()的数据开始建初始堆 A. 100 B. 12 C. 60 D. 15 答案解析: 一共有10个数据,下标为0--9,建堆需要从最后一层的父节点开始,所以,最后一个元素的父节点为:(9 - 1) / 2 = 4,以4为下标的元素为60. 题四: 4.将整数数组( 7-6-3-5-4-1-2 )按照堆排序的方式进行升序排列,请问在第一轮排序结束之后,数组的顺序是() A. 1-2-3-4-5-6-7 B. 2-6-3-5-4-1-7

Python中的int()用法用法介绍

int()是Python中的一个内置函数,主要用于将其他类型的数据转换为整型,本文将从多个方面对其用法进行详细阐述。 一、基本用法 int()函数可以将一个带有数字的字符串转换为整型。比如: age = int('18') 上述代码将字符串'18'转换为整型,并将其赋值给变量age。 此外,int()函数还可以将其他数据类型转换为整型,比如浮点数: num = int(3.14) 上述代码将浮点数3.14转换为整型,并将其赋值给变量num。 二、进制转换 int()函数可以将其他进制的数转换为十进制数。例如,将二进制数1101转换为十进制数: num = int('1101', 2) print(num) # 输出:13 其中,第二个参数2表示要将字符串'1101'视为二进制数进行转换。 同样地,将十六进制数0x1A转换为十进制数: num = int('1A', 16) print(num) # 输出:26 其中,第二个参数16表示要将字符串'1A'视为十六进制数进行转换。 三、异常处理 int()函数在转换时,如果遇到不能转换的数据类型,将会抛出异常。因此,我们可以利用该特性进行异常处理。 例如,我们可以编写一个函数,将字符串转换为整型,如果失败则返回0: def str_to_int(s): try: return int(s) except: return 0 上述代码中,我们使用了try-except语句,如果在转换时遇到异常,就返回0。 四、其他用法 除了以上几种常用的用法,int()函数还有其他一些用法,例如: 1、将布尔值True转换为整型1,将False转换为整型0: print(int(True)) # 输出:1 print(int(False)) # 输出:0 2、将可迭代对象转换为整型。如果可迭代对象中含有非数字元素,将会抛出异常: print(int([1, 2, 3])) # 输出:123 print(int([1, 2, 'a'])) # 抛出异常 五、总结 本文对Python中int()函数的用法进行了详细的阐述。除了基本的将字符串和浮点数转换为整型之外,我们还介绍了如何进行进制转换、异常处理等高级用法。掌握这些用法可以让我们在编写Python程序时更加灵活、高效。

MinGW-w64的安装详细步骤(c/c++的编译器gcc、g++的windows版,win10、win11真实可用)

文章目录 1、MinGW的定义2、MinGW的主要组件3、MinGW-w64下载与安装3.1、下载解压安装地址3.2、MinGW-w64环境变量的设置 4、验证MinGW是否安装成功5、编写一段简单的代码验证下6、总结 1、MinGW的定义 MinGW(Minimalist GNU for Windows) 是一个用于 Windows 平台的开发工具集,它提供了一组 GNU 工具和库,可以用于编译和构建本地的 Windows 应用程序。MinGW 的目标是在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序。 2、MinGW的主要组件 GCC(GNU Compiler Collection): GCC 是一个开源的编译器套件,支持多种编程语言,包括 C、C++、Fortran 等。在 MinGW 中,GCC 被用来编译和生成 Windows 平台下的可执行文件。 Binutils:Binutils 是一组用于处理二进制文件的工具,包括汇编器、链接器、目标文件处理器等。在 MinGW 中,Binutils 用于将编译后的源代码转换为可执行文件。 运行时库(Runtime Libraries): MinGW 提供了 Windows 下所需的 C 和 C++ 运行时库,这些库是在编译和链接时所需要的,以便在 Windows 环境下运行程序。 MSYS(Minimal SYStem): MSYS 是一个轻量级的 Unix-like 环境,它在 Windows 上提供了一些基本的 Unix 命令行工具,使开发者能够更方便地使用命令行进行开发和构建。 MinGW 可以与其他开发工具集(如 Visual Studio)一起使用,但它的重点是提供一个简单的方式来在 Windows 上进行开发,无需依赖复杂的集成开发环境(IDE)。MinGW 的使用可以让开发者更接近标准的开发环境,同时也方便了跨平台的开发。

表白墙完善(数据库,前端,后端Servlet),再谈Cookie和Session。以及一个关于Cookie的练习小程序

目录 表白墙引入数据库 再谈Cookie和session 得到Cookie ​编辑 设置Cooie 使用Cookie编写一个登入的小界面 表白墙引入数据库 1.先引入数据库的依赖(驱动包),5.1.49 pom.xml中,在之前的两个之前,再去添加一个 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> 2.创建本地的数据库 create table messageWall(`from` varchar(20),`to` varchar(20),message varchar(1024)); 3.之前的代码中有一段可以删掉了 //此处把消息保存到内存中(一旦重启服务器,内存数据就会消失了。更科学的做法,应该是保存到数据库里面) private List<Message> messageList=new ArrayList<>(); 这个代码需要删除,因为我们已经决定使用数据库去存储了,就不需要本地去存了。 完整代码 import com.fasterxml.jackson.databind.ObjectMapper; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; class Message{ public String from; public String to; public String message; @Override public String toString() { return "

下载安装Microsoft ODBC Driver for SQL Server和配置SQL Server ODBC数据源

在开始之前,我们先了解一下ODBC(Open Database Connectivity) Driver 18 for SQL Server。这是微软提供的一种数据库访问标准,它允许开发者使用统一的接口来连接和操作各种数据库,其中包括SQL Server。本文将向你介绍如何实现ODBC Driver 18 for SQL Server的安装和使用。 整体流程 下面是实现ODBC Driver 18 for SQL Server的整体流程: 步骤 1 下载ODBC Driver 18 for SQL Server 步骤 2 安装ODBC Driver 18 for SQL Server 步骤 3 配置ODBC数据源 步骤 4 连接到SQL Server 数据库 步骤 5 执行SQL查询 1. 下载SQL Server ODBC驱动: Microsoft ODBC Driver for SQL Server - ODBC Driver for SQL Server | Microsoft Learn 系统要求、安装和驱动程序文件 系统要求、安装和驱动程序文件 - ODBC Driver for SQL Server | Microsoft Learn

前端TypeScript学习day05-索引签名、映射与类型声明文件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 索引签名类型 映射类型 索引查询(访问)类型 基本使用 同时查询多个索引的类型 TypeScript 类型声明文件 概述 TS 的两种文件类型 类型声明文件的使用说明 使用已有的类型声明文件 内置类型声明文件 第三方库的类型声明文件 创建自己的类型声明文件 项目内共享类型 为已有 JS 文件提供类型声明。 索引签名类型 绝大多数情况下,我们都可以在使用对象前就确定对象的结构,并为对象添加准确的类型。 使用场景: 当无法确定对象中有哪些属性 (或者说对象中可以出现任意多个属性),此时, 就用到索引签名类型了 。 解释: 1. 使用 [key: string] 来约束该接口中允许出现的属性名称。表示只要是 string 类型的属性名称,都可以出现在对象中。 2. 这样,对象 obj 中就可以出现任意多个属性(比如,a、b 等)。 3. key 只是一个占位符 ,可以换成任意合法的变量名称。 4. 隐藏的前置知识: JS 中对象({})的键是 string 类型的 。 在 JS 中数组是一类特殊的对象,特殊在 数组的键(索引)是数值类型 。 并且,数组也可以出现任意多个元素。所以,在数组对应的泛型接口中,也用到了索引签名类型 解释: 1. MyArray 接口模拟原生的数组接口,并使用 [n: number] 来作为索引签名类型。 2. 该索引签名类型表示:只要是 number 类型的键(索引)都可以出现在数组中,或者说数组中可以有任意多个元素。 3.

手把手带你用Python和文心一言搭建《AI看图写诗》网页项目(附上完整项目源码)

今年年初,ChatGPT的火爆在全球掀起AI大模型的开发热潮,国内外的科技公司纷纷加入“百模大战”行列。百度在率先发布了国内第一款人工智能大语言模型“文心一言”后,又推出了文心千帆大模型平台,帮助企业和开发者加速大模型应用落地。 而最近百度创始人、董事长兼首席执行官李彦宏在一场活动上透露了百度世界大会2023的重磅消息,他将在10月17号百度世界大会召开的时候,“手把手教你怎么做AI原生应用”。 我自己也突发奇想用文心一言搭建一个AI小应用:《看图写诗》,说干就干,接下来就跟着博主一起实现这个网页吧! 文章目录 一、实现思路二、《AI看图写诗》网页搭建实现步骤2.1 网页前端2.2 图像识别2.2.1 安装百度智能云Python SDK2.2.2 创建应用2.2.3 Python代码测试 2.3 文心一言写诗2.3.1 安装ERNIE Bot SDK2.3.2 获取令牌Token2.3.3 Python代码测试 2.4 网页后端2.5 完整项目拷贝2.6 项目运行步骤2.7 运行流程视频 三、未来优化四、总结 一、实现思路 1、设计一款网页实现接受上传图片和接收文心一言令牌Token功能 2、Python调用百度智能云的图片识别接口,识别图片类别和内容 3、Python调用文心一言接口,输入图片类别,通过文心一言写诗 4、Python后端将诗返回到网页上 二、《AI看图写诗》网页搭建实现步骤 2.1 网页前端 网页前端采用HTML+CSS+JavaScript技术,实现了上传图片、展示图片,传入百度智能云AppId、百度智能云API Key、百度智能云Secret Key、飞浆星河Access Token和点击写诗功能,界面如下: 2.2 图像识别 百度智能图像识别接口是百度提供的一项人工智能服务,能够对图片进行高精度的内容识别,该接口支持多种图像识别任务,包括通用物体识别、场景识别、文字识别、动物识别等,这里我们通过Python直接调用免费的通用物体识别图像识别接口,极大的提高了开发工作的效率。 2.2.1 安装百度智能云Python SDK 可以通过pip安装百度智能云Python SDK。在终端下输入以下命令: pip install baidu-aip 安装完毕后,你就可以在Python代码中导入该包了: from aip import AipImageClassify 2.2.2 创建应用 1、登录百度智能云的官网:https://console.bce.baidu.com 2、依次找到点击 产品 》人工智能 》图像识别 3、登录控制台后点击免费尝鲜: 4、勾选全部然后点击0元领取: 5、创建成功后,点击应用进入应用详情页,进入应用管理菜单,点击API Key,可查看API Key和Secret Key,用于Python代码调用API。 2.2.3 Python代码测试 经过以上两步准备工作,我们便可以开始编写Python代码,实现百度智能图片识别。以下是一个简单的测试示例,需要修改AppId 、API Key、Secret Key和图片路径: