- 博客(146)
- 资源 (1)
- 问答 (103)
- 收藏
- 关注

原创 线程池
提交一个任务()后:1、判断线程池里的核心线程是否都在执行任务,如果不是(核心线程空闲或者还有核心线程没有被创建)则创建一个新的工作线程来执行任务。如果核心线程都在执行任务,则进入下个流程。2、线程池判断工作队列是否已满,如果工作队列没有满,则将新提交的任务存储在这个工作队列里。如果工作队列满了,则进入下个流程。3、判断线程池里的线程是否达到线程池最大线程数,如果没有,则创建一个新的工...
2019-01-22 10:16:50
154

原创 java线程安全方案/锁机制
方案:一:JDK1.4以前1.synchronized(阻塞同步:线程执行此关键字修饰的方法获取不到锁会阻塞挂起,直到线程被唤醒)2.volatile(只能保证多处理器的可见性,需要自己实现CAS操作)二:JDK1.51.Lock接口(非阻塞同步:获取不到锁会返回一个结果,可根据结果做别的事)(跟3比更灵活,可以自己在业务代码中根据实际情况处理线程安全问题)Lock中也大量使用...
2018-09-04 17:39:29
295
原创 设计模式
为什么需要设计模式?1.重用设计和代码 重用设计比重用代码更有意义,自动带来代码重用2.提高扩展性 大量使用面向接口编程,预留扩展插槽,新的功能或特性很容易加入到系统中来3.提高灵活性 通过组合提高灵活性,可允许代码修改平稳发生,对一处修改不会波及到其他模块4.提高开发效率 正确使用设计模式,可以节省大量的时间设计模式六大原则:1.开闭原则:对扩展开放,对修改关闭(六大原则中的基础原则,其他五个原则是实现开闭原则的具体工具和方法)2.单一职责:应该有且只有一个原因引起类的变更。3.
2020-06-30 00:31:20
209
原创 springBoot
IDEA工程就是个文件夹而已,先建文件夹,然后open文件夹开始建module即可。springBoot默认不生成webapp目录,在project settings 下module中的第二个栏目直接添加想要生成webapp(下有WEB-INF即可)目录的位置即可。一般是src下的main下。是否为必用类:自定义类在main方法中执行SpringApplication.run(自...
2019-04-15 19:35:04
231
原创 集合排序
//------------------集合排序-------------------- //1.在java8之前,给list排序需要使用实现java.util.Comparator接口的匿名类: Collections.sort( list, new Comparator<People>...
2019-04-07 21:05:27
229
原创 java12新特性
switch(day){ case WES,THE -> System.out.println(); case FG-> System.out.println();}int s = switch(d){case WES,THE -> 4; case FG-> 5;}垃圾回收暂停时间缩短(...
2019-03-30 20:37:45
324
原创 websocket:主动给客户端推送消息实践
由于每台服务器承受的Tcp连接有限(一个进程默认是最多1024),高并发情况下容易把连接数顶满。(由于线程池可以复用线程,以及平均业务线程执行时间不会太长超过一秒,所以服务器端线程数不会因轮询的原因受太大影响)...
2019-03-25 14:39:58
2271
原创 springMVC的controller及spring的dao,service等单例注意
https://blog.youkuaiyun.com/pingdouble/article/details/79493846这些单例的问题本质原因是tomcat会给每个请求创建一个单独的线程来处理该请求。当然现在的tomcat因为使用了NIO,也不完全是N个请求N个线程的关系,实际线程数要比请求数少一些。...
2019-03-22 21:13:23
765
原创 压测
http压测:ab测试:https://blog.youkuaiyun.com/u011277123/article/details/78913649locust
2019-03-22 20:36:01
181
原创 spring项目启动执行特定方法原理:
https://blog.youkuaiyun.com/u010742049/article/details/82686059
2019-03-22 14:23:54
161
原创 读写分离,分库分表
安装:https://www.cnblogs.com/brianzhu/p/8575243.html这时候有可能会遇到包冲突:file /usr/share/mysql/slovak/errmsg.sys from install of mysql-community-common-5.7.13-1.el7.x86_64 conflicts with file from package m...
2019-03-14 18:12:21
302
原创 数据库锁
锁是数据库系统区别于文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问。实际操作数据库时,数据库会自动为操作的数据添加合适的锁。乐观锁和悲观锁悲观锁是依赖于数据库存储引擎的锁机制实现的并发控制手段:乐观锁其实是跟锁机制无关的并发控制手段:乐观锁假设各个事务处理数据时不会相互影响,各个事务在提交数据更新前会检查是否有别的事务修改了数据,如果有则发生回滚,具体实现是在表中添加一...
2019-02-12 15:10:31
151
原创 nginx
nginx与apache1.nginx比apache支持并发连接数多的原因: nginx使用了epoll和kqueue网络IO模型,apache使用的则是传统的select模型。2.nginx比apache节省服务器资源的原因: apache比较稳定的prefork模式为多进程模式,需要经常派生子进程,所消耗的服务器资源多。安装:编译相关安装:yum -y inst...
2019-02-01 15:30:42
135
原创 高并发方案
负载均衡:nginx处理web请求的负载均衡,业务层处理PRC调用的负载均衡(dubbo有自带的负载均衡功能,默认负载均衡策略是按权重随机调用)。缓存,降级,限流 ...
2019-01-25 15:25:39
160
原创 熔断限流/降级限流
熔断是直接不处理或返回个默认值,降级比熔断更缓和一点https://blog.youkuaiyun.com/zwq_david9527/article/details/77751032 三种nginx限流方式实现原理:网关层在nginx中实现限流或给controller加切片 业务层给service加切片熔断降级插件:Hystrix,谷歌RateLimite...
2019-01-22 11:36:36
2833
原创 网关
跟业务逻辑无关,保障系统安全稳定,做一些字段转换防攻击,防爬,限流的工作。加入没有网关的话,直接调到业务层,对方很容易猜到字段进行攻击。国内的网关刚开始是因为要做统一的服务调用及数据封装整合,之后才开始慢慢加入限流啊zpkin等功能(应该是用切片做的)。 ...
2019-01-22 10:45:33
167
原创 dubbo+zk
zookeeper在启动服务端的时候会基于java环境启动,所以在启动的时候会检测 jdk 是否安装而在我们开发者的入门过程中,都会设定一下 %JAVA_HOME%的系统变量。在 zkservice启动的时候,会找%JAVA_HOME%\bin\java.jar 进行java基础环境的启动。所以,如果没有配置的话,就要配置java的环境变量。 zkclient自己的代码:pa...
2019-01-18 10:47:29
165
原创 spring创建bean源码
一:doGetBean方法1.判断beanName是否为空,为空抛异常,再判断beanName是否以&开头是的话去掉&。2.执行getSingleton(beanName),获取bean的登记式单例,如果需要的单例不为空的话返回已存在的单例。(返回语句在方法结尾处)if ((sharedInstance != null) && (args == null...
2019-01-16 17:59:03
509
原创 java类型生命周期及创建对象方式
生命周期一个类型的生命周期包括:装载,连接,初始化的初始阶段,占生命周期大部分时间的类型实例化,垃圾收集和对象终结。及生命周期结束从虚拟机卸载该类型。类加载机制启动任何一个java程序,虚拟机从加载一个类开始会自动执行装载,连接,初始化这三步,因此开始阶段的这三个过程也称为类加载机制。类加载机制的装载:1、虚拟机通过需要加载的类的全限定名来定位对应的class文件,并以线性二进...
2019-01-15 15:51:42
325
原创 垃圾收集和JVM内存分配
程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,因此这几个区域的内存分配都具备确定性,不用考虑回收的问题,方法结束时或线程结束时内存自然就跟着回收了。堆和方法区是被线程共享的,垃圾收集器关注的是这部分的内存回收。 回收堆区: 一:判断对象是否存活 1.可达性分析算法判断对象是否有引用链 垃圾收集器进行堆内存回收时,首...
2019-01-15 13:57:08
133
原创 java集合
conllection是集合框架的顶级接口。下面有子接口以及实现类。集合有四种基本形式:Queue(其实现类只有一个List下的LinkedList),List3,Set2,Map4。conllections是工具类,是集合框架的工具类,对集合进行操作。里面有很多静态方法。Collections.synchronizedMap()与ConcurrentHashMap主要区别是:Col...
2019-01-14 16:39:27
138
原创 线程分析
分析最耗费时间线程:1.查找进程id:ps -ef|grep java2.列出该进程下的线程top-Hp进程id 找到最消耗cpu线程id转为16进制也可以ps mp 6648 -o THREAD,tid,time/ps-Tp线程id3.查看线程对应的方法jstack进程id(不是最消耗cpu的线程id)| grep16进制线程id...
2019-01-11 19:05:32
131
原创 RPC简单实现
可以通过java原生的序列化,socket通信,动态代理和反射机制,实现最简单的RPC框架。 服务发布者创建服务端的serverSocket: 我之前想象调用应该是这个样子:客户端将类名,方法名,参数名和值序列化后发给服务端,服务端获取字节信息后反序列化成java对象并对类名,方法名和参数名及值进行手动遍历做case匹配然后去调用。反射调用解决了手动匹配的问题。本地手动序列...
2019-01-11 13:43:00
338
原创 算法:排序 二叉树深度时间复杂度? 归并和快速排序实践?B树时间复杂度?
概念:以某个值或值的集合为输入,将输入转换成输出的计算步骤的一个序列。O(1)<O(logn)<O(n)<O(nlogn)<O(n*n)算法的时间复杂度用来衡量随问题规模n的增长执行次数的增长率。常见排序:插入排序 遍历数组,遍历到i时,a0,a1...ai-1是已经排好序的,取出ai,从ai-1开始从后向前和每个比较大小(从前向后比的话需要考...
2019-01-10 17:43:08
2766
原创 TCP粘包拆包 TCP保活机制
TCP是个流协议,所谓流就是没有界限的一串数据。TCP底层不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以一个完整的包可能会被TCP拆分成多个包进行发送(拆包),或者多个小的包被封装成一个大的数据包发送(粘包)。由于底层的TCP无法理解上层的业务数据,所以在底层无法保证数据包不被拆分和重组,只能通过上层的应用协议栈设计来解决。1.在包尾增加特殊符号分割...
2019-01-10 16:39:05
379
原创 NIO网络编程框架netty
https://www.iteye.com/magazines/103 dubbo开发者博客用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心...
2019-01-10 10:40:18
356
原创 网络
所有系统I/O分为两个阶段:等待就绪,操作。读函数分为等待系统可读和真正的读。写函数分为等待网卡可写和真正的写。数据如何发送?1.应用程序将数据写入进程的内存地址空间。2.应用程序通过系统函数接口向内核发出系统调用,系统内核将用户态内存数据复制到内核缓冲区。3.内核通知网卡控制器,网卡控制器将内核缓冲区数据复制到网卡缓冲区。4.网卡使用内部特定物理装置将网卡缓冲区中数据转换成电...
2019-01-09 17:19:45
143
原创 spring上下文和springMVC上下文
基于Java的Web服务器基本都支持标准的ServletDispatcherServlet启动时会创建springMVC的上下文并加载配置文件或配置类中声明的bean如控制器,视图解析器,处理器映射。<servlet> <servlet-name>appServlet</servlet-name> <servlet-class>...
2019-01-09 16:25:13
448
1
原创 spring基础之pojo和javaBean及依赖注入
pojo值普通java对象,没有业务逻辑,只包含私有属性,和访问这些私有属性的get,set方法。没有继承任何类,没有实现任何接口,更没有被其他框架侵入。bean指可重用组件,javaBean及java语言编写的可重用组件bean。可序列化(实现了serializable接口)。 依赖注入这个词让人望而生畏,但事实证明依赖注入并不像它听上去那么复杂,在项目中应用DI依赖注入(接口方式)...
2019-01-02 16:37:10
1777
原创 IPv4与IPv6
IPv4有32位分4段用.隔开,每段的8位二进制用十进制表示为1到3位十进制数,范围为0-255IPv6有128位分8段用:隔开,每段的16位二进制用十六进制表示为0(全是0时只有有时候看到相邻的:出现::,但这种表示方法只能出现一次)到4位十六进制,范围为0-ffff /*生成正则表达式对象*/String regexp = "\\d{1,3}\\.\\d{1,3}\\.\\d{...
2018-12-16 21:16:06
306
原创 java web servlet规范监听器和java 事件监听器本质
https://blog.youkuaiyun.com/jpzhu16/article/details/52705928#httpsessionlistener%E7%9B%91%E5%90%AC%E5%99%A8%E6%8E%A5%E5%8F%A3%E4%BD%BF%E7%94%A8JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext,...
2018-12-13 17:26:46
344
1
原创 异常
https://blog.youkuaiyun.com/u010425776/article/details/79529568Throwable下分error和Exception,error无法被处理不考虑。Exception分运行时异常(包括自定义的运行时异常)和非运行时异常,非运行时异常编译时就会抛出来而不是在运行时抛。异常的处理:要么用throws抛给其调用者让调用者处理,要么catch并处理。...
2018-12-06 17:57:06
128
原创 继承Thread和实现Runnable的区别,线程池
只能说是有继承Thread后不能再继承其他类了(因为java的单继承规则),什么资源不能共享都是扯淡,别把共享资源放在继承Thread类的子类中在外面调用Thread类的子类的类中放即可资源共享。 线程池:结构图如下:(注意execute的参数必须是Runnable类型)Executors类的五种创建线程池的方法最后都是调用的自定义线程池类ThreadPoolExecutor创...
2018-12-04 21:12:51
519
原创 velocity
#parse与#include区别#include 1.可包含本地文件(不包含VTL) 2.文件内容不经过template engine处理 3.出于安全性的考虑,此文件只能位于TEMPLATE_ROOT目录下 #parse 1.可以引入包含VTL的模板 2.任何模板文件只能位于TEMPLATE_ROOT目录下 ...
2018-11-29 12:00:08
89
zookeeper客户端接收到zokeeper的更新事件后更新本地缓存需要自己实现吗?
2019-03-05
使用dubbo+zookeeper可以自动实现负载均衡吗还是需要自己实现?
2019-01-25
TCP的粘包和拆包是指一次http请求中发生的粘包或拆包吗?为什么?
2019-01-10
java web中servlet规范的的监听器和spring的监听器有啥区别求指教
2018-12-13
过滤器相关疑问请教大神指点
2018-12-11
java中抽象类实现接口的意义请大神指点
2018-12-04
java线程类Thread和Runnable的疑问有大神知道吗?
2018-12-03
后台埋点的作用咨询有经验高手
2018-12-03
spring的占位符能在.properties中使用吗还是只能在xml中用求大神指点?
2018-10-29
SwitchHosts使用问题求大神指导
2018-10-25
线程之间的切换会消耗系统性能为啥还用多线程?
2018-10-22
连接查询和嵌套查询可以使用多个索引吗?为什么?
2018-10-09
访问静态html资源报404怎么解决
2018-10-08
debug模式中看到的P和f是什么意思?
2018-09-17
java过滤器的问题请教下
2018-09-10
在过滤器里打印日志报如下错误(大概意思是请求不是同步的)怎么回事?
2018-09-09
关于java过滤器的疑问请指教
2018-09-08
springmvc返回html时转成jsp了报404,怎么同时支持解析jsp和html
2018-09-07
查看tomcat进程id的问题请教指点
2018-09-05
zookeeper注册服务问题请教指点
2018-09-03
redis的读写疑问求大神指点下
2018-08-27
关于?:符号的含义理解问题请指教
2018-08-27
logback.groovy配置文件中选择环境的问题请教
2018-08-22
IDEA里默认绑定的MAVEN的配置在哪里
2018-08-12
spring的注入问题请教大神
2018-08-02
前台问题responseHeader 的location
2018-08-01
maven项目的父级pom依赖问题求大神指教
2018-07-25
抽包地址是什么意思求指教?
2018-07-20
帮忙看下java这3行代码的作用是干嘛的
2018-07-13
这段js代码的意思求解释
2018-07-12
xsd的使用问题求指教??
2018-07-10
这段js代码的意思求解释,详细点哈
2018-07-09
java的socket编程和网络协议的关系的一些疑问
2018-07-05
logback.xml配置文件引入问题求指教
2018-07-02
关于maven的pom.xml文件的问题教教大神
2018-06-29
mysql的mapper.xml文件请教大家
2018-06-29
IDEA中点击maven的install的问题指教?
2018-06-26
日志打印异常对象打印出来是空的怎么回事?(debug看多对象的code)
2020-11-16
mysql数据库的不可重复读是用什么方案解决的?
2019-03-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人