Java
java外脑
一个码农界的小学生,渴望成为大牛。
展开
-
java中String的replace方法和replaceAll方法的区别
针对有些人搞不清replace和replaceAll的区别,可能会混用,所以写了这篇文章进行说明一下,我也是用sonar扫描别人的代码看出的问题原创 2022-12-02 15:06:36 · 320 阅读 · 1 评论 -
面试常被坑的String的问题
如下: String str = "abc"; str="bcd"; System.out.println(str);博主几次都答错了也是蠢够了,我的第一想法是String是不可变的,所以每次我都说是abc。现解释一下为什么答案是bcd;String str; //声明一个String类型的引用为strstr ="abc";//创建一个对象abc,然后把str指向这个对象;...原创 2018-05-16 10:28:20 · 179 阅读 · 0 评论 -
JDK1.7和1.8中的HashMap源码分析
https://zhuanlan.zhihu.com/p/21673805原创 2018-04-25 16:20:02 · 168 阅读 · 0 评论 -
使用Apache HttpClient遇到的一些问题
关于客户端用post对象提交,服务端获取post对象中参数。 利用request.getParameter()获取不到参数值,与Content-Type有关系。 如果request.getParameter()获取不到参数值,可以利用request.getInputStream()或request.getReader()来获取。客户端: HttpClient httpClient = ...原创 2018-05-02 17:46:57 · 431 阅读 · 0 评论 -
String转JSON
引用阿里的fastJson。JSONObject jsonObject = JSONObject.parseObject(String str);可以查看JSONObject对象中的方法原创 2018-05-02 17:15:20 · 123 阅读 · 0 评论 -
java中的System的getProperty方法的取值key说明
可取值为System.getProperties()方法的返回值.具体参考jdk的api官方文档jdk1.5,有以下值:键 相关值的描述 java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specifica...转载 2018-04-23 09:29:14 · 350 阅读 · 0 评论 -
commons-lang常用工具类StringEscapeUtils
在apache commons-lang(2.3以上版本)中为我们提供了一个方便做转义的工具类,主要是为了防止sql注入,xss注入攻击的功能。总共提供了以下几个方法: 1.escapeSql 提供sql转移功能,防止sql注入攻击,例如典型的万能密码攻击’ ’ or 1=1 ’ ‘StringBuffer sql = new StringBuffer("<span class="...转载 2018-04-23 09:24:50 · 1338 阅读 · 0 评论 -
什么是序列化,为什么要序列化
总结就是:为了解决用流方式读写对象的时候数据不一致问题,实现Serializable接口即可实现序列化解决问题。 简单来说序列化就是一种用来处理对象流的机制。所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O)。我们可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间(注:要想将对象传输于网络必须进...原创 2018-04-10 15:59:35 · 1450 阅读 · 0 评论 -
java线程池的创建方式
共有两种: 一种是java自带: import java.util.concurrent.ThreadPoolExecutor;ThreadPoolExecutor 另一种是spring中的: 直接用ThreadPoolTaskExecutor import org.springframework.scheduling.concurrent.ThreadPoolTaskExecuto...原创 2018-03-14 17:24:37 · 206 阅读 · 0 评论 -
java开发者推荐的书
《深入理解Java虚拟机:JVM高级特性与最佳实践》 《HotSpot实战》 《java多线程编程核心技术》 《Effective Java中文版》 《深入分析Java Web技术内幕》 《大型网站技术架构 核心原理与案例分析》 《大型网站系统与Java中间件实践》 《大型分布式网站架构-设计与实践》 《从Paxos到ZooKeeper 分布式一致性原理与实践》 《MySQL5....原创 2018-03-14 17:24:22 · 189 阅读 · 0 评论 -
Java集合详解
本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景 相关学习资料http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E6%8E%92%E5%BA%8F%E5%8F%8Ajava%E9%9B%86%E5%90%88%E7%B1%BB%E8%AF%A6%E8%A7%A3%28co...转载 2018-03-20 13:20:30 · 201 阅读 · 0 评论 -
java中RuntimeException
throw new RuntimeException(“…..”); 抛出运行时异常,方法上就不需要加throw Exception。而且直接终止程序。public static void main(String[] args) { int i=3,j=0; try { int s = i/j; System....原创 2018-03-14 11:26:24 · 278 阅读 · 0 评论 -
ThreadLocal类详解
ThreadLocal则从另一个角度来解决多线程的并发访问。ThreadLocal会为每一个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突。因为每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时,可以把不安全的变量封装进ThreadLocal。对于多线程资源共享的问题,同步机制采用了“以时间换空间”...原创 2018-03-19 17:19:30 · 120 阅读 · 0 评论 -
SpringMVC的请求属于单例模式
首先明白:什么是单例,什么是多例。 单例:所有请求只生成一个对象。线程不安全 多例:每次请求都会重新生成一个对象,线程安全。SpringMVC默认的是单例的,所以是线程不安全。 如果想要保证线程安全则有两种方式: 1、声明成多例:在Controller加上@Scope(“prototype”) 2、用ThreadLocal类 ThreadLocal会为每一个线程提供一个独立的变量...原创 2018-03-19 17:17:43 · 2302 阅读 · 0 评论 -
JDK8中HashMap的改动
8以前HashMap是用位桶+链表的形式 8以后HashMap是用位桶+链表/红黑树的形式 (冲突节点数不小于8-1时,转换成红黑树。)原创 2018-03-19 17:04:25 · 764 阅读 · 0 评论 -
java数组和集合相关知识
数组分为声明(定义)、创建和初始化。 1、声明(定义)数组的方式: 类型[] 名字; 注:声明数组不可以指定其大小。因为数组是一种引用类型的变量,声明的时候只是定义了一个引用变量(指针)并未指向任何内存空间。 2、创建和初始化 名字 = new 类型{元素} //静态初始化 或 名字 = new 类型[大小] //动态初始化 注:数组在创建的时候必须初始化。...原创 2018-05-10 14:21:15 · 153 阅读 · 0 评论 -
java基础之super和this关键字
super关键字:代表父类的引用对象 this关键字:代表当前对象的引用对象(一) super 1.调用父类的构造方法。 1)子类的构造函数默认第一行会默认调用父类无参的构造函数,隐式语句。 2)如果显式调用父类构造函数,编译器自动添加的调用父类无参数的构造就消失。 构造函数间的调用**只能放在第一行,只能调用一次**。2.调用父类的属性和函数。 (二) this...原创 2018-05-18 18:03:32 · 309 阅读 · 0 评论 -
使用httpclient post请求中文乱码解决办法
public static String doPostWithJsonInString(String url, String json){HttpClient client = getHttpClient();HttpPost post = new HttpPost(url);String response = null;try {//设置编码格式post.addHeader(“Con...原创 2019-01-17 09:40:52 · 1034 阅读 · 0 评论 -
用http协议调用接口
public class HttpUtil {private static Log log = LogFactory.getLog(HttpUtil.class); /** * 定义编码格式 UTF-8 */ public static final String URL_PARAM_DECODECHARSET_UTF8 = "UTF-8"; /** * 定义编...原创 2019-01-04 15:04:37 · 2385 阅读 · 0 评论 -
String s="abc" 和 String s1=new String("abc")内存分析
String s=”abc” s是栈内变量,它的内存保存的是常量池的常量字符串对象对象”abc”的地址。常量池中的每个值只有一份。String s2 = “abc”;s和s2两个变量指向的是同一个地址,因此s==s2结果为trueString s1=new String(“abc”); s1是栈内变量,它的内存保存的是堆中的new String对象的地址,new String在堆中...原创 2018-08-13 12:00:30 · 1574 阅读 · 0 评论 -
触发JVM进行Full GC的情况及应对策略
堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但...转载 2018-08-01 15:32:33 · 134 阅读 · 0 评论 -
java中for(;;)表示啥意思
for(;;){} 代表无线循环的意思。原创 2018-08-10 09:43:13 · 20647 阅读 · 3 评论 -
java中protected关键字和不加修饰的区别
protected :只能是本类和子类可以访问 不加任何修饰的关键字:本类和同一个包下的类都可以访问原创 2018-06-27 15:45:11 · 760 阅读 · 0 评论 -
java抽象类详解
1、Java抽象类存在的意义,为什么要使用抽象类? 利于代码的维护和复用。把相同的方法或者属性抽象出来放在一个抽象类中,让类去继承,则实现了复用。 2、什么是抽象类? 加上abstract关键字的类即为抽象类。 3、抽象类可以实例化吗?也就是说可以new吗? 抽象类是不可以进行new的。所以想要使用抽象类,必须要用类来继承它,然后可以用子类对象进行实例化。(抽象类自身不能创建对象,但是它...原创 2018-06-27 10:55:13 · 1203 阅读 · 0 评论 -
@JsonIgnore注解的使用
@JsonIgnore注解的使用 <div class="article-info-box"> <div class="article-bar-top d-flex"> <span class="time">20..原创 2018-06-26 16:11:46 · 566 阅读 · 0 评论 -
java中基本类型会有默认值
java中基本类型会有默认值,例如某个类中存在private int age;创建这个类时,age会有默认值0。当使用age属性时,它总会有值。所以需要特别注意的是,在判断age!=null的时候始终为true。结论:在mybatis中,不要使用基本类型,要使用引用类型。...原创 2018-06-29 19:57:25 · 905 阅读 · 0 评论 -
JSON.parseObject(String str)与JSONObject.parseObject(String str)的区别
一、首先来说说fastjsonfastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。其主要特点是:① 快速:fastjson采用独创的算法,将parse的速度提升到极致,超过所有基于Java的json库,包括曾经号称最快的jackson;② 强大:Fastjson完全支持http://json.org的标准(也是Google官方网...原创 2018-06-29 15:22:54 · 982 阅读 · 0 评论 -
Gson和FastJson区别
public class User { private Long user_id; private String user_name; public User() { } public User(Long userId, String name) { this.user_id = userId; this.user_...原创 2018-06-29 11:53:40 · 2457 阅读 · 0 评论 -
使用Spring AOP切面解决数据库读写分离
提供一种解决思路: 为减轻数据库压力,使用主从(master、slave)方式(主一从多即一个主数据库、多个从数据库。写),也就是读写分离。 方式有: 1、SQL分析 分析sql是insert/delete/update/select中的哪一种从而选择主数据库还是从数据库。 2、动态设置数据源 通过拦截方法名称的方式来决定主从。例如saveXX、insertXX选择主数据库,selec...原创 2018-06-08 23:05:11 · 188 阅读 · 0 评论 -
JVM常见知识点
一、Java引用的四种状态 (1)强引用: Object o = new Object();此时o这个引用就属于 强引用。 GC无论什么时候都不会回收具有 强引用 的对象。所以会出现内存溢出的情况。 (2)软引用:如果一个对象只具有软引用,那么在内存不足的时候会被GC回收。(具体回收的时间不确定) (3)弱引用:和软引用类似,区别在于生命周期更短。 (4)虚引用:对象任何时候都可以被G...原创 2018-06-08 22:04:31 · 184 阅读 · 0 评论 -
java锁之wait,notify(wait会释放锁,notify仅仅只是通知,不释放锁)
原文地址:http://blog.csdn.net/azhegps/article/details/63031562wait是指在一个已经进入了同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,只有其他线程调用了notify方法(notify并不释放锁,只是告诉调用过wait方法的线程可以去参与获得锁的竞争了,但不是马上得到锁,因为锁还在别人手里,别人还没...原创 2018-03-19 14:51:56 · 1141 阅读 · 0 评论 -
Java多线程-线程池ThreadPoolExecutor构造方法和规则
为什么用线程池有时候,系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新线程的话,系统就要不断的进行线程的创建和销毁,有时花在创建和销毁线程上的时间会比线程真正执行的时间还长。而且当线程数量太多时,系统不一定能受得了。使用线程池主要为了解决一下几个问题:通过重用...原创 2018-03-19 14:16:29 · 149 阅读 · 0 评论 -
Java中23中设计模式
(一)单例模式:饿汉式和饱汉式(懒汉式) 饿汉式:public class HungrySingleton { private static HungrySingleton instance = new HungrySingleton(); public HungrySingleton() { } public static HungrySinglet...原创 2018-03-19 14:14:39 · 114 阅读 · 0 评论 -
Java中为什么要序列化和序列化的几种方式
1、为什么要进行序列化如果我们想要把对象存储到本地即硬盘中,此时我们就必须要进行序列化。场景:我们在开发javaEE项目,当关闭服务器tomcat的时候,相应的session中的对象就存储在了硬盘中,如果我们想让tomcat在重启的时候就可以读取到硬盘上的内容,那么我们就必须 对session中的对象进行序列化。2、序列化的方式java中序列化的方式有两种: 1、实现接口 Se原创 2017-11-05 11:21:00 · 339 阅读 · 0 评论 -
java面试总结(一)
1、Java中一个汉字占多少字节?java中,只要是字符,不管是数字还是英文还是汉字,都占两个字节,都是一个char。 char c1 = ‘中’; char c2 = ‘A’; char c3 = ‘1’; 确切说,Unicode编码是指一类编码的统称,而非某个具体编码。 在java中字符,即char是用unicode编码的,而字符串,即String在java中是通过char[]的形式实现的,所...原创 2017-11-05 11:10:28 · 367 阅读 · 0 评论 -
java 中二进制、八进制、十进制、十六进制转换
一、十进制转换为二进制例:把十进制 10 转为 二进制: (1)用10/2 商5余0 (2)用5/2 商2余1 (3)用2/2商1余0 (4)用1/2商0余1然后倒序排 余数为:1010二、把二进制转为十进制例:把二进制 1010 转换为十进制:倒着开始 (1)用0乘以2的0次方(2)用1乘以2的1次方(3)用0乘以2的2次方(4原创 2017-10-19 21:59:36 · 214 阅读 · 0 评论 -
关于java中BigDecimal应用场景和用法
BigDecimal用作商业计算的。 BigDecimal aDouble =new BigDecimal(1.22); 输出:1.2199999999999999733546474089962430298328399658203125 BigDecimal aString = new BigDecimal("1.22"); 输出:1.22以上两者输出结果是原创 2017-09-21 14:05:53 · 1337 阅读 · 0 评论 -
java 中类型转为String方法
String是最大的类型 ,由小到大可以自动转换,由大到小需要强制转换。因此要转换到大的类型就加上一该类型的常量就可以了比如int a=1;让String str=a+"";//""空字符串或 String.valueOf(a);原创 2017-09-10 19:13:40 · 224 阅读 · 0 评论 -
java 基本类型和常量
一、基本类型基本类型也叫做内置类型。是java中不同于类的类型。java是一种强类型的语言,所以说在第一次声明变量的时候,必须指定其数据类型,并且必须进行初始化。java有8种基本数据类型数值型:byte、short、int、long(整型)、 float、double(浮点型)Java中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而原创 2017-09-06 08:00:11 · 501 阅读 · 0 评论 -
java中cookie的存值与取值
cookie取值: Cookie[] cookies = request.getCookies(); for(Cookie cookie : cookies){ if(cookie.getName().equals("autologin")){ String msg = user.getName() + "&" + pass;原创 2017-08-22 09:00:30 · 1990 阅读 · 0 评论