非正常人研究室

【github:https://github.com/PaulWangCN】研究一些不正常的东西,所有博客不定期修改更新。
私信 关注
ColdFireMan
码龄5年
  • 213,478
    被访问量
  • 106
    原创文章
  • 38,222
    作者排名
  • 19
    粉丝数量
  • 于 2016-07-31 加入CSDN
获得成就
  • 获得35次点赞
  • 内容获得52次评论
  • 获得69次收藏
荣誉勋章
TA的专栏
  • 运维
    2篇
  • 中间件
    5篇
  • IDEA
  • weblogic
    1篇
  • 源码学习
    10篇
  • java
    35篇
  • 算法
    4篇
  • 数据结构
    3篇
  • 前端
    11篇
  • 书籍博客
    4篇
  • 系统设计
    2篇
  • 数据库
    16篇
  • 开发框架
    10篇
  • 工具组件
    8篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

【netty】主动关闭netty server

设计一个可以控制监听端口的http服务端的开启和关闭的功能,启动部分比较简单,关闭查了一下,找到了功能,以下是demoimport com.wangjx.swallow.common.server.IServer;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.Channel;import io.netty.channel.ChannelFuture;import io.netty.channel.Channe.
原创
13阅读
0评论
0点赞
发布博客于 昨天

【工具类】测试目标设备网络是否可达

作用有时候我们需要监控两台设备设备之间的网络是否可达,或者到目的设备的指定端口是否可达。这个工具类可以用于简单的测试。import java.io.IOException;import java.net.*;import java.util.Enumeration;/** * 工具类,检测到目标设备或者是目标设备的端口是否可达 */public class NetTestUtils { /** * 测试到指定IP设备的端口是否可达 * @param ip 目标
原创
15阅读
0评论
0点赞
发布博客于 11 天前

【activemq】activemq小版本升级步骤

1.上传activemq升级包到目标设备,放在原来的activemq的同级目录下,然后解压如:tar -xzvf apache-activemq-5.15.13-bin.tar.gz2.activemq5.15.13依赖jdk8,提前检查一下当前的环境是否是jdk8的环境:java -version如果不是jdk8的,检查设备上是否有jdk8的包,如果没有,上传一个jdk8的包上去,比如解压后路径在这个位置:/app/jdk1.8.0_1813.进入activemq解压后的目..
原创
177阅读
0评论
1点赞
发布博客于 4 月前

【kafka】kafka集群的搭建、用户的设置和权限的控制

准备我们准备起码两个实例,你可以在一台设备上操作,但是起码要有两个实例。我这边准备了三台设备,分别为192.168.5.1,192.168.5.2,192.168.5.3。然后是kafka的包和zookeeper的包,kafka和zookeeper的版本要适配。我这里准备的是kafka_2.12-2.4.0.tgz和apache-zookeeper-3.5.8-bin.tar.gz。zookeeper集群的搭建kafka的运行依赖zookeeper,考虑到高可用的能力,所以需要搭建一个zookeepe
原创
244阅读
2评论
0点赞
发布博客于 4 月前

【exception】java.lang.NoClassDefFoundError Could not initialize class

现网有一个程序,之前是正常的,替换包以后,发现出现这个异常,写一下排查过程过程这个类、这个程序在本地的IDEA中没有问题,编译是正常的,怀疑是正式环境和测试环境有区别。仔细查看日志,查找问题点。结果发现在一堆报错的中间,有一个不同的报错,是找不到某个类。在IDEA中查看找不到的这个类,发现这个类GSON,版本是2.8.5,查看现网。因为现网的依赖库都是放在jar包外的lib目录下,进入lib目录,发现GSON包版本是2.2.4。将gson包替换后重启,问题解决。反思发生异常的类用到了g.
原创
86阅读
0评论
0点赞
发布博客于 5 月前

【exception】cxf can‘t find request url for Observer

框架是springboot+shiro,在登录页面输入账号密码后点击登录,登录没生效,后台日志发生报错解决方法:原来是/*,拦截了所有请求,需要修改成实际的路径 @Bean("cxfServletRegistration") public ServletRegistrationBean dispatcherServlet() { //注册servlet 拦截/ws 开头的请求 不设置 默认为:/services/* return new Servlet.
原创
28阅读
0评论
0点赞
发布博客于 5 月前

elasticsearch开启集群用户名密码认证

参考文章:Elasticsearch 7.1.1 集群 + 配置身份验证下载elasticselasticsearch官网下载链接:https://www.elastic.co/cn/downloads/elasticsearch放到合适的目录后解压。macos用户不推荐brew安装,有坑。设置用户认证前提elasticsearch在6.3及以后的版本已经自带xpack,所以可以直接通过下文的方式进行设置。如果是6.2及之前的版本,需要自己下载安装xpack。下载地址:https://.
原创
544阅读
0评论
0点赞
发布博客于 5 月前

【charset】字符串和字符集的理解

今天在写socket接口的时候,需要接受数据,对数据处理完以后需要发送到别的地址。因为接受和发送的数据字符集不同,所以中间需要处理字符集。以前对这个不是很清楚,今天在写的时候发现了两点,做一下总结。本人做Java开发,所以都是用Java举例。字符串首先明确一点,Java的String类型,是没有字符集的概念的,字符串就只是字符串。比如:String str = "这是一个字符串ABC";字符集举常见的GBK和UTF-8,需要用到字符集的地方,一般是接收数据和发送数据的时候,你想要把字节数组按.
原创
168阅读
0评论
0点赞
发布博客于 8 月前

【spring cloud stream】spring cloud stream配置多个kafka地址

网上查找了关于配置多个kafka地址的方法,可惜没有找到,在一个博客看到了这个方法,大致方法是对的,但是还是有小错误,导致失败。所以自己修改完亲测有效后,写了这个博客。spring: cloud: stream: binders: # 接下来的kafka1和kafka2就是两个kafka broker的环境配置,配置完成后可以应用kafka1、kafka2这个定义的名字 # 在别的地方引用。功能和profile中的dev环境、test环境、prod
原创
355阅读
0评论
0点赞
发布博客于 8 月前

【exception】NoSuchMethodError kotlin.collections.ArraysKt.copyInto([B[BIII)[B

现象本地在IDEA上使用okhttp的时候没有问题,在给同事用的时候发现一直报这个错误,并且几个同事出现的可能性都不一样。怀疑跟IDEA的版本有问题,因为抛出的异常跟IDEA的包有关系。解决在pom.xml中加入<!-- https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib --><dependency> <groupId>org.jetbrains.kotlin<
原创
4020阅读
5评论
4点赞
发布博客于 8 月前

【JS】JS中的小tip之==和===的区别

在写JS的时候,发现框架中有用到 == 和 === ,在Java里面是没有===的用法的,所以查询了资料了解一下。区别因为JS是弱类型的语言,所以存在变量的类型是可以隐性转换的。在使用==进行比较的时候,JS会把两个变量改成同一个类型进行比较,例如:var a = '1'var b = 1console.log(a == b)可以看到a和b是不同类型的,JS会隐性的转成同一个类型,所以最后比较的结果就是true。而使用===进行比较的时候,这个是强类型比较,JS不会进行隐性转换。所以最后.
原创
116阅读
0评论
0点赞
发布博客于 9 月前

【Java】关于对System.getProperty中user.dir的理解

字面解释System.getProperty(“user.dir”)方法返回的是执行运行Java程序命令的路径。这句话有一点歧义,还是通过举例说明最合适。举例用两个用户,一个是root,一个是普通用户userone,可运行jar包在/home/userone/下面,有一个运行该jar包的sh脚本也在/home/userone/下面。可运行jar包内就是打印System.getProperty...
原创
479阅读
0评论
1点赞
发布博客于 10 月前

【Linux】添加用户useradd出现异常useradd group userone exists

现象Linux创建用户userone的时候,用命令useradd userone出现异常:useradd: group userone exists - if you want to add this user to that group, use -g.原因在创建用户时没有指定用户组,系统默认会创建一个同名的用户组,用户userone不存在,但是用户组userone已经存在,所以...
原创
2077阅读
0评论
0点赞
发布博客于 10 月前

【BlockingQueue】BlockingQueue接口方法说明和区别

BlockingQueue在异步处理的时候经常用到它的存放和取出数据的操作,但是如存放也有add、offer等多个方法,这些方法有什么区别,这边用LinkedBlockingQueue作为实现测试一下。存放先上方法:boolean add(E e);boolean offer(E e);void put(E e) throws InterruptedException;boo...
原创
112阅读
0评论
0点赞
发布博客于 10 月前

【exception】用Java的JAXBContext解析xml线程阻塞问题

现象在用JDK自带的JAXB解析xml时发现执行线程卡住了,没有抛出异常。原因JDK9及以上的包中已经没有JAXB的API,需要自己手动在pom.xml中添加。解决方法在pom.xml中添加依赖:<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-...
原创
99阅读
0评论
0点赞
发布博客于 11 月前

【JS】JS脚本中JSON对象未定义

场景在使用java的js脚本引擎执行脚本的时候,发现js报错,JSON对象未定义。而我需要用JSON.parse()去解析json字符串。原因JS引擎太低了,不存在JSON对象,所以要么不用,要么自己定义。解决脚本github地址:json2.js如果是前端,只需要在执行脚本之前引入这个json2.js脚本就可以了。但是我的是后端,所以一开始查找资料是怎么在js脚本中引入其他js脚本...
原创
507阅读
0评论
0点赞
发布博客于 11 月前

【logback】logback输出日志屏蔽quartz的debug等级日志

在一个spring的老项目中,使用了logback来作为日志管理,logback.xml中已经设定日志输出等级为INFO,但是quartz的日志还是debug级别在输出,导致日志内容很多很乱解决方法在标签内加上,如:<configuration debug="false"> ... <logger name="org.quartz.core.Quartz...
原创
1406阅读
0评论
0点赞
发布博客于 11 月前

【exception】ORA-01950 no privileges on tablespace xxxx

因为安全,需要回收oracle用户的dba权限。一开始系统没有出现问题,等过了一段时间,监控系统发现没有数据入库。检查日志,发现出现很多ORA-01950的报错。原因网上搜索资料后,发现是表空间不足的时候,用户会去申请表空间,但是没有权限就没有申请下来。结果一直报这个错误。解决给用户增加该表空间的权限,比如用户XXX没有表空间YYY的权限,修改SQL为:ALTER USER XXX ...
原创
96阅读
0评论
0点赞
发布博客于 1 年前

【IDEA】IDEA删除checkout from version control中不想要的url

以前从git或者SVN上checkout了很多的分支,这些分支没用了,但是用IDEA的-按钮删除后,重新打开又有了,找到这个方法可以删除这些分支。关闭IDEA切换到 C:\Users\Administrator\.IntelliJIdea2019.2\config\options目录下,每个人的不一样,反正是C盘用户下的IDEA配置文件夹。找到 other.xml ,打开...
原创
1057阅读
0评论
0点赞
发布博客于 2 年前

【安装错误】windows10安装mysql后启动出现系统错误1067

在新电脑上按照教程安装mysql并且设置成系统服务后,准备启动mysql,结果执行net start MySQL的时候cmd输出 “系统出错。发生系统错误 1067。进程意外终止。”,在网上找了一下资料后,找到了自己失败的原因排查方式:查看系统日志这个我觉得是最重要的,因为我也是通过这个解决的。怎么查看系统日志可以参考这个百度经验:Windows如何打开和使用事件查看器管理计算机。找到日志...
原创
309阅读
0评论
0点赞
发布博客于 2 年前

【ORACLE】常见sql汇总

查询查询序列的下一个值SELECT EXAMPLE_SEQ.NEXTVAL FROM DUAL;模糊查询的内容中存在%这样的特殊符号select * from ip_table where regexp_like(ip,'%78');PS: 如果是直接like,带有%会被直接默认为匹配符查询关联的外键select a.constraint_name, a.table_...
原创
62阅读
0评论
0点赞
发布博客于 2 年前

【springboot新手向】用springboot搭建一个简单的web项目

用springboot框架搭建一个简单的web项目,可以返回页面或者ajax请求的结果。用mybatis-plus查询mysql数据库。完整代码地址:cat创建一个maven项目pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" ...
原创
674阅读
0评论
0点赞
发布博客于 2 年前

【MYSQL】将非分区表改成分区表

原来的采集数据表collect_data每天的增量为5亿数据,通过简单的条件查询已经无法满足,所以通过分区的方式进行改造。直接将原来的非分区表改成分区表的sql如下,是将数据按照采集时间的日期进行分区。alter table collect_data PARTITION BY LIST (day(collect_time))(partition p1 values in(1),par...
原创
653阅读
0评论
0点赞
发布博客于 2 年前

【Linux】centos7通过docker安装oracle 11g

纯净的linux安装过程安装dockeryum updateyum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum list docker-...
原创
605阅读
0评论
0点赞
发布博客于 2 年前

【错误】weblogic错误汇总

安装错误此平台上不支持OpenJDK JVM。原因安装的是openjdk,而不是oracle的jdk解决去oracle官网下载一个linux的包,上传后重新安装
原创
444阅读
0评论
0点赞
发布博客于 2 年前

【Linux】常见操作实践笔记

因为调试部署Java程序的需要,需要进行一些操作,记录一下。根据以后的学习接触,随时补充创建覆盖配置文件创建文件(application.yml)touch application.yml编辑并保存vi application.yml按i进入编辑模式,输入完成后按Esc,然后按:wq!就可以保存查看程序的pid并杀死查看程序的pidps -ef|grep xx...
原创
58阅读
0评论
0点赞
发布博客于 2 年前

【@Scope】@Scope的使用方式

详情见spring文档说明scope翻译就是范围的意思,从名字看就是定义这个bean的作用范围。从文档中说明有5个值可以使用。@Scope(“singleton”)该注解的默认值,表示这个bean在spring容器中是单例的,我们通过spring容器获取这个bean的时候,都是对一个对象进行操作。@Scope(“prototype”)表示这个bean在容器中不是单例的,每次...
原创
1002阅读
0评论
0点赞
发布博客于 2 年前

【@Import】@Import注解使用方式

使用方式直接注入新建一个Man类,不加注解,不在启动时注入到spring IOC容器中public class Man { public void say() { System.out.println("I am a man."); }}新建一个Woman类,不加注解,不在启动时注入到spring IOC容器中public class Woman ...
原创
257阅读
0评论
0点赞
发布博客于 2 年前

【exception】文件存在但是抛出FileNotFoundException

还原现象从公司的SVN上来下来代码,运行main方法后发现抛出FileNotFoundException异常,将文件的路径打印出来以后,发现路径的中间有中文转化后的%2%4之类的字符串解决方法将项目放到不带中文的路径上就可以正常运行...
原创
633阅读
1评论
0点赞
发布博客于 2 年前

【exception】Caused by org.hibernate.hql.internal.ast.QuerySyntaxException t_use

在使用springboot的JPA的@Query注解时出现的问题错误代码@Query("from t_user u where u.username=:username")User findUser(@Param("username") String username);报错栈org.springframework.beans.factory.UnsatisfiedDep...
原创
553阅读
0评论
0点赞
发布博客于 2 年前

【@Conditional】@Conditional注解使用方法

举例通过Condition可以自定义注入bean的条件,如:注入一个MyService的bean,前提条件是JdbcTemplate这个bean要注入成功,代码如下:条件类public class JdbcTemplateCondition implements Condition { @Override public boolean matches(ConditionC...
原创
246阅读
0评论
0点赞
发布博客于 2 年前

【Mycat】MySQL读写分离

master-slave读写分离项 目MycatMySQL-masterMySQL-master-standbyMySQL-slaveIP10.230.4.13110.230.3.19410.230.3.19510.230.2.132Port8077/9077330633063307MySQL为二主一从,3.195为3.194的standby...
原创
62阅读
0评论
0点赞
发布博客于 2 年前

【Mycat】分片规则详解

分片表和非分片表Mycat位于应用和数据库的中间层,可以理解为数据库的代理。不是所有的表都需要分片,数据量小并且不需要做水平切分的表称之为非分片表;数据量大到单库性能、容量不足以支撑,数据需要通过水平切分到不同数据库中的表称之为分片表。ER关系分片表ER模型是实体关系模型,广泛采用概念模型设计方法,基本元素是实体、关系和属性。Mycat创新性地将它引入数据切分规则中,使得有互相依赖的...
原创
365阅读
0评论
0点赞
发布博客于 2 年前

【exception】springboot多模块jar包启动失败

重现今天一个多模块的springboot用maven打成jar包,使用 java -jar 命令启动失败,报错是//中文提示xxx.jar中没有主清单属性//英文提示no main manifest attribute...原因maven的打包错误,没有指定main方法入口类,可以看jar包里面META-INF\MANIFEST.MF正常的内容Manifest-Versio...
原创
472阅读
0评论
0点赞
发布博客于 2 年前

【exception】Java和kafka连接正常但是发送数据失败

描述今天Java程序和kafka整合的时候遇到一个情况,Java可以和kafka连接但是在发送数据的时候出现了以下的异常:-2019-07-30 14:55:08.494 -ERROR 2191 [kafka-producer-network-thread | producer-1] (LoggingProducerListener.java:84) Exception thrown when...
原创
1591阅读
0评论
0点赞
发布博客于 2 年前

【exec】g.exec 死循环

今天检查js脚本的时候,发现一个正则匹配中出现了 /g.exec 死循环,所以查了一下网上的原因,是因为把正则匹配放在了循环体中,导致每一次都是新的匹配,所以死循环原来的代码:while(true){ var result = /\s+\d+/g.exec(a); if (result) { //TODO } else{ br...
原创
180阅读
0评论
1点赞
发布博客于 2 年前

【HikariCP】【PoolEntry】源码学习

Hikari目前已经是springboot的默认数据库连接池,并且以高效和轻量著称,因为代码量比较少,所以可以阅读一下,学习一下,github地址:HikariCPPoolEntry实现了IConcurrentBagEntry接口,可以共享的连接,是连接池里的单个连接实体。成员变量private static final AtomicIntegerFieldUpdater stat...
原创
217阅读
0评论
0点赞
发布博客于 2 年前

【HikariCP】【异常汇总】

You need to run the CLI build and you need target/classes in your classpath to run.这个错误是在拉下来源代码后新建一个类测试获取连接的时候抛出的错误。HikariConfig config = new HikariConfig();config.setJdbcUrl("jdbc:mysql://localh...
原创
511阅读
0评论
1点赞
发布博客于 2 年前

【HikariCP】【SuspendResumeLock】源码学习

Hikari目前已经是springboot的默认数据库连接池,并且以高效和轻量著称,因为代码量比较少,所以可以阅读一下,学习一下,github地址:HikariCPSuspendResumeLock数据库连接池暂停恢复锁。如果hikari配置中设置isAllowPoolSuspension为true,那么就会在HikariPool中实例一个暂停恢复锁。空锁public static f...
原创
326阅读
0评论
0点赞
发布博客于 2 年前

【HikariCP】【ConcurrentBag】源码学习

Hikari目前已经是springboot的默认数据库连接池,并且以高效和轻量著称,因为代码量比较少,所以可以阅读一下,学习一下,github地址:HikariCPConcurrentBag这个是HikariCP的核心功能类,作者在注释中也详细说明了这个类的作用/** * This is a specialized concurrent bag that achieves superi...
原创
738阅读
0评论
0点赞
发布博客于 2 年前

【HikariCP】【HikariDataSource】源码学习

Hikari目前已经是springboot的默认数据库连接池,并且以高效和轻量著称,因为代码量比较少,所以可以阅读一下,学习一下,github地址:HikariCPHikariDataSource成员变量private final AtomicBoolean isShutdown = new AtomicBoolean();线程安全的连接池是否关闭的标识符private fin...
原创
3348阅读
0评论
0点赞
发布博客于 2 年前

【HikariCP】【HikariConfig】源码学习

Hikari目前已经是springboot的默认数据库连接池,并且以高效和轻量著称,因为代码量比较少,所以可以阅读一下,学习一下,github地址:HikariCPHikariConfig常量常量基本都是一些参数的默认值//随机生成线程池名称时使用private static final char[] ID_CHARACTERS = "0123456789abcdefghijklmn...
原创
2595阅读
0评论
0点赞
发布博客于 2 年前

【HikariCP】【FastList】源码学习

Hikari目前已经是springboot的默认数据库连接池,并且以高效和轻量著称,因为代码量比较少,所以可以阅读一下,学习一下,github地址:HikariCPFastListFastList和ArrayList的实现基本一致,但是它主要的改动点是:去掉range checking(边界检查)删除时数组从后往前遍历查找元素不常用的方法没有重写直接抛出UnsupportedOpe...
原创
247阅读
0评论
0点赞
发布博客于 2 年前

【HikariCP】【数据库连接池常见参数】

Hikari目前已经是springboot的默认数据库连接池,并且以高效和轻量著称,因为代码量比较少,所以可以阅读一下,学习一下,github地址:HikariCP数据库连接池常见参数无论用什么数据库连接池,在配置数据库的时候还需要配置一大堆连接池参数,在Hikari的源码中也有很多的设置参数,那么每一个参数的实际意义是什么提前学习一下很有必要。我之前都是按照网上或者是其他项目的配置文件复...
原创
772阅读
0评论
1点赞
发布博客于 2 年前

【Java】springboot中URL带有斜杠的转义字符百分之2F导致的400错误

今天项目上出现一个问题,是前端的GET请求url中带有路径参数,这个参数中有/这个特殊字符,前端已经转移成了%2F,后端用的是springboot,并没有收到这个请求,直接返回了400的错误原因据说是tomcat默认是不支持转义的,需要手动设置一下转化,这个搜索tomcat的设置可以找到,但是这个是springboot,有内置的tomcat,但是在yml中找不到相关的配置。解决方式修改...
原创
14797阅读
3评论
3点赞
发布博客于 2 年前

【exception】Could not read document Invalid UTF-8 middle byte 0x3f

今天开发完功能后打包部署到服务器后页面操作出现这个问题,花了点时间分析解决了,记录一下问题描述在本地开发测试的时候没有问题,但是打成jar包放到windows server运行后,在页面点击,调用接口抛出了这个异常。一开始以为是数据库中出现了特殊字符,用本地连接测试数据库发现没有问题,所以不是数据库的问题。所以分析是前后端编码和解码的问题。F12检查发现前端发送的是UTF-8的数...
原创
5092阅读
7评论
1点赞
发布博客于 3 年前

【深入理解Java虚拟机】学习小结

第一章 走近Java摘书Java各个版本新特性1.0:Java1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。JDK1.0版本的代表技术包括:Java虚拟机、Applet、AWT等。1.1:JDK1.1版的技术代表有:JAR文件格式、JDBC、JavaBeans、RMI。Java语法也有了一定的发展,如内部类(Inner Class)和反射(Refle...
原创
205阅读
0评论
0点赞
发布博客于 3 年前

【Java】Observer和Observable实现观察者模式

今天看到一段代码很有意思,因为以前没有接触到过这两个类,所以简单的学习一下观察者模式我的理解就是有观察者和被观察者两个角色,当被观察者执行某些操作被观察者观察到后,观察者也做出相应的操作。我今天看到的代码是有个被观察者是一个单子,当这个单子的内容被更新的时候,将这个情况通知观察者,观察者是一个rest请求的发送器,观察者就会把这个单子变化的情况推送到其他需要知道单子被修改的地方。刚开始看...
原创
311阅读
0评论
0点赞
发布博客于 3 年前

【Java】Future和Callable

Future和Callable是多线程中常见的两个类,在Java并发编程实战中有多次提及,写了一个demo演示一下类的作用Callable了解线程肯定知道Thread这个线程类,但是一般实现自定义的线程的时候都是实现Runnable这个接口,重写抽象方法run()的。但是这个run()方法是没有返回值的,有的时候我们需要做异步操作,而且需要得到这个操作的返回值,这个时候Callabl...
原创
128阅读
0评论
0点赞
发布博客于 3 年前

【mybatis】mybatis调用sqlserver存储过程和表值函数

存储过程和表值函数的区别最简单的区别是存储过程是pr开头的,而存储过程是fn开头的,表值函数返回的是一个表结构的结果。如果mybatis用调用存储过程的方式去调用表值函数,就会抛出以下的异常:exception:不能调用'xxxxx',因为'xxxx'是表值函数对象。调用存储过程如果要调用一个叫做“pr_test_a”的存储过程,需要传入参数并且有返回值。如下所示,resultMap中存...
原创
2259阅读
0评论
0点赞
发布博客于 3 年前

【MongoDB】记录Java整合MongoDB方法和坑

记录下最近刚操作MongoDB出现的坑第一种方式使用MongoTemplate操作,这个是在springboot中整合了mongodb的常见方法。添加依赖&amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.springframework.boot&amp;amp;lt;/groupId&amp;amp;gt; &amp;amp;lt;artifa
原创
457阅读
0评论
0点赞
发布博客于 3 年前

【Vue.js】兄弟组件之间调用对方的方法

参考:Vue兄弟组件之间如何调用对方的方法概述兄弟组件之间的通讯有一个方法是通过父组件进行交互,那么解决的思路就是子组件调用父组件的方法,然后父组件调用另一个子组件的方法,这样就实现了兄弟组件的交互功能。父组件调用子组件方法首先被父组件调用的子组件方法定义一下appendToTree({param}){ console.log('这是子组件tree...
原创
14629阅读
10评论
3点赞
发布博客于 3 年前

【数据库锁】乐观锁、悲观锁理解

参考: MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解乐观锁乐观锁最简单的实现就是在表中加一个版本号字段如version,每次新增设置为1,更新的时候检查版本号是否一致,如果不一致就更新失败。版本一致才能更新,然后将版本号+1。悲观锁首先数据库需要关闭自动提交功能,或者说是在jdbc中将自动提交设置成false。共享锁...
原创
173阅读
0评论
0点赞
发布博客于 3 年前

【JAVA并发编程实战】学习小结

第一章 简介摘书线程会共享进程范围内的资源,例如内存句柄和文件句柄,但每个线程都有各自的程序计数器(Program Counter)、栈以及局部变量等。在同一个程序中的多个线程也可以被同时调度到多个CPU上运行。第二章 线程安全性摘书Java中的主要同步机制是关键字synchronized,它提供了一种独占的加锁方式,但“同步”这个术语还包括volatile...
原创
151阅读
0评论
0点赞
发布博客于 3 年前

【安全】公钥和私钥的理解学习

参考王希:知乎回答公钥,私钥和数字签名这样最好理解原因今天在看某个区块链开源框架源码的时候看到了RSA相关的加密和解密操作,想起来以前用git的时候也遇到过生成公钥和私钥,用了几次,但是没有深入的研究过,所以这次要弄明白这两个钥匙的左右。看了上面参考的两个老哥的解释,大致上有一个简单的了解,虽然不知道内部的实际加密方式是怎么样的,但是这个体系的工作原理可以疏通了。场景...
原创
721阅读
0评论
0点赞
发布博客于 3 年前

【算法】bcrypt加密算法学习

应用场景今天在看架构师的源码的时候发现了bcrypt这个加密算法,发现这个是放在权限包中,和用户的登录时密码的加密检查有关,所以查看了相关的资料了解一下这个算法。以前自己写用户的登录时,密码的加密使用的是 salt+md5 的方式。salt是自己定制的一个规则针对不同的用户生成,如用户注册的当前时间加上指定的字符串然后进行hash生成。校验密码就是获取到用户的注册时间重新进行一边加密,检查...
原创
841阅读
0评论
0点赞
发布博客于 3 年前

【算法】snowflake算法学习

应用场景分布式系统需要一个id生成服务,让全局的id是唯一的,并且是有序的。如果用UUID或者是字符串很容易实现,但是公司的DBA说是最好用long型,这方便数据库层的操作,取模进行分库分表等。查了网上关于这方面的内容,发现了这个Twitter的snowflake算法,取这个名字大概也是有世界上没有两片相同的雪花的意思吧。位数说明long型一共是64位,其实就是将这64分成几个部分...
原创
435阅读
0评论
0点赞
发布博客于 3 年前

【IDEA】idea插件的安装和删除

安装在 setting-plugins-browse reponsitories 中搜索安装如果下载缓慢,自己下载的插件,手动安装顺序为: 把下载的插件复制到IntelliJ IDEA安装程序的plugins文件夹中。进入setting &gt; plugins &gt; install plugin from disk 找到放入的jar包点击apply安装完插件需要重启删...
原创
8267阅读
0评论
0点赞
发布博客于 3 年前

【数据结构】红黑树的学习

以下内容主要参考wiki上红黑树的相关介绍定义是一种自平衡二叉查找树。所谓的平衡树,意思就是在插入和删除节点的时候,通过旋转rotate树的方式调整树的高度h,将查询n个节点的树内某个节点的时间复杂度保持在O(log n)左右。二叉树表明红黑树一个节点只会有左右两个子节点。典型的用途是实现关联数组关联数组就是K-V形式的数据格式。Java的HashMap中就用到...
原创
101阅读
0评论
0点赞
发布博客于 3 年前

【mysql】win10环境mysql 5.7.22的安装

安装过程官网下载MySQL Community Server 版本自己定,我下载的是 5.7.22解压MySQL压缩包将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是:”D:\Program Files\mysql\mysql-5.7.22-winx64”,解压的文件夹中新建一个配置文件my.ini,复制下面的配置信息到 my.ini 保存,需要修改的地方是basedi...
原创
226阅读
0评论
0点赞
发布博客于 3 年前

【springboot】spring boot配置总结

springboot配置jpaspring.jpa.hibernate.dialectsqlserver:org.hibernate.dialect.SQLServer2012Dialectmysql:org.hibernate.dialect.MySQL5Dialectdruid基础配置# SQL_SERVERspring: datasou...
原创
1153阅读
0评论
0点赞
发布博客于 3 年前

【数据结构】Merkle tree学习

描述学习比特币的数据结构看到的,原来以为是一种刚出来的数据结构,阅读了一些文档后才发现这个数据结构是蛮经典的。比如在下小电影的时候也会用到这个东西。学习hash用到这个首先要先知道hash,关于hash的原理和生成我不清楚,这个太底层了。一般可以理解是某一些特定的算法可以为某个文件生成指定长度的唯一字符串,而这个字符串可以代表这个文件。如果两个文件的hash值一致,可以认为...
原创
614阅读
0评论
0点赞
发布博客于 3 年前

【T-IO】t-io 的学习笔记

功能类学习ObjWithLock描述:自带读写锁的对象代码:package org.tio.utils.lock;import java.io.Serializable;import java.util.concurrent.locks.ReentrantReadWriteLock;import java.util.concurrent.locks.Reentr...
原创
4463阅读
0评论
1点赞
发布博客于 3 年前

【redis】fastjson 中的 FastJsonRedisSerializer 学习

FastJsonRedisSerializer 对 Java Object 写入和读取redis的操作支持场景开始学习redis刚开始学习的时候用的是 redis 的 RedisTemplate,这个比较好上手:@Autowired private RedisTemplate redisTemplate;ValueOperations&amp;amp;lt;String, ...
原创
4042阅读
3评论
0点赞
发布博客于 3 年前

【linux】Linux调试记录

关闭系统的蜂鸣声描述刚安装完 linux 后,在输入命令或者用 vi 编辑的时候会发出报警的蜂鸣声,很难受。方法打开 inputrc 文件vi /etc/inputrc找到里面的设置 bell-style#set bell-style none将前面的 # 去掉,让这个配置生效set bell-style none然后重启系统就...
原创
112阅读
0评论
0点赞
发布博客于 3 年前

【redis】使用redis出现的问题汇总

通过wget下载redis资源失败命令:wget http://download.redis.io/releases/redis-2.8.3.tar.gz描述:这一步是通过wget在redis官网中下载安装包,在这里失败了原因:虚拟机中刚安装的centOS,没有wget软件,安装一下就好解决:yum -y install wgetmake安装解压完的redis安装包失败...
原创
1555阅读
0评论
0点赞
发布博客于 3 年前

【socket】netty中粘包问题的解决策略

参考《netty权威指南》消息定长,例如每个报文的大小为固定长度200字节,不够用空格补充在包尾增加回车换行符进行分割,如ftp协议将消息分为消息头和消息体,消息头中包含消息总长度(或者消息体长度)的字段,通常的设计思路为消息头的第一个字段使用int32来表示消息的总长度更复杂的应用层协议...
原创
489阅读
0评论
0点赞
发布博客于 3 年前

【sqlserver】比较sqlserver中 timestamp 类型的大小

工作中遇到一个问题,在 sqlserver 表中根据 timestamp 字段值的大小进行一个增量的读取。这个数据格式比较特别,所以花了一段时间研究了一下。timestamp 是什么原来我看名字以为是一个时间戳,是一个 long 型,但是看了 Stack Overflow 上有关的问题,其实这个是一个版本号(version_no),是数据库自己维护的,当这条数据有变化的时候(包...
原创
6824阅读
0评论
0点赞
发布博客于 3 年前

【mysql】mysql优化策略

案例来自《MySQL管理之道》not in 子查询优化not in 后跟子查询select SQL_NO_CACHE count(*) from test1 where id not in( select id from test2 ...
原创
152阅读
0评论
0点赞
发布博客于 3 年前

【SSO】如何实现一个简单的单点登录

子系统的统一认证交给SSO来解决,这样可以实现一处登录后,登录其他系统后就不需要再次输入账号密码。下面记录一下自己的实现逻辑,代码以后有空补充。设置全局拦截器在子系统上设置全局拦截器,排除登录相关的请求,其他请求都需要检查登录信息。将请求信息(主要是session,请求request和你认为必要的参数信息)发送到SSO系统,由SSO系统统一处理。至于怎么访问SSO系统,可以配置...
原创
895阅读
0评论
0点赞
发布博客于 3 年前

【blogs】值得一读的博客收藏

带给我有启发的博客收藏,觉得不错请支持原作者,这个博客会随着自己的学习不断更新。JVMJVM垃圾收集器和内存分配策略springbootSpring boot Mybatis 整合(完整版)架构高并发面试必问:技术架构...
原创
167阅读
0评论
0点赞
发布博客于 3 年前

【sql】用sql获取数据库中所有表名

sqlserverUSE db_nameSELECT name FROM sysobjects WHERE xtype='U'GOmysqlSELECT table_name FROM information_schema.TABLES WHERE TABLE_SCHEMA='db_name'
原创
140阅读
0评论
0点赞
发布博客于 3 年前

【exceptions】简单异常汇总

今天在接口的开发中遇到一个问题,把对方表中的数据导入到本地数据库的时候mybatis抛出这个错误原因对方的数据中一个时间的字段中存在错误的数据0000-00-00 00:00:00mybatis插入数据库的时候发现解析后的时间年份小于公元后1年,抛出了这个异常PS异常中的AD意思就是公元后的意思,所以异常的完整意思是:只能接受公元后范围的日期
原创
980阅读
0评论
1点赞
发布博客于 3 年前

【mybatis】mybatis中判断数组参数的下标是否为最后一个

在遍历数组参数拼接sql的时候,最后一个参数不需要某些关键字,所以需要判断是否为循环的最后示意&amp;lt;select id=&quot;count&quot; parameterType=&quot;list&quot; resultType=&quot;java.lang.Integer&quot;&amp;gt; &amp;lt;if test=&quot;list!=null and list.size
原创
4328阅读
0评论
1点赞
发布博客于 3 年前

【exceptions】com.alibaba.druid.sql.parser.ParserException: Error : LBRACKET

用sql查询的时候出现这个错误com.alibaba.druid.sql.parser.ParserException: Error : LBRACKET at com.alibaba.druid.sql.parser.SQLParser.as(SQLParser.java:87) at com.alibaba.druid.sql.parser.SQLSelectParser.pa
原创
9539阅读
0评论
0点赞
发布博客于 4 年前

【utils】用于前端展示树结构的工具类

应用场景 : 有的时候 , 前端需要展示出一个分类以及这个分类下的子分类 , 一层一层形成树结构定义节点首先定义每一个类型为一个节点 , 定义它的必要属性package com.starw.cloudy.utils.treeTools;import java.util.ArrayList;import java.util.List;/** * 节点 */public class Node
原创
600阅读
0评论
0点赞
发布博客于 4 年前

【utils】通过枚举中的某个字段值获取枚举的EnumUtil工具类

有的时候遇到这种情况 , 我们有枚举的其中一个字段的值 , 然后通过这个值获取枚举或者其他字段的信息 , 如果没有工具类 , 就需要在每个枚举中添加相应的方法 , 通过工具类的方法可以减少代码量 , 更加简洁美观创建一个接口 CommonEnum/** * 枚举接口 */public interface CommonEnum { int getValue();}枚举实现这个接口/**
原创
6726阅读
0评论
2点赞
发布博客于 4 年前

【utils】java中调用cmd实现把jar包导入maven管理

在做接口开发常用的工具类项目, 想要在java中调用cmd来实现一些命令, 这里是把一个存在的jar包导入到maven中管理代码public static String addJar2Maven(String path, String groupId, String artifactId, String versionId, St
原创
387阅读
0评论
0点赞
发布博客于 4 年前

【sqlserver】将一张表中的数据插入到另一张表中

应用场景: 有的时候需要把数据从老表迁移到新表中insert into tableA(fieldA1, fieldA2, fieldA2)selectfieldB2, fieldB2, fieldB3fromtableB
原创
2842阅读
0评论
1点赞
发布博客于 4 年前

【Java】Java中webservice的简单理解

最近到了新公司, 需要开发webservice接口. 以前只开发过http形式的接口, 学习了一些后总结一下发布学习心得什么是webservice具体的底层是什么不知道, 学习下来自己的理解就是一个client和server之间通过socket通信的方式. server将可以提供的服务接口发布出来, client通过server发布的wsdl得到可以使用的接口代码的处理类, 然后在client中直接
原创
302阅读
0评论
0点赞
发布博客于 4 年前

【Java】获取当前方法的方法名

有的时候需要知道当前执行的方法的方法名, 方法如下:String method = Thread.currentThread().getStackTrace()[1].getMethodName();
原创
2681阅读
0评论
0点赞
发布博客于 4 年前

【tomcat】tomcat常见操作记录

以下都以tomcat7.0为例怎么修改端口号在 tomcat->conf->server.xml 这个xml文件中配置,在64行左右<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>默认是8080,此处可以修改成你想要的合法并且不冲突的端口号修改tomcat的默认字
原创
520阅读
0评论
0点赞
发布博客于 4 年前

【源码分析】HashMap的数据结构

之前有研究Java源码中HashMap的put()方法的实现,后来又看了HashMap的整体数据结构,记录一下什么是HashMap经常用到HashMap,用来存储数据,在某些框架中可以替代javabean,主要特点如下:key-value形式的键值对非线程安全的存储数据的数据和插入顺序无关其中和HashMap差不多但是是线程安全的类是HashTable,但是很少用,一般都是用Concurr
原创
262阅读
0评论
0点赞
发布博客于 4 年前

【utils】将指定的mysql数据库中的表生成java实体类

开发的过程中需要将数据库中的database中的tables和java中的对象一一对应,如果自己写很麻烦,借助小程序可以快速生成import java.io.File;import java.io.FileWriter;import java.io.PrintWriter;import java.sql.Connection;import java.sql.Database...
原创
3189阅读
9评论
2点赞
发布博客于 4 年前

【exceptions】java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxxxx

这个问题是我在用jackson将字符串准换成指定对象的List,转换的时候没有异常,但是通过for循环拿出对象使用的时候出现的问题.原来我的转换是写在controller里面,后来为了通用准备写到工具类中,但是发现一个问题,就是在controller中可以正确转换并在service中使用,通过工具类来获取后就在service中使用出抛出这个异常.controller中的处理// json解析器O
原创
21445阅读
3评论
1点赞
发布博客于 4 年前

【JFinal】JFinal的拦截器获取和修改controller返回的json对象

感谢JFinal框架作者老哥詹波的指点public class JsonInterceptor implements Interceptor { @SuppressWarnings("unchecked") @Override public void intercept(Invocation inv) { inv.invoke(); //这里
原创
4075阅读
2评论
2点赞
发布博客于 4 年前

【utils】基于jackson的解析转换JsonUtil

jackson version: 2.8.6/** * @description json工具类,依赖jackson * @author paul * @date 2017年7月10日 上午10:54:43 * @update 2017年7月10日 上午10:54:43 * @version V1.0 */public class JsonUtil { private s
原创
1983阅读
0评论
1点赞
发布博客于 4 年前

【JFinal】JFinal中的文件改动后jetty服务器重启动的实现

参考: JFianl 2.2用JFianl开发web项目的时候,发现修改文件后会重新启动,感到很好奇,所以研究一下实现的方法实现的基本步骤找到项目的根目录将项目文件中的所有文件的最近修改时间和文件大小在Map中进行保存通过java的timer定时器保存文件并检查map是否一致不一致则调用服务器的stop()方法,然后重新初始化服务器,再重新start()Scanner扫描类public
原创
959阅读
0评论
0点赞
发布博客于 4 年前

【jQuery】jQuery实现checkbox的全选/反选逻辑

在开发过程中,会遇到需要进行一个checkbox队多个checkbox进行全选的逻辑假如有一个网页,是这样的<input id='selectAll'/><label for='selectAll'>全选</label><input class='day' id='monday'/><label for='monday'>星期一</label><input class='day' id='tu
原创
1358阅读
0评论
0点赞
发布博客于 4 年前

【数据结构】二叉树的学习

二叉树(BinaryTree)为什么要选择二叉树?二叉树的出现是一种折中的选择.因为本人是做Java开发的,所以下面的举例都以Java为开发语言.在Java的集合框架中,有两个常见的List,一个是ArrayList,一个是LinkedList.ArrayList是基于数组实现的List,在数组中遍历元素很快,因为只需要获取下标就可以拿到元素,但是在增删元素的时候效率不好.设想一下,一个数组的中间插
原创
264阅读
0评论
0点赞
发布博客于 4 年前

【mysql】mysql按时间查询没有某些时间导致数据缺失的解决方法

在做图表的时候,会有需要连续时间的记录的需求.但是假如按照时间查询的时候,某一个时间点的并没有产生数据,导致数据的缺失,按照平时的关联查询,会导致中间的数据出现丢失.本来一个月30天的数据,可能就只有十几天的数据.因此,请教了公司的前辈得到了一个解决方法代码SELECT b.name,b.dtFROM ( SELECT * FROM ( SELECT '2017
原创
2594阅读
0评论
0点赞
发布博客于 4 年前

【js】点击网页的文字变成input内的文字并且选中文字方便复制

在一些table中,需要复制里面的内容,如关键的单号之类的,用以下的方法可以快速选中function getDocNoString() { //是否生效 var isEffect = true; $(".docNoString").on("click", function(e) { //阻止冒泡,这个方法可以看我之前的博客 cancelBub
原创
2458阅读
0评论
0点赞
发布博客于 4 年前

【Java】Java中判断进行数据库批量操作是否成功

第一种的方法是跟同事学的int[] result = Db.batchSave(list, list.size());for (int i : result) { if (i < 0 && i != Statement.SUCCESS_NO_INFO) return false;}return true;第二种是我自己想的//JFinal中是用Db完成的int[] resul
原创
3161阅读
0评论
0点赞
发布博客于 4 年前

【Java】Java中Integer和int比较大小出现的错误

Java的Integer类有一个内部类,缓存着一个常量池.private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be
原创
1637阅读
0评论
0点赞
发布博客于 4 年前

【Java】Java根据路径获取图片偶尔会得不到图片问题的解决方法

在保证图片路径正确的情况下,可能是获取图片流的方式不对. 我在用Java.awt.*相关的包调用系统打印机进行打印的时候,会出现打不出图片的情况, 这个时候换一种读取图片的方式就可以了//这种方式会出现偶然丢失图片的情况,有的时候打得出来有的时候打不出来//Image image = ToolKit.getDefaultToolKit().createImage("eg.jpg");
原创
1656阅读
0评论
0点赞
发布博客于 4 年前

【css】使后加的css样式强制生效

有的时候会出现不知道为什么有的css样式被各种顶掉,不能正确显示.为了偷懒,直接找到这方法使用加上!important再看看效果吧!.test { border: 1px solid #ccc !important; }
原创
5150阅读
0评论
0点赞
发布博客于 4 年前

【Java】Java中复制/克隆(Clone)一个对象

在开发过程中,可能会遇到我们需要一个和某个对象一样数据,但是不是同一个内存地址的新对象,这个时候就需要用到Clone()了. 不过要注意,Clone()分为浅拷贝和深拷贝.区别在于要拷贝的对象是否有非基本变量准备复制的对象代码public class CloneMan { /** * @fields id 克隆人id */ private int id
原创
757阅读
0评论
0点赞
发布博客于 4 年前

【js】通过js或者jQuery操作滚动条

通过定时器自动滚动滚动条var count = 0;var index = window.setInterval(function(){ count += 22;//每次滚动的距离 $(document).scrollTop(count);}, 1000);//循环时间当滚动条滚动到底部的时候触发事件$(window).scroll(function () { //当滚动
原创
336阅读
0评论
0点赞
发布博客于 4 年前

【Java】Java遍历删除集合中的元素

在循环遍历集合并进行删除功能的时候,要用到迭代器Iterator<E> it = list.iterator();//这里的list指某个集合while (it.hasNext()) { E e = it.next(); if (XXX) //删除规则 it.remove(); //注意,这里要用的是迭代器的remove()方法}
原创
280阅读
0评论
0点赞
发布博客于 4 年前

【算法】Java中的常见排序Sort

冒泡排序/** * @param arr * @return * @description 冒泡排序 * @author paul * @date 2017年5月30日 下午9:49:35 * @update 2017年5月30日 下午9:49:35 * @version V1.0 */public static int[] bubbleSort(int[] arr) {
原创
372阅读
0评论
0点赞
发布博客于 4 年前