Fork me on GitHub

随笔分类 -  java

摘要:CountDownLatch:一个门闩,作用是将某个线程关在门外,等门里的人分赃完毕(计数为0)的时候,才会打开门,让外面的那个线程执行。 这玩意很有用,有利于我们控制许多线程,有序执行业务。 demo:r2必须要等r1执行完才可以执行。 结果: 执行r1............sleep 1s执行 阅读全文
posted @ 2019-09-15 14:55 小传风 阅读(265) 评论(0) 推荐(0)
摘要:作为6年经验的程序员,一直在搞web服务应用开发,今天领导被吐槽了,只会web方面的东东,最基本的打包啥啥都不会。。 一般开发工程都是web项目,突然要求开发非web,不用tomcat装(浪费端口号),脑子里其实第一反应就是打jar包。 废话不多说:整体思路,ant 打jar,注意,此处依赖的lib 阅读全文
posted @ 2019-09-02 23:23 小传风 阅读(410) 评论(0) 推荐(0)
摘要:其实就是通过浏览器url,点击就会下载文件。 这里是从代码层面上,对文件进行下载。 测试(可忽略,主要自己业务要用到) 阅读全文
posted @ 2019-07-14 22:40 小传风 阅读(31101) 评论(1) 推荐(0)
摘要:加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。 双向加密:大体意思就是明文加密后形成密文,可以通过算法还原成明文。 单向加密:只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应 阅读全文
posted @ 2019-05-23 18:00 小传风 阅读(1121) 评论(0) 推荐(0)
摘要:什么是HTTP协议? 超文本传输协议 HTTP协议通过请求/响应的方式,在客户端和服务端之间进行通信。 HTTP协议有一个致命的缺点:传输信息是明文,不够安全,容易受到中间人攻击。 HTTPS 在Http协议的基础上增加了SSL安全层。 SSL:安全套接层 优点: (1)提供较高的安全性保证 SSL 阅读全文
posted @ 2019-05-23 15:12 小传风 阅读(236) 评论(0) 推荐(0)
摘要:首先贴一段内存泄漏的代码并且执行。(内存泄漏:GC回收不掉的实例对象) 运行后,在jdk1.8找到jvisualvm.exe。 1、建立连接: 2、监视执行垃圾回收,没有显著变化。 3、抽样中找出占用内存较大的类,尝试执行GC.发现ResponseDTO对象无显著变化 4、dump,右击Respon 阅读全文
posted @ 2019-05-15 18:42 小传风 阅读(593) 评论(0) 推荐(0)
摘要:爬虫从网络上爬取巨量数据,数据保存如果放DB中不仅插入慢,随着数据量增大,查询性能也会越发差。最近有一个设想,能否将爬取的数据以文件形式保存,通过lucene框架建立索引的方式来满足快速搜索呢。 菜鸟起飞: 一、Lucene简介: Lucene是Apache Jakarta家族中的一个开源项目,是一 阅读全文
posted @ 2019-05-15 16:13 小传风 阅读(364) 评论(0) 推荐(0)
摘要:场景:BloomFilter--大规模数据排重算法 优点:空间利用率高,保存不是数据本身,安全性好; 缺点:插入数据越大,误判率越高,不能删除元素 应用场景:防缓存击穿(数以十亿级别数据量,将不太适合用redis等缓存) 整体思路:举个例子,对url做过滤排重。 1、创建一个空的Bitmap集合 2 阅读全文
posted @ 2019-05-13 19:07 小传风 阅读(968) 评论(0) 推荐(0)
摘要:不同的字符串,hashcode可能相同。 先看例子: 源码:String.class 分析:int 在java中4个字节,[-2^31,2^31-1] (注意,数学表示方法,实际java用Math.pow(2,31)) int肯定会有一个上限,当字符长时产生的数值过大int放不下时会进行截取,一旦截 阅读全文
posted @ 2019-05-13 18:46 小传风 阅读(10192) 评论(0) 推荐(1)
摘要:什么是CAS机制 CAS是英文单词Compare and Swap的缩写,翻译过来就是比较并替换 CAS机制中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。 看如下几个例子: CAS 缺点 1) CPU开销过大 在并发量比较高的情况下,如果许多线程反复尝试更新某一个变量,却又一直更 阅读全文
posted @ 2019-05-10 18:54 小传风 阅读(1343) 评论(0) 推荐(0)
摘要:1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点 阅读全文
posted @ 2019-05-07 08:08 小传风 阅读(136) 评论(0) 推荐(0)
摘要:额,突然发现有点鸡肋了,apache.common.io 提供FileUtis很好用。。。。。 提供文件工具类,方便以后用到的时候用。有不正之处还请指出。 阅读全文
posted @ 2019-04-22 17:06 小传风 阅读(198) 评论(0) 推荐(0)
摘要:异常转译:当位于最上层的子系统不需要关心底层的异常细节时,常见的作法时捕获原始异常,把它转换一个新的不同类型的异常,在将新异常抛出。 通常方法捕获底层异常,然后抛高层异常。 然后调用方法去捕获RunTimeException,处理异常。 阅读全文
posted @ 2019-04-18 18:56 小传风 阅读(374) 评论(0) 推荐(0)
摘要:背景: 在Java编程过程中,如果打开了外部资源(文件、数据库连接、网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们。因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制,如果我们不在编程时确保在正确的时机关闭外部资源,就会导致外部资源泄露,紧接着就会出现文件被异常占用,数据库连接过 阅读全文
posted @ 2019-04-18 18:34 小传风 阅读(471) 评论(0) 推荐(0)
摘要:基本概念: java平台允许我们在内存中创建可复用的Java对象,但只有当JVM处于运行时,这些对象才可能存在。但实际应用中,我们需要JVM停止运行之后任能够保存指定的对象状态,并在将来重新读取被保存的对象。 序列化:是将对象状态转换为可保持或传输的格式的过程 反序列化:将流转换为对象 场景:序列化 阅读全文
posted @ 2019-04-08 15:23 小传风 阅读(270) 评论(0) 推荐(0)
摘要:避免过度同步(67):在一个被同步的方法或代码块中,不要调用哪些被设计成被覆盖的方法或者是由客户端以函数对象的形式提供的方法(21)。 有点拗口,书上提供的创建者与观察者模式,add方法太多,看得眼花缭乱,重新写了一个例子: 测试: I love my son.... 没问题,再看下面: 结果,在上 阅读全文
posted @ 2019-04-03 19:55 小传风 阅读(272) 评论(0) 推荐(0)
摘要:本次样例从单机层面上,采用拦截器的方式对请求限流。 资源:https://github.com/xiaozhuanfeng/rateLimiterProj 工程结构: pom.xml application.properties 1、新建抽象拦截器 2、新建RateLimiter Bean 3、新建 阅读全文
posted @ 2019-03-29 18:23 小传风 阅读(1181) 评论(0) 推荐(0)
摘要:Guava RateLimiter提供了令牌桶算法实现:平滑突发限流(SmoothBursty)和平滑预热限流(SmoothWarmingUp)实现。 SmoothBursty:令牌生成速度恒定 输出结果: cutTime=2019-03-29 09:31:42 acq:1 waitTime:0.0 阅读全文
posted @ 2019-03-28 19:04 小传风 阅读(2857) 评论(0) 推荐(0)
摘要:在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开 限流 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统, 阅读全文
posted @ 2019-03-28 18:58 小传风 阅读(2086) 评论(0) 推荐(0)
摘要:最近公司版本控制准备弃用svn,采用git。所以在个人系统安装玩了下,留点爪印。。。 1、下载最新的 git 包(根据电脑系统) 官网地址:https://git-scm.com/download/win 2、安装 2、安装 双击安装,next,最后: 3、配置环境变量 我这边是安装时,自动添加上了 阅读全文
posted @ 2019-03-25 19:02 小传风 阅读(170) 评论(0) 推荐(0)