自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

克格莫

无数年后,最后一颗光子化为乌有,万物都趋于相同的温度,宇宙第一次进入了永恒不变的状态,时间终于失去了意义,熵增也终于停止了脚步,宇宙的故事就此终结,什么也不会发生,就这样直到永远。

  • 博客(16)
  • 资源 (8)
  • 收藏
  • 关注

原创 多线程环境下操作HashMap的问题

HashMap为什么不是线程安全,并发操作Hashmap会带来什么问题:这个问题曾经有一个面试官问过我,当时我天真的以为是读写操作并发时存在脏数据的问题,当时面试官不置可否。我后面回来查资料,发现没有那么简单。并发操作HashMap,是有可能带来死循环以及数据丢失的问题的。具体情况如下:(以下代码转自美团点评技术团队的文章Java8系列之重新认识HashMap)情景如下代码:

2017-08-31 14:22:41 13070 7

原创 关于HashMap的总结

1.HashMap中的负载因子:负载因子越大,表明填满的元素越多,则hash冲突机会越大,查找效率低负载因子越小则数组越稀疏,查找效率高,但是造成空间的浪费。默认为0.75,如果机器内存紧张,对查找速度没有要求可以将负载因子设置大一些,如果机器内存足够,对查找速度要求高则将负载因子设置小一些。当发生hash冲突时,新增的Entry中的key若比较为false,则新增的Entry添加

2017-08-31 00:12:29 270

原创 Java中函数参数是值还是对象的问题

首先,Java中的函数传参只有值传递,不存在其他的形式如果是传递基本数据类型,那没什么好说的,传的是值。如果是传递的对象,传递的也是值,这个“值”是该对象的引用的副本,本质上是一个内存地址。举例如下:public static void main(String[] args) { String s = "aaa"; change(s); System.out.print

2017-08-30 21:33:05 575

原创 Web攻击方式总结

1.XSS(跨站脚本攻击)XSS有三种:1.反射型XSS:将恶意脚本代码注入到请求中,生成恶意链接,诱使用户点击以达到攻击目的2.存储型XSS:攻击代码存储在服务器端,常见的就是攻击者写下一篇具有恶意代码的博客,凡是浏览这篇博客的用户都会在浏览器执行恶意代码。3.DOM XSS:通过innerHTML将输入作为html代码写入到页面,修改了dom节点防御XSS:

2017-08-30 13:31:18 270

原创 HTTP请求、响应的报文格式

HTTP请求:HTTP请求报文的第一行各个字段之间以一个空格隔开。方法 URL HTTP版本 回车换行首部字段(可以是多行)回车换行请求实体HTTP响应:HTTP版本 状态码 状态码文字描述 回车换行首部字段(可以是多行)回车换行响应主体关于状态码:1xx:表示请求收到了,正在处理2xx:表示请求正常处理完毕,常见的就是200:请求成

2017-08-26 23:22:10 424

原创 知识点集锦

并发编程:1.CopyOnWriteJVM:1.强引用、软引用、弱引用、虚引用2.CMS收集器原理3.分代策略和GC算法4.JVM调整堆大小的参数算法:1.二分查找2.时间复杂度的计算

2017-08-21 20:26:09 233

原创 对于队列同步器AbstractQueuedSynchronizer的理解

AbstractQueuedSynchronizer,简称AQS,是一个抽象类,它采用了模板方法模式,降低了自定义同步组件实现的门槛。当需要实现自定义的同步组件时,只需要在自定义组件内部定义一个继承AQS的子类,重写自己需要的方法,再调用AQS提供的模板方法即可。AQS向锁的实现者屏蔽了底层的线程唤醒、阻塞、等待的细节,简化了锁的实现方式。AQS使用一个int成员变量表示同步状态,当该变量为0

2017-08-17 14:50:52 454

原创 自定义独占锁的实现

和ReentrantLock中的lock(),unlock具有一样的效果,都是以AQS为基础实现的/** * 自定义的独占锁 * @author shuaicenglou * */class Mutex implements Lock{ /** * AQS提供的模板方法: * acquire:独占式获取同步状态 * release:独占式释放同步状态 * AQS提供

2017-08-17 14:11:37 617

原创 模板方法模式

模板方法模式,就是定义个操作中算法的骨架,而将操作中的细节推迟到子类去实现。比如说,我定义了一个模板方法叫印刷,这个印刷方法是这样的:首先是"晒版",然后是"打印".那么具体的抽象类如下:/** * 印刷模板 * @author shuaicenglou * */public abstract class Press { public abstract void sun

2017-08-17 13:04:15 160

原创 简单的线程池示例

线程池类采用面向接口编程的方式,这种方式有一个好处就是可以作为Spring管理的一个bean使用,不需要自己new对象,将对象的创建交给容器,岂不是美滋滋,因此基于这个考虑,首先定义一个线程池的接口ThreadPool:package com.shuaicenglou.ThreadPool;public interface ThreadPool { /** * 获取线程池中的线程数

2017-08-16 17:02:32 1504 2

原创 数据库连接池示例以及性能分析

直接上代码:连接池ConnectionPool:package com.shuaicenglou.ConnectionPool;import java.util.LinkedList;public class ConnectionPool { private LinkedList pool = new LinkedList<>(); public ConnectionPool(

2017-08-16 14:34:56 327

原创 个人对于轻量级锁、重量级锁的理解

此处说的轻量级锁、重量级锁都不是java语言上的锁,而是jvm为了提高锁的获取与释放的效率而做的优化的手段。Synchronized关键字用的锁是存放在Java对象头的MarkWord里面的,该MarkWord可以不太恰当地认为是一个标记当使用轻量级锁的时候:线程在执行同步块之前,JVM会在每个线程(即:将会访问同一个同步体的线程)的虚拟机栈中创建用于存储锁记录的空间,并将对象头中的M

2017-08-14 21:55:23 4316 15

原创 自定义类加载器和双亲委派模型

自定义类加载器加载的类与应用程序加载器加载的类的equals、instanceof方法等几个判定所属关系的方法判断的结果是false,哪怕这两个类来自同一个class文件,只要类加载器不一样,其判断的结果就会不一样。当然,使用自定义类加载器加载的Object对象等系统环境路径下的类,比较结果是一样的,因为存在双亲委派模型。package JVM;import java.io.IOExcep

2017-08-12 10:50:00 258

原创 JVM垃圾收集器的搭配

JDK1.5及之前的JDK上:如果jvm运行在client上:1.若为单核CPU:新生代使用Serial,老年代使用Serial Old2.若为多核CPU:新生代使用ParNew,老年代使用CMS(硬件比较高级的情况下,如果普通的双核cpu甚至不如serial+serial old)如果jvm运行在server上:1.若注重吞吐量(比如执行的多为后台计算这种任务):新生代使

2017-08-06 13:18:49 1114

原创 海量数据处理(一):求前10000大的数字

在一个大文件里有1亿条记录,每一行记录为1个数字,统计最大的前10000个数字 * 思路: * 维护一个大小为K的最小堆,并认为初始化之后的堆就是最大的K个元素 * 接来下将从第K+1个元素开始与堆顶元素比较,若大于堆顶元素则将堆顶元素抛弃后新元素入堆 * 全部读取完后将该最小堆进行一次排序即可得到最大的K个数字为了模拟这个问题,生成海量数据的代码如下:import j

2017-08-04 16:25:28 814

原创 剑指offer的java实现(2)

/** * 输出旋转数组的最小元素 * @author shuaicenglou * [3,4,5,1,2] * [1,2,3,4,5] * [1,1,0,1,1] * [1,0,1,1,1] */public class Main6 { public static void main(String[] args) { int[] m = {0,0,0,0}; Syste

2017-08-04 10:28:12 193

第四届Xman个人排位赛流量分析之strange_ssid复现

第四届Xman个人排位赛流量分析之strange_ssid复现 查找SSID找到一个md5,爆破之,得flag{n3k0}

2019-12-29

第三方服务器获取微信公众号图文消息

第三方服务器获取微信公众号图文消息代码及httpClient发起https请求代码 第三方服务器获取微信公众号图文消息代码及httpClient发起https请求代码

2019-07-25

HttpClient发起HTTPs请求.rar

通过HTTPClient发起HTTPS GET请求(返回值为字符串)、POST请求(返回值为JSONOBJECT),需引入fastJson的jar包

2019-07-25

Java写的AES文件加密软件

命令行版本的文件加密软件,采用AES算法,密钥长度为128位,使用方法:在软件所在目录运行以下命令:java -jar aes.jar,然后回车,根据提示操作即可,请牢记自己的加密密钥,丢失无法找回。

2018-12-24

java的ElGamal算法实现

该class通过调用ElGamalCoder.getKeyFile&#40;&#41;方法生成公钥和私钥,公钥文件为publicKey,私钥文件为privateKey。 加密:String miwen = ElGamalCoder.decrypt("这里传入明文", "publicKey"); //publicKey是公钥文件所在的路径(包括文件名) 解密:String mingwen = ElGamalCoder.encrypt("这里传入加密之后的密文","privateKey");//privateKey是私钥文件所在路径

2018-04-25

ysoserial-0.0.4-all.jar

ysoserial-0.0.4-all.jar系统自动生成分数,我也改不了,分数不够的可以联系我私发。

2017-09-17

RSATool2v17.rar

只要1分哦!! RSA Tool 2 强大的大数生成工具 ...生成一组RSA密钥对 1)按下'Start'按钮,通过移动你的鼠标指针来收集一些随机数据. 这必须一次完成,因为收集的数据会被保存在你的RSA-Tool文件夹里面的一个文件中。 2)选择要创建的密钥的长度(等于N的长度)。最大为4096位. 3)选择你的公钥(E)并把它输入到相应的编辑框作为十进制数。 常用的E有(考虑到计算速度的原因):3,17,257和65537(十进制). 4)按下'Generate',等到密钥生成完成。 注意,生成很大的数需要一些时间,取决于你的CPU的计算能力。 特别说明:你可以常按'Generate'.做为密钥生成过程的一个组成部分的内置随机数生成系统会在运行的    时候重新进行初始化。这是故意这么做的,这样可使那些滥用这个工具做其它事情变得更困难...    注意两次或两次以上生成相同的密钥对是不可能的。

2017-07-20

commons-scxml2-2.0-SNAPSHOT.jar

commons-scxml2-2.0-SNAPSHOT.jarcommons-scxml2-2.0-SNAPSHOT.jar

2017-06-25

空空如也

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

TA关注的人

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