Amp

.net获取Excel单元格内的信息

给你一囗甜甜゛ 提交于 2020-08-20 02:07:56
两种方式, 一:通过写死具体单元格的行列获取 二:通过标签获取,标签获取实际不如写死单元格方便,因为要获取的位置较多,设置很麻烦 Dim FmObj As New OpenFileDialog FmObj.Filter = "Word文件|*.doc;*.docx|Html文件|*.html" FmObj.Multiselect = False If FmObj.ShowDialog(Me) <> DialogResult.OK Then Exit Sub End If Dim FilePath As String = FmObj.FileName Dim FileExt As String = System.IO.Path.GetExtension(FilePath).ToLower Dim SysWorkPath As String = Application.StartupPath & "\..\" '系统路径 Dim SysTmpPath As String = SysWorkPath & "..\Tmp\" '临时目录路径 Try If FileExt = ".doc" OrElse FileExt = ".docx" Then Dim wordDoc As Interop.Word.Document Dim wordApp As New Microsoft.Office

成为b站up主的第一天

若如初见. 提交于 2020-08-20 01:29:25
知道了视频剪辑工具FCPX ,这里包含了大部分资源 http://www.mfcpx.com/ 知道了几个挑选背景音乐的网站 https://www.musicbed.com/ https://www.premiumbeat.com/ https://app.soundstripe.com/ https://audiojungle.net/category/music https://artlist.io/ 一些好听的音乐创作者 james everigham scott & brendo tony anderson 视频特效 https://www.rocketstock.com/ 英文字体下载 https://www.dafont.com/ 来源: oschina 链接: https://my.oschina.net/lilugirl2005/blog/4340418

C语言探索之旅 | 第二部分第九课: 实战"悬挂小人"游戏

最后都变了- 提交于 2020-08-20 01:05:34
>作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。 转载请注明出处。 原文: https://www.jianshu.com/p/6cbf452666bd > 《C语言探索之旅》 全系列 内容简介 前言 题目规定 优化建议 第二部分第十课预告 1. 前言 第二部分的理论知识基本讲完了。上一课我们经历了很有意思的 C语言探索之旅 | 第二部分第八课:动态分配 。 这一课我们来实战一下,要实现的游戏叫“悬挂小人”。 >这个“小人”,不是“君子和小人”的小人。是 little man(小小的人)的意思。 读者:“你有必要这么强调吗?简直无聊嘛...” 好的,话休絮烦... 俗语说得好:“实践是必要的!” 对于大家来说这又尤为重要,因为我们刚刚结束了一轮 C语言的高级技术的“猛烈进攻”,需要好好复习一下,消化消化。 不论你多厉害,在编程领域,不实践是永远不行的。尽管你可能读懂了之前的所有课程,但是如果不配合一定的实践,是不能深刻理解的。 以前我大学里入门编程以前看 C语言的书,觉得看懂了,但是一上手要写程序,就像挤牙膏一样费劲。 这次的实战练习,我们一起来实现一个小游戏:“悬挂小人”,或叫 “上吊游戏”。英语叫 HangMan ,是挺著名的一个休闲益智游戏。 虽说是游戏,但是比较可惜的是还不能有图形界面 (不过课程后面会说怎么实现在控制台绘制小人,其实也可以实现简陋的

厉害了!知道这样重命名文件都是大佬级别!

北城以北 提交于 2020-08-20 00:46:02
大家好,我是良许。 在 Linux 下,重命名一个文件,我们通常是使用 mv 命令,一般是这样操作的: $ mv file1.txt file2.txt 这样重命令的方式当然是可以,但有个弊端就是你需要输入两次文件名。文件名比较短还好,一旦比较长的话,输两次会很让人崩溃的。 本文就介绍几种更高效的文件重命令方法,一般人不知道哦,知道的都是大神级别。 高效重命名文件的方法 首先,我们需要使用 vim 编辑 ~/.bashrc 文件。 $ vim ~/.bashrc 将下面这段代码添加到 ~/.bashrc 文件末尾: # Bash Function To Rename Files Without Typing Full Name Twice function mv() { if [ "$#" -ne 1 ] || [ ! -e "$1" ]; then command mv "$@" return fi read -ei "$1" newfilename command mv -v -- "$1" "$newfilename" } 然后,再按 wq 保存并退出。再接下来,使用 source 命令让这个修改生效。 $ source ~/.bashrc 接下来,就是见证奇迹的时刻! 现在,我们要重命名 file1.txt 文件,我们只需这样操作即可: $ mv file1.txt 然后

ArrayList源码-不常用方法

自古美人都是妖i 提交于 2020-08-20 00:16:37
这篇笔记主要记录一些不常用方法,了解一下可以干什么,有个印象。 改变数组容量 /** * 将该<tt> ArrayList </ tt>实例的容量调整为列表的当前大小。 * 应用程序可以使用此操作来最大程度地减少<tt> ArrayList </ tt>实例的存储。 */ public void trimToSize () { modCount ++ ; if ( size < elementData . length ) { elementData = ( size == 0 ) ? EMPTY_ELEMENTDATA : Arrays. copyOf ( elementData , size ) ; } } /** * 如有必要,增加此<tt> ArrayList </ tt>实例的容量,以确保它至少可以容纳最小容量参数指定的元素数。 * * @param minCapacity the desired minimum capacity */ public void ensureCapacity ( int minCapacity) { int minExpand = ( elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA ) // any size if not default element table ? 0 //

Web项目逻辑删除的设计

谁都会走 提交于 2020-08-19 23:24:04
一:逻辑删除 逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(is_delete)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中。 对应的SQL语句:update 表名 set is_delete = 1 where id = 1;语句表示,在该表中将id为1的信息进行逻辑删除,那么客户端进行查询id为1的信息,服务器就不会提供信息。倘若想继续为客户端提供该信息,可将 is_delete 更改为 0 。 二:物理删除 物理删除就是真正的从数据库中做删除操作了。 对应的SQL语句:delete from 表名 where 条件;执行该语句,即为将数据库中该信息进行彻底删除,无法恢复。 关于回收站的原理,其实就是利用了逻辑删除,对于删除文件进入回收站的本质只是在操作系统的帮助下对文件加上了 某个标记,资源管理器中对含有这种标记的文件不会显示。当从回收站恢复的时候只是移除了加上的标记而已,而清空回收站就是进行了物理删除。 而商城网站,如淘宝,京东…会大量使用逻辑删除进行操作数据库。 切记,作为编程人员对于删除,一定要慎之又慎,一定要再三考虑。特别是物理删除,可以的话,就忘掉他吧。 = =!!! https://www.v2ex.com/amp/t/574913 场景和需求

leetcode693(交替位二进制数)--Java语言实现

那年仲夏 提交于 2020-08-19 22:17:15
求: 给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。 示例 1: 输入: 5 输出: True 解释: 5的二进制数是: 101 示例 2: 输入: 7 输出: False 解释: 7的二进制数是: 111 示例 3: 输入: 11 输出: False 解释: 11的二进制数是: 1011 示例 4: 输入: 10 输出: True 解释: 10的二进制数是: 1010 题目链接: https://leetcode-cn.com/problems/binary-number-with-alternating-bits/ 解: 1、逐位比较 从后向前获取位,通过n&1获取末位,通过n>>=1缩小n,向前逐个获取。 使用pre记录上一位的值,并且与当前值比较,判断相邻位是否相等,如果发现相邻位相等,返回false。 所有位都获取完成,没有返回false,则说明符合要求,返回true。 时间复杂度:O(1) 空间复杂度:O(1) public boolean hasAlternatingBits ( int n) { int pre ; for (pre = n & 1 , n >>= 1 ; n > 0 ; n >>= 1 ) { int mod = n & 1 ; if (mod == pre) return false; pre =

Deno 静态文件CSS或图片

六月ゝ 毕业季﹏ 提交于 2020-08-19 21:00:39
Deno 静态页面或图片 视频讲解 https://www.bilibili.com/video/BV1BT4y1E7Nh/?p=7 我们一起来完成以下步骤: 沿用之前的工程代码 新增Login页面和响应的controller 添加CSS资源文件,然后预览页面 #controllers/controller.ts const { cwd } = Deno; class Controller { static async getData(ctx: any){ //cwd获取当前工程目录 //注意 ' !== ` ctx.render( ` ${cwd()} /views/index.ejs` ,{ title : "Testing" , data :{ name : "deepincoding" } }); } //登录页面 static async login(ctx: any){ ctx.render( ` ${cwd()} /views/login.ejs` ); } } export default Controller; #routers/index.ts import { Router } from "https://deno.land/x/oak/mod.ts" ; import Controller from "../controllers/Controller.ts

应用于医疗设备中的并行接口MRAM-MR5A16A

早过忘川 提交于 2020-08-19 20:51:11
Everspin并行输入/输出 MRAM 产品的简单异步静态随机存取存储器标准JEDEC接口和QSPI/SPI接口使设计易于实现,无需额外的组件或生态系统支持。Everspin MRAM技术的强大可靠性使工程师们能够使用Everspin的标准商业/工业级产品来满足患者关键医疗设备市场的苛刻要求。 MR5A16A是一个33,554,432位磁阻随机存取存储器(MRAM)设备,由16位的2,097,152个字组成。MR5A16A提供静态随机存取存储器兼容的35 ns读/写时序(汽车温度选项为45ns),具有无限的耐用性。数据在超过20年的时间内始终是不可挥发的。数据在掉电时由低压抑制电路自动保护,以防止电压超出规格的写入。 MR5A16A 提供小尺寸的48引脚球栅阵列(BGA)封装和54引脚的薄小外形封装(TSOP 2型)。这些封装与类似的低功耗SRAM产品和其他非易失性RAM产品兼容。 MR5A16A在很宽的温度范围内提供高度可靠的数据存储。该产品提供商用温度(0至+70°C),工业温度(-40至+85°C)和汽车温度(-40至+ 125°C)工作温度选项。为了简化容错设计,MR5A16A包括内部单比特纠错码,每64个数据位有7个纠错码奇偶校验位。MR5A16A是适用于必须永久存储和检索关键数据的应用程序的理想内存解决方案.英尚微电子可提供样品及技术支持. 工程师可以从一系列

判断点是否在(凸凹)多边形内

痞子三分冷 提交于 2020-08-19 20:46:37
template<typename T> struct Point3_ { Point3_() : x(0), y(0), z(0) {} Point3_(T _x, T _y, T _z) : x(_x), y(_y), z(_z) {} T x; T y; T z; }; typedef Point3_<int> Point3I; typedef Point3_<float> Point3F; typedef Point3_<double> Point3D; bool Esvi3DGraph::PointInPolygon( const std::vector<Point3D> &points, const Point3D &testPoint) { int i = 0, j = 0; bool result = false; int size = points.size(); double testX = testPoint.x; double testY = testPoint.y; for (i = 0, j = size - 1; i < size; j = i++) { const Point3D &vertI = points[i]; const Point3D &vertJ = points[j]; if (((vertI.y > testY) != (vertJ