- 博客(41)
- 资源 (1)
- 收藏
- 关注
原创 如何预防SQL注入和XSS攻击
SQL注入简介SQL 注入漏洞(SQL Injection)是 Web 开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。而造成 SQL 注入的原因是因为程序没有有效的转义过滤用户的输入,使攻击者成功的向服务器提交恶意的 SQL 查询代码,程序在接收后错误的将攻击者的输入作为查询语句...
2019-06-10 16:09:43
5095
2
转载 CSRF攻击与防御
CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞...
2019-06-10 15:52:29
380
转载 Java使用PDFBox操作PDF文件
1首先,导入jar(maven方式导入)PS: 这个jar里面囊括了所有的pdfbox操作工具类,导入这一个就够了 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app</artifac...
2019-03-11 15:11:57
25139
7
转载 SpringBoot整合Shiro应用
1、Shiro是Apache下的一个开源项目,我们称之为Apache Shiro。它是一个很易用与Java项目的的安全框架,提供了认证、授权、加密、会话管理,与spring Security 一样都是做一个权限的安全框架,但是与Spring Security 相比,在于 Shiro 使用了比较简单易懂易于使用的授权方式。shiro属于轻量级框架,相对于security简单的多,也没有securit...
2019-03-06 11:48:04
441
转载 Linux常用命令大全
系统信息arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/cpuinfo 显示CPU info...
2019-02-21 08:46:45
295
转载 Mysql与Oracle区别
1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高。2. Oracle支持大并发,大访问量,是OLTP最好的工具。3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。4. Oracle...
2019-01-24 19:42:57
184
转载 Oracle 计算两个日期间隔的天数、月数和年数
在Oracle中计算两个日期间隔的天数、月数和年数:一、天数:在Oracle中,两个日期直接相减,便可以得到天数;select to_date('08/06/2015','mm/dd/yyyy')-to_date('07/01/2015','mm/dd/yyyy') from dual;返回结果:36二、月数:计算月数,需要用到months_between函数;--months_...
2019-01-09 15:48:25
3445
原创 数组和链表的区别
数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自的特点。大致总结一下特点和区别,拿几个人一起去看电影时坐座位为例。数组的特点在内存中,数组是一块连续的区域。 拿上面的看电影来说,这几个人在电影院必须坐在一起。数组需要预留空间,在使用前要先申请占内存的大小,可能会浪费内存空间。 比如看电影时,为了保证10个人能坐在一起,必须提前订好10个连续的位置。这样的好处就是...
2019-01-07 07:56:30
328
原创 String s = new String("xyz");创建了几个字符串对象?
两个对象,要理解这个,就要知道string类的工作原理。下面来慢慢分析一下:public class StringTest { public static void main(String[] args){ String s1="Hello"; String s2="Hello"; String s3=new String("Hel...
2019-01-05 16:05:09
11275
4
原创 如何实现字符串的反转及替换?
一、java字符串的反转1.利用java字符串的拼接实现字符串的反转,代码如下:public static String reverse(String s){ int len=s.length(); String str=""; for (int i = 0; i &lt; len; i++) { //charAt()返回指定索引处的 char 值。索引范围为从 0 到 ...
2019-01-05 16:05:00
3262
1
原创 List遍历:for,foreach Iterator 速度比较
首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。结论:如果是ArrayList,用三种方式遍历的速度是for&gt;Iterator&gt;foreach,速度级别基本一致;如果是LinkedList,则三种方式遍历的差距很大了,数据量大时...
2019-01-05 16:04:49
2274
转载 JDK5,6,7,8,9,10,11的区别(8比7的新特性)
Java5泛型 (Generics)List&amp;lt;Integer&amp;gt; list=new ArrayList&amp;lt;Integer&amp;gt;();增强循环(Enhanced for Loop)int[] array = {1, 2, 3, 4, 5}; for (int i : array) { System.out.println(i); } 自动封箱拆箱...
2019-01-05 16:04:38
5282
原创 List三个子类的特点?
ArrayList:底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector:底层数据结构是数组,查询快,增删慢线程安全,效率低Vector相对ArrayList查询慢(线程安全)Vector相对LinkedList增删慢(数组结构)LinkedList:底层数据结构是链表,查询慢,增删快线程不安全,效率高Vector和ArrayList的区别:Vector是线程安...
2019-01-05 16:04:11
361
1
原创 String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?
没有。因为 String 被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s 原先指向一个 String 对象,内容是 “Hello”,然后我们对 s 进行了“+”操作,那么 s 所指向的那个对象是否发生了改变呢?答案是没有。这时,s 不指向原来那个对象了,而指向了另一个 String 对象,内容为"Hello world!",原来那个对象还存在于内存之中,只...
2019-01-05 10:08:49
1970
原创 String、StringBuilder、StringBuffer的区别?
简单来说就是StringBuilder和StringBuffer操作的是对象值,而String操作的是对象的地址值。值操作String的值是放到常量池里面然后将地址值给对象,改变值的时候是重新在常量池创建一个新的值,再将这个新的值给之前的对象覆盖,原有的字符串还是存在常量池里面直到被垃圾回收站回收;但是StringBuilder和StringBuffer是直接操作其对象本身的数据,它们的本质是...
2019-01-05 10:06:55
272
1
原创 字符串String s ="sfds55d676455dfg32434eertre"; 怎么样把非数字全部去除,只保留数字?
可以使用正则:String s = "sfds55d66s76455dfg32434eertertre"; String regEx = "[^0-9]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(s); String result = m.replaceA...
2019-01-05 09:56:16
368
原创 short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
前者不正确,后者正确。对于short s1 = 1;s1 += 1;由于1是int类型,因此s1 + 1运算结果也是int型,需要强制类型转换才能赋值给short型。而short s1 = 1;s1 += 1;可以正确编译,因为s1 += 1;相当于s1 = (short)(s1 + 1);其中+=有隐含的强制类型转换。...
2019-01-05 09:41:50
171
转载 float f=3.4;是否正确?
不正确,精度不准确,应该用强制类型转换,如:float = (float)3.4或float f = 3.4f。在Java中,没有小数点的默认是int,有小数点的默认是double,int转成long系统自动转换没有问题,因为后者精度更高,但是double转成float就不能自动转换了,所以后面得加上一个f...
2019-01-05 09:37:51
7041
转载 什么是内省?
内省的解释内省在wiki上的解释:在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查。不应该将内省和反射混淆。相对于内省,反射更进一步,是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。内省和反射有什么区别反射式在运行状态把Java类中的各种成分映射成相应的Java...
2019-01-05 09:33:40
10767
原创 内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
完全可以。如果不是静态内部类,那没有什么限制!如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员举例:class OuterMyTest { static int i = 1; int j = 2; class Test { void getFun() { System.out.println(i); Sy...
2019-01-05 08:50:31
2390
原创 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
静态嵌套类是被声明为静态的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。/** * 扑克类(一副扑克) * @author 骆昊 * */public class Poker { private static String[] suites = {"黑桃", "红桃", "草花", "方块"}; private static ...
2019-01-05 08:35:26
2103
原创 构造器能否被重写?能否被重载?
首先,构造器是不能被继承的,因为每个类的类名都不相同,而构造器名称与类名相同,所以根本谈不上继承。又由于构造器不能继承,所以就不能被重写。但是,在同一个类中,构造器是可以被重载的。...
2019-01-05 08:26:59
2274
原创 什么是面向对象的编程思想?
面向对象的编程产生的历史原因:由于面向过程编程在构造系统时,无法解决重用,维护,扩展的问题,而且逻辑过于复杂,代码晦涩难懂,因此,人们开始想能不能让计算机直接模拟现实的环境,以人类解决问题的方法,思路,习惯和步骤来设计相应的应用程序。于是,面向对象的编程思想就产生了。面向对象的编程的主要思想是把构成问题的各个事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在解决问题的...
2019-01-05 08:23:38
11000
原创 this与super的区别
1.this与super继承关系当子类创建对象后,该子类对象本身可以使用this来指代,而该对象当中的父类对象空间可以使用super来指代示例:所以继承关系图:2.this与super调用普通成员与构造方法调用普通成员this.成员变量 可以访问本类对象的成员变量super.成员变量 可以访问父类对象的非私有成员变量this.成员方法() 可以访问本类对象的成员方法...
2019-01-03 10:59:01
1745
原创 Java的权限修饰符
publicprotected缺省private同类中✔✔✔✔同一包中(子类与无关类)✔✔✔不同包的子类✔✔不同包的无关类✔
2019-01-03 10:45:19
139
原创 类 抽象类 接口,解释三者关系
抽象类和普通类的区别抽象类不能被实例化。抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽象方法不能被声明为静态。抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体含有抽象方法的类必须申明为抽象类抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类。抽象类和接口的区别:抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。...
2019-01-03 10:36:08
896
原创 阐述final、finally、finalize的区别
final可以用于修饰变量,方法,类,被修饰的变量的值不能被改变,被修饰的方法不能被重写,被修饰的类不能被继承,它和abstract是反义词finally通常放在try…catch…的后面构造总是执行代码块,这就意味着程序无论正常运行还是发生异常,这里的代码只要JVM不关闭都会执行,可以将释放外部资源的代码写在finally块中finalize:Object类的方法,Java中允许使用fin...
2019-01-03 10:21:12
3024
1
转载 深入理解Spring的两大特征(IOC和AOP)
众所周知,Spring的核心特性就是IOC和AOP。IOC(Inversion of Control),即“控制反转”;AOP(Aspect-OrientedProgramming),即“面向切面编程”。IOC:IOC,另外一种说法叫DI(Dependency Injection),即依赖注入。它并不是一种技术实现,而是一种设计思想。在任何一个有实际开发意义的程序项目中,我们会使用很多类来...
2019-01-03 08:45:06
302
原创 接口和抽象类的区别
不同:抽象类:抽象类中可以定义构造器可以有抽象方法和具体方法抽象类中的成员可以是private、default、protected、public抽象类中可以定义出成员变量有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法抽象类中可以包含静态方法一个类只能继承一个抽象类接口:接口中不能定义构造器方法全部都是抽象方法接口中的成员全部是public接口中定义的成员...
2019-01-02 10:04:16
103
原创 Java中会存在内存泄漏吗,请简单描述。
内存泄漏是指不再被使用的对象或者变量一直被占据在内存中。理论上来说,Java是有GC垃圾回收机制的,也就是说,不再被使用的对象,会被GC自动回收掉,自动从内存中清除。但是,即使这样,Java也还是存在着内存泄漏的情况,长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露。尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是Java中内存泄...
2018-12-26 17:12:58
10395
6
原创 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现。static是静态的,是一种属于类而不属于对象的方法或者属性synchronized 是同步,是一种相对线程的锁。native 本地方法,这种方法和抽象方法及其类似,它也只有方法声明,没有方法实现,但是它与抽象方法不同的是,它把具体实现移交给了本地系统的函数库,而没有通过虚拟机,可以说是Java与其...
2018-12-26 16:16:35
4332
2
原创 JSP九大内置对象与四大域对象
一、九大内置对象JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception1、request对象request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传...
2018-12-22 08:55:29
1670
原创 比较一下Java和JavaScriprt
JavaScript 与Java是两个公司开发的不同的两个产品。Java 是原Sun Microsystems公司推出的面向对象的程序设计语言,特别适合于互联网应用程序开发;而JavaScript是Netscape公司的产品,为了扩展Netscape浏览器的功能而开发的一种可以嵌入Web页面中运行的基于对象和事件驱动的解释性语言。JavaScript的前身是LiveScript;而Java的前...
2018-12-21 10:51:57
500
原创 switch是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?
switch可作用于char byte short intswitch可作用于char byte short int对应的包装类switch不可作用于long double float boolean,包括他们的包装类 public class Test { public static void main(String[] args) { // switch可作用于char byte...
2018-12-21 10:03:02
2496
3
原创 Math.round(11.5)等于多少? Math.round(-11.5)等于多少?
round()方法可以这样理解:将括号内的数+0.5之后,向下取值,比如:round(3.4)就是3.4+0.5=3.9,向下取值是3,所以round(3.4)=3;round(-10.5)就是-10.5+0.5=-10,向下取值就是-10,所以round(-10.5)=-10所以,Math.round(11.5)=12;所以,Math.round(-11.5)=-11;...
2018-12-21 09:24:53
25830
10
转载 栈(Stack),堆(heap),静态区(static area)的用法
Heap区:主要用来保存对象的实例(new创建的对象和数组),实际上也只是存储对象实例的属性值(属性),属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在stack中)heap存储的全部是对象 ,每个对象包含一个与之对应的class信息(class的目的是得到操作的指令(指令也就是方法))jvm只有一个heap区,被所有的线程共享,heap中不存储基本的数据类型,...
2018-12-21 08:49:25
707
1
原创 冒泡排序与选择排序
冒泡排序:两两比较,每轮比较出最大/最小的那个/** * 测试冒泡排序:升序 */public static void main(String[] args) { int[] num = {60,80,19,23,56,108}; // 1. 外层for循环:比较的轮数 for(int i=0;i<num.length-1;i++){ //...
2018-12-13 20:27:09
120
原创 Redis+SSO初步
经过好几天的查找和各种追问,今天终于算是对sso有个大概的了解,不过在网上sso大部分都需要依赖于Redis,所以我这里先安装Redis由于电脑问题安装不了Linux,我就直接安装Windows版本的Redis,如果你们可以安装的话也可以自己尝试下1.打开官网http://redis.io/点击Download2.往下拉,找到windows,由图片中的文字可以看出Redis项目不正式支...
2018-12-08 08:54:18
1119
1
转载 设计模式之代理模式
什么是代理模式?代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。举个例子来说明:假如说我现在想买一辆二手车,虽然我可以自己去找车源,做质量检测等一系列的车辆过户流程,但是这确实太浪费我得时间和精力了。我只是想买一辆车而已为什么我还要额外做这么多事呢?于是我就通过中介公司来买车,他们来给我找车源,帮我办理车辆过...
2018-12-08 08:27:05
148
原创 设计模式之代理模式
代理模式概述给某一对象提供代理对象,并由代理对象控制具体对象的引用。 就是持有被代理对象的引用,提供被代理对象的接口(public的方法),这样就可以在被代理对象被调用前后,切面式的插入自定义逻辑。 具体来说,就相当于,第三者,本来正常方法调用,就是调用者和被调用者,如果被调用的对象不想被直接调用,而希望在调用他之前先执行其他一些逻辑,那就需要引入第三者,也就是代理对象。这...
2018-10-11 15:05:02
144
gosseract:使用TesseractOCR(光学字符识别)软件包
2023-02-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人