常用操作合集三

我正在参加「金石计划5.0」

写在前面

在工作中,我们可能会遇到一些问题,然后通过自己得一顿操作,最终把问题解决了。

可能在一两天之内,我们还是会记得解决这些问题的方法,但是过了一段时间之后,基本上都忘光了。

所以这里,我们应该要养成一个良好的习惯,把每次遇到的问题,如何解决的,都记录下。下次再看文档,这样就想起来了。

<<千与千寻>>有些事情是不可能忘记的,只是一时想不起来

下面,就分享一下,我遇到的一些问题,和相关的解决方法。

可能以前也有分享过一篇,有兴趣的小伙伴,可以查看这里:常用操作合集一常用操作合集二

1.win下出现base64中文乱码

问题:

jar包在Windows上运行的时候,操作数据会乱码。

而在idea中运行却没有问题,并且打包放到linux系统也是正常。

原因:

当进行Base64加密和解密时如果没有指定编码格式,默认会使用环境的编码格式,而在window环境下运行jar包默认编码是GBK;linux默认编码为utf-8,idea中编码可以根据自己情况按需设置,但需要注意的是,当加密和解密程序不在同一个项目中时,需要保证编码格式的一致,此时最好是指定一种统一的编码,使之不受环境影响.

解决方法一: 加密解密指定统一编码格式

#加密
Base64.encode(jwtStr.getBytes(StandardCharsets.UTF_8))



#解密
Base64.decodeStr(jwtStr,"UTF-8");

解决方法二: 运行时指定编码

java -Dfile.encoding=utf-8 -jar demo.jar >> demo.txt

验证发现,方法二会导致窗口(日志文件)乱码,解决窗口乱码的方式是cmd 输入chcp 65001 就会将当前黑窗口的编码格式设置为UTF-8,如果关闭窗口还要重新修改;

chcp 查看当前编码 ; 
chcp 65001 设置utf-8; 
chcp 936 设置gbk

附上启动命令

@echo "启动demo.jar"
D:
cd D:/install/
chcp 65001
java -Dfile.encoding=utf-8 -jar demo.jar >> demo.txt

2.win10更新失败处理

参考地址

3.logback文件无法输出mybatis-plus的sql日志

参考地址

4.idea将一个java类打成jar完整步骤

有时候,我们想写一个测试的java类,直接放入到服务器环境进行运行。

但如果我们的测试java类,有import依赖这些,那使用javac编译和java运行,这种方式,就变得十分麻烦,因为你要讲依赖的jar包,先导入才行。

所以,有无一种比较好的方式,而我们不需要自己手动导入依赖。

那我们可以尝试将这个java类,打包成jar的方式,然后使用java -jar xxx.jar运行我们的java类。

这里提供一个idea打包的完整参考方式:参考地址

5.mybatisplus分页自定义select count的sql

MyBatis-Plus 是基于 MyBatis 拓展的增强工具,内置分页插件实现了自动计算分页总数的功能,但它并没有像 MyBatis 一样默认提供一个 *_COUNT 后缀的方法来自动查询分页总数。

那我们要怎么实现使用自己定义的select count语句呢?

MybatisMapperMethod

image.png

PaginationInnerInterceptor拦截器

image.png

由此可见,我们可以修改page分页参数,传入countId,即可实现。

Page<T> page = new Page<>(0, 10);
page.setCountId("query_COUNT");
this.baseMapper.query(page,params);

query_COUNT为分页统计总数sql,query对应原始的sql语句

6.IDEA 修改缓存文件设置

随着我们不断使用idea,会导致C盘的空间不断变少,是因为缓存导致的。

今天在查看C盘,发现虽然我idea安装在了E盘,但是idea的缓存还是在C盘

image.png

image.png

  • config 目录是 IntelliJ IDEA 个性化化配置目录,或者说是整个 IDE 设置目录。也是我个人认为最重要的目录,没有之一,如果你还记得安装篇的介绍的时候,安装新版本的 IntelliJ IDEA 会自动扫描硬盘上的旧配置目录,指的就是该目录。这个目录主要记录了:IDE 主要配置功能、自定义的代码模板、自定义的文件模板、自定义的快捷键、Project 的 tasks 记录等等个性化的设置。

  • system 目录是 IntelliJ IDEA 系统文件目录,是 IntelliJ IDEA 与开发项目一个桥梁目录,里面主要有:缓存、索引、容器文件输出等等,虽然不是最重要目录,但是也是最不可或缺目录之一。

现在来修改:打开idea的安装路径下的bin文件夹的idea.properties

image.png

idea.config.path=E:/Program Files/JetBrains/.IntelliJIdea2019.1/config
idea.system.path=E:/Program Files/JetBrains/.IntelliJIdea2019.1/system
idea.plugins.path=${idea.config.path}/plugins
idea.log.path=${idea.system.path}/log

可以将之前的C判断的文件夹的config,system,拷贝到你设置的路径的config和system文件夹下面,然后重启idea即可。

7.kafka的topic如何彻底删除

1.进入到kafak安装目录bin

sh kafka-topics.sh --list --zookeeper 192.168.4.xxx:2181


>结果会输出topic列表
consumer_offsets
xxx1 is already marked for deletion
xxx2
xxx3

如果某些topic出现marked for deletion

1)配置server.properties 启动Kafaka时如果加载的配置文件中”server.properties”没有配置”delete.topic.enable=true”,那么此时的删除并不是真正的删除,而是把该topic标记为”marked for deletion”。追加参数后记得重启Kafka。

2)通过zookeeper客户端zkCli.sh删除

2.进入到zookeeper安装目录bin

#启动zookeeper客户端
sh zkCli.sh



#查看topics目录下所有topic
ls /brokers/topics


>结果会输出topic列表
[__consumer_offsets, xxx1, xxx2, xxx3]


#删除指定topic
deleteall /brokers/topics/xxx1

自此,再次查看可以发现topic被真正删除

注意:如果还出现springboot项目无法发送信息的,建议重启zookeeper、kafka,然后再重启springboot项目试试。

8.vue项目,h5缓存问题解决

异常描述:

微信中内嵌h5项目(vue框架开发),前端重新打包上传之后访问页面会导致页面还是旧的页面,需要手动清除微信缓存才可以正常访问。

解决方案:

在HTTP协议中,只有后端返回 expires 或 Cache-Control:max-age=XXX, 前端才缓存。 但在浏览器中,默认会对 html css js 等静态文件、以及重定向进行缓存,如果在HEAD头中指定:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

浏览器不会缓存html,但是还是会对重定向缓存,并且这种方式并不规范,可能有的浏览器不支持。

解决方案是:

1)对hash过的静态文件还是采用默认方式,客户端会缓存。

2)对html文件,返回时增加头:Cache-Control,必须每次来服务端校验,根据etag返回200或者304 对应的nginx配置如下:

server{
  # 前端静态文件
  location ~* .(gif|jpg|jpeg|png|css|js|ico|eot|otf|fon|font|ttf|ttc|woff|woff2)$ {
    root /opt/llsydn/;
  }
 
  # 前端html文件
  location / {
    add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';
    root /opt/llsydn/;
    index index.html index.htm;
    try_files $uri /index.html;
  }
}

或者

location /llsydn {
    alias /opt/front/llsydn;
    index index.html;
    try_files $uri $uri /llsydn/index.html;
    if ($request_filename ~* .*.(?:htm|html)$)
        {
        add_header Cache-Control no-cache;
    }
}

这种感觉还是有点不太行,就算设置了html不缓存。 但是会出现这样的情况:

用户正在访问,然后你更新了项目。用户因为已经加载过首页index.html,在不刷新页面的情况下,他是不会重新再加载首页index.html,那就导致,他看到的还是旧的页面。

最终的解决方案是:

在路由跳转得时候,判断下是否有版本更新,有版本更新的,重新刷新下页面,并带上时间戳。

npm i webpack-merge


import merge from 'webpack-merge';

mounted() {
    if (!this.$route.query || !this.$route.query.timestamp) {
        this.$router.push({
            query: merge(this.$route.query, {
                'timestamp': new Date().getTime()
            })
        })
        setTimeout(function () {
            location.reload();
        }, 300);
    }
}

但是这种情况下,出现得概率比较小,而且用户正在使用得时候,也不太建议更新系统,所以可以不做处理。

9.npm全局依赖

  • 全局安装依赖
npm install -g @vue/cli
  • 查看全局安装的依赖
npm list -g --depth 0

10.Hbuilderx换行问题(属性合并一行展示)

解决代码格式化后,分行显示的问题。

1. 标签折行,非吾所愿(格式化代码快捷键:Ctrl + K)

image.png

2. 打开工具-设置

image.png

3. 点击左侧插件配置,点击右边下侧jsbeautify

image.png

4. 将原本的折行长度由120改为1200(长度可根据自己的实际开发情况更改)

image.png

5. 保存,再格式化代码(快捷键:Ctrl + K)=》达到预期目的

image.png

11.Linux磁盘根目录扩容

教程

12.SpringMvc控制台截取100个字符

这个问题,导致一些日志,报错信息无法完整显示。

这里可以修改下logback的日志级别进行处理。

参考文档

image.png

原因,是因为这里,默认截取了100个字符。

  • 增加ForceWarnFilter类

image.png

  • logback.xml配置一下
<configuration>
    <turboFilter class="com.llsydn.log.filter.ForceWarnFilter" />
    ...
</configuration>

13.Linux清理buff/cache的方法

参考教程

  • buff/cache是什么?

在Linux系统中,buff/cache是内存中用于缓存文件系统I/O、网络I/O的缓存,如果应用程序需要内存,buff/cache可以根据系统需要释放缓存。buff/cache机制可以优化Linux系统的性能。

buff/cache在系统内存充足的情况下非常有利,可以加快系统I/O操作,但是如果内存不足时,buff/cache可能会占用大量内存,导致系统运行缓慢。

#查看buff/cache占用情况
free -h



#清理buff/cache
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches


#清理内存缓存
echo 1 > /proc/sys/vm/drop_caches


#清理buff缓存
echo 3 > /proc/sys/vm/drop_caches

#定时清理buff/cache
vi /etc/crontab
#每天凌晨1点清理buff/cache
0 1 * * * /usr/sbin/sysctl vm.drop_caches=3

好了,以上就是我个人的实操了。可能有些不对,大家伙,轻点喷!!!

个人理解,可能也不够全面,班门弄斧了。

好了,今天就先到这里了!!!^_^

如果觉得有收获的,帮忙点赞、评论、收藏一下,再走呗!!!

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYOoN7OL' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片