技术分享
文章平均质量分 59
葵续浅笑
争取每天都有进步!
展开
-
HTTPS 原理简要总结
HTTPS 的原理最近看了下《图解 HTTP》,对 HTTPS 怎么实现安全的原理总结了一下。HTTPS 的原理要从怎么解决安全性问题来一步步阐明,这样说起来会更清晰一点:如何解决网络传播中数据安全问题?答:运用对称加密或者非对称加密来加密数据内容。https 使用对称加密加密数据内容,不使用非对称加密是因为性能比对称加密更差。对称加密的密钥需要双方都要知道,如何保证密钥安全?答:使用非对称加密加密对称加密的密钥。客户端拥有非对称加密的公钥,对对称加密的密钥加密后,传给服务端,服务端用非原创 2022-02-01 20:07:50 · 1981 阅读 · 0 评论 -
钉钉机器人限流应对方案--延迟队列的实现和内存泄漏思考(下)
没有被回收的对象上篇文章介绍了自己写的延迟队列工具。我们提到,延迟队列不需要长久存活,我们使用带有lru功能的LinkedHashMap来淘汰一些不常用的LimitUtil。但是对象有没有真的会回收呢?简单写了一个测试类,建了三个对象,Lru容量设为1LRU<String, LimitUtil> map = new LRU<>(1, 0.75f);@Test ...原创 2019-10-15 17:45:03 · 856 阅读 · 0 评论 -
钉钉机器人限流应对方案--延迟队列的实现和内存泄漏思考(上)
需求最近做公司的报警系统,需要做钉钉推送报警信息,但是钉钉有限流措施,一分钟内发多了会导致"send too fast"异常,虽然我们可以通过限流工具来拒绝多余的信息,但是我们希望信息不要漏掉.如果推送时间接受可以晚一点的话,我们可以通过延时队列解决。JDK里的延时队列其实jdk就有现成的延时队列 DelayQueue。里面存放的元素必须要全部实现 Delayed接口,Delayed接口只有...原创 2019-10-14 19:50:43 · 2512 阅读 · 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 · 2097 阅读 · 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 · 606 阅读 · 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 · 2206 阅读 · 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 · 1718 阅读 · 0 评论 -
Git 自学笔记 egit (github远程仓库)
git的强大之一体现在远程仓库,Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。 而github这个神奇的网站可以提供Git仓库托管服务的,只要注册一个GitHub账号,就可以免费获得Git远程仓库。 由于你的本地原创 2016-10-06 13:07:33 · 353 阅读 · 0 评论 -
Git 自学笔记 egit (版本回退)
在公司一年多了,用到的项目都是用svn代码托管,没有git 的用武之地,趁国庆假期稍微自学了一下,然后人比较懒,不愿用原生敲命令行的形式,就在eclipse上学学怎么用git,话说回来用了svn再来学git,既容易也难,难在于git的命令更多,上手也需要时间。我学习用的是廖雪峰的git教程,讲得很好,浅显易懂,他敲得是命令行,我翻译成了如何在eclipse中操作,也是一样学。廖雪峰的git教程地址:原创 2016-10-05 16:25:48 · 4780 阅读 · 0 评论 -
jenkins--从git拉取代码到远程tomcat部署
临近毕业,自己的毕业设计需要发布到外网部署,顺便学习了jenkins部署,就不用我们自己手动去部署了。1.安装jenkins及一些环境配置 官网有安装教程,java命令启动jenkins后,需要了解,下面几个方面: (1) jenkins插件,因为我们是从git拉代码,然后maven编译成war包,最后放置到远程服务器上启动,所以这几个插件必装。 Git plugin, Maven I原创 2017-03-15 16:20:20 · 8193 阅读 · 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 · 409 阅读 · 0 评论 -
Simplify-Core -- java对象转换成Json(Json generator)
先感叹一波今天正式毕业,拿到了毕业证和学位证,然后博客也有三个多月没写了,最近自己写了一个工具类的项目,Simplify,旨在简化重复的JAVA代码,基于JDK8,无其它jar包依赖,提供序列化,json,日期等常见操作。json generator部分写的比较完善了, parse部分能跑简单的测试用例。 网上json的工具类数不胜数,自己写主要还是实现最基本的json功能满足大部分的需要,更重要原创 2017-06-30 19:40:42 · 1083 阅读 · 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 · 628 阅读 · 0 评论 -
java 日志框架简单实用用法
在我们学java的时候,我们最先使用的是 system.out.println 记录程序的运行过程,后来我们接触了日志框架,它拥有更专业的日志记录能力,但是在我们还没有充分认识这些日志框架之前,也只是写一些log.info之类的语句,没有发现它比system.out.println好在哪里,后来接触了真实的项目,学习别人的 日志配置, 了解到slf4j是java大部分日志框架的门面,具体用 lo原创 2017-08-21 20:31:33 · 1329 阅读 · 0 评论 -
正则表达式中的数量词概念
最近看《JAVA编程思想》看到字符串的部分,在讲正则的时候,提到了一个我之前不知道的概念–数量词,在我看来,它决定了正则的匹配范围。正则中的数量词有Greedy (贪婪)、Reluctant(懒惰)和Possessive(强占)三种贪婪型贪婪型:它首先匹配整个字符串,如果不匹配,就从右端去掉一个字符,再进行匹配,直到找到匹配或把整个字符串去完为止。Pattern compile = Pattern.原创 2017-10-10 15:45:59 · 912 阅读 · 0 评论 -
熟悉又陌生的跨域访问与CORS
说到跨域访问,是既熟悉又陌生,熟悉是因为只要做过web项目,尤其是前后端分离的项目,都碰到过ajax跨域访问的麻烦,跨域访问就如字面意思,只要协议、域名、端口有任何一个不同,都被当作是不同的域。对于跨域访问,是有限制的;陌生的是,很多跨域无法访问的问题只能一味网上找解决方案,而不知道跨域乃至CORS的原理,配置出了问题不知道如何下手, 所以这次记录一下彻底解决下跨域的问题。为什么要有跨域限制...原创 2018-05-28 19:07:08 · 400 阅读 · 0 评论 -
实现简单的JAVA多级缓存(Caffeine + redis)
需求好久没写文章啦,之前写的文章到现在也没有收尾,没办法,时间不多啊,旧坑没有填完就开始开新坑,最近项目组长说实现一个多级缓存,通常我们喜欢把cache放到redis里,可以把访问速度提升,但是redis也算是远程服务器,会有IO时间的开销,如果我们把缓存放在本地内存,性能能进一步提升,这也就带出了二级缓存概念。有人说为什么不把cache直接放到本地,如果是单机没问题,但是集群环境下还是需要两级...原创 2018-10-18 18:59:31 · 10719 阅读 · 0 评论 -
Git 自学笔记 egit (分支管理 下)
在git的分支merge中,不可能没有代码的冲突问题,特别在跟别人分工合作时。那该怎么解决?1.新建一个conflict分支,在dev方法下添加一句 System.out.println(“Creating a new branch is quick AND simple.”); ,提交。2.checkout到’master’分支,同样在下面加一句 System.out.println(“Cr原创 2016-10-09 19:34:15 · 394 阅读 · 0 评论 -
Git 自学笔记 egit (分支管理 上)
这一章比较重要,讲述了git比svn强大的地方,直接转载廖雪峰老师的文字,更好的理解 什么是分支 和 为什么分支git比svn做的更好 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。 现在有了分支,就不用怕了。原创 2016-10-09 16:33:44 · 320 阅读 · 0 评论 -
《Spring In Action》 读书笔记(4) -- SpEL表达式的简单应用
SpEL是我看这本书第一个比较兴奋的地方,因为以前还不知道spring有表达式,它可以让spring的装配不用全是固定的数据。但是SpEL表达式的演示代码全部敲出来又很多,就选取了两种比较重要的情况。第一种是可以调用静态方法作为装配的属性值。 第二种是可以调用Spring上下文中bean的值或方法。原创 2016-06-21 16:17:44 · 456 阅读 · 0 评论 -
绝对路径和相对路径在javaee工程下的区别
绝对路径和相对路径在javaee后台开发一直只能是不停的实验,直到调出没有404页面 没有总结出经验 今天看视频总结了一下老师的经验 其实也很简单比如 Javaee工程 http://127.0.0.1:8080/control/index.do 跳转到 index.jsp页面 而index.jsp代码中有个超链接如下:<a href="main.do" target="mainFrame">原创 2015-09-20 21:02:20 · 672 阅读 · 0 评论 -
JAVAEE分页jar包及其用法
学习分页的时候找到一个好用的分页工具类,在此分享给大家,这个包没找到源码,暂且介绍下使用方法。上面是分页效果图。下面是一个“品牌”的javabean ,重要的代码注意注释,要有“页号”,“每行数”,“每页数”,并且setPageSize()方法要计算“开始行”。/** * 品牌 * @author pq * */public class Brand { private Intege原创 2015-09-22 22:02:38 · 2765 阅读 · 0 评论 -
如何在eclipse的配置文件里指定jdk路径
运行eclipse时报如下错误:在eclipse的配置文件里指定jdk路径,只需在eclipse的配置文件里增加-vm参数即可。 打开eclipse目录下的eclipse.ini配置文件,增加-vm配置,需要注意的是该参数要加在-vmargs之前eclipse.ini配置文件: -startup plugins/org.eclipse.equinox.launcher_1.3.0.v2012转载 2015-11-24 23:21:28 · 690 阅读 · 0 评论 -
解决 maven工程jar包不能同步到tomcat服务器
如果你的tomcat设置选择 而且又是maven工程管理jar包 容易出现jar包没有同步到tomcat 文件夹下的问题 解决方法是 打开工程属性 然后照下图的设置假如maven依赖 然后tomcat重新部署工程即可原创 2015-12-15 21:50:59 · 523 阅读 · 0 评论 -
关于<:if>没有<c:else>解决方案
[html] view plaincopyc:if>没有c:else>可以用c:choose>来取代结构: c:choose> c:when test=""> 如果 c:when> c:otherwise> 否则 c:otherwise> c:choose> 在同转载 2015-12-17 10:40:28 · 1007 阅读 · 0 评论 -
关于maven本地仓库的设置和添加jar包
本地仓库设置有两个地方 最好一起修改 保证以后maven操作的本地仓库是同一个 一个是 C:\Users\用户名.m2\settings.xml文件里面设置 还有一个就是maven安装目录下的conf\settings.xml文件还有一个添加 jar包 到本地仓库的命令 mvn install:install-file -Dfile=ueditor-1.1.2.jar -Dgroup原创 2015-12-01 11:22:59 · 607 阅读 · 0 评论 -
在Tomcat部署Solr
假定$SOLR_HOME为E:\Software\apache-tomcat-6.0.35-solr\solr步骤1,从solr-4.3.0\dist复制solr-4.3.0.war到$SOLR_HOME并重命名为solr.war;步骤2,将solr-4.3.0\example\solr复制到$SOLR_HOME目录;步骤3,在tomcat/conf/catalina/lo转载 2015-12-22 14:37:51 · 351 阅读 · 0 评论 -
jsp Request获取url信息的各种方法比较
从Request对象中可以获取各种路径信息,以下例子: 假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下 String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServ转载 2015-12-07 13:29:05 · 389 阅读 · 0 评论 -
sql语句转java代码 v1.1
首先感谢原作者 http://blog.csdn.net/isea533/article/details/9059001因为经常在plsql写sql然后放到java 文件当成String去执行 所以经常要花时间格式化,然后找到了网上的一篇文章 ,工具非常不错,我下载了源码做了一些更改包括 :1.自动识别剔除oracle 的注释 2.一些特殊情况下的原创 2016-02-18 15:42:10 · 1135 阅读 · 0 评论 -
jquery.validate 自学自写
以前的项目表单验证都是 系统自带的 这次 要自己写表单验证 还真遇到不少问题 我先说一下 jquery.validate 成功运行的条件 1.页面要先加载完成 因为我使用requirejs跳转页面 跟以前写jsp页面不太一样 validate 验证代码要保证放在页面加载完成之后。 2.校验的字段 id 和 name 属性都要有,并且保持一致。 3.要有一个原创 2016-03-18 12:23:31 · 83 阅读 · 0 评论 -
js arguments对象的简单理解
之前js基础太差 如今看到一个项目碰到很多js问题,做一下总结。这次是arguments对象的简单理解function ArgTest(a, b){var i, s = "The ArgTest function expected ";var numargs = arguments.length; // 实际传递的参数数量var expargs = ArgTest.length;原创 2016-03-13 13:00:05 · 468 阅读 · 0 评论 -
《Spring In Action》 读书笔记(1) -- bean装配
这是我第一本java类的书,在学SSH的时候,感觉spring是最没用的,然而现在实习快一年了,现在才发现spring的精妙,决定看本书来更了解下spring,这两天学习bean装配,别看内容简单,其实平常做项目的时候xml配置是很少用到的(项目搭建的时候xml配置基本上都配置好了,以后都不会动),所以导致自己配的时候往往错误很多。 constructor-arg的用法 先定义一个Juggler接原创 2016-06-15 10:55:32 · 431 阅读 · 0 评论 -
java中的Static class
Java中的类可以是static吗?答案是可以。在java中我们可以有静态实例变量、静态方法、静态块。类也可以是静态的。 java允许我们在一个类里面定义静态类。比如内部类(nested class)。把nested class封闭起来的类叫外部类。在java中,我们不能用static修饰顶级类(top level class)。只有内部类可以为static。 静态内部类和非静态内部类之间到底有什么转载 2016-06-13 16:52:56 · 539 阅读 · 0 评论 -
《Spring In Action》 读书笔记(2) -- bean装配
接上一篇property的用法property标签内部的属性也是ref和value,跟 constructor-arg用法无异,所以这里结合 集合 装配来说 property标签跟 constructor-arg 区别在于 后者是找构造方法,前者是找类的字段。先上代码先写一个Instruments(乐器)接口package spring.ioc03;public interface Instrum原创 2016-06-15 16:01:14 · 350 阅读 · 0 评论 -
《Spring In Action》 读书笔记(5) -- @autowire,@Qualifier减少xml配置
Instruments.java 创建乐器接口package spring.ioc04;public interface Instruments { public void play();}Cello.java 大提琴package spring.ioc04;public class Cello implements Instruments { @Override pu原创 2016-07-01 15:15:22 · 711 阅读 · 0 评论 -
《Spring In Action》 读书笔记(3) -- factory-method的应用
因为单例类的特殊性,spring对于单例类的注入提供了factory-method属性。原创 2016-06-21 15:01:53 · 459 阅读 · 0 评论 -
jstl标签调用后台公共静态方法
由于本人之前并没有接触过jstl标签,说来也可笑,之前一直使用struts2标签。最近项目用到jstl,所以做些记录方便以后自己查看。jstl的强大原因之一我认为就是他的自定义函数,我们可以在前端页面直接就调用了java后台的一些常用方法,这一点真是让我爱不释手好吗。废话不多说,接下来具体看看如何使用jstl的自定义函数。首先jstl的jar包肯定是要导的,在这就不啰嗦了。使用jstl自定义函数要做转载 2015-10-08 14:37:45 · 6736 阅读 · 0 评论