目录
Home
Git 基础与常见问题
关于 Git 的相关内容:
- Git 教学 https://gitbook.tw/
- 解决在项目已经添加到git上以后再添加gitignore文件进行文件过滤的步骤 https://blog.csdn.net/dyw442500150/article/details/81436054
常用命令
放弃本地更改
本地所有修改的。没有的提交的,都返回到原来的状态
git checkout
删除未跟踪的文件
删除 untracked files
git clean -f
连 untracked 的目录也一起删掉
git clean -fd
连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd git clean -nf git clean -nfd
C# 操作 SQL Server 数据库
1、概述
ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤:
- 第一,使用SqlConnection对象连接数据库;
- 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用;
- 第三,对SQL或存储过程执行后返回的“结果”进行操作。
对返回“结果”的操作可以分为两类:
- 一是用SqlDataReader直接一行一行的读取数据集;
- 二是DataSet联合SqlDataAdapter来操作数据库。
两者比较:
- SqlDataReader时刻与远程数据库服务器保持连接,将远程的数据通过“流”的形式单向传输给客户端,它是“只读”的。由于是直接访问数据库,所以效率较高,但使用起来不方便。
- DataSet一次性从数据源获取数据到本地,并在本地建立一个微型数据库(包含表、行、列、规则、表之间的关系等),期间可以断开与服务器的连接,使用SqlDataAdapter对象操作“本地微型数据库”,结束后通过SqlDataAdapter一次性更新到远程数据库服务器。这种方式使用起来更方,便简单。但性能较第一种稍微差一点。(在一般的情况下两者的性能可以忽略不计。)
一张十分出名的ADO.NET结构图:
2. 连接字符串的写法
string connectString = "Data Source=.;Initial Catalog=Student;Integrated Security=True";
3. SqlConnection对象
命名空间:
System.Data.SqlClient.SqlConnection;
返回数据库连接对象,参数字符串。实例化“连接对象”,并打开连接
SqlConnection sqlCnt = new SqlConnection(connectString); sqlCnt.Open();
使用完成后,需要关闭“连接对象”
sqlCnt.Close();
4. SqlCommand对象
命名空间:
System.Data.SqlClient.SqlCommand;
SqlCommand对象用于执行数据库操作,操作方式有三种:
SQL语句:
command.CommandType = CommandType.Text;
存储过程:
command.CommandType = CommandType.StoredProcedure;
整张表:
command.CommandType = CommandType.TableDirect;
实例化一个SqlCommand对象
SqlCommand command = new SqlCommand(); command.Connection = sqlCnt; // 绑定SqlConnection对象
或直接从SqlConnection创建
SqlCommand command = sqlCnt.CreateCommand();
常用方法:
command.ExecuteNonQuery(): 返回受影响函数,如增、删、改操作; command.ExecuteScalar():执行查询,返回首行首列的结果; command.ExecuteReader():返回一个数据流(SqlDataReader对象)。
常用操作
- 执行SQL
SqlCommand cmd = conn.CreateCommand(); //创建SqlCommand对象 cmd.CommandType = CommandType.Text; cmd.CommandText = "select * from products = @ID"; //sql语句 cmd.Parameters.Add("@ID", SqlDbType.Int); cmd.Parameters["@ID"].Value = 1; //给参数sql语句的参数赋值
- 调用存储过程
SqlCommand cmd = conn.CreateCommand(); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.CommandText = "存储过程名";
- 整张表
SqlCommand cmd = conn.CreateCommand(); cmd.CommandType = System.Data.CommandType.TableDirect; cmd.CommandText = "表名"
5. SqlDataReader对象
命名空间:
System.Data.SqlClient.SqlDataReader;
SqlDataReader对象提供只读单向数据的功能,单向:只能依次读取下一条数据;只读:DataReader中的数据是只读的,不能修改;相对地DataSet中的数据可以任意读取和修改.
它有一个很重要的方法,是Read(),返回值是个布尔值,作用是前进到下一条数据,一条条的返回数据,当布尔值为真时执行,为假时跳出。如
SqlCommand command = new SqlCommand(); command.Connection = sqlCnt; command.CommandType = CommandType.Text; command.CommandText = "Select * from Users"; SqlDataReader reader = command.ExecuteReader(); //执行SQL,返回一个“流” while (reader.Read()) { Console.Write(reader["username"]); // 打印出每个用户的用户名 }
6. DataSet对象
6.1 SqlDataAdapter
命名空间:
System.Data.SqlClient.SqlDataAdapter;
SqlDataAdapter是SqlCommand和DataSet之间的桥梁,实例化SqlDataAdapter对象:
SqlConnection sqlCnt = new SqlConnection(connectString); sqlCnt.Open(); // 创建SqlCommand SqlCommand mySqlCommand = new SqlCommand(); mySqlCommand.CommandType = CommandType.Text; mySqlCommand.CommandText = "select * from product"; mySqlCommand.Connection = sqlCnt; // 创建SqlDataAdapter SqlDataAdapter myDataAdapter = new SqlDataAdapter(); myDataAdapter.SelectCommand = mySqlCommand; // 为SqlDataAdapter对象绑定所要执行的SqlCommand对象
上述SQL可以简化为
SqlConnection sqlCnt = new SqlConnection(connectString); sqlCnt.Open(); // 隐藏了SqlCommand对象的定义,同时隐藏了SqlCommand对象与SqlDataAdapter对象的绑定 SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt);
属性和方法
myDataAdapter.SelectCommand属性:SqlCommand变量,封装Select语句; myDataAdapter.InsertCommand属性:SqlCommand变量,封装Insert语句; myDataAdapter.UpdateCommand属性:SqlCommand变量,封装Update语句; myDataAdapter.DeleteCommand属性:SqlCommand变量,封装Delete语句。 myDataAdapter.fill():将执行结果填充到Dataset中,会隐藏打开SqlConnection并执行SQL等操作。
6.2 SqlCommandBuilder
命名空间:
System.Data.SqlClient.SqlCommandBuilder。
对DataSet的操作(更改、增加、删除)仅是在本地修改,若要提交到“数据库”中则需要SqlCommandBuilder对象。用于在客户端编辑完数据后,整体一次更新数据。具体用法如下:
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter); // 为myDataAdapter赋予SqlCommandBuilder功能 myDataAdapter.Update(myDataSet, "表名"); // 向数据库提交更改后的DataSet,第二个参数为DataSet中的存储表名,并非数据库中真实的表名(二者在多数情况下一致)。
6.3 DataSet
命名空间:
System.Data.DataSet。
数据集,本地微型数据库,可以存储多张表。
使用DataSet第一步就是将SqlDataAdapter返回的数据集(表)填充到Dataset对象中:
SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt); DataSet myDataSet = new DataSet(); // 创建DataSet myDataAdapter.Fill(myDataSet, "product"); // 将返回的数据集作为“表”填入DataSet中,表名可以与数据库真实的表名不同,并不影响后续的增、删、改等操作
- 访问DataSet中的数据
<code csharp> SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt); DataSet myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "product"); DataTable myTable = myDataSet.Tables["product"]; foreach (DataRow myRow in myTable.Rows) { foreach (DataColumn myColumn in myTable.Columns) { Console.WriteLine(myRow[myColumn]); //遍历表中的每个单元格 } } </code>
- 修改DataSet中的数据
<code csharp> SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt); DataSet myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "product"); // 修改DataSet DataTable myTable = myDataSet.Tables["product"]; foreach (DataRow myRow in myTable.Rows) { myRow["name"] = myRow["name"] + "商品"; } // 将DataSet的修改提交至“数据库” SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter); myDataAdapter.Update(myDataSet, "product"); </code>
注意:在修改、删除等操作中表product必须定义主键,select的字段中也必须包含主键,否则会提示“对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。”错误
- 增加一行
SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt); DataSet myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "product"); DataTable myTable = myDataSet.Tables["product"]; // 添加一行 DataRow myRow = myTable.NewRow(); myRow["name"] = "捷安特"; myRow["price"] = 13.2; //myRow["id"] = 100; id若为“自动增长”,此处可以不设置,即便设置也无效 myTable.Rows.Add(myRow); // 将DataSet的修改提交至“数据库” SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter); myDataAdapter.Update(myDataSet, "product");
- 删除一行
SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from product", sqlCnt); DataSet myDataSet = new DataSet(); myDataAdapter.Fill(myDataSet, "product"); // 删除第一行 <code csharp> DataTable myTable = myDataSet.Tables["product"]; myTable.Rows[0].Delete(); SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(myDataAdapter); myDataAdapter.Update(myDataSet, "product");
- 属性
Tables:获取包含在DataSet中的表的集合。 Relations:获取用于将表链接起来并允许从父表浏览到子表的关系的集合。 HasEroors:表明是否已经初始化DataSet对象的值。
- 方法
Clear清除DataSet对象中所有表的所有数据。 Clone复制DataSet对象的结构到另外一个DataSet对象中,复制内容包括所有的结构、关系和约束,但不包含任何数据。 Copy复制DataSet对象的数据和结构到另外一个DataSet对象中。两个DataSet对象完全一样。 CreateDataReader为每个DataTable对象返回带有一个结果集的DataTableReader,顺序与Tables集合中表的显示顺序相同。 Dispose释放DataSet对象占用的资源。 Reset将DataSet对象初始化。
7. 释放资源
资源使用完毕后应及时关闭连接和释放,具体方法如下:
myDataSet.Dispose(); // 释放DataSet对象 myDataAdapter.Dispose(); // 释放SqlDataAdapter对象 myDataReader.Dispose(); // 释放SqlDataReader对象 sqlCnt.Close(); // 关闭数据库连接 sqlCnt.Dispose(); // 释放数据库连接对象
SQL Server
操作数据库
linux命令目录
来源
主要参考资料为:
- 《鸟哥的linux私房菜》
- linux命令五分钟系列
- 其他互联网资料,google,baidu等搜索引擎
一.文件目录操作 命令
二.文件查找 命令
三.文件和目录属性
四.文件打包上传和下载
五.linux文件权限设置
六.磁盘存储相关
七.性能监控和优化 命令
八.网络 命令
其他 命令
Windows 常用命令
网络
nslookup
命令格式
nslookup -vc target_host dns_ip
这里使用 tcp 连接访问 dns_ip 获取 target_host 的 ip,举例如下
nslookup -vc www.qq.com 8.8.4.4
查询域名DNS记录相关:
- 检测MX记录在本地是否生效
假设域名为xxx.club,打开电脑“开始”——“运行”,输入cmd后按回车键,输入以下命令后按回车键,若出现MX记录值,则代表已生效,否则代表未解析成功。
nslookup -qt=mx xxx.club
- 检测txt记录在本地是否生效
假设域名为xxx.club,打开电脑“开始”——“运行”,输入cmd后按回车键,输入以下命令后按回车键,若出现TXT记录值,则代表已生效,否则代表未解析成功。
nslookup -qt=txt xxx.club
- 检测DNS在本地是否生效
假设域名为xxx.club,打开电脑“开始”——“运行”,输入cmd后按回车键,输入以下命令后按回车键,若可查看nameserver,internet address则代表已生效,否则代表未解析成功。
nslookup -qt=ns xxx.club
- 检测CNAME记录在本地是否生效
假设域名为 abc.com,打开电脑“开始”——“运行”,输入cmd后按回车键,输入以下命令后按回车键,若出现CNAME记录值,则代表已生效,否则代表未解析成功。
nslookup -qt=cname mail.abc.com
tracert
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
命令格式:
traceroute[参数][主机]
命令功能:
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>…][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]
命令实例(在Windows环境下,tracert命令)
tracert www.baidu.com
参考:How to Use TRACERT to Troubleshoot TCP/IP Problems in Windows
cmd
管理员启动命令脚本
@echo off rem 以下↓ -使用管理员权限运行本脚本- >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) pushd "%CD%" CD /D "%~dp0" rem 以上↑ 获取权限成功 echo 开始搞事情 pause
BAT批处理中choice的使用示例
@echo off ::设置CMD窗口字体颜色为0a 在CMD中输入命令 color /? 可查看颜色列表 color 0a ::设置CMD窗口显示模式为100列宽 20行高 MODE con: COLS=100 LINES=20 echo ------------------- echo choice 命令示例 echo ------------------- echo. echo. :: /c按键列表 /m提示内容 /d默认选择 /t等待秒数 /d 必须和 /t同时出现 choice /c abcde /m "请输入" /d e /t 5 ::用户选择的结果会按项目序号数字(从1开始)返回在errorlevel变量中 if %errorlevel%==1 echo 你选择了a if %errorlevel%==2 echo 你选择了b if %errorlevel%==3 echo 你选择了c if %errorlevel%==4 echo 你选择了d if %errorlevel%==5 echo 你选择了e
bat 按键选择
set choice set /p choice=请输入Y继续,或按其他键结束: if /i %choice%==y ( goto entery ) else ( goto enterelse ) exit :entery echo 你选择了y pause exit :enterelse echo 你选择了其他 pause exit
查看端口占用
查看所有端口占用情况
打开命令提示符(建议以管理员身份运行),输入以下命令:
netstat -ano
查看指定端口的占用情况
# Windows 使用: netstat -ano | findstr :10829 # Linux/macOS 使用: lsof -i :10829 或 ss -ltnp | grep 10829
根据PID查找对应进程,通过以下命令查看PID对应的进程名称:
tasklist | findstr "9088"
输出示例:
node.exe 9088 Console 0 16,064 K
结束占用端口的进程:根据PID强制终止进程:
taskkill /F /T /PID 9088
或根据进程名称终止:
taskkill /F /T /IM node.exe
重启网络服务
重启网络服务(仅限Windows)
net stop hns net start hns
评论
I'd suggest this article to everyone curious about this field. Clear descriptions of important ideas. 1xbet
I'd suggest this article to everyone curious about this field. Clear descriptions of important ideas. 1xbet
I completely concur with your main argument. Additionally, I would add that this aspect is equally important. 1xbet
I completely concur with your main argument. Additionally, I would add that this aspect is equally important. 1xbet
mostbet РФ Your fortune awaits! Enjoy exclusive bonuses! Stay tuned for special events! Subscribe to our newsletter for more! Play big! Tell your colleagues about us! Huge thanks for being part of us! Very professional! Our site is fantastic! Following your latest events! Liked and registered! You're an undisputed expert! Will share with on social media! Thank you for your assistance! Very rewarding experience! Your efforts always lead to wins! mostbet играть mostbet Кыргызстан mostbet mostbet kz
mostbet РФ Your fortune awaits! Enjoy exclusive bonuses! Stay tuned for special events! Subscribe to our newsletter for more! Play big! Tell your colleagues about us! Huge thanks for being part of us! Very professional! Our site is fantastic! Following your latest events! Liked and registered! You're an undisputed expert! Will share with on social media! Thank you for your assistance! Very rewarding experience! Your efforts always lead to wins! mostbet играть mostbet Кыргызстан mostbet mostbet kz
mostbet Azərbaycan Hit the jackpot with us! Unlock your fortune! Play with ease on our licensed platform! Don't miss out on huge jackpots! Win big! Share the joy with friends! Grateful for your loyalty! Simply fantastic! Your efforts always result in victories! Eagerly awaiting your upcoming tournaments! Bookmarked your content in my browser! You're the best! Telling everyone! Thanks for the rewarding experience! Very exciting promotion! Your skills always are rewarded! mostbet ru mostbet mostbet today mostbet Киргизия
mostbet Azərbaycan Hit the jackpot with us! Unlock your fortune! Play with ease on our licensed platform! Don't miss out on huge jackpots! Win big! Share the joy with friends! Grateful for your loyalty! Simply fantastic! Your efforts always result in victories! Eagerly awaiting your upcoming tournaments! Bookmarked your content in my browser! You're the best! Telling everyone! Thanks for the rewarding experience! Very exciting promotion! Your skills always are rewarded! mostbet ru mostbet mostbet today mostbet Киргизия
¡La fortuna te acompaña! No pierdas la oportunidad de disfrutar de apuestas seguros y entretenidas en 1Win. 1win
¡La fortuna te acompaña! No pierdas la oportunidad de disfrutar de apuestas seguros y entretenidas en 1Win. 1win
Discover Bet9ja: The Best Betting Experience in Nigeria!
bet9ja old mobile Looking for a simple betting experience? Access the Bet9ja Old Mobile version and experience fast loading times and easy navigation. Bet on soccer, casino games, and virtual races without the complexities of the new version. Start betting in minutes!
old bet9ja
Discover Bet9ja: The Best Betting Experience in Nigeria!
bet9ja old mobile Looking for a simple betting experience? Access the Bet9ja Old Mobile version and experience fast loading times and easy navigation. Bet on soccer, casino games, and virtual races without the complexities of the new version. Start betting in minutes!
old bet9ja
Pinco Casino'da eğlence sizi bekliyor! pinco
Pinco Casino'da hızla kayıt olabilirsiniz. Bonuslu oyunlar ve yüksek ödeme oranları ile oyun deneyiminizi zenginleştirin. pinco
Pinco Casino'da eğlence sizi bekliyor! pinco
Pinco Casino'da hızla kayıt olabilirsiniz. Bonuslu oyunlar ve yüksek ödeme oranları ile oyun deneyiminizi zenginleştirin. pinco
Exciting casino options await you at Pin-Up! At Pin-Up Casino, you'll find engaging slot games, table games, sports wagers, and much more. Play premium games from top providers like NetEnt and Microgaming, and take your chance for huge wins!
pin up casino india Maximizing the ?450000 Welcome Bonus at Pin-Up Casino. The Pin Up casino welcome offer of up to ?450000 is generous, but how can you take full advantage of it? Have you received this offer yet? Let us know your strategies and tips for transforming the bonus into huge payouts. Let’s talk about how to make the most out of your first top-up!
Exciting casino options await you at Pin-Up! At Pin-Up Casino, you'll find engaging slot games, table games, sports wagers, and much more. Play premium games from top providers like NetEnt and Microgaming, and take your chance for huge wins!
pin up casino india Maximizing the ?450000 Welcome Bonus at Pin-Up Casino. The Pin Up casino welcome offer of up to ?450000 is generous, but how can you take full advantage of it? Have you received this offer yet? Let us know your strategies and tips for transforming the bonus into huge payouts. Let’s talk about how to make the most out of your first top-up!
Use Taya365 bonuses for maximum victories taya365 app Uncover the world of online gaming with Taya365 and enjoy top-notch live games. Register today to receive huge rewards and bonuses! Taya365 and enjoy a world of adventure. Whether you're into sports betting, there's something to enjoy. Get started and win big! taya365 app download
Use Taya365 bonuses for maximum victories taya365 app Uncover the world of online gaming with Taya365 and enjoy top-notch live games.
Register today to receive huge rewards and bonuses! Taya365 and enjoy a world of adventure. Whether you're into sports betting, there's something to enjoy. Get started and win big! taya365 app download
دائماً أراهن في 1xbet Sports Betting Egypt – مضمون ومربح! أوصي به الآن! Online betting in Egypt
دائماً أراهن في 1xbet Sports Betting Egypt – مضمون ومربح!
أوصي به الآن! Online betting in Egypt
Mostbet জুয়া – বিশাল প্ল্যাটফর্ম ভার্চুয়াল গেমস জন্য। Mostbet BD
Mostbet জুয়া – বিশাল প্ল্যাটফর্ম ভার্চুয়াল গেমস জন্য। Mostbet BD
Онлайн казино Mostbet – кең ауқымды мүмкіндіктер ұсынады спорттық ставкалар сүйінушілеріне.
mostbet kazakhstan
Онлайн казино Mostbet – кең ауқымды мүмкіндіктер ұсынады спорттық ставкалар сүйінушілеріне. mostbet kazakhstan
На данном сайте всегда доступна актуальная ссылка на мега мориарти, которая обновляется регулярно, чтобы вы могли без проблем попасть на нужную платформу.
На данном сайте всегда доступна актуальная ссылка на мега мориарти, которая обновляется регулярно, чтобы вы могли без проблем попасть на нужную платформу.
why 1xbet is the best online casino site for UAE players Thank you for your openness and openness! �� 400 Bad Request
why 1xbet is the best online casino site for UAE players Thank you for your openness and openness! �� 400 Bad Request
دائماً أراهن في 1xbet مصر – مضمون ومثالي! جربه بنفسك الآن! 1xBet تسجيل
دائماً أراهن في 1xbet مصر – مضمون ومثالي! جربه بنفسك الآن! 1xBet تسجيل
جربت 1xbet Mobile App Egypt – يتميز بواجهة ممتازة، السحب دون مشاكل!
1xBet عروض ترويجية
جربت 1xbet Mobile App Egypt – يتميز بواجهة ممتازة، السحب دون مشاكل!
1xBet عروض ترويجية
هل تحتاج إلى أشهر شركة رهان؟ 1xbet شركة الرهان يقدم أقوى الفرص ودفعات سريعة! Jogar FortuneRabbit sempre foi tão simples.
هل تحتاج إلى أشهر شركة رهان؟ 1xbet شركة الرهان يقدم أقوى الفرص ودفعات سريعة!
Jogar FortuneRabbit sempre foi tão simples.
دائماً أشارك في 1xbet Sports Betting Egypt – مريح ومربح! أنصح به الآن! 1xBet in Egypt
دائماً أشارك في 1xbet Sports Betting Egypt – مريح ومربح! أنصح به الآن! 1xBet in Egypt
هل تبحث عن أقوى كازينو أونلاين؟ 1xbet Egypt يقدم أفضل العروض ودفعات سريعة! 1xBet تطبيق الجوال
هل تبحث عن أقوى كازينو أونلاين؟ 1xbet Egypt يقدم أفضل العروض ودفعات سريعة! 1xBet تطبيق الجوال
دائماً أراهن في 1xbet مصر – مريح ومثالي!
أنصح به الآن! Apostas em futebol
دائماً أراهن في 1xbet مصر – مريح ومثالي! أنصح به الآن! Apostas em futebol