![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 59
李太白不白
一个蹩脚的码农!
展开
-
为啥StringBuilder线程不安全呢?
好久没有写博客了,最近一直都在看书,争取明年要换工作。今天在微信公众号看见为啥说StringBuilder是线程不安全的,看了下自己整理下:StringBuilder builder = new StringBuilder();for (int i = 0; i < 10; i++) { new Thread(new Runnable() { @Over...原创 2019-10-16 14:52:02 · 324 阅读 · 0 评论 -
Java开发中的23种设计模式详解
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2016-09-29 11:24:55 · 582 阅读 · 0 评论 -
JAVA的可变类与不可变类
可变类和不可变类(Mutable and Immutable Objects)的初步定义:可变类:当你获得这个类的一个实例引用时,你可以改变这个实例的内容。不可变类:当你获得这个类的一个实例引用时,你不可以改变这个实例的内容。不可变类的实例一但创建,其内在成员变量的值就不能被修改。如何创建一个自己的不可变类:.所有成员都是private.不提供对成员的改变方法,例如:setXXXX转载 2016-09-29 10:22:14 · 4162 阅读 · 0 评论 -
Java多线程学习(吐血超详细总结)
写在前面的话:此文只能说是Java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(Java并发编程与技术内幕:线程池深入理解),或者看这个专栏:Java并发编程与技术内幕。你将会对Java里头的高并发场景下的线程有更加深刻的理解。目录(?)[-]一扩展java转载 2016-10-25 10:44:56 · 500 阅读 · 0 评论 -
Java并发编程:深入剖析ThreadLocal
一.对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。 这句话从字面上看起来很容易理解,但是真正理解并不是那么容易。 我们还是先来看一个例子:转载 2016-09-28 16:57:02 · 273 阅读 · 0 评论 -
50道Java线程面试题
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。 在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程转载 2016-09-28 16:55:26 · 318 阅读 · 0 评论 -
Java中的static关键字解析
一.static关键字的用途 在《Java编程思想》P86页有这样一段话: “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。” 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键转载 2016-09-28 16:36:07 · 195 阅读 · 0 评论 -
java中String和StringBuffer和StringBuilder
无论是做Java或是Android,都避免不了遇到这个问题,其实开发过程中一般情况下是不会纠结,这个问题是面试必选经典题,今天有时间,就总结一下。String、StringBuffer、StringBuilder区别StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的Str转载 2016-09-28 10:59:09 · 209 阅读 · 0 评论 -
Java中网关支付时候私钥加密原因
最近做一个项目,就是获取要提交的信息,首先把信息转化为Xml格式,这是原始需要提交的数据,然后经过Base64的编码,URL的编码,最后还要经过私钥加密(加密算法是MD5withRSA)获得的是数字签名的数据,最后把原始数据和签名数据一起通过后台的方式提交给服务器。疑问:为何要经过私钥加密获得数字签名呢?数字签名:将报文按照双方约定的HASH算法计算得到一个固定位数的报文摘要。改动原创 2016-09-27 11:17:52 · 692 阅读 · 0 评论 -
java中的Socket编程
基于Socket的java网络编程网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端成为一个socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个socket有一个IP地址和一个端口号唯一的确定。但是,socket所支持的协议类也不仅仅是TCP/IP一种。在java环境下,socket编程主要是指基于T原创 2016-10-17 10:37:50 · 381 阅读 · 0 评论 -
Java泛型详解,通俗易懂的写法
我们知道,使用变量之前要定义,定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值。假如我们现在要定义一个类来表示坐标,要求坐标的数据类型可以是整数、小数和字符串,例如:x = 10、y = 10x = 12.88、y = 129.65x = "东京180度"、y = "北纬210度"针对不同的数据类型,除了借助方法重载,还可以借助自动装箱和向上转型。我们知转载 2016-10-27 09:19:02 · 4268 阅读 · 0 评论 -
Java中的重写和重载
重载(overriding):1. Java中的重载就是在一个类中可以创建多个方法,他们具有相同的名字,但是有不同个数的参数或是不同类型的参数,在使用时候根据不同的参数类型和参数个数来确定使用哪一个函数,这就是多态性。2. 重载的时候,方法名是一定要一样的,返回类型可以相同也可以不相同,但是参数个数或是参数类型一定是不同的。不能根据返回类型来判断是否是重载。重写(ove原创 2016-10-18 17:53:42 · 745 阅读 · 0 评论 -
mybatis中使用map批量更新
最近项目中会用到批量更新功能,数据是存在map中的,key作为更新的id,而value作为更新的值。纠结了很久最后算是解决了。特此记录,希望对有需要的有一定帮助。...原创 2018-06-13 09:07:44 · 11815 阅读 · 2 评论 -
springboot的项目build为jar放在服务器上运行出现乱码
最近项目中遇到一个很奇怪的问题,就是后端发布报警信息给EMQ(mqtt),前端去取这些报警信息,由于前后端是分离的,在测试的时候再各自的开发工具中使用没有什么问题,报警弹框也没有乱码,但是当项目打包成一个jar包发布的时候就会出现报警信息中文的乱码。找了好久原因,一位是前端的原因,是后端的原因,或是中间EMQ的原因,但是都没有解决任何问题。搁置了很久最后终于找到解决的原因了。就是在启动的jar...原创 2018-03-22 11:21:15 · 6364 阅读 · 9 评论 -
什么时候用GET,什么时候用POST
刚开始学习Web开发的时候,总会遇到提交表单时使用GET方法还是POST方法的问题,最开始的时候因为没有经验并没有领悟,后来框架开发做多了,更是把这些原始基础知识扔出了银河系。最近开到一段W3的资料,写的不错,原文地址如下:http://bu-choreography.iteye.com/admin/blogs/new。翻译总结如下: 快速判断: 如下情况使用GET方法:客户端与服务端的交互像是一...转载 2018-03-01 15:02:01 · 16254 阅读 · 0 评论 -
阿里开发的Java代码规约扫描eclipse插件安装和使用方法
环境:JDK1.8,Eclipse4+。有同学遇到过这样的情况,安装插件重启后,发现没有对应的菜单项,从日志上也看不到相关的异常信息,最后把JDK从1.6升级到1.8解决问题。Help -> Install New Software...输入Update Site地址:https://p3c.alibaba.com/plugin/eclipse/update 回车,然后勾选Ali-CodeA...转载 2018-02-28 15:20:10 · 3517 阅读 · 0 评论 -
Java中抽象类和接口区别
简单概括下Java中抽象类和接口直接的区别,可以概括为如下几点:1.一个类可以实现多个接口 ,但却只能继承最多一个抽象类。2.抽象类可以包含具体的方法 , 接口的所有方法都是抽象的。3.抽象类可以声明和使用字段 ,接口则不能,但接口可以创建静态的final常量。4.接口的方法都是public的,抽象类的方法可以是public,protected,private或原创 2017-03-21 10:35:14 · 423 阅读 · 0 评论 -
Java中抛出的内存异常总结
Java中抛出的内存异常总结根据上述的总结:可以整理出来,JVM在运行的时候大致会分为五个区域。方法区、堆区、本地方法栈、虚拟机栈、程序计数器。其中程序计数器不会报出OutOfMemoryError错误,其他的都有可能会报出这个错误。StackOverflowError:如果线程请求的栈深度大于虚拟机所允许的深度就会报这样的错误。OutOfMemoryError:如果虚拟机栈可原创 2016-10-19 20:51:48 · 1996 阅读 · 0 评论 -
Java的三大特性(继承、封装、多态)
常见的我们会说java有三种特性(继承、封装、多态),面试的时候会让你简单的说说这三大特性的特点。 封装:封装就是指将对象的状态信息隐藏在对象的内部,不允许外部的程序直接访问对象内部的信息,而是通过该类的所提供的方法来实现对内部信息的操作和访问。继承:子类是父类的扩展,子类是一种特殊的父类。获得父类的属性和方法。多态:是面向对象的核心特性之一。在面向对象语言中,多态性是指一个方法可原创 2016-10-20 09:46:23 · 537 阅读 · 0 评论 -
Java内存区域与内存溢出异常
Java内存区域与内存溢出异常如上图所示,首先java源代码文件(.java后缀)会被java编译器编译为字节码文件(.class后缀)然后再让类加载器加载各个类的字节码文件,加载完毕后,交由JVM执行引擎执行。在整个执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段控件一般称之为Runtime Data Area(运行时数据区),也就是我们常说的JVM原创 2016-10-19 14:20:46 · 372 阅读 · 0 评论 -
利用jdk自带的运行监控工具JConsole观察分析Java程序的运行
一、JConsole是什么 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。二、如何启动JConsole如果是从命令行启动,使转载 2016-10-21 21:39:29 · 2056 阅读 · 0 评论 -
Java线程池
1. 线程池为什么需要线程池,其实线程池和数据库连接池一样,都是为了节省线程的创建和关闭的时间。在并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,的频繁创建线程就会大大降低系统的效率,因为频繁的创建和销毁线程需要时间。 Java中通过Executors提供四种线程池,分别为:1. newCachedThreadPool:创建一个可缓存线程池,如原创 2016-10-21 21:34:35 · 306 阅读 · 0 评论 -
java项目几种常见数据库连接池的使用比较
最原始的数据库使用就是打开一个连接并进行使用,使用过后一定要关闭连接释放资源。由于频繁的打开和关闭连接对jvm包括数据库都有一定的资源负荷,尤其应用压力较大时资源占用比较多容易产生性能问题。由此使用连接池的作用就显现出来,他的原理其实不复杂:先打开一定数量的数据库连接,当使用的时候分配给调用者,调用完毕后返回给连接池,注意返回给连接池后这些连接并不会关闭,而是准备给下一个调用者进行分配转载 2016-09-13 16:41:02 · 3542 阅读 · 2 评论 -
Java 数据库连接池、线程池和对象池总结
一、Java数据库连接池总结 数据库连接池的实现及原理 内容摘要: 对于一个复杂的数据库应用,频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。 有一个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放所造成的问题的。把该模式应用到数据库连接管理领域,就是建立一个数据库连接池,提供一套高效的连接分配、使用策略,最终转载 2016-09-13 15:56:01 · 4407 阅读 · 0 评论 -
Java中事务的提交与回滚
关于事务的理解上一篇文章有详细介绍,如果不是很清楚,可以看一看上面的文章.简单的来说:当我们到银行给别人转账的时候,你的钱减少和别人的钱增加这两者就是一个事务,一个事务如果里面任何一步出现了差错的话,这个事务就不能执行成功.不然你转账你的钱少了,别人的钱却没有相应的增加,这就世界混乱了哈.这时候可以使用事务的回滚来处理,一旦事务出现差错,不保存上面的操作,这时候你的钱没有少,别人的钱也没有增加原创 2016-09-13 15:38:50 · 51947 阅读 · 6 评论 -
JAVA中事物以及连接池
一、事物什么是事物?事务,一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。这些单元要么全都成功,要么全都不成功。做一件事情,这个一件事情中有多个组成单元,这个多个组成单元要不同时成功,要不同时失败。A账户转给B账户钱,将A账户转出钱的操作与B账户转入钱的操作绑定到一个事务中,要不这两个动作同时成功,代表这次转账成功,要不就两转载 2016-09-13 14:23:04 · 1768 阅读 · 0 评论 -
Java的动态代理
java动态代理(JDK和cglib)JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务原创 2016-08-23 11:32:42 · 460 阅读 · 0 评论 -
深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点。第二篇博文深入浅出JMS(二)–ActiveMQ简单介绍以及安装,我们介绍了消息中间件ActiveMQ,安装,启动,以及优缺点。这篇博文,我们使用ActiveMQ为大家实现一种点对点的消息模型。如果你转载 2016-09-12 17:06:54 · 539 阅读 · 1 评论 -
Java常见的同步和异步的区别、特点、联系
同步:发送一个请求,等待返回,然后再发送下一个请求 异步:发送一个请求,不等待返回,随时可以再发送下一个请求 同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。异步则是可以提高效率了,现在cpu都是双核,四核,异步处理的话可以同时做多项工作,当然必须保证是可原创 2016-09-12 17:20:22 · 8469 阅读 · 1 评论 -
深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点。第二篇博文深入浅出JMS(二)–ActiveMQ简单介绍以及安装,我们介绍了消息中间件ActiveMQ,安装,启动,以及优缺点。第三篇博文深入浅出JMS(三)–ActiveMQ简单的HelloWorl转载 2016-09-12 17:08:44 · 914 阅读 · 0 评论 -
Java网络编程
网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习。 在 学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的。首先来问一个问题:你 会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!转载 2016-09-02 09:43:26 · 391 阅读 · 0 评论 -
Java IO流分析整理
Java中的流,可以从不同的角度进行分类。按照数据流的方向不同可以分为:输入流和输出流。按照处理数据单位不同可以分为:字节流和字符流。按照实现功能不同可以分为:节点流和处理流。 输出流: 输入流:因此输入和输出都是从程序的角度来说的。字节流:一次读入或读出是8位二进制。字符流:一次读入或读出是1转载 2016-08-25 11:58:46 · 380 阅读 · 0 评论 -
从JKS文件中读取密钥
JKS文件是一个java中的密钥管理库,里面可以放各种密钥文件,JKS文件的生成这里暂且不说,这里主要是关注如何从JKS文件中将已有的密钥读取出来。 下面是两个java读取JKS文件中密钥的方法当然在看懂下面两个方法之前要对JKS文件的结构有所了解:JKS文件就好像一个仓库,里面可以放很多的东西,这里只存放一类东西就是密钥,仓库当然会有一把锁,防范别人随便乱拿,这个转载 2016-08-25 14:49:35 · 6967 阅读 · 0 评论 -
各种排序算法总结和比较
排序算法可以说是一项基本功,解决实际问题中经常遇到,针对实际数据的特点选择合适的排序算法可以使程序获得更高的效率,有时候排序的稳定性还是实际问题中必须考虑的,这篇博客对常见的排序算法进行整理,包括:插入排序、选择排序、冒泡排序、快速排序、堆排序、归并排序、希尔排序、二叉树排序、计数排序、桶排序、基数排序。 代码都经过了CodeBlocks的调试,但是很可能有没注意到的B转载 2016-09-21 19:02:47 · 13540 阅读 · 5 评论 -
Java中&与&&的区别
有时候会疏忽这些小的细节,今年在面试和笔试的时候都有考到类似的题目,就是关于&和&&的Java中不管&&还是&都是作为一个逻辑与,但是&&有一个短路的机制一旦左边是false右边就不会去做判断(这从理论上来说他的效率应该是更高的),但是&不是不管判断条件第一个是不是false它都会去执行下面的判断.但是两者最终的效果都是一样的.一个小的例子:public static void mai原创 2016-09-07 10:51:49 · 419 阅读 · 0 评论 -
关于一个栈的输入顺序是a,b,c,d,e则下列序列中不可能是出栈顺序
经常在笔试的时候会看见这样类似的笔试题,就是关于一个栈的输入顺序是a,b,c,d,e则下列序列中不可能是出栈顺序.很多人都知道栈是先进后出,但是还是做好这道题.以一道题目为例给大家讲讲这道题目应该怎么做:题目:一个栈的输入顺序是a,b,c,d,e则下列序列中不可能是出栈顺序是()A:e,d,a,c,bB:a,e,d,c,bC:b,c,d,a,eD:b,c,a,d,e解答原创 2016-09-07 10:34:42 · 31540 阅读 · 4 评论 -
Java集合类的总结与比较
Collection├List│├LinkedList│├ArrayList│└Vector│└Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 C原创 2016-08-26 16:49:31 · 4704 阅读 · 0 评论 -
异常的深入研究与分析(2)
本文主要是关于异常的面试题目,出自前几年的迅雷,支付宝等名企的笔试题目。内容由金丝燕网原创编辑,转载请注明链接。题目一:考察异常类的继承结构那个类是所有异常的基础类?A StringB ErrorC ThrowableD RuntimeException参考答案:C试题分析:在Java的lang包里面有一个Throwable类,它是所有异常的父类转载 2016-09-18 17:17:05 · 404 阅读 · 0 评论 -
java 实现https请求的基本原理与介绍
转自:http://www.blogjava.net/etlan/archive/2006/06/29/55767.html摘 要 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问。但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从而不能访问HTTPS站点。本文在简要介绍JSSE的基础上提出了两种解决该问题的方法。转载 2016-09-05 17:38:09 · 11189 阅读 · 4 评论 -
JavaWeb如何将后台数据传递到前台页面HttpServletResponse和HttpServletRequest
继续总结:Java经过Action后,怎么将action中返回的数据写到前台去先了解下:HttpServletResponse对象(1).Web服务器收到一个http请求,会针对每个请求创建一个HttpServletRequest和HttpServletResponse对象,向客户端发送数据找HttpServletResponse,从客户端取数据找HttpServletReques转载 2016-09-05 13:43:48 · 49076 阅读 · 0 评论