- 博客(213)
- 收藏
- 关注
原创 # 什么是前端重构?
前端是做什么的说到前端,我们往往会随口蹦出一个后端,没错,如果单纯从计算机工程的角度来看待前端所做的工作,就是前端是后端的门面,用个形象的例子来比喻前后端,我们平常使用的手机是前端,而背后的手机系统是后端。而从我们用户使用的角度来看,前端负责与用户做交互,将用户的行为转化为计算机后台程序可以处理的行为。了解了这些,你可能就会明白,前端所做的本职工作就是程序与用户打交道的艺术,而如何做到更好更有...
2018-05-12 10:31:48 5520 1
原创 送给自己一首小诗
送给自己一首小诗如果你在面对别人对你的无端指责时,还能保持清醒的头脑;如果你在面对众人的怀疑时,还能体谅,并自信如常不予置评;如果你能等待而不是心存犹豫,或者,从不用谎言去应付谎言,也不必心生仇恨或用仇恨去反击仇恨;既不故作正经也不夸夸其谈,更不自作聪明; 如果你充满梦想,又不迷失自我;如果你有思想,又不止于思考;如果在成功之时,你不忘形于色,...
2018-05-12 10:31:01 1913 1
原创 Rhyme/剑指Offer 8 Java 算法 青蛙跳台阶 斐波那契数列
剑指Offer 8 Java 算法 青蛙跳台阶 斐波那契数列package offer8;/** * 一只青蛙一次可以跳上1级台阶,也可以跳上2级 * 求该青蛙跳上一个n级台阶总共有多少种跳法 * * 我们用f(n) 表示跳上n级台阶的可以有的跳法 * * 假设我们一开始跳得是1级台阶,那么还剩下f(n-1) * * 假设我们一开始跳得是2级台阶,那么还剩下f(n-2
2018-02-04 22:04:07 517
原创 Rhyme/JUC 线程按序打印ABCABCABC...
JUC 线程按序打印ABCABCABC…package thread.alternate;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 线程交替打印
2018-02-02 20:01:38 291
原创 Rhyme/Java多线程之生产者消费者问题(等待唤醒机制、虚假唤醒、锁机制)
Java多线程之生产者消费者问题(等待唤醒机制、虚假唤醒、锁机制)本篇博客由浅入深,先从最基础的生产者消费者问题讲起,然后依次深入普通的生产者消费者问题首先我们有一个店员类,模拟进货和卖货操作,店里的商品数量最多为10个 注意这里我们给进货和卖货方法都加了synchronized的关键字生产者线程,负责生产商品消费者线程,负责消费商品好,然后我们先看运
2018-02-02 17:17:57 402
原创 Rhyme/String字符串散列函数
String字符串散列函数 package com.maple.hash; /** * string hash function * * @author RhymeChiang * @date 2018/01/31 **/ public class StringHashFunction { /**
2018-01-31 11:57:52 406
原创 Rhyme/Java 8 四大核心函数式接口
Java 8 四大核心函数式接口测试代码package rhyme;import org.junit.Test;import java.util.ArrayList;import java.util.List;import java.util.function.Consumer;import java.util.function.Function;import java
2018-01-30 22:29:38 373
原创 Rhyme/阿里巴巴开发手册IDEA代码格式相关配置
阿里巴巴开发手册IDEA代码格式相关配置1、采用4个空格缩进IDEA设置tab为4个空格时,禁止勾选use tab character 2、IDEA的text file encoding 设置为UTF-8,文件换行符设置为Unix格式text file encoding 设置换行符设置3、单行字符不超过120,3.1、如果超过,换行时,第二行缩进4个空格,
2018-01-21 10:38:42 976
原创 Rhyme/剑指Offer04 由先序遍历和中序遍历构造二叉树Java版
剑指Offer04 由先序遍历和中序遍历构造二叉树Java版package offer4;/** * 剑指Offer第四题 * * 给出先序遍历和中序遍历, * 构建出这个二叉树 * * 假设输入的先序遍历和中序遍历中都没有重复的数字 * 例如 * 先序遍历{1,2,4,7,3,5,6,8} * 中序遍历{4,7,2,1,5,3,8,6} * * *
2018-01-19 21:37:10 418
原创 Rhyme/ AVL 平衡二叉数 插入平衡操作 Java版
AVL 平衡二叉数 插入平衡操作 Java版package com.maple.avl.tree;/** * 实现一棵AVL二叉平衡树的插入平衡操作 * * 树的深度为logN * * @author RhymeChiang * @date 2018/01/18 **/public class AVLTreeT extends Comparablesuper T>>
2018-01-18 09:46:28 277
原创 Rhyme/查找树ADT-二叉查找树的简单模拟Java版
查找树ADT-二叉查找树的简单模拟Java版package my.binary.search.tree;/** * 查找树 ADT 二叉查找树的实现 * 假设元素类型为Integer * * @author RhymeChiang * @date 2018/01/17 **/public class BinarySearchTreeT extends Comparablesu
2018-01-17 22:16:56 342
原创 Rhyme/剑指Offer06 Java 旋转数组找最小值
剑指Offer06 Java 旋转数组找最小值package offer6;/** * 把一个数组最开始的若干个元素搬到数组的末尾, * 我们称之为数组的旋转。 * 输入一个非递减排序的数组的一个旋转, * 输出旋转数组的最小元素。 * 例如:数组{3,4,5,1,2}是{1,2,3,4,5}的一个旋转 * 该数组的最小值为1 * 求出旋转数组中的最小值 * * 思路:
2018-01-15 13:55:04 322
原创 Rhyme/剑指Offer Java05 拓展 用两个队列实现一个栈的push和pop操作
剑指Offer Java05 拓展 用两个队列实现一个栈的push和pop操作package offer5.extend;import offer5.Offer5;import java.util.LinkedList;import java.util.Queue;/** * 用两个队列实现一个栈的push和pop操作 * * 思路: * * 有两个队列A、B
2018-01-15 12:52:03 457
原创 Rhyme/剑指Offer Java 05 用两个栈实现一个队列Java版
剑指Offer Java 05 用两个栈实现一个队列Java版package offer5;import java.util.Stack;/** * 用两个栈来实现一个队列, * 完成队列的push和pop操作 * * 思路: * * 运用栈的特性后进先出 * 那么如果我先将元素放入一个栈A中 * 那么将栈A中的元素pop并push进栈B中 * 那么
2018-01-15 11:55:16 277
原创 Rhyme/五分钟源码Java【Serializable接口IV】
五分钟源码Java【Serializable接口I】五分钟源码Java【Serializable接口II】五分钟源码Java【Serializable接口III】五分钟源码Java【Serializable接口IV】 * * Serializable classes that need to designate an alternative object to be
2018-01-15 11:18:25 310
原创 Rhyme/Java 集合 自定义ArrayList
Java 集合 自定义ArrayListpackage array;import java.util.Iterator;import java.util.NoSuchElementException;import java.util.Spliterator;import java.util.function.Consumer;/** * 自定义ArrayList * * @
2018-01-14 16:10:54 357
原创 Rhyme/Java Iterable接口源码解析
Java Iterable接口源码解析package java.lang;import java.util.Iterator;import java.util.Objects;import java.util.Spliterator;import java.util.Spliterators;import java.util.function.Consumer;/** *
2018-01-14 15:35:43 339
原创 Rhyme/剑指Offer Java 02
package offer2;/** * 请实现一个函数,将一个字符串中的空格替换成"%20". * 例如,当字符串为 * We Are Happy. * 则经过替换之后的字符串为 * We%20Are%20Happy. * * 思路: * 统计空格的个数,从后往前遍历 * 例如: * * We_Are_Happy * We__Are__Happy * * 可
2018-01-14 11:37:30 255
原创 Rhyme/五分钟源码Java【Serializable接口III】
五分钟源码Java【Serializable接口I】五分钟源码Java【Serializable接口II】五分钟源码Java【Serializable接口III】 Classes that require special handling during the serialization and * deserialization process must implemen
2018-01-14 10:09:09 312
原创 Rhyme/剑指Offer Java 01
剑指Offer Java 01package offer1;/** * 在一个二维数组中, * 每一行从左到右递增, * 每一列从上到下递增, * 试求数组中是否存在数x * * @author RhymeChiang * @date 2018/01/13 **/public class Offer01 { /** * 判断数组中是否存在数target
2018-01-13 23:34:45 285
原创 Rhyme/Java泛型II
Java泛型II泛型父类总结: 1、在哪个类中,这个类中的泛型属性和方法就由这个类来确定 2、重写方法由父类而定 3、子类泛型泛型要大于等于父类 4、子类擦除,父类泛型产生错误,子类泛型要大于等于父类,所谓的大于可以理解为泛型个数多于父类 5、泛型接口和泛型父类同理泛型没有多态以下代码是错误的 Aa = new A();通配符?1、? 可
2018-01-13 15:45:43 257
原创 Rhyme/Java泛型I 泛型类 泛型接口 泛型方法
Java泛型 I 泛型类 泛型接口 泛型方法 Q1、为什么要使用泛型,使用泛型的好处在哪儿?答: 1、更安全 2、更方便(隐式的强制转化) Q2、泛型类 1、泛型不能使用在静态属性上 2、泛型不能使用在静态的非泛型方法的参数上因为泛型是在使用时确定类型,而静态属性需要在类加载的时候确定类型 Q3 泛型接口 1、泛型只能用
2018-01-13 14:57:07 334
原创 Rhyme/五分钟源码Java【Serializable接口II】
五分钟源码Java【Serializable接口II】五分钟源码Java【Serializable接口I】 * * During deserialization, the fields of non-serializable classes will * be initialized using the public or protected no-arg constr
2018-01-13 13:35:19 297
原创 Rhyme/五分钟源码Java【Serializable接口I】
五分钟源码Java【Serializable接口I】public interface Serializable {} /** * Serializability of a class is enabled by the class implementing the * java.io.Serializable interface. Classes that do no
2018-01-12 21:46:59 384
原创 Rhyme/IDEA Spring Boot 项目 application.yml 文件不加载的问题
IDEA Spring Boot 项目 application.yml 文件不加载的问题确保JxcApplication在Java的一级子目录下,如图,如果你把这个类和其他包一样放在二级目录中,就会出现配置文件没有加载的情况
2017-12-31 15:08:11 2013
原创 Rhyme/冥运算(分治策略)Java版
冥运算(分治策略)Java版算法原理举个例子我们求 X62=(X31)2{X^{62}} =(X^{31})^2 X31=(X15)2X{X^{31}} =(X^{15})^2X X15=(X7)2X{X^{15}} =(X^{7})^2X X7=(X3)2X{X^{7}} =(X^{3})^2X
2017-12-24 09:04:32 777
原创 Rhyme/欧几里得算法 计算最大公因数 Java版
欧几里得算法 计算最大公因数 Java版时间复杂度分析根据定理 如果M>N,则M mod N < M/2,所以迭代次数为2logN所以 T(N) = O(logN)
2017-12-24 09:00:57 471
原创 Rhyme/二分查找(binary search)Java版
二分查找(binary search)时间复杂度分析中间while循环的次数为log(N-1)+2T(N)=O(logN)二分查找的拓展分析我们要知道二分查找除了在刚开始的查找速度中不赖,在执行插入操作的时候所需时间均为O(N),很稳定,所以,可以这么说,只需要排序一次,之后的访问便会很快速。
2017-12-24 08:54:27 318
原创 Rhyme/最大子序列和(分治策略)Java版
最大子序列和(分支策略)Java版算法思想:我们采用分支策略,不断的将问题二分,这个时候最大和子序列分别可能存在三个地方,一个是左边的最大和序列,一个是右边的最大和子序列,还有一个是中间部分的最大和子序列。算法时间复杂度分析T(N) = 2T(N/2)+N使用主分析法可得T(N) = O(nlogn)
2017-12-24 08:32:15 395
原创 Rhyme/Hibernate load()与get()的区别
Hibernate load()与get()的区别 1、使用get获取对象时,会立马发出sql语句,并把相对的数据封装到对象当中 2、使用load获取对象时,会采用懒加载的方式,并且返回的是代理对象,等到真正用到对象内容的时候才会发出sql语句,所以在在session关闭之后获取对象内容就会导致错误所以这也是为什么get会报错而load方法不报错
2017-12-22 23:59:39 269
原创 Rhyme/hibernate 对象的三种状态
hibernate 对象的三种状态 1、首先我new出一个对象时,其他操作都不执行时,此时对象的状态为transient游离态 2、当我执行session.save()或update()方法时,会为该对象生成一个指定的id,保存在session里头,session内部使用了一个Map结构的数据结构来保存对象信息,Map的key为这个创建出来的id号,Map的value为new出来的对象
2017-12-22 19:54:10 249
原创 Rhyme/Hibernate JTA与thread上下文的区别
Hibernate JTA与thread上下文的区别JTA(Java Transaction API)简介JTA主要应用于分布式数据库的场景,如下图,当我一个数据的事物涉及的不仅仅一个数据库的时候,这个时候就需要用到JTAJTA与thread的区别thread是根据单个数据库的connection来界定事务 jta 根据分布式来界定事务 jta需要ApplicationServer服务器的分布式
2017-12-22 18:00:50 376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人