- 博客(122)
- 收藏
- 关注
原创 win10配置jdk变量的一些坑
安装配置jdk环境变量时,有如下这么一项但是如果你是win10系统,这么配置就死翘翘了```;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;```需要把这两项拆开来,这么配才是对的。如下:
2021-04-12 10:42:42
201
原创 配置文件没有被打包进target的问题
今天在测试Class.getResourceAsStream()获取当前类所在包下面的资源文件时,一直无法正常获取,总是返回null。花了很多时间才发现Idea在编译类之后没有把我包下面的配置文件copy过去。因为Idea从13版本开始只支持外部编译,因此需要在pom.xml文件手动指定资源文件的目录。在maven中添加了以下配置之后,包下面的配置文件也就copy过去了,所以再次运行代码的时候就ok了。 smart src/main/java
2020-09-17 23:57:04
1329
原创 查找某个jar包是什么其他jar包引入的
在spring boot项目中,一般有很多个starter,这些starter会引入很多的jar包。我要查看某个jar包是哪些启动器或其他jar包引入的,可以如下操作
2020-09-17 23:55:11
2121
原创 netty启动过程详细图解
netty在使用时很简单。但往往api使用简单的框架,底层实现会非常复杂。本图就是,业务调用只是一个api,底层代码化繁为简之后画出的图也这么复杂。这里只是把图画出,具体的netty核心源码,以及一些其他中间件的源码请移步查看我的公众号。...
2020-07-12 21:22:12
516
原创 Netty启动过程源码剖析
一、netty自带的example代码public final class EchoServer { static final boolean SSL = System.getProperty("ssl") != null; static final int PORT = Integer.parseInt(System.getProperty("port", "8007")); public static void main(String[] args) throws Exce
2020-05-31 10:25:31
293
原创 容器中访问项目接口
可通过域名访问(就跟容器外用postman访问一样)/ # curl -X GET 'https://api.vskit.tv/viskit-activity/pray/number'{"code":"0","msg":"success","data":{"innerCode":"0","innerMsg":"Success","prayNumber":4013166}}也可以换成容器的ip地址或localhost来访问/ # curl -X GET 'localhost:8080/viskit-
2020-05-26 14:51:20
1201
原创 零拷贝总结
1.缓冲区一个java进程发起read请求加载数据大致的流程图:2.虚拟内存所有现代操作系统都使用虚拟内存,使用虚拟地址取代物理地址,好处是:1)多个虚拟地址可以指向同一个物理内存地址2)虚拟内存空间可大于实际可用的物理地址;利用第一条特性可以把内核空间地址和用户空间的虚拟地址映射到同一个物理地址,这样DMA就可以填充对内核和用户空间进程同时可见的缓冲区了。3.传统的文件数据步骤:1)系统调用read方法,上下文切换到内核态(切换),DMA把磁盘数据复制到内核缓冲区2)read调用
2020-05-23 10:40:43
429
原创 找不到对应的Mapper,原来是@MapperScan注解的basePackages
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.transsnet.vskit.cms.dao.vskit_activity.extmapper.ExtCheckInMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency an
2020-05-15 14:18:54
7212
原创 JAVA的对象list参数的校验
对于普通的对象参数校验,那很容易,直接在需要校验的属性上加上@NotNull、@NotBlank等注解即可。比如:public class Dog{ //一堆校验属性}然后在做参数使用时,用@Validated注解即可public AjaxResult<JsonNode> saveOrUpdate(@RequestBody @Validated Dog dog) throws Exception {}但是如果参数是对象组成的list,那这么做是无效的。这时的解决办法有两种:
2020-05-12 18:02:54
6835
原创 netty原理
面试问题:1、为什么不用开源的fastdfs,而自己手写?答:因为fastdfs很烂,不是用java写的,不好看源码,经常线上出点问题看不懂。2、为何要自研微服务注册中心?答:因为eureka已经不维护了,非常不活跃,有很多性能问题和bug,难以支撑大规模的系统部署...
2020-05-01 17:22:52
196
原创 020_对照原生NIO代码看看Netty如何创建ServerSocketChannel
1、服务端初始化代码ServerBootstrap serverBootstrap = new ServerBootstrap(); // 相当于Netty的服务器 serverBootstrap .group(parentGroup, childGroup) .channel(NioServerSocketChannel.class) // 监听端口的ServerSock...
2020-04-28 08:38:55
212
原创 泛型和枚举
泛型方法:注意与泛型类的区别。方法的形参符号不能与所属类一样。什么类需要定义为泛型类。比如BaseDAO.泛型方法,返回值前面一定有(或T等其他字母)泛型类和泛型接口没啥区别,就是接口和类的区别枚举类可以用于实现单例模式,这时的枚举只有一个对象。一般情况下,如果一个类不重写tostring方法,则打印的是地址值。enum的父类Enum中已经重写了一个tostring方法,打印的是枚举的...
2020-04-27 22:29:25
405
原创 mybatis plus分页失效(官方文档漏了一点)
https://mp.baomidou.com/guide/page.html按照mybatis的官方文档搭建分页功能,发现失效,把sql查到的数据全返回来了。解决:在数据源的配置类中,在构建SqlSessionFactory时加上这两行代码// 关键代码 设置 MyBatis-Plus 分页插件 Interceptor[] plugins = {pagin...
2020-04-27 21:04:42
2696
5
原创 记录一次mybatis的Invalid bound statement (not found)的异常
我的项目之前的dao部分完全是全java+注解,并没有配置xml文件。现在引入了mybatis.generator自动生成dao和xml映射文件后,写了一个接口,调用时报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):一开始一直在检查,自动扫描的包路径是否写对,springboo...
2020-04-26 17:33:42
202
原创 docker安装mysql
1、下载mysql镜像即使配置了两个国内镜像,下载mysql仍然很慢。解决办法就是直接指定镜像源,很快docker pull daocloud.io/library/mysql2、安装mysqldocker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d daocloud.io/library/mysql注意点...
2020-03-05 11:12:08
273
原创 ubuntu虚拟机,可以ping通域名和主机,但是浏览器不能上网
根据nat配置好网络,和dns地址后,可以ping通域名和主机,但是浏览器不能上网,花了好大的时间折腾。后面发现是谷歌浏览器设置了代理,并且在使用时默认使用代理出去,如下所示但是这个代理并没有开启,所有就会出现不能使用。解决办法:方法1)浏览器设置proxy的那个插件,选择直接连接方法2)通过如下命令打开代理ssh -qTfNn -D xxxxx...
2020-03-04 21:24:39
3632
原创 docker,阿里镜像失效的解决办法
创建好docker之后,运行以下命令,报错说网络不能连接。docker run hello-world这是因为默认从国外的仓库下载。配置阿里云镜像加速如下:{ "registry-mirrors": ["https://xxxxx"]}这时运行docker run hello-world,是可以执行成功了。但是报错了,也是网络问题。参照这篇文章的解决办法,https://b...
2020-03-04 11:28:14
7258
原创 LinkedBlockingQueue的构造过程
LinkedBlockingQueue的构造LinkedBlockingQueue<String> linkedBlockingQueue = new LinkedBlockingQueue<String>(20);构造函数public LinkedBlockingQueue(int capacity) { if (capacity <= 0) thr...
2020-01-04 22:32:55
477
原创 ConcurrentLinkedQueue总结
offer的多线程并发安全if (p.casNext(null, newNode)) {上面这行代码通过CAS操作入队,同一时间只有一个线程可以成功。其他线程入队失败,然后死循环,不断尝试让指针往后挪动到最后一个尾部节点,再次尝试用CAS将自己入队,加入队尾。...
2020-01-04 19:51:56
576
原创 ConcurrentLinkedQueue多线程安全的并发删除队列元素
1、remove方法public boolean remove(Object o) { if (o != null) { Node<E> next, pred = null; for (Node<E> p = first(); p != null; pred = p, p = next) { boole...
2020-01-04 10:55:26
2576
原创 ConcurrentLinkedQueue的peek
1、peek函数public E peek() { restartFromHead: for (;;) { for (Node<E> h = head, p = h, q;;) { E item = p.item; if (item != null || (q = p.next) == null) { ...
2020-01-04 09:53:31
815
原创 ConcurrentLinkedQueue出队
出队函数public E poll() { restartFromHead: for (;;) { for (Node<E> h = head, p = h, q;;) { E item = p.item; if (item != null && p.casItem(item, null...
2020-01-02 07:55:41
515
原创 ConcurrentLinkedQueue的offer方法
1、构造函数public ConcurrentLinkedQueue() { head = tail = new Node<E>(null);}点击new Node(null)进入如下代码Node(E item) { UNSAFE.putObject(this, itemOffset, item);}这里的itemOffset是item这个属性相对于No...
2020-01-01 09:42:21
3503
原创 CopyOnWriteArrayList
空参构造函数public CopyOnWriteArrayList() { setArray(new Object[0]);}构造一个空数组,调用setArray将其赋值给成员变量array。final void setArray(Object[] a) { array = a;}成员变量array用volatile修饰。private transient vol...
2019-12-31 22:35:29
210
原创 JDK1.7的HashMap源码
1、构造函数(默认)static final int DEFAULT_INITIAL_CAPACITY = 16;static final float DEFAULT_LOAD_FACTOR = 0.75f;public HashMap() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR);}默认的大小为16,负载因子...
2019-12-13 16:27:05
174
原创 json总结
Java中并没有内置JSON的解析,因此需要借助第三方类库。常用的有:1)Gson: 谷歌2)FastJson: 阿里巴巴3)JacksonFastJsonJSON.parseObject() :从字符串解析 JSON 对象JSON.parseArray():从字符串解析 JSON 数组JSON.toJSONString(obj/array):将 JSON 对象或 JSON 数组转化...
2019-11-01 15:41:07
126
原创 spring boot项目引入feign
1.pom文件加入如下内容<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId></dependency>2.在主类中加入如下注解@EnableFei...
2019-10-06 22:41:23
1390
原创 spring boot整合redis
1.pom.xml<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId></dependency>2.在Application主类中初始化一个jedis连接池。@Beanpublic JedisPool jedi...
2019-10-06 10:35:55
164
原创 spring boot整合rabbitmq
1.pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>2.application.yml...
2019-10-06 10:26:03
118
原创 hystrix扩容、限流、熔断
1.hystrix自动扩容与缩容1)coreSize设置线程池的大小,默认是10。2)maximumSize设置线程池的最大大小,只有在设置allowMaximumSizeToDivergeFromCoreSize的时候才能生效,默认是10。3)keepAliveTimeMinutes设置保持存活的时间,单位是分钟,默认是1。设置了一个线程多长时间空闲之后,就会被释放掉。4)allo...
2019-10-06 10:20:04
524
原创 H5联调跨域解决
1、文件1:interface CorsInfo { /** * 请求头token校验信息 */ String HTTP_HEADER_X_AUTH_VALUE = "X-Auth-Value"; /** * 请求头用户id */ String HTTP_HEADER_X_USER_NAME = "X-User-Name"; /** * 请求头用...
2019-09-27 17:57:00
2083
原创 hystrix,生产上线程池大小以及timeout超时时长设置
1、一般流程(1)一开始先不要设置timeout超时时长,默认就是1000ms,也就是1s(2)一开始也不要设置线程池大小,默认就是10(3)直接部署hystrix到生产环境,如果运行的很良好,那么就让它这样运行好了(4)让hystrix应用,24小时运行在生产环境中(5)依赖标准的监控和报警机制来捕获到系统的异常运行情况(6)在24小时之后,看一下调用延迟的占比,以及流量,来计算出让...
2019-09-27 08:29:12
1133
1
原创 hystrix总结三
1、请求合并时,可以设置一个batch size,以及elapsed time。2、有两种合并模式,request scope、global scope,默认是rquest scope,在collapser构造时指定scope模式。3、批量查询,HystrixObservableCommand,HystrixCommand+request cache,都是每个商品发起一次网络请求,批量过来后...
2019-09-26 22:33:32
225
原创 PageHelper 分页,total总数等于每页数量的问题解决
1)Mapper文件代码如下:@Select("select phone_charge,status,created_time from order_management where " + "user_id =#{userId} and created_time > #{timeLower} order by created_time desc")Li...
2019-09-23 16:49:23
13937
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人