Here

Git基本命令、项目搭建

梦想与她 提交于 2020-07-27 11:04:00
一、Git上传下来基本命令 Git的四个工作区域: 1.工作目录 2.暂存区 3.资源库 4.git仓库 二、项目搭建 有两种方式: 1.在根目录创建新的仓库 在根部目录文件下右击Git Bash Here 输入命令:git init(初始化项目)之后文件夹中会多出.git的文件 注意: .git是个隐藏文件,需要把隐藏的项目勾选上才能看到 2.克隆远程仓库 Git clone +后面是远程仓库复制的链接(Shift+Ins) 三、Git文件操作 1.把写的代码放到根目录下,之后再Git Bash Here执行第一个命令:git add. 把他添加到暂存区 2.通过git status命令看他有没有添加进去。 3.如果添加进去通过git commit -m“消息内容”提交到本地(-m提交信息) 四、忽略文件 有些时候我们不想把某些文件纳入版本控制中,在主目录下建立".gitignore"文件 来源: oschina 链接: https://my.oschina.net/u/4301555/blog/4301712

PHP使用Redis实现Session共享

£可爱£侵袭症+ 提交于 2020-07-27 05:26:05
前言 小型web服务, session数据基本是保存在本地(更多是本地磁盘文件), 但是当部署多台服务, 且需要共享session, 确保每个服务都能共享到同一份session数据. redis 数据存储在内存中, 性能好, 配合持久化可确保数据完整。 设计方案 1.通过php自身session配置实现 # 使用 redis 作为存储方案 session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379" # 若设置了连接密码, 则使用如下 session.save_path = "tcp://127.0.0.1:6379?auth=密码" 测试代码 <?php ini_set("session.save_handler", "redis"); ini_set("session.save_path", "tcp://127.0.0.1:6379"); session_start(); echo "<pre>"; $_SESSION['usertest'.rand(1,5)]=1; var_dump($_SESSION); echo "</pre>"; 输出 ↓ 评价 优点: 实现简单, 无需修改php代码 缺点: 配置不支持多样化, 只能应用于简单场景 2. 设置用户自定义会话存储函数 通过 session

第22天:Python NameSpace&Scope

扶醉桌前 提交于 2020-07-27 04:28:15
by 潮汐 命名空间定义了在某个作用域内变量名和绑定值之间的对应关系,命名空间是键值对的集合,变量名与值是一一对应关系。作用域定义了命名空间中的变量能够在多大范围内起作用。 命名空间在 Python 解释器中是以字典的形式存在的,是以一种可以看得见摸得着的实体存在的。作用域是 Python 解释器定义的一种规则,该规则确定了运行时变量查找的顺序,是一种形而上的虚的规定。 一、命名空间 1、概述 A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。 命名空间是名字和对象的映射,命名空间是通过 Python Dictionary(字典) 来实现的。 命名空间提供了一个在大型项目下避免名字冲突的方法 Python 中各个命名空间都是独立的,他们之间无任何关系 一个命名空间中不能有重名,但不同的命名空间是可以重名而没有任何影响。 命名空间就像是计算机中的文件夹一样,同一个文件夹中的文件不可重名,但是如果两个文件从属于不同的文件夹就可以重名。 同理相同的对象名可以存在不同的命名空间中: 2、命名空间种类 命名空间的种类分为 3 类,命名空间的种类也体现了命名空间的生命周期。三个种类及生命周期描述如下: 1)内置名称

stb_image multiple definition of first defined here 多文件包含问题

爷,独闯天下 提交于 2020-07-27 03:52:36
解决办法: 预先定义 STB_IMAGE_IMPLEMENTATION STB_IMAGE_STATIC 两个宏。 首先吐槽一下,网上的其他的一些内容都是瞎写,根本没有指出问题的根本原因,使用时出现异常情况不能自己解决也说明了C语言基础不牢固, 该头文件可以分为两种情况使用(推荐使用办法2,办法1中有解释原因)(任何一种情况都要在使用前 预先定义 STB_IMAGE_IMPLEMENTATION 宏): 1、被当做头文件包含到别的文件中,则其不应该在不同的 .c、.cpp文件中被展开(注意:源文件的头文件会在预处理阶段将其头文件展开,也有可能会变成这种情况),否则相当于在不同的源文件中定义同名的C函数,再编译生成 .o文件时肯定会报重定义的错误。一个解决办法是只在一个源文件(.c .cpp)中展开该项。当然这不是最好的解决办法,C语言中为解决多个源文件包含相同的函数提供了更好的办法,相信你已经猜到了------static关键字,其修饰的函数和全局变量只在本文件中可见,这样就不会和其他文件冲突了,也就是情况2。 2、使用前 预先定义 STB_IMAGE_STATIC ,稍微查看源码即可直到,添加该宏定义以后,函数会被static修改(否则为extern),完美的解决了重定义的问题。推荐大家使用。 来源: oschina 链接: https://my.oschina.net/u

javascript WebUploader 分片上传

孤者浪人 提交于 2020-07-27 02:00:52
1,项目调研 因为需要研究下断点上传的问题。找了很久终于找到一个比较好的项目。 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面。 https://github.com/freewebsys/java-large-file-uploader-demo 效果: 上传中,显示进度,时间,百分比。 点击【Pause】暂停,点击【Resume】继续。 2,代码分析 原始项目: https://code.google.com/p/java-large-file-uploader/ 这个项目最后更新的时间是 2012 年,项目进行了封装使用最简单的方法实现了http的断点上传。 因为html5 里面有读取文件分割文件的类库,所以才可以支持断点上传,所以这个只能在html5 支持的浏览器上面展示。 同时,在js 和 java 同时使用 cr32 进行文件块的校验,保证数据上传正确。 代码在使用了最新的servlet 3.0 的api,使用了异步执行,监听等方法。 上传类UploadServlet @Component("javaLargeFileUploaderServlet") @WebServlet(name = "javaLargeFileUploaderServlet", urlPatterns = { "

华为搜索引擎面世!

不羁岁月 提交于 2020-07-26 17:37:08
为了解决没有「谷歌全家桶」的问题,华为今年接连推出了 HMS Core、地图服务、应用商店 AppGallery,现在连属于自己的搜索引擎「花瓣搜索」也面世了。 自 2019 年 5 月以来,在美国政府的「禁令」之下,谷歌宣布停止与华为合作,尤其是不再提供谷歌移动服务(GMS)。这就迫使海外市场用户在购买华为手机时不得不考虑不能使用谷歌移动服务所造成的影响,也为华为手机的海外销售造成一定影响。 在这种不利的全球情势下,华为积极应对,采取一系列措施弥补无法使用谷歌服务所造成的损失。2020 年 1 月 15 日,华为 HMS Core 4.0 全球上线,面向开发者亮相 20 余项产品服务,除了包含 GMS 提供的基础服务外,它还提供机器学习服务、情景感知服务、全景服务等差异化能力,帮助开发者开发出体验更优、更智能化的应用。 2 月份,华为推出了全新的 AppGallery 应用商店。3 月份,华为推出了两款搜索应用,即「Search」和「AppSearch」,并在德国进行测试上线。4 月份,华为在 AppGallery 上线了 HERE WeGo 地图和导航解决方案,这是华为取代谷歌地图的一次尝试。 但谷歌最为核心的服务搜索引擎怎么办?近日,华为官方发布了「Petal Search」搜索引擎,集成了此前的「Search」和「AppSearch」,目前在 AppGallery

LintCode 9.Fizz Buzz 问题(JAVA实现,一个if都不用)

烂漫一生 提交于 2020-07-26 15:41:17
描述 给你一个整数n. 从 1 到 n 按照下面的规则打印每个数: 如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz. 样例 比如 n = 15, 返回一个字符串数组: [ " 1 " , " 2 " , " fizz " , " 4 " , " buzz " , " fizz " , " 7 " , " 8 " , " fizz " , " buzz " , " 11 " , " fizz " , " 13 " , " 14 " , " fizz buzz " ] 挑战 你是否可以只用一个 if 来实现? 实现 // 使用条件运算符加switch,一个if都没用。 public class Solution { /** * @param n: An integer * @return : A list of strings. */ public List<String> fizzBuzz( int n) { // write your code here List<String> list = new ArrayList(); for ( int i = 1; i <= n; i++ ) { int s = i % 15 == 0 ? 3 : i % 5 == 0 ? 2 : i % 3 == 0 ? 1

细数35个单元测试准则

不羁岁月 提交于 2020-07-26 15:21:59
1.保持单元测试小巧、快速 理论上,任何代码提交前都应该完整跑一遍所有测试套件。保持测试代码执行符合预期,这样能够缩短迭代开发周期。 2.单元测试应该是全自动/非交互式的 测试套件通常是定期执行的,执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。 3.让单元测试很容易跑起来 对开发环境进行配置,最好是敲一条命令或是点击一个按钮就能把单个测试用例或测试套件跑起来。 4.对测试进行评估 对执行的测试进行覆盖率分析,得到精确的代码执行覆盖率,并调查哪些代码未被执行。 5.立即修正失败的测试 每个开发人员在提交前都应该保证新的测试用例执行成功,当有代码提交时,现有测试用例也都能跑通。 如果一个定期执行的测试用例执行失败,整个团队应该放下手上的工作先解决这个问题。 6.把测试维持在单元级别 单元测试即类(Class)的测试。一个“测试类”应该只对应于一个“被测类”,并且“被测类”的行为应该被隔离测试。必须谨慎避免使用单元测试框架来测试整个程序的工作流,这样的测试即低效又难维护。工作流测试(译注:指跨模块、类的数据流测试)有它自己的地盘,但它绝不是单元测试,必须单独建立和执行。 7.由简入繁 再简单的测试也远远胜过完全没有测试。一个简单的“测试类”会促使建立“被测类”基本的测试骨架,可以对构建环境、单元测试环境、执行环境以及覆盖率分析工具等有效性进行检查

Verilog HDL刷题笔记(01)

安稳与你 提交于 2020-07-26 13:27:05
听别人推荐了一个Verilog刷题网站:https://hdlbits.01xz.net/wiki/Main_Page 01.Build a circuit with no inputs and one output. That output should always drive 1 (or logic high). module top_module( output one ); // Insert your code here assign one = 1'b1 ; endmodule 02.Build a circuit with no inputs and one output that outputs a constant 0. module top_module( output zero); // Module body starts after semicolon assign zero = 1'b0; endmodule 03.Create a module with one input and one output that behaves like a wire.["continuous assignment" ( assign left_side = right_side; )] module top_module( input in, output out

[Go] GO语言实战-gin框架项目实现中英文切换

谁说胖子不能爱 提交于 2020-07-26 13:10:24
如果项目中需要有多语言的展示,类似网站中英文切换,可以使用下面这个方法来实现 主要思路就是,页面html内容展示的时候,不能固定写死在页面上,需要从控制器部分分配过来变量,展示输出这个变量 这个变量的内容来自一个结构体的成员,该结构体在创建实例的时候,可以根据传递参数的不同,实例的成员内容不同 实际展示的地址是: http://gofly.sopans.com/ 直达地址 控制器部分就是分配变量,在这里是通过get传递lang这个参数cn就是中文,en就是英文 engine.GET("/index", tmpl.PageIndex) // 首页 func PageIndex(c * gin.Context) { lang : = c.Query( " lang " ) if lang == "" ||lang!= " cn " { lang = " en " } language: = config.CreateLanguage(lang) c.HTML(http.StatusOK, " index.html " , gin.H{ " Copyright " :language.WebCopyRight, " WebDesc " :language.MainIntro, " SubIntro " :language.IndexSubIntro, " Document "