1. tomcat启动报错

报错内容:ERROR RUNNING 'TOMCAT': UNABLE TO OPEN DEBUGGER PORT (127.0.0.1:38667): JAVA.NET.SOCKETEXCEPTION "SOCKET CLOSED

原因:tomcat 1089端口被占用

解决办法:

netstat -ano | find "1099"

// 查看是被哪个进程占用

tasklist|findstr "20856"

taskkill -f -pid 20856

2.@CrossOrigin(origins="*")

@CrossOrigin中的2个参数:

  • origins: 允许可访问的域列表
  • maxAge:准备响应前的缓存持续的最大时间(以秒为单位)

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。不明白没关系,举个栗子:

http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)

http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)

http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)

http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)

http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)

请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

跨域会阻止什么操作?

浏览器是从两个方面去做这个同源策略的,一是针对接口的请求,二是针对Dom的查询

1.阻止接口请求比较好理解,比如用ajax从http://192.168.100.150:8020/实验/jsonp.html页面向http://192.168.100.150:8081/zhxZone/webmana/dict/jsonp发起请求,由于两个url端口不同,所以属于跨域,在console打印台会报No 'Access-Control-Allow-Origin' header is present on the requested resource

值得说的是虽然浏览器禁止用户对请求返回数据的显示和操作,但浏览器确实是去请求了,如果服务器没有做限制的话会返回数据的,在调试模式的network中可以看到返回状态为200,且可看到返回数据

3.一篇通俗易懂的git介绍

git为啥不需要网络就能用git_Army-海军的博客-CSDN博客

SVN更新的原则是要随时更新,随时提交。当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交。

 如果在修改的期间别人也更改了svn的对应文件,那么commit就可能会失败。

4.vscode 下载慢问题

将下载链接中的az764295.vo.msecnd.net更换为vscode.cdn.azure.cn,实际上是切换为了国内镜像

5. mybatis中foreach遍历问题

  <select id="selectOnlineRecordG100ByIds" resultMap="OnlineRecordG100Result" parameterType="string">
<include refid="selectOnlineRecordG100Vo"/>
where vin is not null
and id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</select>

当查询结果是有条件时,会获取符合条件对应得数据

    <delete id="deleteOnlineRecordG100ByIds" parameterType="String">
delete from online_record_g100 where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>

当删除时,只有全都符合,才会删除,否则都不删除

5. sql语句 case when then end

SELECT id,made_status,made_date FROM g100_produce_queue
order by made_status desc ,
case when made_status = 'FM' then made_date end asc,
case when made_status = 'UM' then made_date end asc,
case when made_status = 'WM' then made_date end asc; SELECT id,made_status,made_date FROM g100_produce_queue
order by case when made_status = 'WM' then 0
when made_status = 'UM' then 1
when made_status = 'FM' then 2 end asc,made_date asc; SELECT id,made_status,made_date FROM g100_produce_queue ORDER BY made_status desc , made_date asc;

先根据made_status按照WM、UM、FM的顺序显示,再按照made——date显示,以上三条sql效果一样

第一种鸡肋

第二种可应对made_status字母无法排序的状态

第三种适用于需求是状态首字母恰好排序出来的数据

6. log日志中加号和占位符

// 加号是最终会拼接为一个字符串
void error(String var1); // 占位符是一个字符串,一个throwable异常
void error(String var1, Throwable var2);

示例:

// 下面这个是调用的纯字符串那个方法,其中e.getMessage()可能会报空指针
log.error("XXXX异常:" + e.getMessage()); // 下面这个是调用的字符串和异常那个方法,如果e为null,只会显示字符串
log.error("XXXX异常:{}",e.getMessage());

7. 将java项目由GBK格式编码改为UTF-8格式编码

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.Collection; public class tt {
public static void main(String[] args) {
//GBK编码格式源码路径
String srcDirPath = "D:\\Program Files\\JetBrains\\OtherProjects\\design-pattern\\src";
//转为UTF-8编码格式源码路径
String utf8DirPath = "D:\\Program Files\\JetBrains\\OtherProjects\\design-pattern\\src2"; //获取所有java文件
Collection<File> javaGbkFileCol = FileUtils.listFiles(new File(srcDirPath), new String[]{"java"}, true); for (File javaGbkFile : javaGbkFileCol) {
//UTF8格式文件路径
String utf8FilePath = utf8DirPath + javaGbkFile.getAbsolutePath().substring(srcDirPath.length());
//使用GBK读取数据,然后用UTF-8写入数据
try {
FileUtils.writeLines(new File(utf8FilePath), "UTF-8", FileUtils.readLines(javaGbkFile, "GBK"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
// 所需依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>

8. 云服务器上的数据库被勒索比特币

起因:nacos页面报mysql连接被拒绝(Access denied for user 'root'@'xx.xx.xx.xx' (using password: YES)),使用navicat连接mysql也是这个错

第一步:以为mysql版本自动更新了,导致root用户权限不够,所以重新查看当前root权限并赋权

第二步:之后是可以连接了,用了navicat发现数据库里的数据表都没了,且每个数据库都有一个命名为readme的数据库表,内容是告诉我数据被他删了,需要0.003比特币(网上换算了下约966rmb),支付他给恢复(这种人好脏)

第三步:思考,有三个途径破解,第一种是通过gitee上我的公开代码中找到的mysql配置信息,直接就登上去了;第二种是通过刷ip和密码,由于我的mysql端口是3306,密码简单,被刷出来了;第三种认识且知道我ip的人作案(概率不大)

第四步:吸取教训,重置mysql库,改端口,改密码,重新导入数据(因为有备份),将gitee仓库私有(开发完了统一清理下敏感信息再打开吧),恰好用到了腾讯的cos存储,遇到这个事件给了提醒,如果放到公有仓库,被盗刷的风险很大

以下是此次重新安装过程用到的资料:

查看当前mysql的root权限并赋权:https://blog.csdn.net/ichen820/article/details/117130736

docker安装mysql:https://blog.csdn.net/mameng1988/article/details/83782831

nacos_config数据库sql脚本:https://blog.csdn.net/AOSIDIN/article/details/115059725

9. 修改commit备注

git commit --amend

10. 使用了startPage(),但是分页不成功bug

只显示10条数据,总条数是10,但其实数据库中不止10条,查看若依文档

  • 常见坑点2:添加了startPage方法。也没有正常分页。例如下面这段代码
startPage();
Post post = postService.selectPostById(1L);
List<User> list = userService.selectUserList(user);
return getDataTable(list);

原因分析:只对该语句以后的第一个查询(Select)语句得到的数据进行分页。

上面这个代码,应该写成下面这个样子才能正常分页。

Post post = postService.selectPostById(1L);
startPage();
List<User> list = userService.selectUserList(user);
return getDataTable(list);

以为是这个原因,经过多次尝试,原来是select方法中使用了stream流遍历后重新Collections.toList()方法,这个新生产的list不是interface page,所以在getDataTable(list)方法中校验失败,total也就成为了第一页list的长度(10条),所以才会只有10条

        return userMapper.selectUserList(User).stream().peek(user -> {
user.setName("zhangsan");
}).collect(Collectors.toList());

改为以下的写法:

        List<User> list = userMapper.selectUserList(User);
for (User user : list) {
user.setName("zhangsan");
}
return list;

更新:

又遇到这个问题,这次的需求查询大量的数据发送给第三方并更新发送状态,采用分页查询数据防止oom,但是当执行完第一页查询后,更改了前十页的某个字段状态,导致再进行第二页查询时总条数对不上,所以第二页始终查不到数据

总结:

  1. startPage() 后只会对第一个select生效
  2. startPage()后的list不能更改,不能从新new一个list,也不能使用stream流中的Collectors.toList()方法,
  3. startPage()后的list查完第一页后不能更改list的条数,改了要重新查询总条数,否则会有问题

第四周(实际是n+周)的更多相关文章

  1. g第十四周,十五周作业

    1.数组中偶数的和 #include <stdio.h> int main(){ ; ]; ;i<=;i++) { scanf("%d ",&a[i]); ...

  2. 20145330《Java程序设计》第四周学习总结

    20145330<Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复习前面的,如此巩固也让我对 ...

  3. 第四周学习总结-HTML

    2018年8月5日 这是暑假第四周,这一周我在菜鸟教程网学到了许多HTML的知识.HTML编写网页不像C语言.Java语言那必须有主方法.主函数什么的,它基本上都是标签(元素),但是它可以与CSS(层 ...

  4. 20155310 2016-2017-2 《Java程序设计》第四周学习总结

    20155310 2016-2017-2 <Java程序设计>第四周学习总结 一周两章新知识的自学与理解真的是很考验和锻炼我们,也对前面几章我们的学习进行了检测,遇到忘记和不懂的知识就再复 ...

  5. StackOverflow 周报 - 第四周高质量问题的问答(Java、Python)

    这是 Stack Overflow 第三周周报,由于本周周四外出,所以只有三篇内容.两篇 Java.一篇 Python.公众号「渡码」为日更,欢迎关注. DAY1. 枚举对象 == 和 equals ...

  6. 软件产品案例分析----K米app

    第一部分 调研.评测 1.1评测 1.1.1 第一次上手体验 1.1.2 bug 1.1.2.1 bug定义 1.1.2.2 栗子 1.1.2.2.1 A级 1.1.2.2.2 B级 1.1.2.2. ...

  7. K米点歌APP评测

    K米APP评测 产品简介 K米点歌是一款免费的社交K歌手机应用,其手机点歌功能主要在KTV.夜总会,酒吧等K歌场所中使用,当前提供iPhone版本及安卓版本下载使用.——百度百科 评测版本 K米点歌4 ...

  8. gantt甘特图的制作过程

    甘特图主要是用来做项目管理的,可以清楚的看到任务间的逻辑关系,任务与时间关系和任务间并行关系. 在甘特图中,横轴方向表示时间,纵轴方向并列着活动列表.图表内可以用线条.数字.文字代号等来表示计划(实际 ...

  9. 【机器学习】神经网络实现异或(XOR)

    注:在吴恩达老师讲的[机器学习]课程中,最开始介绍神经网络的应用时就介绍了含有一个隐藏层的神经网络可以解决异或问题,而这是单层神经网络(也叫感知机)做不到了,当时就觉得非常神奇,之后就一直打算自己实现 ...

  10. Coursera 机器学习笔记(三)

    主要为第四周.第五周课程内容:神经网络 神经网络模型引入 之前学习的线性回归还是逻辑回归都有个相同缺点就是:特征太多会导致计算量太大.如100个变量,来构建一个非线性模型.即使只采用两两特征组合,都会 ...

随机推荐

  1. Cron表达式(七子表达式)

    一.七子含义 秒 分 时 日 月 周 年 可用的值 0~59 0~59 0~23 1~31 112(JANDEC) 17(SUNSAT) 1970~2099 可用的通配符 , - * / , - * ...

  2. .Net 应用考虑x64生成

    在x86架构下使用32位应用程序,理论上32位能够分配4G的大小空间,但实际上默认 .NET Framework 可以创建一个不超过 2 GB 的对象,在实际使用过程中可能使用到1.5G的样子就会报内 ...

  3. charles(CA证书)的app端安装

    在使用charles进行的app抓包的时候势必需要对他进行配置: 1. pc端: 第一步: http请求接收charles > proxy > proxy setting > por ...

  4. 使用Thread类和Runnable接口实现多线程的区别

    使用Thread类和Runnable接口实现多线程的区别 先看两种实现方式的步骤: public class ThreadDemo{ public static void main(String[] ...

  5. PTA(BasicLevel)-1016 部分A+B

    一.问题定义 正整数 a的"Da(为 1 位整数)部分"定义为由a中所有Da组成的新整数Pa​.例如:给定8,Da = 6,则a的"6 部分"Pa是66,因为a ...

  6. Unbuntu VS Code启动时闪退暂时的解决方法

    背景: 刚刚试着更新了操作系统,没更新成功,在下载系统更新的时候brave浏览器消失了,wps消失了,搜狗拼音输入法消失了.更新时,卡在Kernal Offset上,然后长按电源键再重启就好了.但是v ...

  7. MicTR01 Tester 开发套件(振弦采集读数仪)使用说明

    MicTR01 是系列振弦模块 VM5/6/7和电子标签读写模块 TR01 开发测试.开发套件.使用 STC8 位 51 单片机为核心部件,演示上述各个型号模块的基本用法,包括了模块使用时的硬件连接和 ...

  8. Solution -「CF520E」Pluses everywhere

    Step 1. 转化一步题目:考虑有 \(n\) 个小球,每个小球有 \(a_i\) 的价值,\(m\) 个板子,把板子插进小球间的空隙,且不能插在第 \(1\) 个球之前与第 \(n\) 个球之后. ...

  9. jenkins+tomcat自动化部署

    一.配置tomcat tomcat版本:tomcat-9.0.39 vim /usr/local/tomcat-9.0.39/conf/tomcat-users.xml <tomcat-user ...

  10. HDFS核心原理

    HDFS 读写解析 HDFS 读数据流程 客户端通过 FileSystem 向 NameNode 发起请求下载文件,NameNode 通过查询元数据找到文件所在的 DataNode 地址 挑选一台 D ...