- 博客(350)
- 资源 (21)
- 收藏
- 关注
原创 再一篇相当中肯的文字
靠理想滋养人生,靠现实养育生活。公司新年第一次全体会议,大家的期待中也有公司今年对员工福利待遇的目标是什么。在公司蒸蒸日上的事业发展中,员工能够分享到多少真正的实惠,员工利益与公司发展是否能够挂上钩。职位目标量化——寻找努力的方向在去年的劳动协议签订中,被告知职位与工资挂钩的说法(“……这是工资调整的唯一途径”)。那如何努力能够得到职位的晋升呢?职位的要求是什么,如何量化考核的呢?员工...
2020-02-12 10:11:21
1710
4
转载 那些出现在电影中的程序代码
高科技无关的电影也偶尔会出现一些跟计算机相关的镜头。文本搜罗的是在各种电影中出现过的代码,它们有的是黑客脚本,有的是绝密文件,有的就是为了摆酷,文中对这些代码都有截屏,你是否能看出它们是什么语言? 一、《钢铁侠》,c语言电影《钢铁侠》 最近我重新看了一遍《钢铁侠》,发现了一些有趣的事情。在钢铁侠的人工心脏第一次“初始化启动”期间,在那个“恐怖分子”的洞穴里,一些长长短短的C
2015-07-13 15:29:11
20224
原创 Java:serialVersionUID
版本控制:反序列化时,JVM 会检查存储的 serialVersionUID 与当前类的 serialVersionUID 是否一致。在序列化时,serialVersionUID 会被写入序列化数据;值的选择:serialVersionUID 可以是任意 long 值(通常为正整数),建议使用有意义的数字(如基于类名或时间戳生成),以增强可读性。版本管理:类结构变更时(如添加/删除字段),更新 serialVersionUID(例如从 1L 改为 2L),以明确版本变化。// 显式声明版本号。
2025-12-11 11:08:42
137
原创 Java:SuperClass
在子类中,使用@Override注解(虽然这不是强制的,但强烈推荐使用,因为它可以帮助编译器检查你是否正确地覆盖了方法)来声明你想要覆盖的方法。在Java中,当有一个类继承自另一个类,并且想要快速地为子类增加覆盖(override)的方法,遵循以下步骤。假设我们有一个Animal类和一个Dog类,我们想要在Dog类中覆盖Animal类的makeSound()方法。IDE将自动生成这些方法的框架代码在你的子类中。一旦你在子类中覆盖了方法,你就可以创建子类的实例并调用这个方法,它将执行子类中定义的版本。
2025-12-11 11:07:02
162
原创 SHA1校验文件
SHA1是一种哈希算法,通过计算文件的哈希值(160位散列码)来验证文件完整性。文件内容的任何改动(哪怕一个字节)都会导致。OpenHashTab:安装后右键文件 → 属性 → 查看SHA1值。下载文件后,计算SHA1值并与官方提供的校验值对比。若一致,文件完整无误。7-Zip:解压时自动进行CRC校验(间接验证完整性)Get-FileHash 文件名 -Algorithm SHA1。SHA1已存在安全漏洞,建议优先使用SHA256。不一致:说明文件已被篡改或损坏。一致:说明文件未被修改。
2025-12-10 12:03:58
84
原创 Jackson:忽略字段被序列化
如果你确实想通过 SerializationFeature 来控制,可以考虑使用 WRITE_DATES_AS_TIMESTAMPS 等特征,但这与控制空值输出不直接相关。对于空值控制,建议使用前述的方法。在使用 Jackson 库进行 JSON 序列化时,有时可能会遇到输出中包含很多不必要的空值(例如,"key": null)的情况,尤其是在处理可选字段或者使用了某些特定的序列化策略时。你可以使用 @JsonInclude 注解来指定哪些值应该被包含在 JSON 输出中。
2025-12-10 10:43:59
327
原创 Jackson:SerializationFeature
在Java中,使用Jackson库进行序列化时,SerializationFeature是一个非常重要的类,它允许你控制序列化的行为。当设置为true时,枚举类型会被序列化为它们的字符串表示(即调用toString()方法)。当设置为true时,输出的JSON会被格式化,每个层级缩进,使JSON更易读。当设置为true时,枚举类型会被序列化为它们的索引位置(即ordinal)。当设置为true时,如果序列化的对象没有任何可序列化的属性,则会抛出异常。当设置为true时,日期会被序列化为时间戳(即毫秒值)。
2025-12-10 10:26:46
218
原创 Java:Jackson库序列化对象
如果你的类中包含日期类型,Jackson可能无法直接序列化这些日期,这时你可以使用@JsonFormat注解来指定日期的格式。在Java中,使用Jackson库来序列化对象为JSON字符串。Jackson是一个非常流行的JSON处理库,它提供了一系列的功能来处理JSON数据。确保所有的字段都是公开的或者有相应的getter方法,以便Jackson能够访问它们。首先,确保你的项目中已经添加了Jackson的依赖。以上就是使用Jackson库将Java对象序列化为JSON字符串的基本方法。
2025-12-10 10:21:18
191
原创 Java:字段顺序保持不变
例如,你可以用它来确保属性名的一致性,同时使用@JsonPropertyOrder来控制顺序。在Java中,将对象转换为JSON字符串时,默认情况下,字段的顺序可能会因为Java对象的内部表示(比如HashMap的无序特性)而变得不确定。最简单和最直接的方法是使用@JsonPropertyOrder注解,它允许你直接在类级别指定字段的序列化顺序。这种方法简单且易于维护。这个注解可以应用于类上,用来指定字段的顺序。如果需要更复杂的控制,比如根据某些运行时条件来决定字段的顺序,可以创建一个自定义的序列化器。
2025-12-10 09:17:40
207
原创 Java:类(Class)的构造函数(Constructor)
在Java中,类(Class)的构造函数(Constructor)是一种特殊的方法,它的名称与类名完全相同,并且它没有返回类型(即不返回任何值)。// 使用第一个构造函数创建对象。如果你不定义任何构造函数,Java编译器会自动为你生成一个默认的无参构造函数。// 第二个构造函数,带三个参数,新增了address属性。// 第一个构造函数,带两个参数。// 带参数的构造函数。(2)带参数的构造函数。
2025-12-10 09:13:43
272
原创 Oracle:计算小数年龄
首选方法:使用 months_between(sysdate, birth_date) / 12 直接得到小数年龄,这是Oracle中最标准的做法。在Oracle数据库中,计算小数年龄(即精确到小数点后的年龄,考虑月份和天数)可以通过日期函数实现。注意:如果出生日期的月份和日期尚未到来(如当前是3月,生日是4月),此方法会自动向下取整,符合年龄计算逻辑。关键函数:months_between 是核心,它自动处理日期计算的复杂性(如不同月份的天数差异)。sysdate 获取当前系统日期。
2025-12-09 15:41:59
394
原创 Oracle:Replace
这个例子中,[abc]是一个字符类,匹配任何一个列出的字符('a'、'b'或'c'),而管道符(|)在这里用来分隔不同的替换模式是不正确的。如果你想一次性替换多个字符,你可以使用正则表达式的管道符(|)来分隔不同的字符。在这个例子中,我们首先将所有的'a'替换为空字符串,然后将结果中的所有'b'也替换为空字符串。在Oracle数据库中,如果你想使用REPLACE函数来将多个字符替换为空字符串,你可以通过嵌套REPLACE函数或者使用正则表达式来实现。方法2:使用正则表达式(Oracle 10g及以上版本)
2025-12-09 15:37:10
214
原创 Java:类的前20个字段转换为Json
for (Map.Entry<String, JsonElement> entry : sortedJson.entrySet()) { // 遍历Map中的字段并添加到新的JsonObject中,直到达到20个字段为止。// 创建一个新的JsonObject来存储前20个字段的JsonElement对象。// 输出结果JSON对象,只包含前20个字段。if (jsonNode.size() < 20) { // 只添加前20个字段。if (count < 20) { // 只添加前20个字段。
2025-12-09 14:09:06
344
原创 Java:解码Base64字符串为字节数组
/ 例如,编码后的"Hello World!// 例如,编码后的"Hello World!如果你需要将解码后的字节数组转换为字节流(例如,InputStream),你可以使用ByteArrayInputStream类。// 示例:读取并打印InputStream的内容(可选)// 将字节数组转换为InputStream。// 假设这是你的Base64编码的字符串。// 假设这是你的Base64编码的字符串。// 使用Base64解码为字节数组。// 使用Base64解码。// 输出解码后的字节数组。
2025-12-09 13:58:35
269
原创 Java:Foreach语法糖
如果你需要在foreach循环中提前退出循环,你应该使用一个普通的for循环或者使用迭代器(Iterator)。注意,上面的anyMatch示例并不会真正提前终止流,因为anyMatch会在找到第一个匹配项后停止,但这并不影响已经处理过的元素。如果你需要完全控制何时停止处理流中的元素,你应该使用传统的循环或迭代器。.limit(list.indexOf("b") + 1) // 限制流到"b"元素出现的位置(或更少)// 打印到"b"为止的元素。// 当元素等于"b"时跳出循环。1、使用普通for循环。
2025-12-09 13:55:51
220
原创 C#:foreach
在上面的代码中,即使numbers是一个空的List<int>,foreach循环也会正常执行,并且在尝试打印任何元素之前结束循环。在C#中,在foreach循环中使用List,通常不需要显式地检查List是否为空,因为在尝试遍历一个空的List时,foreach循环会安全地处理这种情况,不会抛出异常。这种方式提供了额外的控制,特别是在处理可能为null的集合时,或者在你想在循环之前执行一些特定操作时非常有用。然而,对于普通的遍历操作,直接使用foreach是更简洁和常见的方法。
2025-12-08 15:40:35
223
原创 在C#中,string和String
string:C#语言的关键字,是System.String的别名。String:.NET Framework中的类名(System.String),在C#中直接使用时需注意命名空间冲突。功能等价:string和String在功能上无差异,但string更符合C#语法规范。性能优化:频繁修改字符串时,优先使用StringBuilder。优先使用string:符合C#语法风格,代码更简洁易读。
2025-12-08 14:38:09
301
原创 C#和Java的String
Java:== 比较引用(地址相等),equals() 比较值(内容相等);C#:== 比较字面量(值相等),Equals() 也用于值比较;// s2 是新对象,s1 未变。C#:使用 string(小写)作为字符串类型,但 String(大写)也是其类名。Java:使用 String(大写)作为字符串类型,string(小写)无效。Java:字符串常量池(字符串常量共享)。C#:字符串驻留机制(字符串常量共享)。
2025-12-08 14:35:04
723
原创 C# 中的 dynamic 类型
1、编译时与运行时行为:dynamic 变量在编译时被视为静态类型(类似 object),但所有操作(如方法调用、属性访问)的类型检查和成员解析都在运行时完成。类型安全性:由于类型检查延迟,错误可能在运行时才暴露,增加调试难度。2、 重载决策延迟:当方法调用的参数或接收方类型为 dynamic 时,重载决策在运行时进行。性能开销:dynamic 的运行时检查会带来性能损失,通常低于静态类型。// 整数转换为 dynamic。隐式转换:任何类型都可以隐式转换为 dynamic,反之亦然。
2025-12-08 10:22:53
282
原创 C#:$ 符号
在C#中,$ 符号用于字符串内插(String Interpolation),这是一种简洁、可读性更高的方式来拼接字符串和表达式。可读性更高:相比传统的 string.Format(),内插语法更直观易懂。适用场景:日志输出、动态SQL构建、用户消息生成等需要频繁拼接字符串的场景。内插字符串可以包含任何有效的C#表达式,如计算、方法调用等。创建内插的逐字字符串,适用于多行文本或SQL语句,同时保留换行和转义字符。在字符串字面量前加上 $ 符号,即可将该字符串标识为内插字符串。
2025-12-08 10:15:56
507
原创 C#中解析JSON数组
在C#中解析JSON数组,通常我们会使用Newtonsoft.Json(也称为Json.NET)库,这是.NET环境中处理JSON数据的流行选择。,可以像访问对象属性那样访问JSON中的键值对,而不必事先定义一个类。然而,使用匿名类型通常不如使用专门定义的类来得安全和类型安全。在可能的情况下,推荐使用专门的类来映射JSON结构。然后,使用JsonConvert.DeserializeObject方法来解析JSON数组。首先,定义一个C#类,这个类的属性与JSON对象的键相匹配。步骤2:解析JSON数组。
2025-12-08 10:10:54
703
原创 C#:Dictionary类型数组
/ 示例:第一个位置存储一个字典,第二个为null或另一个字典等。// 示例:向第一个字典添加元素。// 示例:向第一个字典添加元素。// 初始化字典数组的每个元素。
2025-12-05 16:55:03
416
原创 Java:list<map<string,sting>>与C#互操作
C# → Java:反向操作,将C#的List<Dictionary<string, string>>序列化为JSON,Java端反序列化为List<Map<String, String>>。反序列化为List<Dictionary<string, string>>:使用Newtonsoft.Json(Json.NET)库。// 转换为JSON。C#中的Dictionary<string, string>对应Java的Map<String, String>。// 从Java端接收的JSON字符串。
2025-12-05 16:11:23
299
原创 Java:List<Map<String, String>>转换为字符串
在Java中,如果你有一个List<Map<String, String>>类型的对象,并希望将其转换为一个单一的字符串,有几种不同的方法可以实现这一需求。List<Map<String, String>> list = // 初始化你的列表。List<Map<String, String>> list = // 初始化你的列表。如果你希望得到一个JSON格式的字符串,可以使用如Gson或Jackson这样的库来序列化你的数据。方法2:使用Gson或Jackson库进行序列化(适用于更复杂的JSON格式)
2025-12-05 16:02:21
438
原创 Java String[] 数组的 contains
适用于对象数组(如 String[]),不支持基本类型数组(需转换为包装类), 若需处理基本类型数组(如 int[]),需先转换为包装类数组(如 Integer[])。适用于无序数组,通过将数组转换为 List 后调用 contains() 方法实现。适用于 Java 8+,通过流式操作检查数组中是否存在匹配元素。空字符串:任何数组都包含空字符串 ""。适用于 有序数组,通过二分查找提高效率。适用于 无序数组,通过循环逐个比较元素。若数组未排序,结果不可靠。时间复杂度 O(n)
2025-12-05 11:54:40
294
原创 Oracle:字段值中含有单引号
在Java中操作Oracle数据库时,如果字段值中包含单引号('),这可能会引起SQL注入的风险,尤其是在使用字符串拼接的方式来构建SQL语句时。创建PreparedStatement:通过调用Connection对象的prepareStatement()方法,传入SQL语句(此处使用?// 使用参数化查询。假设你有一个Oracle数据库,其中有一个表users,你想根据用户名(可能包含单引号)来查询用户信息。设置参数:通过PreparedStatement的setString()方法设置参数值,
2025-12-04 15:25:55
341
原创 Java:@SuppressWarnings
3为了最小化影响范围,建议将注解放置在最接近警告发生的位置(例如,直接在方法上标注,而不是在类上)。作用范围:如果在一个元素上标注了 @SuppressWarnings,其内部所有子元素也会继承该抑制规则。最佳实践:避免过度使用(如全局抑制所有警告),因为这可能掩盖潜在问题。unused:抑制未使用代码的警告(如未使用的局部变量)。(2)抑制多个警告:通过数组形式指定多个警告类型。(1) 抑制单个警告:例如,忽略未使用变量的警告。(3)抑制所有警告:使用 "all" 参数。
2025-12-04 14:45:41
166
原创 Oracle:数字转换为字符串
虽然通常不需要这样做,但在某些复杂的转换中,你可以先用 TO_NUMBER 将字符转为数字,然后再用 TO_CHAR 转回字符,但这样做实际上是多余的,直接使用 TO_CHAR 更为直接和高效。-- 直接将数字转换为字符串,后面加一个空字符串是为了确保结果是字符串类型。虽然这种方法不是专门用于数字到字符的转换,但它可以用于将数字与其他字符串连接。假设你有一个名为 employees 的表,其中有一个名为 salary 的数字列,你想将这个数字列转换为字符串。TO_CHAR 函数可以将数字转换为字符串。
2025-12-02 17:04:07
352
原创 Oracle:“列不能外部关联到子查询”
在Oracle数据库中,当你尝试在查询中引用外部列(即外部查询中的列)在子查询中,可能会遇到“列不能外部关联到子查询”的错误。在编写子查询时,不能直接引用外部查询的列,除非通过某种方式明确地将这些列作为参数传递或以其他方式关联。对于一些特定的场景,可以使用IN或EXISTS来替代子查询,这样可以避免直接在子查询中引用外部列。如果子查询非常复杂且需要频繁使用,可以考虑创建一个视图或物化视图来存储这个查询的结果。CTE允许你在查询开始之前定义一个临时的结果集,然后在主查询中引用这个结果集。
2025-12-02 17:02:26
785
原创 Oracle:Replace
注意:在Oracle中,通常不直接使用 dual 表进行字符串操作,而是在实际应用中生成或选择包含这些字符串的列或变量。假设你有一个名为 employees 的表,其中有一个名为 email 的列,你想将所有的 @example.com 替换为 @newcompany.com。如果你需要进行更复杂的字符串替换,比如基于正则表达式的模式匹配,可以使用 REGEXP_REPLACE 函数。substring_to_replace 是你想替换的子字符串。replacement_string 是用来替换的字符串。
2025-12-02 17:00:15
323
原创 Oracle中ROW_NUMBER() OVER()
Oracle中ROW_NUMBER() OVER()是窗口函数,用于为查询结果集中的每一行分配唯一序号,支持分组排序和全局排序。ROW_NUMBER() OVER([PARTITION BY 分组列] ORDER BY 排序列 [ASC|DESC])PARTITION BY:按指定列分组,未指定则对整个结果集排序。ROW_NUMBER():支持分组排序,为每行分配唯一序号。ORDER BY:定义排序规则(升序或降序)。ROWNUM:伪列,(3) 分组排名。3、与ROWNUM的区别。
2025-12-02 12:07:25
390
原创 Java中使用List传入Oracle的IN查询
Java中使用List传入Oracle的IN查询时,若元素数量超过1000会报错,需通过分组处理避免此限制。存储过程传参需确保Java对象与Oracle类型匹配(如NVARCHAR2对应String)。Oracle数据库对IN子句的元素数量有限制(最多1000个),超过时会抛出ORA-01795错误。避免直接使用大List的IN查询,优先分组或改用其他批量操作(如批量插入语句)。按固定分组数或每组元素数分割List,生成多个IN子句。(1)数组分组处理。(3) 存储过程传参。
2025-12-02 10:26:41
411
原创 Oracle CASE WHEN
示例:CASE WHEN salary > 10000 THEN '高管' WHEN salary BETWEEN 5000 AND 10000 THEN '高绩效' ELSE '普通' END。Oracle 23c新特性:支持逗号分隔的多值匹配,简化等值判断(如CASE salary WHEN 9000,12000 THEN '标准薪资')示例:CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END1。
2025-12-02 10:21:16
643
原创 XML解析器要求文档内容必须严格符合格式规范
MyBatis配置文件:在:ml-text[MyBatis]的:ml-text[XML映射文件]中,需特别注意<、>的转义或CDATA使用。XHTML/JSF场景:JavaScript代码嵌入XML时,需用<h:outputScript>包裹或转义特殊字符。示例:<、>、&等字符直接出现在文本中,未使用实体转义(如<、>、&)。1/、 未转义特殊字符。2/、标签未正确闭合。4/、验证XML结构。3/、 非法字符位置。1/、 转义特殊字符。3/、检查标签闭合。
2025-12-01 16:54:43
475
原创 Java中使用replaceAll()方法
System.out.println("日期格式转换: " + result5);System.out.println("非字母替换: " + result2);System.out.println("数字替换: " + result3);System.out.println("单词替换: " + result4);System.out.println("去数字: " + result1);// 1. 替换所有数字为空字符串(去数字)// 3. 替换连续的数字为单个星号。// 5. 使用分组和反向引用。
2025-11-29 14:55:14
254
原创 C#中的StartsWith
在实际开发中,可以结合EndsWith和Contains方法一起使用,提高字符串处理的效率。// 输出:False(区分大小写)Console.WriteLine(text.StartsWith("Hello"));// 输出:True。bool result = str.StartsWith("指定字符串");C#中的StartsWith方法用于检查字符串是否以指定的子字符串开头。返回布尔值(true/false)
2025-11-29 14:41:52
219
原创 Java中如何创建带有双引号的JSON字符串?
/ 输出: "This is a \"quote\" string"建议:在实际项目中优先使用Gson或Jackson等成熟JSON库,它们能自动处理所有特殊字符的转义,让代码更简洁可靠。在Java中创建带有双引号的JSON字符串,主要有两种方法:手动转义和使用JSON库。JSON语法要求:键名和字符串值必须使用双引号包裹6。库的优势:自动处理转义,避免手动错误。转义规则:字符串中的双引号需要用\"表示。\\\" 表示JSON值中的双引号。\" 表示字符串中的双引号。
2025-11-29 10:00:46
325
原创 Java: Json的键值双引号
在JSON格式中,键名和字符串类型的值都必须使用双引号(")包裹。这是JSON语法的基本要求,如果缺少双引号或使用单引号,都会导致解析错误。建议:使用Jackson库的ObjectMapper来序列化Java对象,它会自动为所有键和字符串值添加双引号,避免手动处理带来的错误。使用JSON库自动处理 - 推荐使用Jackson、Gson等库,它们会自动处理双引号的转义。
2025-11-29 09:57:23
208
原创 Java:将JSON字符串转换为对象列表
从fastjson 1.2.68版本开始,阿里巴巴推荐使用com.alibaba.fastjson2包中的类(例如JSON.parseObject()等),因为fastjson1在一些新版本中存在安全漏洞。如果你使用的是新版本,请参考fastjson2的文档进行操作。在Java中,使用JSONUtil(通常指的是com.alibaba.fastjson.JSON类的一部分,但不是标准库的一部分,而是在阿里巴巴的fastjson库中)来将JSON字符串转换为对象列表是一个常见的需求。2. 定义Java对象。
2025-11-28 16:48:11
333
原创 C#:<SubType>Component</SubType>
可视化编辑器关联:当SubType设为Component时,Visual Studio会使用可视化设计器打开文件(如WinForm窗体文件)。若设为Code,则使用代码编辑器。项目文件修改:在.csproj文件中,为<Compile>节点添加<SubType>Component</SubType>。类型冲突:避免与<SubType>Code</SubType>混淆,后者适用于纯代码文件。代码文件关联:确保文件扩展名(如.cs)与SubType匹配,否则可能无法正确识别。
2025-11-28 14:44:42
182
WinXP支持TLS-1.2
2025-03-17
ASN1_BER_DER_编码子集入门指南
2010-06-03
元数据的多角度透视——元数据的知识
2010-09-27
09-MapInfo-whitebook
2010-05-18
MapBasic中文参考手册
2010-05-25
TD-SCDMA网络优化指导书_第2分册指导原则
2010-05-26
基于mapx的网格维数算法设计与实现
2010-05-18
iOS技术框架及特性介绍
2011-07-13
VSS 使用手册(中文版)
2010-06-07
ASN.1探索《ASN.1 Communication between Heterogeneous Systems》
2010-06-03
VML系列教程
2012-04-20
openScale配置_Flex开源客户端
2010-10-19
flex企业开发介绍及应用
2010-10-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅