摘要:
对图像处理的过程中会遇到一些场景需要将图片反色,反色就是取像素的互补色,比如当前像素是0X00FFFF,对其取反色就是0XFFFFFF – 0X00FFFF = 0XFF0000,依次对图像中的每个像素这样做,最后得到的就是原始图像的反色。 一个对图像取反色的例子:package bar.ocr; import javax.imageio.ImageIO; import java.awt... 阅读全文
摘要:
直接硬搜就可以了,只是需要考虑k为0的情况。 题目来源: http://www.lintcode.com/zh-cn/problem/digit-counts/# 阅读全文
摘要:
这些一次遍历搞定的,套路无非都是在遍历的时候就记录数据的状态,然后根据遍历到的当前的数据的状态来修改最终结果,当遍历完了的时候结果也就确定了。 题目来源: http://www.lintcode.com/zh-cn/problem/longest-words/ 阅读全文
摘要:
简单粗暴 题目来源: http://www.lintcode.com/zh-cn/problem/check-sum-of-square-numbers/ 阅读全文
摘要:
直接使用递归的方法会导致TLE,加个缓存就好了: 或者使用迭代法: 题目来源: http://www.lintcode.com/zh-cn/problem/fibonacci/ 阅读全文
摘要:
使用标记的方式,先遍历一遍B,出现一次就记录一次出现次数,然后遍历A,将记录的B的出现次数消去,最后检查一下记录的标记位是不是都消去了,总共需要检查三次,即进行三次O(n)的遍历。 然后总结出规律如果A的字符长度小于B的字符长度时,A不可能完全包含B,所以做一个优化处理,先检查一下长度,如果能够确定 阅读全文
摘要:
直接暴力搜即可。 AC代码: 题目来源: https://www.nowcoder.com/practice/1f7675ae7a9e40e4bd04eb754b62fd00?tpId=49&tqId=29281&tPage=1&rp=1&ru=/ta/2016test&qru=/ta/2016te 阅读全文
摘要:
先对两个数进行位异或,这样能够得到两个数中有多少位是不同的,然后再数一下这个数中有多少位1就可以了。 AC代码: 题目地址: https://www.nowcoder.com/practice/ba033b0d1c2f497da1dd04330cc003af?tpId=49&tqId=29232&t 阅读全文
摘要:
思路: 最简单的方法,依次遍历比较就可以了。 AC代码:/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * t... 阅读全文
摘要:
1. yagmail是啥 yagmail是给正常人用的,封装的比较彻底的一个python邮件库,发送接收邮件只需要几行代码,炒鸡简单。 2. 安装 使用pip安装,炒鸡简单:pip install yagmail 3. 使用 发送也炒鸡简单,只需要几行即可:import yagmail if __name__ == '__main__': username = '******... 阅读全文
摘要:
1. YAML简介 YAML是一种被认为可以超越XML、JSON的配置文件,最早接触是Spring Boot,木有想到python也是支持的,遂研究一下。 python解析YAML库叫做pyyaml,话说这个名字一点也不酷,按照习俗应该会省略掉一个y叫做pyaml之类的呀。 2. 安装pyyaml 从官网下载zip包拷贝到合适的位置并解压从CMD进入此目录: 执行setup.py安装:... 阅读全文
摘要:
md5sum md5sum用来计算一段内容的md5校验和,这段内容可以是从文件中读取的,也可以是从标准流输入的。甚至还可以将结果保存到文件,在以后使用这个文件来校验文件是否被改变。 需要注意的是md5sum只计算文件的内容,不关注文件的元信息。 简单使用 创建一个文件:echo hello, world >> a.txt 计算它的md5检验和: 校验文件是否改变 可以把计算的结果存... 阅读全文
摘要:
1. 什么是列表 redis的列表使用双向链表实现,往列表中放元素的时候复杂度是O(1),但是随机访问的时候速度就不行了,因为需要先遍历到指定的位置才可以取到元素。 既然列表是使用链表实现的,那么就说明它是有序的,元素按照放入的顺序排列。 列表支持从两端放元素或者取元素,这样的话就可以使用列表实现栈或者队列,如果只从队列的左边或者只从队列的右边取和放数据的话,列表就成了一个栈,如果从列表的左边取... 阅读全文
摘要:
1. 下载 solr 去官网下载,下载的时候选清华的镜像源,这个页面:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.1.0/ 在/usr/local下新建一个文件夹solr,切换到/usr/local/solr,下载solr的tar包:wget https://mirrors.tuna.tsinghua.edu.cn/a... 阅读全文
摘要:
数据库和对象的属性名不一致是很常见的问题,这个时候依从表字段到对象属性名的按名称匹配映射已经搞不定这个了,下面是几种解决方案。 1. 开启驼峰转换 如果数据库中的字段名与对象只是简单的不一致的话,比如名字是一样的,只是分隔方式不一样,在数据库中使用了下划线分隔,而在对象中使用了驼峰分隔,如果都是这样子的话倒不是特别麻烦,只需要在mybatis的配置文件中开启驼峰转换即可。 2. 在SQ... 阅读全文
摘要:
使用一个Map维护数字出现的次数,使用一个链表维护只出现一次的数,使用一个变量记录是否找到过终止数字。 AC代码:public class Solution { /* * @param : a continuous stream of numbers * @param : a number * @return: returns the fir... 阅读全文
摘要:
分治问题,可以把整棵树看做是由一颗颗只有三个节点组成的小树,一颗树的构成是根节点、左子树、右子树,这样只需要从左子树找出一个最大的节点,从右子树找出一个最大的节点,然后与根节点三个取个最大的,就是最终的结果了。 AC代码:/** * Definition of TreeNode: * public class TreeNode { * public int val; * ... 阅读全文
摘要:
1. mybatis支持的映射方式 mybatis支持的映射方式有基于xml的mapper.xml文件、基于java的使用Mapper接口class,简单学习一下mybatis使用接口来配置映射的方法。 接口方法注解主要是四个:@Insert、@Delete、@Update、@Select 2. 如何使用接口注解来映射 下面的实验都是基于t_user表的,其结构如下:DROP TABLE ... 阅读全文
摘要:
1. 引入Log4J的Maven依赖: log4j log4j 1.2.17 2. 修改MyBatis的配置文件,设置使用Log4J日志输出方式: 如果是Spring Boot项目,则指定: 3. 在资源路径下新建log4j.properties:log4j.rootLogger=DEBUG, Console #Console log4j.appender.Cons... 阅读全文
摘要:
1. 点对点通信 点对点是一种一对一通信方式,更像是有一个队列,一个人往队列里放消息,另一个人从队列中取消息,其最大的特点是一个消息只会被消费一次,即使有多个消费者同时消费,他们消费的也是不同的消息。 2. 简单实现 添加依赖 添加Maven依赖: org.apache.activemq activemq-all 5.15.2 activemq.properties 在resou... 阅读全文
摘要:
起因 在阿里云搞了台ECS,但是内存就1个G,操作总是悲剧的卡卡卡,于是就想着增加一点交换文件来缓解一下。 快速添加交换文件 step 1. 生成文件 先填充一个大文件,等会儿当做交换文件用:dd if=/dev/zero of=/var/swap bs=1024 count=4096000 这里会稍微卡上一会儿,是dd在填充文件。 step 2. 格式化交换文件 将文件格式化为交... 阅读全文
摘要:
题目链接:http://www.shiyanbar.com/ctf/1868 直接推算出来这棵树是: 后序遍历是:ACBFGED 参考资料: 1. http://www.shiyanbar.com/ctf/1868 阅读全文
摘要:
分析: 要考虑到exponent为0和负数的情况。 如果base是0并且exponent是负数的时候呢?那就发生除0的情况了。 AC代码:public class Solution { public double Power(double base, int exponent) { if(exponent == 0) return 1; ... 阅读全文
摘要:
输入的n可以分为两种情况: 1. 如果n是3的倍数的话,不论A怎么拿B都可以拿(3-A拿的个数)来使其保持是3的倍数,他就一定能拿到最后一块,所以n是3的倍数的话B必胜 2. 如果n不是3的倍数的话,那么A就能够拿1或者2块使其变为3的倍数,就相当于B变成了第一种情况中的A,所以n不是3的倍数的话A必胜 AC代码:class Solution: """ @param: ... 阅读全文
摘要:
1. 什么是散列 散列类似于一个字典,是一个对的集合,不过这个key和value都只能是字符串类型的,不能嵌套,可以看做Java中的Map。 2. 基本操作 赋值 散列操作不区分插入和更新,当设置一个field的时候如果不存在的话表示新增,如果已经存在的话则表示更新,之前的值会被覆盖掉。当设置值的时候如果field在之前不存在的话则返回1,视为新增,如果field已经存在的话,返回0,视为... 阅读全文
摘要:
1. string类型简介 string类型是二进制安全的,能够存储任意类型的字符串。 string类型是最常用到的数据类型,一种常用的用法就是将对象格式化为JSON字符串然后放到redis中,取出来的时候再反序列,不过如果序列化为二进制的话速度更快,占用空间更小。 一个字符串类型键允许存储的最大容量是512M。 2. 如何使用 赋值set 可以使用append命令追加值,如果指定... 阅读全文
摘要:
找到一个好玩的小东西,记录一下打怪通关的过程。 游戏地址: http://www.cn-hack.cn/qs/5.htm 第一关 查看网页源码,找到一段js:function PassConfirm() { var x=document.password.pass.value if (x=="go ") { alert("恭喜您,答对了,进入第二关!") ... 阅读全文
摘要:
第一关 按F12查看元素,在HTML代码中找下,发现一个颜色与背景色相同的超链接,直接复制提交或者将鼠标移动到对应位置会自动变成手型。 直接复制key提交,进入第二关:https://1111.segmentfault.com/?k=26a2edb9dc4e342ebbc38e180113bcce 第二关 继续查看元素,在HTML的注释中找到了key: 复制key提交,... 阅读全文
摘要:
1. 什么是base64 base64是一种将不可见字符转换为可见字符的编码方式。 2. 如何使用 最简单的使用方式import base64 if __name__ == '__main__': s = 'plain text' # base64编码 t = base64.b64encode(s.encode('UTF-8')) print(t) ... 阅读全文
摘要:
什么哈哈 阅读全文
摘要:
在牛客网上看到一道题,感觉挺有趣,是用sql统计字符串出现的次数。 这里提供一种思路,比如统计字符串A中子串B的出现次数:SELECT (LENGTH(A) - LENGTH(REPLACE(A, B, ''))) / LENGTH(B) 题目传送门: https://www.nowcoder.com/practice/e3870bd5d6744109a902db43c105bd50?... 阅读全文
摘要:
1. sqlmap是什么 在这个数据有价的时代数据库安全已经成为了重中之重,于是就整理了一下最常用的一款(反正我上大学的时候它还是蛮流行的...)数据库安全方面的渗透测试工具sqlmap的使用笔记。 sqlmap是一个自动化的sql注入渗透工具,指纹检测、注入方式、注入成功后的取数据等等都是自动化的,甚至还提供了一个字典来将取回来的hash爆破,当然对于真实环境中这爆破功能战斗力基本为0...... 阅读全文
摘要:
1. imghdr是什么 imghdr是一个用来检测图片类型的模块,传递给它的可以是一个文件对象,也可以是一个字节流。 能够支持的图片格式: 2. 如何使用 提供了一个api叫做imghdr.what,这个方法接受两个参数,第一个参数是一个文件对象,第二个参数是一个字节流数组。 文件对象用来对本地文件做检测,字节流用来对网络上的做检测。 当需要对文件进行检测的时候只传入第一个参数即... 阅读全文
摘要:
1. StringIO/cStringIO是什么 这个模块提供了一个类,这个类的实例就像是一个文件一样可以读写,实际上读写的是一个字符串缓存,也可以称之为内存文件。 StringIO和文件对象拥有共同的父类IOBase,因此方法基本上都是一致的,StringIO就可以看做是一个内存文件。 想了一下,StringIO可能就相当于Java中的StringBuffer或者StringBuilder之... 阅读全文
摘要:
1. json模块介绍 json是python自带的操作json的模块。 python序列化为json时的数据类型转换关系: python格式 json格式 dict(复合类型) object list, tuple(集合类型) array int, long, float(数值类型) number str, unicode string Tru... 阅读全文
摘要:
1. chardet是什么 chardet是python中比较常用的一个编码方式检测库,需要注意的是它只检测并返回检测结果,并不负责对原数据做什么处理。 可以使用PIP命令安装:pip install chardet 2. 如何使用 2.1 API简介 一般都是调用chardet.detect传入一个字节数组,返回一个字典,此字典中存放分析的结果,一个可能的分析结果字典:{ 'en... 阅读全文
摘要:
一个人无聊,写了个小爬虫爬取不可描述图片.... 代码太短,就暂时先往这里贴一下做备份吧。 注:这是很严肃的技术研究,当然爬下来的图片我会带着批判性的眼光审查一遍的.... :) #! /usr/bin/python import chardet import urllib3 import uuid import os import logging import time import s... 阅读全文
摘要:
方法一: 设置终端退格键为ASCII 127 在XShell的界面中,设置 文件 --> 属性 --> 终端 --> 键盘 --> BACKSPACE键序列,改为ASCII 127即可。 方法二: 使用Ctrl+退格键 同时按下Ctrl+退格键可以删除。 方法三: 使用Ctrl+W发送信号删除整个单词 直接发送删除整个单词的信号,也可以删除,不过是一次删除整个单词,或者Ctrl+u... 阅读全文
摘要:
这是什么 uptime用来查看系统已经启动了多长时间了。 它显示的信息和w命令的头(第一行)是一样一样的。 举个栗子 举一个实际的应用场景: 比如发现服务器上的某些没有加入开机启动的服务挂了一片,这个时候就可能怀疑是这台服务器被人重启了,可以在服务挂掉的那台机器上执行uptime查看已经启动的时间,如果发现数值很小的话,那就悲剧了: 这样子的情况就是一天多以前被人重启了,当然这是比较好... 阅读全文
摘要:
keys keys用来获取符合指定规则的键,keys的语法规则如下: keys 比如最简单的全等匹配,下面这个命令只会匹配键值完全等于foo的:127.0.0.1:6379> keys foo 1) "foo" 可以使用通配符*来匹配所有的键,下面这条命令可以用来查看所有的key:127.0.0.1:6379> keys * 1) "foo" 2) "foobar" 可以组合一下,比如... 阅读全文