
程序员笔记
宜信技术学院
这个作者很懒,什么都没留下…
展开
-
彻底深刻理解js原型链之prototype,__proto__以及constructor(二)
前言如果你能够啃下教程一并且吃透原型链的几个概念的话说明你在前端飞仙的路上又进了一小步···学习最怕的不是慢而是站!这篇教程主要目的对原型链概念进一步加深理解巩固下教程一的知识来看下面的例子:var text=new String("我是文字");function Persion(name,job){ this.name=name; this.job=job;}Persion.myName="lxm";Persion.prototype.sayName=function(){原创 2020-11-10 11:19:40 · 485 阅读 · 0 评论 -
zookeeper浅谈
1、ZooKeeper是什么?ZooKeeper 是一个开源的分布式服务框架Hadoop的一个子项目,Zookeeper 实现诸如数据发布/订阅、统一命名服务、分布式协调/通知、配置管理、分布式锁和分布式队列等功能,通俗的讲zookeeper是一个支持增删查改的类似文件系统特点的数据库,按照规则去给节点分配任务。zookeeper底层实现了存储文件和通知回调功能它的数据结构类似于一个标准的文件系统,相比较文件系统zk的每个节点都可以存储数据,但是大小限制为1M。通常我们在使用dubbo的时候会建议使用zo原创 2020-10-27 10:37:27 · 469 阅读 · 0 评论 -
处理一次k8s、calico无法分配podIP的心路历程
又一次偷偷化解了可能发生的重大事故。不想看过程的可以直接跳到末尾看处理方案。一个网络错误某天,上kplcloud构建一个测试应用,构建完成之后发现新pod一直启动失败,并且抛出了以下错误信息:Failed create pod sandbox: rpc error: code = Unknown desc = NetworkPlugin cni failed to set up pod "xxxxxx-fc4cb949f-gpkm2_xxxxxxx" network: netplugin failed原创 2020-10-13 14:14:07 · 1299 阅读 · 0 评论 -
彻底深刻理解js原型链之prototype,__proto__以及constructor(一)
前言以下概念请花费一定的时间彻底理解,才能进行下一步,思考题一定要思考,这样才能彻底掌握原型链的知识点,教程中如果有任何的错误不足请指正!函数对象由function创造出来的函数,比如: function a(){}; var b=function(){}; 系统内置的函数对象Function,Object,Array,String,Number只有函数对象才有 prototype属性 ,重要的事情说三遍!思考: js的引用数据类型都属于函数对象吗?普通原创 2020-09-27 10:03:21 · 427 阅读 · 0 评论 -
论程序的健壮性——就看Redis
“众里寻他千百度,蓦然回首,那人却在,灯火阑珊处”。多年的IT生涯,一直希望自己写的程序能够有很强的健壮性,也一直希望能找到一个高可用的标杆程序去借鉴学习,不畏惧内存溢出、磁盘满了、断网、断电、机器重启等等情况。但意想不到的是,这个标杆程序竟然就是从一开始就在使用的分布式缓存——Redis。Redis(Remote Dictionary Server ),即远程字典服务,是 C 语言开发的一个开源的高性能键值对(key-value)的内存数据库。由于它是基于内存的所以它要比基于磁盘读写的数据库效率更.原创 2020-09-21 15:38:14 · 539 阅读 · 0 评论 -
Spring事务的传播行为案例分析
网上关于Spring事务传播性以及隔离型的文章漫天盖地,还有不负责任的直接复制名词意思,文章虽然很多却是看的云里雾里,我们今天将给出案例分别和大家一起学习。1、spring给出经常面试的考点Spring事务的4个特性含义—这个很容易理解2、spring事务传播特性的定义以及案例分析一、事务的特性ACID这四个英文单词拼写我一直记不住,求记忆方法原子性(Atomicity):事务是一系列原子操作,要么全部成功,要么全部失败。一致性(Consistency):一旦完成(不管是成功还是失败.原创 2020-08-10 15:45:47 · 984 阅读 · 1 评论 -
十个问题弄清JVM&GC(一)
每个java开发同学不管是日常工作中还是面试里,都会遇到JDK、JVM和GC的问题。本文会从以下10个问题为切入点,带着大家一起全面了解一下JVM的方方面面。JVM、JRE和JDK的区别和联系JVM是什么?以及它的主要作用JVM的核心功能有哪些类加载机制和过程运行时数据区的逻辑结构JVM的内存模型如何确定对象是垃圾垃圾收集的算法有哪些各种问世的垃圾收集器JVM调优的参数配置1、JVM、JRE和JDK的区别和联系这个基本是步入java世界的入门级知识认知,首先我们来看一下来自jav原创 2020-07-24 14:57:02 · 390 阅读 · 0 评论 -
搭建node服务(三):使用TypeScript
JavaScript 是一门动态弱类型语言,对变量的类型非常宽容。JavaScript使用灵活,开发速度快,但是由于类型思维的缺失,一点小的修改都有可能导致意想不到的错误,使用TypeScript可以很好的解决这种问题。TypeScript是JavaScript的一个超集,扩展了 JavaScript 的语法,增加了静态类型、类、模块、接口和类型注解等功能,可以编译成纯JavaScript。本文将介绍如何在node服务中使用TypeScript。一、 安装依赖npm install typescri.原创 2020-07-17 12:55:39 · 666 阅读 · 0 评论 -
搭建node服务(二):操作MySQL
为了进行复杂信息的存储和查询,服务端系统往往需要数据库操作。数据库分为关系型数据库和非关系型数据库,关系型数据库有MySQL、Oracle、SQL Server等,非关系型数据库有Redis(常用来做缓存)、MongoDB等。MySQL是目前很流行的数据库,本文将要介绍如何在node服务中进行MySQL数据库操作。一、 安装依赖npm install mysql --save或者yarn add mysql二、建立连接要想进行数据库操作就需要和数据库建立连接,然后通过连接进行数据库的操作.原创 2020-06-03 12:48:08 · 423 阅读 · 0 评论 -
一文读懂JAVA多线程
一文读懂JAVA多线程背景渊源摩尔定律提到多线程好多书上都会提到摩尔定律,它是由英特尔创始人之一Gordon Moore提出来的。其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。这一定律揭示了信息技术进步的速度。可是从2003年开始CPU主频已经不再翻倍,而是采用多核,而不是更快的主频。摩尔定律失效。那主频不再提高,核数增加的情况下要想让程序更快就要用到并行或并发编程。并原创 2020-05-27 10:24:41 · 608 阅读 · 0 评论 -
基于Ceph对象存储构建实践
存储发展数据存储是人类永恒的话题和不断探索的主题绳结记事原始社会,文字未发明之前 ,人们所使用的一种记事方法,在绳子上打结记事。穿孔卡穿孔卡片是始于20世纪的主要存储方法,也是最早的机械化信息存储形式,进入20世纪60年代后,逐渐被其他存储手段取代。目前穿孔卡片已经极少使用,除非用于读出当年存储的历史数据。磁鼓存储器20世纪50年代,磁鼓作为内存储器应用于IBM 650。在后续的IBM 360/91和DEC PDP-11中,磁鼓也用作交换区存储和页面存储。磁鼓的代表性产品是IBM原创 2020-05-20 14:02:55 · 474 阅读 · 0 评论 -
TestNG测试用例重跑详解及实践优化
测试用例运行稳定性是自动化质量的一个重要指标,在运行中需要尽可能的剔除非bug造成的测试用例执行失败,对于失败用例进行重跑是常用策略之一。一种重跑策略是所有用例运行结束后对失败用例重跑,另一种重跑策略是在运行时监控用例运行状态,失败后实时重跑。下面,详细介绍TestNG如何对失败测试用例实时重跑并解决重跑过程中所遇到问题的实践和解决方案。对失败测试用例进行实时重跑,有以下几个方面需求:测...原创 2020-05-06 10:39:23 · 853 阅读 · 0 评论 -
搭建node服务(一):日志处理
对于一个应用程序来说,日志记录是非常重要的。日志可以帮助开发人员快速定位线上问题,定制解决方案;日志中包含大量用户信息,通过日志分析还可以获取用户行为、兴趣偏好等信息,通过这些信息可以得到用户画像,对公司战略的制定提供参考。本文将要介绍如何在node服务中处理日志。一、技术选型选择了3种主流的技术进行对比:1.1 log4jslog4js是一种node日志管理工具,可以将自定义格式的日志输...原创 2020-04-20 16:20:47 · 1020 阅读 · 0 评论 -
浅谈技术管理之日式管理的殊途同归
摘要:人们的现状是歪的,管理者为他塑造一个新图像,当对方将现状扶正,与新图像吻合,管理的目的就达成了。《周易》说,形而上者谓之道,形而下者谓之器;降龙十八掌里有履霜坚冰,夕惕若厉等招数;坤卦爻辞中也有含章可贞,或从王事等管理和做人规则。看完上面几句,大家可能会想,不是说日式管理嘛,怎么说起中国传统哲学了?其实无论是西方的还是日式的管理方法与经验,其理论来源都是中国的哲学思想,无论是德鲁克的任务...原创 2020-04-16 16:17:49 · 591 阅读 · 0 评论 -
TCP漫谈之keepalive和time_wait
TCP是一个有状态通讯协议,所谓的有状态是指通信过程中通信的双方各自维护连接的状态。一、TCP keepalive先简单回顾一下TCP连接建立和断开的整个过程。(这里主要考虑主流程,关于丢包、拥塞、窗口、失败重试等情况后面详细讨论。)首先是客户端发送syn(Synchronize Sequence Numbers:同步序列编号)包给服务端,告诉服务端我要连接你,syn包里面...原创 2020-04-07 18:00:08 · 1538 阅读 · 0 评论 -
干货|漫画算法:LRU从实现到应用层层剖析(第一讲)
今天为大家分享很出名的LRU算法,第一讲共包括4节。 LRU概述 LRU使用 LRU实现 Redis近LRU概述 第一部分:LRU概述LRU是Least Recently Used的缩写,译为最近最少使用。它的理论基础为“最近使用的数据会在未来一段时期内仍然被使用,已经很久没有使用的数据大概率在未来很长一段时间仍然不会被使用”由于该思想非常契...原创 2020-04-01 10:13:18 · 227 阅读 · 0 评论 -
深入理解MySQL索引
前言当提到MySQL数据库的时候,我们的脑海里会想起几个关键字:索引、事务、数据库锁等等,索引是MySQL的灵魂,是平时进行查询时的利器,也是面试中的重中之重。可能你了解索引的底层是b+树,会加快查询,也会在表中建立索引,但这是远远不够的,这里列举几个索引常见的面试题:1、索引为什么要用b+树这种数据结构?2、聚集索引和非聚集索引的区别?3、索引什么时候会失效,最左匹配原...原创 2020-03-18 10:30:40 · 550 阅读 · 0 评论 -
程序的一生:从源程序到进程的辛苦历程
一、前言作为计算机专业的人,最遗憾的就是在学习编译原理的那个学期被别的老师拉去干活了,而对一个程序怎么就从源代码变成了一个在内存里活灵活现的进程,一直也心怀好奇。这种好奇驱使我要找个机会深入了解一下,所以便有了本文,来督促自己深入研究程序的一生。不过,本文没有深入研究编译原理、操作系统原理,而是主要聚焦于程序的链接和加载。学习的过程中主要参考了三本书、一个视频、一个音频(文末有列出),三本...原创 2020-03-17 10:22:34 · 548 阅读 · 0 评论 -
Serializable详解(1):代码验证Java序列化与反序列化
说明:本文为Serializable详解(1),最后两段内容在翻译上出现歧义(暂时未翻译),将在后续的Serializable(2)文中补充。介绍:本文根据JDK英文文档翻译而成,本译文并非完全按照原文档字面文字直译,而是结合文档内容及个人经验翻译成更为清晰和易于理解的文字,并附加代码验证,帮助大家更好地理解Serializable。性质:接口类package java.iopubli...原创 2020-03-11 12:40:26 · 848 阅读 · 0 评论 -
关于Java序列化的问题你真的会吗?
在持久化数据对象的时候我们很少使用Java序列化,而是使用数据库等方式来实现。但是在我看来,Java 序列化是一个很重要的内容,序列化不仅可以保存对象到磁盘进行持久化,还可以通过网络传输。在平时的面试当中,序列化也是经常被谈及的一块内容。谈到序列化时,大家可能知道将类实现Serializable接口就可以达到序列化的目的,但当看到关于序列化的面试题时我们却常常一脸懵逼。1)可序列化接口和可...原创 2020-03-10 12:41:38 · 186 阅读 · 0 评论 -
Dubbo源码解析之SPI(一):扩展类的加载过程
Dubbo是一款开源的、高性能且轻量级的Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。Dubbo最早是阿里公司内部的RPC框架,于 2011 年开源,之后迅速成为国内该类开源项目的佼佼者,2018年2月,通过投票正式成为 Apache基金会孵化项目。目前宜信公司内部也有不少项目在使用Dubbo。本系列文章通过拆解Dubbo源...原创 2020-03-05 15:53:07 · 300 阅读 · 0 评论 -
代码演示Mybatis-Generator 扩展自定义生成
Mybatis-Generator 可自动生成Model、Dao、Mapper代码,但其自带生成的代码存在以下问题:生成的注释不是我们想要的,我们期望的是根据数据库表、字段生成不同的注释;分页代码生成缺失,每个公司的分页方式不同,尤其是老久项目或已发布API,不能随意变动,那么如何自适应分页代码生成;Mapper.xml没有group by相关代码生成;重复生成代码时,Mapper.xm...原创 2020-03-02 20:49:51 · 490 阅读 · 0 评论 -
小浩算法|一文让你学会如何用代码判断"24"点
“24点”是一种数学游戏,正如象棋、围棋一样是一种人们喜闻乐见的娱乐活动。它始于何年何月已无从考究,但它以自己独具的数学魅力和丰富的内涵正逐渐被越来越多的人们所接受。今天就为大家分享一道关于“24点”的算法题目。话不多说,直接看题。**题目:**你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。示例 1:输入: [4, 1, 8, 7...原创 2020-03-02 20:48:29 · 640 阅读 · 0 评论 -
干货:图解算法——动态规划系列
小浩:宜信科技中心攻城狮一枚,热爱算法,热爱学习,不拘泥于枯燥编程代码,更喜欢用轻松方式把问题简单阐述,希望喜欢的小伙伴可以多多关注!动态规划系列一:爬楼梯1.1 概念讲解讲解动态规划的资料很多,官方的定义是指把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解。概念中的各阶段之间的关系,其实指的就是状态转移方程。很多人觉得DP难(下文统称动态规划为DP),根本原因是因为...原创 2020-03-02 20:47:08 · 355 阅读 · 0 评论 -
从操作系统层面理解Linux下的网络IO模型
I/O( INPUT OUTPUT),包括文件I/O、网络I/O。计算机世界里的速度鄙视:内存读数据:纳秒级别。 千兆网卡读数据:微妙级别。1微秒=1000纳秒,网卡比内存慢了千倍。 磁盘读数据:毫秒级别。1毫秒=10万纳秒 ,硬盘比内存慢了10万倍。 CPU一个时钟周期1纳秒上下,内存算是比较接近CPU的,其他都等不起。CPU 处理数据的速度远大于I/O准备数据的速度 。任何...原创 2020-01-15 11:06:58 · 351 阅读 · 0 评论 -
敏捷开发流程之Scrum:3个角色、5个会议、12原则
本文主要从Scrum的定义和目的、敏捷宣言、Scrum中的人员角色、Scrum开发流程、敏捷的12原则等几方面帮助大家理解Scrum敏捷开发的全过程。一、Scrum的定义和目的Scrum是一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程,目的是让开发人员像打橄榄球一样迅猛并充满激情,通过团队合作,提高工作效率。通过团队间的有效交互,为企业创造价值。二、敏捷宣言其实,在...原创 2020-01-07 14:23:28 · 2562 阅读 · 0 评论 -
揭秘“撩”大数据的正确姿势:生动示例解说大数据“三驾马车”
(图片来源于网络)我是我:“缘起于美丽,相识于邂逅,厮守到白头!”众听众:“呃,难道今天是要分享如何作诗?!”我是我:“大家不要误会,今天主要的分享不是如何作诗,而是《揭秘:‘撩’大数据的正确姿势》,下面进入正题。”话说当下技术圈的朋友,一起聚个会聊个天,如果不会点大数据的知识,感觉都融入不了圈子,为了以后聚会时让你有聊有料,接下来就跟随我的讲述,一起与大数据混个脸熟...原创 2019-12-31 10:41:57 · 338 阅读 · 1 评论 -
Nginx专题(2):Nginx的负载均衡策略及其配置
摘要:本文介绍了Nginx的负载均衡策略,一致性hash分配原理,及常用的故障节点的摘除与恢复配置。文章来源:宜信技术学院 & 宜信支付结算团队技术分享第一期-宜信支付结算八方数据团队高级技术经理 周恒《Nginx的细枝末节》分享者:宜信支付结算八方数据团队高级技术经理 周恒原文首发于支付结算技术团队公号:野指针前篇Nginx专题(1):Nginx之反向代理及配置详细介...原创 2019-12-12 11:22:50 · 524 阅读 · 0 评论 -
Three.js - 走进3D的奇妙世界
摘要:本文将通过Three.js的介绍及示例带我们走进3D的奇妙世界。文章来源:宜信技术学院 & 宜信支付结算团队技术分享第6期-支付结算部支付研发团队前端研发高级工程师-刘琳《three.js - 走进3D的奇妙世界》分享者:宜信支付结算部支付研发团队前端研发高级工程师-刘琳原文首发于支付结算团队公号-“野指针”随着人们对用户体验越来越重视,Web开发已经不满足于2D...原创 2019-11-28 09:57:03 · 651 阅读 · 0 评论 -
快速入门开发实现订单类图片识别结果抽象解析
一、背景面对订单数据纸质文件或图片,仅靠人眼识别的话效率很低,需引入机器学习来识别和解析图片以提高效率。当前市面上已有收费的图片识别服务,包括阿里、百度等,识别效果较好,但针对订单类图片,不仅要关注图片上的文字,还要关注文字所在的行列,来分出每条数据和数据详细字段。本文主要介绍一种针对订单类图片识别结果进行行列解析的抽象流程和方案,帮助提高开发效率。注:本文只提供思路,不提供源码。另外,本文...原创 2019-11-12 11:10:28 · 618 阅读 · 1 评论 -
Nginx专题(1):Nginx之反向代理及配置
摘要:本文从Nginx的概念出发,分别从反向代理的概念、优势、配置代码3个方面介绍了Nginx的特性之一反向代理。文章来源:宜信技术学院 & 宜信支付结算团队技术分享第一期-宜信支付结算八方数据团队高级技术经理 周恒《Nginx的细枝末节》分享者:宜信支付结算八方数据团队高级技术经理 周恒原文首发于支付结算技术团队公号:野指针一、Nginx概念解读对于新事物的理解,最好的方式...原创 2019-11-06 11:30:40 · 368 阅读 · 0 评论 -
宜信的105条数据库军规
作为一家金融科技企业,宜信的大量业务都依赖于数据库。如何提高公司整体数据库应用水平,是对DBA的一大挑战,也非常具有现实意义。笔者在宜信的多年工作中,与团队一起总结整理了针对传统关系型数据库的使用规则,并借助自研的数据库审核平台落地,借此帮助研发团队评估数据库开发质量,达到尽早发现问题、解决问题之目的。下图正是这一系统的简单原理图。如上图所示,针对规则部分又可细分为如下分类(部分)。简单描述如...原创 2019-11-05 11:50:27 · 218 阅读 · 0 评论 -
运用第一性原理探寻AI本质
文章来源:宜信技术学院|宜信支付结算团队技术分享第二期-支付结算机器学习技术团队负责人 刘创 分享《AI与第一性原理》分享者:宜信支付结算机器学习技术团队负责人 刘创原文发布于个人博客:动物园的猪一、AI和第一性原理AI,也就是人工智能,这几年非常火,但究竟AI的本质是什么呢?用第一性原理来探寻AI的本质,可能更容易理解。接下来我们一起探讨AI、第一性原理、以及如何使用第一性原理来理解...原创 2019-10-23 10:20:11 · 530 阅读 · 0 评论 -
如何运用结构化思维进行故障处理
导读:运用结构化思维进行故障处理,其目的是为了将故障应急操作标准化,进而提升处理效率。近期收到朋友赠送的一本书—《深入浅出MySQL》。闲暇之余,阅读了部分章节,书中针对故障处理一节,给我印象颇深。书中提炼出的一些方法论,正是我之前在团队中推广的方法。其目的是为了将故障应急操作标准化,进而提升处理效率。推而广之,这其实是一种结构化思维在具体工作中的体现。而这种思想在某具体工作、乃至个人、团队发展...原创 2019-10-16 10:34:47 · 817 阅读 · 0 评论 -
Redis专题(3):锁的基本概念到Redis分布式锁实现
拓展阅读:Redis闲谈(1):构建知识图谱Redis专题(2):Redis数据结构底层探秘近来,分布式的问题被广泛提及,比如分布式事务、分布式框架、ZooKeeper、SpringCloud等等。本文先回顾锁的概念,再介绍分布式锁,以及如何用Redis来实现分布式锁。一、锁的基本了解首先,回顾一下我们工作学习中的锁的概念。为什么要先讲锁再讲分布式锁呢?我们都清楚,锁的作用是要解决多线...原创 2019-09-25 11:05:28 · 484 阅读 · 1 评论 -
混合事务分析处理“HTAP”的技术要点分析
HTAP是近些年来比较火的一个概念,本文将聊聊HTAP的前世今生及技术特点。一、数据应用类别根据数据的使用特征,可简单做如下划分。在选择技术平台之前,我们需要做好这样的定位。1.1 OLTP 联机事务处理OLTP(On-Line Transaction Processing)OLTP是事件驱动、面向应用的,也称为面向交易的处理过程。其基本特征是前台接收的用户数据可以立即传送到计算中心进行...原创 2019-09-24 10:38:13 · 436 阅读 · 0 评论 -
Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu
本文介绍两个可行的K8s监控方案:Prometheus和Sensu。两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能、定位故障、接收预警。拓展阅读:Kubernetes监控实践(1):K8s的工作原理与监控实践一、K8s监控之Prometheus1.1 简介Prometheus是针对容器和微服务的开源监控预警工具,功能稳健,适用于开发流程中的云端管理员和开发人员等...翻译 2019-09-27 10:52:10 · 369 阅读 · 0 评论 -
DNS域名解析服务及其配置
一、背景到 20 世纪 70 年代末,ARPAnet 是一个拥有几百台主机的很小很友好的网络。仅需要一个名为 HOSTS.TXT 的文件就能容纳所有需要了解的主机信息:它包含了所有连接到 ARPAnet 的主机名字到地址的映射(name-to-addressmapping)。HOSTS.TXT 文件是由 SRI 的网络信息中心(Network Information Center,简称 NIC...原创 2019-08-27 11:51:32 · 879 阅读 · 0 评论 -
demo演示如何写一个无配置格式统一的日志
一、背景大量项目在使用logback记日志,有部分项目使用日志混乱,格式不统一,多数人搞不懂配置文件,导致配置错误,现在需要开发一套统一的、少配置的日志组件,方便使用。二、设计思路尽量采用0配置,无logback.xml日志格式统一,方便后续日志分析系统只有两个日志级别,一个是正常日志,一个是异常日志提供log4j、jcl、logback、commons-log等桥接方案及版本兼容方案...原创 2019-09-23 10:10:54 · 199 阅读 · 1 评论 -
如何从请求、传输、渲染3个方面提升Web前端性能
什么是WEB前端呢?就是用户电脑的浏览器所做的一切事情。我们来看看用户访问网站,浏览器都做了哪些事情:输入网址 –> 解析域名 -> 请求页面 -> 解析页面并发送页面中的资源请求 -> 渲染资源 -> 输出页面 -> 监听用户操作 -> 重新渲染。通过上面的路径可以看出浏览器分为请求、传输、渲染三部分来实现用户的访问,本文就从这三个部分来浅析如何提升...原创 2019-09-23 09:56:43 · 243 阅读 · 0 评论