
java
带带大师兄-
这个作者很懒,什么都没留下…
展开
-
Mybatis中sql参数的问题
在用Mabatis写Mapper里的sql语句时,如果传入一个参数,可以不加@注解 如果传入多个参数,每个参数之前加@注解,否则可能会在浏览器报错500,一般出现500错误,可能是服务器端sql语句出错,下面贴代码看下 public int validById(@Param("ids")String[] ids,@Param("valid")Integer valid);两个参数时 此时对应的原创 2017-12-10 13:30:44 · 592 阅读 · 0 评论 -
将SpringMVC返回的json串中的Date类型转换成long类型
通过继承JsonSerializer类来自定义格式,之后在实体类对应的date类型的字段的getter方法上添加注解public class DateJsonTypeConvert extends JsonSerializer<Date> { //用于序列化字符串(例如转换为json格式) @Override public void serialize(Date arg0,原创 2018-03-05 16:04:30 · 1604 阅读 · 0 评论 -
java中throw和throws的区别
throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。 throws语句用在方法声明后面,表示抛出异常,由该方法的调用者来处理。throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。 throw是当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常是,具体向外抛异常的动作,所以它是抛出一个异常实例。throw与throws的比较 1、throws出原创 2018-03-13 13:14:48 · 8209 阅读 · 0 评论 -
通过NIO进行文件复制
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;publi原创 2018-03-06 12:46:02 · 214 阅读 · 0 评论 -
线程安全的CopyOnWriteArrayList
CopyOnWriteArrayList在电话面试被问到之前,没有很了解,于是下午回到宿舍就上网查阅了一番。 先检验一下他是否是线程安全的吧 ReadThread.javaimport java.util.List;public class ReadThread implements Runnable { private List<Integer> list; public Rea原创 2018-03-19 17:19:17 · 228 阅读 · 0 评论 -
MD5不是加密算法,是散列算法
MD5算是加密算法吗?MD5不是加密算法,是散列算法,或者叫做哈希算法。 加密算法一般指对称加密算法。 MD5哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。message-digest al原创 2018-03-13 19:33:17 · 6787 阅读 · 0 评论 -
JAVA8之lambda表达式(一)
在接触公司的项目后,发现很多地方会出现()->,这种表达式以前不怎么接触,在看了公司项目后打算慢慢学习总结下:lambda表达式是JAVA8中提供的一种新的特性,它支持JAVA也能进行简单的“函数式编程”。 它是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。1.使用lambda转载 2018-04-07 23:36:50 · 200 阅读 · 0 评论 -
JAVA8之lambda表达式(二)
lambda好处就是代码量大大减少了!程序逻辑也很清晰明了。 它的用处浅显来说就是替代“内部匿名类”、可以对集合或者数组进行循环操作。 以前: 面向对象式编程就应该纯粹的面向对象,于是经常看到这样的写法: 如果你想写一个方法,那么就必须把它放到一个类里面,然后new出来对象,对象调用这个方法。 匿名类型最大的问题就在于其冗余的语法。 有人戏称匿名类型导致了“高度问题”(heigh原创 2018-04-08 22:23:24 · 363 阅读 · 0 评论 -
一天一道简单题目(三)
给你一个字符串,找出最长的没有重复字符的子字符串的长度。解法一:private static int lengthof(String str) { int n=str.length(); int ans=0; for(int i=0;i<n;i++){ for(int j=i+1;j<=n;j++){原创 2018-04-06 11:36:22 · 263 阅读 · 0 评论 -
Spring注解@Resource和@Autowired区别
(1)@Autowired @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。 @Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用原创 2018-04-13 22:20:21 · 422 阅读 · 0 评论 -
Spring中的@Transactional注解注意事项
一 .Spring中的@Transactional必须要了解的概念Spring中的@Transactional基于动态代理的机制,提供了一种透明的事务管理机制,方便快捷解决在开发中碰到的问题。一般使用是通过如下代码对方法或接口或类注释:[html] view plain copy @Transactional(propagation=Propagation.NOT_SUPPORTED) Prop...原创 2018-05-12 21:28:26 · 505 阅读 · 1 评论 -
BIO和NIO的各自应用场景
BIO和NIO是两种不同的网络通信模型,现如今NIO已经大量应用在Jetty、ZooKeeper、Netty等开源框架中。一个面向流、一个面向缓冲区一个是阻塞式的、一个非阻塞一个没有io多路复用器、一个有各自应用场景 (1)NIO适合处理连接数目特别多,但是连接比较短(轻操作)的场景,Jetty,Mina,ZooKeeper等都是基于java nio实现。服务器需要支持超大量的长时间连接。比如10...原创 2018-05-14 11:42:15 · 4243 阅读 · 0 评论 -
二叉树的层次遍历
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list=new ArrayList<Integer>(); if(root==null原创 2018-03-12 15:12:23 · 121 阅读 · 0 评论 -
一天一道简单题目(2)
给出两个表示非负整数的数字链表,数字以相反的顺序存储,每个链表都存储该非负整数某一位上的数字。计算两个非负整数的和,并以链表的方式返回。简单做个比喻:342,以链表的存储形式就是,2->4->3。时间复杂度:O(n)。空间复杂度:O(n)。```public static ListNode Addtosum(ListNode l1,ListNode l2){ Addsum(l原创 2018-03-18 12:56:24 · 272 阅读 · 0 评论 -
使用BlockingQueue实现生产者,消费者模式
生产者类:import java.util.concurrent.BlockingQueue;public class Producer implements Runnable { BlockingQueue<String> queue; public Producer(BlockingQueue<String> queue){ this.queue=queue;原创 2017-12-21 14:50:30 · 309 阅读 · 0 评论 -
单例模式
java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。原创 2017-12-07 20:19:27 · 156 阅读 · 0 评论 -
探究类ThreadLocal的使用
当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。原创 2017-12-06 12:28:57 · 199 阅读 · 0 评论 -
单链表逆序输出
很经典的“单链表逆序”问题,很多公司的面试题库中都有这道题。public class LianedNode { class Node{ int data; Node next; public Node(int data){ this.data=data; } } public st原创 2017-12-17 20:24:40 · 299 阅读 · 0 评论 -
JAVA序列化ID问题
将Java对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用ObjectInputStream 和 ObjectOutputStream 进行对象的读写。然而在有些情况下,光知道这些还远远不够,文章列举了遇到的一些真实情境,它们与 Java 序列化相关,通过分析情境出转载 2018-03-08 13:07:22 · 10343 阅读 · 0 评论 -
线程池 ThreadPoolExecutor
corepoolsize:核心池的大小,默认情况下,在创建了线程池之后,线程池中线程数为 0, 当有任务来之后,就会创建一个线程去执行任务,当线程池中线程数达到 corepoolsize 后, 就把任务放在任务缓存队列中。 Maximumpoolsize:线程池中最多创建多少个线程。 Keeplivetime:线程没有任务执行时,最多保存多久的时间会终止,默认情况下,当线程 池中线程数>c原创 2018-03-09 11:42:54 · 170 阅读 · 0 评论 -
JDK动态代理与CGLIB动态代理
JDK动态代理 JDK的代理最大的缺点是需要提供接口,在MyBatis的Mapper就是一个接口,它采用的就是JDK的动态代理。 java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。 JDK动态代理中包含一个类和一个接口: InvocationHandler接口: public interface Invo...原创 2018-03-01 19:09:47 · 165 阅读 · 0 评论 -
Redis中Hash命令
1、HDEL HDEL key field [field …] 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。 在Redis2.4以下的版本里, HDEL 每次只能删除单个域,如果你需要在一个原子时间内删除多个域,请将命令包含在 MULTI / EXEC 块内。 可用版本: 2.0.0+ 返回值: 被成功移除的域的数量,不包括被忽略的域。 测试数据 red转载 2018-03-09 22:45:56 · 1029 阅读 · 0 评论 -
http状态码301和302区别
301 redirect: 301 代表永久性转移(Permanently Moved) 302 redirect: 302 代表暂时性转移(Temporarily Moved )301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)转载 2018-03-09 23:04:54 · 519 阅读 · 0 评论 -
用一个栈实现对另一个栈的排序
将要排序的栈记为stack,申请辅助的栈记为help,在stack栈执行pop操作,弹出的元素记为cur,如果cur大于help的栈顶元素,则将cur压入help;如果cur小于help的栈顶元素,则弹出help栈顶元素压入stack直到cur的值大于等于help的栈顶元素。依次运行,直到stack为空之后,把help的栈元素依次压入stack栈里即可。package com.bc;import j原创 2018-03-16 19:51:12 · 553 阅读 · 0 评论 -
一天一道简单题目(1)
给你一个整型数组,需要你返回两个数,这两个数相加等于一个指定的数。 你必须保证每一个输入的数组都有且只有一个确定的解。使用最笨的方法,用两个循环嵌套,将这个数组中所有的组合都测试一遍,直到最后得到正确的答案为止。 private static String solve(int[] arr, int target) { for(int i=0;i<arr.length-1;i++){原创 2018-03-11 12:24:41 · 148 阅读 · 0 评论 -
之字形打印二叉树
剑指Offer上一道编程题 用两个栈s1 s2分别保存奇数层节点和偶数层节点public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { int n=1; Stack<TreeNode> s1=new Stack<TreeNode>(); s1.push(pRoot); S原创 2018-03-17 18:58:48 · 233 阅读 · 0 评论 -
CountDownLatch共享锁实现原理
CountDownLatch使用解说CountDownLatch是java5中新增的一个并发工具类,其使用非常简单,下面通过伪代码简单看一下使用方式:这是一个使用CountDownLatch非常简单的例子,创建的时候,需要指定一个初始状态值,本例为2,主线程调用 latch.await时,除非latch状态值为0,否则会一直阻塞休眠。当所有任务执行完后,主线程唤醒,最终执行打印动作。以上只是一个最...转载 2018-05-14 11:48:09 · 1554 阅读 · 0 评论