技术分享
文章平均质量分 73
葵续浅笑
争取每天都有进步!
展开
-
HTTPS 原理简要总结
HTTPS 的原理最近看了下《图解 HTTP》,对 HTTPS 怎么实现安全的原理总结了一下。HTTPS 的原理要从怎么解决安全性问题来一步步阐明,这样说起来会更清晰一点:如何解决网络传播中数据安全问题?答:运用对称加密或者非对称加密来加密数据内容。https 使用对称加密加密数据内容,不使用非对称加密是因为性能比对称加密更差。对称加密的密钥需要双方都要知道,如何保证密钥安全?答:使用非对称加密加密对称加密的密钥。客户端拥有非对称加密的公钥,对对称加密的密钥加密后,传给服务端,服务端用非原创 2022-02-01 20:07:50 · 2142 阅读 · 0 评论 -
钉钉机器人限流应对方案--延迟队列的实现和内存泄漏思考(下)
没有被回收的对象上篇文章介绍了自己写的延迟队列工具。我们提到,延迟队列不需要长久存活,我们使用带有lru功能的LinkedHashMap来淘汰一些不常用的LimitUtil。但是对象有没有真的会回收呢?简单写了一个测试类,建了三个对象,Lru容量设为1LRU<String, LimitUtil> map = new LRU<>(1, 0.75f);@Test ...原创 2019-10-15 17:45:03 · 883 阅读 · 0 评论 -
钉钉机器人限流应对方案--延迟队列的实现和内存泄漏思考(上)
需求最近做公司的报警系统,需要做钉钉推送报警信息,但是钉钉有限流措施,一分钟内发多了会导致"send too fast"异常,虽然我们可以通过限流工具来拒绝多余的信息,但是我们希望信息不要漏掉.如果推送时间接受可以晚一点的话,我们可以通过延时队列解决。JDK里的延时队列其实jdk就有现成的延时队列 DelayQueue。里面存放的元素必须要全部实现 Delayed接口,Delayed接口只有...原创 2019-10-14 19:50:43 · 2584 阅读 · 0 评论 -
JAVA 8 StreamAPI 和 lambda表达式 总结(四)--stream的一些聚合操作
在sql里,一些聚合操作max,count,或者只是进行一些分组,这些我们都很熟悉,在Stream API中,我们也可以做一些聚合操作.我们定义一个类Group,里面有班级号,分数和学生的名字package JDK.StreamAndLambda.groupToMap;/** * Created by panqian on 2017/2/28. */public class Group {原创 2017-03-03 18:46:29 · 2115 阅读 · 0 评论 -
JAVA 8 StreamAPI 和 lambda表达式 总结(二)--Stream基本操作
1.从迭代器到Stream操作以前我们遍历一个集合可以用for 循环,iterator迭代器。jdk8新推出了一项特性,Stream语法,用Stream语法可以让代码更加简洁,而且原生支持的并发操作也能提高效率List<Integer> list = new ArrayList<>();for (int i = 0; i < 100000; i++) { list.add((int) (M原创 2017-02-21 19:50:34 · 619 阅读 · 0 评论 -
服务器 配置SSL for nginx && springboot(jetty)
自己的小项目到了配置ssl的阶段,去网上找到了Let’s Encrypt ssl证书提供商 免费开放 用的人比较多 按照官方文档的说明 去这个网站按照提示操作 我是在centos7操作的 https://certbot.eff.org/#centosrhel7-nginx大致过程如下sudo yum install certbotcertbot certonly --standal原创 2016-11-24 14:47:58 · 2216 阅读 · 0 评论 -
spring mail 中文乱码处理
1.mail内容保证 “GBK”编码要有这个meta头<META http-equiv=Content-Type content='text/html; charset=GBK'>文件格式保证GBK,如果之前不是GBK,先把文件内容粘贴到其他地方,然后改文件格式为GBK,最后把内容重新拷贝进来,保存2.MimeMessageHelper类构造类记得传GBK编码MimeMessage message原创 2016-12-12 15:22:01 · 1734 阅读 · 0 评论 -
Git 自学笔记 egit (版本回退)
在公司一年多了,用到的项目都是用svn代码托管,没有git 的用武之地,趁国庆假期稍微自学了一下,然后人比较懒,不愿用原生敲命令行的形式,就在eclipse上学学怎么用git,话说回来用了svn再来学git,既容易也难,难在于git的命令更多,上手也需要时间。我学习用的是廖雪峰的git教程,讲得很好,浅显易懂,他敲得是命令行,我翻译成了如何在eclipse中操作,也是一样学。廖雪峰的git教程地址:原创 2016-10-05 16:25:48 · 4822 阅读 · 0 评论 -
jenkins--从git拉取代码到远程tomcat部署
临近毕业,自己的毕业设计需要发布到外网部署,顺便学习了jenkins部署,就不用我们自己手动去部署了。1.安装jenkins及一些环境配置 官网有安装教程,java命令启动jenkins后,需要了解,下面几个方面: (1) jenkins插件,因为我们是从git拉代码,然后maven编译成war包,最后放置到远程服务器上启动,所以这几个插件必装。 Git plugin, Maven I原创 2017-03-15 16:20:20 · 8218 阅读 · 1 评论 -
Java String intern() 和 String Pool
在jdk里,String类型是最常用的api之一,我们在背面试宝典的时候,也经常有关于String 的知识点,但是我们只记得结论,比如我们会有以下问题: **1.“s1 == s2 是内存地址的对比,s1.equals(s2)是对比字符串内容”,但是内存地址不一样很正常,这个内存地址什么时候会是一样的? 2. 对于 String s = new String(”aa“)和 String s原创 2017-07-01 13:06:12 · 421 阅读 · 0 评论 -
Simplify-Core -- java对象转换成Json(Json generator)
先感叹一波今天正式毕业,拿到了毕业证和学位证,然后博客也有三个多月没写了,最近自己写了一个工具类的项目,Simplify,旨在简化重复的JAVA代码,基于JDK8,无其它jar包依赖,提供序列化,json,日期等常见操作。json generator部分写的比较完善了, parse部分能跑简单的测试用例。 网上json的工具类数不胜数,自己写主要还是实现最基本的json功能满足大部分的需要,更重要原创 2017-06-30 19:40:42 · 1110 阅读 · 0 评论 -
Simplify-Core --Json解析(Json parser)
在上一篇文章中,我们看到了一个java对象是怎么转换成json规范的字符串,这一次是反过来,从json字符串解析json内容,并且合成java bean,先上我的Simplify项目地址项目,欢迎路过的大牛对项目提出建议。项目地址:https://github.com/lovejj1994/Simplify-Core还是再贴一下json框架的架构图,因为不管是解析还是生成,都跟这个架构有关系。 先原创 2017-07-16 23:17:40 · 645 阅读 · 0 评论 -
java 日志框架简单实用用法
在我们学java的时候,我们最先使用的是 system.out.println 记录程序的运行过程,后来我们接触了日志框架,它拥有更专业的日志记录能力,但是在我们还没有充分认识这些日志框架之前,也只是写一些log.info之类的语句,没有发现它比system.out.println好在哪里,后来接触了真实的项目,学习别人的 日志配置, 了解到slf4j是java大部分日志框架的门面,具体用 lo原创 2017-08-21 20:31:33 · 1369 阅读 · 0 评论 -
正则表达式中的数量词概念
最近看《JAVA编程思想》看到字符串的部分,在讲正则的时候,提到了一个我之前不知道的概念–数量词,在我看来,它决定了正则的匹配范围。正则中的数量词有Greedy (贪婪)、Reluctant(懒惰)和Possessive(强占)三种贪婪型贪婪型:它首先匹配整个字符串,如果不匹配,就从右端去掉一个字符,再进行匹配,直到找到匹配或把整个字符串去完为止。Pattern compile = Pattern.原创 2017-10-10 15:45:59 · 932 阅读 · 0 评论 -
熟悉又陌生的跨域访问与CORS
说到跨域访问,是既熟悉又陌生,熟悉是因为只要做过web项目,尤其是前后端分离的项目,都碰到过ajax跨域访问的麻烦,跨域访问就如字面意思,只要协议、域名、端口有任何一个不同,都被当作是不同的域。对于跨域访问,是有限制的;陌生的是,很多跨域无法访问的问题只能一味网上找解决方案,而不知道跨域乃至CORS的原理,配置出了问题不知道如何下手, 所以这次记录一下彻底解决下跨域的问题。为什么要有跨域限制...原创 2018-05-28 19:07:08 · 420 阅读 · 0 评论 -
实现简单的JAVA多级缓存(Caffeine + redis)
需求好久没写文章啦,之前写的文章到现在也没有收尾,没办法,时间不多啊,旧坑没有填完就开始开新坑,最近项目组长说实现一个多级缓存,通常我们喜欢把cache放到redis里,可以把访问速度提升,但是redis也算是远程服务器,会有IO时间的开销,如果我们把缓存放在本地内存,性能能进一步提升,这也就带出了二级缓存概念。有人说为什么不把cache直接放到本地,如果是单机没问题,但是集群环境下还是需要两级...原创 2018-10-18 18:59:31 · 10839 阅读 · 0 评论