个人笔记5

2017-09-05 Map遍历取得key=value的entry

Map<String, String> map=new HashMap<>();
    map.put("1", "guyan");
    map.put("2", "gao");
    map.put("3", "fei");
    Set entrySet = map.entrySet();
    if(entrySet !=null){
        Iterator iterator = entrySet.iterator();
        while(iterator.hasNext()){
        //Object obj=iterator.next();
            Map.Entry<String, String> entry = (Entry<String, String>) iterator.next();
            String key = entry.getKey();
            System.out.println("key="+key);
            String value = entry.getValue();
            System.out.println("value="+value);
        }
    }

通过 iterator.next()可以获取key=value形式,实际就是entry的数据结构,强转为Map.Entry就可以进行获取key,获取value。
这里写图片描述
Entry为HashMap的内部类,它包含了键key、值value、下一个节点next,以及hash值,这是非常重要的,正是由于Entry才构成了table数组的项为链表。
这里写图片描述
HashMap在存储过程中并没有将key,value分开来存储,而是当做一个整体key-value来处理的,这个整体就是Entry对象。同时value也只相当于key的附属而已。在存储的过程中,系统根据key的hashcode来决定Entry在table数组中的存储位置,在取的过程中同样根据key的hashcode取出相对应的Entry对象。

参考相关资料:java提高篇:hashmap,博主对hashmap分析的很好,很有启发性。



2017-09-07 一个解决生产环境数据量大,查询缓慢地办法—sql加分页

查询缓慢的原因分析: 正常我们用分页控件来对查询条数多来进行分页,而后台的查询sql并没有任何分页控制。说白了就是分页的实现实际上是每次都是按条件查询全部,然后在返回页面时对数据进行了截取罢了。

因此这里只需要把sql也进行分页控制就可以实现每次就从数据库查询固定条数就返回,而不是查询全部。就解决了查询缓慢的问题。
针对不同的数据库,实现方式不同。但思路是一致的。就是从查询语句上进行限制。
1.mysql
在sql的最后加上limit nowpage,pagesize ,其中
nowpage:当前页是第几页的数据
pagesize:每页显示多少条数据

具体做法是在页面上除了分页控件外,另加上一个下拉控制每次查询多少条的控件,我们假设为200条,然后将这个值传给limit的pagesize。而nowpage则通过分页控件的nowPage*pageSize>pagesize来判断是否该翻页。假设分页控件是每页显示10条,当分页控件当前页为第三页,实际3*10=30<200,所以传给sql的nowpage还是第一页,即nowpage=1,当分页控件翻到第21页时,21*10>200,这时才会传到sql的nowpage=2.
这样。分页控件的查询总条数会一直是200条。从而让查询速度快起来。
2.DB2
db2中实现查询条数的方法有两种,一种是用ROW_NUMBER() OVER函数,另一种是用fetch 。
执行语句:select * from sp_express_com where branch="10"查询前20条数据

1.fetch用法

select * from sp_express_com where branch="10" fetch first 20 rows only  with ur

2.row_number()用法。

分解步骤
1.(select * from sp_express_com where branch="10" with ur)m
2.(select m.*,rownumber() over() as rownum from(...)m)temp
3.最终  select * from (...)temp where temp.rownum<=20 and temp.rownum>=0

一般的,用fetch来实现效率高,语句也更简单。
遇到的问题:我们为查询sql传参: 限制前多少条 时,老是报错,就是因为对应的参数并未赋值到sql的对应参数上。这时可以把#{} 改成 {}里面传的是原值,而没有区分是整数还是String。



2017-09-09 easyui框架下的查询页面,如何为查询框中加入下拉框-最大结果?效果如下:
这里写图片描述
页面部分代码如下图:
这里写图片描述


2017-09-12 jvm,jre,jdk的关系

jre(java运行环境),也就是java平台。所有java程序都要在jre下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可

jdk是程序开发者用来编译,调试java程序用的开发工具包。jdk的工具也是java程序,也需要jre才能执行,为了保持jdk的独立性和完整性,在jdk的安装过程中,jre也是安装的一部分,所以,在jdk的安装目录下有一个名为jre的目录,用户存放jre文件

jvm是jre的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的,jvm有自己完善的硬件架构,如处理器,堆栈,寄存器等,
还有相应的指令系统,java语言最重要的特点就是跨平台运行,使用jvm就是为了支持与操作系统无关



2017-09-13 解决: java中double类型转换成字符串自动格式化成科学计数法

问题描述:
double Amount=99999999.00
String Amou=Amount.toString();
这时Amou=9.9999E7;而不是99999999.00
问题分析:
    使用String.valueOf(Double d)方法来将double转换成String,而String.valueOf(Double)调用的是Double自身的toString()方法。这个方法的上面有段注释内容折磨说的:“如果数字大于107次方或者小于10的-3次方,就会使用科学计数法。”
    这个toString()方法在很多时候很适用,同时在很多地方也让很多人很头疼。想要避免这个问题,就要自己使用格式化类去重新格式化。最简单的使用DecimalFormat类去格式化,用这个可以很容易的得到不转换成科学计数法的字符串。
解决办法:
    //最多保留几位小数,就用几个#,最少位就用0来确定,注意如果小数点后显示位数如果小于数据小数点后的位数,就会四舍五入。
    DecimalFormat df = new DecimalFormat("###0.0#");
    tring s=df.format(d);
举例说明:
        Double d = 123456789.1234540000;
        DecimalFormat df = new DecimalFormat("###0.0####");
        String s=df.format(d); 
        System.out.println(s);
显示结果:
123456789.12345



2017-09-16 遇到一个修饰符导致的问题

首先对方法的修饰符总结如下:按照范围从小到大排列

1.private,私有的访问权限,也是最严格的访问权限,仅只能在设置了该权限的类中访问,利用这个访问权限,表现出封装思想。
2.default,默认的访问权限,也是可以省略的访问权限,它不仅能在设置了该权限的类中访问,也可以在同一包中的类或子类中访问。
3.protected,受保护的访问权限,它除了具有default的访问权限外,还可以在不同包中所继承的子类访问。
4.public,公有的访问权限,也是最宽松的访问权限,不仅可以是同一个类或子类,还是同一个包中的类或子类,又还是不同包中的类或子类,都可以访问。
下面是问题描述:抽象父类PizzaStore和实现父类抽象方法的子类位置如图,抽象方法都是默认的defualt修饰符。不在一个包下导致方法无法在子类中可见。
这里写图片描述
然后子类就会出现这样的错误:
这里写图片描述
这两处错误的理解:
类上的错误是由于子类没有实现父类的抽象方法。
方法上的错误是由于用@override,但是由于defualt,子类的这个方法父类无法看到,就以为没有这个方法。就报错了。
这时。如果在父类的抽象方法上把修饰符改成protected 则子类上的错误就消失了。但方法上的错误还在,这时在方法上加上protected,则不在报错。



2017-09-19 easyui提交表单时,用serializeArray后,如何给参数接着添加别的参数?

//先获得表单中的参数
var querydata=$("#addForm").serializeArray();
//为参数集合补充缺少的参数,用push方法
querydata.push({name:"salecom",value:$("#currentno").val()});
querydata.push({name:"contno",value:contno});



2017-09-20 查看本机ip,物理地址mac 命令,和测试ip端口是否通

ipconfig -all

telnet  ip  端口
例如:telnet 10.102.37.32 3568



2017-09-20 easyui js 取消复选框和删除动作给确认提示

$('#tt').datagrid('clearSelections');

function deleteFunction(){
    if(confirm("确认要删除吗?")){
        //do something...
    }else{
    //取消动作。
    }
}



2017-09-21 insert into () select表复制语句来实现表数据初始化。

1.为表sp_policy_functionConfig初始化   一步到位

insert into sp_policy_functionConfig(salemangecom,salecom,plancode,useelecpolicy,usepaperpolicy,adduser,addtime) select managecom,salecom,plancode,'Y','Y','admin',sysdate from soa_datadict_salecom,soa_datadict_plan order by managecom,salecom;

2.为表sp_policy_queryrange初始化。分两步
insert into sp_policy_queryrange(salemanagecom) select distinct managecom from soa_datadict_com where managecom <> '0';

update sp_policy_queryrange set queryrange='MA',operator='wow',operatetime=current timestamp,enabled='Y' WHERE SALEMANAGECOM in (select distinct managecom from soa_datadict_com where managecom <> '0');

也可以合成一步:
insert into sp_policy_queryrange(salemanagecom,queryrange,operator,operatorcode,operatetime,enabled) select distinct managecom,'MA''admin','admin',current timestamp,'Y' from soa_datadict_comwhere managecom <> '0';
内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略与效果评估体系,涵盖当前企业传播面临的预算、资源、内容与效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势与发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化与GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理与舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率与ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放与GEO优化,提升品牌在AI搜索中的权威性与可见性;④通过数据驱动评估体系量化品牌影响力与销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析与工具指南进行系统学习,重点关注媒体适配性策略与GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万米高空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值