关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader.公众号后台回复关键字 "1024" 获取程序员大厂面试指南. 图:Drone promotions from SkyPixel 背景 石头大约在 2010 年左右有了自己的第一个域名,也是从那个时候开始写博客的.至今确实有 10 年时间了. 最初玩 blog,其实更多的还是抱着学习的态度.比如刚学习完了 DNS 解析,HTML 语法,不 "实战"一把么?然…
(1) 读写最好还是不要多线程,硬盘读写的速度有限,单线程时已经满负荷了,多线程又会增加线程之间的切换,会增加时间. 如果想增加读写速度,应该增加硬盘,做raid (2)首先是硬盘的写入是串行的,CPU的计算才是并行的,如果你偏重计算那么多线程能提高,要不怎么叫做并行计算呢: 如果侧重存储,除非数据量达到足以体现优势的程度,否则加上线程之间切换的损耗当然会效率更加地下. (3)这个是按照算法来说的,目前来说大多数的算法都是很快的,瓶颈都在磁盘的IO上,我们针对大多数的算法都进行过测试,基本一半以…
我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃肿,越来越看不懂,那么如何更优雅的写判断逻辑,本文带你试一下. 举个例子 先看一段代码 /** * 按钮点击事件 * @param {number} status 活动状态:1 开团进行中 2 开团失败 3 商品售罄 4 开团成功 5 系统取消 */ const onButtonClick = (s…
ORM框架想必大家都比较熟知了,即对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”. 当你开发一个应用程序的时候(不使用O/R MAPPING),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等. 现在流行的ORM框架有: JAVA系列:APACHE OJB,C…
ORM框架想必大家都比较熟知了,即对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”. 当你开发一个应用程序的时候(不使用O/R MAPPING),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等. 现在流行的ORM框架有: JAVA系列:APACHE OJB,C…
前言 我最近喜欢把写的十分优美的技术文章叫做安利文.首先,文章必须是原创而非软广:其次,阅读之后不仅能快速吸纳技术要点并入门开发,还能感同身受的体会作者热情洋溢的赞美和急于分享心得体验的心情,让人感觉相见恨晚,醍醐灌顶. 安利文基于技术文章但又高于技术文章,同是经验总结,但却因为作者认真的揣摩每一个标点.断句而变得优雅.一篇满是主观感受的文章却不嚼之乏味,作者用心的指出每一个需要注意的技术亮点在文字中如蛟龙戏水,让阅读者大呼过瘾.因此,我觉得能原创分享一篇技术文章精神已经难能可贵,但若能锦上添花…
要回答这个问题,我们应该先认识一下obj中的equals和hascode方法 1.equals()方法在obj中定义如下: public boolean equals(Object obj) { return (this == obj); } 可以看到因为'==',所以是将两个对象的地址值进行比较(比较对象的引用是不是相同),但是在String和Integer等包装类中已经重写了equals()和hashcode()方法,比如在String类中: public boolean equals(Ob…
java 写 Excel(不生成实体文件,写为流的形式) public String exportReportExcel(String mediaCode, List<SimpleMediaResourceInfo> mediaResourceInfos) { String scheduleURL = ""; // 1. 根据不同的媒介code查询对应的媒介细节内容 List<MediaContent> mediaContents = mediaContentM…
DRF(Django REST framework)是一个高度封装的框架,这导致想完成一件事情可以通过重写父类函数的方式从DRF的各个层次来写,都能够实现目的. 比如写视图函数,可以用继承APIView的方式或者继承Viewsets的方式,甚至直接写视图函数 但是想要更加干净简洁的代码,还是需要找到实现的最佳方式 以下是我的一些个人总结,欢迎讨论 models.py 1.PositiveSmallIntegerField Positive对应unsigned Small对应smallint(5)…
java 写 Excel(不生成实体文件,写为流的形式) public String exportReportExcel(String mediaCode, List<SimpleMediaResourceInfo> mediaResourceInfos) {String scheduleURL = "";// 1. 根据不同的媒介code查询对应的媒介细节内容List<MediaContent> mediaContents = mediaContentMapp…
好了,现在开始记录我学习QT的学习历程 . 本人也不是计算机专业出来的,自学了一点,但还是不好找工作,于是参加了培训,虽然感觉没多学到什么 编程的学习生涯就是不断的看别人的源码,然后自己参考着写写自己的,把别人的好东西收集起来,等自己某一次需要的时候,知道有这个技巧可以用,就非常完美了.在我看来,很多的技术什么的,说的漂亮,其实用技巧来描述更合适,也没什么真正的技术含量,只是你想不到,是吧,哈哈哈哈.还是得膜拜下那些远程技术的大神. 好了,开始吧.学习QT. 今天也不记录什么其他的,就说说QT是…
原文地址:http://www.cnblogs.com/jqyp/archive/2012/03/29/2423112.html#undefined 一.什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息. 二.哪里用到反射机制 有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码, Class.forName("com.mysql.jdbc.Driver.cl…
简介 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 简单点来说,Markdown是文本标记语言,在普通文本的基础上加了一些特殊标记.这些特殊标记会被Markdown编辑器渲染成特定样式.Markdown的后缀一般是.md或者.markdown. 由于Markdown语法简洁明了.学习容易,而且功能比纯文本更强,因此有很多人用它写博客或者文档. 相比传统富文本编辑器或者word编辑器,使用Markdown生成的文档样式美观.统…
Typora 简介 Typora删除了预览窗口,以及所有其他不必要的干扰.取而代之的是实时预览. Markdown的语法因不同的解析器或编辑器而异,Typora使用的是GitHub Flavored Markdown. 下载 Typora下载. 常用快捷键 加粗: Ctrl/Cmd + B 标题: Ctrl/Cmd + H 插入链接: Ctrl/Cmd + K 插入代码: Ctrl/Cmd + Shift + C 行内代码: Ctrl/Cmd + Shift + K 插入图片: Ctrl/Cmd…
Matrix Power Series 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak.   输入 The input contains exactly one test case. The first line of input contains three positive intege…
本文是Raymond Hettinger在2013年美国PyCon演讲的笔记(视频, 幻灯片). 示例代码和引用的语录都来自Raymond的演讲.这是我按我的理解整理出来的,希望你们理解起来跟我一样顺畅! 遍历一个范围内的数字 for i in [0, 1, 2, 3, 4, 5]: print i ** 2 for i in range(6): print i ** 2 更好的方法 for i in xrange(6): print i ** 2 xrange会返回一个迭代器,用来一次一个值地…
Python与其他语言(比如 java或者 C ++ )相比有较大的区别,其中最大的特点就是非常简洁,如果按照其他语言的思路老师写Python代码,则会使得代码繁琐复杂,并且容易出现bug,在Python中,有个词很火,Pythonic.有的同学可能不明白这个词的意义,小编的理解就是有Python的写法写代码,而非是其他语言的通用写法,写出python的特点,写出Ppython的风格. 下面,就通过几个示例来看看一下不同思维的Python代码的差异. 1.变量值的交换 这个词最常见,大家从最开始…
首先,自从使用链式调用的写法后,就一发不可收拾的喜爱上了这种优雅的方式.不管是写架构还是写模块,我都会不自觉的使用这种最优雅的方式.链式写法既减少了代码量,又非常优雅的. 在使用 egret 的http请求时,发现代码量很大,而且比较繁琐,不能每次都要写这么多的代码吧--那来看看正常的写法是什么: getTest(): void { //一点也不优雅 var loader: egret.URLLoader = new egret.URLLoader(); loader.dataFormat =…
Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对话,你会学到很多.为什么是 underscore?最主要的原因是 underscore 简短精悍(约 1.5k 行),封装了 100 多个有用的方法,耦合度低,非常适合逐个方法阅读,适合楼主这样的 JavaScript 初学者.从中,你不仅可以学到用…
如果像下面这样写: using UnityEngine;using System.Collections;using UnityEditor;using System.Collections.Generic;using UnityEngine.Assertions.Must;[CustomEditor(typeof(xxxControl))]public class xxxControlEditor : Editor{    SerializedProperty m_a;    void OnE…
你一天(一周)内写了多少个循环了? var i; for(i = 0; i < someArray.length; i++) {   var someThing = someArray[i];   doSomeWorkOn(someThing); } 这当然无害,但这种写法非常丑而且奇怪,这也不是真正需要抱怨的.但这种写法太平庸了. var i,   j; for(i = 0; i < someArray.length; i++) {   var someThing = someArray[i…
尊敬的各位CSDN用户: 您好! 为了更好的服务客户.CSDN已经支持Windows Live Writer离线写博客啦.Windows Live Writer于2014年5月29日正式上线啦!欢迎大家抢先体验! 有了WLW .如今您能够随时随地撰写博客.不用登录就可以编辑和发表博客啦.WLW 能够直接打开不论什么之前已经公布的日志.改动并又一次公布.确保您在脱机时所作的改动与您公布的内容同步. 下面是安装WLW 和相关设置: 1. 下载安装WLW (步骤略,可自行下载.官方下载地址:id=86…
写Vue或者是react 都会遇见弹框的问题.也尝试了多种办法来写弹框,一直都不太满意,今天特地看了一下 Element UI 的源码,模仿着写了一个简易版. 大概有一下几个问题: 1.弹框的层级问题,如果在嵌套的组件里面使用了弹框,可能会出现弹框的层级不够高 2.弹框的函数调用方式 首先第一点:弹框的层级 如果将弹框放置在最外层,body下面.就不会有层级问题. 第二点:弹框的函数调用 首先我们可以思考,将组件的实例拿到,然而初学的时候好像只有 通过  refs 能拿到组件的对象,然后调用显示…
前记:Android这个开源而自由的系统,为我们带来开发便利,同时也埋下太多的深坑.例如调用系统自带的相机就会出现照片丢失,或者其他各种各样的问题.因此,看来自定义一个相机十分的必要. 要自定义相机我们无法要利用surfaceview与自带camera两把利器. 首先了解surfaceview的基本含义: 通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制).但是在其他线程中却不能修改UI元…
cc给发的视频链接: http://v.youku.com/v_show/id_XMzA4Mjg1ODA0MA==.html?spm=a2h3j.8428770.3416059.1 —————————————————————————————————————————————————— 看到21秒,写简单的接口测试,fiddler使用 fiddler如何过滤想要的网址…
Sphinx 是一个工具,它使得创建一个智能而美丽的文档变得简单.作者Georg Brandl,基于BSD许可证. 起初为写 Python 文档而诞生的 Sphinx,支持为各种语言生成软件开发文档. 它有着以下突出特性: 输出格式:HTML(包括Windows的HTML帮助文件).LaTex(可以打印为PDF).epub(流行的电子书格式).Texinfo.manual pages(man手册).plain Text(纯文本) 广泛的交叉引用:语义标记,函数.类等的自动连接等 分层架构:目录树…
Shader toy (A new world) 1.一个多月了,突然忘记CSDN的password了.由于每次输password的时候都要计算一遍,于是没有计算出来- 2.回头发现都过了半年了,都快捏了一把汗,这百度何时不那么踉踉跄跄,搜索服务一直那么差,百度网速又不给力了. 3.创新的思维非常重要,那为了那死去活来还要被唾弃的文聘我值得吗? 留一戳shadertoy地址:https://www.shadertoy.com/user/834144373 就 恬纳微晰 C博客做得还是能够.毕竟是…
好吧!我承认我想标题党了.大家对解释器的吸引,绝对没有自己动手写一个脚本语言更有吸引力.不过如果看到标题过来的,可能也是 我承认,之前收藏的减肥视频,我都是这样对待他们的. 不过我还是相信很多程序猿or程序媛不仅仅希望可以做出一个牛逼的产品,更想做出来一个牛逼闪闪的编程语言.而这里就是朝着开发一个脚本语言的方向去努力 恩!我就是xxoo语言之父. 前几篇文章已经实现一个简易的加减法计算器,想必看了文章之后可以很快的写出来一个乘除法计算器.那么如果加减乘除混合运算呢? 这节将实现类似6-1*2+4…
先在我们的选项卡可以说能用了,每个标签页都能点进去,但是这还远远没到能用的地步,比如说你把窗口最大化后. 立马就露出马脚了,所以这篇我们要先讲讲tabctrl的最基本的功能实现 改变选项卡大小 上图的原因就是主窗口在改变的大小的时候没有通知选项卡让他跟着主窗口一起变,所以我们现在通知选项卡一下 添加ON_WM_SIZE消息,实现函数 void CtabView::OnSize(UINT nType, int cx, int cy) { //CFormView::OnSize(nType, cx,…
现在做出来的选项卡实在太丑的,咱们怎么把他弄得好看一点呢 tabctrl是可以添加icon图标的,那派生与tabctrl的mfctabctrl肯定也能添加图标,他们两个添加图标的原理一样,但是还是有点不同 首先给项目添加三个图标 然后在成员变量中添加ImageList对象,必须要添加在成员变量中,否则加载不出来图片. CImageList m_imglist; 之后在初始化中创建CImageList,他的声明为 BOOL Create(int cx, int cy, UINT nFlags, i…