stringbuilder

ClassWriter COMPUTE_FRAMES in ASM

匿名 (未验证) 提交于 2019-12-03 00:57:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I've been trying to understand how stack map frames work in Java by playing around with jumps in ASM. I created a simple method to try some things out: (disassembled with Krakatau): L0: ldc 'hello' L2: astore_1 L3: getstatic Field java/lang/System out Ljava/io/PrintStream; L6: new java/lang/StringBuilder L9: dup L10: invokespecial Method java/lang/StringBuilder <init> ()V L13: ldc 'concat1' L15: invokevirtual Method java/lang/StringBuilder append (Ljava/lang/String;)Ljava/lang/StringBuilder; L18: aload_1 L19: invokevirtual Method java/lang

Write StringBuilder to Stream

断了今生、忘了曾经 提交于 2019-12-03 00:54:40
What is the best method of writing a StringBuilder to a System.IO.Stream? I am currently doing: StringBuilder message = new StringBuilder("All your base"); message.Append(" are belong to us"); System.IO.MemoryStream stream = new System.IO.MemoryStream(); System.Text.ASCIIEncoding encoding = new ASCIIEncoding(); stream.Write(encoder.GetBytes(message.ToString()), 0, message.Length); Don't use a StringBuilder, if you're writing to a stream, do just that with a StreamWriter : using (var memoryStream = new MemoryStream()) using (var writer = new StreamWriter(memoryStream )) { // Various for loops

Format name in title case Java help please?

匿名 (未验证) 提交于 2019-12-03 00:45:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: so i have to write a java code to : Input a name Format name in title case Input second name Format name in title case Display them in alphabet order i know that The Java Character class has the methods isLowerCase(), isUpperCase, toLowerCase() and toUpperCase(), which you can use in reviewing a string, character by character. If the first character is lowercase, convert it to uppercase, and for each succeeding character, if the character is uppercase, convert it to lowercase. the question is how i check each letter ? what kind of variables

Object类、Date类、Calendar类、常用API、可变参数编程 【学习笔记】

匿名 (未验证) 提交于 2019-12-03 00:42:01
一、Object类 1.toString()方法 重写前:调用的是Object类中的方法。输出的是对象的全类名@十六进制的地址值 重写后:调用的是本类重写后的方法。输出的是属性或者内容 2.equals()方法 重写前:调用的是Object类中的方法。依赖的是==号。比较是引用数据类型,那么就是比较地址值。 重写后:调用的是本类重写后的方法。比较的就是对象的属性值是否一样。 3.Objects类中的equals()方法 好处:加了一些健壮性和非空性的判断 示例代码: public class Demo03Objects { public static void main (String[] args) { String s1 = "abc" ; //String s1 = null; String s2 = "abc" ; //boolean b = s1.equals(s2); // NullPointerException null是不能调用方法的,会抛出空指针异常 //System.out.println(b); /* Objects类的equals方法:对两个对象进行比较,防止空指针异常 public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b

维吉尼亚密码

匿名 (未验证) 提交于 2019-12-03 00:40:02
代码已上传到 GitHub ―― Vigenere.java 人们在恺撒移位密码的基础上扩展出多表密码,称为维吉尼亚密码。该方法最早记录在吉奥万・巴蒂斯塔・贝拉索( Giovan Battista Bellaso)于1553年所著的书《吉奥万・巴蒂斯塔・贝拉索先生的密码》 第一行代表明文字母,第一列代表密钥字母,它的明码表后有26个密码表,每个表相对前一个发生一次移位 如果只用其中某一个进行加密,那么只是简单的恺撒移位密码。但用方阵中不同的行加密不同的字母,它就是一种强大的密码了 加密者可用第7行来加密第一个字母,再用第25行来加密第二个字母,然后根据第8行来加密第三个字母等 维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计 确定密钥 首先,和消息接收方需要在密钥上达成一致,加密解密都是同一个密钥,比如选用 BIG 排列明文 把明文转换为大写字母排列出来,对应着重复排列密钥,直到明文结尾 明文:THE BUTCHER THE BAKER AND THE CANDLESTICK MAKER 密钥:BIG BIGBIGB IGB IGBIG BIG BIG BIGBIGBIGBI GBIGB 1 2 加密明文 然后,每一组的两个字母就成了我们的坐标。在维吉尼亚坐标图中分别横向纵向找出它们。横坐标和纵坐标的交点就是加密后的字母

String StringBuilder 与StringBuffer的区别

匿名 (未验证) 提交于 2019-12-03 00:26:01
String 是字符串常量,一旦定义就无法改变,String str = "abc" , str = "a" ;System.out.println(str) str = "a",表面看str 是改变了,其实并不是。首先str 指向 “abc” ,之后创建一个字符串"a",将str指向“a”。其实“abc”并没有改变。 StringBuilder 与StringBuffer是可变字符串,可以用append()方法在后面添加字符。 StringBuilder 与 StringBuffer的区别 : StringBuilder效率高,线程不安全。StringBuffer线程安全,效率低于StringBuilder. 拼接两个字符串我们会用+号 ,append(),concat() ;+号一般效率是最低的 。 用 + 号拼接字符串为什么效率最低呢?那是因为用加号拼接字符串时,会首先建立一个临时的StringBuilder对象,然后这个对象调用append()方法将要串联的字符串拼接起来。最后调用toString方法返回String. 即 String s = "a" + "b"; 等效于 : StringBuilder s = new StringBuilder() ; s = s.append("a").append("d");s = s.toString; 转载请标明出处:

JAVA 8学习笔记-第三章

谁说我不能喝 提交于 2019-12-03 00:00:00
CHAPTER 3 CORE JAVA APIs API: Application Programming Interface, can be a group of classes or interface definitions that gives you access to a service or functionality. String and StringBuilder are used for text data . An array and an ArrayList are used when you have multiple values . 1. Strings A string is basically a sequence of characters. String s = "fluffy";  //doesn't need to be instantiated with new 1) Concatenation   - If both operands are numeric, + means numeric addition.   - If either operand is a String, + means concatenation.   -The expression is evaluated from left to right.

StringBuilder线程为什么不安全

匿名 (未验证) 提交于 2019-12-02 23:56:01
我们要知道StringBuilder和StringBuffer的内部实现跟String类一样,都是通过一个char数组存储字符串的,不同的是String类里面的char数组是final修饰的,是不可变的,而StringBuilder和StringBuffer的char数组是可变的。 首先通过一段代码去看一下多线程操作StringBuilder对象会出现什么问题 我们能看到这段代码创建了10个线程,每个线程循环1000次往StringBuilder对象里面append字符。正常情况下代码应该输出10000,但是实际运行会输出什么呢? 1、为什么输出值跟预期值不一样 我们先看一下StringBuilder的两个成员变量(这两个成员变量实际上是定义在AbstractStringBuilder里面的,StringBuilder和StringBuffer都继承了AbstractStringBuilder) 再看StringBuilder的append()方法: 我们先不管代码的第五行和第六行干了什么,直接看第七行,count += len不是一个原子操作。假设这个时候count值为10,len值为1,两个线程同时执行到了第七行,拿到的count值都是10,执行完加法运算后将结果赋值给count,所以两个线程执行完后count值为11,而不是12

String,StringBuffer,StringBuilder区别(笔记)

女生的网名这么多〃 提交于 2019-12-02 23:27:37
String类被final修饰,创建的对象为不可变对象,属于字符串常量。 而StringBuffer与StringBuilder创建的属于字符串常量。 StringBuffer的方法大多用了Synchronized关键字修饰添加了同步锁。而StringBuilder没有。 所以StringBuffer是线程安全的而StringBuilder是线程不安全的。 由于String的对象属于不可变对象,所以在一些情况下对其操作会产生许多无用的中间对象,如拼接截取和替换, 如果频繁地操作会对性能有所影响。当内存里的无用对象多了以后,JVM的GC就会开始工作,速度是非常慢的。 StringBuffer与StringBuilder对比,前者线程安全后者线程不安全。所以多线程情况下,若有大量的字符串操作,应 使用StringBuffer。若为单线程,由于StringBuilder没有加锁,而StringBuffer加了许多同步锁,每次操作都得判断锁, 所以效率没有StringBuilder高。但对字符串有大量操作时,StringBuffer和StringBuilder都是比String快的。 总结: 若并没有大量字符串操作则使用String。否则根据线程情况, 若为单线程,则使用StringBuilder;若为多线程,则使用StringBuffer。 来源: https://www.cnblogs

在线编辑器(WangEditor)

匿名 (未验证) 提交于 2019-12-02 23:03:14
  自己之前写了一篇关于POI 相关的博客, 想了想在公司中一般常用的不就是上传下载,poi,分页,定时等。好像还有个在线编辑器, 于是自己就花了两个多小时把编辑器相关的代码撸了遍,当然了是先百度找了找资料,看了看实现的逻辑,然后自己撸的。 编辑器自己使用的是WangEditor,网上也有很多关于Editor,kindEitor 的文章, 不过貌似好像没用。业务方面:在编辑器中编辑, 然后保存为word,或者将word中的内容加载进在线编辑器中再次编辑。效果图:             editor.txt.html() 会将在编辑器中编辑的内容获取,然后你直接将其传入后台便可以获取到编辑器中编辑的内容。   当你使用编辑器编辑并保存后,会在指定的保存位置生成一个word,txt文件夹和一天个htm文件。txt文件夹中是txt文件。txt文件和htm文件都是自动生成的。其中txt文件里是HTML中的标签语言,当你要将word中的内容加载进编辑器再次编辑时,获取的内容是相对应的txt文件中的内容。htm文件只有一个,是刚使用用WangEditor创建word成功后生成的,其就是个HTML文件,其中的标签, 属性对应的都是编辑器中展示的模样。当你保存生成word时,是先读取htm中的内容,将${content}替换成你编辑的内容,样式什么的htm文件中模板原先就有。