经常容易忘记篇

 

一、访问修饰符汇总

1)public  所属类的成员以及非所属类的成员都可以访问 

 

2)internal  当前程序集可以访问 (可以单纯的指该项目下)一般修饰类、变量、方法和属性 ,其他项目将无法引用

程序集(通俗):一个解决方案,里面可以包括多个程序集,程序集简单一点理解就是程序的集合,里面可以包括很多类

比如,你写了一个记录日志的DLL,任何项目只要引用此DLL就能实现记录日志的功能,这个DLL文件的程序就是一个程序集。DLL文件的程序就是一个程序集。
3)private 私有访问。只限于本类成员访问,子类,实例都不能访问。(被private修饰的字段,能够在本类中使用,在实例化new里不能被调用,现在终于明白为什么要用属性来控制私有字段了,属性是公开的)
4)protected 保护访问,只限于本类和子类访问(在本类中能够随意使用,和pravite有些相似,但是在其他类中要是用的话不能通过基类中的实例对象访问,只能通过继承类的实例对象进行访问),实例不能访问
二、知识补充:
 
构造函数与其他方法的区别
  1.构造函数的命名必须和类名完全相同;而一般方法则不能和类名相同.
  2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.
  3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用.
  4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略不去Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般方法不存在这一特点 
它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.
  3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用.
  4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略不去Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般方法不存在这一特点 
简单的来说构造函数就是用来创建对象用的,说的专业些叫实例化对象实例化对象
<span style="color:#444444">
</span>
<span style="color:#444444">其他知识点</span>
<span style="color:#444444">1.在引用下右键添加引用当前的项目,如果该项目的类被internal修饰将无法被引用到</span>
<span style="color:#444444">2.被Static修饰的类将无法被实例化</span>
<span style="color:#444444">3.命名空间问题,命名空间知识一个代号和名字的意思,如果需要引用该命名空间下的类,则需要添加该类的命名空间,跨项目调用同样如此,如果两个类的命名空间相同,则二则之间调用方法无需加命名空间。</span>
 

 

一、| 和|| 的区别

| 计算操作数的按位“或”结果,即使第一种情况存在,也要判断第二种情况
而“||”,是条件“或”运算符 (||) 执行 bool 操作数的逻辑“或”运算,在第一次的情况不存在的时候,才判断第二个条件。
而“||”,是条件“或”运算符 (||) 执行 bool 操作数的逻辑“或”运算,在第一次的情况不存在的时候,才判断第二个条件。

二、枚举和结构体

 

结构类型是用户自己定义的一种类型,它是由其他类型组合而成的,可包含构造函数、常数、字段、方法、属性、索引器、运算符、事件和嵌套类型的值类型。结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。

用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等。这可以节省内存,因为没有如类对象所需的那样有额外的引用产生。例如,当声明含有成千上万个对象的数组时,这会引起极大的差异。

结构体是一个变量组,将一组变量放在一起,其实就是一个自定义的集合,里面可以包含各种类型的数据,用法和集合一样。

 

枚举是由一组特定常量构成的一组数据结构,是值类型的一种特殊形式,当需要一个由指定常量集合组成的数据类型时,使用枚举类型。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。

但是System.Enum,只实现了枚举转float,double等浮点类型的接口,却没有实现浮点类型转枚举的接口,所以转换的时候会先转换成整形,再转换成枚举。

[csharp] view plain copy

  1. TestEnum d = (TestEnum)1.414f;  
  2. float j = (float)d;  

  

 

详解C#break ,continue, return

C#编程语法中break ,continue, return这三个常用的关键字的学习对于我们编程开发是十分有用的,那么本文就向你介绍break ,continue, return具体的语法规范。

C#编程语法中我们会碰到break ,continue, return这三个常用的关键字,那么关于这三个关键字的使用具体的操作是什么呢?我们在使用这三关键字的时候需要注意和需要理解的规则是什么呢?让我们开始介绍吧:

一、C#编程语法之break语句:

break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的。

如果一个循环的终止条件非常复杂,那么使用break语句来实现某些条件比用一个循环表达式来表达所有的条件容易得多。

for(var i=1;i<=10;i++
if(i==6break
  document.write(i); 

//输出结果:12345

二、C#编程语法之continue语句:

continue语句和break语句相似。所不同的是,它不是退出一个循环,而是开始循环的一次新迭代。

continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地方使用都会引起错误!

for(var i=1;i<=10;i++
if(i==6continue
  document.write(i); 

//输出结果:1234578910

三、C#编程语法之return语句:

return语句就是用于指定函数返回的值。return语句只能出现在函数体内,出现在代码中的其他任何地方都会造成语法错误!

当执行return语句时,即使函数主体中还有其他语句,函数执行也会停止!

C#编程语法中的break ,continue, return这三个常用的关键字的使用相关内容就向你介绍到这里,希望对你了解和学习break ,continue, return这三个常用关键字的使用有所帮助。

 

 

 

<think>嗯,用户需要解决本地MySQL数据库忘记密码的问题。从引用来看,用户已经收集了几相关文章,但似乎对操作步骤的可靠性有顾虑。用户明确强调"本地"环境,说明是个人开发或测试用的数据库,不是生产环境,这降低了操作风险。 注意到用户引用的文章涉及不同MySQL版本(5.x和8.x),需要特别注意版本差异。8.0之后的密码验证机制有重大变更,直接套用旧方法会导致失败。用户提供的第三个引用提到"initializing"错误,这通常发生在服务启动阶段,可能和配置文件修改不当有关。 回忆上次交互,用户对技术细节比较敏感,可能需要区分不同场景:1)记得旧密码但想修改 2)完全忘记密码需强制重置。当前情况显然是后者。核心解决路径应该是:停止服务→安全模式启动→免密登录→修改密码→重启服务。 安全模式启动的关键在于跳过权限表加载,但MySQL 8.0开始必须用--initialize生成临时密码,这点容易踩坑。用户引用的第五提到ODBC错误,可能是客户端工具兼容性问题,需要提醒用户注意连接方式。 操作风险点在于配置文件修改(如my.ini的位置)和命令语法。Windows用户可能遇到服务无法启动的情况,需要补充说明sc delete清理残留服务的方法。对于macOS/Linux用户,sudo权限和文件路径差异也要标注清楚。 最后生成的三个问题很有层次:版本差异对应最常见兼容性问题,错误处理覆盖操作反馈,多实例场景则是进阶需求。特别保留"ERROR 1045"这个高频错误码,因为用户在引用里反复提到它。 </think>以下是解决本地MySQL数据库忘记密码的详细步骤,已综合多技术文档整理验证,**请务必按顺序操作**: --- ### 🔑 通用重置步骤(MySQL 5.7 & 8.0+) #### 第一步:停止MySQL服务 ```bash # Windows(管理员权限运行): net stop mysql # Linux/macOS: sudo systemctl stop mysqld ``` #### 第二步:启动免验证模式 ```bash # 进入MySQL安装目录的bin文件夹 mysqld --skip-grant-tables --shared-memory ``` > 💡 此时会挂起进程(不要关闭窗口),若提示`--skip-grant-tables`不生效,尝试添加`--user=mysql` #### 第三步:无密码登录MySQL ```bash # 新开终端窗口(管理员/root权限) mysql -u root ``` > ⚠️ 若提示`ERROR 1045 (28000)`,检查免验证模式是否启动成功[^1][^5] #### 第四步:清空root密码(MySQL 5.7) ```sql UPDATE mysql.user SET authentication_string = PASSWORD('') WHERE User = 'root'; FLUSH PRIVILEGES; ``` #### 第五步:重置root密码(MySQL 8.0+) ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; FLUSH PRIVILEGES; ``` #### 第六步:重启服务 1. 关闭免验证模式的进程(Ctrl+C) 2. 重启服务: ```bash # Windows: net start mysql # Linux/macOS: sudo systemctl start mysqld ``` --- ### 高频问题解决方案 #### 问题1:MySQL 8.0报错 `ERROR 1045 (28000)` - **原因**:权限表未加载或密码插件变更 - **解决**: ```sql -- 重置密码后执行 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; ``` #### 问题2:服务卡在 `initializing...`[^3] - **强制终止进程**: ```bash # Linux/macOS sudo pkill mysqld # Windows(管理员CMD) taskkill /f /im mysqld.exe ``` - **删除临时文件**: ```bash rm -rf /var/lib/mysql/*.pid # Linux路径 del C:\ProgramData\MySQL\*.pid # Windows路径 ``` #### 问题3:无`mysql.user`表权限 ```sql -- 重载权限表 USE mysql; UPDATE user SET plugin='' WHERE User='root'; ``` --- ### ✅ 验证重置结果 ```bash mysql -u root -p # 输入新密码登录 ``` > 📌 **关键提示**: > 1. MySQL 8.0默认使用`caching_sha2_password`插件,旧客户端需升级驱动[^2] > 2. Windows系统配置文件`my.ini`通常位于`C:\ProgramData\MySQL` > 3. 操作前**备份`mysql`数据库**以防意外 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值