- 博客(31)
- 收藏
- 关注
原创 ReentrantLock原理浅析
一、序言 最近一直在看高洪岩著的《java并发编程》,里面介绍了java.util.cocurrent下的常用并发相关类,但是基本上都是介绍如何用这些类,以及这些类的作用,并没有细究到相关原理,加上最近的工作内容很多涉及到异步多线程,用到了一些并发控制相关的类,如ReentrantLock、CountDownLatch等等,所以最近一直在看源码研究这些类的原理,而这篇文章就是从源码...
2018-09-06 20:17:45 417
原创 Java的private和final字段竟然可以被外部类修改?
一、前言今天在阅读源码的时候无意中发现被private修饰的变量竟然可以被外部类访问,不仅如此,final声明的变量在某种情况下还可以被修改。这种打破常规的操作就是用到神奇的反射。二、演示1、访问并修改private修饰的字段将被外部修改的类public class Person { private String name = "zhangs
2017-12-08 16:32:34 2716
原创 git log统计每个作者的代码量
前言最近想写一个脚本文件自动统计git里每个作者分别增加了多少行代码,于是上网Google下看别人是怎么写的,来来去去都是下图这种需要提前知道作者名字的这种脚本需要提前传入author参数,当新增加一个author时就需要去改动代码,这种代码的可扩展性极差。后来自己用awk写了一个不需要知道作者的名字就可以统计出每个作者新增了多少行代码的脚本具体实现脚本代码
2017-07-19 16:53:26 4210
原创 spring boot正常启动后,页面报404问题
前言今天用eclipse搭建spring boot项目时,在确保了代码和相关设置没错的情况下,在用浏览器访问时,总是会报404错误解决方法spring boot 的启动类只会扫描启动类当前的包和包下的所有类,不同包的类是不会被扫描到的,因此相关的controller类应该与启动类在同一个包下,这样才能扫描和加载到相关的类项目结构如下图(启动类CdApplication和Te
2017-06-20 12:57:31 7653
原创 fiddler修改返回数据的三种方法
背景访问某个URL地址,正常返回结果是{"code":0,"msg":"success","rows":["US","CA","GB","AR","AU","AT","BE","BR","CL","CN","CO","HR","DK","DO","EG","FI","FR","DE","GR"]},而我们需要将response在返回之前将json数据修改成{"code":1,"ms
2017-06-12 11:17:13 52394 2
转载 Intellij IDEA 使用Spring-boot-devTools无效解决办法
转自:blog.csdn.net/wjc475869/article/details/52442484相信大部分使用Intellij的同学都会遇到这个问题,即使项目使用了spring-boot-devtools,修改了类或者html、js等,idea还是不会自动重启,非要手动去make一下或者重启,就更没有使用热部署一样。出现这种情况,并不是你的配置问题,相信自己,热部署那几个设置很简
2017-06-09 11:46:38 516
原创 Python自动化脚本splinter框架chromedriver的安装
前言前几天看了Python的splinter框架,今天打算动手写一下。在用脚本打开chrome浏览器时,显示没有安装chromedriver,因为网上相关教程不多,所以现在把如何安装chromedriver的教程写下来缺少chromedriver的报错信息如下图:安装步骤1.到官网https://sites.google.com/a/chromium.org
2017-06-08 16:57:19 3722
原创 pip安装报错[SSL:CERTIFICATE_VERIFY_FAILED]解决方法
一些主机由于是使用公司内网的问题,导致pip快速安装时会出现如题目所说的问题,如图 将命令“pip install jinja2” 改成“pip --trusted-host pypi.python.org install jinja2”即可注:jinja2是框架的名称,将命令的jinja2改成对应的名称即可
2017-06-05 18:25:27 16290
原创 Git和GitHub连接后无法推送的问题
昨天在用Git和GitHub连接上后,想用 git push -u origin master时,总是提示ssh:connect to host github.com port: connection time out错误,在Google查资料时有很多人说在.ssh文件下写一个config文件来改访问的端口为443,但是问题依旧无法解决。在自习阅读了GitHub的一些说明后,我将Git和Git
2017-05-26 10:34:47 2443
转载 fiddler网络调试神器(前端)——擦肩而过
转自:http://shalles.github.io/blog/tools/fiddler/2015/02/08/tools-fiddler-profile08 February 2015##Web Debugging 支持基于windowsPC端windows、Mac、Linux系统,各种移动设备的通信调试且无浏览器限制(非pc windows只需多个设备与之在同一个网域下
2017-05-22 17:38:53 3727 2
原创 “用户登陆”之MD5加密
一、前言众所周知,我们在网络中传送一些数据时,会有被窃听的风险。因此,我们需要对需要保密的数据进行加密,才能保证数据不被泄露。而加密的方式有两种,一种是对客户端和服务端整个通信信道进行保护加密,如https协议中的SSL,还有另一种加密是对通信数据本身进行加密,如MD5,这边文章主要将MD5在用户登陆功能中的应用。二、存在的问题在过去的开发中,比如对用户密码的加密,笔试
2017-05-14 21:36:27 18483
转载 java线程安全总结
原文: http://www.iteye.com/topic/806990http://www.iteye.com/topic/808550 最近想将Java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣。已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,Java profile和jvm性能调优
2017-05-01 20:51:41 323
转载 剖析Mysql的InnoDB索引
转自:http://blog.csdn.net/voidccc/article/details/40077329摘要: 本篇介绍下MySQL的InnoDB索引相关知识,从各种树到索引原理到存储的细节。 InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档)。本着高效学习的目的,本篇以介绍InnoDB为主,少量涉及MyISAM作
2017-05-01 12:55:22 326
转载 常见HTTP状态码
100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议200 OK 一切正常,对GET和POST请求的应答文档跟在后面201 Created 服务器已经创建了文档,Location头给出了它的URL。202 Accepted 已
2017-04-30 15:32:35 378
转载 https详解
转自:http://www.2cto.com/net/201608/539863.htmlHTTP 的缺点到现在为止,我们已了解到 HTTP 具有相当优秀和方便的一面,然而 HTTP 并非只有好的一面,事物皆具两面性,它也是有不足之处的。HTTP 主要有这些不足,例举如下。1、通信使用明文( 不加密) , 内容可能会被窃听2、不验证通信方的身份, 因此有可能遭遇伪装
2017-04-29 13:03:06 2439
原创 KMP模式匹配算法总结
KMP算法主要是对朴素的模式匹配算法的改进,假设有String A和String B,i为A的首个字母的下标,j为B的首个字母的下标,即i=0,j=0,现要在A中匹配B,若用朴素的模式匹配算法,则i需要不断的回溯,如A=acbxacbd,B=abcd,当i=3,j=3时,发现字符不相等,如果使用的是朴素的模式匹配算法,则需要将i回溯为1,即i=i-j+1,而j=0。若用的是KMP模式匹配算法,
2017-04-15 19:34:38 557
转载 字符编码介绍
原文:https://wenku.baidu.com/view/cb9fe505cc17552707220865.html很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是
2017-03-24 18:34:23 281
原创 大数相乘
一、背景最近在看算法的时候发现了一个问题,我们都知道方法的形参是要指定类型的,假如有以下方法public int example(int a,int b){ int c = a+b; return c; }其中的形参a和形参b的类型是int,我们都知道int类型的数据的取值会限制在一定范围之内,如果我要传入的参数是大于int的取值范围怎么办,有人可能会想到用long,再不够就
2017-03-22 21:51:34 709
原创 设计模式之单例模式的优化
单例模式是一个非常重要的设计模式,而且代码量比较少,只需要几十行代码就能实现,虽然简洁,但是想要用好单例模式还是需要些门道,以下是我对单例模式的优化的总结一、单线程下的单例模式public class Singleton { private static Instance instance = null; private Singleton(){ } pub
2017-03-18 15:16:25 668
原创 TCP四次挥手关闭连接的图解与实践总结
TCP的关闭连接比TCP连接的建立稍微复杂一些,下面我把个人的学习和理解写下来分享。(参考《计算机网络》,第6版,谢希仁著)。1、TCP关闭连接的步骤假设现有客户端A和服务端B,客户端A向服务端B发出关闭连接请求。步骤一:客户端A主动向服务端B发送请求关闭连接报文段,FIN=1,seq=u,并进入FIN-WAIT-1状态,步骤二:服务端B接受到客户端A的请求之后返回
2017-03-14 16:53:05 1725
原创 TCP三次握手图解与实践总结
之前在面试的时候面试官问到了TCP三次握手的连接,虽然自己都懂,但是还有很多细节的地方被我忽略了,所以这里提醒下大家,要学好技术,每一个重要知识点都要扣的细一些,不要给自己的知识库留下任何盲区,否则只能是懂得表面不懂原理的半桶水的状态。稍微有计算机网络基础的人都知道TCP的建立是通过三次握手,但是一个URL的访问,从按下回车键开始,到TCP的建立,中间经历了什么?以下我把我的总结写下来和大
2017-03-14 11:34:56 5789 2
原创 图的最小生成树kruskal算法总结
kruskal算法的思想假如N={V,{E}}是连通网,那么最小生成树的初始状态是由N个顶点自成连通分量构成的一片森林。在E中选择权值最小的边,当该边对应的两个顶点在不同分量时,则将该边加入到最小生成树中,否则的舍去,再选择下一条代价最小的边,如此循环,直到所有的连通分量连接变成一个连通分量为止。看看具体代码public void minSpanTree_kurskal(Edg
2017-03-13 11:51:44 1443
转载 一步一图一代码,一定要让你真正彻底明白红黑树
出处:http://blog.csdn.net/chenhuajie123/article/details/11951777一步一图一代码,一定要让你真正彻底明白红黑树 作者:July 二零一一年一月九日-----------------------------本文参考:I、 The Art of Computer Programming Vo
2017-03-12 22:22:30 314
转载 红黑树-插入篇
出处:http://www.cnblogs.com/sandy2013/p/3270999.html红黑树插入操作比较复杂,特地从网上整理了一下,下面这两种解释结合起来看,就可以轻松理解红黑树的插入操作了。原博文的地址为:http://www.cnblogs.com/xuqiang/archive/2011/05/16/2047001.htmlhttp://blog.csdn.
2017-03-12 22:17:54 413
原创 堆排序、归并排序、快速排序总结
昨天刚把这三个排序算法复习了一遍,其中归并排序和快速排序特别的重要,一定要熟练并理解透彻!以下排序的结果都默认为非递减 1、堆排序(默认大顶堆)堆排序的思想:首先构建一个完全二叉树,从最大的非叶子结点,如果该结点小于孩子结点,则把该结点与最大的孩子结点交换,使该结点不断的往下沉到合适位置。然后又从第二大的非叶子结点开始,不断循环下去直到根节点,这时候便构造出了大顶堆,最后根结点就是...
2017-03-12 10:27:38 1925 1
原创 选择排序、插入排序、希尔排序总结
本来昨天想写最小生成树的kruskal算法,但是其中需要将图的边集数组进行排序,要用到排序算法,所以暂时先将kruskal算法放一下,把排序算法好好复习和总结一遍以下的排序结果默认为递增1、选择排序选择排序的思想:从第i个元素开始(i=1,i++),遍历一遍数组,找出数组中的最小值,然后与第i个元素交换位置,i++,不断的循环下去直到i>数组长度(长度为length-1,第0个元素
2017-03-11 10:09:36 477
原创 图的最小生成树prim算法总结
昨天刚刚把prim算法复习了一遍,现在把将自己的理解与总结写出来分享下,prim算法的思想通俗的讲就是:将连通网N={V,E}的顶点分为最小生成树集合U与非最小生成树集合V-U,然后从U中的顶点到V-U中的顶点的边中选出一条权值最小的边,然后把这条边对应的另一个顶点也加入最小生成树集合U中,反复的循环下去。。。下面就一起看看prim算法的代码1.用邻接矩阵存储图public c
2017-03-10 16:57:02 1821 1
原创 二叉树中序遍历和后序遍历的递归与非递归算法
昨天写的前序遍历的递归与非递归算法,在非递归算法中主要还是借用到了栈这一工具,其实在中序遍历和后序遍历中依旧可以理由栈的特性来进行非递归的遍历 操作。1.中序遍历1.1 中序遍历的递归算法二叉树的构造以在上一篇博文中有说到,这里就不再重复了,直接上代码public void InOrderTraverse(TreeNode T){ if(T==null){
2017-03-09 14:28:35 6642
原创 二叉树前序遍历的递归与非递归算法
前几天参加了阿里暑期实习的内推面试,发现自己的数据结构算法基础特别薄弱,比如其中一个问题是中序遍历的递归与非递归算法,我平时看数据结构只知道递归算法,非递归的算法直接被问懵逼了,在思考了几十秒之后想出了用数组存放每次遍历节点的父节点,然后用for循环遍历,虽然可以实现,但是我觉得面试官听到之后估计在吐血,还有HashMap底层自己明明知道用的是散列表,在紧张之下我竟然说是数组,面完之后被舍友吐槽,
2017-03-08 21:08:32 14668 1
原创 ArrayList源码剖析,解开神秘面纱之扩容(一)
1. ArrayList的构造方法1.1. 无参 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }这是无参的构造方法,在后面会讨论到的ArrayList在执行add()方法添加元素时,底层会默认创建一个长度为10的数组1.2. 自定义数组长度
2017-03-06 10:21:00 395
原创 对HashMap.put()和HashSet.add()的探究
这篇文章主要讨论HashMap.put()和HashSet.add()其中的几点关系和特性,即1.HashSet的底层调用了HashMap2.HashMap插入的entry允许key=null,value=null,HashSet也允许添加null对象3.HashMap中entry的key不会有重复以下纯粹是自己在阅读相关源码和资料后自己的总结,由于自己的水平有限,如果有任
2017-03-05 10:35:29 3443
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人