文章目录 1. 创建 Git 本地仓库2. 配置 Git3. 认识工作区、暂存区、版本库3.1 添加文件 | 场景一3.2 查看 .git 文件3.3 添加文件 | 场景二 4. 修改文件5. 版本回退6. 撤销修改6.1 情况一:对于工作区的代码,还没有 add6.2 情况二:已经 add,但没有 commit6.3 情况三:已经 add 了,并且也 commit 了 7. 删除文件8. 本文命令总结 1. 创建 Git 本地仓库 要提前说的是,仓库是进行版本控制的一个文件目录。我们想对文件进行版本控制,就必须先创建一个仓库出来。
创建一个 Git 本地仓库对应的命令为 git init,注意命令要在文件目录下执行,例如:
ubuntu@VM-20-5-ubuntu:~/gitcode$ pwd /home/ubuntu/gitcode ubuntu@VM-20-5-ubuntu:~/gitcode$ git init Initialized empty Git repository in /home/ubuntu/gitcode/.git/ ubuntu@VM-20-5-ubuntu:~/gitcode$ ll -a total 12 drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 16 19:26 .
前言 从springboot3.0开始,已经不⽀持JDK8了
选⽤Java17,概括起来主要有下⾯⼏个主要原因
JDK17是LTS(⻓期⽀持版),可以免费商⽤到2029年。⽽且将前⾯⼏个过渡版(JDK9-JDK16) 去其糟粕,取其精华的版本JDK17性能提升不少,⽐如重写了底层NIO,⾄少提升10%起步;⼤多数第三⽅框架和库都已经⽀持,不会有什么⼤坑; 欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
目录
前言
yield关键字
密封类
接口中的私有方法
instanceof
yield关键字 yield关键字,从Java13开始引⼊。yield关键字⽤于从case的代码块中返回值。
简化switch 语句
public static void main(String[] args) { String data = "one" ; int result = switch (data) { case "one"->1; case "two"->2; default->-1; }; System.out.println(result) ; } 利用yield关键字代替->
public static void main(String[] args) { String data = "one" ; int result = switch (data) { case "one" : yield 1; case "two": yield 2; default : yield -1; }; System.
PC端可直接搜索关键词 快捷键:Ctrl+F 年份关键字、题目关键字等等
注意看本文目录-快速了解本专栏 文章目录 🐱2024年华为OD机试真题(马上更新)🐹2023年华为OD机试(更新中)🐶新增题库-2023 🐸华为OD机试优秀必刷题🐻知识点🐷华为员工补充途径🐮华为OD是什么?🐗薪资待遇:🐒华为OD值得去吗?🐴华为转正流程:🐫华为 OD 机试:二本院校有机会吗?🐑 华为 OD 机试:跨专业可以参加华为OD🐼华为 OD 机试:机试时可以看到错误的用例吗🐍华为 OD 机试:华为 OD 简历被锁定🐧华为 OD 机试:正式员工与OD员工的区别🐝华为 OD 机试:华为 od 岗的薪资待遇🐋华为 OD 机试:华为OD能不能转正,转正要求及转正率怎么样🐲华为校招目标院校 这里是【彻底搞懂算法和数据结构—算法之翼】专栏的华为OD机试。 每篇文章都包含【题目、解题思路、三种语言解题代码、三种语言解题代码详解】 每道题都会用JAVA&Python&C++&JS分别解题,提供高质量的解题思路、代码、以及代码讲解。 注:华为OD招聘,每年的1-5月份是高峰期,这个阶段呢,offer多,面试简单,薪资高,大家可以利用年前的时间好好准备和复习,取得一个不错的机试成绩~
订阅必知:这些题目的解题方法是给大家参考的,学习掌握解题方法的,可以学习解题思路,每篇文章代码、代码解析和思路都写的非常清楚,以学习为目的,切记不要抄袭,考试过程中要注意重复率,重复率过高会判定作弊嫌疑,切记~
听说2024年1-6月份考的就是这个题库,都是原题机考题库大概每半年更新一次,也就是说一直到2024年5月份,考的都是这份题库,大家有充足的时间来复习和准备~
🐱2024年华为OD机试真题(马上更新) 🐹2023年华为OD机试(更新中) 🐶新增题库-2023 以下是100分题目:
序号题目分值语言1 寻找身高相近的小朋友100python、java、C++、JS2围棋的气100python、java、C++、JS3用连续自然数之和来表达整数100python、java、C++、JS4开源项目热榜100python、java、C++、JS5API集群负载统计100python、java、C++、JS6整数对最小和100python、java、C++、JS7素数之积100python、java、C++、JS8CPU算力分配 100python、java、C++、JS9最大坐标值100python、java、C++、JS10寻找最富裕的小家庭100python、java、C++、JS11查找接口成功率最优时间段100python、java、C++、JS12敏感字段加密100python、java、C++、JS13虚拟游戏理财100python、java、C++、JS14IPv4地址转换成整数100python、java、C++、JS15报文重排序100python、java、C++、JS16整数编码100python、java、C++、JS17阿里巴巴找黄金宝箱(I)100python、java、C++、JS18中文分词模拟器100python、java、C++、JS19单行道汽车通行时间100python、java、C++、JS20手机App防沉迷系统100python、java、C++、JS215G 网络建设100python、java、C++、JS22靠谱的车100python、java、C++、JS23执行时长100python、java、C++、JS24万能字符单词拼写 100python、java、C++、JS25来自异国的客人100python、java、C++、JS26求最多可以派出多少支团队100python、java、C++、JS27最长子字符串的长度(一)100python、java、C++、JS28机场航班调度程序100python、java、C++、JS29数的分解100python、java、C++、JS30智能成绩表100python、java、C++、JS31最长合法表达式100python、java、C++、JS32最大N个数与最小N个数的和100python、java、C++、JS33小朋友来自多少小区100python、java、C++、JS34停车场车辆统计100python、java、C++、JS35执行任务赚积分100python、java、C++、JS36最多购买宝石数目100python、java、C++、JS37求字符串中所有整数的最小和100python、java、C++、JS38堆内存申请100python、java、C++、JS39智能成绩表100python、java、C++、JS40测试用例执行计划100python、java、C++、JS41按身高和体重排排队100python、java、C++、JS42攀登者1100python、java、C++、JS43分披萨100python、java、C++、JS44攀登者2100python、java、C++、JS45机械绘图100python、java、C++、JS46考勤信息100python、java、C++、JS47字符串变换最小字符串100python、java、C++、JS48分配土地100python、java、C++、JS49小华最多能得到多少克黄金100python、java、C++、JS50英文输入法100python、java、C++、JS51游戏分组100python、java、C++、JS52精准核酸检测100python、java、C++、JS53小明找位置100python、java、C++、JS54传递悄悄话100python、java、C++、JS55手机App防沉迷系统100python、java、C++、JS56转盘寿司100python、java、C++、JS57小明找位置100python、java、C++、JS58计算三叉搜索树的高度100python、java、C++、JS59找座位100python、java、C++、JS60数组去重和排序100python、java、C++、JS61机器人搬砖100python、java、C++、JS62生成哈夫曼树100python、java、C++、JS63多段线数据压缩100python、java、C++、JS64火星文计算100python、java、C++、JS65求幸存者之和100python、java、C++、JS66找朋友100python、java、C++、JS67灰度图恢复100python、java、C++、JS68螺旋数字矩阵100python、java、C++、JS69密码输入检测100python、java、C++、JS70密码解密100python、java、C++、JS71内存冷热标记100python、java、C++、JS72最小矩阵宽度100python、java、C++、JS73会议室占用时间100python、java、C++、JS74幼儿园篮球游戏100python、java、C++、JS75部门人力分配100python、java、C++、JS76特殊的加密算法100python、java、C++、JS77信道分配100python、java、C++、JS78字符串序列判定100python、java、C++、JS79AI面板识别100python、java、C++、JS80最大社交距离100python、java、C++、JS81连续出牌数量100python、java、C++、JS82模拟目录管理100python、java、C++、JS83跳马问题100python、java、C++、JS84剩余银饰的重量100python、java、C++、JS85路口最短时间问题100python、java、C++、JS86智能驾驶100python、java、C++、JS87污染水域100python、java、C++、JS88拼接url100python、java、C++、JS89跳格子三100python、java、C++、JS90免单统计100python、java、C++、JS91跳房子I100python、java、C++、JS92最小传输时延I100python、java、C++、JS93叠积木100python、java、C++、JS94根据IP查找城市100python、java、C++、JS95启动多任务排序100python、java、C++、JS96欢乐的周末100python、java、C++、JS97找数字100python、java、C++、JS98推荐多样性100python、java、C++、JS99数据单元的变化替换100python、java、C++、JS100芯片资源限制100python、java、C++、JS 以下是200分题目:
序号题目分值语言1员工派遣200python、java、C++、JS2亲子游戏200python、java、C++、JS3Wonderland200python、java、C++、JS4分月饼200python、java、C++、JS5找城市200python、java、C++、JS6两个字符串间的最短路径问题200python、java、C++、JS7电脑病毒感染200python、java、C++、JS8项目排期200python、java、C++、JS95G网络建设200python、java、C++、JS10局域网中的服务器个数200python、java、C++、JS11田忌赛马200python、java、C++、JS12最小矩阵宽度200python、java、C++、JS13任务处理200python、java、C++、JS14跳马200python、java、C++、JS15符号运算200python、java、C++、JS16孙悟空吃蟠桃200python、java、C++、JS17最长子字符串的长度(二)200python、java、C++、JS18最长的指定瑕疵度的元音子串200python、java、C++、JS19抢7游戏200python、java、C++、JS20贪心歌手200python、java、C++、JS21考古学家200python、java、C++、JS22解密犯罪时间200python、java、C++、JS23字符串拼接200python、java、C++、JS24查找一个有向网络的头节点和尾节点200python、java、C++、JS25文件缓存系统200python、java、C++、JS26园区参观路径200python、java、C++、JS27快递员的烦恼200python、java、C++、JS28文本统计分析200python、java、C++、JS29矩阵匹配200python、java、C++、JS30图像物体的边界200python、java、C++、JS31寻找最优的路测线路200python、java、C++、JS32运输时间200python、java、C++、JS33高效货运200python、java、C++、JS34贪吃的猴子200python、java、C++、JS35反射计数200python、java、C++、JS36伐木工200python、java、C++、JS37二叉树的广度优先遍历200python、java、C++、JS38二叉树计算200python、java、C++、JS39学生重新排队200python、java、C++、JS40运维日志排序200python、java、C++、JS41找单词200python、java、C++、JS42宜居星球改造计划200python、java、C++、JS43需要打开多少监视器200python、java、C++、JS44迷宫问题200python、java、C++、JS45输出指定字母在字符串的中的索引200python、java、C++、JS46比赛的冠亚季军200python、java、C++、JS47二维伞的雨滴效应200python、java、C++、JS48200python、java、C++、JS49200python、java、C++、JS50200python、java、C++、JS 🐸华为OD机试优秀必刷题 序号题目分值语言1生理周期 200java2朋友圈200java3拆分200python4无名的搜索题200java5石油勘探200java6小华的游泳时间200C++7无名的搜索题200C++8无名的搜索题200python9拆分200C++10神奇的卡片200java11简单的最短路径200python12石油勘探200java13神奇的卡片200C++14摘花生200Python15朋友圈200C++16小华的游泳时间200python17摘花生200java18石油勘探200c19拆分200Java20小华的游泳时间200Java21简单的最短路径200C22洗衣服200Java&Python&C++23朋友圈200Python24生理周期200Python25小华的数字排序200Python26决战200Java&Python&C++27简单的最短路径200Java28小华的数字排序200Java29小华的数字排序200C++30生理周期200C++ 🐻知识点 🐷华为员工补充途径 华为员工,每年增加15000人左右,补充途径只有3种:
1、校招8000人,难度中,应届毕业生特别多,其他大厂招的少,难度大了许多;
2、OD转华为6000人,难度低,社招,工作内容、强度与华为员工一样,薪资待遇也基本一致;
3、17级以上社招,难度高,简历筛选要求高,面试难度大,有大厂经历的可以走这条路,薪资待遇还是可以匹配的。
🐮华为OD是什么? OD全称(Outsourcing Dispacth)模式,目前华为和德科联合招聘的简称。目前华为社招大多数是OD招聘,17级以下都为OD模式,OD模式也是华为提出的一种新的用工形式,定级是13-17级,属于华为储备人才,每年都会从OD项目挑优秀员工转为正编。–考来的,描述的很准确。
🐗薪资待遇: D1-D5对应薪资10K-35K左右,年终奖2-4个月,周六加班双倍工资,下个月发。入职OD会有一定薪资上涨,之后每年一次加薪,OD转华为一次加薪。
🐒华为OD值得去吗? 与一个武大本科生的聊天:
很多人介意OD的名号,如果你有意向加入华为的话,可以走OD流程。
认识了一个武大本科学生,考研二战失败,走了华为OD流程,他给我讲了他来OD的原因:
1、他认为,第一份工作去大厂很重要,但是对于他这种没有工作经验的人来说,去其他的大厂比较困难,走华为OD流程是最简单的路。
2、他了解OD转华为的流程,有在华为的同学也证实过,他相信自己有能力,1年后转华为。
3、更注重工作的实质,不太在乎名声。
华为OD的面试流程:
1、投递简历,同时提供姓名、邮箱、手机号、身份证号,用于锁定。
2、机试。3到算法题,400分满分,一般1个月的准备时间。
3、2轮技术面试,关注手撕代码、基础知识、项目经历
4、HR面和主管面。
1、什么是JWT 最近刚刚启动搭建一个会员支付系统的项目,单点登录用到JWT来认证,借此机会来谈一谈JWT的相关知识,后续也会分享项目中的相关技术点,大家点赞关注哦~~~
1.1、JWT的介绍 官方解释:JSON Web Token (JWT) 是一种开放标准 (RFC 7519),它定义了一种紧凑且独立的方式,用于在各方之间以 JSON 对象的形式安全地传输信息。此信息可以验证和信任,因为它是经过数字签名的。JWT 可以使用密钥(使用 HMAC算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。
简单来说,JWT就是用来判断某种信息是否可以被信任的一种签名json
1.2、JWT的使用场景 身份验证(Authentication):JWT 可以被用作用户登录的身份验证凭证。当用户成功登录后,服务端可以生成一个包含用户信息的 JWT,并将其返回给客户端。以后,客户端在每次请求时都会携带这个 JWT,服务端通过验证 JWT 的签名来确认用户的身份。
授权(Authorization):在用户登录后,服务端可以生成包含用户角色、权限等信息的 JWT,并在用户每次请求时进行验证。通过解析 JWT 中的声明信息,服务端可以判断用户是否有权限执行特定的操作或访问特定的资源。
信息交换(Information Exchange):由于 JWT 的声明信息可以被加密,因此可以安全地在用户和服务器之间传递信息。这在分布式系统中非常有用,因为可以确保信息在各个环节中的安全传递。
单点登录(Single Sign-On):JWT 可以被用于支持单点登录,使得用户在多个应用之间只需要登录一次即可使用多个应用,从而提高用户体验。
1.3、JWT的优势 无状态:JWT 的验证是基于密钥的,因此它不需要在服务端存储用户信息。这使得 JWT 可以作为一种无状态的身份认证机制。
跨语言支持:JWT 的标准化和简单性质使得它可以在多种语言和平台之间使用。
安全性高:由于 JWT 的载荷可以进行加密处理,因此 JWT 能够保证数据的安全传输。同时,JWT 的签名机制也能够保证数据的完整性和真实性。
2、JWT的结构 JWT由Header+Payload+Signature三部分组成 Header JWT 的头部通常由两部分组成,分别是令牌类型(typ)和加密算法(alg)。一般情况下,头部会采用 Base64 编码。 { "alg": "HS256", "typ": "JWT" } Payload JWT 的载荷也称为声明信息,包含了一些有关实体(通常是用户)的信息以及其他元数据。通常包括以下几种声明:
Registered Claims:这些声明是预定义的,包括 iss(发行者)、sub(主题)、aud(受众)、exp(过期时间)、nbf(生效时间)、iat(发布时间)和 jti(JWT ID)等。
下面是来自官方给的几个scrcpy的特性:
轻量性能 (30~60fps)质量 (1920×1080 及以上)低延时 (35~70ms)启动速度快 (1秒左右出画面)非侵入性 (不需要在手机安装任何东西) 使用scrcpy的要求有以下几点:
安卓设备至少需要API 21(Android 5.0以上版本);设备上需要启用了adb调试; 安卓手机的adb调试的开启一般是在开发者选项里,很多手机的开发者选项默认是隐藏的,需要多次点击手机系统版本,就可以看到了。
启动 下载对应你的操作系统的scrcpy版本,以windows为例,下载scrcpy,最新版本为1.13。
下载地址:
https://github.com/Genymobile…
无需安装,解压就好。解压后的目录如下:
打开windows命令行程序(cmd),定位到此目录,确认手机端usb调试已经开启,然后手机通过usb或wifi连接到电脑。首次连接会弹出是否信任该电脑,点击始终信任即可。运行adb devices查看是否连接成功,如图:
然后运行scrcpy即可弹出手机画面的实时投射了。我在大部分情况下都使用无线连接,使用无线的话,由于带宽一般小于有线连接,而默认的scrcpy比特率比较高,这对于无线连接来说可能造成卡顿。还好scrcpy提供了一些命令行参数进行调节,降低比特率和分辨率,所以我实际上使用的命令行是:
scrcpy.exe -b 1m -m 1024 --prefer-text
-b和-m分别是控制带宽和分辨率的,可以根据自己的实际带宽情况调整, --prefer-text参数会在下面讲到。
控制手机 看到手机画面后,scrcpy提供了很多快捷键方便来控制安卓端,常用的大概有:
Ctrl+b 返回,或者可以按鼠标右键Ctrl+h 桌面,或者可以按鼠标中键Ctrl+s 多任务Ctrl+p 手机电源Ctrl+g 显示最佳窗口,或者可以双击手机画面外黑色区域Ctrl+上下键 调节音量Ctrl+左右键 旋转屏幕Ctrl+o 关闭设备屏幕,但pc端仍保持连接Ctrl+c 将设备剪贴板复制到计算机Ctrl+v 将计算机剪贴板粘贴到设备Ctrl+shift+v 将计算机剪贴板同步到设备剪贴板Ctrl+f 切换全屏模式 而且scrcpy通过鼠标对触摸的模拟很全面,长按和拖动都可以模拟,这让我挺诧异的,因为我自己开发的微动手势有个功能,就是模拟鼠标,我知道想要模拟一个拖放操作还是很困难的,但是scrcpy完美的做到了。基本上,熟练以后可以用scrcpy在pc上控制安卓做任何事情。
对游戏的支持 我不太玩游戏,scrcpy受到带宽的限制,看官方的帧率说是30-60fps,加上投射本身对cpu的占用,估计对游戏不会有太好的支持,除非是一些对帧率要求不高的休闲类游戏,否则在游戏上对scrcpy不要有太高期望了。
不过,scrcpy内置对按键的支持,所以如果一款游戏支持蓝牙键盘,那么就可以通过scrcpy使用pc键盘来玩。
输入法支持 scrcpy对我来说,最大的作用还是在于快速输入,可以用pc键盘完成酷安等app的文字快速输入,当然,要选择一个合适的输入法。经过测试,那些能蓝牙键盘有很好支持的输入法对于scrcpy也能很好的支持,可以大幅提高输入效率,我使用的谷歌拼音和讯飞输入法都能比较好的支持pc键盘的快速输入。
有时候,我们需要从pc端复制一些文字到手机端,比如在pc的浏览器上搜出的一些信息,要传到手机上,scrcpy提供了按ctrl-v可以将pc剪贴板直接粘贴到手机端,但是很可惜,这种方式是把文字转换为按键一点一点在手机端重放,也就是说还是通过安卓端的输入法“输”进去的。那么对于中文就完全不可行了,没办法直接复制。
而且就算是英文,scrcpy在缺省情况下,是通过模拟每个字符的按下和弹起来做ctrl-v的,这样的话,对于很多输入法,会导致粘贴的英文和实际输出的英文不一致的情况(比如很多输入法判断出首字母会自动大写),好在scrcpy提供了一个命令行参数–prefer-text可以通过字符的方式进行ctrl-v,而不是模拟按键,这样实测的结果是英文的粘贴基本没有问题了。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
最后 考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档
喜欢的朋友可以关注、转发、点赞 感谢!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**
C#操作redis
入门步骤:
安装redis–安装可视化软件RedisDesktopManager–C#操作redis
前两步软件的安装教程很多,这里不赘述。
一、类库的选择
在C#中使用Redis,一般有两种方式:
1、ServiceStack.Redis,据说是Redis官方推荐使用的驱动类库,但是是收费的。
2、StackExchange.Redis,可能性能要比ServiceStack.Redis差点,但是是免费的。
经过多方调研,我选用StackExchange.Redis来实现Redis操作,可找到的资料也更多。
二、添加StackExchange.Redis引用
想要在C#中使用Redis,首先得要有个Redis支持的C#版的驱动。
通过网络下载或nuget安装,得到Redis相关的dll,添加到项目中引用。这里介绍下通过NuGet方式添加
第一步:在项目中右键,选择管理NuGet管理包
第二步:搜索StackExchange.Redis添加,我这里已经添加过了所以没有添加按钮
注意.net framework的版本要相适应
通过这两步,会在项目中自动添加StackExchange.Redis引用
有需要的可以自行添加Newtonsoft.Json引用
补充完整后引用如图
三、利用StackExchange.Redis对数据库进行增删查改
论坛里有不少教程,都是给出RedisHelper类,可自己调用这样的用法,如下面几篇文章
https://blog.csdn.net/u011301348/article/details/105215016
https://blog.csdn.net/wanlong360599336/article/details/46771477
https://blog.csdn.net/weixin_30892037/article/details/98005759
https://blog.csdn.net/yangwohenmai1/article/details/93536539
对我而言,更想学数据库连接,写入,增删查改的具体方法,下面的原文连接很友好。
https://blog.csdn.net/kingshown_WZ/article/details/89603057
我这里在原文程序的基础上扩展功能,对redis各种数据类型的操作做了完整补充。程序结构在上图中可以看到。
1、新建控制台程序
同上步操作添加Nuget包
2、添加UserInfoDto.cs用户实体
public class UserInfoDto
{
public int Id { get; set; }
public string StaffId { get; set; }
public string StaffName { get; set; }
public string Password { get; set; }
public System.DateTime LastLoginTime { get; set; } }
GetxController原理深度解析----万字图解!!!! getx是flutter开发中使用最频繁也最受欢迎的开发框架,要使用它必须先掌握其原理,并利用其提供的工具,达到更好的利用框架的目的,在了解原理的同时在结合设计模式去分析,不仅能学到原理,还能加强设计模式的学习
一、GetxController的不同创建方式和使用场景 1.Get.lazyPut(() => XXXController());
2.Get.putAsync(() => XXXController());
3.Get.create(() => XXXController());
4.Get.put(() => XXXController());
原理解析及使用场景 //延迟初始化,只有在调用Get.find()的时候才会创建controller void lazyPut<S>( //函数方式创建,懒加载 InstanceBuilderCallback<S> builder, { //对builder内容进行标记 String? tag, //是否持久化保存controller bool? fenix, bool permanent = false, }) { _insert( isSingleton: true, name: tag, permanent: permanent, builder: builder, fenix: fenix ?? Get.smartManagement == SmartManagement.keepFactory, ); } void create<S>( //函数方式创建,懒加载 InstanceBuilderCallback<S> builder, { String? tag, bool permanent = true, }) { _insert( isSingleton: false, name: tag, builder: builder, permanent: permanent, ); } S put<S>( //直接创建 S dependency, { String?
优质博文:IT-BLOG-CN
在使⽤iOS设备的时候, 我们经常会收到1069、1065开头的垃圾短信, 如果开了iMessage会更严重, 各种乱七⼋糟的垃圾信息会时不时地收到。
从iOS11开始, ⼿机可以⽀持恶短信拦截插件了. 我们可以通过该插件添加⼀些规则通过滤这些不需要的信息.
⼀. 使⽤xcode新建⼀个项⽬ 【1】在Main.storyboard的主页⾯添加⼀个TableView⽤来展⽰被过滤的信息列表。TableCell包含发送者、发送时间、发送内容。
【2】ViewController.swift⾥⾯的ViewController类。
定义⼀个blackMessages名字的列表, ⽤通存放插件过滤的信息。在页⾯启动的时候填充blackMessages列表。
实现UITableViewDataSource接口, 在cellForRowAt⽅法⾥⾯展⽰相应的控件。
⼆. 添加短信拦截插件 【1】在xcode的菜单⾥⾯通过File -> New -> Target选择Message Filter Ex-tension。
【2】在插件类⾥⾯的offlineAction⽅法添加过滤规则, 并把过滤结果保存下来。
三. 开启短信过滤 编译并运⾏程序, 在⼿机上打开系统的设置软件, 在"信息-> 通知&垃圾邮件"下开启过滤功能, 并且在短信过滤下选择插件名字。这样收到垃圾信息就能在我们的应⽤上展⽰了, 并且在系统的信息软件⾥⾯把它⾃动归类垃圾列表。
前言:在学习Redis之前,我们需要一个Linux的操作系统,可以选择云服务器也可以选择本地安装虚拟机并且配置Linux的操作系统镜像,本次分享为大家带来CentOS和Redis的下载安装配置教程
目录
一.下载配置Linux的操作系统
二.下载配置Redis
1.安装Redis的依赖
2.上传安装包并解压
3.启动Redis
4.指定配置启动
5.设置为开机自启
一.下载配置Linux的操作系统 Linux操作系统有诸多发行版本,目前较为主流的是Ubuntu和CentOS,这里笔者选择CentOS 8作为示例
首先,我们需要一个CentOS 8的OS镜像,在阿里云开源镜像站中我们就可以免费获取:
阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)
点击上方连接后我们选择OS镜像
然后选择我们具体需要的版本,之后点击下载
在下载好了后,就可以打开我们本地的虚拟机Vmware17
这里我们点击经典,快速搭建
然后我们选择刚才下载的镜像资源
笔者这里下载的是CentOS 8,根据自己的情况选择
然后是选择下载在哪个盘的位置,自己按需选择
然后是选择自己的磁盘大小,一般默认即可
最后确认
点击完成就下载好了
我们点击开启就可以正式安装了
我们点击屏幕,然后通过键盘上的上下左右去选择,确认好了后按回车即可,然后就耐心等待一下安装
选择中文选项,然后继续
如下图配置
按照自己的需求配置,笔者这里选择的默认,配置完成后单击完成
然后点击开始安装
之后耐心等待一下
最后一步,在配置许可中点击同意
到此整个Linux系统就配置好了,就可以正常使用了
二.下载配置Redis 在准备好Linux的操作系统后,就可以开始下载配置Redis了,首先我们可以打开Redis的官网:
Redis 官网
在官网右上角就可以点击下载
下载完成后就可以进行下一步
1.安装Redis的依赖 首先,Redis是基于C语言编写的,所以我们需要提前安装好Redis所需要的gcc依赖,在终端中输入以下命令:
yum install -y gcc tcl 输入完成后等待下载
然后我们切换目录到 /usr/local/src,或者放在其他的目录也可以
2.上传安装包并解压 然后我们就下载好的压缩包复制粘贴或者拖拽到其中
然后输入命令进行解压,这里根据自己的下载更换对应的名字
tar -xzf 下载的文件包的名字 比如笔者这里是redis-6.2.6版本
tar -xzf redis-6.2.6.tar.gz 解压后进入解压后的目录
cd redis-6.2.6 运行编译命令
make && make install 默认的安装路径是在 /usr/local/bin 下
新鲜AI产品点击了解:https://top.aibase.com/
1、最强大模型Llama3 正式发布 已达GPT4 级别
Llama3是Meta公司最新发布的开源模型,拥有80亿和700亿参数规模,预计7月正式发布。该模型具备多模态能力,集成了新的计算机编码功能,将被应用于Meta智能眼镜等设备。与前代Llama2相比,在推理、代码生成和指令跟踪等方面取得显著进步。Meta与谷歌合作整合实时搜索结果到AI助手,提升用户体验。
image.png© 由 站长之家 提供
【AiBase提要:】
✨ Llama3包含80亿和700亿参数规模,具备多模态能力,将应用于Meta智能眼镜等设备。
🚀 Llama3在推理、代码生成和指令跟踪等方面取得显著进步,性能突破性优异。
💡 Meta与谷歌合作整合实时搜索结果到AI助手,提升用户体验。
详情链接:https://www.meta.ai/
2、Midjourney推出新功能Room 用户可在聊天室中一起创作图像
Midjourney最近推出了一个有趣的新功能——Room,为用户提供了一个协作和社交平台,用户可以一起创建和分享图像,并参与实时聊天。Room促进了用户之间的互动和合作,激发灵感和创意交流,丰富了Midjourney的体验。
image.png© 由 站长之家 提供
【AiBase提要:】
🎨 用户可以一起创建和分享图像,在实时聊天中交流想法和反馈。
💬 Room提供了语音和文字聊天功能,方便用户讨论创作过程和分享想法。
🤝 左侧生成的图像可以轻松引用到聊天中,促进用户之间的互动和合作。
详情链接:https://www.midjourney.com/showcase
3、百度文库上线“智能漫画”“智能画本”功能
百度文库在2024年的Create2024百度AI开发者大会上发布了全新的「智能漫画」和「智能画本」功能,为用户提供了一句话生成漫画或画本的创作体验,同时推动了跨模态内容创作的发展。用户可以通过创作作品获取收益,增强亲子交流,以及参与漫画创作比赛和社区交流。百度文库与玄机科技合作,致力于打造全球领先的智能漫画解决方案。
image.png© 由 站长之家 提供
【AiBase提要:】
✨ 用户只需一句话即可创作漫画或画本,实现全链路创作路径的打通。
🎨 百度文库的「智能漫画」功能优化了故事生成,提供多种风格和角色形象选择,创作高质量作品。
📚 「智能画本」功能让父母为孩子创作专属故事,增强亲子交流,提供图文并茂、人声朗读的视频体验。
详情链接:https://wenku.baidu.com/pcactivity/makeAppointment?_wkts_=1713506418546amp;amp
4、AI视频自动剪辑工具Captions 支持对口型、AI自动添加音效等
这款名为Captions的AI视频剪辑工具革命性地简化了视频剪辑流程,提供了一系列自动化功能,增强了视频的视觉和听觉效果。用户可以选择字幕模板、添加音效、贴纸等元素,使视频更具吸引力。Captions还支持AI眼神注视、AI降噪、AI唇形同步和AI调色等功能,使视频更专业精美。其网页版本方便用户使用,未来计划添加自动字幕翻译功能,吸引更多全球用户。
image.png© 由 站长之家 提供
【AiBase提要:】
✨ 革命性视频剪辑工具,自动识别重要片段剪辑成短视频,简化剪辑流程。
🎬 提供自动化功能,增强视觉和听觉效果,用户可选择字幕模板、添加音效、贴纸等元素。
💡 支持AI眼神注视、降噪、唇形同步、调色等功能,提升视频专业度和吸引力。
详情链接:https://top.aibase.com/tool/captions
5、Hugging Face发布iOS应用“Hugging Chat”
Hugging Face最近推出了名为“Hugging Chat”的iOS客户端应用,为用户带来了便捷的使用体验。用户现在可以在手机上访问和使用Hugging Face平台上托管的多个开源模型。该应用响应速度快,为用户提供了顺畅的体验,尽管对中文支持有待提升。这一创新举措再次展示了Hugging Face在语言模型领域的领先地位和对用户需求的关注。
Nginx是一款高性能的HTTP和反向代理服务器,常用于负载均衡、缓存、SSL终止、静态内容服务以及作为应用程序的反向代理。本文将详细介绍如何使用Nginx实现反向代理功能,包括基本配置、高级特性以及示例代码和详尽注释,以帮助您全面理解和应用Nginx的反向代理能力。
一、反向代理概念 反向代理: 反向代理位于客户端和服务器之间,接收客户端的请求,然后根据配置规则将请求透明地转发到后端服务器,并将服务器的响应返回给客户端。客户端感知不到后端服务器的存在,仿佛所有请求都是直接与反向代理交互。
二、Nginx反向代理配置 Nginx的反向代理配置主要在nginx.conf或包含的子配置文件(如sites-enabled/*.conf)中进行。配置主要包括以下部分:
HTTP服务器块 (server): 定义监听的IP地址、端口以及与之关联的域名(server_name)。
位置块 (location): 根据请求URI进行匹配,并定义在此范围内应执行的操作,如反向代理。
反向代理指令 (proxy_pass): 指定请求应被转发到的后端服务器的URL。Nginx将替换匹配到的位置块中的URI,并将其发送到指定的后端服务器。
三、基本反向代理配置示例 Nginx
http { # 基本HTTP服务器配置 server { listen 80; # 监听端口 server_name example.com; # 绑定域名 # 匹配所有请求,将它们转发到后端服务器 location / { proxy_pass http://backend-server:8080; # 后端服务器地址与端口 proxy_set_header Host $host; # 保留原始Host头 proxy_set_header X-Real-IP $remote_addr; # 传递真实客户端IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 传递请求协议(http/https) # 其他可选配置,如缓存、超时、重试等 } } } 代码注释:
listen: 指定Nginx监听的IP地址和端口,这里为标准HTTP端口80。
server_name: 设置服务器块所关联的域名,即客户端请求的域名。
location /: 匹配所有以根路径("
要在 Anaconda 中更新当前环境的 Python 版本,可以按照以下步骤操作:
打开 Anaconda Prompt(Windows)或终端(macOS/Linux)。
首先,你可以激活你想要更新的环境:
conda activate your_environment_name 将 your_environment_name 替换成你的环境名称。
检查可用的 Python 更新版本:
conda search python 这将列出所有可用的 Python 版本。
选择你希望安装的版本,并使用以下命令来更新 Python 版本:
conda install python=x.x.x 将 x.x.x 替换成你选择的 Python 版本。
如果你只是想更新到最新的 Python 版本,可以使用以下命令:
conda update python 这将更新到当前环境下可用的最新 Python 版本。
请注意,在更新 Python 版本时,可能会出现依赖冲突,conda 将尝试解决这些冲突,但有时可能需要手动介入。确保在执行这些操作之前备份你的环境,以便在出现问题时可以恢复到原始状态。
要备份环境,可以使用如下命令导出环境配置文件:
conda env export > environment.yml 若更新后遇到问题,可以使用以下命令还原环境:
conda env create -f environment.yml 上述命令会根据 environment.yml 文件来重建环境。
在C#中,XML文件常被用于存储配置数据、交换数据或作为轻量级的数据持久化方案。以下是关于C#中如何使用XML文件的详细说明,包括创建、读取、更新和删除XML数据的代码示例,以及详尽的注释解释。
1. 创建XML文件 使用XmlDocument创建 Csharp
using System; using System.Xml; namespace CSharpXMLExample { class Program { static void Main(string[] args) { // 创建一个新的XML文档对象 XmlDocument xmlDoc = new XmlDocument(); // 创建XML声明 XmlDeclaration xmlDecl = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null); xmlDoc.AppendChild(xmlDecl); // 创建根元素 XmlElement rootElement = xmlDoc.CreateElement("Root"); xmlDoc.AppendChild(rootElement); // 在根元素下创建子元素并设置属性 XmlElement childElement = xmlDoc.CreateElement("Child"); childElement.SetAttribute("attributeName", "AttributeValue"); childElement.InnerText = "Element Text"; rootElement.AppendChild(childElement); // 保存到文件 xmlDoc.Save("example.xml"); Console.WriteLine("XML file created successfully."); } } } 注释:
XmlDocument是.NET框架中用于表示整个XML文档的对象。CreateXmlDeclaration用于创建XML声明,指定版本、编码和独立性。CreateElement用于创建XML元素,可以设置其名称。SetAttribute用于给元素添加属性。InnerText用于设置元素的文本内容。AppendChild用于将元素添加到父元素下。最后使用Save方法将XML文档保存到指定文件。 使用XElement(LINQ to XML)创建 Csharp
一、背景 许多小伙伴在刷题时会涉及到链表排序,但对于只学习Python的小伙伴,对于链表的数据结构不太熟悉,无法有效理解ListNode的定义及使用。读者在进行LeetCode刷题时也懵懵懂懂,今天就在这里彻底搞清楚。
二、目标 理解python版的链表LisNpde定义掌握ListNode的使用方法 三、链表ListNode 1. ListNode类定义 class ListNode: def __init__(self, x): self.val = x self.next = None 说明:上述代码定义了一个名为 ListNode 的类,它是链表中的一个节点的表示。在链表数据结构中,每个节点通常包含两部分:一个存储数据的值(通常是一个整数、字符或其他数据类型),以及一个指向下一个节点的指针。
class ListNode:这行定义了一个名为 ListNode 的新类。def __init__(self, x):这是 ListNode 类的初始化方法(也称为构造函数)。当你创建一个新的 ListNode 对象时,这个方法会被自动调用。它接受两个参数:self 和 x。self 是一个对实例本身的引用,而 x 是我们要存储在节点中的值。self.val = x :这行将传入的参数 x 的值赋给 self.val。这意味着每个 ListNode 对象都有一个 val 属性,用于存储节点的值。self.next = None:这行初始化 self.next 属性为 None。self.next 是一个指向下一个 ListNode 对象的指针。在创建新的节点时,我们不知道它的下一个节点是什么,所以我们将它初始化为 None。当我们构建链表时,我们会根据需要更新这个指针。 2. ListNode使用 例:构建一个链表:3->5->6->1
# 创建各个节点 node3 = ListNode(3) node5 = ListNode(5) node6 = ListNode(6) node1 = ListNode(1) # 构建链表 node3.
在Nginx中配置跨域请求,通常涉及在服务器的Nginx配置文件中添加或修改特定的指令,以允许来自不同源的Web应用(如JavaScript中的AJAX请求)访问服务器上的资源。以下是一个详细步骤,包含必要的代码段和注释说明:
步骤一:定位和打开Nginx配置文件 通常,Nginx的主配置文件位于以下路径之一:
/etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf 您可能还需要编辑特定站点的配置文件,它们通常位于/etc/nginx/sites-available/目录下,并通过符号链接连接到/etc/nginx/sites-enabled/目录。例如,假设您的站点配置文件名为yourdomain.com.conf,则应编辑该文件。
步骤二:配置跨域支持 在配置文件中找到相应server块,通常用于定义特定域名或IP的服务器配置。若无现有server块,可新建一个。在server块内,根据实际需求选择以下两种方式之一进行跨域配置:
方式一:使用add_header模块直接添加响应头 适用于前端直接访问Nginx服务器上的资源,无需反向代理到其他后端服务。
Nginx
server { listen 80; # 或者其他端口,如443(HTTPS) server_name yourdomain.com; # 替换为您的实际域名 # 允许特定源跨域访问 location /api/ { # 跨域请求的目标路径 add_header 'Access-Control-Allow-Origin' 'http://example.com'; # 允许http://example.com跨域访问 add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS'; # 允许的HTTP方法 add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, X-Requested-With'; # 允许的自定义请求头 add_header 'Access-Control-Allow-Credentials' 'true'; # 允许携带Cookie(如果需要) # 如果仅针对OPTIONS预检请求,则可在此处结束处理,避免进一步转发至后端 if ($request_method = 'OPTIONS') { return 204; } # 其他配置,如代理、静态文件处理等 ... } } 方式二:使用proxy_pass模块配合反向代理 适用于Nginx作为中间层,将跨域请求转发至后端服务,并在响应头中添加跨域信息。
在Java开发中,生成二维码和条形码通常依赖于第三方库,这些库封装了复杂的数据编码算法和图像生成过程,使得开发者只需通过简单易用的API就能快速创建所需条码或二维码。以下将详细介绍两个常用的Java库:ZXing(Zebra Crossing)和QRGen,并附带详尽的代码示例及注释,以帮助理解如何使用它们来生成二维码和条形码。
一、ZXing库 ZXing(发音为“zing”)是一个广泛使用的开源库,专门用于生成、解析一维条码(如Code 128、EAN、UPC等)和二维条码(如QR Code、Data Matrix、Aztec等)。它提供了丰富的API和高度的灵活性。
1. 添加依赖 对于Maven项目,添加以下依赖到pom.xml文件中:
Xml
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.5.1</version> <!-- 使用最新版本 --> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.5.1</version> <!-- 使用最新版本 --> </dependency> 2. 生成二维码 下面是一个使用ZXing生成QR Code的Java代码示例:
Java
import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.util.HashMap; import java.util.Map; public class ZXingQRCodeGenerator { public static void main(String[] args) throws Exception { // 要编码的信息 String qrCodeContent = "
注意:本文采取的各种版本如下所示 操作系统版本 :Windows 10 IDEA版本:2020.03 Tomcat版本:8.5.45 一、报错形式 二、可能的原因 1、项目Tomcat 服务器依赖未导入 2、项目的 SDK 版本选择错误 三、解决方案 1、针对于第一种原因,按如下操作:
其实主要是用到tomcat里面的【jsp-api.jar】和【servlet-api.jar】这两个包
2、针对于第二种原因,按如下操作:
hi,我是程序员王也,一个资深Java开发工程师,平时十分热衷于技术副业变现和各种搞钱项目的程序员~,如果你也是,可以一起交流交流。
今天我们聊聊Java中Byte数组转String的用法~
转换方法概览 在Java中,将byte数组转换为String是常见的操作,尤其是在处理二进制数据和字符串表示之间转换时。以下是Java中几种常用的转换方法。
String(byte[] bytes) 构造器
这是最简单的转换方法,它使用平台默认的字符集来解码byte数组。
byte[] bytes = {72, 101, 108, 108, 111}; // "Hello" in ASCII String str = new String(bytes); System.out.println(str); // 输出: Hello String(byte[] bytes, int offset, int length) 构造器
这个方法允许你指定byte数组的子序列进行转换,通过offset和length参数。
byte[] bytes = new byte[]{72, 101, 108, 108, 111, 114, 108, 100}; // "HelloWorld" in ASCII String str = new String(bytes, 0, 5); // 只转换前5个字符 System.out.println(str); // 输出: Hello String(byte[] bytes, Charset charset) 方法
微信开发文档说明:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/url-scheme.html
1、开发者无需调用平台接口,在MP平台->设置->隐私与安全->明文Scheme拉起此小程序声明后,可自行根据如下格式拼接appid和path等参数,作为明文 URL Scheme 链接。 注意:通过明文 URL Scheme 打开小程序的页面 path ,必须是已经发布的小程序存在的页面,不可携带 query,这里我打开了首页,通过首页接收参数;
2、在H5页面,点击一个按钮跳转小程序,代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"> <title>form</title> <script src="js/jquery-1.10.2.js"></script> </head> <style type="text/css"> *{margin: 0;padding: 0;} .a01{ width: 250px; padding: 8px 10px; border:1px solid #999; font-size: 16px; margin: 20px auto; display: block; background: #036DE7; color: #fff; text-decoration: none; border:none; border-radius: 5px; } </style> <!-- <a class="a01" href="weixin://dl/business/?appid=*APPID*&path=*PATH*&query=*QUERY*&env_version=*ENV_VERSION*">在外部页面或应用中使用URL Scheme--4-11</a> --> <a class="
Spring Boot 的各个版本通常都会支持多个 Java JDK 版本。一般来说,你可以在 Spring Boot 官方文档中找到每个版本所支持的 JDK 版本。然而,需要注意的是,商用 JDK 版本通常需要购买许可证,而开源 JDK 则是免费的。以下是一些常见的 Spring Boot 版本与 JDK 的对应关系:
Spring Boot 2.5.x: 支持 JDK 8、11、17
Spring Boot 2.4.x: 支持 JDK 8、11、15
Spring Boot 2.3.x: 支持 JDK 8、11、14
Spring Boot 2.2.x: 支持 JDK 8、11、13
Spring Boot 2.1.x: 支持 JDK 8、11
Spring Boot 2.0.x: 支持 JDK 8、9、10
商用版本的 JDK 包括 Oracle JDK、IBM JDK、Azul Zulu Enterprise 等。这些商用 JDK 通常包含了一些额外的功能和支持,适用于企业级应用。