java
文章平均质量分 79
云原生手记
欢迎大家关注我的公众号“云原生手记”,将定期更新云计算技术文章
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mybatis 会将数值0识别成空字符串
今天遇到一个问题,我在用java的BigDecimal对象时,值是0.00000;该对象不是空的,是new出来的,我需要将该值插入数据库,数据库对于该值的接收字段类型是decimal。我使用的Mybatis。mybatis中的语句大致如下: UPDATE user_consumption <trim prefix="SET" suffixOverrides=...原创 2018-11-09 09:37:56 · 2042 阅读 · 0 评论 -
CGLib动态代理 java
CGLIB动态代理 Spring AOP中就用到了动态代理,只不过在原创 2017-11-19 15:15:32 · 427 阅读 · 1 评论 -
java 线程池详解及四种线程池用法介绍
java 线程池详解 Executor框架是一种将线程的创建和执行分离的机制。它基于Executor和ExecutorService接口,及这两个接口的实现类ThreadPoolExecutor展开,Executor有一个内部线程池,并提供了将任务传递到池中线程以获得执行的方法,可传递的任务有如下两种:通过Runnable接口实现的任务和通过Callable接口实现的任务。在这两种情况原创 2017-11-14 16:09:24 · 19583 阅读 · 1 评论 -
消费者生产者模式(2)——用java阻塞队列实现
生产者——消费者模式有三个阶段的编程: 1.使用synchronized,wait,notify(这在我博客中已经有实现了,可以找找看看) 2.使用阻塞队列LinkedBlockingQueue(这是本小节的重点) 3.使用非阻塞式的内存结构如ConcurrentLinkedQueue(以后补充) 本小节所讨论的生产者消费者模式是通过一个容器来解决的。原创 2017-11-13 11:26:10 · 1153 阅读 · 0 评论 -
java并发集合有哪些
java并发集合 数据结构(Data Structure)是编程中的基本元素,几乎每个程序都使用了一种或多种数据结构来存储和管理数据。java API提供了包含接口、类和算法的java集合框架,它实现了可用在程序中的大量数据结构。 当需要在并发程序中使用数据集合时,必须要谨慎地选择相应的实现方式。大多数集合类并不能直接用于并发应用,因为他们没有对本身数据的并发访问进行原创 2017-11-13 10:39:45 · 4250 阅读 · 0 评论 -
java 多线程Condition接口的使用
java 多线程Condition接口的使用java中条件变量都实现了java.util.concurrent.locks.Condition接口,条件变量的实例化是通过一个Lock对象上调用newCondition()方法来获取的,这样,条件就和一个锁对象绑定起来了。因此,Java中的条件变量只能和锁配合使用,来控制并发程序访问竞争资源的安全。条件变量的出现是为了更精细控制线程等待与唤醒原创 2017-11-09 14:01:06 · 351 阅读 · 0 评论 -
java notify和notifyAll的区别
java中的notify和notifyAll有什么区别?关注问题写回答JavaJava 编程Java EEJava 程序员java中的notify和notifyAll有什么区别?转载 2017-11-12 21:59:15 · 690 阅读 · 0 评论 -
把字符串转换成整数 java实现
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+2147483647 1a33输出2147483647 0原创 2017-11-10 18:47:46 · 3208 阅读 · 0 评论 -
对称的二叉树 java实现
题目描述:请实现一个函数,用来判断一棵二叉树是不是对称的,如果一棵二叉树和他的镜像是一样的,那么它是对称的;解题思路:首先 理解镜像的概念,进行就是一棵二叉树左右节点反转过后形成的二叉树和原来的二叉树是一样的。这道题目中判断条件是使用和元二叉树的镜像相同,那么最low的方法是对原二叉树进行重构,重构后的二叉树和原二叉树进行比较,相同即是对称,不同就是不对称喽。那么这种方法需要额外空间的,我原创 2017-11-10 17:41:11 · 1531 阅读 · 1 评论 -
数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解题思路:如果你想用map的方式来查找第一个重复数字,这种想法是ok的,但是这样会付出o(n)的空间复杂度。我这主原创 2017-11-10 12:15:43 · 363 阅读 · 0 评论 -
二叉搜索树中的第K大的节点 java实现
题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。解题思路:因为这是一颗二叉搜索树,返回的第K个节点其实就是二叉树按中序遍历的第K个节点。思路一:按中序遍历顺序,将节点一个一个存在LinkedList中,存完之后,取出第k个节点就行啦,这个方法有点low啦思路二:仍然是按中序遍原创 2017-11-10 11:43:47 · 1999 阅读 · 0 评论 -
生产者消费者模式sychronized实现 java
生产者消费者模式sychronized实现 java相信大家都对消费者和生产者模式有一定了解,这个场景经常会用到多线程,而且因为涉及到共享资源的获取和修改,必然是需要线程同步的,那这边我就用synchronized来试下消费者和生产者,希望大家能看明白,程序中有注释,基本上能看懂的,主要是对共享对象buffer中的两个方法进行同步代码:import java.util.Date;import j...原创 2017-11-09 18:25:03 · 386 阅读 · 0 评论 -
设计模式之适配器模式(三种实现) JAVA
适配器模式定义:适配器你可以看作是一个中间件,对于不匹配的两个东西进行匹配,就像转换器或者转接头一样。举个例子,比如你的电源插座只有两相插座,但是你的笔记本需要三相插座,那怎么办?不匹配啊,你插不进去的,这个时候,你会去找一个三相转两相的转接器,这样就可以用来。所以,适配器的功能就是做两头的转换。使用场景:(1)想要使用一个已经存在的类,但是它却不符合现有的接口规范,导致无法直原创 2017-10-30 16:58:01 · 2108 阅读 · 2 评论 -
java 信号量Semaphore的使用
java 信号量Semaphore的使用信号量是一种计数器,用来保护一个或者多个共享资源的访问。信号量的使用:(1)如果一个线程要访问一个共享资源,他必须先获得信号量。如果信号量的内部计数器大于0,信号量将减1,然后允许访问这个共享资源。计数器大于0意味着又可以使用的资源,因此线程讲被允许使用其中一个资源。(2)如果信号量等于0,信号将将会把线程植入休眠直到计数器大于0.计数器等于原创 2017-11-08 20:57:17 · 3105 阅读 · 0 评论 -
代理模式(静态代理和动态代理) JAVA
转载地址:http://blog.csdn.net/goskalrie/article/details/52458773代理模式 JAVA 代理模式的现实例子就是——中介,很贴切,它的定义:给某个对象提供一个代理,并由代理对象控制对象对原对象的引用。 代理模式包含如下角色: (1)抽象主题角色:是一个接口,该接口是对象和它的代理共用的接口。转载 2017-11-14 21:46:45 · 507 阅读 · 0 评论 -
java 常见性能优化策略分类
常见性能优化策略分类http://blog.csdn.net/zhengchao1991/article/details/53579906代码:之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视。很多技术人员拿到一个性能优化的需求以后,言必称缓存、异步、JVM等。实际上,第一步就应该是分析相关的代码,找出相应的瓶颈,再来考虑具体的优化策略。有一些性能问题,完全转载 2017-11-14 22:34:21 · 766 阅读 · 0 评论 -
java socket demo及其缺点
传送IO特点阻塞点server.accept();inputStream.read(bytes);单线程情况下只能有一个客户端用线程池可以有多个客户端连接,但是非常消耗性能。因为每次来一个连接就回去专门新建一个线程去处理。虽然newCachedThreadPool()所创建的线程可以在一定时间内回收已经空闲的线程,但是在高并发情况下,仍然会因为创建太多的线程而撑爆内存。代码...原创 2018-09-12 23:12:42 · 654 阅读 · 0 评论 -
java 读取properties配置文件代码,使用java中的Properties类
介绍几个Properties类里面的常用函数:它提供了几个主要的方法:1. getProperty ( String key),用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。2. load ( InputStream inStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties...原创 2018-09-08 19:14:59 · 1008 阅读 · 0 评论 -
解决多线程中内存可见性的方式
上一篇博客已经讲到了内存可见性问题,内存可见性所表现出来的问题就是失效数据,而有效规避这种问题的方法就是同步。本篇博客将告诉你具体采用哪些同步方式可以解决这类问题:加锁,volatile变量。1、 加锁与可见性 内置锁可以确保某个线程以一种可预测的方式来查看另一个进程的执行结果。看下面这张图,当线程A执行某个同步代码块时,线程B随后进入由同一个锁保护的同步代码块,在这种情况下可以保...原创 2018-07-16 09:27:43 · 1561 阅读 · 1 评论 -
《java并发编程实战》_对象的共享&可见性
要编写正确的并发程序,关键问题在于:在访问共享的可变状态时需要进行正确的管理(这句话总结的很好)。我们知道同步代码块和同步方法可以确保以原子的方式执行操作,但一种常见的误解是,认为关键字synchronized只能用于实现原子性或者确定“临界区”。同时...原创 2018-07-16 09:23:19 · 345 阅读 · 0 评论 -
StringUtils工具类中的小细节,final的应用
看一下下面两份代码:public class StringUtil {//代码1 private StringUtil() { // 工具类不需要实现 } public static boolean isEmpty(final String str) { return (str == null || str.length(...原创 2018-07-12 16:50:46 · 886 阅读 · 0 评论 -
java 使用接口组织枚举——java编程思想
enum不能继承其他类,有时我们需要扩展原enum中的元素,有时我们希望使用子类将一个enum中的元素进行分组。在一个接口的内部,创建实现该接口的枚举,以此将元素进行分组,可以达到将枚举元素分类组织的目的。举例来说,假设你想用enum来表示不同类别的食物,同时还希望每个enum元素仍然保持Food类型。那么可以这样实现:package com.zy.test;import com.zy...原创 2018-06-21 23:19:13 · 3788 阅读 · 3 评论 -
java 异常详解 代码讲解
异常:当程序运行时,发生了不可预期的事件导致程序中断就是异常。异常发生时该怎么处理呢,c语言中,发生异常时返回某一数值作为执行状态。在java中提供了优秀的异常捕获机制。先来看一下异常有哪些种类,java中异常的父类时Throwable,其子类是Error和Exception。Error类代表运行时环境发生的错误,程序中是不用捕获这类异常的。Exception类中的异常是可以捕获的,Excepti...原创 2018-05-15 23:05:28 · 852 阅读 · 0 评论 -
JAVA调用有道API接口对数据库中的中文语句进行翻译
今天遇到一个小需求,就是将数据库中的某个中文字段翻译成英文,总共有六百多条,直接只用数据库update语句和手动翻译效率很慢。我想这如果可以调用有道翻译API接口将翻译的语句结合原中文字段拼接成update语句,最后将update语句做成update脚本即可一次性全部修改数据库中某个字段的翻译工作。可能不明白什么意思。原来同事让我用以下语句对数据库中几百条记录进行逐条翻译,那么我将原语句放入有道翻...原创 2018-05-07 23:36:35 · 4894 阅读 · 0 评论 -
Spring AOP(面向切面编程)小demo实现
Spring AOP1、目的:Spring AOP的存在是为了解耦,AOP可以让一组类共享相同的行为。在OOP(面向对象编程)中,一般是通过继承类和实现接口等方式实现一组类共享某一相同的行为,java中类只能单继承,阻碍了更多行为添加到一组类上,AOP弥补了以上不足。2、实现Spring 有两种方式实现AOP:基于注解拦截和给予方法规则拦截,本文将在同一工程中实现两者。首先用eclipse创建一个...原创 2018-05-13 17:05:02 · 10154 阅读 · 2 评论 -
java实现 将文件中=号前的字符串全部改为小写
昨天正在做国际化任务的同事需要将一个国际化文件(键值对形式即文件内容为“Date.TIME=日期时间”)中键全部写小,大概这样子的键值对有800+行,需要改两个文件。同事觉得浪费世家,就让我写一个程序来搞定。 这个程序主要用到了java对于文件的ID操作,先打开文件,读出内容,更改内容,再新建文件,将新修改的内容写入这个文件。这就是大致的逻辑,很简单,就是练练手的。内容代码如下:im...原创 2018-05-12 17:15:42 · 525 阅读 · 0 评论 -
java连接mysql数据库8.0以上版本过程中遇到的坑
首先,我居然不能用navicat客户端连接上mysql8.0数据库报1251错误,这个的解决方式已经在我的上一篇博客中解决了。然后我又遇到了java无法连接mysql数据库8.0的问题。报错:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdb...原创 2018-05-09 16:32:37 · 44698 阅读 · 19 评论 -
linux下查看java虚拟机(JVM)GC情况
命令——jstat命令格式:jstat [Options] vmid [interval] [count]Options,选项,我们一般使用 -gcutil 查看gc情况vmid,VM的进程号,即当前运行的java进程号interval,间隔时间,单位为秒或者毫秒count,打印次数,如果缺省则打印无数次实例通常运行命令如下:原创 2017-11-15 10:49:31 · 8787 阅读 · 0 评论 -
java PriorityBlockingQueue——按优先级排序的阻塞式线程安全列表
java PriorityBlockingQueue——按优先级排序的阻塞式线程安全列表 数据结构应用中的一个经典需求是实现一个有序列表,java引入了priorityBlockingQueue类来满足这类需求。 所有添加进PriorityBlockingQueue的元素必须实现Comparable接口,这个借口提供了CompareTo()方法,他的传入参数是一个同类型的对原创 2017-11-13 17:00:22 · 2034 阅读 · 0 评论 -
JAVA基本的同步机制
JAVA的同步机制——线程同步辅助类这一小节主要介绍JAVA中有哪些同步机制,下面几个小节会分别介绍这些同步机制的用途,希望可以让大家对JAVA的同步机制有一定了解。好了,我们开始吧!(1)synchronized关键字,这个相信大家很了解,最好能理解其中的原理,这里不多少,以后会专门分享一篇关于synchronized关键字的文章;(2)Lock接口及其实现类,如ReentrantL原创 2017-11-07 21:11:21 · 2974 阅读 · 0 评论 -
java 线程的join方法解析
java 多线程join()的使用,及原理介绍先说一下join()有什么用吧?thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。首先这个方法有以下两种形式:t.join(); //调用join方法,等待线程t执行完毕t.原创 2017-10-21 19:20:35 · 349 阅读 · 0 评论 -
从尾到头打印列表 java实现 剑指offer原题 java实现栈结构
题目分析:从尾到头打印列表,即输出列表上各个节点的值,首先输入是一个链表头结点,且这是一个单链表,可以看看代码中ListNode类。要知道所有节点的值必须遍历一遍链表,但是又要从后向前打印,但是链表只能从前往后遍历。要想实现:从前往后>>>>>>从后往前,这个很想栈结构的性质,先入后出,先遍历的节点最后输出。所以我们只需要建立一个栈结构即可(本题解决关键)。java中可以使用LinkedList集原创 2017-05-21 10:40:15 · 391 阅读 · 0 评论 -
找出数组中出现次数大于一半的数字 Java实现 剑指offer
题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0解题思路:第一种最简单,进行快速排序,然后取出最中间的数字,并且用这个数字遍历一遍数组,看看该数出现次数是不是大于数组长度的一半(实现代码如下,快速排序法);原创 2017-06-03 22:34:38 · 1065 阅读 · 1 评论 -
53道Java线程面试题
http://www.cnblogs.com/king-garden/p/5672853.html【转载】下面是Java线程相关的热门面试题,你可以用它来好好准备面试。1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任转载 2017-05-09 22:09:01 · 335 阅读 · 0 评论 -
阐述ArrayList、Vector、LinkedList的存储性能和特性
http://www.cnblogs.com/jiangyi-uestc/p/5682699.html【转】 ArrayList 和Vector他们底层的实现都是一样的,都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。 Vector中的方法由转载 2017-05-09 20:41:44 · 1833 阅读 · 0 评论 -
排序算法——java实现(1):冒泡排序算法
冒泡排序算法冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。package test;class BubbleSort{int[] data;BubbleSort(i原创 2017-05-18 08:41:08 · 505 阅读 · 0 评论 -
聚簇索引和非聚簇索引的区别
聚簇索引和非聚簇索引(1)定义聚簇索引的顺序就是数据的物理存储顺序;非聚簇索引的解释是:索引顺序与数据物理排列顺序无关。(2)索引底层实现结构是B+树,二叉树的一种; 聚簇索引:索引的叶节点就是数据节点(索引值)。而非聚簇索引的叶节点仍然是索引节点(告诉你怎么在表中查找这一记录),只不过有一个指针指向对应的数据块。如下图(原图请见http://www.jb51.net/a原创 2017-05-18 07:30:45 · 3457 阅读 · 2 评论 -
JAVA中final关键字的使用,含义,final变量和final方法deng
(1)final关键字的含义final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。(2)final变量凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变原创 2017-05-17 22:10:39 · 1158 阅读 · 0 评论 -
二叉搜索树的判断 leetcode原题
二叉查找树(Binary Search Tree)(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树(这也是判断二叉搜索树的标准,即条件):(1) 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)它的左、右子树也分别为二叉排序树。leetcode题目:G原创 2017-05-17 16:56:19 · 1562 阅读 · 0 评论 -
LeetCode 重构二叉搜索数,即找出两个被交换的节点
原题:Two elements of a binary search tree (BST) are swapped by mistake.Recover the tree without changing its structure.Note:A solution using O(n) space is pretty straight forward. Could you de原创 2017-05-17 15:43:12 · 1934 阅读 · 0 评论
分享