自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jeff's blog

coder's life

  • 博客(151)
  • 资源 (4)
  • 收藏
  • 关注

原创 012-Java常用队列

概念队列是一种先进先出(FIFO)的抽象数据结构。在Java中,队列使用了两种数据类型来实现,分别是数组和链表这两种数据结构。所有的队列都实现了Queue接口。分类队列分为阻塞和非阻塞队列两种。如上图,阻塞队列实现了BlockingQueue接口,包含LinkedBlockingDeque,LinkedBlockingQueue,LinkedTransferQueue,ArrayBlockingQueue,PriorityBlockingQueue,DelayQueue和Synchrono..

2020-10-29 15:07:22 307

原创 011-Java代理模式

概念代理模式提供了间接对目标对象进行访问的方式。通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的功能上,增加额外的功能补充,即扩展目标对象的功能。这就符合了设计模式的开闭原则,即在对既有代码不改动的情况下进行功能的扩展。以我们生活中的例子来理解代理相当于就是中介,买方通过中介购买卖方提供的物品,买方在不需要接触卖方的情况下可以购得所需的物品,并获取更优质的服务,比如售前售后服务等等。Java中代理分为静态代理和动态代理两种。静态代理使用静态代理时,被代理对象与代理对象需要一起..

2020-09-01 14:53:02 270

原创 010-集合类之HashMap

什么是HashMap1.1 数组采用一段连续的存储单元来存储数据。对于给定的下标查找时间复杂度为O(1)。对于给定的值查找的话时间复杂度为O(n),当然如果是有序数组的话可以使用一些查找算法将查找复杂度提高为O(logn)。数组的插入和删除涉及到元素的移动,平均时间复杂度为O(n)。数组的特点就是查找快,插入和删除慢。1.2 链表查找需要遍历变量,平均时间复杂度为O(n)。新增和删除时间复杂度为O(1)。链表的特点就是查找慢,插入和删除快。1.3 红黑树是一种自平衡二叉查找树。查找,新增和删..

2020-07-30 16:54:11 304

原创 008-Java锁

锁是出现在多线程场景下的,对于多线程同步资源时,为了资源的正确访问和修改我们需要对资源进行加锁。Java中提到的锁,有部分是广义概念上的,也有具体语言级别的。文中我们主要是将锁的概念讲一下,了解一下各种锁的特点和运用场景,至于各种锁在java中是如何实现和运用的可以自己参考JDK源码进行对照分析。Java知识点总结系列目录乐观锁&悲观锁乐观锁和悲观锁是一个广义上的概念,并非语言级别的锁,体现在对待被操控资源的态度上的区别。如上图,悲观锁悲观的认为自己在准备操控资源时一定会有其他线程也来

2020-07-08 16:13:14 270

原创 009-如何生成分布式ID

作用在分布式集群系统中对数据和信息的唯一标识目标全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。单调递增:保证下一个ID一定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求。信息安全:如果ID是连续的,恶意用户的扒取工作就非常容易做了,直接按照顺序下载指定URL即可;如果是订单号.

2020-06-28 11:15:31 1258

原创 007-Java线程

Java知识点总结系列目录1. 线程概念进程进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间)。是操作系统分配资源的最小单位。比如打开一个浏览器它就是一个进程。线程线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个进程内部可以有多个线程。线程特点1)线程是轻量级的进程2)线程没有独立的地址空间(内存空间)3)线程是由进程创建的(寄生在进程)4)

2020-06-10 15:24:35 302 1

原创 006-Java内存模型JMM

Java知识点总结系列目录**1. **

2020-06-04 15:54:48 227

原创 005-Java垃圾回收GC和JVM性能调优

Java知识点总结系列目录1. 垃圾回收1.1 对象是否需要回收的两种算法引用计数法为每个对象添加一个引用计数器,用来统计指向该对象的引用个数。一旦某个对象的引用计数器为0,则说明该对象已经死亡,便可以被回收了如果有一个引用,被赋值为某一对象,那么将该对象的引用计数器+1。如果一个指向某一对象的引用,被赋值为其他值,那么将该对象的引用计数器 -1引用计数法是一种古老的方式,除了需要额外的空间来存储计数器,以及繁琐的更新计数器以外;引用计数法还有一个重大的漏洞:无法处理相互引用,如图中Obj

2020-05-27 11:04:04 376

原创 003-Java虚拟机JVM之内存模型

Java知识点总结系列目录类加载器将Class文件读取后,放到运行时数据区,然后执行引擎执行或调用本地接口、本地库。1、方法区(元空间)线程共享JDK1.8后叫元空间Metaspace,存储在本地内存中JDK1.8前叫永久代PermGen,存储在堆上存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。由JVM自己使用运行时常量池:运行时常量池是方法区的一部分,用于存放编译期生成的各种 字面量 和 符号引用相关JVM参数设置-XX:PermS

2020-05-14 17:08:12 3950 3

原创 004-Java虚拟机JVM之类加载

Java知识点总结系列目录**1. **

2020-05-10 11:26:35 317

原创 001-Java后端知识点总结百篇系列

001-Java知识点总结系列目录002-MySQL数据库索引

2020-05-09 11:45:27 477

原创 002-MySQL数据库索引

1. MySQL索引数据结构以及各自特点二叉树左子节点小于父节点,右子节点大等于父节点。当索引为已排序数据时,导致二叉树变成了链表,查找复杂度为N每个节点只存储一个记录,数据量大时树高度比较大,查找困难;每个节点只存储一个记录,导致一次查询有可能多次磁盘红黑树自平衡二叉查找树。左右子树的高度相差较大时,自动旋转平衡,树的高度相对于二叉树小一点Hash表优点在于:在确定值的情况下,对于读写定位都很快缺点在于:区间范围查找困难,比如>, <, between 等,ord

2020-05-09 11:40:45 382

原创 Call to undefined function imagecreatefromjpeg() 解决方案

场景描述一般的php环境下对于图片处理的GD库,一般只支持png和gif之类的图片处理,对于jpg格式的图片无法处理。通过php相关信息的查看也可以看到结果GD Support => enabledGD Version => bundled (2.1.0 compatible)GIF Read Support => enabledGIF Create Support =...

2019-12-09 17:07:23 4356 1

原创 php如何识别消息文本中的所有链接

1. 业务场景在很多系统中都存在发消息互动。有诸如QQ、微信等的及时聊天消息,还有业务系统中发的一些如反馈消息需要刷新页面查看的内容。消息中往往会存在一些链接信息,为了让阅读消息的人能快速的打开链接,我们需要将带有链接的文本以超文本链接的方式展示给阅读者,这样阅读者就能直接点击快速的打开链接,而不需要复制到浏览器的地址栏进行访问,这样的系统用户体验就会更好。下面我们就用php作为实验的程序语言实...

2019-08-24 22:09:23 1237

原创 使用docker容器来启动一个solr搜索服务

场景描述我们使用solr来提供搜索的服务,为了达到快速的部署和移植的目的我们将采用docker容器的方式来启动solr服务。我们的solr将部署的tomcat应用服务器中,所以solr镜像将会基于tomcat镜像来创建实施步骤1、安装docker并启动(以centos为例)1.1 安装yum install -y docker-io1.2 启动dockerservice docke...

2019-08-15 17:27:39 1713

原创 算法——TOP K问题最小堆实现扩展

概述上文我们讲到TOP K问题最小堆的实现,采用的比较基本数据类型int。这里我们将扩展到比较对象代码实现这里我们直接上代码,这里的扩展最小堆我们取名为ExMinHeap,实现如下package org.cyxl.common;/** * 扩展最小堆,采用泛型,存储的对象必须实现Comparable接口

2019-07-02 16:00:50 1440

转载 项目中常用的19条MySQL优化

此文章纯属转载备忘一下目录一、EXPLAIN二、SQL语句中IN包含的值不应过多三、SELECT语句务必指明字段名称四、当只需要一条数据的时候,使用limit 1五、如果排序字段没有用到索引,就尽量少排序六、如果限制条件中其他字段没有索引,尽量少用or七、尽量用union all代替union八、不使用ORDER BY RAND()九、区分in和exists...

2019-07-02 10:07:57 285

原创 nginx访问日志按日期分割打包并根据访问日志进行邮件打开率统计

1. 日志分割打包以下为日志分割打包脚本,详细的注释在脚本中(/root/access_log_pack.sh)#!/bin/sh# 按日期定义文件名d=`date -d "-1 day" +%Y%m%d`# nginx的pid位置nginxPid="/run/nginx.pid"# nginx访问日志所在目录cd /var/log/nginx# 根据日期重命名日志文件mv a...

2019-07-01 16:24:20 729

转载 mysql数据导入导出命令备忘

mysql数据导入导出经常用到,但又经常忘,所以在网上找了个文章备忘一下原文来自 http://blog.csdn.net/xin_yu_xin/article/details/7574662MySQLdump是MySQL自带的导出数据工具,通常我们用它来导出MySQL中,但是有时候我们需要导出MySQL数据库中某个表的部分数据,这时该怎么办呢?mysqldump命令中带有一个 --wh...

2019-04-18 11:13:23 231

原创 阿里云CentOS服务器环境搭建php+nginx+mysql+java+git+nodejs

阿里云CentOS服务器环境搭建CentOS 安装php1. 下载php 7.2.11wget http://sg2.php.net/distributions/php-7.2.11.tar.gz2. 解压tar -xzvf php-7.2.11.tar.gz3. 进入源码目录cd php-7.2.114. 安装相关依赖yum install libxml2-devely...

2018-11-08 12:18:11 650

原创 Java实践之路(设计模式)——单例模式(Singleton)(更新)

背景以前写过单例模式的文章,这里根据最新的理解重新写一下单例模式的设计,主要写两种我认为最好的实现方式单例模式之内部类实现这里直接先上代码,后面总结class RepositoryClass{ private int num; //数据 private static class RepositoryClassHolder{ private static Repos

2017-03-16 11:31:59 710

原创 Git设置忽略排除和重新添加已经被忽略过文件(夹)的方法

场景描述在使用git的时候,项目开始我们设置了一些需要忽略的文件和文件夹,比如一些工程文件和项目依赖库,以免多个开发者本地环境不一样和工程文件过大的问题。但后期发现那些已经被我们忽略掉的文件需要重新添加或者忽略的文件夹里面有某个文件(夹)是需要大家一致的,需要设置一下排除,下面我们针对这两种场景讲一下解决办法设置忽略排除设置忽略我们通常是在.gitignore文件中设置,比如在laravel框架中

2017-03-11 17:57:34 18315 4

原创 算法——TOP K问题最小堆实现

1. 问题背景在实际应用中,我们经常会遇到在一大推数据中找出最大的几个数的问题,也就是我们提到的TOP K问题。K表示需要找出数据的数量2. 解决方案TOP K问题也有多种解决方案,比如排序,最后截取靠前或者靠后的K个数据。当数据量小的时候,排序解决起来当然可以,算法简单,排序算法也有很多现成的。当数据量很大时,维护一个很长的数组,不管是空间存储上还是排序耗费的时间上都可能难以接受。这时我们可以采用

2016-05-11 16:46:22 4577

原创 Laravel框架异步队列配置流程

本文使用的laravel框架是4.0版本首先说一下什么是异步操作,一般什么情况下需要使用异步操作。(这里我们使用简单通俗的表述,大致明白其意思,非官方定义。可以自己进一步上网查阅更加详细的描述)。在我的理解,异步操作是和同步操作相对应的一个概念,异步操作不需要马上知道操作的结果,当前操作不会影响下一步操作。使用异步操作一般具备两个特点:一是并不需要马上知道结果;二是比较费时,为了提高操作的流畅性而将

2016-04-15 11:20:34 5816

转载 Apache Commons工具集简介

Apache Commons工具集简介apachecommonsjavabeanjdbc         Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。下面是我这几年做开发过程中自己用过的工具类做简单介绍。 组件功能介绍BeanUtils提供了对于JavaBean进行各种操作,克隆对象,属性

2016-02-04 10:55:35 823

原创 Java NIO和Netty框架(一)初探NIO

Java NIO概览

2015-11-05 15:29:03 1852

原创 Spring Boot应用之数据加密以及字段过滤

1、应用背景在使用Spring Boot开发基于restful类型的API时,对于返回的JSON数据我们经常需要对数据进行加密,有的时候我们还必须过滤掉一些对象字段的值来减少网络流量2、解决方案1)加密对返回的数据进行加密,我们必须对spring boot返回json数据前对数据进行拦截和加密处理,为了方便api调用解析还原数据,我们采用双向加密的方式,因为客户端需要解密为明文,加密的使用java本

2015-10-23 09:38:33 17767 5

原创 OC学习总结(三)

14、KVC和KVO》KVC,key-value coding键值编码,通过setValue: forKey: 的模式给对象设置属性的值,有点类似于C#中的反射机制 1、基本数据类型setValue时必须封装成对象,解封时时自动的 2、属性为对象时,可以通过键的路径进行设置和访问。setValue: forKeyPath:和valueForKeyPath。path的访问

2015-03-11 14:48:12 773

原创 OC学习总结(二)

oc学习总结二7、内存管理以下两种情况发生时,所有者对象将会获得该对象的所有权 创建或者复制对象:alloc, allocWithZone:, copy,copyWithZone:, mutableCopy, mutableCopyWithZone: 保留对象:retain 在不需要时所有者对象必须释放对该对象的所有权 release, autorelease

2015-02-15 14:33:32 932

原创 OC学习总结(一)

OC学习笔记知识要点1、 类(interface)头文件格式.h@interface class-name : super-class-name <protocol-name,...>{ @private instance variable ... @public ... @protect(default) ...}//构造方法的命名约定

2015-02-14 10:10:57 791

转载 Session机制详解

本文转载自  http://justsee.iteye.com/blog/1570652虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答。    一

2014-12-05 15:33:00 1370

原创 一些记录

1、有用的5个JDK工具http://www.csdn.net/article/2014-11-20/2822750-5-JDK-Tools-Every-Java-Developer-Should-Know?reload=12、。

2014-11-21 10:52:20 708

转载 Windows进程间各种通信方式浅谈

1 Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。 多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制

2014-08-27 14:38:12 882

转载 Unix系统下进程间通信方式及比较

本文转载自:进程间的通信方式:   1.管道(pipe)及有名管道(named pipe):     管道可用于具有亲缘关系进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 2.信号(signal):      信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断

2014-08-27 14:34:58 8733 1

转载 Java线程面试题Top50

本文由 ImportNew - 李 广 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的

2014-08-21 15:30:37 1028

转载 使用Git进行小项目代码管理

使用Git进行小项目代码管理本文转载自:http://www.360doc.com/content/11/1114/13/1016783_164233224.shtml之前在公司使用过SVN(无甚感觉)和ClearCase(把人恶心死的东西)两种版本控制工具,都不满意。后来想自己写点东西玩,就发现了这个在国内人气还不怎么高的Git,这个由Linus实现的灵活小巧的VCS。对

2014-03-19 10:18:59 1003

原创 PHP实践之路(十)类与对象(3)

PHP实践之路(目录索引)

2013-07-25 09:33:32 1214

原创 PHP实践之路(九)类与对象(2)

PHP实践之路(目录索引)类与对象(2)

2013-07-08 10:16:50 1039

原创 PHP实践之路(八)类与对象(1)

PHP实践之路(目录索引)类与对象(1)

2013-07-05 10:32:32 1203

转载 提高程序运行效率的10个简单方法

转载自:http://blog.csdn.net/ljianhui/article/details/9212817 对于每一个程序员来说,程序的运行效率都是一个值得重视,并为之付出努力的问题。但是程序性能的优化也是一门复杂的学问,需要很多的知识,然而并不是每个程序员都具备这样的知识,而且论述如何优化程序提高程序运行效率的书籍也很少。但是这并不等于我们可以忽略程序的运行效率,下面就介绍一下本

2013-07-03 14:45:01 3065

基于面向对象的ATM模拟系统

这是一个用C#语言实现的模拟ATM自动取款机的功能的系统,实现了工行、农行和建行的开户,登陆,取款,存款,转账,修改密码,退出等功能。这里面充分体现了面向对象,分层实现,客户端和服务端各司其职等概念。对初学者了解面向对象和分层实现应该有很大的帮助

2009-11-15

hashtable和dictionary的探讨

探讨hashtable与dictionary两者的性能及结构区别,并用代码来实现测试。是深入学习数据结构的好的例子。一切源于基础,希望对你有所帮助。

2009-08-05

超市管理系统(c#桌面应用程序开发)

这是一个关于超市管理的系统,开发语言为c# 开发平台是: .net 2005。希望对你有所帮助,如若有任何问题也欢迎讨论

2008-08-31

oracle驱动器

java程序连接oracle的驱动程序。

2008-08-23

空空如也

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

TA关注的人

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