- 博客(83)
- 资源 (12)
- 问答 (3)
- 收藏
- 关注

原创 Zookeeper核心知识及分布式一致性算法
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。而这些功能都是基于Zookeeper能在分布式的集群中保证数据一致性的,这也是Zookeeper最核心的能力。Zookeeper集群对数据的一致性的保证和Zookeeper集群高可用这两个核心功能归纳为两个知识点:1.ZAB( ZooKeeper Atomic Broadcast , ZooKeeper 原子消息广播协议)2
2020-09-24 09:52:44
1766

原创 多线程-实战优化
一. 回顾关于线程相关的一些基础知识,本篇不再过多阐述,首先我们通过几个简单的问题,复习一下线程相关的一些基础知识。1.进程和线程分别是什么?进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。2.进程、线程的例子?进程:运行的QQ、迅雷、Word等应用进程,进程是系统级别的线程:QQ多个聊天窗口、迅雷下载多个文件等3.线程的状态(生命周期)线程的状态枚举:java.lang.T
2020-05-26 13:00:27
482
原创 JVM核心知识(二)
JVM核心知识(一)JVM内存模型Java虚拟机规范试图定义一种java内存模型,来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。主内存和工作内存Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中变量存储到内存和从内存中取出变量这样的底层细节。此处的变量和Java编程中所说的变量有所区别,它包括实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,不存在并发竞争问题,为了获得好的
2021-03-27 16:39:26
407
原创 插入排序-希尔排序
希尔排序是插入排序的一种,有关插入排序可以移步:直接插入排序。希尔排序是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。排序比较值相同时,前后位置不发生改变,则为稳定排序算法,反之为非稳定排序算法。设计思想希尔排序又称为缩小增量排序,基本思想是分组的直接插入排序。由直接插入排序算法分析可知,若数据序列越接近有序,则时间效率越高;再者,当n(待排序长度)较小时,时间效率也高。希尔排序正是基于这两点对直接插入排序算法进行的优化:将一个数据序列分为若干组,每组由若干相隔一段距离(
2020-09-26 22:32:33
462
原创 Elasticsearch 启动报错常见坑及解决方案
1、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]提示文件描述符数量太少,修改/etc/security/limits.conf文件,添加* hard nofile 65536* soft nofile 655362、max virtual memory areas vm.max
2020-09-23 10:20:10
2655
原创 记一次策略模式的使用
每次说起设计模式脑子里总是想起大学里学的23中设计模式。23中设计模式,能记住的屈指可数,在工作中用到的更是少之又少。当然,设计模式听着总是感觉很高大上,自己那点业务需求有点简单的if-else,三下五除二就打完收工了,如果绞尽脑汁弄了设计模式,代码量倍增,看不到到底好在哪里,反而增加了工作量。这次就用一个需求说一下,策略模式的使用。首先,还是老生常谈,了解一下策略模式的定义。在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。一个类的行为或其算法可以在运行时更
2020-09-19 22:20:05
350
原创 Docker Search 异常:Error response from daemon: Get https://index.docker.io/v1/search?xxx
docker search tomcatError response from daemon: Get https://index.docker.io/v1/search?q=tomcat&n=25: dial tcp: lookup index.docker.io: no such host执行docker search xxx出现Error response from daemo...
2019-11-01 11:00:32
53475
19
原创 Docker常用命令
1.帮助命令docker version 查看docker版本信息docker info 查看docker详细信息docker --help 查看docker所有命令2.镜像命令docker images 列出本地镜像 -a :列出本地的所有镜像,含中间影响层 -q :只列出镜像的ID --digests:显示镜像的摘要信息 --no-trunc:显示完整的镜像信息 doc...
2019-10-24 21:41:09
244
原创 Docker的安装
Docker架构在安装Docker之前,先来了解一下Docker的组成架构,了解Docker中常见名词概念。Image镜像;用于创建容器的只读模板Container容器;容器是独立运行的一个或一组应用,容器是镜像创建的运行实例Registry仓库;用来保存镜像,如DockerHub,类似GitHubClient客户端;Docker客户端通过命令行或其他...
2019-10-14 09:25:34
171
原创 MyBatis使用技巧-根据传入字段排序
mybatis排序时使用order by 动态参数时需要注意,用$而不是##{} ,会对自动传入的数据加一个双引号,导致排序失败,如 order by #{age},解析结果 order by "age"${},不会对传入值添加引号,但是可能会发生SQL注入,如 order by ${age},解析结果 order by age对比如上,小伙伴自行斟酌,也避免少走弯路。...
2019-09-30 11:09:17
4049
1
原创 Docker的简介
Docker出现的原因一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。在开发过程中,经常会出现在我电脑上可以正常运行,同样的代码在同时电脑上、或者Linux环境下就各种问题、Bug。Docker之所以发展如此迅速,也是因为它对此给...
2019-09-22 18:17:59
252
原创 你真的了解验证码吗?
你真的了解验证码吗?在登录某网站、App、注册、提交表单时,绝大多数情况下,都会有验证码的功能。用户只有在验证码输入正确的情况下才可进行接下来的操作。验证码的形式也多种多样,有图片、语音、短信等等。相信大多数人都体验过12306的“变态”验证码,假设小李要买中秋节回家的火车票,那么在确认提交时,需要选择正确的验证码。小李在奔溃的边缘挣扎!每个人都讨厌 CAPTCHA——这些恼人的图片中...
2019-07-14 19:28:46
315
原创 对象克隆技术
在Java中支持对象的克隆操作,直接使用Object类中的clone()方法即可,方法定义如下:protected Object clone() throws CloneNotSupportedException
2018-06-26 23:36:50
333
原创 实现一个简单的AsyncTask
如果你已经看过了上一篇博客:Android异步任务–AsyncTask那么你对AsyncTask的本质有了了解。它是对线程池加上Handler的封装,减少了开发者处理问题的复杂度,提高了开发效率。对Handler不是很了解的同学可以看一下:Android消息机制–Handler下面我们就来简单的实现一个AsyncTask。类名为SimpleAsyncTask。与AsyncTask类似,...
2018-03-25 16:39:05
373
原创 Android异步任务–AsyncTask
AsyncTask介绍如果通过Thread执行耗时操作,那么在操作完成之后,我们可能需要更新UI,这时通常的做法是通过Handler投递一个消息给UI线程,然后更新UI,我们在Android消息机制–Handler解析也讲到过。这种方式对于整个过程的控制比较精细,但是也是有缺点的,例如,代码相对臃肿,在多个任务同时执行时,不易对线程进行精确的控制。 继续阅读...
2018-03-25 16:37:26
222
原创 Android消息机制–Handler
每个Android应用在被启动时都会创建一个线程,这个线程被称为主线程或者UI线程,Android应用的所有操作默认都会运行在这个线程中。但是为了保证UI的流畅性,通常都会将耗时的操作放到子线程中,例如IO操作、网络请求等。而在Android 3.0以及以后的版本中,Android甚至禁止在主线程中进行网络请求,否则会抛出异常,可见在UI线程中执行耗时操作是非常不推荐的行为。继续阅读...
2018-03-25 16:34:36
237
原创 排序——直接插入排序
设计思想直接插入排序是将线性序列中的元素分为有序部分和待排序部分,每次第一个取待排序数进入排序部分查找到相应位置插入,使有序部分依旧有序,直到整个序列有序。 算法步骤:将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等
2017-12-26 22:27:30
4053
原创 Math类+Random类+NumberFormat类
Math类Math类是数学操作类,提供了一系列的数学操作方法,包括求绝对值、三角函数等,在Math类中提供的一切方法都是静态方法,所以直接由类名称调用即可,下面简单介绍Math类的基本操作。public class MathDemo01{ public static void main(String[] args){ System.out.println("求平方根:"+M
2017-12-25 20:49:58
310
原创 日期操作类
介绍Java中常用的日期类型及对日期的相对操作。Date类Date类是一个较为简单的操作类,在使用中直接使用java.util.Date类的构造方法并进行输出就可以得到一个完证的日期,构造方法:public Date()【得到系统当前时间】import java.util.Date;public class DateDemo01{ public static void main(Stri
2017-12-24 21:17:46
487
原创 System类
认识System类System类是一些与系统相关属性和方法的集合,而且在System类中所有的属性都是静态的,直接使用System类就可以调用这些属性和方法。 方法定义 类型 描述 public static void exit(int status) 普通 系统退出,如果status为非0表示退出 public static void gc() 普通 运行垃圾回收
2017-12-23 15:51:48
884
原创 Runtime类
认识Runtime类在Java中Runtime类表示运行时操作类,是一个封装定义JVM进程的类,,每一个JVM都对应着一个Runtime类的实例,此实例由JVM运行时为其实例化。所以在JDK文档中读者不会发现任何有关Runtime类中构造方法的定义,这是因为Runtime类本身的构造方法是私有化的(单例设计),如果取得一个Runtime实例,只能通过以下方式:Runtime run = Runtim
2017-09-23 16:34:24
372
原创 StringBuffer类
/*说来惭愧,距离上次更博已经过去好长时间了,因为项目,因为实训。话不多说,我又回来啦,哈哈,感觉真好!*/认识StringBuffer类前面说过String类的一条特性是,String的内容一旦声明则不可更改, 如果改变,则改变的是String的引用地址,那么如果现在的情况是一个字符串经常需要改变,此时就必须使用StringBuffer类。String类中可以通过“+”进行字符串的连接,但在St
2017-09-19 09:41:48
458
转载 Android Gradle Build Error:Some file crunching failed, see logs for details解决办法
Some file crunching failed, see logs for details解决办法在学习过程中遇到了这个问题,百思不得其解,苦恼! 看了半天也不知道什么错误,后来百度得到了解决,为了让小伙伴们不在进坑,分享一下解决方法–转载自原址在主工程文件夹下的build点gradle文件里,加两句:aaptOptions点cruncherEnabled
2017-07-18 19:14:02
418
原创 Hexo+GitHub搭建个人站点(新!)
皮看着身边的大佬们都有了自己的博客,很是羡慕。其实在哪个平台写博客都一样,但是自己搭建的站点自由度更高,说出去装的一手好(bi)-_-我搭建好的成品:aotu的博客========================================= 自己也百度了几种方式,不外乎用云服务器和有Github两种(鄙人知识有限)。两种方式没有好坏,看自己适合哪种了。 1. 腾讯云服务器+WordPres
2017-05-03 17:57:53
463
原创 Android---开篇
开篇自从建好了Android这个分类,一直没有写过一篇博文。 茫茫的Android海,走不完的坑。自学了这么久,是时候整理整理自己的学习体会了。第一弹本身也是个不断爬坑的Android大学狗,写写博文,说说自己的坑,让童鞋们少进坑,再者好好梳理巩固基础知识。就酱,这就是初衷吧。第二弹我准备先写写Android的基础知识,先好好梳理Android的四大组件等基础,然后结合撸过的小项目进一步加深学习。
2017-05-01 18:23:08
414
原创 合并排序的递归算法
合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为
2017-04-22 22:32:48
4182
原创 快速排序的递归实现
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是: 设置两个变量i、j,排序开始的时候:i=0,j=N-1;以第一个数组元素作为关
2017-04-22 22:20:47
558
原创 二分搜索的递归实现算法
输入:先输入进行二分搜索元素的个数,然后按大小依次输入(或随机生成,然后排序)每个数字,最后输入要求搜索的元素。 输出:要求搜索元素的下标(下标从0开始!)。 完整代码:import java.util.Scanner;//二分搜索递归public class Test08 { public static void main(String[] args) { try
2017-04-22 21:51:13
1700
原创 整数划分的递归实现算法
输入:输入整数划分的整数(只输入一次,即n==m)。 输出:输入整数的划分个数值。示例:输入:7,输出:15 q(n,m)的如下递归关系定义如下: 正整数n的划分数p(n)=q(n,n)。完整代码:import java.util.Scanner;public class IntegerPartition{ public static void main(String args[]
2017-04-22 21:36:34
2738
原创 全排列的递归实现算法
全排列的递归实现算法输入:先输入要求输入的字符的个数,后依次输入(或随机生成)每个字符(不能仅仅是数字)。 输出:全排列的结果。 R的全排列可归纳递归定义如下: 完整代码:import java.awt.List;import java.util.Scanner;public class Permutation{ public static void main(String ar
2017-04-22 17:52:31
2191
原创 Ackerman函数的递归实现算法
Ackerman函数A(n,m)定义如下: 有两个独立的整型变量m、n: 输入:输入两个数字,先输入n,后输入m。输出:Ackerman函数计算后的值。 【完整代码】import java.util.Scanner;public class akm{ public static void main(String args[]){ try {
2017-04-22 16:35:45
8584
1
原创 泛型数组+泛型嵌套+泛型应用实例
泛型数组关于泛型方法-泛型接口和方法使用泛型方法时,也可以传递和返回一个泛型数组。 【接收和返回泛型数组】@SuppressWarnings("unchecked")public class GeneriseDemo30{ public static void main(String args[]){ //返回泛型数组 Integer i[]=fun(1
2017-04-22 16:14:55
2870
原创 泛型接口和方法
泛型接口定义泛型接口 在JDK1.5之后泛型接口实现的两种方式泛型方法定义泛型方法通过泛型方法返回泛型类实例使用泛型统一传入的参数类型泛型与子类继承的限制
2017-02-15 22:30:11
1081
原创 通配符
前面在操作时都设置了一个固定的类型,在泛型操作中也可以通过通配符接收任意指定泛型类的对象。匹配任意类型的通配符 在开发中对象的引用传递是常见的,但是如果在泛型类的操作中,在进行引用传递时泛型类型必须匹配才可以进行传递,否则是无法进行传递的,如下面的代码。 【使用泛型声明后的对象引用传递问题】public class GenericsDemo12{ public sta
2017-02-15 11:42:53
727
原创 泛型的安全警告
在泛型应用中最好在声明类对象时制定好其内部数据类型,如Info,如果不指定类型,这样用户在使用这样的类时,就会出现不安全操作的警告信息。 【不指定泛型类型】class Info{ private T var; public T getVar(){ return var; } public void setVar(T var){
2016-12-21 21:16:25
1405
原创 泛型应用
泛型的基本应用 泛型可以解决类型的安全性问题,其主要原理是在类声明时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这样在类声明或者实例化只要指定好需要的类型即可, 【泛型类定义格式】[访问权限]class 类名称{ [访问权限] 泛类型标识 变量名称; [访问权限] 泛类型标识 方法名称(){}; [访问权限] 返回值类型声明 方法名称
2016-12-02 20:54:16
386
原创 线程的生命周期
在Java中一个线程对象都有自己的生命周期,如果要控制好线程的生命周期,则首先应认识其生命周期。 从图中可以看出,大部分的线程生命周期的方法基本上都学过了。 线程的操作方法 其中三个新的方法如下: 1. suspend()方法:暂时挂起线程。 2. resume()方法:恢复挂起的线程。 3. stop()方法:停止线程。 但是对于线程中suspend()、resume()、st
2016-11-26 11:34:18
352
原创 线程操作的实例
在线程操作中有个经典的案例程序,即生产者和消费者问题,生产者不断生产,消费者不断消费生产者生产的产品。 生产者生产出的信息方法一个区域之中,消费者从区域中将数据取出来,但是本程序中因为牵扯到线程运行的不确定性,所以会存在两个问题: 1. 假设生产者线程刚向数据空间添加了信息的名称,还没有加入该信息的内容,程序就切换到了消费者线程,消费者线程将把信息的名称和上一个信息的内容联系在一起。 2.
2016-11-22 22:15:56
174
关系查询处理和查询优化
2016-10-25
关系数据库理论
2016-10-25
连接MySQLUnsupported major.minor version 52.0
2016-10-26
wampserver启动phpmyadmin出现
2016-10-11
定义一个表中时,怎样将一属性设置为自动编号?
2016-03-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人