自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 等待的人总是心慌的

昨天舍友内推我百度贴吧社招面试,有两个方向一个是反作弊,一个是内容推荐。 一面:面试官是我舍友的导师,看着好年轻,很帅,挺温和的人。 二面:听其他人叫他王老师,中年大叔,好像是技术负责人。刚上来问了一个我平时都不接触的问题,自然答不上来,于是就让面试官换个方向问,才表现的好了一点。最后发现大叔很可爱啊。 三面:经理,是一个看着好年轻好年轻的女生,刚开始我还怀疑经理是她旁边的那个人

2018-01-26 17:33:40 278

原创 关于SSM的图片插入和获取

实体类和mybatis配置// 图片实体类public class Pic{ private String pic; public String getPic(){ return pic; } public void setPic(String pic){ this.pic = pic == null ? null : pi

2018-01-23 14:14:15 1417

原创 Linux sed工具详解

sed本身是一个管线命令,可以分析standard input,并且sed可以将数据进行取代,新增,删除,截取等功能,一般是用来对某些确定的行进行操作。sed [-nefri] 动作选项与参数:-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(戒者劢作)才会被列出来。-

2017-11-17 11:01:32 406

原创 CentOS关闭默认防火墙

#查看默认防火墙状态[root@localhost init.d]# firewall-cmd --staterunning#关闭firewall[root@localhost init.d]# systemctl stop firewalld.service#禁止firewall开机启动[root@localhost init.d]# systemctl disable fire

2017-11-17 09:29:35 268

原创 Linux系统把命令放在后台执行

比如说要启动redis服务可执行文件为[root@localhost src]# ls -l redis-server-rwxr-xr-x. 1 root root 5181440 Nov 14 00:13 redis-server正常启动./src/redis-server。 #正常执行了以后想放到后台ctrl+z^Z[1]+ Stopped ./src/redis-server#然后

2017-11-17 09:27:42 1918

原创 grep命令

[root@localhost ~]# grep [-acinv] [–color=auto] ‘搜寻字符串’ filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 ‘搜寻字符串’ 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行! –c

2017-11-17 09:23:33 224

原创 常用数据结构

++文章参考《数据结构(C语言版)》–严蔚敏++当年大学里用C语言基本实现了常用的数据结构,各种线性表,树。写这篇文章主要目的是供平时参考。写的不严谨的地方,欢迎大家探讨。线性表:有头有尾,中间节点有前驱有后继顺序表:通常用数组表示,一般物理地址连续定义:一组连续的存储单元依次存储线性表的数据元素。#定长顺序表typedef struct Sqlist{ int elem[SIZE

2017-11-16 08:56:30 228

原创 Effective java第六条:消除过期的对象引用

都说java有垃圾自动回收机制,但是在开发过程中仍然有可能导致内存泄漏问题。下面有几种造成内存泄漏的来源。一、过期引用看下面的代码,这个简单的栈就存在“过期引用”的问题。当栈进行增长再收缩时,public class Stack { private Object[] elements; private int size = 0; private static fi

2017-11-02 18:02:23 224

原创 Effective java第五条:避免创造不必要的对象

// 不建议使用String s = new String("ls");// 改为String s = "ls";当一个不可变类同时提供静态工厂方法和构造器来实例化,一般使用静态工厂方法。比如Boolean.valueOf(String)总是比Boolean(String)更适合。 编程时应该尽量避免实例化很多基本不会改变的对象,遇到这种情况,可以变成静态对象。 但是除非是数据库连接池这种

2017-11-02 15:39:29 227

原创 Effective java第四条:通过私有构造器强化不可实例化的能力

当创建一个工具类的时候,一般是无需实例化的,类里面都是静态域和静态方法,这种情况下我们尽量保证工具类不能被实例化。可以定义一个私有的构造器,如下:public class Tools { // 不可被实例化的类 private Tools() { throw new AssertionError(); }}添加 throw new AssertionErr

2017-11-02 14:45:43 235

原创 Effective java第三条:用私有构造器或者枚举类型强化singleon属性

单例模式大家都不模式,java1.5发行版之前大家都用两种方法实现singleton。第一种:静态成员public class Singleton1 { public static final Singleton1 INSTANCE = new Singleton1(); private Singleton1() { }}第二种:静态工厂方法public class Sin

2017-11-01 18:02:18 249

原创 改变private类型的成员变量

首先介绍一下AccessibleObject类的继承体系结构 AccessibleObject类的基本作用:将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。在反射对象中设置accessible 标志允许具有足够特权public void setAccessible(boolean flag)throwsSecurityException{…}当输入参数flag为tru

2017-11-01 15:58:54 1320

原创 Effective java第二条:遇到多个构造器参数时要考虑用构造器

当构造器需要用到大量参数的时候,你也许会用到重叠构造器模式,它尽管可行,但是调用起来很不方便,对这个构造器不熟悉的人得花不少时间来了解每个参数的意义。你也许会用到javabeans模式,这种模式调用无参的构造函数,然后用setter方法来设置每个用到的参数。这种模式代码可读性要提高不少,但是构造过程被分到几个调用中,在构造过程中javabean可能处于不一致的状态,需要我们考虑线程安全问题。

2017-11-01 13:58:46 184

原创 Effective java第一条:考虑用静态工厂方法代替构造器

一、创建对象构造方法public Boolean(String s) { this(toBoolean(s));}Boolean bTrue = new Boolean("true");静态工厂方法public static Boolean valueOf(String s) { return toBoolean(s) ? TRUE : FALSE;}Boolean bTrue =

2017-10-31 16:27:40 341

原创 maven的使用

最近公司开发的项目用到了maven来进行项目管理,构建项目的框架。正好趁这个机会学习一下maven的使用。 首先我们要知道maven是什么? maven是一个可以自动化构建项目的项目管理工具。可以帮助开发人员构建一个完整的生命周期框架。Maven让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。maven的安装首先去Apache官网去下载maven:maven下载地址 下载好之

2017-10-17 11:01:18 161

转载 jsp九大内置对象

JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception1、request对象javax.servlet.http.HttpServletRequestrequest对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包

2017-08-28 15:47:04 537

转载 ServletConfig和ServletContext

一、Servlet配置对象(ServletConfig):Servlet初始化时,容器调用其init(ServletConfig)方法,传递该对象。1、获得对象方法:(1)、直接使用getServletConfig()方法:ServletConfig config = getServletConfig();(2)、覆盖Servlet的init()方法,把容器创建的ServletCo

2017-08-28 15:32:08 153

转载 单点登录原理与简单实现

一、单系统登录机制1、http无状态协议  web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系  但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限

2017-08-25 10:51:20 143

原创 RSA加密算法C语言

http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html RSA算法原理(一) http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html RSA算法原理(二)#include <stdio.h>int candp(int a,int b,in

2016-11-04 20:11:26 4631 1

原创 设计模式-工厂模式

一,简单工厂模式简单工厂模式就是由一个工厂类根据传入的参数决定创建哪一种的产品类。public interface people{ public void say();}public class chinese implements people{ public void say(){ System.out.println("说中国话");

2016-10-23 17:38:01 267

原创 单元最短路径:迪杰斯特拉算法

源点s为0, 集合S存放已经求得最短路径的终点。 d[i]表示从源点s到i的当前最短路径长度。 path[i]存放从源点s到节点i的当前最短路径上,节点i的前一个节点 inS[i]表示i节点是否已经在集合S中初始d[]为 0 50 10 MAX 70 MAX, path[]为 -1 0 0 -1 0 -1, inS[]为 1 0 0 0 0 0 然后从d[]中找出最小值10,对应的节点

2016-09-22 20:52:01 854

转载 两种高性能I/O设计模式reactor与proactor

reactor模式:反应器模式并发系统常使用reactor模式,代替常用的多线程的处理方式,节省系统的资源,提高系统的吞吐量。和多线程的比较: 以一个餐饮为例,每一个人来就餐就是一个事件,他会先看一下菜单,然后点餐。就像一个网站会有很多的请求,要求服务器做一些事情。处理这些就餐事件的就需要我们的服务人员了。在多线程处理的方式会是这样的: 一个人来就餐,一个服务员去服务,然后客人会看菜单,点菜。

2016-07-31 11:03:31 370

转载 C++ typedef用法

第一、四个用途用途一:定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针 虽然: cha

2016-07-30 20:55:13 180

转载 《STL源码剖析》之traits

为什么需要traits编程技术###1.1 内嵌类型声明1.1.1 以迭代器所指对象的类型声明局部变量1.1.2 以迭代器所指对象的类型声明返回类型

2016-07-30 20:53:25 177

转载 哈希表

说明:本文分为三部分内容,第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。第一部分:Top K 算法详解问题描述百度面试题:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万

2016-07-30 19:13:23 285

转载 数据库索引

数据库索引是为了增加查询速度而对表字段附加的一种标识。首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。那么在任何时候都应该加索引么?这里有几个反例: 1、如果每次都需要取到所有表记录,无论

2016-07-30 17:09:24 262

转载 红黑树

性质:(1)每个结点要么是红色,要么是黑色; (2)根结点是黑的; (3)每个叶节点,即空结点是黑的; (4)如果一个结点是红的,那么的它的两个儿子都是黑的; (5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点;插入操作每次插入的节点初始都为红色。 1、当父亲为黑色时,不影响平衡,这就比AVL树旋转的几率要小一些。 2、当父亲为红色时,

2016-07-27 21:52:48 182

转载 linux-malloc底层实现原理(2)

本文大致讲解一下linux下malloc的底层实现原理。首先malloc肯定是从堆中分配内存,而堆又在用户空间中占据什么位置?通过下面这张图可以看出来: 很明显是32位系统,寻址空间是4G,linux系统下0-3G是用户模式,3-4G是内核模式。而在用户模式下又分为代码段、数据段、.bss段、堆、栈。各个segment所含内容在图中有具体说明。其中bss段:存放未初始化的全局变量和局部静态变

2016-07-26 22:18:23 485

转载 malloc原理和内存碎片(1)

当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1、检查要访问的虚拟地址是否合法 2、查找/分配一个物理页 3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 4、建立映射关系(虚拟地址到物理地址) 重新执行发生缺页中断的那条指令 如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。 内存分配的原理从操作系统角度来看,进程

2016-07-26 21:54:59 292

转载 listen()函数中backlog参数分析

背景知识 Unix网络编程描述如下: 总结 0. accept()函数不参与三次握手,而只负责从已建立连接队列中取出一个连接和sockfd进行绑定; 1. backlog参数决定了未完成队列和已完成队列中连接数目之和的最大值(从内核角度看,是否这个和就是等于sock->recv_queue ?); 2. accept()函数调用,会从已连接队列中取出一个“连接”(可以是一个描述连接的数据结

2016-07-24 18:11:37 226

转载 Socket底层实现

揭秘socket 什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址、源端口、目的ip地址和源端口。但是socket在那个位置呢 ,在TCP/IP网络的四层体系和OSI七层好像都找不到他的影子,那么下面看一张图就可以明白了。 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的

2016-07-24 16:55:19 532

转载 Linux下的5种IO模型

同步-异步-阻塞-非阻塞同步:我去调用一个功能,功能返回之前,我不做任何事,死等结果 异步:我调用一个功能,不需要知道结果,功能有结果时通知我(回调) 阻塞:调用函数(我),在我没有结束之前,我不会返回 非阻塞:调用函数(我),直接返回,通过select通知调用者Linux下的5种IO模型1.阻塞I/O 2.非阻塞I/O 3.I/O复用 4.信号驱动I/O 5.异步I/O前四种都是同步

2016-07-24 10:55:54 331

原创 select系统调用

参考 《linux高性能服务器编程》I/O复用使得程序能同时监听多个文件描述符。□     客户端要同时处理多个socket□     客户端要同时处理客户输入和网络连接□     Tcp服务器要同时处理监听socket和连接socket  Select int select(int nfds,fd_set *readfds,fd_set*write

2016-04-25 09:02:39 323

转载 Linux makefile 教程

跟我一起写 Makefile陈皓 (CSDN)概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在U

2016-04-20 11:43:05 374

转载 struct stat结构体简介

在使用这个结构体和方法时,需要引入:struct stat这个结构体是用来描述一个linux系统文件系统中的文件属性的结构。可以有两种方法来获取一个文件的属性:1、通过路径:int stat(const char *path, struct stat *struct_stat);int lstat(const char *path,struct stat *struct

2016-04-19 21:55:01 314

转载 在进程间切换文件描述符

参考《linux高性能服务器编程》13.9        在进程之间经常遇到需要在各进程之间传递文件描述符的情况,例如有一种设备它在加电期间只能打开一次,如果关闭后再次打开就会发生错误。这时就需要有一个调度程序,它调度多个相同设备,当有客户端需要此类型的设备时会向它发送一个请求,服务器会把某个设备的描述符给客户端。但是,由于不同进程之间的文件描述符所表示的对象是不同的,这需要一种特殊的机制

2016-04-19 19:39:16 291

空空如也

空空如也

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

TA关注的人

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