1)按键盘WIN+R键,打开后在运行框中输入“CMD”命令,点击确定。
2)在CMD窗口,输入“netstat -ano”命令,按回车键,即可查看所有的端口占用情况。
3)找到本地地址一览中类似“0.0.0.0:8080”信息,通过此列查看8080端口对应的程序PID。
4)打开任务管理器,详细信息找到对应的应用PID(若不存在通过设置可以调出来),右键结束任务即可。
Idea开发工具自动创建的web.xml约束太低,导致无法正常获取数据,需要把web.xml约束的信息调整一下,参考如下:
原因分析:Linux下MySQL版本不兼容导致的。
解决办法:把文件中所有的utf8mb4_0900_ai_ci替换为utf8_general_ci以及utf8mb4替换为utf8类型。
Spring Cloud Config使用SSH连 GitHub报错:
JSchException: Auth fail
可以使用命令生成公钥来解决GitHub报错问题,举例如下:
ssh-keygen -m PEM -t rsa -b 4096 -C "java梦睡了@qq.com"
在Linux中通过locale来设置程序运行的不同语言环境,locale由 ANSI C提供支持。locale的命名规则为_.,如zh_CN.GBK,zh代表中文,CN代表大陆地区,GBK表示字符集。
修改 /etc/locale.conf文件的内容
LANG="zh_CN.UTF-8"
执行命令,使修改文件立刻生效
source /etc/locale.conf
方式一
File->Settings->Build,Excecution,Deployment->Build Tools->Maven->Ignored Files
查看是否存在maven pom被勾选,去掉勾选即可。
方式二
右键项目pom.xml文件,选择“add as maven project”,自动导入pom所依赖的jar包。
刷新Maven配置
右键单击项目,在弹出菜单中选择Maven->Reimport菜单项。IDEA将通过网络自动下载相关依赖,并存放在Maven的本地仓库中。
或者将Maven的刷新设置为自动,单击File|Setting菜单项,打开Settings选项卡,在左侧的目录树中展开Maven节点,勾选Import Maven projects automatically选择项。
目前开发中已经很少使用JSP模版引擎,JSP虽然是一款功能比较强大的模板引擎,并被广大开发者熟悉,但它前后端耦合比较高。
其次是JSP页面的效率没有HTML高,因为JSP是同步加载。而且JSP需要Tomcat应用服务器部署,但不支持Nginx等,已经快被时代所淘汰。
JSP页面中使用${表达式}展示数据,但是页面上并没有显示出对应数据,而是把${表达式}当作纯文本显示。
原因分析:这是由于jsp模版引擎默认会无视EL表达式,需要手动设置igNoreEL为false。
<%@ page isELIgnored="false" %>
数据库连接驱动配置参数url添加UTF-8编码:
url:jdbc:mysql://127.0.0.1:3306/JavaJingXuan?useUnicode=true&characterEncoding=UTF-8
这是由于时区问题导致,首选设置MySQL时区为中国。
需要注意的是MySQL重启后就会恢复默认:
set time_zone='+8:00';
url连接MySQL数据库的时区要和MySQL服务的时区一致,配置参数如下:
characterEncoding=utf-8&serverTimezone=UTC
将com.sun.deploy.net.URLEncoder换成java.net.URLEncoder,就可以解决Maven 打包提示 “程序包com.sun.deploy.net不存在” 的问题。
Spring Boot项目中集成了thymeleaf模版引擎本地正常运行没任何问题,但是放到Linux系统后出现访问页面报500的问题。
分析原因:可能是thymeleaf模板引擎解析找不到模板路径导致的问题。
例如controller层返回url中出现有大写,文件名config.html,路径写成了device/Config,在window下启动项目时可能可以正常访问页面,但是在Linux系统时必须与文件名一致,还有就是前面不要加/,否则也会报500的问题。
Java中UUID依赖于SecureRandom.nextBytes方法,而SecureRandom又依赖于操作系统提供的随机数源。在Linux系统下,它的默认依赖是/dev/random,而这个源是阻塞的。
主要原因是nextBytes方法是一个被synchronized关键字修饰的方法,也就是说如果多线程调用UUID,生成速率不升反降,解决这个问题需要修改java的默认随机生成规则就可以。
打开$JAVA_PATH/jre/lib/security/java.security文件,找到下面的内容:
securerandom.source=file:/dev/random
替换成
securerandom.source=file:/dev/./urandom
表单嵌套通常指的是在一个表单内部嵌套另一个表单。在HTML中,这通常是通过将一个元素放在另一个
元素内部来实现的。然而,这种做法是不推荐的,因为这可能会导致预料之外的行为,尤其是在提交表单时。
当你在一个表单内部嵌套另一个表单时,浏览器可能会对这种情况产生混淆,不知道应该提交哪一个表单。此外,一些浏览器可能会阻止这种嵌套表单的提交,以防止可能的错误或安全问题。
如果你需要在表单内部包含类似表单的元素(例如输入字段),但又不希望它们成为完整的表单,你可以使用元素。
元素允许你对一组相关的输入字段进行分组,但它并不表示一个完整的表单。
如果你确实需要在一个表单内部嵌套另一个表单,并希望解决提交问题,你可能需要手动处理提交逻辑。这意味着你需要使用JavaScript来监听用户的输入和点击事件,然后手动提交你想要的表单。
下面是一个简单的示例,展示了如何使用JavaScript来处理嵌套表单的提交:
1)检查连接的注册中心是否正确。
2)到注册中心查看相应的服务提供者是否存在。
3)检查服务提供者是否正常运行。
1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)。
2、涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合。
3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度。
4、针对数量大的表进行历史表分离(如交易流水表)。
5、数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,mysql有自带的binlog实现 主从同步。
6、explain分析sql语句,查看执行计划,分析索引是否用上,分析扫描行数等等。
7、查看mysql执行日志,看看是否有其他方面的问题。
在 Linux 中,如果你遇到了 "too many open files" 异常,这通常意味着你的应用程序或系统已经达到了其打开文件的上限。为了解决这个问题,你可以采取以下几种方法:
增加系统的文件描述符限制:
ulimit -n
ulimit -n 4096
/etc/security/limits.conf
文件,并添加或修改以下行 `* soft nofile 4096
* hard nofile 8192`
```上面的设置将用户进程的文件描述符上限设置为 4096 (soft) 和 8192 (hard)。
检查并优化应用程序:
lsof
或 strace
的工具来检查应用程序何时以及如何打开文件。使用文件描述符重定向:
ncat
而不是 nc
可以减少打开的文件描述符数量。监控和日志:
inotify
、auditd
或其他监控工具来跟踪系统上哪些进程打开了哪些文件,并定期检查和审计日志文件。调整系统参数:
/etc/sysctl.conf
中的参数,例如 fs.file-max
,以增加系统级别的文件描述符限制。使用连接池或复用:
检查第三方软件和服务:
如果你在 Redis 中存储了这样的序列化数据,并且你希望将其转换或删除,你需要首先确定你的具体需求。以下是一些可能的步骤:
确定数据来源:首先,你需要确定这些序列化的数据是从哪里来的。它们是来自于某个应用错误地存储了序列化的对象,还是你故意为之?
删除或转换数据:
DEL
命令。反序列化:
ObjectInputStream
来反序列化这些数据。例如:java`byte[] bytes = ...; // 从 Redis 获取的序列化数据
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
Object obj = ois.readObject();`
预防措施:为了避免未来再次出现这样的问题,确保你的应用在存储数据到 Redis 之前进行了适当的验证和清理。
与团队沟通:如果你不是唯一一个负责这个 Redis 实例的人,确保与你的团队成员沟通你的操作和目的,以确保没有意外的副作用。
MySQL 中出现 "Incorrect string value: '\xE5\xB0'" 异常通常是因为尝试将一个包含特殊字符的字符串插入到字符集不支持该字符集的列中。
要解决这个问题,你可以采取以下步骤:
检查列的字符集:
首先,检查出问题的列的字符集设置。你可以使用以下命令查看表的创建语句:
SHOW CREATE TABLE your_table_name;
在返回的结果中,查找列的字符集定义,例如 CHARACTER SET utf8mb4
。
2. 确保数据和列字符集匹配:
如果你的数据包含特殊或非标准字符,确保列的字符集支持这些字符。例如,使用 utf8mb4
字符集可以支持大部分 Unicode 字符。
3. 转换数据字符集:
如果你不能更改列的字符集,或者不想更改,你可以尝试将数据转换为列所支持的字符集。例如,使用 CONVERT()
函数:
UPDATE your_table_name SET your_column_name = CONVERT(your_column_name USING utf8mb4);
注意:在执行此操作之前,请确保备份你的数据,以防万一出现问题。
4. 更改列的字符集:
如果可能,更改列的字符集以支持你的数据。使用以下命令更改列的字符集:
ALTER TABLE your_table_name MODIFY your_column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
这将更改列的字符集为 utf8mb4
,并使用 utf8mb4_unicode_ci
排序规则。
5. 检查数据库和连接的字符集设置:
确保数据库和连接的字符集设置也是 utf8mb4
。你可以在连接 MySQL 时设置 character_set_client
, character_set_connection
, 和 character_set_results
变量,或者在 MySQL 配置文件中设置这些变量。
6. 检查连接编码:
如果你使用的是编程语言(如 PHP、Python 等)与 MySQL 交互,确保连接编码设置为 utf8mb4
。例如,在 PHP 中,你可以这样设置:
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset('utf8mb4');
utf8mb4
字符集。较旧的客户端可能不支持这个字符集。utf8mb4
字符集。例如,检查数据库、表和列级别的字符集设置。Spring项目非Spring Boot项目借助Tomcat启动war包来启动项目,通过注解的方式配置定时任务。
1、在spring-mvc.xml的配置文件中添加约束文件:
xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.2.xsd
2、配置注解驱动
3、添加注解的扫描包
4、定时任务代码
package com.jingxuan;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class JingxuanTask {
@Scheduled(cron = "0/5 * * * * ? ") // 间隔5秒执行
public void task() {
System.out.println("----定时任务开始执行-----");
//执行具体业务逻辑----------
System.out.println("----定时任务执行结束-----");
}
}
Tomcat可以多个同时启动,但需要修改server.xml配置文件的端口号。
修改%TOMCAT_HOME%\conf下的server.xml配置文件
第一个: 修改http访问端口(默认为8080端口)
将8080修改为第一个tomcat不在使用的端口号。此处所设的端口号即是访问web时所用的端口号。
第二个: 修改Shutdown端口(默认为8005端口)
将8005修改为没有在使用的端口号。
第三个: 修改8009端口
将8009修改为没有在使用的端口号。