
java
文章平均质量分 64
gold_zwj
经典终究是经典-永不过时
展开
-
spring:bean生命周期
Spring 容器中Bean生命周期原创 2019-10-17 09:14:39 · 184 阅读 · 0 评论 -
EL表达式使用
以下是总结jsp中el表达式的使用【总结来自jsp api】 EL表达式用法总结 1.EL特点 (1)对象的简明访问 (2)对象属性的简单表示 (3)对集合元素的简单访问 (4)对请求参数、cookie和其他请求参数的简洁访问 (5)EL定义了一个运算符的集合 (6)支持条件输出 (7)自动类型转换 (8)空值代替异常2.EL翻译 2014-01-23 11:25:55 · 621 阅读 · 0 评论 -
java海量数据处理
1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的转载 2014-01-23 11:41:10 · 2041 阅读 · 0 评论 -
寻找第K个数
/** * 快排找中位数 * 思想:转化成找第K小的数 k = array.length / 2 + 1 * partition分成两边后 * 1、左边个数>K,则继续在左边找 * 2、左边个数 * 3、当相等时,则partition得到的pos即是中位数,这种情况分成奇偶两种情况 * a、奇数时直接返回 * b、偶数时要找到该中位数左边区域的最大值 * 最大值分两转载 2014-01-23 11:28:17 · 666 阅读 · 0 评论 -
java+android学习序列图
物联网学习序列图转载 2014-01-23 11:30:15 · 537 阅读 · 0 评论 -
Java面向对象的思考
堆和栈的完美结合 ==》就是面向对象的完美体现 面向对象方式的程序与以前结构化的程序在执行上没有任何区别。 但是,面向对象的引入,使得对待问题的思考方式发生了改变,而更接近于自然方式的思考。 当我们把对象拆开,你会发现,对象的属性其实就是数据,存放在堆中;而对象的行为(方法), 就是运行逻辑,放在栈中。我们在原创 2014-03-10 16:47:27 · 622 阅读 · 0 评论 -
常用的算法
常用的算法有:分治,动态回溯,原创 2014-09-29 10:47:41 · 363 阅读 · 0 评论 -
Select+Update并发处理
当一个会员想续买会员(只能续买1个月、3个月或6个月)时,必须满足以下业务要求:•如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时间加上续买的月数•如果end_at等于或晚于当前时间,则设置end_at=end_at+续买的月数•续买后active_status必须为1(即被激活)问题分析:对于上面这种情况,我们一般会先S转载 2016-08-05 10:17:15 · 7631 阅读 · 0 评论 -
类的加载、连接、初始化
类的加载 类的加载指的是将类的*.class文件中的二进制数据读入内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个Class对象,用来封装类在方法区中的数据结构。Java--->调用Class对象的方法 描述Worker类的Class对象 Work类的数据结构 描述Car类的Class对象 Ca...原创 2019-02-21 15:54:23 · 219 阅读 · 0 评论 -
Nginx与Lua编写脚本的基本构建块是指令
Nginx与Lua编写脚本的基本构建块是指令。 指令用于指定何时运行用户Lua代码以及如何使用结果。 下面是显示指令执行顺序的图。 当一个请求发起一个“子请求”的时候,按照 Nginx 的术语,习惯把前者称为后者的“父请求”(parent request)。location /main { echo_location /foo; # echo_location发送子请求到指定的...转载 2018-05-08 20:33:33 · 5590 阅读 · 0 评论 -
Linux OOM 自动杀死进程(转)
Linux OOM 自动杀死进程问题描述:今天上班后,登录一台内网测试服务器,发现部分进程失踪 (Nginx/PHP-FPM/MySQL/Crond)。解决方法:1、首先启动这些进程,保证正常提供服务。2、查看服务器日志信息,排除故障。shell > less /var/log/messages-20160905Sep 3 05:31:10 localdomain kernel: Ou...转载 2018-05-11 10:25:57 · 6495 阅读 · 0 评论 -
JVM参数调优
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100/虚拟机调优JVM的堆的内存, 是通过下面面两个参数控制的 -Xms 最小堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你 -Xmx 是最大堆的大小 当最小堆占满后,会尝试进行GC,如果GC之后还不能得到足够的内存...转载 2018-05-16 11:13:39 · 205 阅读 · 0 评论 -
Netty中控制IO运行比例占比-分析
cancelledKeys = 0; needsToSelectAgain = false; final int ioRatio = this.ioRatio; if (ioRatio == 100) { try { ...翻译 2018-06-11 11:29:20 · 2144 阅读 · 0 评论 -
MySQL 索引问题
MySQL的MyISAM与InnoDB的索引方式在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。MyISAM索引实现MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyI...转载 2018-06-12 14:20:15 · 764 阅读 · 0 评论 -
使用Hystrix对Dubbo消费者提供线程隔离保护
使用Hystrix对Dubbo消费者提供线程隔离保护标签:Dubbo发布于 2017-01-05 18:30:49摘要: 在dubbo中对于消费者的保护提供了actives进行并发控制保护,但是功能相对薄弱,下面我们探讨下如何使用Netflix提供的服务容错组件Hystrix对dubo消费者提供线程隔离保护在dubbo中对于消费者的保护提供了actives进行并发控制保护,但是功能相对薄弱,下面我...转载 2018-06-12 15:01:05 · 532 阅读 · 0 评论 -
Hystrix属性4种优先级
Hystrix属性4种优先级内置全局 采用ConcurrentHashMap 有 HystrixCommandProperties HystrixThreadPoolProperties HystrixCollapserProperties动态全局 HystrixDynamicProperty实例动态实例Hystrix属性Command Properties 相关类 HystrixCommand1...转载 2018-06-12 15:50:27 · 1121 阅读 · 0 评论 -
jmeter
压测设置线程数:并发数量,能跑多少量。具体说是一次存在多少用户同时访问Rame-Up Period(in seconds):表示JMeter每隔多少秒发动并发。理解成准备时长:设置虚拟用户数需要多长时间全部启动。如果线程数是20,准备时长为10,那么需要10秒钟启动20个数量,也就是每秒钟启动2个线程。循环次数:这个设置不会改变并发数,可以延长并发时间。总请求数=线程数*循环次数调度器:设置压测的...原创 2018-05-30 21:11:50 · 625 阅读 · 0 评论 -
锁分类
Java中的锁分类在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序...转载 2018-05-31 09:02:54 · 248 阅读 · 0 评论 -
Hystrix-FailBack
Hystrix降级技术解析-Fallback 一、降级 所谓降级,就是指在在Hystrix执行非核心链路功能失败的情况下,我们如何处理,比如我们返回默认值等。 如果我们要回退或者降级处理,代码上需要实现HystrixCommand.getFallback()方法或者是HystrixObservableCommand.resumeWithFallback()。 二...转载 2018-07-19 15:42:42 · 884 阅读 · 0 评论 -
Hystrix-熔断测试代码-通过测试
Hystrix-熔断测试代码-通过测试package test;import com.netflix.hystrix.*;import java.util.Random;public class GetOrderCircuitBreakerCommand extends HystrixCommand<String> { public GetOrderCi...转载 2018-07-19 16:15:33 · 3868 阅读 · 1 评论 -
HystrixObservableCommand
HystrixObservableCommand 用在依赖服务返回多个操作结果的时候。它也实现了两种执行方式 -observe():返回Obervable对象,他代表了操作的多个结果,他是一个HotObservable -toObservable():同样返回Observable对象,也代表了操作多个结果,但它返回的是一个Cold Observable。 packag...转载 2018-07-19 16:51:32 · 1636 阅读 · 0 评论 -
Hystrix-响应式编程
execute()、queue()也都使用了RxJava来实现,并且queue()是通过toObservable()来获得一个Cold Observable,并且通过toBlocking()将该Observable转换成BlockingObservable,它可以把数据以阻塞的方式发出来,而toFuture方法则是把BlockingObservable转换成一个Future,该方法只是创建一个...原创 2018-07-19 17:42:44 · 895 阅读 · 0 评论 -
Java异常处理
处理反馈、业务异常、代码错误在开发业务系统中,我们目前绝大多数采用MVC模式,但是往往有人把service跟controller紧紧的耦合在一起,甚至直接使用Threadlocal来隐式传值,并且复杂的逻辑几乎只能使用service中存储的全局对象来传递处理结果,包括异常.这样一来首先有违MVC模式,二来逻辑十分不清晰,难以维护。常常面临着这样的问题:系统运行出错,但是完全不知...翻译 2018-07-25 20:25:50 · 5241 阅读 · 3 评论 -
CPU io-密集型 计算密集型
核心是可以分别独立运行程序指令的计算单元。线程是操作系统能够进行运算调度的最小单位。有一个原则是:活跃线程数为 CPU(核)数时最佳。过少的活跃线程导致 CPU 无法被充分利用,过多的活跃线程导致过大的线程上下文切换开销。线程应该是活跃的,处于 IO 的线程,休眠的线程等均不消耗 CPU。在Java并发编程方面,计算密集型与IO密集型是两个非常典型的例子,这次大象就来讲讲自己在这方面...翻译 2018-08-10 10:17:35 · 3823 阅读 · 0 评论 -
java中判断字节数组的编码方式是不是UTF-8
java中判断字节数组的编码方式是不是UTF-81,用google的工具包,配置maven:<!-- https://mvnrepository.com/artifact/com.googlecode.juniversalchardet/juniversalchardet --><dependency> <groupId>com.google...原创 2018-08-29 17:05:16 · 4406 阅读 · 0 评论 -
tcpdump 抓包
tcpdump 抓tcp包sudo tcpdump -X -i eth0 -vvvv -n port 8080 and host 172.22.221.167(访问ip) and 172.22.201.79(服务器ip)-w /tmp/my.capyum install --installroot=/usr/src/ xxx--测试 mvn clean &&...原创 2018-09-07 14:33:31 · 1175 阅读 · 0 评论 -
sslsocket-https
private static final String defaultProtocol = "TLS";private static final int defaultSessionCacheSize = 0;private static final int defaultSessionTimeout = 86400;public static void main(String[] a...原创 2018-09-19 15:49:30 · 1584 阅读 · 0 评论 -
彻底弄懂HTTP缓存机制及原理
转载:https://www.cnblogs.com/chenqf/p/6386163.html彻底弄懂HTTP缓存机制及原理前言Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什...转载 2018-10-12 08:45:23 · 2037 阅读 · 2 评论 -
23种设计模式
模式区别代理: 给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。 核心解读:代理类对被代理对象有控制权,决定是否执行等操作 装饰: 又名Wrapper模式,以对用户透明的方式来扩展对象的功能,是继承的一种替代方案 核心解读:源对象接口完全一致,对控制对象没有控制权,只是增加一层装饰以加强功能,仅...原创 2018-10-17 09:36:42 · 301 阅读 · 0 评论 -
java synchronized优化
JVM内存模型:顺序性 原子性 可见性synchronized的底层实现主要依靠Lock-Free的队列。基本思路是自旋后阻塞,竞争切换后继续竞争锁,稍微牺牲了公平性,但获得了高吞吐量。synchronized实现何时使用了自旋锁?在线程进入ContentionList时,也即第一步操作前。线程在进入等待队列时 首先进行自旋尝试获得锁,如果不成功再进入等待队列。这对那些已...原创 2018-10-10 20:18:48 · 2932 阅读 · 0 评论 -
Selector Bug总结
Selector BUG出现的原因若Selector的轮询结果为空,也没有wakeup或新消息处理,则发生空轮询,CPU使用率100%,Netty的解决办法对Selector的select操作周期进行统计,每完成一次空的select操作进行一次计数,若在某个周期内连续发生N(512)次空轮询,则触发了epoll死循环bug。重建Selector,判断是否是其他线程发起的重建请求...原创 2018-10-23 10:10:33 · 1144 阅读 · 0 评论 -
Redis+Lua+Java
Java+Redis+LuaRedis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行。使用脚本的好处如下:1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了网络往返时延。2.原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。3.复用:客户端发送的脚本会永久存储...原创 2018-10-23 10:19:58 · 8395 阅读 · 0 评论 -
转-centos-负载
一、查看系统负荷如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了。在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行)。(另外,它们在苹果公司的Mac电脑上也适用。)你在终端窗口键入uptime,系统会返回一行信息。这行信息的后半部分,显示"load average",它的意思是"系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷是大还...转载 2018-10-26 14:21:48 · 1057 阅读 · 0 评论 -
tomcat
tomcat -http报文解析http://584431411.iteye.com/blog/2374967转载 2018-10-24 10:46:48 · 123 阅读 · 0 评论 -
mysql字符串处理技巧
http截取域名select substring( REPLACE ( REPLACE ( concat(params['url'],'/'), "https://", "" ), "http://", ...原创 2018-10-27 18:11:13 · 214 阅读 · 0 评论 -
nginx-url
https://www.cnblogs.com/jingxiaoniu/p/7007653.html https://www.cnblogs.com/czlun/articles/7010604.html https://www.cnblogs.com/wangzhisdu/p/7839109.html转载 2018-11-24 09:59:06 · 360 阅读 · 0 评论 -
nginx-高级
[Nginx] – 性能优化 – 配置文件优化 [一]摘要一般来说,软件的漏洞都和版本有关,因此我们应尽量隐藏或清除Web服务队访问的用户显示各类敏感信息(例如:Web软件名称及版本号等信息),这样恶意的用户就很难猜到他攻击的服务器所用的是否是特定漏洞的软件,或者是否有对应的漏洞存在 首先在此感谢下我的老师-老男孩专家拥有16年一线实战经验,为我们运维班28期所有成员的耐...转载 2018-11-30 14:28:27 · 1352 阅读 · 0 评论 -
Http头
容易混淆的头部:原意是想对输出的内容进行编码,却用错了响应头,结果这个错误的响应头对后面的客户端程序带来了许多麻烦。这里有必要对这个这块的内容进行详细地了解。#[1]. 传输数据编码:Transfer-Encoding 是一个逐跳传输消息首部,即仅应用于两个节点之间的消息传递,而不是所请求的资源本身。数据编码,即表示数据在网络传输当中,使用怎么样的保证方式来保证数据是安全成功地传...转载 2018-12-08 16:21:35 · 261 阅读 · 0 评论 -
Redis分布式锁
原创 2019-01-18 11:46:21 · 158 阅读 · 0 评论 -
超级好用的自增数组
public class ByteArray { private byte[] array; private int position; private ByteArray(int capacity) { this.array = new byte[capacity]; this.position = 0; } pu...原创 2019-01-25 15:41:09 · 2509 阅读 · 0 评论