JAVA学习(三)| JAVA核心类
字符串与编码⁍
在Java中,String是一个引用类型,它本身也是一个class。
不可变:Java字符串的一个重要特点就是字符串不可变。这种不可变性是通过内部的private final char[]字段,以及没有任何修改char[]的方法实现的。
String (Java SE 11 & JDK 11 ) (runoob.com)
字符串比较⁍
必须使用equals()方法而不能用==。要忽略大小写比较,使用equalsIgnoreCase()方法。
1s1.equals(s2)
搜索/提取子串⁍
12345678910// 是否包含子串:"Hello".contains("ll"); // true"Hello".indexOf("l"); // 2"Hello".lastIndexOf("l"); // 3"Hello".startsWith("He"); // true"Hello". ...
【论文阅读】GIScience21-LSTM-TrajGAN·A Deep Learning Approach to Trajectory Privacy Protection
论文基本信息⁍
作者:Jinmeng Rao等(威斯康星)
年份:2021
会议/期刊:GIScience
相关下载:
LSTM-TrajGAN: A Deep Learning Approach to Trajectory Privacy Protection (dagstuhl.de)
阅读参考:无
本人之前课程报告的slides 👉 提取码:zrs9
开源信息: github (实验评估只有TUL)
简介:一种端到端的深度学习方法来生成保护隐私的轨迹数据,同时可以保留语义信息(POI)。主要采用LSTM+GAN网络并设计了一个新的TrajLoss度量函数
模型名称:LSTM-TrajGAN
数据集: NYC Foursquare weekly trajectory dataset(originally come from the Foursquare NYC check-in dataset)
是之前做课程报告的时候看的论文,做的笔记可能比较啰嗦。。
Abstract⁍
问题背景:
基于位置的服务的普及促进了个人水平轨迹数据的爆炸性增长,并引 ...
【面试-线程相关】i++在两个线程分别执行100次,最大值和最小值分别多少
今天看微软空宣里提到的一道面试题,一下子没反应过来。。毕竟操作系统的知识我好像都上交了x要抽时间看看才行。
题目描述⁍
原理⁍
多个cpu对应多个寄存器。i++并不是原子性的,它的操作分为三步:
从内存中取数放入寄存器
执行++运算
将数写回内存
过程分析⁍
接下来参考文章[1],画图分析一下为2的极端情况
实操[2]⁍
相似题[1:1]⁍
j=100,两个线程j–-,均执行50次,可能值是多少?(0-98)
面试—i在两个线程分别执行100次,最大值和最小值分别多少_ 爱橙子的OK绷的专栏-CSDN博客_i在两个线程里分别执行100次 ↩︎ ↩︎
两个线程同时对int a=0进行a++一百次最后的结果可能为多少?_beyond丿灬的博客-CSDN博客 ↩︎
【论文阅读|TrajGen】KDD21'Generating Mobility Trajectories with Retained Data Utility
论文基本信息⁍
作者:Chu Cao, Mo Li(南洋理工)
年份:2021
会议/期刊:KDD
相关下载:
原文PDF (acm.org)
会议视频 Download (acm.org)
阅读参考:
阅读小记- Generating Mobility Trajectories with Retained Data Utility - 知乎 (zhihu.com)
KDD2021论文解读:路段粒度的轨迹生成 - 知乎 (zhihu.com)
开源信息: github (仓库尚在更新,未完全开源)
简介:提出了一种新的时空轨迹生成模型,该模型基于 GAN 与 Seq2Seq 来仿照真实轨迹生成相似的轨迹数据。
模型名称:TrajGen
数据集: real-world taxi trajectory data in Singapore.
简介⁍
提出了一种新的轨迹生成模型,该模型基于 GAN 与 Seq2Seq 来仿照真实轨迹生成相似的轨迹数据。
时空信息的解耦与合并
空间分布的图像:GAN
时间信息学习:Seq2Seq
从GAN生成的图像中提取位置并输入Se ...
【动手学深度学习】模型选择、欠拟合和过拟合
4.4. 模型选择、欠拟合和过拟合 — 动手学深度学习 2.0.0-beta0 documentation (d2l.ai)
将模型在训练数据上拟合的比在潜在分布中更接近的现象称为过拟合(overfitting), 用于对抗过拟合的技术称为正则化(regularization)。
训练误差和泛化误差⁍
训练误差(training error)是指, 模型在训练数据集上计算得到的误差。
泛化误差(generalization error)是指, 模型应用在同样从原始样本的分布中抽取的无限多的数据样本时,模型误差的期望。
独立同分布假设I.I.D⁍
在我们目前已探讨、并将在之后继续探讨的监督学习情景中, 我们假设训练数据和测试数据都是从相同的分布中独立提取的。 这通常被称为独立同分布假设(i.i.d. assumption), 这意味着对数据进行采样的过程没有进行“记忆”。 换句话说,抽取的第2个样本和第3个样本的相关性, 并不比抽取的第2个样本和第200万个样本的相关性更强。
有时候我们即使轻微违背独立同分布假设,模型仍将继续运行得非常好。
有些违背独立同分布假设的行为肯定会带来麻烦 ...
Electron-vue开发实战(一)| 入门与安装(踩坑实录)
Electron简介[1]⁍
图解⁍
electron由Node.js+Chromium+Native APIs构成。你可以理解成,它是一个得到了Node.js和基于不同平台的Native APIs加强的Chromium浏览器,可以用来开发跨平台的桌面级应用。
它的开发主要涉及到两个进程的协作——Main(主)进程和Renderer(渲染)进程。简单的理解两个进程的作用:
Main进程主要通过Node.js、Chromium和Native APIs来实现一些系统以及底层的操作,比如创建系统级别的菜单,操作剪贴板,创建APP的窗口等。
Renderer进程主要通过Chromium来实现APP的图形界面——就是平时我们熟悉的前端开发的部分,不过得到了electron给予的加强,一些Node的模块(比如fs)和一些在Main进程里能用的东西(比如Clipboard)也能在Render进程里使用。
Main进程和Renderer进程通过ipcMain和ipcRenderer来进行通信。通过事件监听和事件派发来实现两个进程通信,从而实现Main或者Renderer进程里不能实现的某些功能。
...
【Windows】利用NVM实现多版本nodejs的管理与切换
卸载nodejs⁍
直接控制面板——程序——程序与功能——卸载或更改程序,找到Node.js右击卸载即可
如果找不到,可以参考[1],在cmd里输入where node,找到相应的文件夹删除即可
考虑到卸载完这个文件夹也会残留,建议一并删除
安装nvm工具⁍
从github官网下载安装包(这里已经将1.1.9安装版上传到百度云:提取码:3ws8 )
根据提示选择nvm和nodejs的安装位置,最后点Install就可以了
在新的命令行窗口中输入nmv v检验是否安装成功
问题:在文件夹右击在Windows终端中打开,输入命令,找不到nvm
但是如果WIN+R-cmd或者从开始菜单打开命令提示符的话,是可以执行nvm命令的
nvm路径已经被自动添加到系统变量了,想不通为什么,待会重启试试
使用nvm安装nodejs⁍
输入nvm install [node_version],例如nvm install 10.20.0
可用版本查询:
命令nvm ls available
Previous Releases | Node.js (nodejs.or ...
Electron-vue开发实战|总记录
总之想开发桌面应用程序,技术选型选了一阵子还是打算用electron-vue
可能会加上java springboot,毕竟最后做项目肯定得用到
先记录一下可能要学习到的教程
不过vue.js的安装确实烦。。
electron⁍
《Electron跨平台开发实战》
Electron in Action (github.com)
electron-vue⁍
框架github:SimulatedGREG/electron-vue
官方文档:简介 · electron-vue (gitbooks.io)
Picgo-github:Molunerfinn/PicGo
Picgo-开发实战:Electron-vue 开发实战 (molunerfinn.com)
java spring boot + electron相关⁍
spring boot + vue + element-ui全栈开发入门——基于Electron桌面应用开发
GitHub: carter659/electron-vue-example: electron-vue+spring boot全栈例子
c ...
Leetcode|字符串
豆知识⁍
1. 比较函数⁍
可以用 “==” 来比较两个字符串吗?
取决于使用的语言是否支持运算符重载?
如果答案是 yes (例如 C++、Python)。我们可以使用 == 来比较两个字符串;
如果答案是 no (例如 Java),我们可能无法使用 == 来比较两个字符串。当我们使用 == 时,它实际上会比较这两个对象是否是同一个对象。(可以用 string.equals和string.compareTo)
123456789101112131415161718192021222324252627282930// "static void main" must be defined in a public class.public class Main { public static void main(String[] args) { // initialize String s1 = "Hello World"; System.out.println(&quo ...
Leetcode|动态规划
总体认识⁍
动态规划包含了「分治思想」、「空间换时间」、「最优解」等多种基石算法思想
动态规划问题特点,动态规划和分治算法的联系与区别;
借助例题介绍重叠子问题和最优子结构分别是什么,以及动态规划是如何解决它们的;
动态规划的解题框架总结;
动态规划的练习例题,从易到难排序;
普遍来看,求最值 的问题一般都具有「重叠子问题」和「最优子结构」特点,因此此类问题往往适合用动态规划解决。
动态规划特点⁍
「分治」是算法中的一种基本思想,其通过将原问题分解为子问题,不断递归地将子问题分解为更小的子问题,并通过组合子问题的解来得到原问题的解。
类似于分治算法,**「动态规划」也通过组合子问题的解得到原问题的解。不同的是,适合用动态规划解决的问题具有「重叠子问题」和「最优子结构」**两大特性。
1. 重叠子问题⁍
各个子问题中包含重复的更小子问题。
第一次求解某子问题时,保存子问题的解
后续遇到重叠子问题时,则直接通过查表获取解
示例:斐波那契数列⁍
斐波那契数形成的数列为 [0,1,1,2,3,5,8,13,⋯]
F0=0
F1=1
Fn=Fn-1+Fn-2
求第N个斐波那契数 ...