自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 资源 (2)
  • 收藏
  • 关注

原创 菜鸡学前端:对多行文本的“显示更多”和“收起”的处理

背景:之前工程中的后端数据中对一段文本数据进行截断,只显示一部分,后面发现截断后的说明描述上和理解上有一些问题,所以打算在后端不做截断处理,在前端做处理,如果文本显示超过2行,则对后面的内容进行隐藏,以及出现“显示更多“和“收起”的处理因为本人是个前端菜鸡,所以记录一下处理过程HTML:<span #descSpan id="descSpan" class="description-span" [class.more]="isMore">{{ description }}</

2020-11-24 16:43:23 11

原创 一次关于数据缓存的优化和记录

问题背景描述:由于国庆期间公司停电维护,国庆后第一天出现服务中断的问题问题排查与分析:通过公司luban的监控日志发现,找到一台mysql数据库服务器,8点多开始出现CPU占有率出现持续升高,9点左右CPU占有率将近100%,并且一直居高不下,数据服务异常,后端服务出现中断通过APM查看API调用记录发现,在对应的时间段内有大量请求响应超过10秒,正常情况下这些API的请求响应时间应该都是毫秒级的;分析发现其中获取xxx列表的接口/xxx/list(并发量3800,平时并发量600左右)和/xx

2020-11-18 21:39:01 14 1

原创 angular非表单中input输入框的url校验

当非表单的dialog输入框中指定输入url,并需要进行提交时对输入的内容进行url校验,网上有很多的正则表达式对url匹配校验,如果当前对于url没有指定的格式,正则表达式的范式很有可能出现场景覆盖不完全的问题。可以自己手动增加对输入框的自定义校验,校验代码可以如下:checkUrlInput(url: string): boolean { try { new URL(url); return true; } catch(err

2020-11-12 09:24:16 127 2

原创 Java中的装箱和拆箱

前言自动装箱和拆箱问题是java面试中基础题中出现频率很高,好记性不如烂笔头,把之前遇到的相关问题和概念做一下记录包装类Java中包含8种基本数据类型,并且在java5之后,为每种基本数据类型都提供了对应的包装器类型。基本数据类型包装类boolBooleanbyteBooleancharCharactershortShortintIntegrefloatFloatdoubleDoublelongLong思考:1、为

2020-05-20 10:11:18 188

原创 Java的四种引用:强引用、软应用、弱引用、虚引用

前戏在JDK远古时期的版本中,java对象的似乎就只有两种状态,即被引用和不被引用。也就是说程序中,如果一个对象不被任何其他对象或变量引用,那么JVM就判定这个对象无法被使用,JVM直接对对象内存进行回收。但是,这两种极端状态并不能覆盖所有的对象,随着程序的运行,程序对某个对象的引用强度可能在不断地变化,比如一个对象可能会出现以下情况,一个对象表面表面上看起来处于不被引用的状态,它占据一定的内存空间,但是JVM马上对它进行回收又不太划算,或许在后面的场景下还可以用得上。对于这样的可有可无的对象,

2020-05-14 21:46:12 105

原创 Leetcode-202:快乐数

题目描述编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。思路分析根据题目意思,如果一个数按其规则变化最终可以为1则是快乐数,否则按规则变化会陷入无限循环。所以我们需要判断在按规则变化数字时:数字是否变为1。如果是,返回tru..

2020-05-08 20:50:08 110

原创 找出数组中每个数的右边第一个比它大的数

问题描述:给出一组数,找出数组中每个数的右边第一个比它大的数问题分析:利用单调栈,从左至右依次压入数据的索引(若直接压数,则还需要一个数组保存栈中元素所对应的数组位置,如果当前元素小于等于栈顶的索引所对应的数组的值,入栈当前索引,否则将栈顶索引出栈,并在栈顶索引所对应的res数组中记录下当前的值。到最后再检查栈中剩余元素,代表剩余元素右边没有比它大的值,在res对应位置赋值为-1。代码:...

2018-09-19 09:32:30 4012

原创 2018-8-30华为机试第三题

一个很明显的递归问题package cn.csu.ksh;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Main2 { public static void main(String[] args) { Scanner sc = new ...

2018-08-30 15:58:00 870

原创 2018-8-30华为机试题第1题

问题描述:字符串之数字子串求和思路:要求时间复杂度O(N),空间O(1) 1.不管遇到什么先-'0' =&gt;cur 2.若cur不是数字-&gt;即不在0~9之间...需要先判断posi是不是false... 因为没第一次遇到'-'则会把posi设置为false,第二次先去看看之前posi, 如果是'-',那么就约掉这个'-',把posi设置为true...

2018-08-30 15:48:36 1369 1

原创 sysnchronized的实现原理与应用

在并发编程中,synchronized一直是被使用非常频繁的,很多人会把它称为重量级锁,但是,JavaSE1.6对它有一个重大优化,在1.6中为了减少获得锁和释放锁带来的性能消耗而引入了偏向锁和轻量级锁。我们知道Java中的每一个对象都可以作为锁,具体表现为三种形式:1.对于普通同步方法,锁是当前实例对象2.对于静态同步方法,锁是当前类的Class对象3.对于同步代码块,锁是syn...

2018-08-29 11:39:25 828 1

原创 Java并发中——阻塞队列

阻塞队列的使用场景在并发的情况下,生产者消费者模式需要用到队列,生产者线程生产数据,放进队列,然后消费从队列中获取数据,这个在单线程的情况下没有问题。而在使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。在高并发的情况下,可能出现消费者消费速度远大于生产者生产速度,消费...

2018-08-15 16:51:05 246

原创 Java线程池相关参数以及拒绝策略

为什么要使用线程池在JavaSE中,要实现多线程的方式有多种,例如继承Thread、实现Runnable接口或者Callable接口。但是我们应该要知道,创建一个线程的开销是很大的,因为它总涉及与操作系统交互,我们知道,线程总共有三个过程,分别是创建、使用、销毁。但是在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在实际处理实际的用户请求的时间和资源要多的多。除...

2018-08-13 15:01:26 774

原创 剑指Offer学习】【面试题18 :二叉树的镜像】

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...

2018-08-08 14:41:39 92

原创 【剑指Offer学习】【面试题12 :数值的整数次方】

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。题目分析很多人看到这个题基本上心里马上就有一个大致的思路了,就是用一个循环来做base的exponent次方,于是代码很快就能出来public double solution(double base,int exponent){ double result...

2018-08-07 11:23:33 114

原创 【剑指Offer学习】【面试题10 :青蛙跳台的变种问题】

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目分析这次的场景和之前青蛙跳台的问题不一样,前一次的场景是青蛙一次可以调1个台阶,也可以跳2个台阶。现在的场景是:青蛙也可以跳上n级。所以情况又发生了变化。现在我们用数学归纳法来分析一下这个变种问题:首先,当n=1时,只有一种跳法  f(1)=1。其次,当...

2018-08-05 19:14:50 314

原创 【剑指Offer学习】【面试题9 :青蛙跳台问题】

问题描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。问题分析当n=1,有一种跳法当n=2,一次跳一个跳两次,一次跳两个跳一次,共两种跳法当n&gt;=2时,n个台阶,设有F(n)种跳法      (1)若第一次选择跳1个台阶,那么剩下的n-1个台阶有F(n-1)种跳法      (2)若第一次选中...

2018-08-04 20:18:43 453

原创 【剑指Offer学习】【面试题6 :重建二叉树】

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路二叉树的前序遍历是从根节点开始的,依次前序遍历左子树,然后再前序遍历右子树。所以在前序遍历中,第一个出现的必定是跟节点。二叉树的中序...

2018-08-03 14:53:51 122

原创 【剑指Offer学习】【二维数组中的查找】

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束  如果该数字大于要查找的数字,剔除这个数字所在的列,如果该数字小于要查找的数字,剔除这个数字所在的行。 也就是说如...

2018-08-01 16:00:54 123

原创 初链—区块链混合共识的领航者

1.蓬勃发展的区块链互联网的高度普及使人类从工业社会迈入信息社会,而区块链技术的出现,又是对互联网技术更上一层的技术革新。区块链思想最早出现在大名鼎鼎的比特币开源项目中。比特币项目在诞生和发展过程中,借鉴了来自数字货币、密码学、博弈论、分布式系统、控制论等多个领域的技术成果,作为其核心支撑的区块链技术更是令人数目的创新成果。区块链技术的诞生为社会中实体货币虚拟化提供了可能,同时货币自身的价值依...

2018-07-29 15:36:58 659

原创 初链:高性能去中心化公开账本

1.绪论2017-2018年,互联网界最火热的话题之一就是区块链。其去中心化、分布式以及防篡改一系列特性使得人们对于这个可能对互联网发展产生重大影响的技术关注颇多。从比特币的区块链最初版本,到以太坊为主流的进阶版本,再到超级账本项目的版本,区块链技术一直在飞速的发展,并且不断落地到各个领域。本文我将简单介绍区块链中的相关概念以及相关技术理念。2.什么是区块链所谓区块链,字面上的理解就是...

2018-07-27 22:41:47 1078

原创 DEL:区块链4.0时代--让技术更接近价值

1.蓬勃发展的区块链技术的终极魅力,是高度普及之时,价值的极致绽放 互联网的高度普及使人类从工业社会迈入信息社会,而区块链技术的出现,又是对互联网技术更上一层的技术革新。区块链思想最早出现在大名鼎鼎的比特币开源项目中。比特币项目在诞生和发展过程中,借鉴了来自数字货币、密码学、博弈论、分布式系统、控制论等多个领域的技术成果,作为其核心支撑的区块链技术更是令人数目的创新成果。区块链技术的诞生为...

2018-07-23 09:53:20 2083

原创 PBFT算法

引言———分布式系统一致性问题区块链系统,首先是一个分布式系统。传统单节点结构演变到分布式系统,碰到的首要问题就是一致性的保障。很显然,如果分布式集群无法保证处理结果一直的话,那任何建立于其上的业务系统都无法正常工作。 一致性问题是分布式领域最为基础也是最重要的问题。如果分布式系统能实现“一致”,对外就可以呈现一个完美的、可扩展的“虚拟节点”,相对于物理节点具有更优越性能和稳定性。这也是分布式...

2018-07-23 09:51:44 4147

原创 谈谈spring中的IOC

学习过Spring框架的人一定都会学习Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天谈谈我对Spring Ioc的理解。1.什么是IOCIoc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交...

2018-07-19 10:41:56 167

原创 Java抽象类与接口

引言在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。首先来说一下抽象类和接口的相关概念,然后再对两者进行比较。抽象类在描述抽象类之前,我们先来说说抽象方法,Java中的抽象方法是指使用abstract关键字修饰的方法,并且抽象方法只有方法声明,没有实现细节。可以看看抽象方法的语法:abstract void method();那么如果一个...

2018-07-15 17:41:56 212

原创 进程和线程的主要区别(总结)

根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调...

2018-06-13 10:11:52 198771 15

原创 二叉搜索树的后序遍历序列

题目如果输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果,如果是则返回true,如果不是则返回false。假设输入的数组的任意两个数字都互不相同。分析:在后序遍历得到的序列中,最后一个数字是树的根节点的值,数组中前面的数字可以分为两个部分:第一部分为左子树的节点的值,他们都比根节点的值要小;第二部分是右子树节点的值,他们都比根节点的值大。我们在解决这个问题的时候需要用同样的方法来确定...

2018-05-30 11:20:42 120

原创 Java面向对象的三大特征以及理解

Java面向对象的三大特征为:封装、继承和多态,本文说说我对三大特性的理解。1.封装Java中的封装是指一个类把自己内部的实现细节进行隐藏,只暴露对外的接口(setter和getter方法)。封装又分为属性的封装和方法的封装。把属性定义为私有的,它们通过setter和getter方法来对属性的值进行设定和获取。下面我举一个简单的封装例子public class Person { priva...

2018-05-26 16:01:36 10854 1

原创 Java中的反射

在Java框架的学习中,我们会接触到反射,例如接触非常多的spring框架,它的IOC原理就是运用了反射的机制以及动态代理的思想,使得对象的创建并不需要自己完成,而是交给spring容器来完成。还有JDBC中加载数据库的驱动时,也必然使用到反射等等。可以说,反射机制是我们在框架设计和学习中非常重要的一个机制和思想。什么是反射反射机制就是程序在运行时,对于任意一个类,都能知道这个类的所有属性和方法;...

2018-05-24 10:14:04 106

原创 String StringBuffer StringBuilder的区别

String StringBuffer StringBuilder三者是Java中对于字符串处理用得最多的三个类,本文来说说三者之间的关系与区别1.三个类中的关系在查看JDK源码之前,大家可能根据三者的名称,都认为StringBuffer和StringBuilder都继承自String这个类,即认为String类是其他两个类的超类。但是我们知道String类是使用final关键字修饰的(Java中...

2018-05-17 16:15:45 110

原创 Java中hashcode()和equals()方法

前言在说hashcode()和equals()方法之前,我想先来说说Java中==与equals()方法的问题,==可用于比较基本数据类型(比较的是它们的数值是否相等),也可以用于比较对象在内存中的地址是否相等。Java当中所有的类都继承与Object这个基类的,在Object中的基类中定义了一个equals()方法,这个方法的初始行为是比较对象的内存地址的(即判断两个对象是否为同一个对象),但是...

2018-05-15 15:24:11 93

原创 Java中的序列化和反序列化

摘要在Java中,当你创建对象时,只要你需要,对象就会一直存在。但是当程序运行结束时,对象就会随之消失。在有些情况下,我们希望对象能够在程序不运行的情况下仍然存在并保存其信息。这样,在下次运行程序时,该对象可以被重建并且拥有的信息与程序上次运行时所拥有的信息一致。当然,我们也可以通过把信息写入文件或者数据库来达到效果,但是在使万物都成为对象的精神当中,如果能够将一个对象处理成为“持久性”的,并为我...

2018-05-14 21:09:00 70

原创 Java程序初始化的顺序

Java程序中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,当所有成员完成初始化后,才会调用对象所在类的构造函数创建对象。Java程序的初始化一般遵循3个原则(优先级依次递减):(1)静态对象(变量)优于非静态对象(变量)的初始化,其中,静态对象(变量)只初始化一次,非静态对象(变量)可能会初始化多次。(2)父类优先于子类进行初始化。(3)按照成员变量的定义顺序进行初始化。即使变量定...

2018-05-14 10:00:50 66

原创 关于Java数据基本数据类型转换的一些问题

本文总结一下Java基本数据类型在使用过程中需要注意的一些问题1.对于小于int型的数据类型(byte char short)进行运算时,首先会把这些类型的变量值强制转为int型,对int类型的值进行运算,最后得到的值也是int类型的。因此如果把两个short类型的值进行运算,最后得到的结果也是int类型的。如果要得到short类型的结果,就必须显示地把运算结果转为short类型。例入:short...

2018-05-13 16:29:00 192

原创 java数据类型及其包装类中的一些事

摘要在Java基础中,数据类型及其对应的包装类是我们必学的内容,但是大部分学习者对其中的一些地方还是处在模棱两可的理解,本文我将针对这部分内容需要注意的地方做一些总结相关问题1.Java中的基本数据类型占几个字节在Java中,byte,boolean占1个字节,对应的包装类型分别为Byte Booleanchar short占2个字节,对应的包装类型分别为Character Shortint fl...

2018-05-13 10:07:01 266

原创 String类型需要注意的几个问题

String类型属于不可变类型(不可变类型是指该类型创建了一个实例后,就不允许修改该实例的值),在学习和使用的时候需要注意一下几个问题1.new String("abc");执行这个操作后,整个程序中有几个"abc"对象?解析:这个操作创建了1个或者2个对象,如果常量池中原来有"abc"(也就是说在执行此操作之前已经创建了一个字符串"abc",已经把它存到常量池中,再次创建会自动从常量池中取出,而...

2018-05-09 20:31:00 178

原创 八大排序算法——快速排序

 什么是快速排序其实快速排序是对冒泡排序的一种改进,它的基本思想就是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据都要小,再按这种方式对这两部分的数据分别进行快速排序,整个排序过程可以递归进行,示的整个数据变成有序序列。快速排序的原理:排序算法的思想非常简单,在待排序的数列中,我们首先要找一个数字作为基准数,为了方便,我们把大于基准数的元素移动到左边,把大...

2018-05-08 20:41:39 680

原创 八大排序算法——冒泡排序

摘要冒泡排序是排序算法中比较简单的一个排序。它重复地走访要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并一直重复这样的走访操作,知道没有要交换的数据元素为止。冒泡排序的原理首先我们肯定要有一个数组,里面存放着待排序的数据元素,我们如果需要把比较大的元素排在前面,把小的元素排在后面,那么需要从尾到头开始下面的比较操作。1.从尾部开始比较相邻的两个元素,如果尾部的元素比前面的大,就交换两...

2018-05-07 15:11:32 724

原创 区块链学习——比特币技术论文介绍

摘要在我的上篇关于区块链的博客中,简单介绍了区块链的分类,链接:区块链学习——区块链分类,我们对区块链整体的概念与术语有了大致的了解。大家都知道,区块链技术的一系列技术与发展都离不开它的根源,那就是比特币,本文以及后续的几篇文章,我将开始介绍比特币的相关知识。比特币技术论文介绍比特币技术论文就是一个说明书,当然了,这份生活明书有正式的名字:《Bitcoin:A Peer-to-Peer Elect...

2018-05-05 10:44:42 894

原创 在浏览器中输入网址后回车发生了哪些事情

最近在和许多同学交流面经的时候,发现有一个问题:无论你是前端开发,还是后端开发,被问到的概率很高,在此,我想把这个问题记录一下总体来说,在浏览器的地址栏中输入网址后,发生了如下的事情:DNS解析TCP连接发送HTTP请求服务器处理请求并返回HTTP报文浏览器解析渲染页面连接结束 下面还是具体说说每一步的大致原理1.DNS解析DNS解析的过程就是寻找哪台机器上有你需要资源的过程。当我们在浏览器中输入...

2018-04-23 11:58:25 3860 1

原创 区块链学习——区块链分类

摘要在我的区块链上一篇博文中,简单介绍了区块链的架构,链接:区块链学习——区块链架构。那么本文我将继续简单介绍一下区块链的分类。根据网络范围根据网络范围,区块链可以分为公有链、私有链、联盟链。1.公有链所谓公有就是完全对外开放,任何人都可以任意使用,没有权限的限定,也没有身份认证之类,不但可以任意参与使用,而且发生的所有数据都可以任意查看,完全公开透明。比特币就是一个公有链网络系统,大家在使用比特...

2018-04-21 16:08:46 3564

JAVA课设任务

用图形用户界面实现。 2、 能实现编辑、保存、另存为、查找替换等功能。 3、 提示:使用文件输入输出流。

2012-12-25

Java高级编程教案

Java高级编程教案,适合Java入门的学生或者上Java课的老师使用

2019-01-21

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除