基础知识
懒惰的毛毛虫
这个作者很懒,什么都没留下…
展开
-
tomcat 配置修复X-Frame-Options 漏洞方法
给您的网站添加X-Frame-Options响应头,赋值有如下三种:DENY:无论如何不在框架中显示; SAMEORIGIN:仅在同源域名下的框架中显示; ALLOW-FROM uri:仅在指定域名下的框架中显示。具体配置:在tomcat/conf/web.xml中配置下面代码:web.xml搜索httpHeaderSecurity,首先放开httpHeaderSecurity的注释然后添加部分语句,下面是完整配置:<filter> <filter-na..原创 2021-04-12 14:44:47 · 2594 阅读 · 0 评论 -
Guava用法总结
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j16421881/article/details/79874819 &amp;amp;amp;amp;lt;/div&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt转载 2018-12-19 16:24:25 · 6572 阅读 · 2 评论 -
Collections.shuffle函数的实现
shuffle是用来随机打乱元素位置的下面是使用示例:public class ShuffleTest { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); for (int i = 0;...原创 2018-11-17 10:06:23 · 1360 阅读 · 0 评论 -
JDK1.8源码分析之LockSupport(一)
今天发现一个写的很好的juc系列的源码分析,出于对作者的尊重,这里不复制作者的内容 直接给出作者的原文地址:https://www.cnblogs.com/leesf456/p/5347293.html...转载 2018-11-20 18:05:05 · 285 阅读 · 0 评论 -
字典树 Trie Java实现
Trie,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。 每个节点的所...原创 2018-11-05 14:24:10 · 1299 阅读 · 0 评论 -
java 一行代码判断一个数是否2的整数幂
我们观察2的整数幂 换成二进制都有一个规律 如下:2 -> 0000 0010 4 -> 0000 0100 8 -> 0000 10002-1= 1 -> 0001 4-1=3 -> 0011 8-1=7 -> 0111这时我们 用 n & (n -1) 会发现结果都为...原创 2018-11-07 09:28:31 · 2347 阅读 · 0 评论 -
JAVA回调机制(CallBack)详解
序言最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义。当然了,我在理解了回调之后,再去看网上的各种讲解,确实没什么问题。但是,对于初学的我来说,缺了一个循序渐进的过程。此处,将我对回调机制的个人理解,按照由浅到深的顺序描述一下,如有不妥之处,望不吝赐教!开始之前...转载 2018-10-24 17:25:07 · 898 阅读 · 2 评论 -
java-两种方法求两个数组中重复的元素 lamdba
1、第一种普通的利用for循环:public static void main(String[] args) { Integer[] arr1 = { 1, 2, 5, 2, 6, 8, 9 }; Integer[] arr2 = { 2, 3, 4, 6, 9, 10 }; Set<Integer> sames = getSames(arr1, arr2); ...原创 2018-10-19 14:50:41 · 3573 阅读 · 1 评论 -
基于redis 实现布隆过滤器
简介Redis中有一个数据结构叫做Bitmap(下方有官网详解),它提供一个最大长度为512MB(2^32)的位数组。我们可以把它提供给布隆过滤器做位数组。根据《数学之美》中给出的数据,在使用8个哈希函数的情况下,512MB大小的位数组在误报率万分之五的情况下可以对约两亿的url去重。而若单纯的使用set()去重的话,以一个url64个字节记,两亿url约需要128GB的内存空间,不敢想象...原创 2018-10-12 15:23:41 · 4031 阅读 · 1 评论 -
Java面试题——继承,多态
一、面向对象的思想Java是一门纯粹的面向对象的语言。面向对象这种程序设计模式它将现实世界中的一切事物都看作是对象,例如,一个人是一个对象,汽车、飞机、小鸟等等,都是对象;它强调从对象出发,以对象为中心用人类的思维方式来认识和思考问题。每个对象都具有各自的状态特征(也可以称为属性)及行为特征(方法),java就是通过对象之间行为的交互来解决问题的。类是面向对象中一个重要的概念。类是具有相同属性...转载 2018-09-26 18:08:59 · 488 阅读 · 0 评论 -
try catch finally 执行顺序深究
撸代码的时候经常会用到try catch finally,但是如果不理解其中的真正用法 可能程序就会出问题哦,在这里测试几种情况下的返回值Test1: 最简单的在try返回 public static final int test1() { int x = 0; try { System.out.println("try"); x = 1; return x;...原创 2018-12-04 17:23:39 · 1265 阅读 · 1 评论 -
深入浅出一致性Hash原理
一、前言在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用...转载 2018-12-03 09:59:21 · 604 阅读 · 0 评论 -
org.apache.maven.archiver.mavenarchiver.getmanifest怎么解决
原因就是你的maven的配置文件不是最新的1.help ->Install New Software -> add ->https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST或者http://repo1.maven.org/maven2/.m...原创 2019-08-07 11:11:59 · 204 阅读 · 0 评论 -
java8 四大核心函数式接口Function、Consumer、Supplier、Predicate
Function<T, R> T:入参类型,R:出参类型调用方法:R apply(T t); 定义函数示例:Function<Integer, Integer> func = p -> p * 10; // 输出入参的10倍调用函数示例:func.apply(10); // 结果100Consumer<T>T:入参类型;...转载 2019-01-21 16:23:41 · 355 阅读 · 0 评论 -
Runtime类中的freeMemory,totalMemory,maxMemory等几个方法
最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(),totalMemory(),maxMemory ()这几个方法的一些题目,很多人感到很迷惑,为什么,在java程序刚刚启动起来的时候freeMemory()这个方法返回的只有一两兆字节,而随着 java程序往前运行,创建了不少的对象,freeMemory()这个方法的返回有时候不但没有减少,反而会增加。这...转载 2019-01-21 11:42:12 · 692 阅读 · 0 评论 -
位图bitmap算法(java)
简单的说就是用数组存放若有数据就标志为1或true,若不存在标志为0或false。比如1,2,2,5,这里最大值为5,0至5中不存0,3,4,所以:Array[0]=0,Array[1]=1,Array[2]=2,Array[3]=0,Array[4]=0,Array[5]=1上面数中由于2有两个,所以用...转载 2019-01-08 15:22:14 · 3476 阅读 · 1 评论 -
java8 optional和并发排序
1、并发排序调用多线程对数组拆分进行排序,最后在合并数组Arrays.parallelSort(myArray);2、Optional存在即返回, 无则提供默认值return user.orElse(null); //而不是 return user.isPresent() ? user.get() : null;return user.orElse(UNKNOWN_US...原创 2019-01-17 18:38:08 · 861 阅读 · 0 评论 -
让你可以装逼的算法技巧总结
版权声明:转载需要经过同意 https://blog.csdn.net/m0_37907797/article/details/84960402 &amp;amp;lt;/div&amp;amp;gt; &amp;amp;lt;div id=&amp;quot;content_views&amp;quot; class=&amp转载 2018-12-25 15:41:40 · 615 阅读 · 0 评论 -
使用Docker部署MySQL(数据持久化)
原文链接:http://walterinsh.github.io/2015/01/17/use-mysql-with-docker.html 本文简述如何使用Docker部署mysql,同时持久化数据.我们会用到tutum-docker-mysql 这个项目来搭建一个mysql,省去重...转载 2018-12-28 19:46:24 · 2635 阅读 · 0 评论 -
openOffice + swftools + FlexPaperViewer 附件预览 linux 环境配置:
首先安装所有需要安装的组件:yum install gcc* automake zlib-devel libjpeg-devel giflib-devel freetype-devel1、openOffice 安装 :参考博文地址:https://www.cnblogs.com/Oliver-rebirth/p/Linux_openOffice.html解压openOffice...原创 2018-12-28 13:46:32 · 294 阅读 · 0 评论 -
JAVA-实现两个超大整数相加
思路:第一步,把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下标位置。之所以倒序存储,更加符合我们从左到右访问数组的习惯。我们以 426709752318 + 95481253129 为例,来看看大整数相加的详细步骤:第二步,创建结果数组,结果数组的最大长度是较大整数的位数+1,原因很明显。第三步,遍历两个数组,从左到右按照对应下标把元素两两相加,就像小学...原创 2018-12-21 20:10:12 · 9330 阅读 · 2 评论 -
Java中Lambda表达式的使用
今天逛论坛的时候,无意间看见一篇很好的关于Java中Lambda表达式的使用的文章,为了尊重作者,这里不直接转载,只贴出文章的连接,方便以后复习https://www.cnblogs.com/franson-2016/p/5593080.html...转载 2018-10-11 11:31:36 · 239 阅读 · 0 评论 -
centos6.4安装jdk
jdk是很多程序的前置依赖,所以在安装对应软件之前可能需要先安装jdk,今天安装了一下,记录下来。我下载的是jdk1.8tar版本,官网速度慢的话,网上还是有很多资源的,比如这里:jdk1.8下载 我使用的是root用户进行安装1.先创建文件目录[root@bo...转载 2018-09-10 11:58:48 · 159 阅读 · 0 评论 -
svn代码管理和使用
1.首先下载server安装文件 下载地址:https://www.visualsvn.com/server/download/然后安装,安装步骤全部使用默认选项即可,所以这里省略安装步骤2、打开软件打开后界面如下:打开后的软件没有任何信息的时候如上:Respositories上右键新建respositories:下一步:输入仓库名,点击下一步:...原创 2018-09-09 21:32:40 · 2170 阅读 · 0 评论 -
linux虚拟机能ping通windows主机,windows主机ping不通linux虚拟机的解决办法
linux虚拟机能ping通windows主机,windows主机ping不通linux虚拟机的解决办法分三步:1.虚拟机网络连接方式选择Nat2.关闭liunx防火墙,命令service iptables stop确定是否关闭,命令service iptables status3.关闭windows防火墙转载 2017-12-01 17:35:07 · 5918 阅读 · 6 评论 -
手写tomcat 加手写线程池结合
一介绍:前面的介绍copy别人的:很多初学或将学java web的朋友总是被一系列异于常规java project的流程结构所困惑,搞不清事情的本质,这里就以最简单的方式来让初出茅庐的新手对java web项目有个清晰明了的认识。学java web的必定先行学过java基础,众所周知,java项目运行于一个public类中的一个pulblic static void main(St原创 2017-10-26 15:38:02 · 804 阅读 · 0 评论 -
Joda-Time 用法
今天在Spring官网demo中无意看到了Joda-Time,于是去Joda-Time官网了解了一下,瞬间被它的强大功能和易用性所折服。Joda-Time简介Joda-Time — 面向 Java 应用程序的日期/时间库的替代选择,Joda-Time 令时间和日期值变得易于管理、操作和理解。事实上,易于使用是 Joda 的主要设计目标。其他目标包括可扩展性、完整的特性集以及对多种日历系转载 2017-10-30 15:20:00 · 529 阅读 · 0 评论 -
Java奇淫巧技之Lombok
[+]背景 我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法,那Java中有没有一种方式能够避免这种重复的劳动呢?答案是有,我们来看一下下面这张图,右面是一个简单的转载 2017-10-30 13:57:22 · 217 阅读 · 0 评论 -
详解Java中的clone方法 -- 原型模式
Java中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?1 使用new操作符创建一个对象2 使用clone方法复制一个对象那么这两种方式有什么相转载 2017-10-30 12:15:11 · 184 阅读 · 0 评论 -
HashMap多线程并发问题分析
HashMap多线程并发问题分析目录并发问题的症状HashMap数据结构HashMap的rehash源代码正常的ReHash过程并发的Rehash过程三种解决方案转载: HashMap多线程并发问题分析并发问题的症状多线程put后可能导致get死循环从前我们的Java代码因为一些原因使用了HashMap转载 2017-10-29 20:09:26 · 2575 阅读 · 0 评论 -
final总结
关于final关键字,总是那么些疑惑,今天就总结一下。 一.final的概念:在Java中, 可以使用final关键字修饰类、方法以及成员变量。 1.final标记的类不能被继承; 在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。 2.final标记的方法不能被子类复写; 如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为转载 2017-10-09 09:57:32 · 223 阅读 · 0 评论 -
新手容易混乱的String+和StringBuffer,以及Java的方法参数传递方式
新手容易混乱的String+和StringBuffer,以及Java的方法参数传递方式。 之前在交流群里和猿友们讨论string+和stringbuffer哪个速度快以及Java的方法参数传递的问题,引起了群里猿友的小讨论。最终LZ得出的结果是string+没有stringbuffer快,不过要看情况。而对于Java的方法参数传递问题,则是百年不变的答案,Java只有值传递。转载 2017-08-25 11:18:52 · 361 阅读 · 1 评论 -
HashMap实现原理分析
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。转载 2017-08-21 15:06:03 · 203 阅读 · 0 评论 -
你所不知道的Java序列化
我们都知道,Java序列化可以让我们记录下运行时的对象状态(对象实例域的值),也就是我们经常说的对象持久化 。这个过程其实是非常复杂的,这里我们就好好理解一下Java的对象序列化。 1、 首先我们要搞清楚,Java对象序列化是将 对象的实例域数据( 包括private私有域) 进行持久化存储。而并非是将整个对象所属的类信息进行存储。 其实了解JVM的话,我们就能明白这一点了。实际上转载 2018-01-02 09:57:58 · 190 阅读 · 0 评论 -
FIFO、LRU、LFU的含义和原理
题目:请简要介绍FIFO、LRU、LFU的含义和原理含义:FIFO:First In First Out,先进先出LRU:Least Recently Used,最近最少使用LFU:Least Frequently Used,最不经常使用以上三者都是缓存过期策略。原理和实现:一、FIFO转载 2018-01-22 10:07:35 · 456 阅读 · 0 评论 -
Java进阶之----LinkedList源码分析
今天在看LinkedList的源代码的时候,遇到了一个坑。我研究源码时,发现LinkedList是一个直线型的链表结构,但是我在baidu搜索资料的时候,关于这部分的源码解析,全部都说LinkedList是一个环形链表结构。。我纠结了好长时间,还以为我理解错了,最后还是在Google搜到了结果:因为我看的源码是1.7的而baidu出来的几乎全部都是1.6的。而且也没有对应的说明。在1.7之后,or转载 2018-01-14 22:36:53 · 145 阅读 · 0 评论 -
基于socket实现简单的rpc调用
首先结构图:rpc_api:api里面实现的rpc调用(RpcFramework):package com.th.rpc.framework;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.lang.refl...原创 2018-09-02 00:21:13 · 1451 阅读 · 0 评论 -
时间、空间复杂度o(1), o(n), o(logn), o(nlogn)解释
在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义: 这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。 O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。 比如时间复杂度为O(n),就代表数据量增大几倍,耗时也增大几倍...转载 2018-08-29 14:19:07 · 22280 阅读 · 0 评论 -
PLSQL Developer连接远程oracle配置
一、安装Instant Client 1. 下载Instant Client(轻量级的客户端),作为本地Oracle环境 。 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html (此地址需要登录,可在...转载 2018-08-01 15:04:19 · 168 阅读 · 0 评论 -
windows下设置tomcat开机自启
1、配置环境变量: CATALINA_HOME : D:\ApacheTomcat\apache-tomcat-8.0.142、cmd:cd到tomcat bin目录下 执行 service.bat install tomcat 命令3、打开计算机—>管理->服务这一便在服务中添加了一个appache tomcat的服务,只需要将此服务开启即可,若要开机启动就将服务设成是...原创 2018-07-31 14:03:07 · 3514 阅读 · 1 评论