java线程的几个状态
Thread类中定义了线程的几个状态 继续阅读→
阅读全文Thread类中定义了线程的几个状态 继续阅读→
阅读全文每个请求按时间顺序分配到不同后端服务器,如果某个后端服务器宕机,能自动剔除掉。
继续阅读→
在了解TCP三次握手,前先了解TCP用来确认链接和数据顺序要用到的报文头
序号(seq):表示发送的数据字节流,确保TCP传输有序,对每个字节编号
确认序号(ack):发送方期待接收的下一序列号,接收成功后的数据字节序列号加 1。只有ACK=1时才有效。
ACK(Acknowledge character):确认序号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认序号信息
SYN(Synchronize Sequence Numbers):连接请求序号标志,用于建立连接,SYN=1表示请求连接
FIN:结束标志,用于释放连接,为1表示关闭本方数据流
继续阅读→
TCP是面向链接的,UDP是面向报文的
继续阅读→
HashMap的数据结构:HashMap的数据结构为 数组+(链表或红黑树)
为什么采用这种结构来存储元素呢?
继续阅读→
OSI协议有7层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP/IP:是一个协议到集合,由很多协议组成
TCP/IP:有四层组成,又上往下:应用层,传输层,网络层,数据链路层
继续阅读→
Statement 和 PreparedStatement之间的关系和区别.
关系:PreparedStatement继承自Statement,都是接口
区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高
继续阅读→
首先我们定义一个类用于测试:
继续阅读→
例如我要找
com.zengbingo.*下面的所有的类?我们可以用spring提供的PathMatchingResourcePatternResolver
继续阅读→
jps : 虚拟机进程状况工具
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method; -m:输出main method的参数; -l:输出完全的包名,应用主类名,jar的完全路径名,进程号; -v:输出jvm参数 ; -V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件 ;阅读全文
迭代算法,也称辗转算法,是一种不断用变量的旧值递推新值的过程。
递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换
能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出 继续阅读→
递归调用还是经常用得到的,这里用一个求阶乘的问题来写一个demo。
递归和递推的区别,
递推类似多米诺骨牌,根据前面得到后面
递归类似大事化小
例如
2的阶乘 : 1 * 2
3的阶乘 : 1 * 2 * 3
4的阶乘 : 1 * 2 * 3 * 4 继续阅读→
逆推算法
一个实例,不能用明推时,可以考虑用逆推的方式 继续阅读→
记录运行是GC详细数据信息并输出
-XX:+PrintGCDetails阅读全文
jvm的命令行选项包括:
standard options,会保持前后兼容性
nonstandard options(-X),可能会发生变化
developer options(-XX),有特定的系统要求,或需要调整特定的系统参数
继续阅读→
为了更快看到结果,我们将JVM的启动参数配置为:
-XX:+HeapDumpOnOutOfMemoryError -Xmx10m -Xms10m阅读全文
1、运行时导出
jmap -dump:format=b,file=[文件路径] [pid]阅读全文
$ wget –no-check-certificate ‘https://x.x.x.x/test’
$ curl -k ‘https://x.x.x.x/test’
阅读全文1.IDEA中默认assert(断言)是关闭,开启方式如下:
简单来说:就是设置一下jvm的参数,参数是-enableassertions或者-ea(推荐)。
继续阅读→
首先下载安装jprofiler:
http://www.ej-technologies.com/download/jprofiler/files 继续阅读→
MAT:Memory Analyzer tool
首先先去下载:https://www.eclipse.org/mat/downloads.php
继续阅读→
docker的常用网络模式
None网络:这种网络模式下容器只有lo回环网络,没有其他网卡。none网络可以在容器创建时通过 –network=none 来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。
继续阅读→
首先安装maven
apt-get install maven
执行后,使用命令查看安装
mvn -version阅读全文
首先定义一个数组
double[] a = {1,2,3};
数组转list(java 1.8)
List<Double> list = Arrays.stream(a).boxed().collect(Collectors.toList());
list转数组
Double[] b = new Double[list.size()]; list.toArray(b);
list颠倒顺序
Collections.reverse(list);阅读全文
使用synchronized字段让部分代码或者方法串行执行
使用wait方法,让当前线程进行等待
使用notify方法通知其它线程,锁将要被释放(要等synchronized代码都执行完才释放)
继续阅读→
synchronized字段可以让部分代码,或者方法,在多个线程都要执行时,串行执行
继续阅读→
* 线程的join
* 「当前线程」中,执行「其他线程」的join方法,「当前线程」会进入阻塞,待「其他线程」执行结束后,才会往下继续执行
*
* 时用场景:
* 例如需要批量拉取不同接口的数据,然后统一返回
继续阅读→
sleep、wait的进程都可以被interrupt打断,以此可以避免死等待
阅读全文* 线程的sleep
* 线程的yield
* 线程的优先级 继续阅读→
守护线程
具备自动结束生命周期的功能
又叫后台进程,在主线程关闭时,同时跟随主线程一起关闭 继续阅读→
一、复制文件
这里使用输入输出缓冲区(BufferedInputStream、BufferedOutputStream),以提高性能,如果文件比较小的话,可以不用
先下载lombo插件,然后在编译构建的适合使用注解处理器 继续阅读→
阅读全文编辑demo.sh脚本内容如下
继续阅读→
一、菜单栏中选择File->New->Project/Module,然后按图片操作 继续阅读→
阅读全文@Param是MyBatis所提供的(org.apache.ibatis.annotations.Param),作为Dao层的注解,作用是用于传递参数,从而可以与SQL中的的字段名相对应,一般在2=< 参数数<=5时使用最佳。 继续阅读→
阅读全文我们要进行文件内容的逐层筛选,录入需要筛选关键词A和关键词B同时出现的文件。
思路是:
1、先筛选出A的文件列表
2、再在A的列表中筛选出包含B的文件列表 继续阅读→
阅读全文这里演示了前端js页面在实现webSocket客户端时使用的代码
如果你对后端java服务如何实现服务端感兴趣对话,可以查看这个作为关联学习(http://zengbingo.com/p/1491.html)
继续阅读→
WebSocket协议是基于TCP的一种新的网络协议,它实现了浏览器与服务器全双工(full-duplex)通信,即运行服务器主动发送消息给客户端,通常我们的http访问,都只能是又客户端访问驱动
下面将演示一下如何使用java spring搭建一个简单的服务端点
如果你对前端如何实现一个websocket客户端感兴趣,作为关联学习你可以查看(http://zengbingo.com/?p=1494)
在企业的实践生产中,可能需要使用一些定时任务,例如,月报,账单之类的,
除了使用第三方的定时任务例如唯品会提供的开源的分布式任务调度(saturn:https://github.com/vipshop/Saturn),
我们还可以自己在spring中简单的使用定时任务
继续阅读→
除了借助redis进行异步任务外,spring还提供了异步线程池自己完成异步处理任务。
Spring 提供了便捷的注解@EnableAsync,如果配置文件标注了它,那么Spring就会开启异步可用,这样就可用使用注解@Async驱动Spring使用异步调用
继续阅读→
短信、邮件、微信等通知,常常会用到发布订阅模式。
发布者发布消息后,订阅者根据消息去做对应等事情,比如一个订单购买成功的通知发布后,短信、邮件、微信等订阅者消费消息,并且推送给用户。
继续阅读→
我们知道,例如下面这样2条命令,实际上会分别前后开启2个不同的链接去设置值
redisTemplate.opsForValue().set("key1", "value1"); redisTemplate.opsForValue().set("key2", "value2");阅读全文
我们使用redisTemplate去set一个value时,在redis里面用key * 去获取,会发现不是正常的字符串。 继续阅读→
阅读全文1、序列化ID
序列化id不一致,导致无法反序列化。 继续阅读→
org.springframework.util.Assert;
Assert断言工具类,通常用于数据合法性检查 继续阅读→
阅读全文泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参阅读全文
Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。 继续阅读→
阅读全文在BaseController中注册@ExceptionHandle方法。那么该类中的异常都会由注册的异常方法处理,所以继承baseController的话,子类抛出异常,也会被捕获处理。 继续阅读→
阅读全文spring拦截器,可以通过实现HandlerInterceptor接口或者,实现WebRequestInterceptor接口
这里介绍实现HandlerInterceptor的用法: 继续阅读→
阅读全文