自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 RestTemplate具体使用

ennnnnnn....最近工作中遇到的java程序中去访问一个HTTP请求的场景比较多,之前自己用的也比较混乱,后来就发现了RestTemplate这个比较好用的工具,鉴于自己之前对于其各种方法及参数的使用不甚了解的情况,于是就在这整理一下,本来是想针对其常用的一些接口自己手写然后记录一些返回效果的,但是在网上搜到了一篇非常详细的文章,所以我也就没有在做无用功。RestTemplate的使用:https://segmentfault.com/a/1190000011093597...

2020-09-08 00:51:07 109

原创 Arthas定位接口耗时原因

最近做了

2020-09-08 00:42:05 1109

原创 时间戳和日期格式相互转换

开发过程中碰到了好多次了,今天有时间就归纳一下吧1、首先,先获得当前的时间的时间戳System.currentTimeMillis()2、获取当天零点的时间戳(有的时候是会用到的,比如说比较两个时间之间的间隔,用日期格式的话会比较麻烦)long current = System.currentTimeMillis();long zero = current / (1000 *...

2018-12-19 16:49:36 600

原创 zk服务器连接不上

本来想配一个zk集群想要简单的测试下,刚开始的思路是配置好所有的文件后,想先看看每一个服务器都自己可以不,然后再把所有的服务器都起了,结果第一个就连接不上了......测了好一会,有点苦恼Welcome to ZooKeeper!2018-10-25 09:36:25,905 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCn...

2018-10-25 10:40:18 2090

原创 http、tcp、ip、https

    ennn.....越学越觉得自己学的不够系统,好多东西自己还需要下一番功夫,虽然开了计算机网络这门课,当时也算是脑子里知道有这么一回事了,但真正的把相关技术应用起来确还是有一定距离的,所以最近又读了一本《图解HTTP》,有些收获,想要再次记录下来,也把之前的相关知识梳理下,方便自己日后回想查看反思。一、先总结下面试经常问到的相关的计算机网络知识TCP和UDP的区别TCP面向连接...

2018-09-25 10:22:30 744

原创 ubuntu下jdk8的安装和配置

sudo add-apt-get-repository ppa:webupd8team/javasudo apt-get updatesudo apt-get install oracle-java8-installerjava -version真的是很简单了。。。但是麻烦的是后面还需对其进行配置,这是需要jdk的安装目录,我们就很蒙蔽了,经过麻烦的查询之后终于找到了jdk在ub...

2018-09-04 13:57:52 275

原创 idea新建项目时war包添加有问题

在这个地方出过好几次问题了,每次都是现查现做,今天记录下吧,希望我这个猪脑子以后能记住。。。。 

2018-09-04 13:38:58 269

原创 线程的几种状态

1、新建:线程已创建但尚未启动2、运行:处于此状态的线程,有可能正在执行,也有可能在等待CPU为其分配时间片3、无限期等待:处于此状态的线程不会被分配时间片,其需要等待其它线程显示的唤醒4、限期等待:处于此状态的线程不会被分配时间片,它不需要等待其它线程显示的唤醒,一定时间后他们会有系统自动唤醒5、阻塞:“阻塞状态”在等待着一个排它锁,其有别于等待状态,等待状态是等待一段时间6...

2018-08-12 18:17:56 165

原创 tomcat集群(windows)

怎么说呢.....不了解之前觉得tomcat集群应该超级复杂,后面做完发现,ennnnn和我想的不太一样,不过还是记录一下吧,方便有需要的人也方便自己的日后查看(后面的操作使用的是基于反向代理的负载均衡,条件限制,使用了单机部署多应用)一、首先我们先要对集群、反向代理和负载均衡的概念有一定的了解:1、集群分为:高可用集群,负载均衡集群,科学计算集群使用负载均衡集群,在一台服务器宕机的情...

2018-08-06 09:09:36 342

原创 数组中的逆序对 (java)

题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007解题思路:一开始一头雾水,后面想到了使用归并排序的思想,其实有多少个逆序对,就是归并排序的时候,后面的数要超越前面多少个,,,嗯,好像不是很好说,要不然直接看代码吧。还要注意,...

2018-07-31 22:21:15 536

原创 丑数(java)

题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路:由丑数的定义可知,一个丑数一定是由比它更小的丑数*2、*3或者*5得来的,这样我们就可以利用这个规律获得所有的丑数,并把其存放在数组里,这里由于不知道数组的大小,所以需要用ArrayLi...

2018-07-31 14:36:10 288

原创 Comparator、Comparable、compareTo

Comparable和Comparator的区别:1)Comparable的比较逻辑在所要比较的对象内部实现,而Comparator的比较逻辑则在对象外部实现;2)Comparable实现Comparable接口, Comparator实现Comparator接口3)Comparable使用 int compareTo(Object1)方法定义排序逻辑, Comparator使用 in...

2018-07-31 13:13:15 219

原创 把数组排成最小的数(java)

题目描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路:一开始自己没想到,便去看了别人的题解,没想到可以巧妙的使用比较器进行实现。本题当中还有一点小的收获,就是之前知道在遍历集合的时候除了使用迭代器现在也可以使用另一种方法,只不过一直没有用过,...

2018-07-31 12:43:10 829

原创 最小的k个数 (java)

题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解题思路:使用优先队列保证队列里存放的是最小的K位数第一次在解题过程中使用到优先队列,做一下记录import java.util.ArrayList;import java.util.Comparator;import java.util.P...

2018-07-30 21:51:36 553

原创 字符串的排列(java)

题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。又是一个被细节坑死的题目,好不容易解决了排列问题,然后发现顺序不一样。。。嗯,一定要记下来,以解我心头之恨imp...

2018-07-30 17:43:06 156

原创 偏向锁、轻量级锁、重量级锁

偏向锁:只有一个线程进入临界区轻量级锁:两个线程交替进入临界区重量级锁:两个线程同时进入临界区三种锁之间的相互转换偏向锁、轻量级锁是乐观锁,重量级锁是悲观锁    当一个对象刚开始初始化时,没有任何线程访问他,他是可偏向的。所以当第一个线程来访问他的时候,他会偏向第一个线程,对象开始持有偏向锁,当线程修改对象头成为偏向锁的时候使用CAS操作(CAS操作包含一个内存位置V,旧的预期值A,要修改的新值...

2018-07-03 10:37:59 207

原创 线程创建的几种方式及比较

1.继承Thread类package com.thread;public class Demo1 extends Thread{ public Demo1(String name) { super(name); } @Override public void run() { System.out.println(getName() + "线程执行了。。。"); } pu...

2018-07-03 10:05:30 1372

原创 实现一个可重入锁

可重入锁为当一个线程获得该锁后若未释放前想要再次获取该锁,则可以直接获取不用等待,我们只需要把锁的次数加一即可,释放一次锁次数就减一,直到次数为零,其它线程就可以继续竞争该锁了。package com.lock;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import ja...

2018-07-03 08:35:46 349

原创 Volatile

1.volatile保证可见性保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。第一:使用volatile关键字会强制将修改的值立即写入主存;第二:使用volatile关键字的话,当线程2进行修改时,会导致线程1的工作内存中缓存变量stop的缓存行无效(反映到硬件层的话,就是CPU的L1或者L2缓存中对应的缓存行无效);第三:由于线程1的工...

2018-07-02 09:49:36 155 1

原创 深入理解java虚拟机读书笔记(三)

3.2对象已死吗?    判断对象是否可以进行回收3.2.1 引用计数算法    给对象添加一个引用计数器,每当一个地方引用他时,计数器就加1,当引用失效时,计数器就减1,任何时刻引用计数器为0的对象就是不可能再被使用的。但是其没有办法解决对象之间循环引用的问题。3.2.2 可达性分析算法    通过一系列称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,所走过的路径称为引用链,当...

2018-07-01 17:03:48 152

原创 BigDecimal解决精度丢失问题

在一些需要精确计算的情况下,常规的计算方法可能达不到要求,这个时候我们可以考虑使用BigDecimal,这里就只记录下其使用情况BigDecimal有很多的构造函数,我们要选择哪一种呢public class test { public static void main(String[] args) { System.out.println("普通的计算:"); System.out....

2018-06-30 11:34:45 1355 1

原创 横向越权、纵向越权问题解决

横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源 纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源对于纵向越权,我们可以通过设置用户角色,为不同的角色提供不同的权限来避免。对于横向越权,就比较麻烦了,横向越权可能出现的场景有:在用户忘记密码重置密码时,回答对了问题进入密码重置阶段时,如果知道其他用户的用户名,很容易改变此用户的密码,然后就可以进行越权访问了。   ...

2018-06-29 22:50:44 4461 1

原创 MD5加密

MD5算法的优点:1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。2、容易计算:从原数据计算出MD5值很容易。3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。MD5是单向加密的单向散列加密是通过对不同输入长度的信息进行散列计算,得到固定长度的输出,单向的...

2018-06-29 20:51:21 904

原创 双向队列解决滑动窗口最大值问题

这个问题让我死在了双向队列的使用和算法逻辑上面,所以记录一下,以备后面查看所需。题目描述:    给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2...

2018-06-26 20:02:13 406

原创 码云代码提交

git initgit add .git commit -am 'something'git push origin v1.0

2018-06-16 19:43:49 727

原创 深入理解java虚拟机读书笔记(二)

java和C++在内存动态分配和垃圾收集技术方面明显的区别一、概述    对于C、C++从事人员来说,在内存管理领域,他们既是拥有最高权利的皇帝,又是从事最基础工作的劳动人民,即拥有每一个对象的所有权,有负责着每一个对象生命开始到终结的维护责任    对于java程序员来说,在虚拟机自动内存管理机制的帮助下,,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和溢出...

2018-05-23 21:43:44 149

原创 深入理解java虚拟机读书笔记(一)

一、概述    1. java不仅是一门编程语言,还是一个由一系列计算机软件和规范形成的计算机体系结构    2. 这个技术体系提供了完整的软件开发和跨平台部署的支持环境    3.广泛应用于多种场合    优点:   1. 他摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想    2.它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题    3.它实现了热点...

2018-05-23 16:59:23 126

原创 (三) 链表 - 链表进阶问题汇总

(一)如何将两个有序链表,合并成一个新的有序链表        可以用递归解决,时间复杂度为O(n),原理不太好讲,上代码吧public ListNode MergeList(ListNode a, ListNode b){ ListNode result = null; if(a == null) return b; if(b == null) return a; if(a.ge...

2018-05-22 22:59:00 199

原创 (二) 链表 - 经典问题汇总

(一)找到链表的倒数第n个节点    1.这个问题不难,我们可以两次遍历链表,第一遍记录链表的长度L,第二遍从头遍历链表,找到L-n+1的位置的节点,然后输出,这样时间复杂度为o(n),空间复杂度为o(1)    2.上面的方法看起来不错,但是我们还可以有更好的方法,我们仅仅使用一次遍历就可以,我们使用两个指针slowNode和fastNode来一起遍历,两个指针都指向链表头结点,仅当fastNo...

2018-05-22 09:55:34 199

原创 (一) 链表 - 插入删除基本操作

链表:一种用于存储数据集合的数据结构链表的属性:1. 相邻元素之间通过指针连接                     2.最后一个元素的后继元素为null                     3.链表的空间可以按需分配(直到系统内存耗尽)                    4.没有内存空间的浪费(但是链表当中的指针需要一些额外的内存花销)链表和数组的区别:(1)数组存储在一块连续的内存空...

2018-05-21 22:46:01 1500

原创 设计模式六大原则

1.单一职责原则    系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因只能有一个2.开闭原则    开闭原则的核心思想:一个对象对扩展开放,对修改封闭。他的意思是说修改是通过增加代码实现的,而不是要改动所有的代码,也就是说,一旦写出了可以运行的正确的代码,就不应该去改变它,而是要保证他能一直运行下去...

2018-04-24 23:07:14 112

原创 (一)单例模式

设计模式:是一套被反复使用,多数人知晓,经过分目编类的,代码设计经验的总结。目的:使用设计模式是为了可重用代码,让代码更容易被他人所理解,保证代码的可靠性单例模式:一个类只有一个实例,并提供全局访问点单例模式两大类基础实现:    (1)饿汉模式:实例在类加载的时候就被创建,线程安全,性能比较低,创建慢但是加载快,加载过早的话可能会浪费资源 private static Singleton uni...

2018-04-22 16:21:22 230

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除