字符数组

.NET Core/.NET之Stream简介

匿名 (未验证) 提交于 2019-12-02 22:10:10
之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core/.NET的Streams 首先需要知道, System.IO命名空间是低级I/O功能的大本营. Stream的结构 装饰器 , 适配器. backing stores是让输入和输出发挥作用的端点, 例如文件或者网络连接. 就是下面任意一点或两点: 一个源, 从它这里字节可以被顺序的读取 一个目的地, 字节可以被连续的写入. 程序员可以通过Stream类来发挥backing store的作用. Stream类有一套方法, 可以进行读取, 写入, 定位等操作. 个数组不同的是, 数组是把所有的数据都一同放在了内存里, 而stream则是顺序的/连续的处理数据, 要么是一次处理一个字节, 要么是一次处理特定大小(不能太大, 可管理的范围内)的数据. 于是, stream可以用比较小的固定大小的内存来处理无论多大的backing store. 中间的那部分就是装饰器Stream. 它符合装饰模式. 从图中可以看到, Stream又分为两部分: Backing Store Streams: 硬连接到特定类型的backing store, 例如FileStream和NetworkStream Decorator Streams 装饰器Stream

[Ljava.lang.String是一个字符串数组的字节码表示

匿名 (未验证) 提交于 2019-12-02 21:52:03
打印一个字符串数组的话,会发现 String [] arr = new String [ 10 ]; // String[] arr = {"yanggb", "huangq"}; System . out . println ( arr ); // [Ljava.lang.String;@3e5084c9 这里直接打印了数组名,因为数组是引用数据类型,数组名是数组的管理者,而非所有者。 下面是打印出来的数组名([Ljava.lang.String;@3e5084c9)的含义解释。 【[】:表示一维数组 。 【[[】:表示二维数组 。 【L】:表示一个对象 。 【java.lang.String】:表示对象的类型 。 【@】:后面表示该对象的hashCode。 因此访问数组元素时,需要另外使用for循环遍历数组,不能直接通过数组名访问所有数组元素。 "没有人是天生强大,耐抗折磨和压力的。" 来源:博客园 作者: 杨冠标 链接:https://www.cnblogs.com/yanggb/p/11504471.html

JavaIO流之常用流总结(一)

匿名 (未验证) 提交于 2019-12-02 20:37:20
首先概述一下IO是什么   我们可以把这种数据的传输 看作是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存是输入流,输出内存的输出流   在Java中I/O操作主要是指使用其IO包下的内容进行输入,输出操作 通常 输入叫做读取数据 输出叫做写出数据   根据数据流向的不同 我们可以把其分为:输入流和输出流     输入流:把数据从其他设备上读取到内存中的流     输出流:把数据从内存中写出到其他设备上的流   根据数据的格局类型可以分为:字节流和字符流     字节流:以字节为单位 读写数据的流     字符流:以字符为单位,读写数据的流     在IO流下的两大分类都有两个祖宗倍的类       字节流中:         输入流: InputStream(字节输入流)         输出流:OutputStream(字节输出流)       字符流中:         输入流:Reader(字符输入流)         输出流:Writer(字符输出流) 先扯扯字节流:   在面向对象思想中有“万物皆对象”,而在这里我也把字节套一套叫"一切皆字节".   一切文件数据在存储时,都是以二进制数字的形式保存 都一个一个的字节 那么传输时一样如此。所以,字节流可以传输任意文件数据。所以我们时时刻刻都要明确,无论使用什么样的流对象

HTML中JS对于字符串的切割截取实现

匿名 (未验证) 提交于 2019-12-02 20:21:24
  在网站编程制作中,对于字符串的切割截取平时所用可能不是特别多,而且分的比较细,所以自备自查。有备无患。由于之前所有均在一个demo测试,下面就来跟大家分享一下成果。   1.函数:split()   功能:使用一个指定的分隔符把一个字符串分割存储到数组   例子: str=”jpg|bmp|gif|ico|png”; arr=str.split(”|”);   //arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”png”的数组   2.函数:join()   功能:使用您选择的分隔符将一个数组合并为一个字符串   例子: var delimitedString=myArray.join(delimiter);   var myList=new Array(”jpg”,”bmp”,”gif”,”ico”,”png”);   var portableList=myList.join(”|”);   //结果是jpg|bmp|gif|ico|png   3.函数:concat()   功能:将两个数组连接在一起;   例子:arr1=[1,2,3,4]   arr2=[5,6,7,8]   alert(arr1.concat(arr2)) //结果为[1,2,3,4,5,6,7,8]   4.函数:charAt()   功能:返回指定位置的字符

字符串操作和数组工具

自闭症网瘾萝莉.ら 提交于 2019-12-02 17:08:26
StringBuffer的使用 StringBuffer类的简单叙述: 我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题,线程安全的可变字符序列 StringBuffer的构造方法与方法 构造方法介绍: public StringBuffer(): 无参构造方法 用来创建StringBuffer对象。 public StringBuffer(int capacity): 指定默认容量不写默认是16 public StringBuffer(String str): 指定字符串内容 StringBuffer的方法(字符串的好多方法和StringBuffer相同): public int capacity(): 返回当前容量(如果构造函数里有传大小则返回指定的大小没有则返回默认容量16) public int length():返回长度(字符数)。 实际值 案例演示 public static void main(String[] args) { StringBuffer str1 = new StringBuffer(); System.out.println("str1.capacity() = " + str1.capacity()); StringBuffer str = new

二维字符数组和指针的相应问题研究

人走茶凉 提交于 2019-12-02 14:31:50
二维字符数组和指针的相应问题研究 在尝试用C语言实现广度优先算法时,需要用到支持以二维字符数组为值的哈希表,于是我对自己前面实现的int型键值对的哈希表进行再加工,发现在定义二维字符数组和指针时遇到较大问题,特此记录 shadowfish 2019/10/24 将已知的二维字符数组传入以储存 尝试 一开始,我将待传入的二维字符数组定义为 char a[][30]={"ABCD","EFDG","12122"}; 此代码创建了char类型3行30列 (3个字符串,每个字符串30个字节) 的二维数组。 接着,我尝试用一个二级指针指向它 char **ap =a; 并读取它的第一行字符串 printf("%s",*ap); 编译,运行到 printf("%s",*ap); 时报错 Segmentation fault ,即 段错误 ,访问了 不可访问 的内存。 原因 *ap 的值类型为 char* (指向char的指针) ,而它实际存储的是 char 型二维数组 a 的第一行数据的值 (本质是int型数据) ,而不是指向 a 的第一行数据的首地址。这就导致程序将 int 型数据当作地址访问,自然访问了 不可访问 的内存。 补充 char* p; 字符指针 p 相当于一维字符数组 名 , printf("%s",p) 中 p 指向字符数组首地址,配合 "%s"

理论+实操:shell之case语句for/while/until循环语句、函数、数组-满满的干货

♀尐吖头ヾ 提交于 2019-12-02 13:52:00
前言: 单引号表示纯符号 用双引号表字符串 case多分支语句 循环语句 for循环语句 while循环语句 until循环语句 shell函数 shell数组 一 : case语句的结构 1.1 case结构 多分支表现形式:if语句,case语句 case 语句可以使用正则表达式,正则表达式后面会去阐述 针对变量的不同取值,分别执行不同的命令程序 case 中;;表示一句话的结束 如果匹配某一个固定值,大多数用caes,其适用于某一个固定值 如果匹配某一个区间范围,大多数用if else 语句,其适用于一个范围 *后面 不需要加;; 1.2 case执行过程流程图 case针对变量的不同取值,分别执行不同的命令序列 case变量匹配的是模式,if变量匹配的是条件 1.3 case语句应用示例 1.3.1 示例1:击键类型识别 提示用户输入一个字符 判断出该字符是字母、数字或者其他字符 #/bin/bash read -p "请按个键,我可以测试年的键是字母数字或是其他字符" jian case "$jian" in [0-9]) echo "你按的是数字" ;; [a-z]|[A-Z]) echo "你按的是字母" ;; *) echo "你按的是特殊字符" esac [root@localhost opt]# sh shibiejijian.sh 请按个键

ECMAScript 初探 - 对象篇

我的梦境 提交于 2019-12-02 11:38:44
一、对象 如果你用过 C++ 或 Java,肯定熟悉类(class)。在 ECMAScript 中并没有 “类” 这个词, 其对应的是 “对象定义”,不过这太拗口了,因此还是诜择使用 “类” 这个词。 对象是由 new 运算符加上要实例化的类型的名字创建的。比如下面的代码创建 Array 类的实例: var a = new Array(); 在语法上与 C++ 类似。如果类的构造函数没有参数,括号可以省略;如果有多个参数, 则必须使用括号。为了避免混乱,笔者建议都使用括号。 1.1 Objec Object 类是所有 ECMAScript 类的基类,Object 类的所有属性和方法都会出现在其他类中, 理解了 Object 类,就可以更好地理解其他类。 Object 类具有下列属性: constructor,指向创建对象的函数,对于 Object 类,它指向 object() 函数。 prototype,对该对象的对象原型的引用。暂时可以将原型理解为 C++ 中的类声明,不过不同的是,ECMAScript 允许在运行时改变对象原型,而 C++ 中的类一旦声明后, 其成员变量和方法都不可在运行时增删。 Object 类还有几个方法: hasOwnProperty(property),判断对象是否有某个属性,property 为字符串,比如 root.hasOwnProperty (

KMP算法---私人笔记

送分小仙女□ 提交于 2019-12-02 11:37:38
  先给出模式匹配问题:给出两个字符穿,一个为S(主串)另一个为T(字串),模式匹配就是求T在S中的位置。我们先介绍简单的模式匹配算法,KMP算法是基于这种算法的改进算法。   简单的模式匹配算法:从S的第一个字符开始和T的第一个字符进行比较,若相等,则继续逐个的比较后续的字符,直到T中的每个字符依次和S中的一个连续的字符序列相等,则匹配成功,返回这个S中的连续字符序列的第一个字符的下标,如果在比较过程中有某个字符不相等,则从S 的下一个字符开始重新和T的第一个字符比较,依此类推,直到S中的字符都比较完了仍然没有匹配成功的话,则匹配不成功。Python实现代码如下: def StrMatching(S,T): i,j=0,0 m,n=len(S),len(T) while i<m and j<n: if S[i]==T[j]: i+=1 j+=1 else: i=i-j+1 j=0 if j==n: return i-n   else: return 0   KMP算法:   接下来进入我们的正餐KMP算法,上述的简单的模式匹配算法的最坏的时间复杂度为O(n*m),KMP算法可以在(m+n)的时间数量级上完成模式匹配操作。KMP算法的改进在于:每当一趟匹配过程中出现字符不相等时,不需要回溯i指针,而是利用已经得到的"部分匹配"的结果将模式串T向右"滑动"尽可能远的一段距离后

字符串和多维数组

一世执手 提交于 2019-12-02 11:04:28
字符串(串): 零个或多个 字符 组成的有限 序列 串长度:串中所包含的字符个数 空串:长度为0的串,记为:" " 非空串: S =" s 1 s 2 …… s n "( S 是串名,双引号是 定界符 ,双引号引起来的部分是串值 , s i (1≤ i ≤ n ) 是一个任意字符 。) 子串:串中任意个连续的字符组成的子序列。 主串:包含子串的串。 子串的位置:子串的第一个字符在主串中的序号。 串的存储结构 : 字符串是数据元素为单个字符的线性表,一般采用顺序结构存储,即用数组存储串的字符序列。 一般有三种方法: (1) 用一个 变量 来表示串的实际长度。 0 1 2 3 4 5 6 … …........ Max - 1 (2) 用数组的0号单元存放串的长度,从1号单元开始存放串值。 (3) 在串尾存储一个不会在串中出现的特殊字符作为串的终结符, 表示串的结尾 例如在C/C++中用'\0'表示串的结束, 在ASCII字符集中对应空字符NULL,数值为0,在使用过程中要为其分配内存空间,但不计入字符串长度。 模式匹配: 给定主串 S =" s 1 s 2 … s n " 和模式 T =" t 1 t 2 … t m ",在 S 中寻找 T 的过程称 为模式匹配 ,T 称为模式。 BF算法: 从主串 S 的第0个字符开始和模式T 的第0个字符进行比较, 若相等