- 博客(37)
- 收藏
- 关注
原创 Synchronized锁升级过程
1.6锁优化cas如果要了解锁优化,首先需要明白CAS操作。cas的全称是:Compare And Swap(比较如果相同则交换),是现在cpu广泛支持的一种对内存中的共享数据进行操作的一种特殊指令。cas将比较和交换转为原子操作,这个原子操作直接由CPU保证。cas依赖3个值:内存中的值V,旧的预估值X,要修改的新值B,如果旧的预估值X等于内存中的值V,则将新值B保存到内存中。unsafe类Unsafe是CAS的核心类,CAS操作是执行依赖于Unsafe类的方法。unsafe类使java语
2022-04-18 21:31:06 243
原创 Synchronized全面介绍
Synchronized并发编程的三个重要特性:原子性:一个操作或者多次操作,要么所有操作全部得到执行,并且不会受到任何因素的干扰而中断,要么所有的操作都执行,要么都不执行。可见性:当一个线程对共享变量进行修改,另外的线程可以立即得到修改后的最新的值。有序性:程序在多线程下,程序中代码执行的顺序是代码的先后执行的。程序代码不会因为指令重排序(程序为了优化执行效率从而打乱了代码的执行顺序)而打乱,从而导致程序产生不同的结果。synchronized可以保证原子性,有序性和可见性另一个关键字v
2022-04-16 20:33:34 1539
原创 volatile底层原理
Volatile底层原理volatile关键字:java内存模型:主内存与工作内存之间的交互volatile关键字:java语言规范对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能够被准确和一致性地更新,线程应该确保通过排它锁单独获得这个变量。简单来说是,如果一个字段被volatile修饰,java内存模型能确保所有的线程看到的这个变量的值是一致的。但是要注意volatile能保证可见性和有序性,但不能保证多线程下的原子性。volatile只能保证受限的原子性。
2022-04-15 22:57:35 653
原创 找出数组中只出现一次的数字
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number解法一:如果对数组进行排序,那么相同的数字必定在相邻的位置。遍历数组找到与相邻数字不相等的数字即是只出现一次的数字。如果遍历结束都没有找到,说明数组的最后一位是只
2021-07-19 11:40:53 993
原创 最佳卖股票时间
题目给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7
2021-07-14 21:49:39 123
原创 杨辉三角问题
题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pascals-triangle解法一:class Solution { public List<List<Integer>
2021-07-10 10:46:16 129
原创 将有序数组转变为二叉搜索树
题目:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:示例 2:输入:nums = [1,3]输出:[3,1]解释:[1,3] 和 [3,1] 都是高度平衡二叉搜索树。
2021-07-08 21:57:35 116
原创 合并两个有序数组
题目介绍给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-sorted-array解法一:class Solution { pub
2021-07-08 12:43:10 105
原创 搜索插入位置
题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-in
2021-07-05 16:12:59 80
原创 移除数组中指定元素
题目题目来源:力扣https://leetcode-cn.com/problems/remove-element/一、解法一class Solution { public int removeElement(int[] nums, int val) { int fast=0; int slow=0; int len=0; for(slow=0;slow<nums.length;slow++){
2021-07-04 21:11:49 433
原创 删除有序数组中的重复元素
题目:题目来源:力扣https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/解法一:遍历数组进行判断,如果找到相等的即进行替换,替换为后边更大的数:class Solution { public int removeDuplicates(int[] nums) { int len=1; for(int i=0;i<nums.length-1;i++){
2021-07-04 20:22:12 297
原创 读BERT论文记录
最近阅读了提出BERT的论文,做一个简要的阅读记录,供大家和自己阅读。题目:BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding通过深层双向Transformer来提高语言理解能力摘要我们引入了一种新的语言表示模型叫做BERT,BERT代表了:Bidirectional Encoder Representations from Transformers。与最近的语言表示模型不同的是,BERT旨
2021-02-27 22:55:39 338
原创 迁移学习(Transfer learning)
本文参考https://lena-voita.github.io/nlp_course/transfer_learning.html迁移学习目前不论是在学术界还是工业界,迁移学习可能都是最流行的NLP领域。很可能你已经听说过了ELMo,BERT,和其他一些名字----在这篇文章后,希望你能有一个大致的了解。将知识从一个模型“迁移”到另一个一般的迁移学习的思想是将知识从一个任务/模型迁移到另外一个。例如:对于目前你感兴趣的任务没有大量的数据,如:分类。用你目前仅有的数据得到一个好的模型是很困难的。相反
2021-02-17 21:58:55 1654
原创 斐波那契数列
题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1示例 2:输入:n = 5输出:5
2021-02-16 18:28:56 306 1
原创 Transformer:Attention is all you need
声明:本文是学习https://lena-voita.github.io/nlp_course/seq2seq_and_attention.html的笔记如果你对attention和seq2seq不了解最好了解一下在来看Transformer。seq2seq and attentionTransformer是在2017年在论文“Attention is all you need”中提出的。它只依赖于attention机制,不需要循环神经网络或卷积的参与。在有着更高的翻译质量并且模型速度提升了一个等.
2021-01-27 22:05:58 398
原创 Seq2Seq and Attention(二)
声明:本文是学习https://lena-voita.github.io/nlp_course/seq2seq_and_attention.html的笔记,小伙伴也可以自行跳转学习原文。在之前的文章中我们介绍了什么是Seq2Seq,现在我们来介绍一下什么是Attention。Atteintion问题固定的编码器表示问题固定的源信息表示是不理想的:(1)对于编码器,压缩句子是困难的。(2)对于解码器,在不同的步中,不同的信息可能是不同相关性。在目前我们所看的模型中,编码器将所有的源句子压缩为一
2021-01-26 17:56:14 179
原创 seq2seq and Attention(一)
seq2seq and Attention(一)声明:本文为学习https://lenavoita.github.io/nlp_course/seq2seq_and_attention.html 的笔记。喜欢阅读英文原文的请自行跳转。最流行的sequence-to-sequence(序列到序列) 任务是翻译:也就是说从一个自然语言到另一个自然语言。如下图所示:在过去的几年中,商业系统在机器翻译方面变得出乎意料的出色,例如Google Translate,Yandex Translate,Deep T
2021-01-25 23:06:42 264
原创 剑指offer06:从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof解法一:/** * Definition for singly-linked list. * public class
2021-01-20 22:49:14 89
原创 语言模型(二)
接上篇文章神经语言模型在上一部分讲到的left-to-right语言模型中,一个token的概率是:现在我们再一次明确未完成的工作是:我们需要明确如何计算上式中的条件概率与n-gram是基于语料的统计信息来计算不同的是神经语言模型是通过“教”网络去预测这些概率。也就是说,训练一个神经网络去预测下一个可能出现的token。神经网络语言模型做了两件事情:1.处理前文------模型相关最主要的部分就是得到一个之前出现的文本的向量表示。模型就可以使用得到的向量对下一个token进行预测。这部分的
2021-01-16 23:19:19 569
原创 语言模型介绍(一)
本文翻译自ysda的自然语言处理课程课件,原文网址为:https://lena-voita.github.io/nlp_course/language_modeling.html如果想看原文可自行跳转。语言模型什么是"模型"想象一下我们在真实世界中有一个模型,我们会期望他能做什么?如果他是一个好的模型,那么他应该可以在给定上下文描述的情况下预测出将要发生什么。一个好的模型会模拟真实世界的行为,他将会“理解”哪个事件会更贴合现实世界的情况。什么是“语言”关于语言我们的直观上的感受都是相同的。不
2021-01-15 21:45:37 1397
原创 java:替换空格
题目:替换掉字符串中的空格为%20解法一:class Solution { public String replaceSpace(String s) { String result=""; for(int i=0;i<s.length();i++){ if(s.charAt(i)!=' '){ result+=s.charAt(i); } else{
2021-01-06 20:54:31 93
原创 词嵌入( Word Embedding)——2
上次写到word2Vec中一次训练过程。训练一次需要更新的向量有Vcat 以及所有的Uw。这样一次训练成本似乎过于大,如何解决这个问题呢?快速的训练:负采样为什么我们必须在每个步骤中考虑词汇表中的所有上下文向量? 假设在当前步骤中,我们不考虑所有单词的上下文向量,而只考虑当前目标和几个随机选择的单词。 下图显示了差别。和以前一样,我们增加Vcat和Ucute之间的相似性。 所不同的是,现在我们不减少所有单词之间的上下文向量之间的相似性,而仅使用K个“负”示例的子集来减小它们之间的相似性。由于我们
2020-12-24 17:26:46 239 1
原创 词嵌入(word embedding)学习记录
为什么我们需要词嵌入我们人类可以很容易理解一句话,比如“I saw a cat .”。但是要模型或者算法直接理解这句话是困难的。所以我们需要用特征向量来代表我们所要输入到模型的单词。误区这里可能会有一个误区,词嵌入就是把词变为向量表示。提到词向量很多人就会想到“word2vec”。word2vec是google训练的词向量。他是Google的一个产品,词向量的一种,并不能全部的概括了词向量。此前一直将二者划等号。不能很明确的区分。不知道现在这样的理解对不对??词嵌入如何起作用在实际工作中,我
2020-12-22 16:37:08 879
原创 判断有效的括号
力扣20题题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true来源:力扣(
2020-12-20 22:00:04 229
原创 查找最长公共前缀
题目描述力扣14题(https://leetcode-cn.com/problems/longest-common-prefix/)编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。解法一:横向查找两两比较,总是找出本次比较的两个字符串的最长公共子串class
2020-12-18 20:57:15 389 1
原创 罗马数字变整形数字(力扣)
题目:将具体问题抽象出来进行分析就会思路清晰很多。这个问题抽象出来就是取输入按位比较,如果左边的数字比右边的小,就减去他,如果左边的数字不比右边的小,加上即可。解法一:class Solution { public int romanToInt(String s) { Map<Character, Integer> m1=new HashMap<>(); m1.put('I',1); m1.put('V',5);
2020-12-15 20:42:59 78
原创 力扣:两数之和
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣
2020-12-14 21:33:31 132
原创 链表实现倒序数字相加
链表(Linked list)引入数组作为数据存储结构有一定的缺陷。无序数组中搜索性能差,有序数组中,插入效率低。两种数组的删除效率都很低。并且,数组在创建后大小就固定了,设置过大会造成内存浪费,过小不能满足数据存储的需要。数组是一种通用数据结构,可以用来实现栈,队列等很多数据结构。链表也是一种通用数据结构,可以作为实现栈,队列等数据结构的基础。除非需要频繁的通过下标来随机访问各个数据,否则很多使用数组的地方可以使用链表代替。定义链表通常由一连串节点组成,每个节点包含任意的实例数据(data fi
2020-12-13 21:29:32 277
原创 力扣:回文数
题目解法一:解法一:class Solution { public boolean isPalindrome(int x) { int rev=0; if(x<0){ return false; } int count=x; while(count!=0){ int pop=count%10; count=count/10; rev=rev*10+pop; } /
2020-12-13 17:04:54 311
原创 力扣:反转数字
题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21代码一:class Solution { public int reverse(int x) { String s=Integer.toString(x); int length=s.length(); String result="";
2020-12-07 20:29:03 218
原创 《Scikit-Learn与TensorFlow机器学习实用指南》笔记02章
一个完整的机器学习项目这一章中,书中的作者让我们作为房地产公司的雇佣的数据科学家,实现了一个预测房价的项目。(为什么书中第一个介绍的都是预测问题,不懂不懂,哈哈~~)感觉这一章与我之前学习过的一篇博文有异曲同共之妙呢,之前学习过的博文的地址是:https://blog.csdn.net/qq_40027052/article/details/78912963这一篇博文可能来源与书籍(《机器学习——Python实践》)(感觉发现了不同书籍入门的相似之处???吼吼侯)言归正传。在这一章中处理问题分为以下
2020-11-12 17:27:46 230
原创 《Scikit-Learn与TensorFlow机器学习实用指南》笔记01章
机器学习概览1.什么是机器学习机器学习是通过编程让计算机从数据进行学习的科学(和艺术)。更广的概念:机器学习是让计算机具有学习的能力,无需进行明确编程。 —— 亚瑟·萨缪尔,1959工程性概念:计算机程序利用经验E学习任务T,性能是P,如果针对任务T的性能P随着经验E不断增长,则称为机器学习。 —— 汤姆·米切尔,19972.为什么使用机器学习传统的方法需要针对一个问题制定一个规则,来对问题作出判断。这样可能就导致程序变为一长串的规则,并且有新的变化出现时需要相应的更改代码。时间长了就会很难
2020-11-10 11:57:05 210
原创 K交叉验证
初学阶段,当开始接触,这里记录一些自己的理解,如有不对的地欢迎各位大佬批评指正~~K折交叉验证k交叉验证可以用于模型好坏的评估,也可用于调参,使模型达到最优。KFold(n_splits=’warn’, shuffle=False, random_state=None)n_splits 表示划分为几块(至少是2)shuffle 表示是否打乱划分,默认False,即不打乱random_state 表示是否固定随机起点,当设置shuffle == True时使用,否则会有警告.KFold有两个方法
2020-10-20 19:28:16 2045
原创 错误记录:Cannot clone object. You should provide an instance of scikit-learn estimator instead of
jupyter提示了错误:TypeError: Cannot clone object. You should provide an instance of scikit-learn estimator instead of a class.翻译过来的意思是:无法克隆对象。您应该提供一个scikit learn estimator的实例,而不是类。检查代码发现问题出现在:我在调用过程中是这样写的:注意:models[‘DTR’]=DecisionTreeRegressor 这行,发现忘记了写括
2020-10-20 10:50:44 5645 3
原创 python对数据的描述和一些预处理
学习添加链接描述的笔记首先读入一个数据作准备from pandas import read_csvfrom matplotlib import pyplotfilename='housing.csv'names=['1','2','3','4','5','6','7','8','9','10','11','12','13','14']#数据共14列,为每一列取一个名字data=read_csv(filename,names=names,delim_whitespace=True)#csv文件
2020-10-19 21:51:50 506
原创 python中常见类库及使用总结
1.from matplotlib import pyplot Matplotlib是python的一个绘图库,是Python中最常用的可视化工具之一。 matplotlib是受MATLAB的启发构建的,matplotlib有一套完全仿照MATLAB的函数形式的绘图接口。 matplotlib.pyplot模块中,这套函数接口方便MATLAB用户过度到matplotlib包。简述一下绘图过程:fig = pyplot.figure() #在任何绘图之前,需要一个Figure对象。Figure可
2020-10-14 10:42:06 947
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人