Java中大字符串拆分问题

目前的情况是数据库有个blob字段,里边是逗号分隔的一个个数据,
想要取出来用逗号循环取出每个数据,当作条件去另一个表查询,
我想了下因为blob是存的byte,所以取出来了转成了String,但是这个String
我想了下,第一种是再用split转成数组,但是如果按照极限的大小比方说4G来算,
是不是浪费空间;第二种想用String的substring方法,但是substring本质是new String()
会不会更浪费?那如果是在循环中每次substring之后,让字符串引用=null这种释放内存
能不能解决问题? 第三种 想把大字段写到文件,一点一点解析文件这样应该没问题吧,
但是要是高并发的话,又太占IO了,感觉很low。
所以是实在不知道该怎么整。。。

0

5个回答

本身设计上就有点问题,这么大的字段,存到数据库,一般就是只读取等做显示,你这里要做分割,就没有什么特别好的方法来提高性能,一般可以先就用split等分割字符串,然后再看看具体性能瓶颈等在什么地方,然后再想办法优化。

0
qq_41812457
qq_41812457 嗯 这样行,兄弟有没有类似的代码借鉴下
10 个月之前 回复
oyljerry
oyljerry 回复qq_41812457: 可以把你需要后面查询的部分,拆分开来放到一个单独的表的各个列。这样就是多个表join查询
10 个月之前 回复
qq_41812457
qq_41812457 我单独拆个表出来装大字段怎么样?
10 个月之前 回复
qq_41812457
qq_41812457 确实,当初这么设计也考虑了这一点,因为考虑了下如果不放在大字段,而是将大字段的各个数据拆分成单独的数据通过表中的每一行来显示,这样又感觉表里边的冗余数据太多,所以到底该怎么设计比较好呢?
10 个月之前 回复

你的大字段是一段文本?大字段构造查询寻条件,每个逗号分隔的字段都可能作为查询条件还是,只是部分?

0
zhaomin_g
_赵明 回复qq_41812457: 两张表:歌单表和歌曲表。歌单表有有3个信息:一个是歌单id,歌单名称,歌曲id。歌曲区表有两个信息:歌曲名称和歌曲id
10 个月之前 回复
qq_41812457
qq_41812457 a表是歌单信息,一个字段存放歌单包含的歌曲ID,每个歌曲id用逗号分隔,分别取出到歌曲表查询相关信息
10 个月之前 回复

感觉用存储过程好一点吧

0
qq_41812457
qq_41812457 能细致的描述下么
10 个月之前 回复

字符串的分隔没有想到优化方案,但是分隔后的查询可以使用多线程,应该可以优化一部分

0

首先将这么大的字符串放在一个字段里肯定是有问题的,像你说的一个字符串有4G,如果jvm堆内存有8G,两个并发就能内存溢出。
放在文件系统中更合适,数据库只存储文件的路径或URI,这样在处理字符串就可以边读取边解析。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
算法导论 — 思考题15-9 字符串拆分
(字符串拆分)某种字符串处理语言允许程序员将一个字符串拆分为两段。由于此操作需要复制字符串,因此要花费nnn个时间单位来将一个nnn个字符的字符串拆分为两段。假定一个程序员希望将一个字符串拆分为多段,拆分的顺序会影响所花费的时间。例如,假定这个程序员希望将一个20个字符的字符串在第2个、第8个及第10个字符后进行拆分(字符由左至右,从1开始升序编号)。如果她按由左至右的顺序进行拆分,则第一次拆分花...
JAVA - split: 将字符串分割成数组
利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: java.lang.string.split split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。 stringObj.split([separator,[limit]])  stringObj 必选项。要被分解的 String 对象或文字,
算法导论 思考题 15-9(字符串拆分)
1
算法导论之动态规划 字符串拆分问题
某种字符串处理语言允许程序员
Java中大数字运算
      在Java中提供了大数字的操作类,即java.math.BigInteger类与java.math.BigDecimal类。这两个类用于高精度计算,其中BigInteger类是针对大整数的处理类,而BigDecimal类则是针对大小数的处理类。 1.BigInteger BigInteger支持任意精度的整数,也就是说在运算中BigInteger类型可以准确表示任何大小的整数值而不...
Java 字符串 之 字符串拆分
http://www.verejava.com/?id=16993035923688/** 6. 字符串的拆分 1. String[] split(String regex) 将字符串以 regex 拆分成数组 */ import java.util.Scanner; public class TestString5 { public static void main(String[] a...
java 将字符串拆分成块装数组
split 将字符串拆分 regex=???,根据???以其为界进行拆分。 public String[] split(Stringregex) 根据给定正则表达式的匹配拆分此字符串。 该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。 例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果: ...
使用 java 拆分字符串和拼接字符串
1.拆分字符串 String [] tempName ; List<String>mlistName  = new ArrayList<>(); mNames = "dasjdask,dasjdsahdsa,dsdsahadsh,dsah,dasasdasd,adssadadsfw”  tempName = mNames.split(",");   //把集合转化为...
2019中山大学推免生复试保研复试机试真题
2019中山大学推免生复试保研复试机试真题
Java字符串拆分问题
今天敲码,遇到一个比较蛋疼的问题。 这样,运行起来,控制台没有任何输出! 去网上查了下,才晓得字符串以"."拆分,"."需要转义!需要这样写:
JAVA 字符串分割split 的用法注意
对字符串"mysql.ip"进行分割,并取得首字 首先想到使用split通过"."进行分割,返回字符串数组,再 获取数组的第一个元素 因此代码执行String s=new String("mysql.ip"); String a[] = s.split("."); System.out.println(a[0]);执行后,系统抱错提示数组越界,跟踪后发现s.split生成的数组长度是0 查阅
Shell中大括号“{}”的使用方法
Shell中大括号"{}"的使用 一. 扩展 {. .}自动补全 、{, , ,} {. .}自动补全 (1) echo {1. .5}会将1,2,3,4,5都打印出来( “. .”自动补全)。 (2) touch class1_linux{1. .5}分别创建class1_linux1, class1_linux2, class1_linux3, class1_linux4, class...
Java中字符串按照某个字符拆分为字符数组
package com.tedu.http; public class ee { public static void main(String[ ] args) { String str="比如说这个吧!就是这个了"; String [ ] line=str.split("!"); for(String s:line) { System.out.println(s); } } }
java 拆分与合并字符串
 例如:一个字符串:123fsf夺 改后要为:1%2%3%f%s%f%夺代码如下           String a="123fsf夺";            char[] b=a.toCharArray();//字符串拆分成字符            String bb = "";           //字符合并成字符串  
日期字符串拆分算法
日期字符串拆分算法的java类: package com.paic.lbdp.intf.base.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.D...
Java 字符串拆分
String类提供了split()方法,将一个字符串分割为子字符串,结果作为字符串数组返回 public class Lyric { public static void main(String[] args) { String words="长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山"; String[ ] pri...
Java字符串拆分
public class Shiyan {  public static void main(String args[]) {   String s1 = "abc de.f gAB CDE FGH";   String str1[] = s1.split(" |\\.");   for (int i = 0; i    System.out.println(str1[i]);
java字符串拆分
我有一字符串类似这样子:rn"1 10 57417907 ZZ21772A INTERMEDIATE 772A"rn我现在要分开来取出放在一个数组里,请问如何分?
字符串拆分-Java
方法一、    Java代码   String str = "1,2,3,4,5,6"       public int[] StringtoInt(String str) {          int ret[] = new int[str.length()];           StringTokenizer toKenizer = new Stri
Java实现大整数相加
static int N=100; static int a[]=new int[N]; static int b[]=new int[N]; static int c[]=new int[N+1]; static String s1; static String s2; /** * @param args */ public static void
关于URL大小写问题
关于URL大小写的问题,不同平台的处理不同:Mac OS X 默认的文件系统(HFS case-insensitive) 是不分大小写的,Windows 上的 NTFS 也是,而 Linux 系统常用的 ext3/4 则是需要区分大小写的; 最近代码中,有设置与文件不对应的问题,尤其是ModelAndView中设置的文件: 如: 文件名为 CustInfo.vm ModelAndView vm =...
labview字符串拆分到数组 支持中文1
labview字符串拆分到数组 支持中文
深入分析S3C2440启动代码中大小端问题.pdf
深入分析S3C2440启动代码中大小端问题.pdf.
java中大小写的判断总结
在java中是严格区分大小写的,这一点也和C语言一样 基本的规则 1,项目名全部小写 2,包名全部小写 3,类名首字母大写,如果有多个单词,每个单词的首字母都需要大写 例如:public class HelloWord{}; 4,变量名,方法名首字母小写,如果由多个单词组成,第一个单词的首字母小写,从第二个单词的首字母开始每个单词的首字母都需要大写。 例如:int max=0;//变量
JAVA中大整数的的一些函数的使用
public class BigInteger extends Number 不变的任意精度的整数。 在所有的操作中 BigIntegers 看起来好象是用二进制补码(类似 Java 的基本整数类型)表示的 。BigIntegers 提供类似于所有 Java 基本整数操作符和来自 java.lang.Math 的所有相关静态方法。 此外, BigIntegers 还提供模算术操作, GCD
字符串拆分成数组 split()
var a ="fdgrgvafdvr"; var b = a.split("");
Java正则解析命令行中大括号中的命令
Java利用正则解析命令,命令中有大括号
java拆分字符串
public class StringSpilt{ public static void main(String args[]){ String str="07,04"; String delim="," StringTokenizer st = new StringTokenizer(str,delim); while (st.hasMoreTo...
CCF认证 201903-1小中大
欢迎访问我的CCF认证考试题解目录哦 https://blog.csdn.net/richenyunqi/article/details/83385502 题目描述 C++代码 #include<bits/stdc++.h> using namespace std; int main(){ int n,a; vector<int>v; scanf(...
java输入一个字符串,然后分割出内部的各个部分
String[] arr=str.split("");         System.out.println(Arrays.toString(arr));         //筛选数据         List list=Arrays.asList(arr);         Iterator iter=list.iterator();         //放入新集合中       
java常用类练习09(拆分日期、给定随机字符串判断有多少个数字和字母)
请根据控制台输入的特定日期格式拆分日期 如:请输入一个日期(格式如:月日**年) 经过处理得到:*年月*日 提示:使用String的方法indexOf、lastIndexOf、substringpackage
字符串拆分问题
有如下字符串(FL_M1-MF-SRS-02|FL_M1-MF-SRS-03)&FL_M1-MF-GT-02&FL_M1-MF-SJQ-01 rn要把它拆分成数组 (,FL_M1-MF-SRS-02,|,FL_M1-MF-SRS-03,),&,FL_M1-MF-GT-02,&,FL_M1-MF-SJQ-01 rn这几个特殊字符有可能3个连续出现rn我写到这写不下去了 rnpackage com.excel.common;rnrnimport java.io.*;rnrnimport jxl.*;rnimport jxl.read.*;rnimport jxl.read.biff.BiffException;rnimport jxl.write.*;rnimport java.util.*;rnpublic class ModifyExcle rnrn public static void main(String[] args) rnrn try rn Workbook wb = Workbook.getWorkbook(new File("c:\\test.xls"));rn Sheet sheet = wb.getSheet(0);rn Cell cell1 = sheet.getCell(0, 0);rn String result = cell1.getContents();rn String res = result.replaceAll(" ", "");rn System.out.println(res);rn char[] str = '(', ')', '!', '&', '|' ;rn ArrayList al =new ArrayList();rn for (int i = 0; i < res.length(); i++) rn for (int j = 0; j < str.length; j++) rn if (res.charAt(i) == str[j]) rn al.add(i);rnrn rn rn rn rn for(int i=0;i
动态规划之字符串拆分
某种字符串处理语言允许程序员将一个字符串拆分为两段。由于此操作需要复制字符串,因此要花费n个时间单位来将一个n个字符的字符串拆为两段。假定一个程序员希望将一个字符串拆分为多段,拆分的顺序会影响所花费的总时间。例如,假定这个程序员希望将一个20个字符的字符串在第2个,第8个以及第10个字符后进行拆分(字符由左至右,从1开始升序编号)。如果她按由左到右顺序进行拆分,则第一次拆分花费20个时间单位,第二
字符串拆分问题?
请教一下,要把字符串AA7822110090分割成AA:78:22:11:00:90,以及把AA:78:22:11:00:90拆分成AA7822110090,如何做最简单?
字符串拆分的问题????
CString m_str="filename1:a.txt\r\nfilename2:b.txt\r\nfilename3:c.txt\r\n"rn希望根据字符串的规则拆分出以下的三个变量:rnCString m_filename1="a.txt";rnCString m_filename2="b.txt";rnCString m_filename3="c.txt";rn
操作string字符串,拆分和截取
string  str="1,2,3,4,"; 现在将字符串的最后一个“,”去掉 如下:str=str.Remove(str.LastIndexOf(","),1); Remove(): Remove(intdex)   -从指定位置到最后位置的所有字符 Remove(starIndex,lastIndex)-从指定位置开始删除指定数目的字符 待补充 Replace():
Java编程基础-用指定的字符串将一个长的字符串分割成字符串数组
利用split方法分割字符串
字符串拆分的问题
$abc="abc|1,few|4,ews|9,gjk|3";rnrn请问上边的字符串如何转成以下形式的数组?rnrn$fe=Array([abc]=>Array([0]=>1) [few]=>Array([0]=>4) [ews]=>Array([0]=>9) [gjk]=>Array([0]=>3));
字符串拆分的问题????????
CString m_str="filename1:a.txt\r\nfilename2:b.txt\r\nfilename3:c.txt\r\n"rn希望根据字符串的规则拆分出以下的三个变量:rnCString m_filename1="a.txt";rnCString m_filename2="b.txt";rnCString m_filename3="c.txt";rn
字符串拆分问题?
字符串如下:rnrnm_List[0][0] = new Array(0,14414,"两级人民代表大会选举实施","","2007.03.28","1980.07.10","01","",0,0);rnrnm_List[0][1] = new Array(1,17899,"会关于修改的决定","","2007.03.28","2007.03.28","01","",0,0);rnrnm_List[0][2] = new Array(2,16923861,"人民代表大会代表程序的规定","","2007.03.28","2007.03.28","01","",0,0);rn......rnm_List[0][345] = new Array(2,167896,"人民代表大会","","2007.03.28","2007.03.28","01","",0,0);rnrnrn我想得到上面每条记录的所有字段值(例如第一条中的:0、14414、两级人民代表大会选举实施。。。。),并把这些值插入到数据库中,我应该怎么拆分这么字符串?大家帮忙谢谢!
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 机器学习中大大数据 学习java的问题