备忘和扯一扯最近散仙在工作用到的几个不错的小技术点: (1)使用shell写了一个根据年份能生成此年份下归档文件目录,精确到年-月-日-小时 谈谈本意: 由于散仙最近是在搞我们平台的搜索日志分析的工作...最后还有一个不错的想法分享给眼前的各位帅哥,美女们,养成归档的好习惯,从现在做起,如果你还在为找以前的某个txt文件,某个excel文件,某个hadoop源码包,某个岛国的avi影片,或某个照片,某个简历等等等等找不到而发愁的时候...那就来吧,这个脚本对你很适合,你只需要稍稍微创新一下,就能改造的非常个性化,比如你在年,月,日,小时目录下,新建了分类很细的目录,对各种常用的文件归档,根据文件后缀名,都建立一个文件夹,在各个文件夹下你还可以继续分类...有了这个思路,你就可以自己使用自己擅长的语言的写一个类似这样的程序,技术上,没啥难度,注意下不同的年份中月的天数可能不一样的问题即可。...如果你不会写程序,没关系,自己手动创建目录,也没多困难嘛,以后就可以把排列满满的桌面的文件,定时归档起来了。
作者:Dmitri Pavlutin 译者:前端小智 来源:Dmitri Pavlutin 1.命名导入和自动完成 假设我信编写了一个简单的JavaScript模块: // stringUtils.js...2.Python 中的模块 现在让我们尝试在 Python 中导入命名组件。它有同样的问题吗?...现在,在另一个Python模块app内部,将stringUtils导入equalsIgnoreCase函数: image.png 在Python中,首先指出要从:from stringUtils哪里导入的模块...3.解决方法 我能找到的在JavaScript中对命名导入启用自动完成的唯一解决方案是调用IDE以获得帮助。...代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。
Python是一门应用面比较广的语言,称之为胶水语言一点不为过,其他功能强大,在大数据、人工智能领域都会大量应用,并且相对于其他编程语言,有着简单易学的特点,号称即使零基础也能轻松入门,然而,这样的说法真的属实吗...也许只有真正零基础的人,并且已经在自学Python的人,才会知道其中到底是难还是易,今天就给大家分析一下,一个零基础的人自学Python真的能学会吗? ?...2、在学习完基础语法的时候,你也对python有了一定程度的了解了,也知道Python有很多的学习方向,比如说数据采集方向(爬虫),或者Web开发方向,也可能是最近特别火热的人工智能方向。...3、在进阶阶段,建议以最新的python视频学习为主,相关书籍为辅,这个阶段主要是学的技术是最新的,不要给自己留一个学完之后技术已经过时的惨败后果。...这是一个很正常的自学流程,很多零基础的学习者都是通过这样的方式来一步一步学习,然后成为老手或高手的。
当使用java.lang.reflect.Constructor类里的newInstance方法,调用的是有参构造方法。...无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面对象的内容全部拷贝进去。用clone方法创建对象并不会调用任何构造函数。 ?...image 4、使用反序列化 通过ObjectInputStream的readObject()方法反序列化类当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象。...为了反序列化一个对象,我们需要让我们的类实现Serializable接口。在反序列化时,JVM创建对象并不会调用任何构造函数。 ?...image 通过反序列化生成对象的过程主要由以下几个步骤: 1、创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流; 2、 通过对象输入流的readObject()方法读取对象。 ?
选自ISWC 作者:Baptiste Rocca 参与:思源、李亚洲 我们知道强大的深度模型需要很多计算力,那你知道创建一个知识图谱的成本到底是多少吗?...他们表示手动创建一个三元组(triple)的成本大约在 2 到 6 美元左右,而自动创建知识图谱的成本要降低 15 到 250 倍(即一个三元组 1 美分到 15 美分)。...我们已经有很多方法从各种角度检查这些大型知识图谱,例如大小、覆盖度和质量等。然而这些分析不足的地方在于成本,即创建知识图谱的价格。...Cyc 是最早的通用知识图谱之一,同时它的开发成本也能公开获得。在 2017 年的一项会议中,Cyc 的创建者 Douglas Lenat 表示:构建 Cyc 的成本为 1.2 亿美元。...总结 在这篇论文中,我们大体估计了创建一个流行的知识图谱所花费的成本,这也是当前研究忽视的一个方面。
了解了第一个问题之后,其实这个问题已经有了答案:如果维持连接,一个 TCP 连接是可以发送多个 HTTP 请求的。 5、第三个问题:一个 TCP 连接中 HTTP 请求发送可以一起发送么?...翻译:一个支持持久连接的客户端可以在一个连接中发送多个请求(不需要等待任意请求的响应)。收到请求的服务器必须按照请求收到的顺序发送响应。...TCP 连接吧,你的电脑同意 NAT 也不一定会同意。...(中文珍藏版)》 《UDP中一个包的大小最大能多大?》...百度APP移动端网络深度优化实践分享(三):移动端弱网优化篇》 《技术大牛陈硕的分享:由浅入深,网络编程学习经验干货总结》 《可能会搞砸你的面试:你知道一个TCP连接上能发起多少个HTTP请求吗?》
虽然说每一个价格骤跌的 ICO 项目都是诈骗是不确切的,但构建一个可靠的 ICO 信用评级系统在 ICO 之前对数字货币进行评估是必要且紧迫的。 ?...与人类评级系统相比,IcoRating 有两大强项:(1)客观性:机器学习模型包含更少的先验知识,可以从数据中学习因果关系,这与需要大量人类专家的人类评级系统相反,且人类专家不可避免会引入错误。...第一个去中心化的加密货币是比特币(简称 BTC)(Nakamoto, 2008),由一个或一群不明身份的人用 Satoshi Nakamoto(中本聪)的名字于 2009 年创建。...它们还提供了超越风险投资或私募股权投资的投资机会,二者是早期投资机会的主导。另一方面,由于缺乏监管,ICO 给投资者带来了重大风险。不同的国家对 ICO 和加密货币有不同的规定。...我们从多个提供商处获取数据,提供商包括 CryptoCompare、CoinMarketCap 和 CoinCheckup。
以 Nginx 为例: 如果你的程序不再需要使用这个能力,你可以使用以下命令来清除。...另外需要注意的是,如果要运行的程序是一个脚本,这个方法是没有办法正常工作的。 通过端口转发实现 如果要运行的程序有权限监听其他端口,那么这个方法是可以使用的。...首先让程序运行在普通用户下,并绑定高于 1024 的端口。在确保能正常工作的时候,我们将通过端口转发将低端口的请求转到应用所在的高端口,从而实现普通用户启动的程序绑定到低端口。...通过 authbind 实现 authbind 是一个支持普通用户就能绑定系统特权端口的程序,你只需要使用 authbind 程序来调用需要使用特权端口的程序就可以了。...假如我们有一个 test 的普通账号,想运行一个程序并绑定在 80 端口上。
而且现在 U 盘容量都很大,如果只放一个系统,同样就会白白浪费 U 盘剩余的空间。 今天,我们就给大家推荐一个可以让你的 U 盘制作成多系统安装盘的神器 YUMI。...它可以让你轻松将多款不同操作系统 ISO 镜像装到一个 U 盘里,制作出支持 Multiboot (多系统引导启动) 的多合一系统引导安装盘。...注意: YUMI 每次只能制作一个系统的安装盘,如果你要制作多个系统,只需重复执行多次上述的步骤来增加其它操作系统即可。...删除已制作好的操作系统 按上述的步骤制作好多重启动盘之后,如果你需要删除其中的一个或者多个系统,那么你只需重新运行 YUMI,然后勾选右上方的「You're in Uninstaller Model」即可在下方列表中看到当前...接下来,你只需在列表中选择不想要的操作系统后,点击「Remove」就可以删除它了。如需删除多个系统,重复多遍以上操作即可。
为了安全,现在不再开放非 80 之外的公网端口。由于机器少了,80 端口不够,这些可视化 UI 不再能直接访问到了。所以需另寻其他出路。...一个完整的演示实例 为了实现上面的需求,在 Nginx 中你完全可以使用 Rewrite 模块下 if 指令来完成。...由于 Nginx 默认带的模块比较少,如果需使用第三方模块,你可能还需要重新编译 Nginx。所以这里直接使用 OpenResty,它扩展了 Nginx,并且集成了很多成熟的 LUA 模块。...OpenResty 默认是安装到 /usr/local/ 目录下,当你看到有一个 openresty 目录就表示你安装成功。...# root html; # index index.html index.htm; # } #} } 至此,我们就演示完了一个反向代理实现多个不同类型的后端网站访问的场景
在拼接字符串的时候,如果你有两个或者多个基础类型的值需要放到前面,你需要显式的将第一个值转化成String(不然的话像System.out.println(1+’a')会输出98,而不是”1a”)。...当然了,有一组String.valueOf方法可以完成这个(或者是基础类型对应的包装类的方法),不过如果有更好的方法能少敲点代码的话,谁还会愿意这么写呢?...在基础类型前面拼接上一个空串(”"+1)是最简单的方法了。这个表达式的结果就是一个String,在这之后你就可以随意的进行字符串拼接操作了——编译器会自动将那些基础类型全转化成String的。...().append( string_exp ).append( any_exp ).toString() 如果表达式里有多个+号的话,后面相应也会多多几个StringBuilder.append的调用,...这意味着基础类型转化成String的时候,最糟糕的情况就是你得创建:一个StringBuilder对象,一个char[16]数组,一个String对象,一个能把输入值存进去的char[]数组。
synchronized,一个线程进去 sleep,另一个线程可以进入到另一个方法吗?...16、给用户发消息任务超出队列,你用哪个拒绝策略?有其他方法吗 ?...在多线程程序中,一个线程必须等待的时候,CPU 可以运行其他的线程而不是等待,这样就大大提高了程序的效率。也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。 19、多线程越多效率越高吗?...23、栈会溢出吗?什么时候溢出?方法区会溢出吗? 栈是线程私有的,它的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。...25、自己写过 String 类能加载吗,之前的 String 是什么时候加载进去的? 不能加载,因为双亲委派机制,JVM 出于安全性的考虑,全限定类名相同的 String 是不能被加载的。
容易导致错误的代码 下面是一段检查用户是否存在的 Java 代码。 ? 请仔细观察上述代码,你能一眼看出问题所在吗?...可能有人会说,就算显式声明了类型,不也是于事无补吗? ?...Future 用于启动一个异步任务并且保存执行结果,我们可以用 for 表达式收集多个 Future 的执行结果,从而避免回调地狱。 ?...当我们要实现完全异步的请求限流时,就需要精细地控制每个 Future 的执行时机。也就是说我们需要一个控制 Future 的开关,没错,这个开关就是Promise。...一个整数加法解释器 我们首先定义基本的表达式类型。 ? 上面定义了两个表达式类型,Number 表示一个整数表达式, PlusExpr 表示一个加法表达式。
遇到问题无法在预发 debug 一下,难道只能通过加日志再重新预发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现,怎么办?...是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到容器和中间件的实时运行状态?...如果一个类被多个ClassLoader所加载,则会出现多次 -E 开启正则表达式匹配,默认为通配符匹配 -f 输出当前类的成员变量信息(需要配合参数-d一起使用) -x 指定输出静态变量时属性的遍历深度...stack 输出当前方法被调用的调用路径, 很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。...PS:这里重点要说明的是观察表达式,观察表达式的构成主要由 groovy 表达式组成,只要是一个合法的 groovy 表达式,都能被正常支持。
//switch语句的语句结构 switch (整型表达式) { case 整型常量表达式: 语句; } 这里我们来用一个例子说明这个语句结构; #define _CRT_SECURE_NO_WARNINGS...,这里我们可以总结一下switch语句的完整结构: //switch语句结构 switch (整型表达式) { case 整型常量表达式: 语句; break; } 我们在使用的时候,有几种情况...,但是这时我们来思考一个问题,它们这样写与if……else if……else的写法有区别吗?...,我们使用了上一篇if语句中提到的知识点,省略else的用法,下面我们来测试一下: 从报错中我们可以看到,这里描述的是break的使用范围,break只能在循环或者开关中使用,有朋友可能就会问了,这个循环我能理解...case后面加上break的习惯,如果出现了像咱们今天举的例子,多个case执行同一个语句时,我们只需要在最后一个case后面加上break就行。
(3)无法线上debug的问题 (4)线上某个数据有问题,但无法线上debug,线下无法重现。 (5)是否有一个全局视角来查看系统的运行状况? (6)有什么办法可以监控到JVM的实时运行状态?...这里重点要说明的是观察表达式,观察表达式的构成主要由 ognl 表达式组成,所以你可以这样写"{params,returnObj}",只要是一个合法的 ognl 表达式,都能被正常支持。...(5)sc 查看jvm已加载的类信息 Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,这个命令支持的参数有 [d]、[E]、[f] 和 [x:]。...如果一个类被多个ClassLoader所加载,则会出现多次 [E] 开启正则表达式匹配,默认为通配符匹配 [f] 输出当前类的成员变量信息(需要配合参数-d一起使用) [x:] 指定输出静态变量时属性的遍历深度...命令参数解析 -t tt 命令有很多个主参数,-t 就是其中之一。这个参数的表明希望记录下类 *Test 的 print 方法的每次执行情况。
只有指定类已存在于 BeanFactory 中,并且可以确定单个候选项才会匹配成功 BeanFactory 存在多个 bean 实例,但是有一个 primary 候选项被指定(通常在类上使用 @Primary...bean 被另外一个 auto-configuration 创建,确保使用该条件的要在其后面运行 @ConditionalOnResource 如果我们要加载的 bean 依赖指定资源是否存在于 classpath...看到这个 logback.xml 是不是很亲切,在我们引入第三方工具类如 Dozer 等都可以添加类似的开关 接下来的是真冷门,大家有个印象,如果有需要,至少能想到用这些注解实现灵活配置就好了 @ConditionalOnJndi...到此,Spring Boot 为我们提供的这 13 个注解就介绍完了,但是没有结束,下面的一些冷门知识,你需要知道: 组合条件 好多时候,一个条件不能满足我们的要求,我们想多个条件一起使用,这就要求我们将他们组合起来去...Java8 Stream 也有 findAny,findAll 这类的操作,这都是匹配,你有使用过吗?
北京办公室的孟宇现在对这个问题有了新的思考,当我们抛却Spring,Feature Toggle又该如何实践呢? 于是,他写了《在项目中透明地引入特性开关》。...当最终所有品牌都上线后,可以很方便地将特性开关移除 随意切换,便于测试 所以,如果我们的特性开关如果能像下面代码所示的那样工作就好了。...使用代理模式创建特性开关 “代理模式: 为其他对象提供一种代理,并以控制对这个对象的访问。而对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化。...Meat|Bread| 如果你对用代理模式生成的特性开关还心存疑问,别着急,你会从下面的“应用”环节中找到答案。...使用ASpectJ动态编译创建特性开关 AspectJ是一个面向切面的框架,它扩展了Java语言,定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。
领取专属 10元无门槛券
手把手带您无忧上云