编程基础
河流儿
这个作者很懒,什么都没留下…
展开
-
LeetCode50. 动态规划方法求阶乘
leetcode 50 pow(x, n)三种解决思路调用库函数暴力迭代分治法(本文方法)1, 2就不用说了, 第三种分治法,分治法本质上是一种动态规划方法,例如2的十次方求法可以先求 2的5次方, 再求2的2次方。 需要注意的是2的5次方和2的2次方不需要求2次,而是使用备忘录将求过的子问题进行记录,下一次求求解时直接使用。count变量和前三个函数式为了打印递归层次帮助理解的var count = 0func printIndent(){ fmt.Printf(".原创 2021-07-31 21:06:25 · 2547 阅读 · 1 评论 -
golang的加锁map与syncmap性能分析
syncmap是golang1.5引入的线程安全的map,以下是测试程序,结论: 不建议使用sync.map, 原因: 1. 性能不及加锁的map, 2. 对json不友好测试程序:package main_testimport ( "math/rand" "sync" "testing")type WrapedMap struct { lck sync.Mutex m ...原创 2020-03-23 16:15:59 · 2597 阅读 · 0 评论 -
golang的[]byte与string之间高效转换
golang的[]byte个string一个是可变类型一个是不可变类型,转换的时候会重新开辟内存,在程序并发即使上百万的时候会出现内存问题,以下是unsafe的转换方法package mainimport ( "fmt" "strings" "unsafe")func str2bytes(s string) []byte { x := (*[2]uint...转载 2020-03-04 22:00:02 · 3307 阅读 · 0 评论 -
go中struct实现多个接口.type会显示哪个接口
package mainimport ( "fmt" "reflect")type IntF1 interface { show1() string}type IntF2 interface { show2() string}type IntF3 interface { show3() string}type Cls struct { v1 string ...原创 2019-11-06 17:23:29 · 1244 阅读 · 0 评论 -
visual studio遇到C1083 无法打开包括文件: “opencv2/opencv.hpp”: No such file or directory 终极解决方案
很多人运行Opencv的时候(其实不仅仅是opencv,C++的代码都会遇到这个问题)遇到这个问题,以为是包含目录没有添加进去,但是添加了之后发现还是有问题为什么呢?其实是因为visual studio的生成模式Debug/Release搞的鬼,跟代码无关。其实VS提供的Debug和Release两种调试模式完全使用不同的两套类库,所以在设置的时候一定要看清,看下图上图中,VS在项...原创 2018-06-27 20:55:18 · 56466 阅读 · 20 评论 -
远程过程调用(RPC)和表现层状态转移(restful)的理解
这段时间接触了一些跨应用程序通信的技术,感觉眼前豁然开朗,现大略总结之。 (简单画的图,希望能大概表达清楚)1.普通的应用程序 看图简单的说,最早,位于不同计算机上的程序肯定是不能当作一个程序的来用的,也就是C/S的那种思路。2.restful 风格 restful是从web开发当中成长起来的风格模式,是http协议的起草者之一在2000年的博士论文中提出的,简答的说就是直接...原创 2018-07-10 15:30:37 · 612 阅读 · 0 评论 -
算法similarRGB问题
In the following, every capital letter represents some hexadecimal digit from 0 to f.The red-green-blue color “#AABBCC” can be written as “#ABC” in shorthand. For example, “#15c” is shorthand for th...原创 2018-07-04 10:45:32 · 368 阅读 · 0 评论 -
算法validWordSquare问题
给定一个单词序列,检查它是否构成一个有效单词广场。 一个有效的单词广场满足:如果第k行和第k列读取相同的字符串, 并且0≤k<max(numRows numColumns)。这个题的坑在0≤k<max(numRows numColumns), 先补全成方阵再比较。class Solution: """ @param words: a lis原创 2018-07-04 13:42:58 · 210 阅读 · 0 评论 -
C#用两个栈来实现队列
队列的两种实现方式一种是数组一种是栈,此处介绍如何将用两个栈来实现一个队列我们知道栈的特点是FILO(先进后出),而队列的特点是FIFO(先进先出),所以用栈实现队列必须使用两个栈,一个用于执行push和pop操作,另一个用于存放前一个临时出栈的变量。下面是C#代码(完全原创,如有雷同,不胜荣幸)using System.Collections.Generic;namespa...原创 2018-07-24 21:24:31 · 796 阅读 · 0 评论 -
VS2017 for linux 配合gcc/g++/gdb调试C/C++代码
第1步,准备一个Linux操作系统远程的或者本地虚拟机里的都可以,但是这个系统要和我们写代码的机器之间要网络连通,ubuntu或者Centos都没关系在linux上安装必要的编译器和调试器还有通过工具sudo yum install gccsudo yum install gcc-c++sudo yum install gdbsudo yum install rsync第2步,安装...原创 2018-12-18 18:00:34 · 5092 阅读 · 0 评论 -
解决windows下环境变量太大的问题(终极!!可用)
笔者电脑上装了一大堆软件,有一大堆的环境变量需要配置,而且有些软件, 笔者也喜欢像linux上一样通过命令行调出,可是win10限制环境变量的长度(如下图),上网找了很多解决办法,有说统一前缀的,也有创建软连接的,这些方法本质上都是在path里面搞文章,麻烦!!!,而且不根本解决问题,不料,今天灵光一现,得出一妙法(呵呵)解决方法就是,新创建拓展环境变量,将这个环境变量加入PATH中,你以后要...原创 2018-12-29 18:08:44 · 24948 阅读 · 10 评论 -
Python的模块和包以及代码中引用报错等各种问题一次性说清楚
python包的引用规则总的来说,不要被PycharmIDE所提供的便捷所迷惑,应该直接看Python语言本身的调用规则,总结规则如下:只有永久加入到环境目录下的包和模块才能不sys.path.append导入就直接使用,否则必须用sys.path.append导入,这里面存放的是一个路径的列表,虽然使用绝对路径和相对路径都可以, 但是当调用的包和本身没有经常放在一起的话应该用绝对路径。...原创 2019-01-24 19:00:11 · 3883 阅读 · 0 评论 -
git和github一些概念和操作备忘
origin默认是远程仓库HEAD永远指向当前的commit一个branch可以理解为一个commit,也可以理解为从起始commit开始的一条分支, branch可以和master在一条线上,branch也可以另起一条分支,branch可以领先于master也可以落后于master所以“”“”branch就是某个commit的一个引用,只是在git log的时候会列出当前路径的...原创 2019-03-14 13:17:40 · 197 阅读 · 0 评论 -
程序员的自我修养 - 读书笔记文字版
第1部分 简介第1章 温故而知新程序在运行的时候先通过分段(segmentation)的方式将虚拟地址空间与真实的物理内存地址空间进行一一的映射,但是这种方式每次换入换出的是整个程序,导致IO变大,更具局部性原理,可以采用分页(Paging)来解决. 分页就是将地址空间人为的等分成固定大小的页,每页的大小(4KB或者4MB)由操作系统确定。 几乎所有操作系统都采用4KB的分页,那么对于一个...原创 2019-03-14 13:20:00 · 3130 阅读 · 0 评论 -
Python中对json进行编码和解码的问题
在web开发中经常会在前后端之间通过json传递数据,但是又不能像客户端编程那样直接传递对象。所以json用于将两边的对象编码成数据,再在另一边解码出来。传递的过程中要先构造json对象,再将json对象编码为json字符串,而在接收的一端要先将json字符串解码而json对象1. ndarray编码为json字符串import numpy as npimport jsondata = n...原创 2019-03-20 18:23:44 · 3040 阅读 · 0 评论 -
Python提示unindent does not match any outer indentation level处理方法
在Python中,tab和空格是分开的,在一个文简历混用Tab和空格会报错,即unindent does not match any outer indentation level 2步解决这个问题1. 打开notepad++的空格和tab显示(视图-> 显示符号 -> 显示空格与制表符) 然后就可以看到空格还是tab了 2. 全部统一改为TAB或者空格(编辑->...原创 2018-06-30 21:05:30 · 110252 阅读 · 1 评论 -
LeetCode之283. Move Zeroes
Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.Example:Input: [0,1,0,3,12] Output: [1,3,12,0,0] Note:You m...原创 2018-06-19 12:00:53 · 134 阅读 · 0 评论 -
LeetCode之102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).For example: Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 ...原创 2018-06-25 17:24:04 · 179 阅读 · 0 评论 -
Python筛选字符串中数字并重新排列
data是一个列表,要求提取出其中的数字,并按原规律排列成矩阵>>> data = [[1, 2, [3, 4]], 5, 6, [7, 8], [1, 3, [6, 7]]]>>> data[[1, 2, [3, 4]], 5, 6, [7, 8], [1, 3, [6, 7]]]>>> str_data = str(data)>>> filter_digit = []>>> fo原创 2018-01-26 17:09:29 · 2405 阅读 · 0 评论 -
C# 中数据结构总结
C#数据结构转载 2018-01-10 16:29:27 · 268 阅读 · 0 评论 -
Python中的模块和包的区别
自从面向对象的思想在二十世纪八十年代左右被提出之后,其经历了雨后春笋般的发展,类,命名空间,Python中的包和模块都是生在在它上面的。类和对象是OOP的核心成员,Python在类和对象的基础上,为了程序更好的组织,特别是在网络时代,为了让编程语言具备更加强大的生命力,引入了模块和包的概念。包是比模块更高层的概念,模块一般是一个文件,包是一个目录,一个包中可以包含很多个模块。包的al原创 2018-01-26 17:03:02 · 3419 阅读 · 0 评论 -
LeetCode之771:Jewels and Stones
1. 解法1(遍历比较,时间复杂度O(J*S),空间复杂度O(1))1.1 C#代码public class Solution { public int NumJewelsInStones(string J, string S) { int Jlen = J.Length; int Sle...原创 2018-02-28 13:51:23 · 364 阅读 · 0 评论 -
C#数据结构之链表的总结
此处定义单链表的数据结构与LeetCode上相同,为: public class ListNode { public int val; public ListNode next; public ListNode(int...原创 2018-03-12 14:52:21 · 2238 阅读 · 0 评论 -
C#中的HashSet, HashTable, Dictionary的区别
HashSet和Python中的Set差不多,都是为逻辑运算准备的,HashSet不允许数据有重复,且存入的时单值不是键值对。 HashTable和Dictionary差不多,但是他们的实现方式时不同的,Dictionary俗称字典,里面存放的时键值对,即KeyValuePair,且支持泛型,而HashTable国内一般译为哈希表,但是在我看来,为了更好表达它的本质,翻译为散列表比较好,因为Ha...原创 2018-03-20 14:37:11 · 8976 阅读 · 1 评论 -
C#实现和调用WebService
Webservice本本身是使用的soap+WSDL+UDDI三者的组合, soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, uddi用来管理,分发,查询webService。 但是C#在这个基础上又做了进一步的封装,所以使用C#语言的时候又两种方法可以调用WebService,即高级封装的和原生的(即http对象的方式)。WebService是RPC(远程过程调用),...原创 2018-03-29 13:45:07 · 701 阅读 · 0 评论 -
LeetCode之653. Two Sum IV - Input is a BST
* 这题属于Two Sum题,将BST中根遍历存到数组当中,转换为数组的Two Sum问题即可 *C # 代码public bool FindTarget(TreeNode root, int k) { List<int> lst = new List<int>(); BST2Lst(root,r...原创 2018-05-11 22:17:46 · 236 阅读 · 0 评论 -
Python的实例方法,类方法和静态方法的区别
OOP是一种编程思想,各种语言对这种思想的实践都不尽相同,这体现在他们的语法当中class Test(object): class_name = "Test" def __init__(self): self.x = 5 #实例方法 def test01(self): print("InstanceMethod calle...原创 2018-05-14 14:06:36 · 318 阅读 · 0 评论 -
Pycharm提示 Unresolved reference 的解决办法
有时候a.py和b.py在一个目录里面,但是在a.py种写import b有时会提示Unresolved reference,Pycharm常见,解决办法是setting -&gt; Project -&gt; Project structure -&gt; Source,点击要加入的文件夹, ** 注意: 添加成功之后该文件见的图标会编程蓝色(加入之前是淡蓝色中间一个圆圈)...原创 2018-05-14 14:13:39 · 25588 阅读 · 0 评论 -
服务器向浏览器主动发送信息的方式之SSE和Websocket
传统的B/S架构编程中,只有客户端(即网页)向后端发送请求,然后接收后端发来的数据,这种方式对于需要实时更新的页面是一个很大的问题。 最初,解决这一问题的办法是ajax轮询或者长ajax连接的方式,但是在服务器端没有数据变动的时候,无疑加大了服务器的负担。 新的解决办法有两个,一个是SSE(Server-SendEvent )但是这种方法的缺点是,半双工的连接,即和传统的方式相反,只能由服务器...原创 2018-05-20 21:37:43 · 3384 阅读 · 0 评论 -
前端解惑之设备独立像素,设备独立像素比,和viewport
最近一直在研究移动设备的前端开发,发现于PC大有不同。要说吗这种不同,首先就要从meta标签的viewport开始首先在传统的PC网页的前端开发当中,浏览器只不过是庞大桌面上的一个小应用,且大小可调,但是在移动端,浏览器默认是占满整个屏幕的(除了状态栏)。在传统web开发中最开始很少考虑网页自适应的问题,近些年显示器大小多变,才导致了前端开发的自适应难题,但是这于我们说的移动端的自适应还是...原创 2018-06-05 15:02:11 · 1851 阅读 · 0 评论 -
LeetCode之1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same ...原创 2018-06-20 18:06:25 · 146 阅读 · 0 评论 -
正则表达式学习
对于一个经常编程的人(算不上程序员),正则表达式是一个绕不过去的坎。而往往就是这种看起来比较奇葩用起来又很关键的技术,掌握之后会发现,眼前的视野又宽阔了好多。正则表达是包括: 1. 界定符号 2. 原子 3. 元字符 4. 量词 5. 边界控制 6. 模式单元 7. 模式修正 这么七个大的部分。1. 界定符在不同的语言中不一样,主要用来告诉程序语言,这一段奇怪的字符串原创 2018-01-05 16:13:02 · 183 阅读 · 0 评论