自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KK_GKD的博客

https://github.com/cwjokaka

  • 博客(136)
  • 资源 (3)
  • 问答 (1)

原创 【Python3】B站用户数据收集

bilibili_member_crawler业余时间用python写的B站用户信息爬虫仅供学习使用,欢迎来Star(o)/~环境python 3.6+mysql 5.7+下载安装下载源码:git clone git@github.com:cwjokaka/bilibili_member_crawler.git或者在https://github.com/cwjokaka...

2019-07-13 20:30:17 497

原创 【Linux】记录一次jar打包成RPM包

目录系统环境&前置条件安装rpmbuild创建rpmbuild目录系统环境&前置条件:CentOS-7-x86_64jdk1.8.0_201前置:root用户登录所有操作都基于在/root目录下进行安装rpmbuild很多文章都说执行yum install rpmbuild,但执行后提示说找不到这个包。于是我先搜索yum有哪些关于rpm的包:[root...

2019-05-24 17:41:54 1137

转载 【转载】MySQL查询语句中的IN 和Exists 对比分析

看到这篇文章,解决了我对In和Exists区别的疑惑,记录一下 原文:http://blog.51cto.com/andrewli/2120928背景介绍最近在写SQL语句时,对选择IN 还是Exists 犹豫不决,于是把两种方法的SQL都写出来对比一下执行效率,发现IN的查询效率比Exists高了很多,于是想当然的认为IN的效率比Exists好,但本着寻根究底的原则,我想知道这个结论是...

2018-06-22 09:13:21 128

原创 【学习Spring原理】之二:Spring最核心的类——DefaultListableBeanFactory

上一章提过的XmlBeanFactory其实是继承自DefaultListableBeanFactory这个类。而DefaultListableBeanFactory是整个bean加载的核心部分,是Spring注册及加载bean的默认实现,而XmlBeanFactory与它唯一不同的地方是,XmlBeanFactory使用了XmlBeanDefinitionReader来读取xml配置,下面的继承...

2018-06-09 00:07:56 429

原创 【学习Spring原理】之一:最基础的IOC容器接口——BeanFactory

首先,所谓Ioc容器,是指一个能够容纳和管理Bean的容器,而BeanFactory是Spring Ioc容器实现类必须遵守的一个最基础的接口。 《Spring源码深度解析》里有一个最简单的例子: 首先写一个最简单的Bean:package com.ls.spring.bean;public class MyBean { private String name = "Lon ...

2018-06-08 13:21:28 204

原创 【学习Spring原理】之零:前言

好久都没写过博客啦,最近想研究一下Spring,提升一下水平

2018-06-08 12:39:17 152

原创 【java web】解决流读完一次就不能再次获取body数据的问题

问题来自我工作业务上的需求:前端请求时需要将json用RSA算法加密,数据经过后端过滤器进行自动解密,这样做的好处是以后不需要在每一个方法里都手动解密一次,增加代码的简洁性、可维护性。但这样一来便会面临一个问题:http的request请求的输入流在过滤器中就已经被读取了(因为需要读取并解密request body 里被前端加密了的json数据),流只能被读取一次,这样一来数据便传不进contro...

2018-03-20 16:34:35 3015

原创 【HTTP】http协议笔记

以下是本人总结的http协议笔记,参考自博客关于HTTP协议,一篇就够了 与 《深入分析jave web技术内幕》一书HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件,...

2018-03-07 16:56:28 314

原创 【从零写javaweb框架】(十一)为框架添加事务处理

上一篇我们为框架添加了AOP特性【从零写javaweb框架】(十)加载AOP框架,现在可以利用这个特性来为框架添加事务处理。定义一个事务注解:package org.smart4j.framework.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention

2018-02-18 23:54:01 261

原创 【从零写javaweb框架】(十)加载AOP框架

上一篇我们开发了一个简单的AOP框架【从零写javaweb框架】(九)开发AOP框架,现在需要在项目启动时自动加载AOP框架。首先在之前写的BeanHelper类中添加一个setBean方法,用于将Bean实例放入BeanMap中: /** * 设置Bean实例 */ public static void setBean(Class cls, Object

2018-02-17 11:24:11 288

原创 【从零写javaweb框架】(九)开发AOP框架

上一篇我们完成搭建了一个简单的MVC框架,使其可以通过DispatchServlet来处理所有的请求【从零写javaweb框架】(八)请求转发器,这一篇会实现AOP功能。一.什么是AOPAOP(Aspect-Oriented Programming)是对面向对象编程(OOP)的一种补充,可以译为面向切面编程。其中切面是AOP的一个术语,表示从业务逻辑中分离出来的横切逻辑,比如性能监控,日志记录、权...

2018-02-16 17:53:14 248 2

原创 设计模式_25:动态代理模式

之前写过一篇关于代理模式的文章设计模式_4:代理模式,但那时写的是静态的代理模式。本篇用两种方法来实现动态代理:JDK动态代理和CGLib动态代理。我个人的理解:动态代理和静态代理的区别是代理类不需要程序员来写,程序会自动生成代理对象。这样做的好处是不必为每个类都写一个代理类,一个代理类可以代理多个类。还是拿静态代理模式文章里的做值日为例子先写一个做值日的接口:publ

2018-02-01 00:08:52 171

原创 【从零写javaweb框架】(八)请求转发器

上一篇我们实现了把ClassHelper/BeanHelper/IocHelper/ControllerHelper在项目启动时加载进来。【从零写javaweb框架】(七)初始化框架现在开始写请求转发器,请求转发器是MVC的核心:需要编写一个servlet,让它来处理所有的请求。从HttpServletRequest对象中获取请求方法与请求路径,通过ControllerHelper.get

2018-01-31 00:49:56 274

原创 【从零写javaweb框架】(七)初始化框架

在上一篇【从零写javaweb框架】(六)加载Controller,我封装了请求对象(Request)与处理对象(Handler),并写了ControllerHelper来维护维护Request与Handler之间的映射关系。集合上几篇编写的ClassHelper/BeanHelper/IocHelper/ControllerHelper,我们现在需要做的是在项目启动时把他们都加载进来。p

2018-01-28 23:03:26 217

原创 【从零写javaweb框架】(六)加载Controller

在上一篇我们实现了依赖注入功能【从零写javaweb框架】(五)实现依赖注入功能现在编写一个ControllerHelper通过ClassHelper,可以获取所有定义了Controller注解的类,然后再通过反射获取该类中所有带有Action注解的方法,获取Action注解中的请求表达式,进而获取请求方法与请求路径,封装一个请求对象(Request)与处理对象(Handler),最后将R

2018-01-28 16:05:13 581

原创 【从零写javaweb框架】(五)实现依赖注入功能

上一篇我们写了一个方便反射的工具类ReflectionUtil,和一个用来实例化和保存Bean的容器BeanHelper。【从零写javaweb框架】(四)实现Bean容器经过前几篇的积累,我们现在终于可以写依赖注入的功能了,一个简单的IOC并不难实现。先简单介绍一下IOC(Inversion of Control,控制反转),意思是实例化过程并不是由开发者用new的方式来实例化,

2018-01-26 00:43:26 251

原创 【从零写javaweb框架】(四)实现Bean容器

上一章,我们写了ClassUtil类,用于提供与类操作相关的方法,然后又写了Controller/Service注解来标识框架要加载的类,Action用于标识Controller里的方法,Inject用于实现依赖注入,最后再写了一个ClassHelper来实行Bean类的加载和存取。【从零写javaweb框架】(三)开发一个类加载器本章我们会写一个Bean的容器,用来实例化和保存Bean。

2018-01-25 22:35:37 164

原创 【mysql索引】之使用索引扫描做排序

前言今天看了《高性能MySQL》的索引扫描做排序章节,并且亲身实践了一下,发现有些结果与原书不一样,个人猜测是MySQL版本不一样造成的,下面分享一下我个人的笔记。简介MySQL 有两种方式生成有序结果:通过排序操作或者按索引顺序扫描。如果EXPLAIN出来type列的值为index,则说明MySQL使用索引扫描来做排序。(这句有疑问,很多情况下都type都不是index,

2018-01-25 17:26:19 468

原创 【mysql索引】之覆盖索引

今天参考了《高性能MySQL》与几篇博文,总结一下我个人的对覆盖索引的理解。首先,覆盖索引并不是一种新的数据结构,它的意思是在查询的时候,利用到的索引已经完全包含需要查询字段的情况,在这种情况下,查询结果直接就是索引的值,并不需要再利用索引回表查询了。继续拿sakila数据库(MySQL安装好后自带的一个demo数据库)来举例,比如EXPLAIN SELECT ac

2018-01-24 18:08:20 145

原创 【从零写javaweb框架】(三)开发一个类加载器

上一篇我们写了4个常用工具类,1个维护常量的类,并且通过依赖它们用ConfigHelper实现了配置文件的读取,上一篇链接:【从零写javaweb框架】(二)定义和加载配置项,现在需要开发一个类加载器,用来加载包名下的所有类。现在写一个ClassUtil类,用于提供与类操作相关的方法(本篇文章都会在在框架项目中进行):package org.smart4j.framework.

2018-01-23 22:57:48 331

原创 【mysql索引】之多列索引

第零步:简单说一说多列索引并不是指建立多个单列索引,而是指在多个字段建立一个索引。在多个列上建立独立的单列索引大部分情况下并不能提高MySQL的查询性能,MySQL在5.0之后推出了索引合并策略(index merge),一定程度上可以使用多个单列索引来定位指定的行,但实际上更多时候说明了表上的索引建的很糟糕:1.当数据库服务器对多个单列索引做相交操作(

2018-01-22 14:19:29 729

原创 【从零写javaweb框架】(二)定义和加载配置项

上一篇我们搭建了项目环境【从零写javaweb框架】(一)搭建开发环境,接下来要做的是定义和加载框架的配置项第一步:定义配置项打开上一篇创建好的demo1示例项目,在src/main/resources目录下创建一个smart.properties文件,内容如下:#MySQL驱动smart.framework.jdbc.driver=com.mysql.jdbc.Driver#

2018-01-21 22:41:06 326

原创 【从零写javaweb框架】(一)搭建开发环境

编程的第一步都是从搭建项目开始,写框架也不例外。第一步:创建框架项目首先创建我们的框架的maven项目,创建好后,修改pom.xml:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo

2018-01-21 17:26:20 393

原创 【从零写javaweb框架】(零)前言

前言:首先想说的是,本系列的文章都是围绕黄勇写的《架构探险:从零开始写JavaWeb框架》一书,写这系列文章一方面是为了督促自己学习框架方面的知识,一方面是想分享自己在学习过程中对这本书的理解和感想。文章会从原书第3章开始写起(前两章主要内容是在IDEA中创建项目、写一个最简单的Web应用、Git仓库的简单使用),学习顺序和代码内容大部分会与原书一致,不一致的地方会指出来,中间会插入我个人的理解和...

2018-01-21 14:22:41 492

原创 【mysql索引】之前缀索引

第零步:简单说一说有时候需要索引很长的字符(例如BLOB,TEXT,或者很长的VARCHAR),这样会使得索引又大又慢。改良方法有:1.改用哈希索引(这里不讲)。2.使用字符串的前几个字符作为索引(即前缀索引)。下面具体主要说第2种方法,主要思路就是选择足够长的前缀以保证较高的选择性,同时又不能太长(造成空间浪费)。所谓选择性,是指不重复的索引数量除以总记录数,范围是(0,1],唯一索引之所以查询

2018-01-19 14:54:08 3939 2

原创 【数据结构】之利用并查集解决食物链问题

上一篇我简单地封装了一个并查集:【数据结构】之并查集简易封装这次用它来解决一个食物链的问题:/** * 食物链问题: * 有N只动物,编号为1到N,所有动物都属于A,B,C中的其中一种。 * 已知A吃B,B吃C,C吃A。 * 按顺序给出以下两种信息共K条: * 第一种:x和y属于同一种类。 * 第二种:x吃y。 * 然而这些信息可能会出错:有可能有的信息和之前给出的信息矛

2018-01-14 21:17:47 251

原创 【数据结构】之并查集简易封装

原理可以看上一节:【数据结构】之实现并查集下面对并查集进行简单的封装:头文件union_find.h:#ifndef INC_6_FOOD_LINK_UNION_H#define INC_6_FOOD_LINK_UNION_H#include #include typedef struct UnionFind{ unsigned int size; int

2018-01-14 21:08:47 130

转载 【REST】风格框架实战(从MVC到前后端分离)

本文转载自http://blog.csdn.net/justloveyou_/article/details/74379479#comments摘要:  本人在前辈《从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)》一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并实现前后端分离,该项目体现了一个具有REST风格项

2018-01-06 19:10:37 510

原创 【数据结构】之实现并查集

#include /** * 并查集适用于管理元素分组情况的数据结构,本质上是树结构(不是二叉树) * 可以高效的进行以下操作: * 1.判断两个元素是否属于同一组(通过判断两个元素的根节点是否一样即可) * 2.合并两个元素所在的组(把其中一个元素的根节点的父节点指向另一个元素的根节点) * * 在该实现下,进行一次操作的时间复杂度为O(a(N)) * 其中N是元素个数,a(N

2018-01-03 23:50:20 115

原创 【数据结构】之实现二叉搜索树

#include #include /** * 二叉树是比较高效的存取结构 * 单次操作的时间复杂度为O(logN),N为总元素个数 * 二叉搜索树满足一下特点: * 左子树上的所有节点都比自己小 * 右子树上的所有节点都比自己大 *///定义数树的节点typedef struct Node{ int val; //值 struct N

2018-01-03 00:58:06 111

原创 【树的算法】之求分割木板最小开销

#include #include using namespace std;/** * 原题: * 现需要将一块木板切成N块,每次切断木板是需要的开销为当前木板的长度。 * 例如要将长度为21的木板切成5/8/8三块木板,长21的木板切成13和8时,开销 * 为21,然后再将长度13的木板切成5和8时,开销为13,于是开销合计是21+13=34。 * 现求:按题目要求将木板切割完

2017-12-28 00:45:22 928

原创 【树的算法】之求最少加油次数

#include #include using namespace std;/** * 原题:一辆卡车需要行驶L单位的距离,开始时卡车有P单位的汽油,每开1单位距离会消耗1单位汽油。 * 汽油耗尽就无法再行驶,已知一路上有N个加油站,第i个加油站距离起点A[i]个单位,并且可供B[i]单位的汽油。 * 假设卡车的燃料箱可以容纳无限的汽油。问:该卡车是否可以到达终点,如果可以,输出最小要

2017-12-27 01:00:15 503

原创 【数据结构】之用堆实现优先队列

#include #include /** * 使用堆来实现优先队列 * 堆的最重要性质就是子节点的值>=父节点的值, * 而且树的节点是从上到下、从左到右的顺序紧凑排列的 *///这里我封装了一个二叉树typedef struct BinaryTree{ int *note; int size; void (*push)(struct BinaryTr

2017-12-25 23:16:27 281

原创 【动态规划】之求最长上升子序列长度(难度:2星)

#include /** * 最长上升子序列问题 * 原题:有一个数列,请求出这个数列中最长的上升子序列的长度。 * 例如4,2,3,1,5的最长上升子序列是2,3,5。长度为3 */#define MAX(x,y) (x>y?x:y)#define N 10static int a[N+1] = {9,1,5,3,6,8,7,2,1,10,11};/** * 思路:

2017-12-24 17:11:55 212

原创 【动态规划】之多重部分和问题(难度:3星)

#include /** * 原题: * 有N种不同大小的数字a[i], 每种各m[i]个,判断是否可以从这些数字之中 * 选出若干个使它们的和恰好为K */#define N 6#define K 35static int a[N] = {3,5,8,6,10,11};static int m[N] = {3,2,2,2, 3, 3};/** * 思路如下: *

2017-12-23 02:50:42 304

转载 【设计模式】之六大设计原则

原文http://geek.csdn.net/news/detail/249046在软件开发中有很多的设计模式,也有一些很高冷,谈谈我对软件设计的理解,以及让一些设计原则接地气。了解设计模式的朋友们,想必都听说过“六大设计原则”吧。其实最经典的 23 种设计模式中或多或少地都在使用这些设计原则,也就是说,设计模式是站在设计原则的基础之上的。所以在学习设计模式之前,很有必要对这些设计

2017-12-21 20:57:23 151

原创 【动态规划】之完全背包问题(难度:2星)

#include /** * 原题: * 一个贼在偷窃一家商店时发现了N种物品,其中第i种值v[i]元,重w[i]磅。 * 他希望偷走的东西总和越值钱越好,但是他的背包只能放下W磅。 * 注意,这里与01背包不同:每件物品可以拿多次 * 请求解如何放能偷走最大价值的物品,这里v[i]、w[i]、W都是整数 */#define MAX(x,y) (x>y?x:y)#define

2017-12-18 21:40:23 246

原创 【动态规划】之最长公共子序列长度(难度:1星)

#include /** * 原题: * 给定两个字符串S和T,求出这两个字符串的最长公共子序列的长度 * 例如X={A,B,C,B,D,A,B},Y={B,D,C,A,B,A} * 则它们的lcs是4 ({B,C,B,A}和{B,D,A,B})。求出一个即可。 */#define MAX(x,y) (x>y?x:y)#define SL 7#define TL 6sta

2017-12-18 02:01:33 165

原创 【动态规划】之01背包问题(难度:2星)

#include /** * 原题: * 一个贼在偷窃一家商店时发现了N件物品,其中第i件值v[i]元,重w[i]磅。 * 他希望偷走的东西总和越值钱越好,但是他的背包只能放下W磅。 * 请求解如何放能偷走最大价值的物品,这里v[i]、w[i]、W都是整数 */#define MAX(x,y) (x>y?x:y)#define N 5#define W 11static i

2017-12-17 20:40:54 176

原创 【动态规划】之字符串编辑距离(难度:2星)

#include /** * 对于序列S和T,它们之间距离定义为:对二者其一进行几次以下的操作 * (1)删去一个字符;(2)插入一个字符;(3)改变一个字符。每进行一次操作,计数增加1。 * 将S和T变为同一个字符串的最小计数即为它们的距离。给出相应算法。 */#define MIN(x,y) (x<y?x:y)#define INF 50000#define SL 7

2017-12-16 23:35:58 205

医疗信息管理

很好用的管理系统.经常用于医疗管理系统。

2013-12-27

Maven3.2.5 教程 电子版

Apache Maven 是一套软件工程管理和整合工具。基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建、报告和文档。 本教程将教你如何在使用 Java 开发的工程中,或者任何其他编程语言中使用 Maven。

2017-10-20

C程序设计语言(第2版)电子版带目录

C程序设计语言(第2版)电子版带目录-The_C_Programming_Language.pdf

2017-09-23

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