技术文章

人生感悟 --程序员保值方法

二次信任 提交于 2021-02-20 01:07:27
//原文出处 http://blog.csdn.net/foruok/article/details/46407723 程序员保值方法 在国内,很多人说程序员是吃青春饭的,一开始说过了30岁就得转行,后来又有人35岁是一道坎……看起来好像程序员真的和风尘女子一样,注定有朝一日会年老色衰不再受人青睐。 我工作已有一年半了,年龄28,很明显感觉不应该是这样的。 所有的道路都通向天堂 只是要度过路上的痛苦时光 那一天我正走在路上 两边的荒草,比人还高    ——海子,《月全食》 真的程序员,敢于直面惨淡的人生和淋漓的鲜血,一定能够在荒草满布的岁月荒原里踏出一条自己的路来。 其实别人说的话,听一听就算了,决定还得自己来做。面对别人的怀疑、否定、讥讽,我们只需要坚定地前行,做给他看。行动是最好的证明,多坚持一秒,未来就会不同。 来源: oschina 链接: https://my.oschina.net/u/2312022/blog/521218

关于SimHash算法的实现及测试V1.0

点点圈 提交于 2021-02-20 01:05:47
@祁俊辉,2017年5月21日测试。 1 说明 本程序是简化版的SimHash算法(分词暂为手动分词,每个词的权重都设为1); 本程序是基于《数学之美 》第二版第16章所介绍的原理展开; 本篇文章将计算多个字符串的SimHash值,并将对其分析; 本篇文章暂不介绍SimHash算法的原理,因为网上的资源相对较杂,待我彻底理解,整理过后更新(已在笔记本中); 本篇文章(程序)将持续更新。 2 程序(32位) 关于程序的解释,都在程序源码中有相应的注释。若有不明白之处,请联系本人:qce.hui@qq.com。 1 /* 【算法】SimHash->32位 2 * 【说明】1.本程序手动分词,假设每个词的权重都为1 3 * 【说明】2.对每个词进行BKDRHash算法,在此基础上加减权重 4 * 【说明】3.将所有词整合后,降维 5 * 【说明】4.计算各个句子的海明距离 6 * 【时间】祁俊辉->2017.5.19 7 * */ 8 public class SimHash_32 { 9 // 定义待比较的字符串 10 static String s1="SimHash/算法/的/研究" ; 11 static String s2="SimHash/算法/的/探讨" ; 12 static String s3="SimHash/研究/的/算法" ; 13 static String

Go语言中时间轮的实现

强颜欢笑 提交于 2021-02-20 01:03:33
转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https://www.luozhiyun.com/archives/444 最近在工作中有一个需求,简单来说就是在短时间内会创建上百万个定时任务,创建的时候会将对应的金额相加,防止超售,需要过半个小时再去核对数据,如果数据对不上就需要将加上的金额再减回去。 这个需求如果用Go内置的Timer来做的话性能比较低下,因为Timer是使用最小堆来实现的,创建和删除的时间复杂度都为 O(log n)。如果使用时间轮的话则是O(1)性能会好很多。 对于时间轮来说,我以前写过一篇java版的时间轮算法分析: https://www.luozhiyun.com/archives/59,这次来看看Go语言的时间轮实现,顺便大家有兴趣的也可以对比一下两者的区别,以及我写文章的水平和一年多前有没有提升,哈哈哈。 时间轮的运用其实是非常的广泛的,在 Netty、Akka、Quartz、ZooKeeper、Kafka 等组件中都存在时间轮的踪影。下面用Go实现的时间轮是以Kafka的代码为原型来实现的,完整代码: https://github.com/devYun/timingwheel。 介绍 简单时间轮 在时间轮中存储任务的是一个环形队列,底层采用数组实现,数组中的每个元素可以存放一个定时任务列表。定时任务列表是一个环形的双向链表

ArrayList 源码分析

可紊 提交于 2021-02-20 01:02:23
ArrayList 是 Java 中非常常用的数据结构,其 底层基于 Object[] 数组实现 ,其特点是: 基于 Object[] 数组,查询快,可随机访问,可以动态增加容量,增加和删除慢,线程不安全 。 ArrayList 是线程不安全的,在多线程环境下推荐使用 CopyOnWriteArrayList 或者 Vector 。 下图显示的 ArrayList 的继承关系图: 实现 Cloneable 接口,覆写其 clone() 方法,实现数组元素的克隆; 实现 Serializable 接口,表示这可以 系列化传输 ; 实现 RandomAccess 接口,表示实现这个接口的 List 支持随机访问,也就是通过 index 序号快速获取元素; 继承 AbstractList ,AbstractList 是一个数组队列,提供了 添加、删除、修改、遍历 等功能; 1、ArrayList 核心代码 1.1、ArrayList 的构造方法 /** 默认初始容量 */ private static final int DEFAULT_CAPACITY = 10; /** 默认的空数组实例,用于初始化容量为零的数组 */ private static final Object[] EMPTY_ELEMENTDATA = {}; /** * 默认的空数组实例,用于初始化容量为零的数组 *

顺手的武器

北城以北 提交于 2021-02-20 01:02:06
今天来强化一个概念,关于思维迁移。我们想一个场景,打游戏时候,你会反复使用自己用的顺手的武器,并且它给你带来非常好的反馈。 比如一招制敌,一个大招连发将对方砍成残血。一个冰冻时间,将对方定在一处,连着一个大招将对方干倒。 这里有个核心就是,每个人都在尽力让自己的利益最大化,也同时最擅长的就是使用顺手的武器。 就像我擅长文字,喜欢一些感性的写法,这个就是我顺手的方式。你也有你自己掌握的编程语言,如果顺手的就能解决问题,我相信你一定不会犹豫,直接选择这个武器。 职场里也有一个规则,很多人会误以为这个吃亏。可职场很多时候就是先吃亏,后享福。这里的吃亏换个词语就是投资了,而买方就是领导,或者公司了。 不能太计较当前的得失,要从多年的长远规划来看,这个事是否是必要的,是否值得投入。 很多道理一看就对,但就是没方法。所以就掉入了所谓鸡汤的陷阱。不要慌乱中不注意提升自己,保持自己的竞争必须存在。 打造技术壁垒,是初入职场的人必须要做的事。不要被网络上的各种成功人士的经历带偏,以为自己就该如此,没有那命。 比起不努力,失去希望更加可怕。我没法唤醒抬杠的那些人,他们总是说的很对,落实下来的寥寥无几。 总是陷在争论中显示自己的存在,却忘了人群散去,你又是谁? 就怕的是拥入人群寻找存在感,我总怕大家被宣传的带偏。就如同最让你嗨的必然是物质的获取,让你纸醉金迷灯红酒绿。 保持适当的距离感

云原生系列6 基于springcloud架构风格的本地debug实现

余生长醉 提交于 2021-02-20 01:01:33
debug是程序员在日常开发中最常使用的操作, 那么,你是如何快速在微服务架构风格下快速debug后端服务呢? 开发现状 开发的理想状态 本地调测的使用步骤 登录智能网关 如果集成开发环境是在本地局域网,则这一步可以省略, 否则需要使用智能网关,这里使用的是阿里云的智能网关, 用途是把本地开发机器跟远程的集成开发环境机器组成一个局域网; 配置服务染色标记 场景覆盖 通过网关直接到本地服务 通过Feign到本地服务 应用二开调用其它应用或者服务 实现原理 服务染色 网关路由劫持 自定义ribbon负载均衡规则 小结 一句话小结本篇: 通过对客户端的流量染色跟服务染色来实现把 集成开发环境的流量转发到本地实现本地debug加快开发的速度; 借助 transmittable-thread-local 工具, 解决了ThreadLocal的不同线程共享线程本地变量的问题。 原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。 来源: oschina 链接: https://my.oschina.net/carterspring/blog/4956987

SpringBoot 中实现跨域的5种方式

﹥>﹥吖頭↗ 提交于 2021-02-20 01:00:21
一、为什么会出现跨域问题 出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。2021Java面试宝典 同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port) 二、什么是跨域 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域 三、非同源限制 【1】无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB 【2】无法接触非同源网页的 DOM 【3】无法向非同源地址发送 AJAX 请求 四、java 后端 实现 CORS 跨域请求的方式 对于 CORS的跨域请求,主要有以下几种方式可供选择: 返回新的CorsFilter 重写 WebMvcConfigurer 使用注解 @CrossOrigin 手动设置响应头 (HttpServletResponse) 自定web filter 实现跨域 注意: CorFilter / WebMvConfigurer / @CrossOrigin 需要 SpringMVC