转战C#---day2
- 定义数组:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){int[] ages1 = {3240,242,34};Console.WriteLine(ages1[2]);int[] ages2;ages2 = new int[10];Console.WriteLine(ages2[2]);int[] ages3;ages3 = new int[] {1,2,3};Console.WriteLine(ages3[2]);int[] ages4;ages4 = new int[4] { 1, 2, 3, 4 };Console.WriteLine(ages4[2]);int[] intArray = new int[9];//0char[] charArray = new char[9];//0float[] floatArray = new float[9];//0string[] stringArray = new string[9];//nullconst int arraySize = 5;//const 必须要有int[] myIntArray = new int[arraySize] {1,2,5,4,9}; }}
}
- 遍历数组:三大循环+foreach();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){int[] intArray = {0,1,2,3,4,5,6,7,8,9};//0for (int i = 9; i >= 0; i--){Console.Write(intArray[i] + " ");}Console.WriteLine();foreach (int temp in intArray)//只能正序输入和读取{Console.Write(temp + " ");}Console.WriteLine();string str = Console.ReadLine(); ;foreach (char ch in str){if (ch < '0' || ch > '9'){Console.Write(ch + " ");}}Console.WriteLine();Console.ReadKey();}}
}
- 多维数组:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){double[,] hillHeight = new double[3, 4];double[,] hillHeight1 = { {1,2,3,4},{2,3,4,5},{3,4,5,6} };foreach (double height in hillHeight1){Console.Write("{0} ",height);}Console.WriteLine();Console.ReadKey();}}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace test
{class Program{static void Main(string[] args){//一维数组定义与初始化 int[] one1 = new int[] { 3, 2, 1 };//第一种方式 int[] one2 = { 3, 2, 1 }; //第二种方式 int[] one3; //第三种方式 one3 = new int[] { 3, 2, 1 };//二维数组定义与初始化 //不规则二维数组 int[][] array = new int[2][];array[0] = new int[3];array[0][1] = 11;array[0][2] = 12;array[1] = new int[] { 1, 2, 3, 4, 5 };//或int[][] array = new int[2][] { new int[] {0,11,12 }, new int[] {1,2,3,4,5 }}; Console.WriteLine("不规则二维数组: ");for (int i = 0; i < array.Length; i++){foreach (int j in array[i]){Console.Write(j + " ");}Console.WriteLine();}//固定长度的矩阵数组 int[,] arrray1 = new int[2, 5] { { 9, 9, 9, 9, 0 }, { 0, 0, 9, 0, 0 } };Console.WriteLine("规则二维数组输出方法一: ");for (int ii = 0; ii < 2; ii++) //输出方法一 {for (int j = 0; j < 5; j++){Console.Write(arrray1[ii, j] + " ");}Console.WriteLine();}Console.WriteLine("规则二维数组输出方法二: ");foreach (int j in arrray1)//arrray.length=10; //输出方法二 {Console.Write(j + " ");}Console.WriteLine();int[,] Array = new int[3,5];for (int i = 0; i < 3; i++){for (int j = 0; j < 5; j++){Array[i,j] = Convert.ToInt32(Console.ReadLine());}}for (int i = 0; i < 3; i++)// 输出方法三 {for (int j = 0; j < 5; j++){Console.Write(Array[i, j]);}Console.WriteLine();}Console.WriteLine();Console.ReadLine();}}
}
- 字符数组:
一个字符串可以当做一个字符数组,str[i]访问某个字符元素,但要注意的是字符数组只能访问不能修改!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){string name = "y y x";//name = "yyx" + "123";//name = "" + 45;//"45"//一个字符串可以当做一个字符数组,str[i]访问某个字符元素,但要注意的是字符数组只能访问不能修改!Console.WriteLine(name.Length);for(int i = 0; i < name.Length; i++){Console.WriteLine(name[i]);}for (int i = name.Length-1; i >=0 ; i--){Console.WriteLine(name[i]);}Console.ReadKey();}}
}
- 字符串的操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){string name = " Yin Yu Xian ";string str = name.ToLower();//方法不改变原字符串,只是定义了一个新的字符串。Console.WriteLine(name+"-"+str);string str1 = name.ToUpper();//可用于验证码不区分大小写。Console.WriteLine(name + "-" + str1);string str2 = name.Trim();//可用于对用户名的验证有无前后空格并吃掉前后空格。//TrimeStart(),只去前面的空格。TrimeEnd(),只去后面的空格。Console.WriteLine(name + "-" + str2);name.Split();Console.ReadKey();}}
}
- 字符串的分割-Split();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){string name = "YinYuXian,ZhangSan,LiShi";string[] strArray=name.Split(',');foreach(string str in strArray){Console.WriteLine(str);}Console.ReadKey();}}
}
- C#里面的StringBuilder工具:频繁使用字符串拼接的时候可以用StringBuilder。
简介:
StringBuilder 最早出现在JDK1.5,是一个字符拼接的工具类,它和StringBuffer一样都继承自父类AbstractStringBuilder,在AbstractStringBuilder中使用char[] value字符数组保存字符串,但是没有用final关键字修饰,所以StringBuilder是可变的。
性能:
StringBuilder 对字符串的操作是直接改变字符串对象本身,而不是生成新的对象,所以新能开销小。
与StringBuffer相比StringBuilder的性能略高(15%~30%),StringBuffer为保证多线程情况下的安全性(synchronize加锁)而牺牲了性能,以时间来换取安全。而StringBuilder则没有保证线程的安全,从而性能略高于StringBuffer。
使用场景:
频繁使用字符串拼接的时候可以用StringBuilder(推荐)或者StringBuffer。
用法:
一、StringBuilder对象的创建(下文builder是StringBuilder创建出来的对象)
1.常规创建
StringBuilder builder = new StringBuilder();
2.在创建的时候添加初始字符串
StringBuilder builder = new StringBuilder("abc");
3.在创建的时候添加初始长度
StringBuilder builder = new StringBuilder(初始长度);
这里需要注意的是如果在StringBuilder的对象创建时没有指定长度,StringBuilder对象会自动生成一个16位的字符数组。
二、StringBuilder对象的方法
数据的种类可以有:
Object
String
StringBuffer
CharSequence
char[]
boolean
char
int
long
float
double
1.builder.append() //作用:追加数据。
builder.append("just");
在加入新字符串时,不会在内存中新开辟字符串空间,只是给原有的字符串尾部加入新字符串。
2.builder.insert()//作用:向指定位置插入数据。
builder.insert(0, "you");
每次加入新字符串之后都会改变字符串中每个字符的地址,插入后原始指定位置的数据向后移。
3.builder.deleteCharAt()//作用:删除指定位置的数据。
builder.deleteCharAt(index);
4.builder.delete( )//作用:删除指定范围的数据左闭右开。
builder.delete(beginIndex, endIndex);
范围:从开始位置到结束位置的前一个位置。
5.builder.toString()//作用:将对象中的数据以字符串的形式返回。
6.builder.reverse()//作用:将对象中的数据反转。
注意
原始数组长度不够时,在传入新字符串时会增加数组长度,并将原来的数据传到新数组中,反复添加遇到这种情况时会对内存造成损耗。为了避免这种情况,可以在创建时提前给StringBuilder对象设置长度:
StringBuilder builder = new StringBuilder.//(初始长度)。
有关字符串的拼接,普通拼接和使用工具StringBuilder的对比:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Relay_Sin_Com
{class Program{static void Main(string[] args){string str = "";for(int i = 0; i < 10; i++){str += "a";}Console.Write(str + " ");Console.WriteLine();Console.ReadKey();//StringBuilder builder = new StringBuilder();StringBuilder builder = new StringBuilder(10);Console.Write(builder.Length);//输出为0。Console.WriteLine();Console.ReadKey();for (int i = 0; i < 10; i++){builder.Append("b");}Console.Write(builder + " ");Console.WriteLine();Console.ReadKey();str = builder.ToString();Console.Write(str + " ");Console.WriteLine();Console.ReadKey();}}
}
- Substring C#中截取字符串主要借助Substring这个函数。
(1)string arr.Substring(int startIndex,int length);
说明:如果传入的参数是两个长整参数,第一个参数指字符串的起始位置,也就是开始截取的位置,第二个是截取的长度。
(2)string arr.Substring(int startIndex);
说明:如果传入的参数为一个大于等于0的长整数,则以这个长整数的位置为起始位置,截取剩余全部字符为子字符串。
代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication1
{class SubStringTest{static void Main(string[] args) {string oriString = "Hello,Kitty!"; //原始字符串string subString = ""; //截取后的字符串//输出:HesubString = oriString.Substring(0, 2); //从第一个字符开始,截取2个字符Console.WriteLine(subString); //输出:llosubString = oriString.Substring(2,3); //从第一个‘l’开始,截取3个字符 Console.WriteLine(subString); //输出:Kitty!subString = oriString.Substring(6); //从第七个字符开始截取,到原始字符串结束 Console.WriteLine(subString); } }
}
- 深入理解C# 中 “$” 符号的作用以及用法
一、C#中$
的作用
谈及这个$,其实它是C#6.0语法中模板字符串的一种写法,什么是模版字符串?还记得你们用过的格式化字符串吗?string.Format() 这个方法,是最常用的方法之一。
那$又是什么呢?它是为了替代string.format()的,原先赋值需要占位符和变量,当需要拼接多个变量会造成语句过长等不易理解问题。
KaTeX parse error: Expected 'EOF', got '#' at position 31: …mat(),可以把字符串中的C#̲变量{}包含起来达到识别C#变…"{id}“;也支持表达式,使用"(你的表达式)";或者方法的执行,使用"{(你的表达式)}";或者方法的执行,使用"(你的表达式)";或者方法的执行,使用”{(方法)}"。
二、C#中KaTeX parse error: Expected 'EOF', got '#' at position 6: 的用法 C#̲ 中符号的作用是C#6.0中新出现的一个特性,也即是字符串的拼接优化。
语法格式:$“string {参数}”
解释:以$符号开头开始字符串,其中以{}来进行传参,可以多个参数累加。
例如:var results = $“Hello {Name}”;
三、关于$的示例讲解
var str = string.Format(“我的名字叫{1},我今年{1}岁。”, “张三”, 23);
Console.WriteLine(str);
这是我们使用string.format()的写法,下来我们使用$改写一下。
var str = $“我的名字叫{“张三”},我今年{23}岁。”;
Console.WriteLine(str);
通过上面这个案例,我们发现,现在使用$代码简洁,可读性强。
可能有些朋友觉得效果不太明显,那么请看下面这个案例:
var name = "张三";
var age = 23;
var sex = "男";
var message = string.Format("我叫{0},我的年龄为{1},我的性别是{2}", name, age, sex);
var show = $"我叫{name},我的年龄为{age},我的性别是{sex}";
Console.WriteLine(message);
Console.WriteLine(show);
Console.ReadKey();
如果还感受不到,那么请你试想一下:如果我们要操作的数据很多,假设它是一个多条的SQL语句,那么在长篇字符串中定位索引,那是不是很累啊!纵使你写对了索引(没写对还得一个个检查、修改),好不容易完工了。但下一个需求让你加两个参数,你的索引位置又得变,还得在万码丛中查找你原来索引在哪里的,是不是很恶心?
哈哈,不用沮丧,此时C#6.0模版字符串就可以闪亮登场啦!
怎么用?总结一下,就是在字符串的双引号前面加一个 $ 符号,在需要使用变量的地方用{变量}就可以了。这个在我们上面的案例中,也有体现。
四、关于$的补充知识
正如我们上面所说,{变量}表示在字符串中输出变量的值,当然{}中间也可以是一个表达式或者方法的执行。
$“我的姓名是{GetName()}”;
$“name的类型是{name.GetType()}”;
如上,这样就很方便,帅气了!那么变量和索引可以混用吗?当然也是可以的,如下:
var name = "张三";
var age = 23;
var sex = "男";
var show = string.Format($"我是{name},今年{age},家住在{{0}}", sex);
Console.WriteLine(show);
要注意的是需要用两次大括号 {{}} 将索引包含起来,也就是这样的形式,{{索引}}。因为一次是输出表达式,两次就转义成普通的占位符了,这点一定要注意!
- c#——var
var 是c#语言新增的一种方式,可用于变量名前,让变量通过赋值来自动匹配数据类型。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace test
{class Program{static void Main(string[] args){const float interestRate = 0.35f;int money = 7;string name = "令狐冲";float moneyAll = money * interestRate + money;var a = 12;var my = "gouyizhou";var b = 1.15;Console.WriteLine(money + moneyAll + " " + name);Console.WriteLine(a + b +" "+my);Console.ReadKey();}}
}
上面代码中通过 var a = 12;此时并未声明a 的数据类型是int,而是通过我们后面赋值的12系统自动匹配他是int类型。同样下面的 var my = “gouyizhou”,使得系统匹配my的数据类型是string。var b = 1.15也是同理。
相关文章:
转战C#---day2
定义数组: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Relay_Sin_Com {class Program{static void Main(string[] args){int[] ages1 {3240,242,34};Console.WriteLine(age…...
【vue2源码学习】— diff
vue更新还是调用了 vm._update 会进入下面这一步 vm.$el vm.__patch__(prevVnode, vnode) 又回到了patch方法 会通过sameVnode 判断是不是相同的vnode// patch代码片段 const isRealElement isDef(oldVnode.nodeType) if (!isRealElement && sameVnode(oldVnode, vno…...
更换 Linux 自带的 jdk 环境
如下,我要把 Linux 默认的 jdk 版本换成我自己的 jdk 版本。 Linux 自带的 jdk 环境: 要更换的 jdk 环境: 1、切换到 root 用户进行操作; 2、在根目录下创建一个 /export/server/ 目录; [rootcentos /]# mkdir -p /e…...
MySQL8读写分离集群
文章目录前言MySQL读写分离原理搭建MySQL读写分离集群MySQL8.0之前MySQL8.0之后后记前言 上一期介绍并实现了MySQL的主从复制,由于主从复制架构仅仅能解决数据冗余备份的问题,从节点不对外提供服务,依然存在单节点的高并发问题 所以在主从复…...
蓝桥冲刺31天之第七天
目录 A:三角回文数 B:数数 C:数组切分 D:倍数问题 一星陨落,黯淡不了星空灿烂; 一花凋零,荒芜不了整个春天。 如果命运是世界上最烂的编剧, 你就要争取做人生最好的演员。 即使生…...
【Python百日进阶-Web开发-Vue3】Day550 - Vue3 商城后台 10:Veux4-02基本使用
文章目录 二、Vuex的基本使用2.4 Mutations 应用 :同步更新state2.4.1 `src/store/index.js`2.4.2 `src/views/index.vue`2.5 Module的应用:分模块2.5.1 `src/store/modules/product.js`2.5.2 `src/store/modules/cart.js`2.5.3 `src/store/index.js`2.5.4 `src/views/index.…...
ESP32驱动-红外寻迹传感器驱动
红外寻迹传感器驱动 1、红外寻迹传感器介绍 红外寻迹传感器具有一对红外线发射管与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,输出接口会输出一个数字信号(低电平或高电平,取决于电路…...
【TS】TypeScript泛型 T 的用法详解
一、什么是泛型? 泛型,从字面上理解,泛型就是一般的,广泛的的意思。 TypeScript中泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体类型,而是在使用的时候再指定类型…...
Vue 3.0 单文件组件 【Vue3 从零开始】
#介绍 在很多 Vue 项目中,我们使用 app.component 来定义全局组件,紧接着用 app.mount(#app) 在每个页面内指定一个容器元素。 这种方式在很多中小规模的项目中运作的很好,在这些项目里 JavaScript 只被用来加强特定的视图。但当在更复杂的…...
北邮22信通:你是不是在looking for……那串代码?(2)第三章单链表
相信有了第二章顺序表的基础,小伙伴们学习第三章链表应该会轻松一点吧 目录 类模板下的单链表 1.1书上干净完整代码(无增改、适合自己动手实验) 1.2对书上代码的完善和对一些问题的验证和解释代码 1.补全一个函数: 2.this指…...
蓝库云|告诉你传统产业该如何进行数字化转型
在后疫情时代下,企业该如何在面临生存危机的情形下,投入「数字化转型」、提升公司竞争力,已成为许多公司的当务之急,但到底什么是数字化转型呢?传统产业又如何着手进行数位转型? 数字化转型是什么…...
121.(leaflet篇)leaflet结合echarts4迁徙图
听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html>...
链表及其基本操作
1.单链表:1.1定义/性质:链表是线性表的链式存储方式。单链表通过指针线性遍历,删除/增加节点时间复杂度为O(1),访问节点时间复杂度为O(n)。单链表分为带头结点和不带头结点两种,带头结点是为了方便统一操作(…...
【Java基础 下】 031 -- 反射 动态代理
一、什么是反射? 换句话说就是(从类里拿出来) 可以获取到:(利用反射,我们可以获取到类中所有的东西) 获取是先从class字节码文件中获取的 二、获取class对象的三种方式 三种方式也对应了三种阶段…...
springcloud3 GateWay
一 GateWay 1.1 GateWay的作用 gateway相当于所有服务的门户,将客户端请求与服务端应用相分离,客户端请求通过gateway后由定义的路由和断言进行转发,路由代表需要转发请求的地址,断言相当于请求这些地址时所满足的条件ÿ…...
万字长文:Stable Diffusion 保姆级教程
万字长文:Stable Diffusion 保姆级教程 2022年绝对是人工智能爆发的元年,前有 stability.ai 开源 Stable Diffusion 模型,后有 Open AI 发布 ChatGPT,二者都是里程碑式的节点事件,其重要性不亚于当年苹果发布iPhone&a…...
WAMP搭建靶场
WAMP W:windows A:apache M:mysql,mariadb P:php 1. 下载phpstudy Windows版phpstudy下载 - 小皮面板(phpstudy) 2. 安装phpstudy 默认安装即可 3. 下载DVWA靶场 https://github.com/digininja/DVWA/archive/…...
Uipath Excel 自动化系列13-ForEachExcelSheet(遍历Sheet)
活动描述 ForEachExcelSheet(遍历Sheet):遍历Excel中的工作表,可以对 Excel 工作簿中的每个工作表重复一个或多个活动,该活动需与Use Excel File 活动选择的 Excel 文件一起使用。 使用场景:当处理包含多张工作表的 Excel 文件,…...
JDBC快速入门
🍎道阻且长,行则将至。🍓 目录 一、JDBC入门 1.概述 (1)JDBC本质 (2)JDBC好处 2.快速入门 (1)步骤 (2)实践 (3)两个小问题 一、JDBC入门 1.概述 JDBC就是使用Java语言操作关系型数据库的一套API,全称:( Java…...
蓝桥杯三月刷题 第六天
文章目录💥前言😉解题报告💥星期计算🤔一、思路:😎二、代码:💥考勤刷卡🤔一、思路:😎二、代码:💥卡片🤔一、思路:😎二、代…...
分享几个常用的运维 shell 脚本
今天咸鱼给大家分享几个不错的 Linux 运维脚本,这些脚本中大量使用了 Linux 的文本三剑客: awkgrepsed 建议大家这三个工具都要了解并最好能够较为熟练的使用 根据 PID 显示进程所有信息 根据用户输入的PID,过滤出该PID所有的信息 #! /b…...
分隔链表(精美图示详解哦)
全文目录引言分隔链表题目描述与思路实现总结引言 前面,我们熟悉了管理链表中的数据的方法,也了解了几道与链表相关的题目: 戳我看单链表详解哦 在本篇文章中,我们将再了解一道题目:分隔链表: 分隔链表OJ…...
腾讯乐固加固+app签名+多渠道打包
一、腾讯乐固-基础版免费加固-上传未加固的app-下载加固包(加固成功会清除原apk的签名信息和多渠道信息)https://console.cloud.tencent.com/ms/reinforce/list/basic二、使用AndroidStudio自带工具apksigner对apk重新签名找到apksigner.bat文件 路径D:\…...
Spring Boot整合Redis缓存(Lettuce)
spring-boot-demo-cache-redis 此 demo 主要演示了 Spring Boot 如何整合 redis,操作redis中的数据,并使用redis缓存数据。连接池使用 Lettuce。 Lettuce官网 pom.xml <!-- data-redis --> <dependency><groupId>org.springframework…...
Feign
而Feign则会完全代理HTTP请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。Feign整合了Ribbon和Hystrix,可以让我们不再需要显式地使用这两个组件。 Feign具有如下特性: 支持可插拔的HTTP编码器和解码器; 支持Hystrix和…...
【代码训练营】day54 | 392.判断子序列 115.不同的子序列
所用代码 java 判断子序列 LeetCode 392 题目链接:判断子序列 LeetCode 392 - 简单 思路 这题和之前求最长公共子序列一样。 dp[i] [j]:以i-1为结尾的字符串s 和 以j-1为结尾的字符串t 组成的相同子序列的长度 递推公式: 相等dp[i][j] d…...
【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)
💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的TMP中文输入显示乱码的解决方式 创建 TextMeshPro 中文字体遇到的问题描述解决方式Font Asset Creator 面板扩展中文字体文本遇到…...
JAVA开发(JAVA中的异常)
在java开发与代码运行过程中,我们经常会遇到需要处理异常的时候。有时候是在用编辑器写代码,点击保存的时候,编辑器就提示我们某块代码有异常,强制需要处理。有时候是我们启动,运行JAVA代码的时候的,日志里…...
lesson8-Linux多线程
Linux线程概念 线程在进程内部执行,是OS调度的基本单位OS是可以做到让进程进行资源的细粒度划分的物理内存是以4kb为单位的我们的.exe可执行程序本来就是按照地址空间的方式进行编译的页表映射 - 详细图 理解线程 线程在进程的地址空间内运行, 进程内部具有多个执行流的,而线程…...
python的django框架从入门到熟练【保姆式教学】第四篇
在前三篇博客中,我们介绍了Django的模型层、数据库迁移、视图层和URL路由。本篇博客将介绍Django的模板层,讲解如何使用模板来创建美观的Web页面。 模板层(Template) Django的模板层是Django应用程序的另一个核心组件。模板是一…...
Codeforces Round 852 (Div. 2)
A Yet Another Promotion 题意:要买n千克物品,第一天的价格为a,第二天的价格为b。第一天有促销活动,每买m千克物品,可以额外获得1千克物品。问最少花费多少可以获得至少n千克的物品。 思路:分类讨论&…...
【PTA Data Structures and Algorithms (English)】7-2 Reversing Linked List
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K3, then you must output 3→2→1→6→5→4; if K4, you must output 4→3→2→1→5→6. Input Specif…...
Jetpack Compose 学习汇总
关于 Jetpack Compose 的学习本想只是简单的快速学习一下,结果万万没想到,竟然一下子折腾了好几个月。。。 下面将之前记录的 Jetpack Compose 相关的学习博文进行一个汇总链接整理,方便我以后自己查阅,也希望能帮到一些有正在学…...
【OpenCv】c++ 图像初级操作 | 图像灰度化
文章目录一、图像1、图像信息2、图像种类1)二值图像:2)灰度图:3)彩色图:二、图像转化1、分离彩色图三个通道2、图像灰度化处理一、图像 1、图像信息 Q:图像在计算机中怎么储存? A:…...
VIT(vision transformer)onnx模型解析
背景:transformer在CV领域的应用论文下载链接:https://arxiv.org/abs/2010.11929Pytorch实现代码: pytorch_classification/vision_transformer(太阳花的小绿豆博主实现的代码)有一些大神在研究关于CNNtransformer或者纯用transformer实现。原…...
红黑树的介绍和实现
文章目录1. 红黑树1.1 红黑树的概念1.2 红黑树的性质1.3 红黑树节点的定义1.4 红黑树的插入1.5 红黑树的验证1.6 红黑树与AVL树的比较1. 红黑树 1.1 红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以…...
C/C++每日一练(20230310)
目录 1. 用栈实现队列 ★★ 2. 单词搜索 II ★★★ 3. 直线上最多的点数 ★★★ 1. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: v…...
Go语言基础知识
常量//定义方式 const a int12;//指定变量类型 const b12;//不指定变量类型,由编译时go自动确认 const(//多行定义方式a12b23 ) //说到const,不得不得不提到的一个参数iota,初始值为0,在用const多行定义的方式中, 如果第一行定义了…...
案例06-没有复用思想的接口和sql--mybatis,spring
目录一、背景二、思路&方案问题1优化问题2优化三、总结四、升华一、背景 写这篇文章的目的是通过对没有复用思想接口的代码例子优化告诉大家,没有复用思想的代码不要写,用这种思维方式和习惯来指导我们写代码。 项目中有两处没有复用思想代码&#…...
如何将项目部署到服务器:从选择服务器到维护应用程序的全流程指南
将项目部署到服务器是一个重要的技能,对于开发人员来说,它是必不可少的。在本文中,我将介绍一些关于如何将项目部署到服务器的最佳实践。一、选择服务器在部署项目之前,你需要先选择一个适合你的服务器。如果你已经有一个可用的服…...
怎么做才能不丢消息?
现在主流的消息队列产品都提供了非常完善的消息可靠性保证机制,可以做到在消息传递的过程中,即使发生网络中断或者硬件故障,也能确保消息的可靠传递、不丢消息。 绝大部分丢消息的原因都是由于开发者不熟悉消息队列,没有正确使用…...
前端基础(十六)_数组对象
数组对象 1、创建数组 // 字面量创建const arr [1, 2, 3, 4, 5, 6]// 构造函数创建const arr2 new Array(1, 2, 3, 4, 5, 6)const arr3 Array(1, 2, 3, 4, 5, 6)2.push (从数组末尾添加元素) a.数组.push(要添加进数组的数组项) b.作用:将要添加的数组项 添加到…...
数据结构-带头双向循环链表
前言: 链表有很多种,上一章结,我复盘了单链表,这一章节,主要针对双链表的知识点进行,整理复盘,如果将链表分类的话,有很多种,我就学习的方向考察的重点,主要…...
3 问 6 步,极狐GitLab 帮助企业构建高效、安全、合规的 DevSecOps 文化
本文来源:about.gitlab.com 作者:Vanessa Wegner 译者:极狐(GitLab) 市场部内容团队 🔒 安全为何重要?此前,我们分享了: 1. 2023年DevOps发展趋势👉重磅!GitLab 提出五大…...
SPA(单页应用)知多少
单页面应用程序将所有的活动局限于一个Web页面中,在该Web页面初始化时加载相应的HTML、JavaScript 和 CSS。一旦页面加载完成,单页面应用不会因为用户的操作而进行页面的重新加载或跳转。取而代之的是利用 JavaScript 动态的变换HTML的内容,从…...
Selenium实战【远程控制】【JAVA爬虫】
简介 Selenium RemoteWebDriver是Selenium WebDriver的一个扩展,它可以将测试运行在远程机器上的浏览器中。 使用RemoteWebDriver,可以在本地机器上编写测试脚本,然后将测试请求发送到远程机器上的浏览器中执行。这使得测试可以在多个不同的机器上并行运行,从而加快测试的…...
图片动画化应用中的动作分解方法
作者 | FesianXu 前言 最近基于AI的换脸应用非常的火爆,同时也引起了新一轮的网络伦理大讨论。如果光从技术的角度看,对于视频中的人体动作信息,通常可以通过泰勒展开分解成零阶运动信息与一阶运动信息,如文献[1,2]中提到的&…...
我又和redis超时杠上了
背景 经过上次redis超时排查,并联系云服务商解决之后,redis超时的现象好了一阵子,但是最近又有超时现象报出,但与上次不同的是,这次超时的现象发生在业务高峰期,在简单看过服务器的各项指标以后࿰…...
一文带你吃透MySQL数据库!
文章目录1. 索引2. 事务3. 存储引擎4. 锁机制5. MySQL其他知识点文章字数大约1.27万字,阅读大概需要42分钟,建议收藏后慢慢阅读!!!1. 索引 为什么使用索引 通过创建唯一性索引,可以保证数据库表中每一行数据…...
[学习笔记] 2. 数据结构
数据结构视频地址:https://www.bilibili.com/video/BV1uA411N7c5 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中。 比如:列表、集合与字…...