- 博客(112)
- 资源 (4)
- 收藏
- 关注
原创 SpotMicro试搭
必备材料12个MG 996R舵机:狗关节运动嘛(我买了扭力号称13KG的便宜货,看看是否可行) 1个开发版(jetson nano或者树莓派4):狗脑。我有树莓派3b,先用着 2个HC-SR04:超声波传感器:狗鼻子。买买买 1个MPU-6050 Gyro sensor:3轴陀螺仪:狗的小脑吧,感知姿态。 1个LCD显示屏:装在狗屁股上,显示状态,其他没啥用吧 1个船型开关:不解释。 1个PCA 9685:I2C信号转16路舵机控制信号。可以控制16个舵机。我们这里需要控制12个。 1个.
2020-08-18 15:09:59
1400
2
原创 最长不重复子串
# coding:utf-8def find_longest_sub(s): if len(s) ==0: return 0 charsIndex = {} startIndex = -1 # 当前子串的开始位置 oriStartIndex = startIndex # 保存全局最长子串的开始位置 ...
2018-03-06 17:45:46
237
原创 前端vue学习 -- 介绍部分
按官方文档开始学习首先征求大牛的意见,ide:vscode + vetur然后从介绍开始https://cn.vuejs.org/v2/guide/第一个就难倒我的是,它的第一个例子一部分是html,一部分是js,在jsfiddle上分2部分。但是在我本地环境应该如何配置呢?答案就是建一个html页面,把js用<script></script>框起来第2个问题是macboo...
2018-02-07 22:59:36
405
转载 深度学习 效果不好怎么办
1 在training set上就已经效果不佳属于模型就没train好。case 1:受到局部最优影响,没有收敛到全局最优solution:momentumcase 2:层数高时,靠近output的层率先快速收敛,靠近input的层则效果不明显,导致train不好solution:RBM,激活函数选择(ReLu)2. 在testing set上效果不佳o
2017-10-30 22:08:29
2854
翻译 angularjs官方教程 -- 环境部署
环境部署首先git clone一下提供的示例源码git clone --depth=16 https://github.com/angular/angular-phonecat.git安装nodejs。安装Bower, Http-Server, Karma ,Protractor(这几个可选,非必须)启动cd angular-phonecat
2017-03-03 17:55:46
1557
转载 keras学习笔记1 一些基本概念
https://keras-cn.readthedocs.io/en/latest/getting_started/concepts/安装:去nm的windows,用linux或osx吧。张量:import numpy as npa = np.array([[1,2],[3,4]])sum0 = np.sum(a, axis=0)sum1 = np.s
2017-02-06 20:58:27
494
原创 灰帽子Python 学习记录 8 内存断点
内存断点原理:就是通过设置内存块页面的权限,使其成为保护页。这样当CPU访问该页面时,就会触发保护页的访问异常,产生中断。需要调用异常处理函数将权限恢复从而继续执行。实现步骤:1. 找函数的地址还是和前面一样2. 通过VirtualQueryEx传入地址,获取一个填充好的MEMORY_BASIC_INFORMATION结构,里面包含页基址、页大小等信息。3. Virtu
2016-05-18 14:30:43
616
原创 灰帽子Python 学习记录 7 硬件断点INT1
原理回顾:硬件断点就是通过对cpu的寄存器进行设置,把断点的地址存在dr0~dr3里,然后在dr7设置属性。在跑到该地址时,进行中断处理。同样处理完后要把寄存器里这些改动再改回去。在实现上,需要添加2个函数:bp_set_hw用来添加硬件断点和exception_handler_single_step用来处理中断事件。添加硬件断点的步骤:1. CreateToolhel
2016-05-17 17:46:21
739
原创 灰帽子Python 学习记录 6
啊啊啊啊啊今天搞了一天总算tm搞定了topic:软件中断INT3首先回顾一下理论原理。INT3中断就是将断点位置的第一个字符替换为CC,然后将原来的字符保存起来。这样遇到CC开头的就会停下,等中断处理完后再用原来的字符替换回去。实验:运行print_loop.py,里面的内容为一个死循环,不断地调用msvcrt里的printf函数打印数据。然后找到printf函
2016-05-16 16:48:18
1730
1
原创 灰帽子Python 学习记录 5
WaitForDebugEvent这个函数是等待调试事件,每次捕捉到的时候就返回一个debug_event然后同样用notepad ++ 做实验,记录每次的eventCode:Enter pid:75160OpenProcess Successful, HANDLE 504Event Code: 3 Thread ID: 92528Event Code: 6
2016-05-15 23:11:03
555
原创 灰帽子Python 学习记录 4
今天一直在撸,以及有点别的事,所幸晚上有点愧疚,还是抽出半个小时搞了一下。本篇的课题是读取CPU寄存器的值,步骤如下:1. CreateToolhelp32Snapshot:根据pid获取进程详细信息,如堆、线程、模块等,返回值为一个句柄2. Thread32First:根据1中句柄获得一个指针,指向包含第一个线程信息的结构3. Thread32Next:下一个线程的条
2016-05-15 22:44:12
609
2
原创 灰帽子python 学习记录 3
本篇的课题是附加进程。这个灰常坑爹,昨天没搞定,今天才搞好。跟上篇产生进程不同,附加进程为附加到一个指定的进程,这样可以跳过启动步骤。首先还是惯例,按书上的代码抄了一遍,写下一点理解吧:步骤:1,通过pid获取进程句柄,调用函数为OpenProcess2,通过句柄附加进程,调用函数为DebugActiveProcess3,通过WaitForDebug
2016-05-14 20:06:35
1147
原创 灰帽子python 读书笔记 2
今天的学习点是调用ctypes的createProcess函数来启动程序。主要包括数据类型的映射和结构的映射等。按书中的代码边抄边理解了之后,调用calc.exe,出现结果:[*] Error: 0x00000002.查了错误表,说是没找到文件。机智的我把path_to_exe打出来:C:\Windows\WinSxS\amd64_m
2016-05-13 13:18:04
739
1
原创 灰帽子python 读书笔记 1
论文交上去坐等答辩毕业,于是闲来看看这本书。书里的代码用python 2.5 + win32系统,我手头的是python3.4 + win64系统,所以会有点不一样,就当做是读后实践的考验了。在这里记录一下遇到的问题,也方便后来参考吧。废话不多说,第一章,导入ctypes并调用printf。书中代码:from ctypes import *msvcrt =
2016-05-13 13:08:55
737
原创 Unity3D 学习 控制角色运动控制
传统的WASD运动控制:void Update () { if (Input.GetKey(KeyCode.W)) { transform.Translate(new Vector3(0, 0, 1) * moveSpeed * Time.deltaTime); } if (Input.GetKey(KeyCo
2016-02-26 16:32:03
2788
1
原创 解决vs2012报错 无法打开包括文件“SDKDDKVer.h”: No such file or directory
解决方法:在项目的包含目录里添加:$(WindowsSDK_IncludePath)在项目的库目录里添加:$(WindowsSDK_LibraryPath_x86)或者$(WindowsSDK_LibraryPath_x64)
2015-12-01 16:33:13
5242
原创 linux学习笔记--centos 安装
找定工作后闲下来就准备扩展自己的技能树。打算从学习linux开始。然后用的教材是鸟哥的私房菜,里面的系统是centos 5.x,所以我就在淘宝上买了台x41,准备装上系统开始干。鸟哥是在虚拟机里装的,我之前用虚拟机玩感觉还是差点,所以这次下血本(虽然只有200块)搞了个笔记本。一开始下载了centos 5.11(敝校5.x的镜像只有这一个版本),然后用ultraiso把iso写入u盘。然后
2015-10-21 21:07:39
748
原创 leetCode #78 subsets
题目:输入一个数组,输出所有子集分析:每个数有选/不选2种,一共2^n种答案:class Solution {private: vector> res;public: vector> subsets(vector& nums) { res.clear(); sort(nums.begin(),nums.end()); vect
2015-09-27 23:08:56
491
原创 leetcode #89 Gray Code
题目:生成格雷码。即下一个数和上一个数比只有一个位不同。分析:格雷码的特点,是n位格雷码和是的前一半是n-1位格雷码前面+0,后一半是n-1为格雷码倒序且前面+10 0 00 0 10 1 10 1 0答案:用递归:class Solution {public: vector grayCode(int n) { vector res;
2015-09-27 22:54:03
390
原创 leetCode #96 Unique Binary Search Trees
题目:找出以1..n为元素值的所有bst的个数分析:对于n=1,那么就只有1个对于n=2,可以以1为root,剩下一个2就放右边;也可以以2为root,剩下的1放左边,一共2个对于3呢?同样可以尝试分别以1 2 3作为root,其余的作为子树总之,对于n,可以把1...n分别作为root,答案为这些情况之和考虑当把k做为root时,那么1到k-1必在左子树,k+1到n必在右
2015-09-08 15:19:04
454
原创 leetCode #94 Binary Tree Inorder Traversal
题目:二叉树中序遍历分析:也是递归答案:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), rig
2015-09-08 12:21:41
460
原创 leetCode #144 Binary Tree Preorder Traversal
题目:二叉树的先序遍历分析:用递归超级容易答案:递归:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(N
2015-09-08 12:12:18
755
原创 leetCode #147 Insertion Sort List
题目:用插入排序法将链表排序分析:就是最简单的插入排序+链表操作,注意当节点最小的会插入到最前面的特殊情况即可。答案:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x),
2015-09-08 12:00:52
418
原创 leetCode #86 Partition List
题目:将链表分成前后2部分,一部分小于x,另一部分不小于x,且保留各元素的相对位置分析:再建2个链表分别保存小的和大的,然后合并答案:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) :
2015-09-04 19:44:48
404
原创 leetCode #206 Reverse Linked List
题目:将单链表反转分析:可以用迭代或者递归来做答案:迭代的示意图:代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}
2015-09-04 11:37:55
369
原创 leetCode #82 Remove Duplicates from Sorted List
题目:从一个有序链表里删除重复元素分析:这个和数组去重很像。都只需记录下当前不重复的元素位置到下一个不重复的元素位置,然后建立联系即可。答案:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x
2015-09-03 14:16:34
409
原创 leetCode #142 Linked List Cycle II
题目:对一个单向链表,如有环,返回环的起始节点,如果没环,返回NULL分析:在Cycle I部分,我们就讨论了如何判断链表是否有环,即通过快慢指针的相遇来判断。那么如何找到起始点呢?首先,假设链表需要走a个节点进入环,走b个节点相遇,如图所示:那么慢指针走了a+b, 快指针走了a+b + c + b,环长b+c所以ia+b = (a + b + c + b)/2
2015-09-03 13:57:30
411
原创 leetCode #141 Linked List Cycle
题目:判断单向链表是否有环分析:用1个慢指针和一个快指针,慢指针每次往前走一步,快指针每次往前走2步。如果没有环,那么最终快指针会指向null或者null的上一步,如果有环,那么2个指针会相遇,即慢指针比快指针整整少走了一圈。答案:/** * Definition for singly-linked list. * struct ListNode { * int val;
2015-09-03 12:14:49
436
原创 leetCode #79 Word Search 回溯
题目:给一个字符矩阵,在里面找单词。相邻字母必须要4邻域内。分析:典型的4邻域深度优先搜索,答案:class Solution {public: bool exist(vector>& board, string word) { M = board.size(); N = board[0].size(); for (int i
2015-09-01 17:23:17
437
原创 leetCode #122 Best Time to Buy and Sell Stock II
题目:数组第i个元素表示的是股票在第i天的价格,问最大的收益。要求必须先买后卖,可以进行任意次交易。分析:只要有收益就进行买卖即可。比如以下序列1 2 9 3我们可以看到,在1时买入,2时卖出,2时买入,9时再卖出,收益为8而在1时买入,9时卖出,收益也为8所以只要赚钱,不见得要找绝对差值最大的,因为买卖是无限次数的,只要能赚就买/卖即可。答案:class Solu
2015-09-01 15:16:18
401
原创 leetCode #135 Candy
题目:给一排小孩发糖果,每个小孩有自己的评分,评分高的小孩得到的糖果比评分低的左右邻居要多。每个小孩至少一个糖果。问最少发多少糖果?分析:对于一个顺序上升或者下降的评分序列,小孩得到的糖果最少也得是递增/递减的比如评分 1 3 5 7 8糖果 1 2 3 4 5评分 9 7 4 3 1糖果 5 4 3 2 1而对于非递增/递减的评分序列,可以拆分成几段上升/下降的序
2015-09-01 15:03:43
364
原创 leetCode #286 Missing Number
题目:给出0到n的数,但是其中缺了一个,问缺了哪个分析:非常有名的题,求和再做差。答案:class Solution {public: int missingNumber(vector& nums) { int sum = 0; int n = nums.size()+1; int n_sum = n*( 0 + n -1) /2;
2015-09-01 14:38:14
369
原创 leetCode #134 Gas Station 贪心
题目:一个环形路线上有加油站,每个加油站可以加gas[i]的油,走到下一站得消耗cost[i]的油,问能不能找一个点出发,走完全程。若能,输出点的位置,若不能,输出-1。题目确保给定数据有唯一解。分析:每个加油站的增益为retain[i] = gas[i] - cost[i],那么如果n个油站的retain加起来为负,怎么走都不可能走完。如果为正,就可以。那么我们希望一开始就能得到尽量大的re
2015-08-27 12:10:29
371
原创 leetCode #45 Jump Game II 贪心
题目:输出能跳到数组末尾的最小跳数。详见Jump Game分析:同样,也是贪心。因为当前跳如果能跳到k,那么必然也能跳到小于k的地方,所以贪心是可以的。然后用一个int记录当前跳能到的最大位置,另一个int记录下一跳能到的最大位置,模拟跳的过程:从i=0往前跳,如果当前跳不能到i,而下一跳可以到i,则多跳一步,否则就以i跳更新下一跳的最大距离答案:class Solution {publ
2015-08-27 11:29:37
506
原创 leetCode #55 Jump Game 贪心
题目:给一个数组,存的是从这个点最多能往前跳多少,问能否跳到终点分析:对于一个点能不能到达,主要看前面的点能不能跳到。比如第0个点,如果能跳到k。那么第1个点可能跳到k,也可能跳不到k,我们就可以搜索1~k的点,看能不能跳得更远。如果我们发现[1,k]的点都不能跳得更远了,而且kn的,那么就可以到终点。答案:class Solution {public: bool canJu
2015-08-26 18:36:35
451
原创 leetCode # Convert Sorted List to Binary Search Tree
题目:将排好序的链表转化为二叉搜索树分析:算法思路是取中间为根节点,左边是左子树,右边是右子树,然后递归答案:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next
2015-08-24 23:11:36
330
原创 leetcode #24 swap nodes in pairs 链表
题目:将链表中的节点两两交换分析:假设节点1->2->3,那么我们首先让1指向3,2指向1,但是其实1指向的不一定是3,而是3和下一个交换,所以用递归的方法可以返回交换后的第3个节点答案:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next
2015-08-23 23:02:54
460
原创 leetCode #257 Binary Tree Paths
题目:打印二叉树的所有路径分析:就是深度遍历呗。注意对第一个节点做处理,不用打->,然后就完了答案:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(in
2015-08-22 18:41:29
290
原创 leetCode #258 Add Digits
题目:将某数的每位相加,和作为新数,直至不超过10分析:按部就班地做呗答案:class Solution {public: int addDigits(int num) { while (num/10 >0 ){ int newnum = 0; while(num){ int di
2015-08-22 18:22:01
360
OpenGL所需要的头文件和库文件等
2014-05-09
JavaScript入门经典 第4版 Michael Moncur 北邮出版社 代码
2014-04-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人