React 入门 04 - props 和 state 前言在前文React 入门 03 - 元素与组件中学习了React基础元素与组件,今天来探究一下React组件的两个基本属性props和state的用法与区别。它们的一个重要的不同点就是:props是传递给组件的(类似于函数的形参),具有只读特性,是不可修改的。state是组件内自己管理的(类似于函数内声明变量),是可以用特定方式进行值更新的。propsprops(“propert...
React 入门 03 - 元素与组件 前言从React 入门 02 - JSX学习了JSX的基本用法,本文我们开始深入探讨React 元素与组件。React 元素元素是构成React引用的最小砖块,描述了你在屏幕上想看到的内容。与浏览器的 DOM 元素不同,React 元素是创建开销极小的普通对象。React DOM 会负责更新 DOM 来与 React 元素保持一致。ReactDOM.render(...) 即用...
React 入门 02 - JSX 前言在 React 入门 01 - Hello World中,简单了解了下React基本概念以及如何运用到Html中。现在我们学习一下在React中配合使用最多的JSX相关知识。JSXJSX,是一个 JavaScript 的语法扩展。比如如下行语句,它既不是单纯Html语句也不是普通Java Script。JSX 可以很好地描述 UI 应该呈现出它应有交互的本质形式,在React中配合...
React 入门 01 - Hello World 前言基于项目需求,最近开始不得不接触前端开发的领域啦。吼吼,从此是不是可以成为所谓全栈开发了????~此系列学习笔记依然是以帮助自己学习、消化以及回忆为目的,将会涉及学习React,Type Script 以及目标 React Native 的心路历程。Git ????戳我吧~ReactReact 官方系列教程是我学习的主要参考资料。React 是一个用于构建用户界面的 JavaScri...
改善代码质量编程规范 - 学习总结 命名与注释命名范围项目名 包名 接口名 类名 函数名 变量名 参数名原则建议准确达意 对不同作用域,合理选择不同的长度。作用域较小如局部变量,可使用较短的缩写。 参考经典开源系统,使用耳熟能详的名字 借助上下文简化命名 借助类的信息简化属性和函数的命名,无需在属性和函数名字中再加入类名 借助函数的信息简化参数的命名 增加可读、可搜索醒 避免使...
Java Collections - Array 和 String 常用函数 Array基本操作完整代码请戳????GitHub~Array to String使用 Arrays.toString(...) 将数组转换为基本字符串。String[] array = new String[] {"One", "Two", "Three"};System.out.println(array); // [Ljava.lang.String;@61bbe9baSy...
Get to know Lambda and Functional Interfaces in Java 8 In simple words, a lambda expression is an instance of a functional interface. But a lambda expression itself does not contain the information about which functional interface it is implementing; that...
Java hashCode() and equals() – Contract, rules and best practices A good article to talk about Java hashCode and equals.
Leetcode 961. N-Repeated Element in Size 2N Array 题目In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is repeated N times.Return the element repeated N times. Example 1:Input: [1,2,3,3]Output: 3E...
Leetcode 965. Univalued Binary Tree 题目A binary tree is univalued if every node in the tree has the same value.Return true if and only if the given tree is univalued. Example 1:Input: [1,1,1,1,1,null,1]Output: trueExampl...
Leetcode 971. Flip Binary Tree To Match Preorder Traversal 题目Given a binary tree with N nodes, each node has a different value from {1, ..., N}.A node in this binary tree can be flipped by swapping the left child and the right child of that node.Conside...
LeetCode 970. Powerful Integers 题目Given two non-negative integers x and y, an integer is powerful if it is equal to x^i + y^j for some integers i >= 0 and j >= 0.Return a list of all powerful integers that have value less ...
LeetCode 771. Jewels and Stones 题目You're given strings J representing the types of stones that are jewels, and S representing the stones you have. Each character in S is a type of stone you have. You want to know how many of the...
中国电信 CTExcel - 亲测境外首选电话卡(推荐码:SHQL 或 KJNC) 官网中国电信美洲公司CTExcelhttps://www.ctexcel.us/index_pc.jsp?language=zh微信公众号 - “中国电信美洲公司”亲测好用因为公司内部调动,12月要去美国工作。机缘巧合,看到了网友推荐的境外电话卡 - 中国电信CTExcel。哈哈,是不是必须点进去瞅一眼~ 这一看一对比不要紧,当下就决定出国就用它了。话不多说,看图:...
Log4j、Log4j 2、JUL、JCL 、SFL4J 、Logback 与 Lombok 的使用 Log4JLog4j = Log for Java.Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、数据库等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。 Log4j有7种不同的log级别,按照等级从低到高依次为:TRACE<DEBUG<INFO<...
LeetCode(617) Merge Two Binary Trees 题目Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.You need to merge them into a new bin
LeetCode(657)Judge Route Circle 题目Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot makes a circle, which means it moves back tothe original place. The move sequence is repres
LeetCode(461) Hamming Distance 题目The Hamming distance between two integers is the number of positions at which the corresponding bits are different.Given two integers x and y, calculate the Hamming distance.Note:0 ≤ x,
面向对象OOA、OOD、OOP OOAObject-Oriented Analysis:面向对象分析方法OOA是指在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别,OOA强调在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。OOA(面向对象的分析)模型由五个层次:主题层、对象类层、结构层、属性层和服务层,五
IntelliJ IDEA Ultimate 安装&激活 序搞了两年多的C++,然而由于未来工作语言选择,又要奔回Java ~\(≧▽≦)/~啦啦啦~向有经验的同学打听了下,大部分公司选择的IDE都是IntelliJ IDEA。既然又认识了一个新工具,必须先拿来练练手呀,不能入职之后,对于工具还是小白吧~安装先去官网IntelliJ看一看,有两个版本:Community免费版可用于开发简单的J2SE项目,但对于J2EE,JS等
C++实现单例模式 单例模式单例模式,可以说设计模式中最常应用的一种模式了,据说也是面试官最喜欢的题目。但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况,可能会优先考虑使用全局或者静态变量的方式,这样比较简单,也是没学过设计模式的人所能想到的最简单的方式了。一般情况下,我们建立的一些类是属于工具性质的,基本不用存储太多的跟自身有关的数据,在这种情况下,每次都去new一
三次握手的第三个ACK包丢了——客户端认为连接建立,写数据时,会触发RST 序上次面试被问到一个问题,在TCP建立连接的三次握手阶段,如果客户端发送的第三个ACK包丢了,那么客户端和服务器端分别进行什么处理?听到问题,一下愣掉,有点傻了,根据读书时模模糊糊的印象,答了答,无疑打错了T...T分析当Client端收到Server的SYN+ACK应答后,其状态变为ESTABLISHED,并发送ACK包给Server; 如
LintCode (192)通配符匹配 题目判断两个可能包含通配符“?”和“*”的字符串是否匹配。匹配规则如下:'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个串完全匹配才算匹配成功。函数接口如下:bool isMatch(const char *s, const char *p)您在真实的面试中是否遇到过这个题?样例一些例子:isMa
将搜索二叉树转换成双向链表 题目对二叉树的节点来说, 有本身的值域, 有指向左孩子和右孩子的两个指针; 对双向链表的节点来说,有本身的值域, 有指向上一个节点和下一个节点的指针。 在结构上, 两种结构有相似性, 现在有一棵搜索二叉树, 请将其转换为一个有序的双向链表。分析用两种方法求解本题。方法一:由于是搜索二叉树,直接求出其中序遍历序列,构造双向链表即可。方法二:采用递归实现
LeetCode(87) Scramble String 题目Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.Below is one possible representation of s1 = "great": great /
LeetCode(191)Number of 1 Bits 题目Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).For example, the 32-bit integer ’11' has binary representatio
LeetCode(326) Power of Three 题目Given an integer, write a function to determine if it is a power of three.分析本题判断给定一个整数是否为3的整次幂,不可用递归和循环。32bit表示的int,3的整次幂最大数为1162261467,所以只需判断给定整数n能否被该最大数整除即可。代码class S
LeetCode(231) Power of Two 题目Given an integer, write a function to determine if it is a power of two.分析判断给定整数是否为2的整次幂。当该整数对应的二进制串中只有1位1时,必然为2的整次幂。只需判断n&(n-1)是否为0即可。代码#include #include using namespace
LeetCode(350)Intersection of Two Arrays II 题目Given two arrays, write a function to compute their intersection.Example:Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].Note:Each element in the result should appe
LeetCode(383)Ransom Note 题目Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be
LeetCode(389) Find the Difference 题目Given two strings s and t which consist of only lowercase letters.String t is generated by random shuffling string s and then add one more letter at a random position.Find the letter t
递归与非递归求二叉树深度 题目分别用递归与非递归算法求二叉树深度。分析方法一:递归方法大家都很熟悉,如何用非递归求解呢?我们知道二叉树有层序遍历,利用层序遍历的过程,记录当前层数,那么遍历结束后也就求得二叉树的层数,即深度。方法二:层序遍历需要使用一个队列来保存树的节点。初始化讲根节点入队。接着只要队列不为空,则出队,并将出队元素的子节点入队。当需要记录树的深
LeetCode(179) Largest Number 题目Given a list of non negative integers, arrange them such that they form the largest number.For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.Note: The result m
LeetCode(349)Intersection of Two Arrays 题目Given two arrays, write a function to compute their intersection.Example:Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].分析求两个数组的交集,结果不含重复元素。代码/*349. Intersection
LeetCode(371) Sum of Two Integers 题目Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.Example:Given a = 1 and b = 2, return 3.分析考察位运算,不用+ - 计算两数之和。代码/*371. Sum of
LeetCode(386)Lexicographical Numbers 题目Given an integer n, return 1 - n in lexicographical order.For example, given 13, return: [1,10,11,12,13,2,3,4,5,6,7,8,9].Please optimize your algorithm to use less time and space. The
LeetCode(387)First Unique Character in a String 题目Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.Examples:s = "leetcode"return 0.s = "loveleetcode",return 2.
LeetCode(344) Reverse String 题目Write a function that takes a string as input and returns the string reversed.Example:Given s = "hello", return "olleh".分析字符串逆转,左右指针。代码class Solution {public:
LeetCode(130) Surrounded Regions 题目Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'.A region is captured by flipping all 'O's into 'X's in that surrounded region.For exam
LeetCode(85) Maximal Rectangle 题目Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's and return its area.For example, given the following matrix:1 0 1 0 01 0 1 1 11 1 1
二叉树中插入节点的递归与非递归 题目 给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。样例给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的: 2 2 / \ / \1 4 --> 1 4 / / \ 3
二叉树和为某一值的路径 题目题目:二叉树和为某一值的路径描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。延伸:若要求路径不一定非得从二叉树的根节点或叶节点开始或结束,求所有节点数值总和等于某个给定值的所有路径。分析找出二叉树中所有满足要求的路径,基础题要求该路径
探析求树中两个节点p和q的最低公共祖先 题目树中两个节点的最低公共祖先。分析描述十分简洁的题目,其实有多种变体;我们从4种情况来讨论:情况1,在二叉搜索树中找节点p和q的最低公共祖先情况2,非二叉搜索树,只是普通的二叉树,树中每个节点包含指向父节点的指针情况3,非二叉搜索树,只是普通的二叉树,且树中每个节点不包含指向父节点的指针情况4,非二叉树,只是普通的多叉树,且树中每个
判断树T2是否为T1的子树 题目你由两颗非常大的二叉树:T1,有几百万个节点;T2有几百个节点。设计一个算法,判断T2是否为T1的子树。如果T1有一个节点n,其子树与T2一模一样,则T2为T1的子树。也就是说,从节点n处把树砍断,得到的树与T2完全相同。分析方法一:在规模较小且较简单的问题中,我们可以创建一个字符串,表示中序和前序遍历结果。若T2的前序遍历是T1前序遍历的子串,并且
求二叉查找树指定节点后继 题目设计一个算法,找出二叉查找树中指定节点的“下一个节点”(也就是中序后继)。可以假定每个节点都含有指向父节点的链接。分析既然是二叉查找树,我们知道中序遍历结果为递增有序,那么可以直接得到中序遍历结果,在线性查找指定节点的后继。上述方法是普通解法,但是我们看到题目说每个节点有父节点指针,那么我们可以换一个思路:(1)假设该节点有右子树,那么根据中序遍历的
判断二叉查找树的三种方法 题目实现一个函数,判断一棵二叉树是否为二叉查找树。分析我们知道一棵二叉查找树的中序遍历序列是有序的,所以只需求出中序遍历结果,再依次判断该序列是否有序即可。但是上述方法需要额外线程空间保存遍历结果,在此可以省去该空间开销,只需一个变量保存访问当前节点时上一节点的值即可。本文还提供了另一种方法,基于left代码/*题目描述请实现一个函数,检查
创建二叉平衡树 题目给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉查找树。分析高度最小的二叉查找树,显然只能是二叉平衡树。那么如何根据升序数组建立二叉平衡树,很简单,只需找到中间节点作为根,同理递归建立左右子树即可。代码/*题目描述对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。给定
判断二叉平衡树的三种方法 题目实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下,任意一个节点,其两颗子树的高度差不超过1。分析判断平衡二叉树是一个常见题目,一般来说,我们都是求出左右子树的高度,根据定义判断其差。下面给出三种实现方法,大家可以对比其优劣。代码/*题目描述实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向
常见C++面试问题总结2 【1】虚函数和纯虚函数?区别和应用? 【2】知道哪些IO模型?见《Unix网络编程··卷一》P123(1)阻塞式I/O(2)非阻塞式I/O(3)I/O复用(4)信号驱动式I/O(5)异步I/O 【3】QQ哪些功能用了TCP?哪些用了UDP?UDP不可靠,为什么还要用它? 腾讯QQ即使用了TCP又是用了UDP,但是以UDP为主
STL深入探究(二、容器的底层实现) 1 前言上一篇 STL深入探究(一、空间配置器)我详细总结了SGI STL采用的空间配置机制,这一篇来总结一下stl容器的底层实现机制。2 序列式容器2.1 VectorVector实现方式类似于“数组”,与array的数据安排和操作方式非常类似,两者唯一的差别就在于空间运用的灵活性。array是静态空间,一旦配置了就不能改变,要想换一个大点的空间,就必
STL深入探究(一、空间配置器) 序STL 是 Standard Template Library(标准模板库)的缩写。Standard 是指STL是C++标准程序库的一部分,Template是指STL是一套模板,这也是STL最本质的特征。标准模板库使得C++编程语言在有了同Java一样强大的类库的同时,保有了更大的可扩展性。2. STL六大组件2.1空间配置器(Memory Allocation)负责空间配置
最长递增子序列B 题目题目地址:牛客网--完美世界笔试原题给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)例如:给定一个长度为8的数组A{1,3,5,2,4,6,7,8},则其最长的单调递增子序列为{1,2,4,6,7,8},长度为6.输入描述:第一行包含一个整数T,代表测试数据组数。对于每组测试数据:N-数组的长度a1 a2 ..
C++编程之内存管理(再谈) 1.内存分配方式在 常见的内存错误及其对策 C++中,内存分成 5 个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程
LINUX环境并发服务器的三种实现模型 服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器。按处理方式来分有循环服务器和并发服务器。1 循环服务器与并发服务器模型在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:·循环服务器:服务器在同一时刻只能响应一个客户端的请求·并发服务器:服务器在同一时刻可以响应多个客户端的请求
常见C++面试问题总结1 C++面试总结【1】同步通信和异步通信的区别?答:1) 同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。2) 同步通信效率高;异步通信效率低。3) 同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。【2】TCP协
KMP算法 序对于字符串章节的模式匹配,一直都很排斥去深入学习。不过逃避总归解决不了问题,还是硬着头皮去看吧~解析解析后续补充,今天先附代码。KMP代码#include #include #include #include using namespace std;/***********************************************
LintCode(85)在二叉查找树中插入节点 题目 在二叉查找树中插入节点给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。样例给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的: 2 2 / \ / \1 4 --> 1 4 /
LintCode(72)中序遍历和后序遍历树构造二叉树 题目 中序遍历和后序遍历树构造二叉树根据中序遍历和后序遍历树构造二叉树样例给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2]返回如下的树: 2 / \1 3分析递归解决。Python代码"""Definition of TreeNode:cla
LintCode(105) 复制带随机指针的链表 题目 复制带随机指针的链表给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。返回一个深拷贝的链表。 分析一个经典题目,思想就是在复制每个原节点链接其后,然后依次添加新节点的random指针。遍历复制后的链表,删除原节点。就不详述了,看代码,重点是练习Python实现~~
LintCode(99) 重排链表 题目 重排链表给定一个单链表L: L0→L1→…→Ln-1→Ln,重新排列后为:L0→Ln→L1→Ln-1→L2→Ln-2→…必须在不改变节点值的情况下进行原地操作样例给出链表1->2->3->4->null,重新排列后为1->4->2->3->null。分析该题目要求将链表后半段逆序逐个插入前
Python2 爬虫(九) -- Scrapy & BeautifulSoup之再爬CSDN博文 序我的Python3爬虫(五)博文使用utllib基本函数以及正则表达式技术实现了爬取csdn全部博文信息的任务。链接:Python3 爬虫(五) -- 单线程爬取我的CSDN全部博文上一篇Python3 爬虫(八) -- BeautifulSoup之再次爬取CSDN博文,我们就利用BeautifulSoup4重新实现了一次爬取csdn博文的任务。那么,既然认识了Scrapy和
Ubuntu15 安装Pycharm 一、目标实现在Linux下用pycharm调试工具/Python开发 Linux使用vi/vim工具写Python,缺点:调试不方便,无代码提示、跳转等诸多功能。Windows使用idle/pycharm/eclipse等,环境包安装麻烦。写好的代码往往也得迁移至Linux服务器环境。解决办法:直接在Linux环境下安装pycharm编译器。 附:a
Python3 爬虫(八) -- BeautifulSoup之再次爬取CSDN博文 序我的Python3爬虫(五)博文使用utllib基本函数以及正则表达式技术实现了爬取csdn全部博文信息的任务。链接:Python3 爬虫(五) -- 单线程爬取我的CSDN全部博文上一篇,我们学习了BeautifulSoup这样一个优秀的Python库,必须有效利用起来。那么我们就利用BeautifulSoup4重新实现一次爬取csdn博文的任务。由于我修改了博客配置,
Python3 爬虫(七) -- 配置BeautifulSoup4+lxml+html5lib 序Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml 。另一个可供选择的解析器是纯Python
LintCode(103)带环链表 II 题目给定一个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。您在真实的面试中是否遇到过这个题? Yes样例给出 -21->10->4->5, tail connects to node index 1,返回10分析上一题的进阶。首先,利用快慢指针判断有无环,若遇到slow ==
LintCode(102) 带环链表 题目给定一个链表,判断它是否有环。您在真实的面试中是否遇到过这个题? Yes样例给出 -21->10->4->5, tail connects to node index 1,返回 true分析判断链表有无环的问题,很经典,也是面试中常见的问题。快慢指针解决。Python代码"""Defini
LintCode(101)删除排序数组中的重复数字 II 题目跟进“删除重复数字”:如果可以允许出现两次重复将如何处理?您在真实的面试中是否遇到过这个题? Yes样例给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]。分析与上题思路相同,只需要增加一个记录元素出现次数的变量即可,限制最多出现2次。Pyt
LintCode(100)删除排序数组中的重复数字 题目给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。您在真实的面试中是否遇到过这个题? Yes样例给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。分析对排序数组去重,要求空间复杂
LintCode(56) 两数之和 题目给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。 注意事项你可以假设只有一组答案。您在真实的面试中是否遇到过这个题? Yes样例给出 nu
Python2 爬虫(六) -- 初尝Scrapy框架 1、Scrapy简介Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy官网文档 -- 戳我
Python3 爬虫(五) -- 单线程爬取我的CSDN全部博文 序本文我实现的是一个CSDN博文爬虫,将我的csdn博客http://blog.csdn.net/fly_yr/article/list/1 中的全部博文基本信息抓取下来,每一页保存到一个文件中。先来看一下我的博客页面:确定要提取的信息:发表日期是否原创标记博文标题博文链接浏览量评论量从上第二个图中可以看出,我的博文目前有20页共384条数据,我
Python3 爬虫(四) -- 登录知乎 序有些网站需要用户登录,利用python实现知乎网站的模拟登录。用Cookies记录登录信息, 然后就可以抓取登录之后才能看到的信息。知乎登录首页第一、使用Fiddler观察“登录”浏览器行为打开工具Fiddler,在浏览器中访问https://www.zhihu.com,Fiddler 中就能看到捕捉到的所有连接信息。在左侧选择登录的那一条: 观察右侧,打开 Inspactors 透视图, 上方
Python3 爬虫(三) -- 爬取豆瓣首页图片 序前面已经完成了简单网页以及伪装浏览器的学习。下面,实现对豆瓣首页所有图片爬取程序,把图片保存到本地一个路径下。首先,豆瓣首页部分图片展示这只是截取的一部分。下面给出,整个爬虫程序。爬虫程序这个爬取图片的程序采用伪装浏览器的方式,只不过是加了处理图片的模块。'''批量下载豆瓣首页的图片采用伪装浏览器的方式爬取豆瓣网站首页的图片,保存到指定路径文件夹下'''
Python3 爬虫(二) -- 伪装浏览器 伪装浏览器对于一些需要登录的网站,如果不是从浏览器发出的请求,则得不到响应。所以,我们需要将爬虫程序发出的请求伪装成浏览器正规军。具体实现:自定义网页请求报头。使用Fiddler查看请求和响应报头打开工具Fiddler,然后再浏览器访问“https://www.douban.com/”,在Fiddler左侧访问记录中,找到“200 HTTPS www.douban.com”这一
Python3 爬虫(一)-- 简单网页抓取 序一直想好好学习一下Python爬虫,之前断断续续的把Python基础学了一下,悲剧的是学的没有忘的快。只能再次拿出来滤了一遍,趁热打铁,借鉴众多大神的爬虫案例,加入Python网络爬虫的学习大军~~~ Python 爬虫之前 在着手写爬虫之前,要先把其需要的知识线路理清楚。第一:了解相关Http协议知识HTTP是Hyper Text Transfer Protocol(超文本
Python3 函数 Python3 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。定义一个函数你可以定义一个由自己想要功能的函数,以下是简单的规则:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号
Python3 迭代器与生成器 Python3 迭代器与生成器迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式。。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next()。字符串,列表或元组对象都可用于创建迭代器:>>> list=[1
常用正则表达式 常用正则表达式正则表达式中有很多上述的具有特别意义的字符。首先是下列字符。[ ]范围描述符。[a-z]表示从a到z之间的任意一个。\w英文字母和数字。即[0-9 A-Z a-z]。\W非英文字母和数字\s空字符,即[\t\r\f]。\S非空字符。\d数字,即[0-9]。\D非数字。\b词边界字符(在范围描述符外部时)\B非词边界字符\b退格符(0x08)(在
DNS同时使用TCP和UDP? DNS同时占用UDP和TCP端口53是公认的,这种单个应用协议同时使用两种传输协议的情况在TCP/IP栈也算是个另类。但很少有人知道DNS分别在什么情况下使用这两种协议。先简单介绍下TCP与UDP。 TCP是一种面向连接的协议,提供可靠的数据传输,一般服务质量要求比较高的情况,使用这个协议。UDP---用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传
最长递增子序列 题目给定一个整数序列arr,长度为N,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的子序列,这种子序列不一定是连续的或者唯一的。样例给出 [5,4,1,2,3],LIS 是 [1,2,3],返回 3给出 [4,2,4,
LintCode 81 -- 数据流中位数 题目中位数 II 数字是不断进入数组的,在每次添加一个新的数进入数组的同时返回当前新数组的中位数。说明中位数的定义:中位数是排序后数组的中间值,如果有数组中有n个数,则中位数为A[(n-1)/2]。比如:数组A=[1,2,3]的中位数是2,数组A=[1,19]的中位数是1。样例持续进
最长公共子串 题目给定两个字符串str1和str2,返回两个字符串的最长公共子串。举例:str1=“1AB2345CD”,str2="12345EF",返回“2345”分析典型的动态规划问题。假设str1的长度为m,str2的长度为n。方法一:时间复杂度O(mn),空间复杂度O(mn)声明大小为m*n的矩阵dp,求解二维动态规划表,行数为m,列数为n。dp[i][j]的含义是必须把s
最长公共子序列 题目给定两个字符串str1和str2,返回两个字符串的最长公共子序列。举例:str1="1A2C3D4B56",str2="B1D23CA45B6A"“123456”和"12C4B6"都是最长公共子序列,返回哪一个都行。分析经典动态规划,求解二维动态规划表。假设str1的长度为m,str2的长度为n,声明大小为m*n的矩阵dp,行数为m,列数为n。dp[i][j]的含义是s
OpenCL的多GPU和多核CPU异构计算--1 原文:飞鸿惊雪 地址点击打开链接本文主要探究OpenCL的GPU和多核CPU的异构计算问题,主要简要阐述了什么是OpenCL异构计算,讲述CPU和GPU各自的特点,并且把他们结合起来做异构计算的前景。然后具体讲述在高性能实验室Linux工作站上如何搭建多GPU和多核CPU异构OpenCL环境。最后用实验验证了所安装的OpenCL异构计算环境能够正常工作,说明什么是OpenCL的多GPU
CentOS 6.5 NVIDIA Tesla C2050配置OpenCL 1. 安装编译环境gcc , kernel-devel,kenel-headers (默认安装最新的版本)[root@localhost ~]# yum -y install gcc kernel-devel kernel-headers注:若系统内核版本与此处内核相关软件版本不一致,会影响显卡驱动的安装,出现错误:所以此时可以先检测更新系统内核
OpenCL程序实例 序OpenCL作为一门开源的异构并行计算语言,设计之初就是使用一种模型来模糊各种硬件差异。作为软件开发人员,我们关注的就是它的编程模型。OpenCL程序的流程大致如下:Platform查询并选择一个 platform在 platform 上创建 context在 context 上查询并选择一个或多个 deviceRunning time加载 Ope
MPI库安装、配置及测试程序 序由于项目需求,最近一段时间学习了MPI,零星的资料拼拼凑凑,终于成功搭好了~ 详细过程记录如下,方便日后参考~一、安装【1】首先从官方网站下载MPI下载官方网站相应版本的源文件mpich-3.2,并解压缩【2】在/tmp/下创建目录(如/tmp/yangrui/mpich-3.2)保存安装log【3】在/opt/下创建目录/opt/mpich-install,作为
集群多服务器,普通用户SSH访问方法 1. 序环境:三台CentOS服务器组成的集群。masterslave1slave2目标:服务器节点间完成root用户、普通用户user的SSH无密码访问。2. 制作公钥私钥2.1 登录master、slave1、slave2生成其公钥、私钥文件#登录master#切换到user目录下的.ssh文件夹:cd /home/user/.s
经典排序算法总结 概览排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。一、直接插入排序1、算法的伪代码(这样便于理解): INSERTION-SORT (A, n) A[1 . . n]
字符串转换为整数 题目 转换字符串到整数实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。样例"10" =>10"-1" => -1"123123123123123" =>
N皇后问题的递归与非递归解法 题目 N皇后问题n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。给定一个整数n,返回所有不同的n皇后问题的解决方案。每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。样例对于4皇后问题存在两种解决的方案:[ [".Q..", // Soluti
Minimum Window Substring 最小覆盖子串算法 题目 最小子串覆盖 描述 笔记 数据 评测给定一个字符串source和一个目标字符串target,在字符串source中找到包括所有目标字符串字母的子串。您在真实的面试中是否遇到过这个题? Yes 注意事项如果在source中没有这样的子串,返回"",如果有多个这样的子串,返回起
求素数 -- Python实现 序用filter求素数计算素数的一个方法是埃氏筛法,它的算法理解起来非常简单:首先,列出从2开始的所有自然数,构造一个序列:2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...取序列的第一个数2,它一定是素数,然后用2把序列的2的倍数筛掉:3,
海量数据处理 题目 有一亿个浮点数,请找出其中最大的10000个。提示:假设每个浮点数占4B,一亿个浮点数就要占用相当大的空间,因此不能一次将全部读入内存进行排序。 方法一:独处100万个数据,找出最大的一万个。如果这一万个数据选择够理想,那么以这一万个数据中最小的为基准,可以过滤掉1亿个数据里面99%的数据,这样就在剩余的100W个数据中找出最大的10000个即可。方法二:分块查找,选
new/delete 和malloc/free 的区别一般汇总 序最近学习遇到内存分配,释放的问题,需要对C中的malloc / free 与 C++中的 new/delete好好总结一番。注明:该博文转载自原文网址,仅为自己学习方便,谢谢原博主。一、基本概念 malloc/free:1. 函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指
进程间通信与线程间通信 序今天被问及进程间通信的问题,发现自己了解的并不够,所以,对此好好总结一番~操作系统的主要任务是管理计算机的软件、硬件资源。现代操作系统的主要特点是多用户和多任务,也就是程序的并行执行,windows如此linux也是如此。所以操作系统就借助于进程来管理计算机的软、硬件资源,支持多任务的并行执行。要并行执行就需要多进程、多线程。因此多进程和多线程间为了完成一定的任务,就需要进行一定的通信。
DDoS攻击 TCP UDP ICMP 从07年的爱沙尼亚DDOS信息战,到今年广西南宁30个网吧遭受到DDOS勒索,再到新浪网遭受DDOS攻击无法提供对外服务500多分钟。 DDOS愈演愈烈,攻击事件明显增多,攻击流量也明显增大,形势十分严峻,超过1G的攻击流量频频出现,CNCERT/CC掌握的数据表明,最高时达到了 12G,这样流量,甚至连专业的机房都无法抵挡。更为严峻的是:利用DDOS攻击手段敲诈勒索已经形成了一条完整的产业链!并
C++基础知识易错点总结(3) 第一部分1. 异步通信和同步通信的区别?同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可以经过任意长的时间间隔再发送下一个字节;同步通信效率高,异步通信效率低;同步通信复杂,双方时钟允许的误差小;异步通信简单,双方时钟可以允许一定误差;同步通信可用于点对多点,异步通信只适用于点对点;2. T
二叉树遍历 递归与非递归 先序-中序-后序 序题目:分别用递归和非递归的方式实现二叉树先序、中序、后序遍历!二叉树节点结构struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int v) :val(v), left(NULL), right(NULL){}};先序遍历递归实现/*递归先序遍历*/void pr
C++基础知识易错点总结(2) 1. 若一组待排数据有序,花费时间最多的是:快速排序,T(n)=O(n^2);2. 有 1000 个无序的整数,希望使用最快的方式找出前 50 个最大的,最佳的选择是?快速排序:在最理想的情况下,即划分可以使得每次分到n/2 的两个序列,复杂度为o(nlogn);堆排序:无论什么情况都是o(nlogn),当然还有建堆的时间o(n),所以为n+nlogn,但是,本题只是要前五十个,所以堆