java学习
文章平均质量分 90
兔兔西
殿宇的支柱总是彼此分立的,橡树和松柏也不在彼此的阴影下生长
展开
-
【java学习】jmeter与自动化测试
定义一次,全局享用通过函数获取值名称值time通过提前声明控制变量类型如果在beanShell里之间vars.put(),这个变量会是字符串。名称值times0在beanShell中操作注意对象在vars中是以String的形式存放的。自定义插件中vars的操作。原创 2023-04-26 09:28:54 · 1623 阅读 · 1 评论 -
Maven学习
Maven提供了三个隐式的变量可以用来访问环境变量、POM信息、Maven Settings。env变量,暴露了你操作系统或者shell的环境变量。如在Maven POM中一个对env.PATH的引用将会被{env.PATH}的引用将会被env.PATH的引用将会被{PATH}环境变量替换,在Windows中为%PATH%.project变量暴露了POM。可以使用点标记(.)的路径来引用POM元素的值。例如:当你使用 查看时,你会看到常见的还有:settingssettings变量暴露了Maven s原创 2020-03-03 15:56:41 · 1616 阅读 · 1 评论 -
【java学习】HTTP接口调用:Httpclient、Okhttp、HttpURLConnection、RestTemplate 和 Feign
HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包,并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 JDK 自带的 URLConnection,提升了易用性和灵活性,使客户端发送 HTTP 请求变得容易,提高了开发的效率。原创 2019-08-26 11:54:24 · 4943 阅读 · 1 评论 -
【编程素质】代码及性能优化
1,思路一般如果性能有问题,一般打印日志,在每一处输出消耗时间,看时间消耗在哪里。如果是sql性能问题,查看执行计划,看慢在哪里,优化sql。2,常用工具1)StopWatch除了下面介绍的方法外还有其它方法。以下为笔者习惯用法 StopWatch stopWatch = new StopWatch("getSearchResult"); stopWatch.start("total"); Thread.sleep(1000); System.原创 2020-07-17 11:14:02 · 247 阅读 · 0 评论 -
【数据库学习】事务及Spring事务机制:@Transactional
1,Spring中的Transacationalspring 中的 @Transactional 基于动态代理的机制,提供了一种透明的事务管理机制,方便快捷解决在开发中碰到的问题。1)原理在应用系统调用声明了 @Transactional 的目标方法时,Spring默认使用AOP代理,在代码运行时生成一个代理对象,如右图中所示调用者Caller并不是直接调用的目标类上的目标方法(Target Method),而是调用的代理类(AOP Proxy)。根据 @Transactional 的属性配置信息,原创 2020-07-17 09:46:08 · 4672 阅读 · 1 评论 -
【java学习】excel读写
1,com.alibaba.easyexcel <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.1.1</version> </dependency>import com.al原创 2022-07-25 15:11:48 · 469 阅读 · 0 评论 -
【java学习】面向切面编程(AOP,Aspect Orient Programming)
1,AOP使用场景面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程序执行过程。经常通过 AOP 来处理一些具有横切性质的系统性服务,如事物管理、安全检查、缓存、对象池管理等,AOP 已经成为一种很经常使用的解决方式。1)优点不修改原代码,就可以在主干功能里面添加新功能。2,实现AspectJ不是Spring组成部分,是独立的AOP框架,一般把AspectJ和Spring框架一起使用进行AOP操作。可以通过xml或者注解方式来实现,下面介绍常用注解。1)原创 2022-03-29 16:19:17 · 1906 阅读 · 0 评论 -
【java学习】参数校验
1,概念在web开发中,前端的参数校验是为了用户体验,后端的参数校验是为了安全。参数有两种形式:(1)查询字符串参数(Query String Parameters参数)一般用于GET请求,会以url string的形式进行传递(2)请求体参数(Request Body)一般用于POST请求,可以使用Content-Type来指定不同参数类型2,校验注解注解说明备注@AssertFalse所注解的元素必须是Boolean类型,且值为false@AssertTr原创 2022-03-14 10:25:39 · 7251 阅读 · 0 评论 -
【java学习】Spring配置文件、配置中心
在Spring Boot项目中,把很多配置信息写入配置文件(properties或者yml文件),但每次修改配置后必须重启服务。在Spring Cloud中,Spring Cloud Config是最早的配置中心,目前有一些用的比较多的开源的配置中心,比如携程的 Apollo、蚂蚁金服的 disconf 等,对比 Spring Cloud Config,这些配置中心功能更加强大。原创 2020-10-13 09:59:00 · 2181 阅读 · 1 评论 -
【Spring学习】IOC容器&依赖注入基本原理&Bean加载
没有IOC之前,对象A依赖于对象B需要A主动创建B或者使用已经创建的B,控制权在A上。引入IOC之后,对象A与对象B之间不直接关联,A运行时需要B,由IOC容器主动创建一个对象B注入到A要用到的地方。前后比对,A获得依赖B的过程由主动变成被动,控制权颠倒过来,此谓控制反转。全部对象的控制权上缴给了“IOC容器”原创 2020-07-08 11:16:23 · 690 阅读 · 1 评论 -
【java学习】java5 6 7 8 9 10新特性
1,java5新特性(Tiger,2004年)1)自动装箱、拆箱2)静态导入(static import)可以直接导入到方法的级别。注意:方法必须是静态的如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。由此可见,意义不大,所以一般不用,但是要能看懂。使用:import static java.lang.Math.max; //静态导入 // Sys...原创 2019-10-29 18:42:18 · 495 阅读 · 0 评论 -
【java学习】Lombok学习(IDEA插件)
1,场景编译源代码时自动生成 get/set/hashCode/equals/toString 等方法。2,使用idea安装插件导入依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> &......原创 2019-10-29 15:25:06 · 689 阅读 · 1 评论 -
【java学习】类Class和接口Interface
如果是引用类型,final只保证这个引用所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变。final修饰的变量可以在定义时初始化,也可在构造方法中赋值。java用new来新建对象生成一个引用实例,引用变量表示地址,其指向堆中的对象。成员变量定义在类中的变量,可以不进行初始化,Java会自动进行初始化,如果是引用类型默认初始化为null,如果是基本类型例如int则会默认初始化为0;局部变量定义在方法中的变量,必须要进行初始化,否则不能通过编译。原创 2018-07-26 15:55:59 · 3384 阅读 · 1 评论 -
【Android学习】线程的其他方式:AsyncTask、IntentService、HandlerThread、ThreadPoolExecutor
1,分类1)用途①主线程处理UI。②子线程(工作线程)处理耗时操作,如网络请求、IO操作等。 从Android3.0开始,网络访问必须在子线程中进行,否则抛出NetworkOnMainThreadException异常。2,Thread3,AsyncTask1)概念底层封装了线程和Handler。 Android中的线程池来自Java,主要通过Executor来派生特定类型的线程池。AsyncT原创 2018-07-27 10:05:24 · 651 阅读 · 0 评论 -
【数据结构】图
1,概念定点(Vertex) 弧(Arc)、边(Edge) 有向图、无向图 完全图:有n(n-1)/2条边的无向图。 有向完全图:有n(n-1)条弧的有向图。 稀疏图:有很少条边或弧的图。反之为稠密图。 入度、出度。 连通图:图中任意两个结点都是连通的(有相互到达的路径)。 连通分量:无向图中的极大连通子图。 强连通图:任意两顶点直接存在路径的有向图(不一定直接相连)。 强...原创 2018-07-26 13:27:49 · 1444 阅读 · 1 评论 -
【java学习】正则表达式(Regular Expression)
1,概念正则表达式(Regular Expression)起源于人类神经系统的研究。正则表达式的定义有以下几种: ① 用某种模式去匹配一类字符串的公式,它主要是用来描述字符串匹配的工具。 ②述了一种字符串匹配的模式。可以用来检查字符串是否含有某种子串、将匹配的子串做替换或者从中取出符合某个条件的子串等。 ③由普通字符(a-z)以及特殊字符(元字符)组成的文字模式,正则表达式作为一个模版,...原创 2018-08-01 22:30:21 · 1019 阅读 · 0 评论 -
【android学习】android知识点总结
1,Android UI体系1) Android之MVC、MVP对于小项目可以按如下分法(mvp选用);对于大项目可以按模块分,然后模块内再按如下分发。 分包(按功能分): basal:基类; surface(fragment、activity、broadcast、listener):界面类; adapter:适配器类; mvp(presenter、constract、vie...原创 2018-03-01 09:11:09 · 1912 阅读 · 0 评论 -
【java学习】集合框架:Map、Collection(Set、List、Queue、Array)
建立一个第三方类并实现java.util.Comparator接口。并重写方法。Comparable接口将比较代码嵌入自身类中,而后者在一个独立的类中实现比较。然后排序:Collections.sort(list, new MySort ());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序。如:定义集合形式为TreeSet ts = new TreeSet(new 第三方类());原创 2019-10-29 18:36:54 · 3123 阅读 · 1 评论 -
【android 】进程、守护进程的实现及进程拉活
1,概念1)守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某些任务。android中守护进程的实现主要由Service来完成。Android继承了Linux的lowmemorykiller,为了实现进程常驻,需要应用到守护进程。2)进程拉活android进程拉活包括2个层面:①提高进程优先级,降低进程被杀死的概率。②进程被杀死后,进行拉...原创 2016-12-12 22:13:26 · 10039 阅读 · 2 评论 -
【java学习】面向对象(Object Oriented,OO):封装,继承,多态
1,封装1)概念:首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系。2)体现:形成“类”。2,继承1)优点继承可以使现有的代码具有可重用性和可扩展性。2)使用①构造函数不能被继承,子类可以通过super()显示调用父类的构造函数 ②创建子类时,编译器会自动调用父类的 无参构造函数 ③...原创 2018-07-26 17:17:46 · 1453 阅读 · 1 评论 -
【java学习】输入与输出
1,概念1)java三大器:监视器、过滤器、拦截器2)JVM学习3)函数式编程(functional programming)是结构化编程的一种。将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。 java8引入了函数式编程概念。①java8新特性:java.util.stre...原创 2018-07-31 17:17:53 · 1036 阅读 · 0 评论 -
【java学习】序列化与反序列化:Json框架、xml转换、msgpack;java序列化
1,概念1)JavaBeanJavaBean不是一个编程规则,也不是语法规范,它是一个习惯性的编程规范。在fastJson中,解析用到的实体类必须严格按照JavaBean规范来写。 特点: ①类为public ②有一个无参数的构造方法。 ③属性为私有,通过getXxx()和setXxx方法设置属性(方法的第四个字母为大写)。 ④必须实现序列号接口。2)JSONObje............原创 2017-08-31 10:18:06 · 2937 阅读 · 1 评论 -
【编程素质】组合模式(Composite Pattern、合成模式、部分整体模式)
1,概念允许将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 树节点可以对子节点进行增删改查等操作。2,场景1)需要描述对象的部分和整体之间的等级结构关系,如树形菜单、文件和文件夹管理等等 2)需要客户端忽略个体和组合构件的区别,平等对待所有的构件。组合模式在java和android源码中也是有不少的应用的,比如List框架,...原创 2018-07-31 21:03:51 · 1060 阅读 · 0 评论 -
【Java学习】JAVA和C++区别
转载:http://developer.51cto.com/art/201106/270422.htmJAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序...转载 2018-08-14 09:09:34 · 403 阅读 · 0 评论 -
【java学习-Spring】Spring-data-jpa(Java Persistence API)和Template
1,概念JPA的存在意义是为了整合第三方ORM框架,建立一种标准的方式ORM 访问数据库的统一。但是现阶段JPA几乎都是接口,实现都是Hibernate在做。我们都知道,在使用持久化工具的时候,一般都有一个对象来操作数据库,在原生的Hibernate中叫做Session,在MyBatis中叫做SqlSession,而在JPA中叫做EntityManager通过这个对象来操作数据库。对象关系映...原创 2019-08-20 16:01:42 · 3128 阅读 · 1 评论 -
数据压缩与打包:jar、war、arr、tar、zip
1,*.jar(JAR 文件,Java Archive File,Java 归档文件)1)概念是 Java 的一种文档格式。只包含了class文件与清单文件 ,不包含资源文件,是与平台无关的文件格式。解压:jar文件使用了ZIP压缩格式。找一个jar文件,然后修改后缀名为‘zip’或者‘rar’格式,可解压该文件,点击‘com‘文件夹就会看到里面全部是‘.class’文件。ZIP压缩压......原创 2018-10-08 17:31:45 · 2085 阅读 · 1 评论 -
【java学习】GUI 图形程序设计
1,相关插件对于新手来说,不要在一开始使用此类插件。当你能自己写出来代码的时候,才是使用此类插件的时候,为了加快开发效率。加油!1)eclipse windowbuilder可视化设计界面①安装登陆网址:http://eclipse.org/windowbuilder/download.php选择版本-&amp;amp;amp;amp;amp;gt;【link】eclipse中:【help】-&amp;amp;amp;amp;amp;gt;【Insta原创 2018-10-08 10:01:01 · 3195 阅读 · 0 评论 -
【java学习】控制执行流程:循环与判断
1,for循环1.1 for执行顺序for(表达式1;表达式2;表达式3){}先执行表达式1–>然后执行表达式2,如果为false,结束循环,否则执行循环体–>执行表达式31.2 foreach循环for(Object item : ObjectList){}1.3 循环效率比较在 JDK1.5 之后,至少有三种遍历的方式:ForEach、迭代器、for循环。...原创 2018-09-29 10:04:11 · 242 阅读 · 0 评论 -
【数据库学习】Elasticsearch(ES)原理
Elasticsearch索引的精髓:一切设计都是为了提高搜索的性能1,正向索引和反向索引1)正向索引(正排索引)从文档中查找字符串。关系型数据库使用的是正向索引。2)反向索引(倒排索引)从字符串查找文档。搜索引擎lucene使用的是反向索引。假设有这么几条数据:IDNameAgeSex1Kate24Female2John24Male...原创 2019-10-01 16:43:57 · 5818 阅读 · 2 评论 -
【Java学习】网络连接:Socket(套接字)
1,检查当前网络是否可用public class NetWork { /** * 检查当前网络是否可用 * * @param context * @return */ public static boolean isNetWork(Context context) { if (context != nu...原创 2018-07-26 20:36:03 · 472 阅读 · 0 评论 -
【java学习】ThreadPoolExecutor 线程池
1,概念一个线程池管理了一组工作线程,同时它还包括了一个用于放置等待执行任务的任务队列(阻塞队列)。默认情况下,在创建了线程池后,线程池中的线程数为0。Android中的线程池来自Java,主要通过Executor来派生特定类型的线程池。创建一个支持定时及周期性的任务执行的线程池,多数情况下可用来替代Timer 类。1.1 Executor接口Executor 是一个顶层接口,在它里面...原创 2018-09-28 09:28:37 · 2036 阅读 · 1 评论 -
【java学习】java知识点总结
1,java历史1.1 java基于C++1.1.1 JAVA和C++区别2,类Class2.1 面向对象三大特性:封装,继承,多态2.2 Java内存模型2.3数据类型#7,网络基础、操作系统基础【网络基础】TCP/UDP【数据结构】位运算【网络基础】IP计算#8,数据库#9,java基础【java学习】java基础语法【java学习】集合框架【java学习】JVM...原创 2018-10-06 10:13:56 · 883 阅读 · 0 评论 -
【java学习】枚举
【代码】【java学习】枚举。原创 2018-08-29 08:24:47 · 439 阅读 · 1 评论 -
【Java学习】Java内存
1,JVM 的内存布局/内存模型Java虚拟机(Virtual Machine)所管理的内存包括的运行时数据区域(如下图): 1)程序计数器(Program Counter Register)程序计数器是一个比较小的内存区域,是线程隔离的。①功能指示当前线程所执行的字节码的行号。②JVM的多线程的实现线程轮流切换并分配处理器执行时间。在任何一个确定的时刻,一个CP.........原创 2018-08-13 09:45:13 · 1129 阅读 · 1 评论 -
【java学习】JDK(Java Development Kit)
文档生成器,它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。javadoc只能为public、protected成员进行文档注释。private和daulft的注释会被忽略掉。通过-private标记,可以把private成员的注释也包括在内。GUI设计与开发的类:创建界面和绘制图形图像的所有类。AWT是JAVA的language核心语言包;如String、Math、Integer、System、Thread,提供常用的功能。特殊之处是不需要导入,是作为默认导入的包。原创 2018-09-28 15:32:34 · 2725 阅读 · 1 评论 -
【android学习】android端通过socket接收到数据产生乱码
【问题重现】接收到的数据为汉字和字母混合数据,有个别的“�”乱码。【问题原因】1)编码格式转换有问题。经过检查,服务器发送数据使用的是UTF-8格式,android端接收数据也使用的是UTF-8格式来转码。2)数据过大时,分包接收数据,然后转码。2个分包分别将一个汉字的2个字节分开存储。然后每次一个分包进行转码,汉字的一个字节无法识别,转码后表现为乱码。所以乱码多数出现原创 2016-07-12 15:20:18 · 4131 阅读 · 0 评论 -
【java学习】多线程之高并发编程:线程&任务&启动任务
1,synchronized(同步块)(1)概念用synchronized 关键字来实现同步块,所有加上synchronized 的块语句,在多线程访问的时候,同一时刻只能有一个线程能够访问,另一个线程必须等到当前线程访问完毕才能访问此代码块,解决了多线程的安全问题。即:加锁。(2)缺陷多个线程判断锁,耗费资源,降低代码执行效率。(3)作用①实现操作的原子性什么是原子性?原子操作即:不可分割的单一的...............原创 2017-01-24 13:14:08 · 4137 阅读 · 1 评论 -
【java学习】java三大器
1,filter过滤器1)android.widget.filter通常被用在列表中过滤显示的数据。 Android列表中filter的使用2) javax.servlet.filter是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如原创 2017-05-22 22:27:31 · 3514 阅读 · 0 评论 -
【android学习】socket传输中,流的关闭
【问题重现】问题1:socket传输中,用流来缓存数据,为了防止内存泄漏以及资源的合理利用,流用完是应该关闭的,但是,一旦关闭流,socket也关闭。即只传输一次,socket就关闭了。问题2:流的关闭太过缓慢,影响用户体验。【问题解决】对于问题1,解决方案有很多。1)每次传输,接受完数据后,关闭流。socket也关闭了。再次使用,重新new新的socket,创建新的连接。这个原创 2016-07-12 15:40:40 · 4713 阅读 · 0 评论 -
【Java学习】java语言的执行模式--半编译和半解释型
1,相关概念 1)编译方式: 编译方式把源程序的执行过程严格地分成两大步:编译和运行。 ①把源程序全部翻译成目标代码 ②运行目标代码,获取执行结果。 2)解释方式: 源程序输入到计算机后,解释程序将程序逐句翻译,翻译一句执行一句边翻译边执行,不产生目标程序。 解释方式是按照远程序中语句的动态顺序,直接地逐句进行分析解释,并立即执行。 解释的过原创 2016-10-30 16:24:44 · 5523 阅读 · 0 评论