上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 34 下一页

2017年8月7日

JUC集合之 CopyOnWriteArrayList

摘要: CopyOnWriteArrayList介绍 它相当于线程安全的ArrayList。和ArrayList一样,它是个可变数组;但是和ArrayList不同的时,它具有以下特性: 1. 它最适合于具有以下特征的应用程序:List 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突 阅读全文

posted @ 2017-08-07 00:11 cag2050 阅读(189) 评论(0) 推荐(0)

2017年8月6日

JUC集合之 JUC中的集合类

摘要: 1. Java集合包 在“Java 集合系列01之 总体框架”中,介绍java集合的架构。主体内容包括Collection集合和Map类;而Collection集合又可以划分为List(队列)和Set(集合)。 1.List的实现类主要有: LinkedList, ArrayList, Vector 阅读全文

posted @ 2017-08-06 20:08 cag2050 阅读(991) 评论(0) 推荐(0)

JUC原子类之 原子操作数据类型

摘要: 根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类。 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ; 2. 数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray 阅读全文

posted @ 2017-08-06 19:39 cag2050 阅读(207) 评论(0) 推荐(0)

JUC线程池之 Callable和Future

摘要: Callable 和 Future 简介 Callable 和 Future 是比较有趣的一对组合。当我们需要获取线程的执行结果时,就需要用到它们。Callable用于产生结果,Future用于获取结果。 1. Callable Callable 是一个接口,它只包含一个call()方法。Calla 阅读全文

posted @ 2017-08-06 17:31 cag2050 阅读(147) 评论(0) 推荐(0)

JUC线程池之 线程池拒绝策略

摘要: 1. 拒绝策略介绍 线程池的拒绝策略,是指当任务添加到线程池中被拒绝,而采取的处理措施。 当任务添加到线程池中之所以被拒绝,可能是由于:第一,线程池异常关闭。第二,任务数量超过线程池的最大限制。 线程池共包括4种拒绝策略,它们分别是:AbortPolicy, CallerRunsPolicy, Di 阅读全文

posted @ 2017-08-06 17:26 cag2050 阅读(281) 评论(0) 推荐(0)

JUC线程池之 线程池的5种状态:Running, SHUTDOWN, STOP, TIDYING, TERMINATED

摘要: 1. 线程池有5种状态:Running, SHUTDOWN, STOP, TIDYING, TERMINATED。 线程池状态定义代码如下: private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); 2.SHUTD 阅读全文

posted @ 2017-08-06 16:22 cag2050 阅读(1410) 评论(0) 推荐(0)

JUC线程池之 ThreadPoolExecutor简介

摘要: 1. ThreadPoolExecutor简介 ThreadPoolExecutor是线程池类。对于线程池,可以通俗的将它理解为"存放一定数量线程的一个线程集合。线程池允许若个线程同时允许,允许同时运行的线程数量就是线程池的容量;当添加的到线程池中的线程超过它的容量时,会有一部分线程阻塞等待。线程池 阅读全文

posted @ 2017-08-06 15:46 cag2050 阅读(173) 评论(0) 推荐(0)

JUC线程池之 线程池架构

摘要: 线程池的架构图如下: 1. Executor 它是"执行者"接口,它是来执行任务的。准确的说,Executor提供了execute()接口来执行已提交的 Runnable 任务的对象。Executor存在的目的是提供一种将"任务提交"与"任务如何运行"分离开来的机制。 它只包含一个函数接口: 2. 阅读全文

posted @ 2017-08-06 00:54 cag2050 阅读(172) 评论(0) 推荐(0)

java 多线程之 线程优先级和守护线程

摘要: 1. 线程优先级的介绍 java 中的线程优先级的范围是1~10,默认的优先级是5。“高优先级线程”会优先于“低优先级线程”执行。 java 中有两种线程:用户线程和守护线程。可以通过isDaemon()方法来区别它们:如果返回false,则说明该线程是“用户线程”;否则就是“守护线程”。 用户线程 阅读全文

posted @ 2017-08-06 00:19 cag2050 阅读(125) 评论(0) 推荐(0)

java 中一些需要注意的知识点

摘要: 1. java数组的length属性是容量,而不是数组真实元素的个数; 1. 多线程中的interrupt()方法并不会终止处于“运行状态”的线程,它只是将线程的中断标记设为true。 1. juc线程池状态: 线程池处在SHUTDOWN状态时,不接收新任务,但能处理已添加的任务;调用线程池的shu 阅读全文

posted @ 2017-08-06 00:05 cag2050 阅读(143) 评论(0) 推荐(0)

2017年8月5日

java 多线程之 interrupt()和线程终止方式

摘要: 1. interrupt() 说明 interrupt()的作用是中断本线程。 本线程中断自己是被允许的;其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限。这有可能抛出SecurityException异常。 如果本线程是处于阻塞状态:调用线程的wait() 阅读全文

posted @ 2017-08-05 23:46 cag2050 阅读(182) 评论(0) 推荐(0)

java 多线程之:join() 方法

摘要: 1. join()介绍 join() 定义在java.lang.Thread中。 join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。 阅读全文

posted @ 2017-08-05 22:38 cag2050 阅读(131) 评论(0) 推荐(0)

java 多线程之:sleep() 方法

摘要: 1. sleep()介绍 sleep() 定义在java.lang.Thread中。 sleep() 的作用是让当前线程休眠,即当前线程会从“运行状态”进入到“休眠(阻塞)状态”。sleep()会指定休眠时间,线程休眠的时间会大于/等于该休眠时间;在线程重新被唤醒时,它会由“阻塞状态”变成“就绪状态 阅读全文

posted @ 2017-08-05 22:30 cag2050 阅读(250) 评论(0) 推荐(0)

2017年8月4日

Referrer Policy 介绍

摘要: 详情:https://imququ.com/post/referrer policy.html 阅读全文

posted @ 2017-08-04 16:14 cag2050 阅读(167) 评论(0) 推荐(0)

js 操作 cookie

摘要: 显示cookie: 设置cookie: 阅读全文

posted @ 2017-08-04 14:11 cag2050 阅读(118) 评论(0) 推荐(0)

顶级域名和子级域名之间的cookie共享和相互修改、删除

摘要: 举例: js 设置 cookie: domain=cag.com 和 domain=.cag.com 是一样的,在浏览器cookie中,Domain都显示为 .cag.com。 就是说:以下2个语句是等价的。 主域名(www.cag.com) cookie 设置如下: name | value | 阅读全文

posted @ 2017-08-04 11:06 cag2050 阅读(1398) 评论(0) 推荐(0)

关于 Cookie-free Domains (为什么将静态图片,js,css存放到单独的域名?)

摘要: 这篇文章对高性能web开发具有参考性:http://developer.yahoo.com/performance/rules.html 本文主要描述使用裸域名做网站主域名时,如何用子域名做 cookie free domains。 看站点优化的文章,很多建议将站点的静态文件(如图片、js、css 阅读全文

posted @ 2017-08-04 10:32 cag2050 阅读(910) 评论(0) 推荐(0)

cookie 知识点

摘要: cookie失效是由浏览器实现的,根据时间来控制,服务器端并不做cookie是否失效的验证。 某个cookie失效了浏览器发送请求时便不会带上它,服务器端自然就没有这个cookie了,所以对于服务器来讲,能获得的cookie都是有效的。 js 查看 cookie: js 设置 cookie: 阅读全文

posted @ 2017-08-04 10:20 cag2050 阅读(130) 评论(0) 推荐(0)

java 多线程之:yield() 方法

摘要: 1. yield()介绍 yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行! 2. y 阅读全文

posted @ 2017-08-04 00:17 cag2050 阅读(509) 评论(0) 推荐(0)

java 多线程之:wait()、notify()、notifyAll()等方法

摘要: 1. wait()、notify()、notifyAll()等方法介绍: 在Object.java中,定义了wait(), notify()和notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。 而notify()和notify 阅读全文

posted @ 2017-08-04 00:04 cag2050 阅读(302) 评论(0) 推荐(0)

2017年8月3日

java 多线程之:synchronized

摘要: 1. synchronized原理 在java中,每一个对象有且仅有一个同步锁。这也意味着,同步锁是依赖于对象而存在。 当我们调用某对象的synchronized方法时,就获取了该对象的同步锁。例如,synchronized(obj)就获取了“obj这个对象”的同步锁。 不同线程对同步锁的访问是互斥 阅读全文

posted @ 2017-08-03 23:53 cag2050 阅读(176) 评论(0) 推荐(0)

高并发分布式系统中生成全局唯一Id汇总

摘要: 详情链接:http://www.cnblogs.com/baiwa/p/5318432.html 阅读全文

posted @ 2017-08-03 17:38 cag2050 阅读(170) 评论(0) 推荐(0)

postman 中 form-data、x-www-form-urlencoded、raw、binary的区别

摘要: 区别 1. form data: 就是http请求中的multipart/form data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content Type来表名文件类型;content disposition,用来说 阅读全文

posted @ 2017-08-03 17:21 cag2050 阅读(278) 评论(0) 推荐(0)

RESTful 知识点

摘要: REST(英文:Representational State Transfer,简称REST) 对于资源的具体操作类型,由HTTP动词表示。 常用的HTTP动词有下面五个(括号里是对应的SQL命令)。 还有两个不常用的HTTP动词。 在实际的做的时候,很多人却没有按照REST规范去做,原因有很多,比 阅读全文

posted @ 2017-08-03 17:01 cag2050 阅读(142) 评论(0) 推荐(0)

http 缓存机制

摘要: http 缓存机制,看这篇文章即可:https://www.cnblogs.com/slly/p/6732749.html 优先级从高到低分别是Pragma Cache Control Expires 需要注意的是,响应报文中Expires所定义的缓存时间是相对服务器上的时间而言的,其定义的是资源“ 阅读全文

posted @ 2017-08-03 15:09 cag2050 阅读(152) 评论(0) 推荐(0)

chrome浏览器network面板出现:Provisional headers are shown 提示

摘要: 一般来说,如果看到这个提示,说明这个请求并没有发送出去。 具体原因有多种: 1. 请求被某些扩展如 Adblock 拦截了 2. 请求被墙了 3. 走本地缓存或者 dataurl 的请求 4. client发送请求后,由于各种原因,比如网络延迟,server端逻辑错误,导致client端长时间未收到 阅读全文

posted @ 2017-08-03 10:18 cag2050 阅读(604) 评论(0) 推荐(0)

2017年8月2日

mysql 聚簇索引、非聚簇索引的区别

摘要: 索引分为聚簇索引和非聚簇索引。 以一本英文课本为例,要找第8课,直接翻书,若先翻到第5课,则往后翻,再翻到第10课,则又往前翻。这本书本身就是一个索引,即“聚簇索引”。 如果要找"fire”这个单词,会翻到书后面的附录,这个附录是按字母排序的,找到F字母那一块,再找到"fire”,对应的会是它在第几 阅读全文

posted @ 2017-08-02 22:38 cag2050 阅读(1550) 评论(0) 推荐(0)

java 中的 hashcode

摘要: 在Java的Object类中有一个方法: 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。 hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。 阅读全文

posted @ 2017-08-02 17:51 cag2050 阅读(124) 评论(0) 推荐(0)

HTTP报头:通用报头,请求报头,响应报头和实体报头

摘要: 缓存控制优先级从高到低分别是Pragma Cache Control Expires 报头 每一个报头都是由 [名称 + ":" + 空格 + 值 + ] 组成。有四种不同类型的报头: 1. 通用报头:可用于请求,也可以用于响应,它是作为一个整体而不是特定的资源与事务相关联。 1. 请求报头:允许客 阅读全文

posted @ 2017-08-02 14:32 cag2050 阅读(1294) 评论(0) 推荐(0)

http报头 Accept 与 Content-Type 的区别

摘要: Accept属于请求头, Content Type属于实体头。 Http报头分为通用报头,请求报头,响应报头和实体报头。 请求方的http报头结构:通用报头|请求报头|实体报头 响应方的http报头结构:通用报头|响应报头|实体报头 Accept代表发送端(客户端)希望接受的数据类型。 比如:Acc 阅读全文

posted @ 2017-08-02 14:10 cag2050 阅读(194) 评论(0) 推荐(0)

Lock 和 synchronized 的区别

摘要: Lock 和 synchronized 的区别 1. Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现; 1. synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过 阅读全文

posted @ 2017-08-02 11:38 cag2050 阅读(155) 评论(0) 推荐(0)

java 多线程知识点

摘要: 线程状态图 说明: 线程共包括以下5种状态。 1. 新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。 2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法, 阅读全文

posted @ 2017-08-02 10:45 cag2050 阅读(140) 评论(0) 推荐(0)

docker 知识点

摘要: docker 教程:http://www.runoob.com/docker/docker-tutorial.html docker 仓库地址:https://store.docker.com/ docker run参数说明: docker run [OPTIONS] IMAGE [COMMAND] 阅读全文

posted @ 2017-08-02 09:31 cag2050 阅读(183) 评论(0) 推荐(0)

2017年8月1日

IdentityHashMap 与 HashMap 的区别

摘要: 1. IdentityHashMap 中的 key 允许重复 1. IdentityHashMap 使用的是 == 比较 key 的值(比较内存地址),而 HashMap 使用的是 equals()(比较存储值) 1. IdentityHashMap 使用的是 System.identityHash 阅读全文

posted @ 2017-08-01 20:12 cag2050 阅读(266) 评论(0) 推荐(0)

WeakHashMap 理解

摘要: WeakHashMap 通过 expungeStaleEntries 这个函数的来实现:移除其内部不用的条目,从而达到自动释放内存的目的。 基本上只要对 WeakHashMap 的内容进行访问就会调用这个函数,从而达到清除其内部不再为外部引用的条目。 总结来说:WeakHashMap 并不是你啥也干 阅读全文

posted @ 2017-08-01 19:56 cag2050 阅读(141) 评论(0) 推荐(0)

2017年7月31日

vue-cli 项目构建性能分析工具

摘要: 修改package.json 启动 阅读全文

posted @ 2017-07-31 18:44 cag2050 阅读(739) 评论(0) 推荐(0)

vue-cli、webpack提取第三方库-----DllPlugin、DllReferencePlugin

摘要: 需要安装的插件有 extract text webpack plugin assets webpack plugin clean webpack plugin 配置文件 在 build 文件夹中新建 buildDll.js 在 build 文件夹中新建 webpack.dll.conf 修改webp 阅读全文

posted @ 2017-07-31 18:32 cag2050 阅读(1033) 评论(0) 推荐(0)

package.json 文件中的版本号

摘要: 版本号,格式:“主要版本,次要版本,补丁版本” 1. 指定版本:比如1.2.2,遵循“主版本,次要版本,补丁版本”的格式规定,安装时只安装指定版本。 2. 波浪号(tilde)+指定版本:比如~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2),但是不安装1.3.x,也就是说安装时不改变主 阅读全文

posted @ 2017-07-31 16:13 cag2050 阅读(778) 评论(0) 推荐(0)

项目优化时间统计

摘要: Vue cli项目的Webpack2构建优化 针对vue cli(vue init webpack)构建的npm run build命令,优化方法 时间统计(在前一优化保留的情况下,计算的时间): 未优化前:131501ms,140447ms,126268ms,138763ms 开启webpack的 阅读全文

posted @ 2017-07-31 15:10 cag2050 阅读(408) 评论(0) 推荐(0)

2017年7月30日

http 301 和 302的区别

摘要: 301 永久重定向 301 重定向是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址。 301 重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。 302 临时重定向 3 阅读全文

posted @ 2017-07-30 21:07 cag2050 阅读(333) 评论(0) 推荐(0)

上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 34 下一页

导航