11月22
运行SpringBoot的时候报如下错Consider defining a bean of type ‘com.google.code.kaptcha.Producer’ in your configuration.

报错原因为配置中找不到一个指定自动注入类型的bean。
那么我们要从collecter层开始查找,点击service层,看service实现类是否加上@Service或者@Component,检查service实现类是否有implements service。如果这些都没有问题:

我们来看@SpringBootApplication,点过去。可以看到有个@ComponentScan,ComponentScan做的事情就是告诉Spring从哪里找到bean

那可以直接在@SpringBootApplication加上

还有一种问题,你的spring启动类不在同一个父包路径下,比如你的其它类在com.heckjj.blog,而你的启动类在heckjj下,也会报错扫不到其它的类,比如说service找不到。
11月22
在pom.xml文件中maven插件配置增加下如配置

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
        <encoding>UTF-8</encoding>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>xls</nonFilteredFileExtension>
            <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>
11月18
点击在新窗口中浏览此图片
问题产生的原因:
由于我远程的Oracle是 11g的,但是Navicat本身的Oracle oci.dll文件是10g的,数据库与链接库的版本不一致,所以会报错。

打开navicat的安装目录,查看有没有以下文件:
点击在新窗口中浏览此图片
解决方案:
1、我们去Oracle官网下载对应的Instant Client Package -Version 11.2.0.4.0 - Basic的文件即可

下载地址:Instant Client for Microsoft Windows (x64) 64-bit
或者自行网上搜索下载
下载好之后,解压到navicat安装目录下

2、启动navicat客户端 找到【工具】->【选项】->【环境】
将OCI环境更改为11_2下的oci.dll即可,重启之后即可生效!
点击在新窗口中浏览此图片
11月15
1、npm:
中文文档:https://www.npmjs.cn/

(1)不用单独安装,它随 node 一起提供,node装好了npm就自动装好了【node是一个JS运行环境】
(2)npm是一个包,这个包可以管理(下载、更新、删除)别的包
(3)npm在下载包的时候有一个缓存的过程,我们一般不会使用npm默认下载缓存目录,而会自定义指定npm下载缓存目录
执行 npm config set cache "C:\Program Files\nodejs\npm_cache"
(4)npm下载包分为本地下载和全局下载,本地下载会下载到指定的文件夹,而全局下载会下载到默认的全局包保存路径,我们一般不会使用npm默认的全局包下载保存路径,而会自定义指定npm全局包下载路径。
执行 npm config set prefix "C:\Program Files\nodejs\npm_global"
(5)npm install的时候巨慢。特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。
(6)同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。 “5.0.3”表示安装指定的5.0.3版本,“~5.0.3”表示安装5.0.X中最新的版本,“^5.0.3”表示安装5.X.X中最新的版本。这就麻烦了,常常会出现同一个项目,有的同事是OK的,有的同事会由于安装的版本不一致出现bug。

"5.0.3",
"~5.0.3",
"^5.0.3"

(7)安装的时候,包会在同一时间下载和安装,中途某个时候,一个包抛出了一个错误,但是npm会继续下载和安装包。因为npm会把所有的日志输出到终端,有关错误包的错误信息就会在一大堆npm打印的警告中丢失掉,并且你甚至永远不会注意到实际发生的错误。
10月28
今天在做导入功能的时候,遇到了字符串无法转化为日期格式异常。在网上找了很多办法。还是下面的解决办法来的实在。

在使用beanutils工具类封装javabean时,beanUtils不提供直接将字符串转换成Date(java.util.Date)数据类型的方法,所以会出现下面警告:
在控制层中写入以下代码
        DateConverter converter = new DateConverter();
        converter.setPattern(new String("yyyy-MM-dd"));
        ConvertUtils.register(converter, Date.class);
10月18
今天有个接口查询条件超过6个字段了,将其改为对象方式接收,但发现Integer的字段的默认值 都变成0了,调试代码发现有个过滤器处理XSS的对参数进行BeanUtils.populate了。
于是Iteger类型的数据为空时填写–写”直接转为0

以上情况均不符合要求,数据库要求为integer的默认值NULL

后来查阅资料寻找到以下方法
ConvertUtils.register(new IntegerConverter(null), Integer.class);
通过转换器来设置为null时的默认转换值。其它类型依次类推设置为相应的基本类型的包装类即可。
10月13
我的服务器配置:linux+tomcat

出现现象:Linux服务器没有崩,有浏览器中访问页面,出现无法访问的情况,没有报4xx或5xx错误(假死),并且重启tomcat后,恢复正常。

原因:tomcat默认最大连接数(线程数)200个,默认每一个连接的生命周期2小时(7200秒),tomcat使用http 1.1协议,而http1.1默认是长连接。tomcat接受处理完请求后,socket没有主动关闭,因此如果在2小时内,请求数超过200个,服务器就会出现上述假死现象。

解决方案1:及时断开socket
protocol="org.apache.coyote.http11.Http11NioProtocol"


解决方案2:修改tomcat配置文件,修改最大连接数(增大)


修改server.xml配置文件,Connector节点中增加acceptCount和maxThreads这两个属性的值,并且使acceptCount大于等于maxThreads:

<Connector port="8080" protocol="HTTP/1.1"

            connectionTimeout="20000"  

           redirectPort="8443" acceptCount="500" maxThreads="400" />

解决方案3:修改linux的TCP超时时间(socket生命周期)限制

vi /etc/sysctl.conf
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# 探测次数
net.ipv4.tcp_keepalive_probes=2
# 探测间隔秒数
net.ipv4.tcp_keepalive_intvl=2

编辑完 /etc/sysctl.conf,要重启network 才会生效
[root@temp /]# /etc/rc.d/init.d/network restart
9月22
创建watermark.js文件

let watermark = {}

let setWatermark = (str) => {
let id = '1.23452384164.123412416';

if (document.getElementById(id) !== null) {
document.body.removeChild(document.getElementById(id));
}

//创建一个画布
let can = document.createElement('canvas');
//设置画布的长宽
can.width = 120;
can.height = 120;

let cans = can.getContext('2d');
//旋转角度
cans.rotate(-15 * Math.PI / 180);
cans.font = '18px Vedana';
//设置填充绘画的颜色、渐变或者模式
cans.fillStyle = 'rgba(200, 200, 200, 0.40)';
//设置文本内容的当前对齐方式
cans.textAlign = 'left';
//设置在绘制文本时使用的当前文本基线
cans.textBaseline = 'Middle';
//在画布上绘制填色的文本(输出的文本,开始绘制文本的X坐标位置,开始绘制文本的Y坐标位置)
cans.fillText(str, can.width / 8, can.height / 2);

let div = document.createElement('div');
div.id = id;
div.style.pointerEvents = 'none';
div.style.top = '30px';
div.style.left = '0px';
div.style.position = 'fixed';
div.style.zIndex = '100000';
div.style.width = document.documentElement.clientWidth + 'px';
div.style.height = document.documentElement.clientHeight + 'px';
div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat';
document.body.appendChild(div);
return id;
}

// 该方法只允许调用一次
watermark.set = (str) => {
let id = setWatermark(str);
setInterval(() => {
if (document.getElementById(id) === null) {
  id = setWatermark(str);
}
}, 500);
window.onresize = () => {
setWatermark(str);
};
}

export default watermark;

9月8
Chrome无痕模式不存储任何信息,除了下载的东西除外,稍微能提升点速度,而且能很好的保护隐私,进入无痕模式有两种

第一种

点击浏览器右上角打开新的无痕窗口

第二种

右键点击Chrome图标属性  

点击在新窗口中浏览此图片

加上这个参数  --incognito

然后关闭浏览器重新再打开,直接就是无痕模式。
分页: 3/63 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]