软件编程
编程鸭
这个作者很懒,什么都没留下…
展开
-
Java并发编程:ThreadLocal的使用以及实现原理解析
前言前面的文章里,我们学习了有关锁的使用,锁的机制是保证同一时刻只能有一个线程访问临界区的资源,也就是通过控制资源的手段来保证线程安全,这固然是一种有效的手段,但程序的运行效率也因此大大降低。那么,有没有更好的方式呢?答案是有的,既然锁是严格控制资源的方式来保证线程安全,那我们可以反其道而行之,增加更多资源,保证每个线程都能得到所需对象,各自为营,互不影响,从而达到线程安全的目的,而Threa...原创 2019-05-24 11:50:14 · 147 阅读 · 0 评论 -
让前端开发者失业的技术,Flutter Web初体验
Flutter是一种新型的“客户端”技术。它的最终目标是替代包含几乎所有平台的开发:iOS,Android,Web,桌面;做到了一次编写,多处运行。掌握Flutter web可能是Web前端开发者翻盘的唯一机会。在前些日子举办的Google IO 2019 年度开发者大会上,Flutter web作为一个很亮眼的技术受到了开发者的追捧。这是继Flutter支持Andr...原创 2019-06-08 11:54:16 · 2803 阅读 · 0 评论 -
「试着读读 Vue 源代码」工程目录及本地运行(断点调试)
说明 首先这篇文章是读 vue.js 源代码的梳理性文章,文章分块梳理,记录着自己的一些理解及大致过程;更重要的一点是希望在 vue.js 3.0 发布前深入的了解其原理。 如果你从未看过或者接触过 vue.js 源代码,建议你参考以下列出的 vue.js 解析的相关文章,因为这些文章更细致的讲解了这个工程,本文只是以一些 demo 演示某一功能点或 API 实现,力求简要梳理过程...原创 2019-06-08 11:56:53 · 378 阅读 · 0 评论 -
构建工具篇 - react 的 yarn eject 构建命令都做了什么
前言前段时间,一直在研究 react 技术栈,对于项目的构建方面,又有一定的特殊需求,通过 npx create-react-app [filename] 安装以后,发现没有 webpack 相关的配置的目录,在读了 react 官方文档后,发现通过 yarn eject 可以弹出相关的配置,进行自定义配置。于是,我就想知道 eject 到底做了什么,发现里面涉及到很多的知识点,也有很多是我之...原创 2019-06-08 11:58:56 · 11584 阅读 · 1 评论 -
使用开源概率编程语言 Pyro 对截尾时间 - 事件数据进行建模
在 Uber,我们有兴趣调查乘客在平台上完成首次乘坐到第 2 次乘坐之间的时间跨度。我们的很多乘客是通过推荐或促销活动首次与 Uber 进行互动的。他们的第 2 次乘坐是个关键指标,表明乘客在使用平台的过程中发现价值并愿意长期使用我们服务。然而,对第 2 次乘坐时间建模是件棘手的事。例如,一些乘客不经常乘车。在分析这类乘客的第 2 次乘坐之前的时间 - 事件数据时,我们认为他们的数据就是截尾数据。...原创 2019-06-08 13:44:00 · 679 阅读 · 0 评论 -
学习排序算法,结合这个方法太容易理解了
排序是一个经典的问题,它以一定的顺序对一个数组或列表中的元素进行重新排序。而排序算法也是各有千秋,每个都有自身的优点和局限性。虽然这些算法平常根本就不用自己去编写,但作为一个有追求的程序员,还是要了解它们从不同角度解决排序问题的思想。学习算法是枯燥的,那怎么高效的理解它的原理呢?显然,如果以动图的方式,生动形象的把算法排序的过程展示出来,非常有助于学习。visualgo.net就是一个可视化...原创 2019-06-03 10:24:29 · 3453 阅读 · 1 评论 -
React服务器端渲染框架next.js项目实战及部署上下文context问题解决办法
在前段时间折腾过搭建react服务器端项目架构,点击这里了解下,正好最近有个重构PC网站的需求,考虑SEO等因素。在做技术选型的时候决定采用nextjs。项目开发过程中,nextjs的体验非常棒,个人觉得比create-react-app开发体验还要好,特别是HMR功能,虽然都有这个功能,但是nextjs做的更好一些。CRA里面修改了代码,格式化了文档,会导致整个页面刷新,这对于SPA项目的开发体...原创 2019-06-04 10:43:22 · 1134 阅读 · 0 评论 -
vue页面切换效果(slide效果切换)
最近碰到一个需求,单页应用里面页面切换的效果需要做成跟轮播图滑动slide一样,让这个页面在切换时感觉是一个页面。反复琢磨的vue里面的transition,最终将实现的核心代码贴出来。这里实现的是上下切换,左右的效果类似。核心代码如下(App.vue):注:这里使用了vue-touch组件来监听swipe事件最重要的就是transition的样式:如果你...原创 2019-06-03 14:03:06 · 5065 阅读 · 0 评论 -
Web后台管理系统
开发语言:C#数据库:sql2008登录页面后台管理首页部分操作页面后台管理系统,界面简洁,大方,操作简单,所有功能可定制开发。后台管理系统制作如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!小编也会每天定时更新既有趣又有用的编程知识!...原创 2019-06-09 14:12:09 · 3998 阅读 · 2 评论 -
C# 关于App.config
App.config是winfrom等程序的应用程序配置文件,用来存放一些参数。app.config只会在应用程序启动时加载一次。当程序在运行中修改app.config中的参数是不会生效,必须要重启程序才会生效,如果想要达到立即生效的效果,可以采用以下方法1、新建config文件时,不要使用app作为config名字,然后使用config操作类来读取和写入2、...原创 2019-06-09 14:13:57 · 1810 阅读 · 0 评论 -
kill 命令在Java应用中使用注意事项
前言我们都知道,kill在linux系统中是用于杀死进程。kill pid [..]kill命令可将指定的信号发送给相应的进程或工作。 kill命令默认使用信号为15,用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号9,强制杀死进程或作业.因此,如果确保将进程杀死,可以使用-9参数kill -9 pid [..]linux 中常见的信号1 SIGH...原创 2019-06-09 14:25:55 · 238 阅读 · 0 评论 -
SpringBoot处理全局统一异常
在后端发生异常或者是请求出错时,前端通常显示如下Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Fri Jun 07 15:38:07 CST 2019There was an unexpected erro...原创 2019-06-09 14:32:07 · 645 阅读 · 0 评论 -
你的Redis怎么持久化的
引言(本文改编自生活真实案例,如有类同,绝不是巧合!)端午节,烟哥正在一边愉快的学习....突然,微信一阵抖动。原来是老刘呼唤烟哥!善良的烟哥本以为人家是要约我出去玩!然而,打开微信一看,出现下图聊天记录于是本文的主题就这么展开了。由于我需要迅速让老刘明白,这种问题的回答套路,所以我回答的时候,教她的是一种通用做法。ps:附《那些年用过的redis集群架构(含面试解析)》的连接地址。当...原创 2019-06-09 14:49:38 · 170 阅读 · 0 评论 -
JDK11 | : ZGC 垃圾收集器
一、简介Java 11包含一个全新的垃圾收集器--ZGC,它由Oracle开发,承诺在数TB的堆上具有非常低的暂停时间。 在本文中,我们将介绍开发新GC的动机,技术概述以及由ZGC开启的一些可能性。那么为什么需要新GC呢?毕竟Java 10已经有四种发布多年的垃圾收集器,并且几乎都是无限可调的。 换个角度看,G1是2006年时引入Hotspot VM的。当时最大的AWS实例有1 vCPU和...原创 2019-06-04 10:57:41 · 2267 阅读 · 0 评论 -
实验室中的“黑洞”,证实了霍金的预测?
黑洞,是爱因斯坦基于广义相对论作出的最神奇预言之一。任何事物一旦跨过黑洞的事件视界,便再也无法返回,哪怕是光。在 1974 年,霍金提出了一个颠覆性的观点:黑洞并不是完全黑的,而是会释放出热辐射。他认为,微小的粒子流会从每个黑洞的边缘流出,也就是所谓的霍金辐射。 量子物理学告诉我们,真空并不是完全空的,而是充满了成对出现的粒子,它们在出现之后会立即相互湮灭。霍金发现,在黑洞事件视界的附近,如...原创 2019-06-04 11:24:22 · 177 阅读 · 0 评论 -
Vuex是什么?
记得去年公司招聘前端工程师的时候,我要负责准备面试题去考验面试者,让我记忆深刻的有一件事,我看大多数面试者简历上都写了熟练掌握Vuex,然而当我问起的时候,大部分回答都支支吾吾,解释不清,而当我提起与Vuex书写相似的Vux的时候,偶尔会被面试者反问到:“这不是一个东西吗?”,和我一同负责面试的技术总监(python,负责后台)也会充满疑惑,也会小声问道:“不是一样的吗?”,我就只好解...原创 2019-06-04 11:54:34 · 31748 阅读 · 6 评论 -
无限循环RecyclerView的完美实现方案
背景项目中要实现横向列表的无限循环滚动,自然而然想到了RecyclerView,但我们常用的RecyclerView是不支持无限循环滚动的,所以就需要一些办法让它能够无限循环。方案选择方案1 对Adapter进行修改网上大部分博客的解决方案都是这种方案,对Adapter做修改。具体如下首先,让 Adapter 的 getItemCount() 方法返回 Integer.MAX_...原创 2019-06-08 11:43:25 · 2753 阅读 · 2 评论 -
国人开发的数据可视化神库 pyecharts
一、pyecharts简介Echarts是百度开源的数据可视化工具,能够很好的嵌入web端,渲染的图表简洁精美,深受广大开发者喜爱和支持。而pyecharts是Python语言与Echarts的融合,用法简洁开发高效。pyecharts特性 简洁的 API 设计,使用如丝滑般流畅,支持链式调用 囊括了 30+ 种常见图表,应有尽有 支持主流 Notebook 环境...原创 2019-06-08 11:39:02 · 567 阅读 · 0 评论 -
即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?
本文引用了“蔷薇Nina”的“Nginx 相关介绍(Nginx是什么?能干嘛?)”一文部分内容,感谢作者的无私分享。1、引言Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡方案,从某种意义上来讲,Nginx几乎是低成本、高负载Web服务端代名词。如此深入人心的Nginx,很多人也想当然的认为,在IM或消息推送等场景下是否也能使用Nginx来解决负载均衡问题?...原创 2019-06-08 11:11:49 · 255 阅读 · 0 评论 -
一个编译器的实现3——用编译原理自动化制作文本解析器
关于编译器的概念、工作流程、算法和设计方案,可参考这里(http://www.cnblogs.com/bitzhuwei/archive/2013/06/05/CompilerDesignAndImp4Context-freeGrammar.html)。阅读本文须理解“上下文无关文法(Context-free Grammar)”是什么。本文以加减乘除表达式和一个3D坦克游戏模型为例,说明如何自...原创 2019-05-25 10:57:57 · 662 阅读 · 0 评论 -
【OpenGL(SharpGL)】支持任意相机可平移缩放的轨迹球实现
阅读目录(Content)2016-07-08 2016-02-10 1. 轨迹球原理 2. 轨迹球实现 1) 计算投影点 2) 计算夹角和旋转轴 3. 额外功能实现 【OpenGL(SharpGL)】支持任意相机可平移缩放的轨迹球在3D程序中,轨迹球(ArcBall)可以让你只用鼠标来控制模型(旋转),便于观察。在这里(http://www.yakergong.net...原创 2019-05-25 10:59:52 · 971 阅读 · 0 评论 -
C语言itoa()函数和atoi()函数详解(整数转字符C实现)
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。1.int/float to string/array:C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。● itoa():将整型值转换为字符串。● ltoa():将长整型值转换为字符串。● ultoa():将无符号长整型值转换...原创 2019-05-25 11:02:01 · 209 阅读 · 0 评论 -
CString,string,char*之间的转换
这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。以下我用简单的图示指出三者之间的关系,并以标号对应转换的方法。1 strin...原创 2019-05-25 11:03:32 · 21903 阅读 · 2 评论 -
简明Vim练级攻略
前言今天看到这篇文章,共鸣点非常多。它把Vim使用分为4个级别,目前我自己是熟练运用前面三级的命令,在培养习惯使用第四级。完全就是我这一年来坚持使用Vim的过程。所以不管怎么我要转载这篇文章。翻译自《Learn Vim Progressively》,原中文翻译出自《简明Vim练级攻略》。我进行了部分的排版工作,和文字删减以及所有图片本地化的工作。Vim的学习曲线相当的大,所以,如果你一开始看...原创 2019-05-25 11:06:09 · 191 阅读 · 0 评论 -
c语言中static 用法
static在c里面可以用来修饰变量,也可以用来修饰函数。先看用来修饰变量的时候。变量在c里面可分为存在全局数据区、栈和堆里。其实我们平时所说的堆栈是栈而不是堆,不要弄混。int a ;int main(){int b ; int c* = (int *)malloc(sizeof(int));}a是全局变量,b是栈变量,c是堆变量。static对全局变量的修饰,...原创 2019-05-25 11:08:11 · 371 阅读 · 0 评论 -
通过JavaScript操作HTML中select标签
添加:Js代码1.function selectChange()2.{3. var sel=document.getElementById("select1");4. Option option = new Option("Text","Value");5. sel.add(option);6.}function selectChange()...原创 2019-05-25 11:10:40 · 4335 阅读 · 0 评论 -
多线程编程(一)-- 揭开线程的神秘面纱
一、windows为什么要支持线程 早期操作系统的状况:早期,操作系统没有线程的概念。整个系统只运行着一个执行线程,其中同时包含操作系统代码和应用程序代码。 问题:长时间运行的任务会阻止其他任务的执行。某个应用程序的执行可能会冻结整个机器,造成OS和其他应用程序停止响应。如果应用程序有bug,会造成无线循环,同样会造成整个机器停止工作,并且会导致数据丢失。 改进:构建一个新的OS...原创 2019-05-27 12:39:30 · 102 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记-垃圾收集器与内存分配策略
在堆里存放着java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前需要知道哪些对象还存活,哪些对象已经死去。那怎么样去判断对象是否存活呢? 一、判断对象是否存活算法 1、引用计数法 实现思路:给对象添加一个引用计数器。每当有一个地方引用它时,计数器加1;引用失效时计数器减1。在任何时刻计数器为0的对象就是不可能再被使用的。 优点:实现简单,效率高。 ...原创 2019-05-27 13:53:36 · 173 阅读 · 0 评论 -
以互联网公司的经验告诉大家,架构师究竟比高级开发厉害在哪?
目前我在互联网公司里干了1年多,接触了多位技术和业务的架构师,由于我正在升级到架构师,所以能直观地感受到高级开发和架构的差距,而且,对于高级开发如何升级到架构师,本人目前更有切身体会。本文将结合我在互联网公司的工作体验,和大家分享下架构师和高级开发在工作中的侧重点,由此能给大家带来升级到架构师的启示。1 差距首先体现在工作态度上 架构师或立志升级到架构师的高级开发,平时工作...原创 2019-05-28 11:35:47 · 1522 阅读 · 0 评论 -
站点部署,IIS配置优化指南
通常把站点发布到IIS上运行正常后,很少会去考虑IIS提供的各种参数,如何配置才是最适合当前站点运行需要的?这篇文章,从基本设置、回收机制、性能、并发、安全性等IIS设置讲解应当如何优化。先来“IIS应用程序池”优化后的参数配置截图:图中一些数值限制参数,可以借助一些工具(如:windows性能监控)观察站点运行的指标进行设置,具体后面会介绍到下面来分别解说下...原创 2019-05-28 13:48:08 · 903 阅读 · 0 评论 -
大神是怎样用函数式JavaScript计算数组平均值的
函数式编程中用于操作数组的方法就像“毒品”一样,它让很多人爱上函数式编程。因为它们真的十分常用而且又超级简单。 .map() 和 .filter()都仅需一个参数,该参数定义操作数组每一个元素的函数即可。reduce()会复杂一些,我之前写过一篇文章介绍为什么人们难以掌握reduce()方法,其中一个原因在于很多入门资料都仅仅用算术作为例子。我写了很多用reduce()来做算术以外的例子。用r...原创 2019-06-05 14:02:52 · 4471 阅读 · 0 评论 -
ApplicationInsights的探测器尝鲜
通常我们可以依靠ApplicationInsights(以下简称ai)来收集比如请求(request),依赖项(dependencies),异常(exception)等信息,但是无法收集到比如一个方法(方法内部比如没有依赖项调用)的信息。很多时候如果一个方法很慢,我们只能根据ai分析首先是不是依赖项慢导致,如果不是,就以依赖项为节点,看这个依赖项是前面慢还是后面慢,然后在进行下一步分析。然...原创 2019-06-02 13:39:06 · 1546 阅读 · 0 评论 -
初探奥尔良(Orleans)
由于工作上关系目前经常被各种并发数据问题搞得焦头烂额,要么要性能舍弃数据上得一致性,要么要一致性但是却得到了特别糟糕的响应。难道鱼和熊掌真的无法兼得吗?然后找到了类似奥尔良这种基于Actor模型的kuangjia首先本人因为是C#系的所以暂不考虑Java系那套,那摆在面前的此类型的框架其实就2个。 Akka.Net和Orleans。什么是Actor?Actor应该说是一...原创 2019-06-02 13:42:39 · 1266 阅读 · 0 评论 -
Python并不完美,Swift正在成长为深度学习语言
如果你懂编程,在听到 Swift 时,你可能会想到为 iOS 或 MacOS 开发应用程序。如果你懂深度学习,那么你肯定听闻过 Swift for Tensorflow(简称 S4TF):https://www.tensorflow.org/swift。那么你可能会问自己:「谷歌为什么要为 Swift 创建一个TensorFlow版本呢?毕竟已经有 Python 和 C++版本了;为什么还...原创 2019-06-08 10:37:22 · 550 阅读 · 0 评论 -
这就是波士顿动力第一款商用产品「机器狗」Spot
波士顿动力 CEO Marc Raibert 告诉《The Verge》称,最近 Spot 正在大量的「概念验证」环境下接受测试,包括包裹递送和监控作业。他表示,尽管商用版 Spot 没有具体的上线日期,但应该会在几个月内与公众见面,并且年底前肯定发售。CEO Marc Raibert 说道:「我们现在只是对设计做最后的调整。一直以来,我们都在严格地测试这些 Spot 机器人。」Rai...原创 2019-06-08 10:47:33 · 2486 阅读 · 0 评论 -
我是如何在毕业不久只用1年就升为开发组长的
故事的开篇把时钟拨回到9年前,那是2010年的10月份,李大胖入职了新公司,在公司本部呆了一个多月,就被发往客户单位进行驻场开发。公司给客户做的系统,需要不断的二次开发和维护,所以直接去客户单位比较利于工作的进行。一个周五的下午,经理把我叫到办公室,说到:“下周你就去客户现场吧,我们有些同事在那里,那里是有门禁的,需要有人接你才行”。然后就把一个同事的手机号给了我,说到了就给他打...原创 2019-06-23 17:47:05 · 397 阅读 · 0 评论