- 博客(32)
- 资源 (1)
- 收藏
- 关注
原创 排序算法
本节分析及实现8大排序算法及其改进。使用了外存(一般是磁盘)的排序称为外部排序,否则是内部排序。1、冒泡排序每次排序将一个最大值放到待排序数组的末尾。实现如下:public class Sort{ private int[] array; public Sort(int[] array){ this.array = array; } public void dis...
2018-07-29 21:33:57 212
原创 链表
链表是链式存储结构所用的数据结构。根据结点中保存的索引类型分为单链表、双端链表、有序链表和双向链表。单链表的实现如下:class Link{ public int key; public String value; public Link next; public Link(int key,String value){ this.key = key; this.val...
2018-07-29 16:05:23 252
原创 零散算法
1、字符串匹配朴素的串匹配算法:KMP匹配算法:2、广度优先搜索BFS3、深度优先搜索DFS4、狄克斯特拉算法Dijkstra5、贪婪算法6、动态规划7、安全散列算法SHA用递归分析问题,基于循环写代码。10、关于查找算法(1)遍历(数组、链表、xml)(2)二分查找(前提有序)(3)hash表查找:哈希表的特点就是查找效率高,时间复杂度为常数级...
2018-07-29 12:38:08 207
原创 Python3面向对象编程
1、类名用驼峰法,每个单词首字母大写。2、Python有构造函数__new__和初始化函数__init__。3、绝对导入:需要指明模块、函数的完整路径。 相对导入:. ..4、每个模块的__name__属性,导入的时候赋值模块名字,直接执行的时候赋值__main__。5、一个类里的所有属性和方法都是公共的,可以加_前缀提示是私...
2018-07-28 22:47:11 312
原创 面试题流散汇总
1、n位数全排列 大字符串相加 SQL HTTPS 根据简历来问2、MapReduce和Spark的主要区别在于,MapReduce使用持久存储,而Spark使用弹性分布式数据集(RDDS)。Spark之所以如此快速,原因在于它在内存中处理一切数据。没错,它还可以使用磁盘来处理未全部装入到内存中的数据。Spark已证明在数据多达PB的情况下也轻松自如。它被用于在数量只有十分之一的机器上,对10...
2018-07-27 23:34:59 164
原创 队列
1、与栈相比,队列是FIFO的,为了避免队列溢出,保持灵活性,一般使用循环队列,那么front元素不一定指向队列的第一个位置,因为队列在不断变化。基本循环队列的实现如下:public class Queue{ private int front = 0; private int rear = 0; private int[] data; private int length = ...
2018-07-23 22:55:36 138
原创 Python Web系列学习4-Twisted
1、Twisted是一个高性能的编程框架,在不同的操作系统上利用不同的底层技术实现了高效能通信。在Windows中,Twisted的实现基于I/O完成端口技术。在开发方法上,使用异步编程模型。2、在异步编程模型与多线程模型之间还有一个不同:在多线程程序中,对于停止某个线程启动另外一个线程,其决定权并不在程序员手里而在操作系统那里,因此,程序员在编写程序过程中必须要假设在任何时候一个线程都有可能...
2018-07-22 18:55:48 241
原创 栈
栈是LIFO的,一般用数组来实现栈,当然也可以用链表实现。栈的最基本操作有出栈、入栈、判空、判满、取栈顶元素等。保持一般性,栈顶元素指向栈最新插入的元素(注意和PC分开,PC指向下一个可用地址)。1、栈的基本实现public class Stack{ private int[] data; private int top = -1; private int max_length...
2018-07-22 11:11:01 127
原创 数据结构与算法分析概括
参考博文:https://blog.csdn.net/u012152619/article/details/420596751、时间复杂度之间的关系:O(1)<O(logn)<O(n)<O(nlog n)<O(n2)<O(2n)<O(n!)<O(nn)2、常用算法设计思想枚举法贪心法分治法回溯法动态规划法分支限界法3...
2018-07-22 08:22:58 504
原创 Linux Shell拾遗1
1、echo添加 -e使用转义,env命令查看环境变量。2、变量赋值不要加空格,加$打印变量内容,export声明全局环境变量,export PATH=$PATH:/xxx/yyy新增环境变量,众所周知的环境变量HOME、PWD、USER、UID、SHELL。3、识别当前shell,echo $SHELL或echo $0。root用户的UID为0。4、$?上一个命令的执行结果,标准输入...
2018-07-21 20:47:30 239
原创 Java拾遗1
1、纯粹的面向对象,编译型和解释型语言,编译直接生成特定平台机器码的就是编译型语言。每次运行都需要重新编译解释运行的就是解释型语言。java先由javac编译.java文件生成.class字节码文件。java解释器就是JVM,java通过JVM跨平台。jre包含jvm,javase是基础。2、编译:javac -d destdir srcFile 运行:java 类名类必须...
2018-07-21 19:08:34 220
原创 Python拾遗1
1、变量名是给编译器和程序员看的,操作时转换成地址,符号表起连接作用。符号表包括常数表、变量名表、数组表、过程名表、标号表等。2、python为什么比C/C++慢?a、支持动态类型,执行时需要先判断类型;b、执行时需要先翻译再执行,效率低;c、虚拟机带来间接开销;d、GIL带来的伪多线程问题。3、Psyco是PVM增强工具,将部分程序字节码转换成真正的二进制机器码,加快执行...
2018-07-20 22:51:09 472
原创 Java学习之Spring MVC
1、SpringMVC是一个包含了Dispatcher Servlet的MVC框架。原理与Struts类似,开发风格也与Struts类似。 HttpServletBean主要参与了创建工作,没有参与请求处理;FrameworkServlet重写了service、doGet、doPost、doPu...
2018-07-15 23:06:59 173
原创 Java学习之MyBatis
1、与其他的ORM框架不同,MyBatis并没有将Java对象与数据库表关联起来,而是将Java方法与SQL语句关联,MyBatis提供了默认情况下基于Java HashMap的缓存实现。每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFa...
2018-07-14 22:46:36 286
原创 Java多线程编程
1、Java多线程推荐两本比较好的书,《Java多线程编程实战指南-核心篇.pdf》2017年出版,内容新,讲解清晰,首推这本,然后是《Java多线程编程核心技术》2015年出版,由浅入深,编程例子多,也不错。...
2018-07-11 19:28:42 99
原创 Java学习之笔试面试题总结
1、浅复制(浅克隆) :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深复制(深克隆) :被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制...
2018-07-11 07:21:18 139
原创 python爬虫系列12--Scrapy应用
1、Scrapy架构 2、每个Spider必须继承自scrapy.Spider类,scrapy.Spider没有什么特殊的功能,仅仅提供了start_requests()的默认实现,读取并请求Spider属性中的start_urls,并根据返回的response调用Spider的parse方法。Scrapy除了提供S...
2018-07-09 23:18:27 354
原创 Python Web系列学习3-Tornado
1、Tornado常被用作大型站点的接口服务框架,协程是Tornado推荐的编程方式。Tornado集成了丰富的用户身份验证功能。2、同步I/O可以理解为被调用的I/O函数会阻塞调用函数的执行,而异步I/O则不会。tornado.httpclient.HTTPClient,tornado.httpclient.AsyncHTTPClient。tornado的协程库gen。@gen.co...
2018-07-08 22:36:12 366
原创 Python Web系列学习2-Django
1、django-admin:Django项目管理工具,建立一个Django项目用 django-admin startproject xxx,生成的站点目录结构为:2、进入站点目录,建立一个应用:python manage.py startapp 应用名称 3、在完成Django项目和应用的建立后,开始编写网站的应用代码,4、python manage .py run...
2018-07-08 22:20:36 152
原创 Python Web系列学习1
1、全栈网络框架:除了封装网络和线程操作,还提供HTTP栈、数据库读写管理、HTML模板引擎等一系列功能的网络框架。Django、Flask、Tornado是全栈网络框架的典型标杆,Twisted更专注于网络底层的高性能封装而不提供HTML模板引擎等界面功能。2、目前主流的Web服务器包括Nginx、Apache、lighttpd、IIS等,Python服务器端程序在Linux平台下使用最广泛...
2018-07-08 21:17:16 225
原创 数据库编程之ORM
ORM(Object-Relational Mapping,对象关系映射)的作用是在关系型数据库和业务实体对象之间做一个映射,这样在操作数据库时就可以不必使用SQL语句而是操作对象的属性和方法。所有ORM必须具备三方面的基本能力:映射技术、CRUD操作和缓存优化。 每种语言都有自己的ORM库,如Java的Hibernate、iBatis,Python的SQLAlche...
2018-07-08 20:45:48 165
原创 Python并发编程
+ 协程协程,Coroutine,是一种用户态的轻量级线程。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方(非CPU),在切回来的时候,恢复先前保存的寄存器上下文和栈。因此:协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,CPU感觉不到协程的存在,协程是用户自己控制的。协程实现原理:利用一个线...
2018-07-08 19:11:00 7654 1
原创 重拾C++
1、C++ = C(面向过程) + C++(面向对象) + C++(泛型)最新的C语言标准是C99。输出流#include <iostream>using namespace std;int main(void)cout << "come up to learn c++"endl与\n:endl确保程序继续运行前刷新输出。2、不允许函数...
2018-07-08 09:54:01 270
原创 Java学习之Spring
1、Spring的核心:依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming,AOP)。Spring的目标就是简化Java开发,通过DI,对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定,对象无需自行创建或管理他们的依赖关系。...
2018-07-08 00:15:08 420
原创 HTML5 CSS3 JavaScript jQuery Ajax
+ HTML51、DTD丁定义了HTML和XHTML的语义约束,包括HTML文档中可以出现哪些元素,各元素支持哪些属性等。2、基本的HTML5文档:<!DOCTYPE html><html><head><title>页面标题</title><meta http-equiv="Content-Type" content="tex
2018-07-04 23:16:23 2532
原创 Java Web学习笔记2
+ 编码常见的编码方式有ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16。ASCII码表示128个字符显然是不够的,ISO-8859-1到ISO-8859-15扩展ASCII,ISO-8859-1涵盖了大多西欧语言字符,所以应用最广泛;GB2312是双字节编码,范围是A1-F7,包含符号区和汉字区;GBK是为了扩展GB2312,兼容GB2312;GB1803...
2018-07-04 07:20:48 152
原创 Java IO NIO NIO2
I/O问题是整个人机交互的核心问题,很容易形成性能瓶颈。Java的I/O操作类在包java.io下,可分为如下4组:1、基于字节操作的I/O接口:InputStream和OutputStream;2、基于字符操作的I/O接口:Writer和Reader;3、基于磁盘操作的I/O接口:File;4、基于网络操作的I/O接口:Socket。前两组主要是传输数据的数据格式,后两组主要是传输数据的方式。J...
2018-07-03 22:56:03 1412
原创 Java学习之架构初识
1、CDN和反向代理的基本原理都是缓存。CDN使用户从离自己最近的服务器上获取数据,用户请求到达机房后首先访问反向代理服务器,如果反向代理服务器缓存了用户请求的资源则直接返回给用户。2、一台服务器满足不了需求,不要试图更换更强大的服务器,只需增加一台服务器,分担负载,可以达到更好的效果。3、大型网站架构模式:分层、分割、分布式、集群、缓存、异步、冗余、自动化、安全。4、单机网站——应用服务器和数据...
2018-07-01 23:07:46 141
原创 Java学习之Struts 2.x
与传统的Struts1.x相比,Struts2.x允许使用更普通的、传统的Java对象作为Action;Action的execute(0方法不再与Servlet API耦合,因而更易测试;支持更多的视图技术;基于AOP思想的拦截器机制,提供了极好的可扩展性,整合Ajax支持等。...
2018-07-01 21:54:59 142
原创 Java学习之Struts 1.x
Struts是Java开发中应用最广泛的MVC框架,Struts1.x就是原来的Struts框架,Struts2.x为原来的WebWork框架,它们代表着两种不同的设计思想。
2018-07-01 21:39:07 180
原创 Java学习之CleanCode
1、童子军军规:代码提交比编写、修改之前更整洁。2、关于命名:名副其实,Java命名规范,根据已有的优秀框架命名规范来,避免误导,做有意义的区分,使用读得出来的名称,使用可搜索的名称,避免使用编码,避免思维映射,类名和对象名应该是名词或名词短语,方法名应该是动词或动词短语,每个概念对应一词,别用双关语,不要添加没用的语境。3、函数:第一规则是短小,缩进层级不该多于一层或两层,只做一件事,每个函数一...
2018-07-01 12:36:05 743
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人