自定义博客皮肤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)
  • 收藏
  • 关注

原创 网站登录鉴权的实现

什么是网站鉴权,目的是什么?一般来说,一个网站不可能只有一种操作权限。举个例子,可能存在未登录的操作权限,登录的操作权限,以及管理员的操作权限等。网站鉴权的目的就是用户在进行操作前,对用户的身份进行识别并判断其是否具有该操作权限的过程。网站鉴权的几种方式这里我们将问题简单化,即操作权限只区分用户是否进行了登录。Session方式实现(1)Session实现鉴权 1...

2018-05-26 20:46:03 8895

原创 [leetcode]397. Integer Replacement

题目描述给定一个正整数n,你可以做如下操作: 1.如果n是偶数,则将n替换为n / 2。 2.如果n是奇数,则可以用n + 1或n - 1替换n。n变成1所需的最小替换次数是多少?题目分析初级思路首先考虑使用动态规划,dp[n]代表从n到1所需的最少替换次数。递归方程:(1)n为偶数:dp[n]=dp[n/2]+1;(2)n为奇数:dp[n]=Math.min(dp[n+1],dp[

2017-11-10 12:57:30 326

原创 01背包问题

问题描述给出n个物品的体积A[i]和其价值V[i],将他们装入一个大小为m的背包,最多能装入的总价值有多大?注意事项A[i], V[i], n, m均为整数。你不能将物品进行切分。你所挑选的物品总体积需要小于等于给定的m。样例对于物品体积[2, 3, 5, 7]和对应的价值[1, 5, 2, 4], 假设背包大小为10的话,最大能够装入的价值为9。题目链接[点击进入](http://www.l

2017-10-22 20:23:02 325

原创 二叉树的非递归遍历(java实现)

树的定义/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * } */二叉树的创建public static TreeNode Create(){ String str=scan

2017-10-20 17:39:05 385

原创 树和二叉树

什么是树?(1)树的定义(采取递归定义)树是 n(n>=0) 个结点的有限集合。n=0为空树。当n>0时,满足:(1)有且仅有一个根结点,该结点没有前驱结点,但有零个或多个直接后继结点。(2)除根结点外,树可划分为 m 个互不相交的有限集T1,T2,...,Tm,每个Ti又是一棵树,称为根的子树。每棵子树的根结点有且仅有一个前驱,其前驱就是树的根结点,同时可以包含零个或多个后继结点。(2)

2017-10-19 21:22:49 215

原创 使用xorm将结构体转为sql文件

前言xorm支持自动增量同步数据表结构。即:你定义好的结构体 ---> 数据库对应的表操作步骤(1)定义结构体type User struct { Id int //表id Name string //姓名 ...}(2)编写代码,执行自动增量同步(mysql为例)import ( "fmt" "testing"

2017-10-11 20:37:32 1419

原创 Go实现并发排序

前言最近在学习Go语言,于是用go实现了两种排序的并发实现,下面我将一一进行介绍。快排实现下面先贴出快排代码:func QuickSort(num []int, low, high int) { if low >= high { return } i, j := low, high key := num[low] for i < j {

2017-10-06 22:24:46 1606

原创 Lambda实现字符串数组排序

why use Lambda最近看了Lambda表达式,它使用简洁的语法来创建函数式接口的实例,避免匿名内部类的繁琐。我们直接通过一个自定义排序字符数组的例子来感受下吧。匿名内部类实现import java.util.Arrays;import java.util.Comparator;public class Test { public static void main(String

2017-09-19 11:37:17 4045

原创 浅谈HTTP协议

什么是HTTP协议了解什么是http协议前,我们先来说说什么是超文本。超文本:超文本是指包含指向其他文档链接的文本。HTTP协议:又称超文本传输协议,定义了客户进程和服务器之间是如何进行文档传输的。HTTP性质1>HTTP协议是应用层协议。2>HTTP报文使用TCP连接进行传送。3>虽然TCP是面向连接的运输层协议,但HTTP协议本身是无连接的。4>HTTP协议是无状态的,同一个用户第二次

2017-09-12 19:39:57 868

原创 简单的SSM框架

前言最近搭建了一个简单Spring+SpringMVC+MyBatis(SSM)框架。Github地址项目地址:点击进入

2017-09-06 16:22:44 471

原创 计算机网络的三种体系结构

什么是计算机网络体系结构计算机网络体系结构是网络协议的层次划分与各层协议的集合,同一层中的协议根据该层所要实现的功能来确定。各对等层之间的协议功能由相应的底层提供服务完成。 --百度百科计算机网络体系结构出现的原因计算机网络是一个非常复杂的系统。为了设计复杂的计算机网络,人们采取分层的方法,将庞大复杂的问题转换为若干个小的局部问题。三种体系结构OSI的七层协议体系结构OSI是由国

2017-09-03 20:00:57 21417 1

原创 DNS及解析过程

了解DNS(1)什么是DNS?(Domain Name System) 域名系统(DNS)是因特网使用的命名系统,为了解决用户上网时主机地址难以记忆的问题。(2)DNS解析的作用 将便于记忆的域名解析成对应主机IP地址的过程。(3)DNS如何传输数据的? 通过UDP用户数据包方式传输数据,使用UDP是为了减少开销。(3)DNS处于哪一层? DNS服务是处于 应用

2017-08-30 10:53:31 638

原创 浅谈KMP算法及实现

题目描述这里通过lintcode上的字符串查找这道题,引入字符串匹配问题。对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。样例如果 source = "source" 和 target = "target",返回 -1。如果 source = "abcdabcde

2017-08-23 22:18:22 497

原创 Docker常见操作总结

Docker的三个名词镜像:类似与虚拟机的镜像,用来创建相应容器。仓库:存放各种镜像的地方。容器:由镜像创建的,运行程序的环境。镜像和容器的关系 Docker 面向对象 容器 对象 镜像 类镜像的相关操作(1)从网易镜像库中拉取docker镜像 docker pull hub.c.163.com/library/

2017-08-18 17:31:53 498

原创 ResultSet的一些操作

什么是ResultSetJDBC通过ResultSet来对查询结果进行封装,ResultSet对象包含一个由查询语句返回的一个表,这个表包含所有的查询结果。说明我们一般只使用next()方法移动指针,遍历结果集,那么我们来看看其他操作吧。示例问题描述 小明想找出年龄小于25岁的记录,并将他们的年龄都改为18岁。解决方案 找出小于25岁的记录比较简单,那如何更改他们的年龄呢?

2017-08-15 11:09:58 996

原创 使用JDBC访问数据库

使用JDBC访问数据库的过程与数据库建立连接如何与数据库建立连接呢?(注:这里以mysql为例)(1)加载数据库驱动(通常使用Class类的forName()静态方法来加载驱动) Class.forName("com.mysql.jdbc.Driver");(2)通过DriverManager获取数据库连接 Connection connection = DriverManage

2017-08-14 21:24:33 417

原创 独立的小易

前言今天做鄙视题,看到这道题的第一反应竟然是用动态规划,然后就很尴尬了。。好了,还是来看题吧。题目描述小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长

2017-08-12 22:06:53 841 2

原创 网易调整队形(动态规划)

问题描述在幼儿园有n个小朋友排列为一个队伍,从左到右一个挨着一个编号为(0~n-1)。其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G'表示。小朋友们都很顽皮,当一个男生挨着的是女生的时候就会发生矛盾。作为幼儿园的老师,你需要让男生挨着女生或者女生挨着男生的情况最少。你只能在原队形上进行调整,每次调整只能让相邻的两个小朋友交换位置,现在需要尽快完成队伍调整,你需要计算出最少需要调整多少次

2017-08-09 10:26:19 551

原创 MyBatis对整合多个表的类的操作

前言前几天在实现oj的DAO层时,由于将problem表中的一些字段拿出来做了字典表,导致了数据库表过多,如果还是像以前一样:一个数据库表对应一个实体类的话,这样不仅会增加好多重复性的工作,还会使得逻辑层的编写变得复杂。解决方法于是,我们将关联密切的表整合为一个实体类,这样来简化DAO层的实现。下面就来看看DAO层是如何实现的吧。数据库的关联表这里我对题目字典表做了简化。CREATE TABLE

2017-08-04 20:35:09 1801

原创 关于字典表与实例表的思考

为什么要引入字典表和实例表首先我们来看一个小例子,来理解为什么要引入字典表和实例表?情景一:假如你在玩一个游戏,突然爆了一件十分稀有的武器,假如开发者设计的表是这样的:table inst_equip( id, userId, 装备名称, 装备图片, 装备属性, ...);这样看起来不会有什么问题,只需要在inst_equip表中加入一条记录就好。接着我们来看下一个情景

2017-07-28 11:06:58 5469 1

原创 一个简单的单线程OJ判题端(java实现)

前言最近准备用java做一个OJ的判题端,现在的想法还是不太成熟,实现的也十分简单,贴出来希望能和大家一同交流~实现的大体思路首先,前台的用户将代码提交后,假设将代码保存在服务器中。那么,判题端应该如何去做呢?(1)判题端根据提交文件的类型,用不同的编译器去进行编译;(2)服务器启动线程去执行编译后的文件;(3)根据执行结果将结果写回数据库。实现的简单功能这里我主要实现了启动一个线程去执

2017-07-18 20:00:01 3371

原创 TCP三次握手和四次挥手

TCP三次握手的过程图这是TCP三次握手的过程图,我们首先来说下SYN,ACK,seq,ack分别代表什么含义:(1)确认ACK:仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。 TCP规定:当连接建立后所有传送的报文段必须把ACK置1。(2)同步SYN:在连接建立时用来同步信号。 SYN置为1表示这是一个连接请求或连接接受的报文。 SYN=1,ACK=0

2017-07-17 09:15:29 297

原创 java类加载器

什么是类加载器简单来说,就是将java类加载到java虚拟机中。具体描述为:类加载负责将.class文件加载到内存,并为之产生对应的java.lang.Class对象类的相等比较与类加载器比较两个类是否相等:equals(),也包括instanceof()进行关系判定每个类由加载它的类加载器和这个类本身一同确定其唯一性。如果有一相同的类由两个不同的类加载器加载,则它们两个类在JVM中是两个不同

2017-07-14 15:22:57 176

原创 java类加载

前言今天看了<<深入理解java虚拟机>>后,决定将了解到的东西进行总结。什么是java类加载将类的class文件读入内存,形成一个可以被虚拟机直接使用的java.lang.Class对象。java类的加载和对象创建的区别1>java类的加载只是对象创建的第一步,只有在这个类被加载的前提下,才能执行为对象分配内存,初始化内存空间为零值等后续操作。2>java类的加载生成java.lang.Cl

2017-07-13 21:49:27 286

原创 java static关键字

static的用法静态变量:由static修饰的成员变量(在类中定义的变量)。 *相当于全局变量,该类的所有实例会共用同一个变量。静态方法:由static修饰的方法。 *该方法属于类,存在方法区中,只有一份。 *常常通过"类名.方法名"来访问。 *静态方法中不能直接访问实例成员(不以static修饰的成员变量)或普通方法,因为静态方法中没有隐式的this传递。 *一般用于方法的操

2017-07-12 20:58:04 206

原创 Tomcat端口改为80后访问页面出错

出现问题今天,在将Tomcat端口改为80后无法访问页面。而改回8080端口可以正常的进行访问。解决方案使用root用户去运行tomcat。原因linux下普通用户没有使用1024以内端口的权限,1024以内的端口为root专享。

2017-06-25 17:04:07 2324 1

原创 Linux共享内存的使用(二)

在上篇中我们讲到了共享内存的操作,没有看的童鞋可以点击链接: Linux共享内存的使用(一)使用共享内存存在的问题会出现读写冲突,当客户端在读取数据时,有可能服务器端在写数据,因此需要辅助其他控制手段,保证读写共享内存段互斥进行。解决方法我们引入了信号量什么是信号量信号量是一个内存变量,可以被系统中的任何进程所访问。多个进程使用信号量来协调对临界资源的访问

2017-06-24 11:45:41 362

原创 Linux共享内存的使用(一)

直接来看共享内存的操作函数: 功能 创建共享内存,也用来获取共享内存的id值 头文件 #include<sys/shm.h> 函数原型 int shmget(key_t key, size_t size, int shmflg); key 创建共享内存的关键字 相同的key值可获取相同的共享内存ID

2017-06-24 10:56:25 529

原创 Linux下的文件流和文件描述符

文件流Linux下的库函数通过流对象来使用文件。 //fp对应的是filename的流对象,进程通过fp来操作文件 FILE *fp; fp=fopen(filename,"r"); close(fp);每个进程都有三个默认的流对象:stdin, stdout, stderr.文件描述符系统调用通过文件描述符来使用文件。文件描述符:每个打开文件对应的一个惟一非负整数。

2017-06-21 12:51:26 1352 1

原创 Linux文件模式

首先来看一张熟悉的Linux文件模式图: 接下来我们开始从ls -l命令讲起: 这是我执行ls -l后显示的结果。-rwxrwxr-x(我们现在主要来讲解这串字符)'-':它代表文件的类型 1> - 普通文件 2> d 目录文件 3> l 符号链接(指向另一个文件) 4> s 套接字文件 5> b

2017-06-20 13:52:20 1075

原创 用strerror函数实现perror函数的功能

实现这个功能比较简单,主要是要搞清strerror函数和perror函数。关于errno为什么要来介绍errno呢? 因为它记录了调用库函数或系统调用后的错误信息。什么是errno? errno记录了系统的最后一次错误代码。errno是一个int型的系统全局变量,其错误代码定义在errno.h中。每一个errno变量对应着以字符串表示的错误类型。介绍完errno后,我们来介绍上面

2017-06-19 13:28:10 1313

原创 过滤器初探

为什么要引入过滤器在web开发中,对于web客户端的每一个请求,我们需要进行相同的处理,比如判断用户是否有权限访问特定的web资源(Servlet,JSP页面等)。当然我们可以在所有的web资源都增加相应的代码进行权限判断。但显然这个方法不是最好的,因为增加了很多的重复性操作。于是过滤器就出现了。。。什么是过滤器它是一种向web应用程序的请求响应处理添加功能的web服务组件。过

2017-06-18 11:25:09 306

原创 JSON知识详解

什么是JSONJSON是一种轻量级的数据交换格式。何为轻量级,就是相较于XML文件,JSON解析速度更快,文档更小。JSON的结构1>”名称/值”对的集合。(相当于java中的hashmap)使用JSON表示一个对象:{"name":"leeezm","age":18}属性名必须用双引号引起来,属性值如果为字符串,也必须引起来。2>值的有序列表。(相当于数组)JSO

2017-06-13 12:36:02 305

原创 MyBatis利用动态SQL进行批量操作

什么是动态SQL简单来说就是可以根据用户输入的查询条件生成不同的查询SQL。动态SQL有哪些元素--判断元素:if,choose--关键字元素:where,set,trim--循环元素:foreach如何使用动态SQL1>if,where元素的动态查询(举个栗子)//首先来说下DAO层的查询函数,为什么要传入一个Submit对象呢?//因为检索的条件不固定,传入对象只用实现一个查询语句即可

2017-06-12 14:10:14 3511 2

原创 Ajax传递的数据包含特殊字符时的解决方法

问题描述如下,对含有特殊字符的text进行JSON封装,通过Ajax传递,var data = {"Id": id, "text": text};在后台无法进行数据接收。解决方案将req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");换为:req.setReques

2017-06-11 23:55:56 727

原创 Ajax的简单使用

1.什么是AjaxAjax为异步的JavaScript和xml,采用XMLHttpRequest对象异步的向服务器发送请求,服务器返回部分数据,以页面无刷新的效果更改页面局部内容(局部刷新页面)。2.使用Ajax1>利用Ajax发送get请求/*网页中注册的时候通常要对用户名是否存在进行验证,此处利用该例来演示Ajax get请求*/function check() { //

2017-06-11 16:55:22 330

空空如也

空空如也

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

TA关注的人

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