java
chenxiaokang97
目标设到月球,即使失败,也能落到众星之间。
展开
-
WebMagic简明教程(一)
WebMagic简明教程(一)前言做项目需要爬取一些数据,不想用Python,就尝试了下webmagic这个爬虫框架,总的来说上手还是比较简单的,这里来总结一下.webmagic是一个简单灵活的Java爬虫框架,如果你熟悉Java而且不想用Python写爬虫,那么webmagic是一个不错的选择.实战日常前戏首先呢,咱们来先把jar包下载下来:https://github.com/code4cra原创 2017-07-23 01:48:48 · 8281 阅读 · 0 评论 -
SpringBoot打war包
SpringBoot打war包 添加spring-boot-starter-tomcat的provided依赖 添加maven-war-plugin插件 修改pom.xml文件<packaging>war</packaging> <dependency> <groupId>org.springframew...原创 2018-07-21 11:22:48 · 331 阅读 · 0 评论 -
Jmeter命令行使用
Jmeter命令行使用 生成jmx脚本 sh jmeter.sh -n -t XXX.jmx -l result.jtl 把result.jtl导入jeter原创 2018-07-21 11:23:12 · 1117 阅读 · 0 评论 -
Redis压测
Redis压测-c:模拟100并发 -n:100000请求 默认3字节➜ ~ git:(master) ✗ redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000 == SADD == 100000 requests completed in 1.98 seconds 100 parallel clients 3 b...原创 2018-07-21 11:23:34 · 934 阅读 · 0 评论 -
高并发下页面优化技术
高并发下页面优化技术 页面缓存(最大粒度)+URL缓存+对象缓存(最小粒度) 页面静态化(页面为html,静态,访问在客户端,ajax,js访问数据),前后端分离 静态资源优化(图片,js,css) CDN优化 并发瓶颈在数据库,我们减少对数据库的访问,最有效的方式就是缓存页面缓存: 取缓存 手动渲染模版 结果输出 对象...原创 2018-07-21 19:17:14 · 982 阅读 · 0 评论 -
秒杀中卖超问题
秒杀中卖超问题 数据库判断库存>0,数据库为原子操作,防止卖超; 数据库建立唯一索引,防止同一用户多次插入数据库; 验证码,防止同一用户多次请求。 ...原创 2018-07-21 19:17:37 · 826 阅读 · 0 评论 -
GET && POST 区别
GET && POST 区别GET -> 幂等:从服务端获取数据,调用多少次结果都一样POST -> 不幂等:向服务端提交数据,数据发生变化原创 2018-07-21 19:17:57 · 372 阅读 · 0 评论 -
高并发下的接口优化
高并发下的接口优化 Redis预减库存减少对数据库的访问 内存标记减少对Redis的访问 请求入队缓存,异步下单,增强用户体验(MQ) Nginx水平扩展 分库分表(MyCat) Redis预减库存减少对数据库的访问 系统初始化,商品数量加载到Redis 收到请求,Redis预减库存,库存不足,直接返回,否则进入3 请求入...原创 2018-07-22 19:22:00 · 5321 阅读 · 0 评论 -
SpringBoot集成RabbitMQ
SpringBoot集成RabbitMQ添加依赖spring-boot-starter-amqp创建消息接受者创建消息发送者&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-sta原创 2018-07-22 19:30:31 · 361 阅读 · 0 评论 -
RabbitMq四种交换机模式
RabbitMq的四种交换机模式package cn.chen.miaosha.rabbitmq;import org.springframework.amqp.core.*;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configura...原创 2018-07-22 19:31:24 · 1346 阅读 · 0 评论 -
fail-fast
fail-fastfail-fast机制是Java集合中的一种错误机制。实例容器在迭代过程中被修改时,就会抛出一个ConcurrentModificationException异常。实现方式将计数器的变化与容器关联起来:如果在迭代期间计数器被修改,那么hasNext或next将抛出ConcurrentModificationException。 private...原创 2018-08-02 12:45:43 · 207 阅读 · 0 评论 -
WeakHashMap
WeakHashMapWeakHashMap继承于AbstractMap,实现了Map接口。 和HashMap一样,WeakHashMap也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null。 不过WeakHashMap的键是“弱键”。在WeakHashMap中,当某个键不再正常使用时,会被从WeakHashMap中被自动移除。更精确地说,对于...原创 2018-08-02 16:08:11 · 240 阅读 · 3 评论 -
Comparable和Comparator
Comparable和Comparatorpackage java.lang;import java.util.*;public interface Comparable<T> { public int compareTo(T o);}Comparable在java.lang包下,是一个接口,内部只有一个compareTo(T o)方法;Comparable可以让实现它的类的对象...原创 2018-07-14 21:42:04 · 185 阅读 · 0 评论 -
JMS
JMSJMS是什么JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。 JMS是一种与厂商无关的 API,用来访问消息收发系统消息。它类似于JDBC(J...原创 2018-07-26 12:40:09 · 604 阅读 · 0 评论 -
Servlet
ServletServlet API Servlet API 中有4个Java包: 1. javax.servlet:定义Servlet和Servlet容易之间契约的类和接口。 2. javax.servelt.http:定义Http Servlet和Servlet容易之间契约的类和接口。 3. javax.servlet.annotation:包含对Servelt、Filte原创 2017-09-20 19:12:08 · 297 阅读 · 0 评论 -
Scanner中next()和nextLine()
next()与nextLine()两者接受用户输入,区别在于:next()从遇到的第一个有效字符开始扫描,遇到第一个分隔符或结束符(空格或者换行符’\n’)时结束。nextLine()则是扫描剩下的所有字符串直到遇到回车为止。package day1001;import java.util.Scanner;public class TestScanner { public static vo转载 2017-10-02 12:29:17 · 382 阅读 · 0 评论 -
HashMap
java.util.Map接口,有四个常用实现类:HashMap、Hashtable、LinkedHashMap和TreeMapHashMap:根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。HashMap允许一条记录的key为null,允许多条记录的值为null。Hash非线程安全。Hashtable:Hashtable是遗留...转载 2018-07-13 20:53:03 · 334 阅读 · 0 评论 -
HashMap的put流程(1.7)
HashMap的put流程(1.7)1. 计算key的HashCode值2. 通过哈希吗快速找到某个存放位置,这个位置称为bucketIndex3. 判断* 如果bucketIndex位置没有元素,在此位置存放键值对* 如果bucketIndex位置存在元素,调用equals()判断对象是否相同,若对象相同,替换原有可value;若不同,即发生碰撞,将新元素存在这个位置,使用单链表维护关系。我们了...原创 2018-07-13 20:51:29 · 2116 阅读 · 1 评论 -
HashMap初始容量为什么是2的幂次方?
HashMap初始容量为什么是2的幂次方?HashMap中的数据结构是数组+单链表的组合,我们希望元素存放的更均匀,最理想的效果是Entry数组中每个位置都只有一个元素,这样,查询的时候效率最高,不需要遍历单链表,也不需要通过equals去比较Key,而且空间利用率最大。那么如何计算才会分布最均匀呢?我们首先想到的就是%运算,哈希值%容量=bucketIndex,我们来看源码static int ...转载 2018-07-13 20:50:17 · 2045 阅读 · 0 评论 -
WeakReference
/*** The entries in this hash map extend WeakReference, using* its main ref field as the key (which is always a* ThreadLocal object). Note that null keys (i.e. entry.get()* == null) mean t...原创 2018-07-17 17:04:51 · 309 阅读 · 0 评论 -
JSR303参数校验
package cn.chen.miaosha.volidator; import javax.validation.Constraint;import javax.validation.Payload;import java.lang.annotation.*; @Target({ElementType.METHOD, ElementType.FIELD, Elem...原创 2018-07-18 19:42:22 · 289 阅读 · 0 评论 -
两次MD5
用户端:PASS=MD5(明文+固定salt) 服务端:PASS=MD5(用户输入+随机salt) 用户端MD5:防止用户的明文密码在网络上进行传输。服务端MD5:当数据库被盗,防止反查。 package cn.chen.miaosha.util; import org.apache.commons.codec.digest.DigestUtils; ...原创 2018-07-18 19:42:41 · 1184 阅读 · 1 评论 -
GC基础
GC1960年,Lisp使用GCJava中,GC的对象是堆空间和永久区GC算法引用计数法(没有被Java采用)为每个对象标记引用数量,引用数量为0时进行空间释放。 引用和去引用伴随加法和减法,影响性能; 很难处理循环引用。标记清除(Java老年代)标记清除算法是现代垃圾回收算法的基础。分为标记和清除两个阶段。在标记阶段,通过根节点标...原创 2018-07-24 16:52:33 · 213 阅读 · 0 评论 -
模拟实现JDK动态代理Proxy
动态代理实现可以对任意的对象、任意的接口方法实现任意的代理Handler接口package cn.chen.proxy.compiler;import java.lang.reflect.Method;public interface InvocationHander { void invoke(Object o,Method method);}代理类实...原创 2018-07-25 10:45:09 · 313 阅读 · 0 评论 -
牛客网笔记
牛客网笔记protectedprotected在同一包或子类中使用,无修饰符只能被同一包中的类访问count++package cn.chen.base;public class Demo { public static void main(String[] args) { int count = 0; int num = ...原创 2018-08-03 10:40:43 · 391 阅读 · 0 评论