- 博客(26)
- 问答 (1)
- 收藏
- 关注
原创 以点破面——JAVA集合
集合类存放于Java.util 包中,主要有3 种:set(集)、list(列表包含Queue)和map(映射)。1. Collection:Collection 是集合List、Set、Queue 的最基本的接口。2. Iterator:迭代器,可以通过迭代器遍历集合中的数据3. Map:是映射表的基础接口ArrayList:1、排列有序,可重复2、底层使用数组3、查询快...
2019-07-08 23:41:20 227
原创 以点破面——JVM类加载机制
JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class 对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class 文件获取,这里既可以从ZIP 包中读取(比如从jar 包和war 包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将J...
2019-07-05 23:05:42 213
原创 以点破面——JAVA IO/NIO
JAVAIO阻塞IO模型最传统的一种 IO 模型,即在读写数据过程中会发生阻塞现象。当用户线程发出 IO 请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出 CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除 block 状态。非阻塞IO模型当用户线程发起一个 read 操作后,并...
2019-07-05 11:17:14 337
原创 以点破面——GC垃圾收集器
CMS 收集器Concurrent mark sweep(CMS)收集器是一种年老代垃圾收集器,其最主要目标是获取最短垃圾回收停顿时间,和其他年老代使用标记-整理算法不同,它使用多线程的标记-清除算法。最短的垃圾收集停顿时间可以为交互比较高的程序提高用户体验。CMS 工作机制相比其他的垃圾收集器来说更复杂,整个过程分为以下4 个阶段:1、初始标记只是标记一下GC Roots 能直接关联...
2019-07-05 00:26:21 171
原创 以点破面——垃圾回收与算法
如何确定垃圾1、引用计数法在Java 中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,即一个对象如果没有任何与之关联的引用,即他们的引用计数都不为0,则说明对象不太可能再被用到,那么这个对象就是可回收对象。当两个对象相互引用,同时失效,则无法进行回收。2、可达性分析为了解决引用计数法的循环引用问题...
2019-07-05 00:09:53 152
原创 以点破面——JVM运行时内存
Java 堆从GC 的角度还可以细分为: 新生代(Eden 区、From Survivor 区和To Survivor 区)和老年代。新生代是用来存放新生的对象。一般占据堆的1/3 空间。由于频繁创建对象,所以新生代会频繁触发MinorGC 进行垃圾回收。新生代又分为 Eden 区、ServivorFrom、ServivorTo 三个区。1、Eden区Java 新对象的出生地(...
2019-07-04 23:55:32 161
原创 以点破面——JVM内存区域
线程私有:1、程序计数器:是当前线程所执行的字节码的行号指示器;这个内存区域是唯一一个在虚拟机中没有规定任何OutOfMemoryError 情况的区域2、虚拟机栈是描述java 方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。栈帧随着方法调用而创建,随着方法结束而销毁。3、本地...
2019-07-04 23:40:25 132
原创 spring aop 监控接口返回时间
最近遇到一个问题,在仓库进行作业时,手持端经常出现卡顿情况,为了确认是否与系统相关,在所有接口上加上时间监控,查看接口调用时间。@Aspect@Componentpublic class InvokeTimeAdvice { private static final Integer TIMEOUT = 0; protected Logger logger = Logg...
2019-01-06 16:14:34 927
原创 java面试---redis
什么是redisredis是一个基于内存的高性能key-value数据库 redis特点redis本质上是一个key-value类型的内存数据库,整个数据量统统加载在内存中操作,定期异步操作把数据库数据flush到硬盘上保存。性能出色,每秒处理超过10w次读写操作。支持保存多种数据结构,单个value最大限制是1GB。主要缺点是数据库容量收到物理内存限制,不嫩用作海量数据的高性...
2018-09-28 18:12:42 722
原创 java面试---JVM
1、什么情况下会发生内存溢出1)方法创建了一个很大的对象2)产生了循环调用,死循环3)引用了较大的全局变量 2、JVM的内存结构,Eden和Survivor比例jvm内存结构分为两种类型:1)线程安全:虚拟机栈,本地方法栈,程序计数器2)非线程安全:堆,方法区虚拟机栈:每个方法执行时,内存中创建一个空间来存储局部变量,方法的出入口等本地方法栈:每个本地方法执...
2018-09-28 18:12:03 116
原创 java面试---框架
1、SpringMVC的工作原理a. 用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获;b. DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping将请求映射到处理器 HandlerExcutionChain;c. DispatchServle...
2018-09-28 18:11:20 370
原创 java面试---TCP/IP
1、http1.0和http1.1区别1)缓存处理策略不同2)带宽优化和网络连接的使用3)错误通知的管理4)host头处理5)长链接;1.0每次请求都要创建连接;1.1保持长链接 2、常用状态1)ESTABLISHED表示正在 通信2)TIME_WAIT表示主动关闭;主动关闭链接时形成的,主要是防止最后一个ACK丢失。由于时间非常长,因此服务端尽量减少主动关闭链...
2018-09-28 18:10:45 1402
原创 java面试---MQ
RabbitMQ介绍consumer(消费者):使用队列Queue从Exchange中获取消息的应用Exchange(交换机):负责接收生产者的消息并把它们转到合适的队列Queue(队列):一个存储exchange发来的消息的缓冲,并将消息主动发送给Consumer,或者Consumer主动来获取Binging(绑定):队列和交换机之间的关系。Exchange根据消息的属性和Bin...
2018-09-28 18:09:53 1465
原创 java面试---架构
什么是高并发通过设计保证系统能够同时并行处理很多请求 如何提升系统的并发能力1、垂直扩展1)增强单机硬件性能2)提升单机架构性能2、水平扩展只要增加服务器数量,就能线性扩充系统性能 常见互联网分布式架构:(1)客户端层:典型调用方是浏览器browser或者手机应用APP(2)反向代理层:系统入口,反向代理(3)站点应用层:实现核心应用逻辑,返...
2018-09-28 18:09:11 249
原创 java面试---mysql
java连接数据库过程1、加载驱动类,注册驱动2、通过DrivrManager获取数据库连接3、通过connection创建statement4、通过statement执行sql语句,返回结果集5、操作resultSet结果集6、回收数据库资源,晚声明的先关 Statement和PreparedStatement的比较1、statement需要进程字符串拼接,可...
2018-09-28 18:08:05 684
原创 java面试---java基础
final关键字有哪些用法:1.修饰数据修饰常量,常量不可变修饰变量,可以先声明后赋值修饰引用变量,引用变量的引用不可变,引用变量的值可以改变2、修饰方法参数整体方法中,无法改变参数的值3.修饰方法表示该方法无法被覆盖4、修饰类该类无法被继承 static关键字的作用:1、修饰成员变量成了类变量随着类的加载而加载,生命周期和类一样2、修饰...
2018-09-28 18:07:13 182
原创 阿里云主机磁盘挂载
一、查看目前磁盘命令:fdisk -l 二、格式化新磁盘命令:mkfs -t ext3 /dev/vdb 三、挂载磁盘需要先创建一个目录命令:mkdir /app 四、挂载磁盘命令: mount /dev/vdb /app为了避免重启机器时重新挂载,需要在/etc/fstab文件中增加一行自动挂载记录/dev/xvdb /app ext3 defau...
2018-09-07 10:18:53 687
原创 pyhton fabric脚本中拼接命令方式
1、使用% stoptomcat = 'ps -ef | grep %s | grep -v grep | awk \'{print $2}\'| sed -e \"s/^/kill -9 /g\" | sh -' % (tomcat_path) 2、使用formattomcatLog="sh ./logs/tomcatLog.sh {}".format(tomcat_path...
2018-09-07 10:17:32 361
原创 java执行shell命令
public boolean executer(String command, String logPath, String logFileErrorPath)throws Exception{Fileutil fileutil = new Fileutil();List<String> processList = new ArrayList<String>();...
2018-09-07 10:16:09 286
原创 python fabric远程启动tomcat
1、停止当前tomcat进程 stoptomcat = 'ps -ef | grep %s | grep -v grep | awk \'{print $2}\'| sed -e \"s/^/kill -9 /g\" | sh -' % (tomcat_path)run(stoptomcat) 2、启动tomcat进程 starttomcat = "sh %s/bin/...
2018-09-04 14:12:24 661
原创 获取服务启动日志
最近遇到一个问题,需要获取tomcat和dubbo应用的启动日志,由于这些服务的启动日志都会写入各自的日志文件中,于是想到截取这个服务的日志中启动部分,启动结束后结束进程。 获取tomcat日志:#!/usr/bin/env bashtomcatPath=$1 read_line(){readflag=1while [ $? -eq 0 ]&&...
2018-09-04 14:09:49 1561
原创 页面选择框无法选择
问题现象:页面上有一选择框,在选择后点击查询按钮,查询成功;点击新建按钮,跳转新建页面,然后点击返回主页面再次点击选择框,默认之前选中项,点击其他无效 问题分析:在重现问题后,多次点击选择框,发现都会有请求发送寻找该请求来源,发现该请求是在新建页面才会有的请求 问题解决:经过分析代码发现:在主页面上的选择框与新建页面上的选择框由于是同一个属性,在渲染时错...
2018-08-31 17:14:39 2965
原创 阿里云主机XorDDos攻击解决办法
1.使用top命令查看是否会有未知进程占据大量内存,有时可以查出,有时不能 2.病毒会在/etc/init.d目录建立一个到多个10个字母组成的init脚本,脚本内容几乎一模一样,手动rm删除(如果无法删除,使用chattr -i 命令给该文件减权)3.病毒会在/etc/rc.d/{rc0.d,rc1.d,rc2,d,rc3,d,rc4,d,rc5.d}下建立非常多的以S90...
2018-08-30 23:49:00 633
原创 layui+vuejs实现页面复选框
页面上出现复选框,复选框内容从后台获取,在选择后将数据传输到后台queryDeployIns:function () {$.getJSON("/config_manage/configModify/queryDeployIns?versionId=" + versionId, function (r) { //获取ip与idvm.hosts = r.deployIns; //赋值给对象...
2018-08-30 23:47:26 2540
原创 linux中定时任务执行失败
问题来源:最近发现数据库中有sleep进程无法关闭,并且阻塞时间过长,需要执行脚本,定时清除 解决方案:原脚本文件: #!/bin/sh MYSQLTOOL=mysqlMYSQLUSER=rootMYSQLPASS=****HOST=*****PORT=3306sleepid="SELECT ID FROM information_schema....
2018-08-30 23:46:06 2330 1
原创 java未转义前端传递特殊字符
问题来源:页面输入框,某个值为a&b,结果后台写入数据库值为a&amp;b 问题分析:可以看出此处html自动将&转义,导致接收的数据有问题 需要在java代码中将此处转义使用下面方法,将需要转义的字符进行转义StringEscapeUtils.unescapeXml ...
2018-08-30 23:44:39 1236
空空如也
socket producer scala
2015-09-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人