6.01

想把你这尊规范请进来还得看Intellij IDEA心情是吧
image.png
image.png
一篇社科论文就硬炫技啊嗯,工具选这么冷门的
image.png
image.png

6.04

前不久我看前端连接数据库的操作,mysql这个npm包居然只支持mysql5.x,离大谱。
image.png
我特地去mysql的社区找官方文档,所以,为什么Oracle官方居然用一个莫名其妙的包名?

  1. https://dev.mysql.com/doc/dev/connector-nodejs/8.0/

image.png
不过这篇写的简单的过分了,密码配置都不写,例子还没另外那篇详细。

  1. https://dev.mysql.com/doc/x-devapi-userguide/en/database-connection-example.html

image.png
自然我们要的不是JavaScipt的写法,是Node.js的写法。
image.png
试了一小时我放弃了官方的X API,没人带我不会用555
为什么你不合并分支上来,太离谱了,搞得我要改mysql的加密方式。
image.png

6.06

image.png
建议ES6的百科把和谐改成鸿蒙,不过分吧(逃

6.07

我改项目的时候看到了一堆离谱的操作。。。但我不能说,只能憋着不笑,我学mybatis的时候都想不到在select标签写update语句这种操作,只是为了批量处理两条sql语句🤣

6.08

不是说JakartaEE9已经支持微服务框架了吗。。。。。为什么底层源码还是JavaEE8,硬爆红。
image.png
配置web.xml的时候确定了,SpringMVC5.3.7根本不支持JakartaEE9,改回去吧
从《Jakarta EE 2020战果总结》文章中找到了相关讯息。
We have no immediate plans to make such a switch, and also no plans for an early access branch. Our upcoming Spring Framework 5.3 generation will be compatible with Java 8+ and based on the javax-namespaced EE 8 APIs still, for immediate use in current production environments. Beyond that, Spring Framework 6 is likely to adopt the jakarta namespace at a later point.
The jakarta-namespaced APIs are not final yet and we expect a long time to go by before all major providers support them in production releases. We not only need Tomcat, Jetty and Undertow but also EclipseLink, Hibernate ORM and Hibernate Validator to provide major releases here, plus several special-purpose providers and libraries, before we can consider a version of Spring based on jakarta-namespaced APIs. Since there is no relevant value add in EE 9’s namespace change per se, backwards compatibility with existing application servers and persistence providers through the javax namespace is more important to us.
That said, if you have a production-targeting stack scenario where our continued use of the javax namespace is an issue, please elaborate. We are aware that the upcoming Tomcat 10 cannot be supported quite yet and recommend sticking with Tomcat 9.0.x (which is feature-equivalent with Tomcat 10, just still based on the javax namespace) for the time being.
我在询问Eclipse社区人员的过程中找到原贴
https://github.com/spring-projects/spring-framework/issues/25354

6.9
今日首蚌,maven远程仓库有的包我居然下载不了????
image.png
image.png
顺便吐槽一下,阿里这FastJson的奇妙名声。https://cn-sec.com/archives/368497.html
23点08分了,上面的问题在20点时解决,清缓存重启电脑重新安装maven的情况都不行的话,使用IntellIj IDEA自带的Maven,成功下载一部分,然后copy他那份到我自己配置的Maven中,再更新,解决。
关于ssmbuild这个整合项目,Tomcat无法启动的问题,还是需要手动在Project里添加lib(SpringMVC独有的feel,逆大天)
我是通过Tomcat日志锁定问题的。附上解决方案https://blog.csdn.net/weixin_45980775/article/details/109436657

6.10

淦呦老兄,你用的包在Maven仓库还没有
image.png
image.png
image.png

6.11

在寻找springboot实现配置默认dispatchservlet的两天后(百度出来的方法全部在springboot2.5过时,除了全面接管springmvc配置那种操作。。。。。),好像从官方文档发现了东西。
image.png
image.png
但还是没能解决我的问题。
另一边,我发现一个依赖的问题
image.png
按照maven仓库的指示,javax.servlet.jsp.jstl下的jstl才是最新版本,可我之前整合ssm的练手项目,却必须用javax.servlet下的jstl,离大谱属于。

  1. <dependency>
  2. <groupId>javax.servlet.jsp.jstl</groupId>
  3. <artifactId>jstl</artifactId>
  4. <version>1.2</version>
  5. </dependency>
  1. <dependency>
  2. <groupId>javax.servlet</groupId>
  3. <artifactId>jstl</artifactId>
  4. <version>1.2</version>
  5. </dependency>

image.png

6.12

贴一下我的实验日志,然后前端的事,我不会,甩锅(溜

  1. **pojo package**
  2. - 更改包名,从bean变为pojo
  3. - 引入lombok,增强可读性。
  4. **mapper package**
  5. - 使用了Mybatis,更改包名,从dao变为mapper
  6. - xxxDao全部更名为xxxMapper
  7. - 移除该目录下接口的实现类,使用@Mapper将所有DAO注入Spring容器,由@Mapper以动态代理的方式生成实现类。
  8. - DAO类中,部分有多个参数的函数,加上@Param("xxx"),与对应mapper.xml里的参数名对应起来
  9. - springboot初始化失败,把MainCountMapperImpl里用 "=="判断字符串相等的句子改为equal()
  10. - 原项目有点Trickily,我把Long.valueOf()改为Long.parseLong()了。
  11. - 由于MainCountMapper没有映射成功过,SpringBoot判定为Unsafe,利用通用map,重写MainCountMapper.javaMainCountMapper.xml
  12. MainCountServiceMainCountServiceImplMainCountController的逻辑,将业务从MainCountMapperImpl移到MainCountServiceImpl
  13. - OverViewMapperImpl,OverViewController,OverViewService,OverViewMapperOverViewServiceImpl同理,并修正了返回类型
  14. - ParamConfMappermapperimplserviceimpl同理。
  15. **controller package**
  16. - xxxCtl全部更名为xxxController
  17. - controller包下的OverViewCtl使用了net.sf.json.JSONObject包下的JSONArray.fromObject()方法,
  18. 来将从其它对象转化成JSON对象(baidu资讯),
  19. 但我觉得用了fastjson没有必要导多一个,
  20. json工具和fastjson混用不够Graceful 改为fastjson的方法
  21. - 针对使用了json-lib的独有fromJson方法的OverViewCtl类,
  22. 改写格式,直接使用fastjson
  23. - 即将形如的代码块
  1. JSONArray json = JSONArray.fromObject(strList);
  2. response.setCharacterEncoding("UTF-8");
  3. response.getWriter().write(String.valueOf(json));
  1. - 改写为
  1. String json = JSON.toJSONString(strList);
  2. response.setCharacterEncoding("UTF-8");
  3. response.getWriter().write(json);
  1. - 不使用fastjson中的JSONArray类的原因呢,由于最终返回的只是个字符串,
  2. JSONArray代表 json 对象数组,内部是有List接口中的方法来完成操作的,
  3. 又没用到那些操作。
  4. - JSONObject代表 json 对象,
  5. JSON代表JSONObjectJSONArray的转化,作用是JSON类源码分析与使用,
  6. 用惯了。
  7. **webapp目录**
  8. - 因为原项目在使用Tomcat 9,而原项目的web.xml依然是servlet 3.0,改成4.0标准
  9. - 这里的SessionFilter删了,直接在LoginFilter类里用注解配置
  10. - 更改前后对比

String notCheckURLListStr = filterConfig.getInitParameter(“notCheckURLList”); String notCheckURLListStr = “/login.html,/user/checkLogin”;

  1. - spring5.0后,之前web.xml 里配置的log监听Log4jConfigListenerspring废弃了.只能换log4j2
  2. - 如果是1.3.x及以下版本的Spring Boot才支持log4j的日志配置。
  3. - /WEB-INF/lib 内,原项目导入了FastJson,又导入了Jackson
  4. 不清楚为什么要混着用,所以我没导Jackson的包
  5. - 在我印象中,springboot应该启动默认就有一个监听器,不需要在web.xml注册。
  6. - 为解决问题去看了spring-boot-2.1.1.RELEASE的源码,源码的jsp案例没web.xml,我也删了
  7. - index.jspindex_admin.jsp重构过路径.
  8. - *.do相关全删掉,不符合springmvc的最佳实践
  9. **pom.xml**
  10. - 具体日志需点开pom.xml看注释
  11. **application.yml**
  12. - 增设mybatis路径别名,简化mapperresultType书写
  13. - Jdbcurl,增加serverTimezone=UTC解决时区的报错
  14. - 原项目配置好事务管理器后,它没去配置事务的通知,具体AOP切入的修改得具体看。
  15. - SpringBoot源码加的东西,用途没看出来,备份一下
  16. ```properties
  17. application.message: Hello Phil

log4j2,xml

  • 原项目在rootLogger里就没配输出到文件,我也不配。
  • 修正为log4j2的样式,保证输出格式与原项目保持了一致性.
  • filePattern这个,按官方默认了,没动
  • log4j2不用使用监听器加载,默认就是加载resources目录下,但配置文件名称必须为log4j2.xml
  • log4j2每隔1800秒(半小时),自动监控该配置文件是否有变化,如果变化,则自动根据文件内容重新配置

other package

  • 移除了原项目意义不明而写的comom包下的CommonDao类, 该类作用是继承SqlSessionDaoSupport时提供需要注入的SqlSessionFactory, 用@Mapper解决。
  • comom和api包合并为utils包
  • 原项目spring-mvc.xml里的message-converters是解决@ResponseBody中文乱码的, spring boot 与spring mvc不同,在web应用中,默认的编码格式为UTF-8,而spring mvc的默认编码格式为iso-8859-1, 如果没有特殊需求,该编码不需要修改

源码的声明

  • 28.4.5、JSP 局限
  • 当运行使用了内嵌 servlet 容器的 Spring Boot 应用程序时(打包为可执行归档文件),JSP 支持将存在一些限制。
  • 如果您使用 war 打包,在 Jetty 和 Tomcat 中可以正常工作,使用 java -jar 启动时,可执行的 war 可正常使用,并且还可以部署到任何标准容器。使用可执行 jar 时不支持 JSP。
  • Undertow 不支持 JSP。
  • 创建自定义的 error.jsp 页面不会覆盖默认错误处理视图,应该使用自定义错误页面来代替。
  • springboot文档的28.1.11有提及错误处理视图。 ```

    6.13

    把刚进小组的小同学拉进来干活(不是
    image.png
    之前下载不了json-lib的原因找到了,需要添加一个 jdk15,为什么项目里有这么离谱的东西 ```xml 从maven仓库看,json的jar的名称中多了一个跟JDK相关的名称,例如jdk15。

它表示在相同版本下针对不同的环境或者jdk使用的jar,如果单纯用maven的坐标去访问这个jar是访问不到的。

这时,需要添加一个新的标签classifier,这会将这个元素名在加在最后来查找相应的jar。

因此,如下配置依赖即可:

net.sf.json-lib json-lib 2.4 jdk15

  1. ```markdown
  2. 【Json-lib 介绍】
  3. Json-lib 是以前 Java 常用的一个 Json 库,最后的版本是 2.4,分别提供了 JDK 1.3 和 1.5 的支持,最后更新时间是 2010年12月14日。虽然已经很多年不维护了,但在搜索引擎上搜索 "Java Json" 等相关的关键词发现好像一直还有人在介绍和使用这个库。项目官网是 http://json-lib.sourceforge.net/。
  4. 【一句话结论】
  5. Json-lib 在通过字符串解析每一个 Json 对象时,会对当前解析位置到字符串末尾进行 substring 操作,由于 JDK7 及以上的 substring 会完整拷贝截取后的内容,所以当遇到较大的 Json 数据并且含有较多对象时,会进行大量的字符数组复制操作,导致了大量的 CPU 和内存消耗,甚至严重的 Full GC 问题。

6.14

整合的时候发现新问题,在Bootstrap5.0.1和Bootstrap4.6.0里,内联表单那个form-inline都坏了????我现在没法水平对齐表单元素在,只能用回Bootstrap3.4.1.
image.png
Bootstrap3.4.1
image.png
Bootstrap4.6.0
image.png
Bootstrap5.0.1

6.19

小知识,新版Chrome默认禁用了autoplay自动播放,需要到设置开启
image.png

6.21

期末憋不住了,把Json-lib使出来用途了。
image.png
image.png
就是转成字符串,不是转成对象,噗嗤
PageHelper居然更新了,还以为已经成历史了
image.png

6.23

逆天这一块还是阿里在行,Apache POI都5.0了,EasyExcel的底层的POI还是3.x,搞得我在POI5.0的读方法全换一遍类。
image.png
貌似是因为JDK版本高了(我用的Alibaba Dragonwell JDK11),用EasyExcel报个非法反射的警告emmm,看别人用JDK8没这问题,哼。
image.png
image.png
写数据结构综合实验是我第一次用C语言写超过500行的代码(第一次写超过500行的单文件肯定是Java,CRUD人在此),被Embarcadero Dev-C++6.3伤透了心,还是换回orwelldevcpp的Dev-C++5.11了。

6.26

学校网突然上不去Spring官网,进不了Springboot的加载器,破防了
image.png
刚刚骂完没5分钟就能用了,呃呃
写Shiro练手项目时发现之前被老师的资料坑了,br和hr标签在html5就不提倡用结束标签,他还说这是良好规范(我总不能说不能用吧,要不然我之前怎么跑起来html页面的233)
image.png

6.27

今日首蚌,邮箱申请莫名其妙被清掉了,阿哲
image.png
之前实验室小组成员点菜过sun.misc这个内部包的问题,在jdk9以上被移除了——JDK中的lib\tools.jar和JRE中的lib\rt.jar已从Java SE 9中删除。这些JAR中可用的类和资源现在以文件中的内部格式存储在lib目录的命名模块中。 可以使用称为jrt的新方案来从运行时映像检索这些类和资源。 依靠这些JAR位置的应用程序将不再工作。(http://www.oracle.com/technetwork/java/javase/9-relnote-issues-3704069.html)——今天正好分析my-site项目时也有这个包,我尝试对着api文档改了改。
image.png
https://docs.oracle.com/javase/9/docs/api/java/util/Base64.Decoder.html

  1. // byte[] cipherTextBytes = new BASE64Decoder().decodeBuffer(data);
  2. byte[] cipherTextBytes = Base64.getDecoder().decode(data);

https://docs.oracle.com/javase/9/docs/api/java/util/Base64.Encoder.html

  1. // return new BASE64Encoder().encode(encryptedBytes);
  2. return Base64.getEncoder().encodeToString(encryptedBytes);

为什么我用的是链接是之前JDK9的文档而不是新JKD16或JDK11的文档?因为我是懒狗(
image.png
image.png
正常解决Base64编码,成功匹配我本地数据库里加密的账号密码。
为了写公选课使用GaussView的论文报告,查百度查到这里来。。。。。555为什么我学校没有这种待遇
image.png
发现学校采购了,但1套显然只是保护费(
image.png
居然还有专门的学术论坛,还挺萌的,害image.png
清华大学的化学科协。。。。是真是假?居然提供下载。不过要发邮件,如果填id原形毕露,算了。
image.png
Gaussian官方把中文教程放在优酷。。。。。的教育频道,没片前广告,好评!
image.png
从19:40开始肝这份公选课报告,接近1500字,后面不会了,速成成功(
image.png

6.28

每次看到铁辣发的这图,心里总是莫名触动,只有广州才是正常的计算机,其他的左手塞一个土木,右手塞一个材料🤣
image.png
腻了吧唧的,Breezip解压.tar.gz也太拉了,换成WinRAR
???
3dac8b79ae0fdd50b4581ad0cce5b2e.jpg
dubbo-admin的master分支打jar包时,报错,不知道咋改,留着先。你这命令行窗口还带颜色。。。。
image.png

6.29

逆天,头一次知道前端还有“画”html界面资源的软件(真的是直接画,太逆天了,这别是Bootstrap流行起来的原因),还是Adobe全家桶里面的,不过随着前端技术栈的扩展,现在已经是过去时。
image.png
之前集成进的Shiro有个问题,有朋友反馈了,没看官方怎么说的。在shiro那块,首次访问报400,url中有Jsessionid生成的原因:jsessionid是标明session的id,它存在于cookie中,一般情况不会出现在url中,服务器会从客户端的cookie中取出来,但是如果客户端禁用了cookie的话,就要重写url了,显式的将jsessionid重写到Url中,方便服务器来通过这个找到session的id。
如果客户端请求的cookie中不包含JSESSIONID,服务端调用request.getSession()时就会生成并传递给客户端,此次响应头会包含设置cookie的信息
如果客户端请求的cookie中包含JSESSIONID,服务端调用request.getSession()时就会根据JSESSIONID进行查找对象,如果能查到就返回,否则就跟没传递JSESSIONID一样;
解决方式,在properties中添加:

  1. server.servlet.session.tracking-modes=cookie
  2. server.servlet.session.cookie.http-only=true

swagger-demo里,swagger3.0.0改动有点大,和我认知有偏差,先停在最多人使用的版本2.9.2先。2.10.x改的也很多,不用。而且swagger3.0.0开始不是把第三方库能移除的全移除了嘛,我们知道Docket(DocumentationType.SWAGGER_2)的path()方法,也就是过滤那个方法是用了Guava这个包的,怕出事,还是用swagger2.9.2。
image.png
md的全盘扫描好慢wo,扫了6个多小时
image.png

6.30

尝试迁移Swagger从2.9.2到3.0.0,关键点在把Guava相关的方法迁移到java 8 function interfaces里。
image.png
看着迁移成功,没事了。image.png