提交 f6a7f6c9 编写于 作者: W wizardforcel

2020-06-10 22:27:05

上级 b32d7bc4
......@@ -378,7 +378,7 @@ Fan stopped..
* Swing Action(javax.swing.Action)使用命令模式
* Action Servlet 调用 Struts Action 类在内部使用命令模式。
## 摘要
## 总结
1. 命令模式是一种行为设计模式。
2. 在命令模式中,对象用于封装在任何时间执行操作或触发事件所需的所有信息,从而使开发人员能够分散业务逻辑。 它称为命令。
......
......@@ -241,7 +241,7 @@ Connecting with Lokesh through Orkut [not possible though :)]
2. [Log4j](//howtodoinjava.com/log4j2/) 中的追加者,布局和过滤器。
3. UI 工具箱中的布局管理器。
## 摘要
## 总结
* 此模式定义了一组相关算法,并将它们封装在单独的类中,并允许客户端在运行时选择任何算法。
* 它允许添加新算法而无需修改使用算法或策略的现有算法或上下文类
......
......@@ -258,7 +258,7 @@ Glass Wall House constructed successfully
* [Java IO](//howtodoinjava.com/java-io-tutorial/)`InputStream``OutputStream``Reader``Writer`的非抽象方法。
* 一些抽象集合类的非抽象方法,例如`AbstractList``AbstractSet``AbstractMap`等。
## 摘要
## 总结
**模板模式**是一种非常简单的设计模式,用于定义和实施编程示例中的某些顺序算法步骤。 它有助于定义算法的框架,该框架不得在子类中被覆盖。
......
......@@ -163,7 +163,7 @@ Summary
这是感觉良好的因素。 它绝对不会带来直接的好处,但是可以使运行单元测试变得有趣和有趣。 您可以将 JUnit 与 ant 构建脚本集成,并生成测试用例,并使用一些颜色编码以 XML 格式运行报告。 遵循也是一种很好的做法。
## 摘要
## 总结
毫无疑问,单元测试可以显着提高项目质量。 我们这个行业中的许多学者声称,任何单元测试总比没有好,但是我不同意:测试套件可以成为一项重要资产,但是不良套件可以成为负担不起的同样巨大的负担。 这取决于这些测试的质量,这似乎取决于其开发人员对单元测试的目标和原理的理解程度。
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/sql/sqlexception-access-denied-for-user-rootlocalhost-after-re-installation-of-mysql-server/](https://howtodoinjava.com/sql/sqlexception-access-denied-for-user-rootlocalhost-after-re-installation-of-mysql-server/)
重新安装 MySQL 服务器后,您是否曾经遇到过用户拒绝访问的问题或任何与登录有关的问题。 我遇到了这个问题,当我用 Google 搜索它时,我看到许多其他人也经常遭受这个问题的困扰。 在这篇文章中,我建议您尝试一下,它可以在 95的情况下解决此问题。
重新安装 MySQL 服务器后,您是否曾经遇到过用户拒绝访问的问题或任何与登录有关的问题。 我遇到了这个问题,当我用 Google 搜索它时,我看到许多其他人也经常遭受这个问题的困扰。 在这篇文章中,我建议您尝试一下,它可以在 95% 的情况下解决此问题。
## 访问原因被拒绝错误
......
......@@ -30,7 +30,7 @@ HTML5 `<section>`标记**定义了文档**中的各个部分,例如章节,
```
## 摘要
## 总结
`<section></section>`元素的目的不是替换 HTML `<div>`标记。 如果要将文档划分为逻辑文档部分(以定义内容的语义上离散的**部分),请使用`<section></section>`元素或结构元素之一。 但是,如果仅出于格式化目的分割文档,则适合使用`<div>`标签。**
......
......@@ -21,7 +21,7 @@ Difference between Iterator and ListIterator?
我们都知道,在回收分配给对象的内存之前,垃圾收集器线程会调用[`finalize()`](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--)方法的基本声明。 请参阅此程序的[,该程序证明根本不能保证`finalize()`调用。 其他原因可能是:](//howtodoinjava.com/java/related-concepts/why-not-to-use-finalize-method-in-java/ "Why not to use finalize() method in java")
1. `finalize()`方法无法像构造函数一样在链接中工作。 这意味着就像您调用构造函数时一样,所有超类的构造函数都将被隐式调用。 但是,在使用 finalize 方法的情况下,则不遵循此方法。 超类的 finalize()应该显式调用。
1. `finalize()`方法无法像构造函数一样在链接中工作。 这意味着就像您调用构造函数时一样,所有超类的构造函数都将被隐式调用。 但是,在使用 finalize 方法的情况下,则不遵循此方法。 超类的 finalize()应该显式调用。
2. 由 finalize 方法引发的任何异常都将被 GC 线程忽略,并且不会进一步传播,实际上不会记录在日志文件中。 真糟糕,不是吗?
3. Also, There is some performance penalty when finalize() in included in your class. In Effective java (2nd edition ) Joshua bloch says,
......
......@@ -6,13 +6,13 @@
您可以通过在控制台中通过**增加日志语句的限制来简单地解决此问题,或者简单地将所有限制都一起删除**。 可以在 Eclipse 中进行以下设置来完成此设置:
1)转到**窗口>首选项>运行/调试>控制台**
1)转到“窗口 -> 首选项 -> 运行/调试 -> 控制台”
2)增加控制台缓冲区的大小
2)或直接取消选中“限制控制台输出”
![Increase console output limit in eclipse](img/923c1433e241fdd113994a9a60b99c63.png)
Increase console output limit in eclipse
增加 Eclipse 中的控制台输出限制
......
......@@ -2,45 +2,49 @@
> 原文: [https://howtodoinjava.com/eclipse/create-eclipse-templates-for-faster-java-coding/](https://howtodoinjava.com/eclipse/create-eclipse-templates-for-faster-java-coding/)
我们大多数使用 **Eclipse IDE** 编写代码的人,都必须使用`main``sysout`之类的快捷方式,然后点击`CTRL+SPACE`,它将快捷方式转换为公共*静态 void main (字符串[] args){…}**System.out.println()*。 这是一项非常有用的功能,每当我为项目或教程编写代码时,我就一直使用它。
我们大多数使用 **Eclipse IDE** 编写代码的人,都必须使用`main``sysout`之类的快捷方式,然后点击`CTRL+SPACE`,它将快捷方式转换为`public static void main(String[] args){…}``System.out.println()`。 这是一项非常有用的功能,每当我为项目或教程编写代码时,我就一直使用它。
好消息是**,您也可以在此列表中添加自己的模板**,并利用此功能。 例如,解析作为参数传递的 XML 字符串是非常普遍的要求。 解析此类 XML 字符串的代码始终几乎相同。 我们可以为其创建模板,然后在需要时使用其快捷方式。
好消息是**您也可以在此列表中添加自己的模板**,并利用此功能。 例如,解析作为参数传递的 XML 字符串是非常普遍的要求。 解析此类 XML 字符串的代码始终几乎相同。 我们可以为其创建模板,然后在需要时使用其快捷方式。
## 如何创建新的 Eclipse 模板
要创建 XML 字符串解析的快捷方式,请按照以下步骤操作:
****1)**通过转到**打开“首选项”对话框 Windows->首选项
**2)**在左侧导航树上,转到 **Java->编辑器 ->模板**
**3)** 预定义模板
1)通过转到“Windows -> 首选项”打开“首选项”对话框
2)在左侧导航树上,转到“Java -> 编辑器 -> 模板”
3)预定义模板
![Eclipse Predefined Templates](img/bdf7d0d99efa20f97552f0e097f2341b.png)
Eclipse Predefined Templates
Eclipse 预定义模板
**4)**按下“ New…”按钮添加新模板。
**5)**填写以下模板信息并保存
4)按下“New…”按钮添加新模板。
5)填写以下模板信息并保存
![Create New Template](img/f85a365a7a15e9e1570a1626fb654f59.png)
Create New Template
建立新模板
**6)**使用 CTRL + SPACE 在任何 Java 源文件中使用模板
6)使用`CTRL + SPACE`在任何 Java 源文件中使用模板
![Use template Shortcut](img/2fc6cb02f3e41e770e96fa9b57870875.png)
Use template Shortcut
使用模板快捷方式
**7)**按下 Enter,它将生成下面的代码 a。 请享用 !!
7)按下`Enter`,它将生成下面的代码。 请享用 !!
![Code inserted in place of shortcut](img/2d29df61b1a300a4292adb268fa89cd4.png)
Code inserted in place of shortcut
代替快捷方式的插入代码
......@@ -50,7 +54,7 @@ Code inserted in place of shortcut
## 1)IO 模板文件
以下模板对于读取或写入文件很有用。 他们使用 Java 7 功能(如 try-with-resources)自动关闭文件。 他们还使用 NIO2.0 中的方法来获取缓冲的读取器并读取文件。
以下模板对于读取或写入文件很有用。 他们使用 Java 7 功能(如`try-with-resources`)自动关闭文件。 他们还使用 NIO2.0 中的方法来获取缓冲的读取器并读取文件。
**a)从文件**中读取文本
......@@ -157,7 +161,7 @@ ${cursor}
```
## 3)记录模板
## 3)日志模板
以下模板对于创建记录器和记录消息很有用。 我使用的是 SLF4J,但是可以很容易地对其进行调整,以使用任何其他日志记录框架。
......@@ -170,7 +174,7 @@ private static final Logger LOGGER = LoggerFactory.getLogger(${enclosing_type}.c
```
**b)在放置调试日志**之前检查调试范围
**b)在放置调试日志之前检查调试范围**
```java
if(LOGGER.isDebugEnabled())
......@@ -205,7 +209,7 @@ ${cursor}
## 4)JUNIT 模板
**a)方法**之前的 Junit
**a)Junit 的之前方法**
```java
${:import (org.junit.Before)}
......@@ -217,7 +221,7 @@ public void setUp() {
```
**b)方法**之后的 Junit
**b)Junit 的之后方法**
```java
${:import (org.junit.After)}
......@@ -229,7 +233,7 @@ public void tearDown() {
```
**c)**上课之前的 Junit
**c)Junit 的之前类**
```java
${:import (org.junit.BeforeClass)}
......@@ -242,7 +246,7 @@ public static void oneTimeSetUp() {
```
**d)下课后的**
**d)Junit 的之后类**
```java
${:import (org.junit.AfterClass)}
......@@ -255,9 +259,10 @@ public static void oneTimeTearDown() {
```
Please note that these templates can be defined for other file types such as XML, JSPs etc. More templates can be found here in given links:
请注意,可以为其他文件类型(例如 XML,JSP 等)定义这些模板。在给定的链接中可以找到更多模板:
[http://stackoverflow.com/questions/1028858/useful-eclipse-java-code-templates](https://stackoverflow.com/questions/1028858/useful-eclipse-java-code-templates)
[http://eclipse.dzone.com/news/effective-eclipse-custom -templ](http://eclipse.dzone.com/news/effective-eclipse-custom-templ)
[http://eclipse.dzone.com/news/effective-eclipse-custom-templ](http://eclipse.dzone.com/news/effective-eclipse-custom-templ)
**祝您学习愉快!**
\ No newline at end of file
......@@ -19,29 +19,33 @@
**用于清理索引**
{workspace path} \。metadata \ .plugins \ org.eclipse.jdt.core
```
{workspace path}\.metadata\.plugins\org.eclipse.jdt.core
```
**用于清除历史记录**
{工作区路径} \。metadata \ .plugins \ org.eclipse.core.resources \ .history
```
{workspace path}\.metadata\.plugins\org.eclipse.core.resources\.history
```
这里{workspace path}是您在其中创建所有项目的 Eclipse 工作区的路径。
这里`{workspace path}`是您在其中创建所有项目的 Eclipse 工作区的路径。
Please note that deleting the files from above both folders does not impact any of your project sourcecode in any way.
请注意,从两个文件夹上方删除文件不会以任何方式影响您的任何项目源代码。
## 2)删除结构化文本验证
这也产生了很大的影响。 这里的验证必定意味着 eclipse 在后台会对源代码文件执行多项操作以检查其有效性。 这些有时有时也不必要并且令人讨厌。 我参与了一些由许多 XML / XSLT 和 WSDL 文件组成的项目,并且其中一些文件总是显示一些危险信号。 但是他们实际上在大多数情况下在运行时都产生了问题,即使这实际上也是正确的处理方式。
这也产生了很大的影响。 这里的验证必定意味着 eclipse 在后台会对源代码文件执行多项操作以检查其有效性。 这些有时有时也不必要并且令人讨厌。 我参与了一些由许多 XML/XSLT 和 WSDL 文件组成的项目,并且其中一些文件总是显示一些危险信号。 但是他们实际上在大多数情况下在运行时都产生了问题,即使这实际上也是正确的处理方式。
您可以关闭这些验证(对于您认为不必要的所有类型),并享受 Eclipse。
要关闭这些文本验证,请打开 Windows >首选项,然后在搜索栏中键入“验证”。 它将列出所有文件类型并对其进行验证。 禁用任何您认为不必要的东西。 然后单击“确定”。
要关闭这些文本验证,请打开“Windows -> 首选项”,然后在搜索栏中键入“验证”。 它将列出所有文件类型并对其进行验证。 禁用任何您认为不必要的东西。 然后单击“确定”。
![eclipse_validation](img/feb6f96a89510654ce2840a6914d0585.png)
## 3)不要使用 subclipse 插件
该技术确实有效,但难以遵循。 它说您应该只在 eclipse 中使用代码来编写/修改和执行。 与 SVN / perforce 或任何代码仓库相关的所有其他事情都应在 eclipse 之外完成。 这可以来自命令行工具或任何可视客户端。
该技术确实有效,但难以遵循。 它说您应该只在 eclipse 中使用代码来编写/修改和执行。 与 SVN/perforce 或任何代码仓库相关的所有其他事情都应在 eclipse 之外完成。 这可以来自命令行工具或任何可视客户端。
Subversion 插件占用了过多的系统资源,严重影响了 Eclipse 的性能。
......@@ -49,9 +53,9 @@ Subversion 插件占用了过多的系统资源,严重影响了 Eclipse 的性
## 4)配置适当的启动参数
在您的 eclipse.ini 文件(位于 Eclipse 安装文件夹中)中,根据需要更改默认的 -Xms40m -Xmx256m 参数。 此选项定义传递给 Java 虚拟内存以管理 Eclipse 应用的内存分配容限的最小和最大内存使用范围。 您不应将它们设置为最大可用,因为您需要并行运行其他软件。
在您的`eclipse.ini`文件(位于 Eclipse 安装文件夹中)中,根据需要更改默认的`-Xms40m -Xmx256m`参数。 此选项定义传递给 Java 虚拟内存以管理 Eclipse 应用的内存分配容限的最小和最大内存使用范围。 您不应将它们设置为最大可用,因为您需要并行运行其他软件。
You should try different combinations of -Xms and -Xmx options, and then decide which one works for you best and make eclipse fastest.
您应该尝试使用`-Xms``-Xmx`选项的不同组合,然后确定哪一种最适合您,并使 Eclipse 最快。
示例配置如下所示:
......@@ -80,19 +84,19 @@ openFile
```
## 温馨提示:在 eclipse.ini 中使用 -Xverify:none,-Xquickstart 和 -server OR -client
## 温馨提示:在`eclipse.ini`中使用`-Xverify:none`,`-Xquickstart`和 `-server OR -client`
##### -Xquickstart
##### `-Xquickstart`
您可以使用 -Xquickstart 进行初始编译,而优化级别要比默认模式低。 以后,根据采样结果,您可以在默认模式下重新编译为初始编译的级别。 对于早期中等速度比长期吞吐量更重要的应用,请使用 -Xquickstart。 在某些调试方案,测试工具和短期运行的工具中,您可以将启动时间缩短 15%至 20%
您可以使用`-Xquickstart`进行初始编译,而优化级别要比默认模式低。 以后,根据采样结果,您可以在默认模式下重新编译为初始编译的级别。 对于早期中等速度比长期吞吐量更重要的应用,请使用`-Xquickstart`。 在某些调试方案,测试工具和短期运行的工具中,您可以将启动时间缩短 15% 至 20%
##### -Xverify:无
##### `-Xverify:none`
如果要在类加载期间跳过类验证阶段,可以使用 -Xverify:none。 使用 -Xverify:none 将禁用 Java 类验证,这可以将启动时间缩短 10-15%。 但是,指定此选项时,不会检测到损坏或无效的类数据。 如果加载了损坏的类数据,则 Java 虚拟机(JVM)可能会以意外的方式运行,或者 JVM 可能会失败。 但这只有在您自己修改字节码时才会发生。
如果要在类加载期间跳过类验证阶段,可以使用`-Xverify:none`。 使用`-Xverify:none`将禁用 Java 类验证,这可以将启动时间缩短 10-15%。 但是,指定此选项时,不会检测到损坏或无效的类数据。 如果加载了损坏的类数据,则 Java 虚拟机(JVM)可能会以意外的方式运行,或者 JVM 可能会失败。 但这只有在您自己修改字节码时才会发生。
##### 服务器| - 客户
##### `-server OR -client`
基于 Sun 的 Java 开发工具包(JDK)1.4.2 版中的 Java HotSpot 技术引入了一种自适应 JVM,其中包含用于随着时间的推移优化字节代码执行的算法。 JVM 以两种模式运行 -server 和 -client。 如果使用默认的 -client 模式,将有更快的启动时间和较小的内存占用,但扩展性能较低。 如果允许 HotSpot JVM 通过连续执行字节代码来预热足够的时间,则可以使用 -server 模式来提高性能。 在大多数情况下,请使用 -server 模式,该模式可在更长的时间内产生更有效的运行时执行。 您可以监视进程大小和服务器启动时间,以检查 -client 和 -server 之间的差异。
基于 Sun 的 Java 开发工具包(JDK)1.4.2 版中的 Java HotSpot 技术引入了一种自适应 JVM,其中包含用于随着时间的推移优化字节代码执行的算法。 JVM 以两种模式运行`-server``-client`。 如果使用默认的`-client`模式,将有更快的启动时间和较小的内存占用,但扩展性能较低。 如果允许 HotSpot JVM 通过连续执行字节代码来预热足够的时间,则可以使用`-server`模式来提高性能。 在大多数情况下,请使用`-server`模式,该模式可在更长的时间内产生更有效的运行时执行。 您可以监视进程大小和服务器启动时间,以检查`-client``-server`之间的差异。
现在就这样。 如果您知道除上述技术以外的任何其他技术,请与我们分享。
......
......@@ -28,17 +28,17 @@ public class DemoHindiProgram {
实际问题始于在 eclipse 插件中复制以上代码时。 一旦您在 eclipse 中复制了以上代码,它就会开始抱怨各种编译问题。
这些问题基本上是由于 Eclipse 中的默认字符编码为“ **Cp1252** ”。 我们需要改变这一点。
这些问题基本上是由于 Eclipse 中的默认字符编码为“**CP1252**”。 我们需要改变这一点。
## 3.解决方案 – 更改 Eclipse 默认编码
可以从以下位置更改此默认编码:`"File > Properties"`。 将其更改为 **UTF-8**
可以从以下位置更改此默认编码:“File -> Properties”。 将其更改为 **UTF-8**
![eclipse-default-encoding](img/77cd1caaf5ee085c7540848b9dddd9ae.png "eclipse-default-encoding")
现在创建一个名为“ DemoHindiProgram.java”的类。
现在创建一个名为“`DemoHindiProgram.java`”的类。
该文件不会有编译问题,如果您执行上述程序“ **右键单击>以> Java 程序**运行”,您将能够在控制台输出中看到输出为“ 200” 。
该文件不会有编译问题,如果您通过“**右键单击 -> 以 Java 程序运行**”来执行上述程序,您将能够在控制台输出中看到输出为“200” 。
有趣的事实是,控制台输出也使用印地语字母。
......
# Java 覆盖最终静态方法 – 方法是覆盖还是隐藏?
# Java 覆盖最终静态方法 – 方法是覆盖还是隐藏?
> 原文: [https://howtodoinjava.com/oops/understanding-the-compiler-error-message-when-hiding-final-static-methods/](https://howtodoinjava.com/oops/understanding-the-compiler-error-message-when-hiding-final-static-methods/)
我们可以覆盖 Java 中的静态方法吗? 好吧,我们所有人都知道[方法覆盖和方法隐藏](https://docs.oracle.com/javase/tutorial/java/IandI/override.html "method overriding and method hiding")。 您是否尝试过**覆盖静态方法**,特别是在父类中方法为`final`时。
## Java 程序覆盖最终的静态方法
## 覆盖最终静态方法的 Java 程序
下面是我编写的用于测试各种关键字组合的程序。 因此,请参考该程序进行进一步的讨论。
......@@ -40,17 +40,17 @@ public class Test {
## 是方法重写还是方法隐藏?
1. 上面的代码将成功编译,而不会发出警告或错误。 **方法隐藏**就是这种情况,子类的静态方法从超类隐藏了静态方法。
2. If we remove the **static** keyword from display method in subclass, compiler complains that you **can not override static method from super class**.
2. 如果我们从子类的显示方法中删除`static`关键字,则编译器会抱怨您**无法覆盖超类的静态方法**
众所周知,静态方法不能被覆盖。 它们只能从子类中隐藏。 因此,这种情况下的编译器消息应被认为是错误的。 **正确消息**应该为“实例方法无法从超类“隐藏”静态方法”。
众所周知,静态方法不能被覆盖。 它们只能从子类中隐藏。 因此,这种情况下的编译器消息应被认为是错误的。 **正确消息**应该为“实例方法无法从超类“隐藏”静态方法”。
现在在上面的代码示例中,将 final 添加到超类的显示方法中。 再次,编译器开始抱怨**“无法从 SuperClass 覆盖最终方法”**
现在在上面的代码示例中,将`final`添加到超类的显示方法中。 再次,编译器开始抱怨“**无法从超类覆盖最终方法**
由于上述原因,这也会产生误导。 在这里,正确的消息也应该是“无法**隐藏** SuperClass 的最终方法”
由于上述原因,这也会产生误导。 在这里,正确的消息也应该是“无法**隐藏**超类的最终方法”
## 摘要
## 总结
为什么在 Java 中不能覆盖静态方法? 以我的观点,**方法覆盖**仅在我们使用实例方法进行讨论时才有效。 一旦我们开始谈论静态方法,就应该使用隐藏的**方法。**
为什么在 Java 中不能覆盖静态方法? 以我的观点,**方法覆盖**仅在我们使用实例方法进行讨论时才有效。 一旦我们开始谈论静态方法,就应该使用隐藏的**方法**
幸运的是,以上术语已在大多数 Java 文献中使用(甚至在 Java 语言规范中也是如此),但我想仍然必须对其进行更新。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册