导读:程序员你为什么这么累?...导读(请先仔细阅读):分享我工作中制定配置文件的习惯 工作中少不了要制定各种各样的配置文件,这里和大家分享一下工作中我是如何制定配置文件的,这是个人习惯,结合强大的spring,效果很不错。...都ok了,再决定使用哪种配置文件。...然后修改config的bean生成的代码为: ? 代码太简洁了,有没有?!...如下,业务代码里面出现了json的配置代码。 ? 2. 开发初期就定配置文件 毫无意义,还导致频繁改动!先定义bean,改bean简单多了。我的习惯是转测试前一天才生成配置文件。
分享我工作中制定配置文件的习惯 工作中少不了要制定各种各样的配置文件,这里和大家分享一下工作中我是如何制定配置文件的,这是个人习惯,在我在的项目组中目前要定义配置文件都安装这个步骤,效果还不错。...就是说,我配置文件是功能完成后期才完成的,如果项目一开始就指定了配置文件的格式,中途少不了各种修改。...我的xml是配置相关的bean完全测试通过之后,用xstream生成xml,读取的时候也是用xstream直接读成对象,完全不需要关注xml的读写。...还有最主要的是,我有中间的这一层配置的bean,这是我觉得最重要的。有了这层bean之后,就相当于有了一个中介。...千万业务代码里面不要和读取配置的代码耦合在一起。切记! 这就是我今天给大家分享的。我个人非常喜欢的编码方式,使用简单,效果也很好。其实没有什么技术,技术一说都懂,但我觉得技术外的习惯才是最重要的!
如果在编辑过程中文件发生外部改变(比如被别的编辑器编辑了),就会发出提示。...set listchars=tab:»■,trail:■ "如果行尾有多余的空格(包括 Tab 键),该配置将让这些空格显示成可见的小方块。...j gj nnoremap k gk xnoremap < <gv "只读模式,向左缩进 xnoremap > >gv "只读模式,向右缩进 "文件类型 filetype on "配置项是 Vim...filetype plugin on "用于 Vim 打开加载文件类型插件功能。...当这个选项打开时,Vim 会根据检测到的文件类型,在runtimepath中搜索该文件类型的所有插件并执行它们。
大致意思就是创建一个包含当前项目源码的jar压缩文件,默认情况下,这个jar压缩文件创建在target目录下 提示:从插件的 3.0.0 版开始,所有可以通过命令行使用的属性都基于以下架构 maven.source...true 意味着它将创建(fork)一个新的JVM来运行编译器。这有点慢,但隔离更好。特别是可以指定一个不同于 Maven 启动的 JVM 2....怎么使用 2.1 创建maven项目/模块 第一步当然是搭建一个maven的项目或者模块,这里就不用过多演示了,大家都会 2.2 pom中添加插件 上面截取的一段定义就是配置maven-source-plugin...插件,并绑定goal- jar-no-fork到default生命周期的compile phase,这样我们指定paase的执行就可以执行插件的goal 现在我们来试一下该插件,我们可以在terminal
有些大项目部署启动一次可能要花个几分钟,我们写完代码后需要自测,测试人员来测试,前后端联调测试。这些过程都需要修改代码,然后重启系统。这样算下来,一天一大半的时间都花在了重新部署上了。...那么有没有热部署方案,我修改了代码,不需要重新启动系统也能测试呢。 市面上也有很多热部署的方案,比如devtools热部署、springloaded等。...这些部署需要引入对应的Maven包,配置相关的配置文件,而且时灵时不灵。关于这些热部署方式网上有很多文章,有兴趣的可以了解下。...有关SpringBoot热部署的方式,可以看看这篇文章: “https://my.oschina.net/u/2358326/blog/1603544 ” 这里我推荐一个Idea的热部署插件JRebel...主流的编辑器如Eclipse、MyEclipse等都支持这个插件。
因为线上生产环境无法 debug,在测试环境去模拟一套生产环境,费时费力。所以依靠日志记录的信息定位问题,这点非常重要。还可以记录流量,后期可以通过 ELK(包括 EFK 进行流量统计)。...方便在和各个终端定位问题时,别人说时你的程序问题,你可以理直气壮的拿出你的日志说,看,我这里运行了,状态也是对的。这样,对方就会乖乖去定位他的代码,而不是互相推脱。...上文说了日志的重要性,那么什么时候需要记录日志。 系统初始化:系统或者服务的启动参数。核心模块或者组件初始化过程中往往依赖一些关键配置,根据参数不同会提供不一样的服务。...务必在这里记录 INFO 日志,打印出参数以及启动完成态服务表述。 编程语言提示异常:如今各类主流的编程语言都包括异常机制,业务相关的流行框架有完整的异常模块。...project 项目、管理日志基础单元,服务日志建议一个环境建为一个 Project,这样日志记录是整体一个闭环,日志记录随整个环境内的服务调用产生。
小勤:大海,为什么我从Excel文件夹导入的数据重复了? 大海:数据给我来试试看?...Step-01:新建查询-从文件夹 确定后,我们看到文件夹里有3个文件: 这里,显然是因为将合并工作表和数据源放在了同一个文件夹下,所以Power Query将合并工作表也显示了出来,并且...Table 和DefineName的情况在Excel中可通过以下方法识别(以下2图不是本文涉及的数据导入操作步骤): 了解这些内容之后,我们就可以按需要去选择数据以避免重复了。...Step-06:展开数据 Step-07:将第一行提升为标题行 Step-08:删除不需要的列 Step-09:删除不需要的空行 Step-10:数据上载 小勤:原来Excel里还隐藏了这么多东西...知道了。好在从Power Query的每个步骤里出来的结果都是看得见摸得着的东西,还比较容易理解,只需要操作上注意筛选一下就行了。
大家好,我是前端实验室的大师兄 因为项目上有一个在规定区域内自由拖拽的小需求,自己纯js写又有点小麻烦,就花了点时间寻找到这个小组件。...介绍 vue-drag-resize是一个用于拖拽,缩放的组件 根据网上搜索到的使用教程,都是照着文档翻译了一遍,根本解决不了我想要的问题 花了几天时间,于是记录下了这个组件的一些使用教程 简单使用...限制拖拽范围 修改组件的默认样式 拖拽的层级 拖拽的点击事件 安装使用 vue-drag-resize是一个专门用于vue项目的拖拽组件,定义元素可拖拽,或者可缩放,或者二者兼有;可限制拖拽的最大与最小值...1px solid red; position: relative; margin: 0 auto; } .drag{ border: 2px solid red; } 为什么要选择手写...为了适配不同的电子白板,以往我们都是规定以rem为单位,但是,插件传入的数据都是以px为单位的,根本无法适配不同的屏幕 所以,这个时候手写一个拖动元素,才是最为安全的 我已将手动拖拽的主要源码上传到github
搭了个V**,但是默认V**没有在做转发,用的iptables做的nat转发,可是每次重启,都需要重新执行iptables命令。...# 查看网卡信息 ifconfig 我看到我ppp0的IP地址是192.168.10.1,所以iptable的nat规则如下 # 把192.168.10.0/24这个网络的请求,转发到eth0网卡上面...sudo iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE 其实这句iptables我都忘了怎么写,也不记得再哪里找到的...history | grep iptables 记录在博客了,再也不怕服务器重启了~~ 谁教一下我怎么让他重启也能自动运行呗!
没有什么比一门新的编程语言更令开发者兴奋了,不是么? 因此,我在 4、5 个月之前开始学习 Go。在这里我将告诉你,你为什么也要学习这门新语言。...在这篇文章中,我不打算教你怎样写 “Hello World!!”。网上有许多其他的文章会教你。我将阐述软硬件发展的现状以及为什么我们要学习像 Go 这样的新语言?...另一方面,Go 于 2009 年发布,那时多核处理器已经上市了。这也是为什么 Go 是在考虑并发的基础上构建的。Go 用 goroutine 来替代线程,它们从堆中消耗了大约 2 KB 的内存。...因此你可以随时启动上百万个 goroutine。 ? Goroutine 是怎样工作的呢?...这太酷了!!! 用 Go 编写的代码易于维护 我告诉你一件事,Go 没有像其他语言一样疯狂于编程语法,它的语法非常整洁。
都分别负责了什么,比如AMS? 启动流程了解后,对我们开发有什么帮助呢?...启动流程了解后,对我们开发有什么帮助呢? 分析源码的目的一直都不是为了学知识而学,而是理解了这些基础,我们才能更好的解决问题。学习了App的启动流程,我们可以再思考下一些之前没理解透的问题。...2)又比如插件化,通过了解启动流程可以知道哪些地方可以用来hook,从而完成我们侵入代码,替换Activity的工作。...另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。 2、进行系统梳理知识,提升储备 客户端开发的知识点就那么多,面试问来问去还是那么点东西。...关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三。
我们都知道,数据库中的数据,只要应用程序员不主动删除,就可以任意次读写,多少次都行。数据库还对外提供了很漂亮的接口——SQL ——让程序员操作数据。...调用方的责任太大。 于是消息队列(MQ)就出现了,程序A把数据往消息队列中一扔,完事走人,程序B想什么时候读就什么时候读,极其灵活。...可是传统的MQ也有问题,通常情况下,一个消息确认被读取以后,就会被删除。如果来了一个新的程序C,也想读之前的消息,或者说之前一段时间的消息,传统MQ表示无能无力。...Kafka出现了,它也是一个消息队列,但是它能保存很长一段时间的消息(因为在硬盘上),队列中每个消息都有一个编号1,2,3,4.... ,这样就支持多个程序来读取。...例如:程序B读到了编号为3的消息, 程序C读到了编号为5的消息, 这时候来了一个新的程序D,可以从头开始读。
目录 拉取最新包【git clone https://github.com/goplus/gop.git】 注:现在默认安装到 当前目录的 bin 目录下面 安装Go+环境变量配置 gop安装 打开【bin...】 需要配置环境变量 配置【系统变量】 当前情况分析: 本源想法应该是直观、简易、简单,毕竟目标是青年一代的编码敷设,所以goplus应该是在想办法把整个包单独存放起来,方便后面的环境搭建,估计还会有下个版本...,会直接将环境变量添加到【系统变量】中,进行一键式的安装,当前是现在有一些内容仍然需要【git】的拉取,不就的将来肯定会慢慢变化,可能就是一个下载安装包, 竞品对照分析: scratch的图形化编码页面已经比较完善...先为他点赞了,因为真的好难啊。...拉取最新包【git clone https://github.com/goplus/gop.git】 最新版本内容拉取后如下: 注:现在默认安装到 当前目录的 bin 目录下面 安装Go+环境变量配置
如果说这个例子里分类是八比二的话,那么只会有 20% 的用户终止了与公司继续接触,剩下 80% 的用户则会继续使用公司产品。 但问题是,这 20% 的用户流失可能对公司非常的重要。...精度 = 所有正确预测 / 全部预测 精度计算了所有预测中正确所占的比例,直觉告诉我们这么算确实没问题,可是到了不平衡数据集上,情况就变得复杂了…… 举例来说,你从市场部那边拿到了过去一年的客户流失情况数据...去年总共有十万的客户,其中有两万的客户流失了。现在,如果说我们预测全部的十万客户都留存到了年底,这就意味着你的精度是 80,000/100,000,足足有 80%!但实际上你一个客户流失都没有预测到。...因此,如果我们成功预测到了所有的二万用户流失,也就是两万的真正,但同时也有两万并没有流失的客户被模型混淆在了其中,那么这一点在精准度里也会有所体现: 没有假正:20,000/(20,000+0)= 100%...还是用之前的例子,如果我们成功预测出所有的流失客户,没有错过任何一个,那么我们将拥有: 没有假负:20,000/(20,000+0)= 100% 如果我们错估了五千的客户,那么召回率将下降,但计算式的分母不变
代码层面从功能上看没有任何问题但是投入使用后却让我头大问题描述====系统上点击数据录入功能在全局监控中会受到相关消息的通知。...往往定位问题得清楚我们的逻辑是什么当一个客户端启动时除了和Websocket建立连接之外,我们还需要向Websocket服务注册当前客户端需要哪些接口的实时数据我在代码内部是通过一个Map来存储这些接口签名信息的...我们1W个用户同事在线的可能有5000+ 。 那么我们需要5000次以上的反射着肯定是吃不消的。这也是为什么本文开头说功能正常不代表业务正常。解决方案====这就是量变引起质变。...在多客户的情况下我们的设计弊端就暴露出来。这里也是笔者自己给自己挖坑。既然找到问题我们就好解决了。下面我们对代码做了一下改动我将数据缓存起来。因为在同一批次推送时本来也应该保证数据一致性。...而且我们系统对数据实时性也是可以接受一定时间延迟的。我在这里又加上缓存这样就解决了我们循环的问题经过测试本次改动在CPU上大概优化了100倍。
大家好,我是Python进阶者。...一、前言 前几天在Python白银交流群【无敌劈叉小狗】问了一个Python环境安装的问题,她都困在这里一个下午了,问题如下: 为什么我的环境总配不好 明明该添加的都添加进去了。...这里也是建议大家,新手在配置的时候,最好是自动选择环境变量配置,如果手动的话,真的不一定能完整的设置好,漏了其中一个地方,都不能跑起来,非常影响效率和自己的心情。...如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答! 三、总结 大家好,我是Python进阶者。...这篇文章主要盘点了一个Python环境安装的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
运行在JVM中也是一样的,那你可能会有疑问,既然将类型擦除了,那为什么我声明的泛型为String类型时,不能往里add一个整型的数据呢?...一般作为初级工程师知道这些就算合格了。 我们往深一层研究下,难道我们一定不能往声明泛型为String的list中增加一个整型元素吗?...但是我能改成下面这样吗?...如果到这里你基本上都会的话,我觉得完全具有中级工程师的能力了。...2、不能用来方法的重载 为什么呢?举个例子: ? 如上图所示,在不同的泛型作为参数时,编译器编译时进行类型擦除,那参数不就一样了吗?那还谈什么重载呢!
薛定谔的猫 首先,说一些题外话,按照我一贯的风格,这篇文章本应该叫《浅谈如何优雅读取特殊格式配置文件》,但是最近被某些网站的推送恶心到了,我是不太喜欢这种标题的,所以我一直尽量避免使用这种标题党式的标题...,但是,好奇心驱使我,想做一次实验,欢迎大家留言,说出你的想法,你更喜欢哪个标题?...要解析一个配置文件,当打开文件的时候我崩溃了 | 为人性癖耽佳句,语不惊人死不休 B. 浅谈如何优雅读取特殊格式配置文件 | 少一点套路,多一点真诚 C....冇所谓 一点点创意 最近需要读取一些配置文件,但他并不是常用格式,而且需要我们对该文件进行操作除了正常的读写外,还要尽量保存原文件的注释、顺序等信息。...这个配置文件原本也是键值对性质的文件,但是这里键值的分隔符,用了空格和制表符而不是等号。 键也不是唯一的,同名键可能有多个值的情况。 如何满足这个需求呢?
猫.jpg 薛定谔的猫 首先,说一些题外话,按照我一贯的风格,这篇文章本应该叫《浅谈如何优雅读取特殊格式配置文件》,但是最近被某些网站的推送恶心到了,我是不太喜欢这种标题的,所以我一直尽量避免使用这种标题党式的标题...,但是,好奇心驱使我,想做一次实验,欢迎大家留言,说出你的想法,你更喜欢哪个标题?...要解析一个配置文件,当打开文件的时候我崩溃了 | 为人性癖耽佳句,语不惊人死不休 B. 浅谈如何优雅读取特殊格式配置文件 | 少一点套路,多一点真诚 C. ...冇所谓 一点点创意 最近需要读取一些配置文件,但他并不是常用格式,而且需要我们对该文件进行操作除了正常的读写外,还要尽量保存原文件的注释、顺序等信息。...这个配置文件原本也是键值对性质的文件,但是这里键值的分隔符,用了空格和制表符而不是等号。 键也不是唯一的,同名键可能有多个值的情况。 如何满足这个需求呢?
最近学习数学,想用Hexo记录笔记整理公式,参考文章: 我的Hexo环境 首先,看看我的Hexo环境: hexo --version 显示如下: hexo: 3.4.3 hexo-cli:...br> openssl: 1.0.2n icu: 59.1 unicode: 9.0 cldr: 31.0.1 tz: 2017b 安装插件...文章中需要打开公式 这个我本地环境的公式没有生效,文章的Front-matter里打开mathjax开关后成功激活: --- title: Hexo中使用MathJax公式 date: 2017-12-...25 13:38:47 tags: [Hexo,MathJax] categories: [技术点滴,Hexo] mathjax: true --- 公式效果 完成上面内容后,文章中就能显示公式了,如下所示...语法, hexo-renderer-kramed 这个插件,打开它的Github主页,描述已经说得很清楚,作者fork了 hexo-renderer-marked 项目,并且只针对MathJax支持进行了改进
领取专属 10元无门槛券
手把手带您无忧上云