java
文章平均质量分 59
iamwiam
Hello World
展开
-
循环语句下对象的声明
关于对象的声明应该在for循环内还是for循环外的讨论:看到一段别人的代码片段A如下AList<String> pkgIds = new ArrayList<>();for (OResPkgBaseEntity entity : oResPkgBaseEntities) { if (null != entity) { OResPkgTopicBase oResPkgTopicBase = new OResPkgTopicBase(); pkgIds.add(e原创 2020-05-09 16:58:51 · 443 阅读 · 0 评论 -
多线程解决多数组元素反转问题
多线程解决多数组元素反转问题该题属于自由市场中,某大厂的笔试题题目内容对多个String数组中,指定位置范围内的数字进行反转后,输出合并所有数组后的字符串。要求用多线程解决该问题思路与代码要求多线程考虑使用数量为数组数量的固定线程池,要求返回字符串结果,所以考虑使用具有返回值的Callable。代码如下:import java.util.Arrays;import java.uti...原创 2020-03-17 21:11:48 · 468 阅读 · 0 评论 -
连续子数组的最大和
1.题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长原创 2017-07-02 17:31:12 · 170 阅读 · 0 评论 -
希尔排序
2.定义 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 2.分析 周所周知,原创 2017-06-12 16:54:05 · 302 阅读 · 0 评论 -
一个类继承不同接口存在相同方法的处理
1.问题来源:无意间和同学讨论这种情况,本以为这种情况不可能出现,因为一个类的重写是不允许相同方法只有返回值不同的情况,这也不是OOP多态的体现。于是查阅资料,发现了解决办法,也就是内部类方式来解决。 2.举例:类C同时implements具有相同方法的接口A和B 3.解决方案,分别用内部类实现A和B,然后调用内部类方法。代码如下:public class Test implements A,原创 2017-07-13 15:04:44 · 666 阅读 · 0 评论 -
{"JSON":"P"}
{“Getting”:”started”}翻译:(JSON-P) https://javaee.github.io/jsonp/getting-started.html这是一篇JSON-P操作快速入门指导手册。添加依赖 添加如下的依赖关系:<dependency> <groupId>javax.json</groupId> <artifactId>javax.json-api</a翻译 2017-07-14 14:58:29 · 257 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
1.题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。2.代码及思路public class Solution { public static void main(String[] args) { int[] a = {4,6,12,8,16,14,10}; boo原创 2017-06-14 23:28:20 · 185 阅读 · 0 评论 -
Netty线程模型
1.Netty线程模型分类 事实上,Netty线程模型与与Reactor线程模型(之前有介绍)相似,下面我们通过Netty服务端和客户端的线程处理流程来介绍Netty的线程模型。 1.1服务端线程模型 一种比较流行的做法是服务端监听线程和IO线程分离,类似于Reactor的多线程模型,它的工作原理图如下: Netty服务端线程工作流程 下面结合Netty的源码,对服务端创建线程原创 2017-07-09 09:53:35 · 274 阅读 · 0 评论 -
java进制转换
java中进行二进制,八进制,十六进制,十进制间进行相互转换 十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinaryString(int i) 十六进制转成十进制 Integer.valueOf(“FFFF”,16).toString()原创 2017-05-23 23:05:06 · 237 阅读 · 0 评论 -
二叉搜索树
引言计算机系统中,经常遇到的树是分级文件结构。文件的路径和根等术语来自于树的理论。我们接下来对二叉搜索树进行整理。注意到,分级文件结构和接下来讨论的树有明显不同,文件结构中,子目录中不含有数据:他们只有其他子目录或者文件的引用,只有文件中才包含数据。而在书中,每个节点都包含数据,以及其他节点的引用(除叶子节点)。 二叉搜索树特征定义可以这样说:二叉树中,一个节点的左子节点的关键字值小于这个节点,右原创 2017-07-18 15:27:43 · 198 阅读 · 0 评论 -
Java 静态工厂方法与构造器
Java静态工厂方法替代构造器分析1.概述1.1 构造器1.2 静态工厂方法2.实现及优、劣势分析2.1 实现2.2 优势分析2.3 劣势3.总结1.概述Java是典型的面向对象的语言,在Java泰斗级别书籍《Effective Java》中,第2章(第1章引言)开始变介绍了对象的创建和销毁。本篇文章将重点对该书籍第2章第1条定律——考虑用静态方法代替构造器的讲解进行剖析。1.1 构造器构...原创 2019-01-26 18:22:45 · 765 阅读 · 0 评论 -
关于POJO类中的布尔类型
阿里巴巴开发手册中有这么一段话:“POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。反例:定义为基本数据类型boolean isSuccess 的属性,它的方法也是isSuccess(),RPC框架在反向解析的时候,以为对应的属性名称是success,导致属性获取不到,进而抛出异常”。具体的理解如下:通常基于Java的Web开发过程中不可避免的会遇到rpc服务调用,...原创 2019-07-28 22:35:50 · 1916 阅读 · 0 评论 -
最小的K个数
题目描述: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 2.思路 先将数组排序,然后将前K个入list中。 3.代码import java.util.ArrayList;import java.util.Arrays;public class Solution { public static void ma原创 2017-07-01 16:57:22 · 174 阅读 · 0 评论 -
CopyOnWriteArrayList实现原理
引言《Java并发编程实战》P43中提到:“通过将某个元素放入Vector、CopyOnWriteArrayList、CopyOnWriteArraySet、synchronizedList或者synchronizedSet中,可以将元素安全的发布到任何从这些容器中访问该元素的线程”。源码分析另外,我们知道CopyOnWriteArrayList适用于写少读多的并发场景。那么不妨从源码分析其实现原理原创 2017-07-10 15:50:38 · 323 阅读 · 0 评论 -
JDBC测试
话不多说,使用步骤如下: 本人使用Java去连接Mysql数据库,第一步:需要引用MySQL Connector/J (Archived Versions),官网下载链接:https://downloads.mysql.com/archives/c-j/;第二步:将下载的mysql-connector-java-xxxx-bin.jar通过Add External Archieves放到项目中。第原创 2017-05-12 19:02:17 · 1294 阅读 · 0 评论 -
volatile关键字
1.一旦共享变量被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的; 2)禁止进行指令重排序。2.所谓volatile的措施,就是 1)每次从内存中取值,不从缓存中拿值。这就保证了用volatile修饰的共享变量,每次的更新对其他线程立即。既然保证了其他线程的立即可见,也就无法保证原子原创 2017-04-23 15:57:30 · 260 阅读 · 0 评论 -
随机生成优惠码并保存至Mysql数据库
目前很多商家通过优惠码做活动,现在我们简单的实现八位的优惠码,并保存在数据库中。 1.随机生成优惠码代码如下:import java.util.Random;/***功能:随机生成优惠码*@author iamwiam**/public class Activatedcode { public int ACTIVATEDCODENUM = 200; //生成的优惠码数量原创 2017-04-24 10:14:29 · 3845 阅读 · 2 评论 -
递归及典型应用
递归是一种方法调用自身的编程技术。数学本质是数学归纳方法。接下来我们介绍一些典型的递归应用案例,用以帮助理解,欢迎批评指正。 1.三角数字 古希腊数学家发现数字1,3,6,10,15,21,….中存在一种联系。及这个数列中第n项是由第n-1项加n得到,n>1。这个序列中的数字被称为三角数字,因为它们可以被形象化地表示成对象的一个三角排列。 图1 三角数字原创 2017-05-07 23:24:21 · 2602 阅读 · 0 评论 -
单例模式Java实现
第一种(懒汉,线程不安全):public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Si转载 2017-05-08 16:23:51 · 250 阅读 · 0 评论 -
HttpServlet容器响应Web客户请求
流程如下: 1)Web客户向Servlet容器发出Http请求; 2)Servlet容器解析Web客户的Http请求; 3)Servlet容器创建一个HttpRequest对象,在这个对象中封装Http请求信息; 4)Servlet容器创建一个HttpResponse对象; 5)Servlet容器调用HttpServlet的service方法,这个方法中会根据request的Method来原创 2017-05-17 11:42:49 · 548 阅读 · 0 评论 -
类加载器
JVM设计团队把类加载阶段中“通过一个类的全限定名来获取此类的二进制字节流”这个动作放到java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块成为“类加载器”。 1.类与类加载器 对于任一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器都拥有一个独立的类名称空间。 所指的唯一性可判断两个类是否“相等”,原创 2017-04-26 17:17:37 · 357 阅读 · 0 评论 -
替换空格
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。/***思路一:遍历字符串,对每个字符进行匹配*/public class Solution { public String replaceSpace(StringBuffer str) { int len =原创 2017-05-10 09:57:20 · 341 阅读 · 0 评论 -
重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * public class TreeNode { * int val; *原创 2017-05-10 12:45:14 · 223 阅读 · 0 评论 -
类集框架(一)--Collection接口
1.类集框架定义 jdk提供的一系列类和接口,位于java.util包中,主要用于存储和管理对象。主要分为三大类:集合、列表和映射。 集合Set:用于存储一系列对象的集合(无序且不允许元素重复)。 列表List:用来存储有顺序的一组数据的集合(有序,元素可以重复)。 映射Map:以键值对的方式进行数据存储的集合(键不可以重复,值可重复)。 最常用到的集合API如下(Map事实上并没有继承C原创 2017-05-21 23:15:52 · 318 阅读 · 0 评论 -
归并排序
1.归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。 如 设有数列{6,202,100,301,38,8,1} 初始状态:6,202,100,301,38,8,1 第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3; 第二次归并后:{6,100,202,301},{1,8,38},比较次数:4; 第三次归并后:{1,6,原创 2017-06-07 10:28:45 · 262 阅读 · 0 评论 -
泛型程序设计
1.为什么使用泛型程序设计 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。在Java中增加泛型类之前(JDK 1.5),泛型程序设计是通过继承实现的。例如:public class ArrayList{ private Object[] elementData; public Object get(int i){......} public void a原创 2017-04-30 23:49:04 · 240 阅读 · 0 评论