Entry

遍历循环输出map的几种方式

一笑奈何 提交于 2021-02-20 07:40:12
package 常用的遍历方法.forTest; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; public class CircleTest { public static void main(String[] args) { Map<String,Object> map = new HashMap<String,Object>(); map.put("accident", "意外险"); map.put("properties", "财产险"); map.put("biz", "商业险"); map.put("force", "交强险"); //1、迭代器 Iterator<Map.Entry<String, Object>> iter = map.entrySet().iterator(); //判断往下还有没有数据 while(iter.hasNext()){ //有的话取出下面的数据 Entry<String, Object> entry = iter.next(); String key = entry.getKey(); String value = (String)entry.getValue(); if(

Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析

被刻印的时光 ゝ 提交于 2021-02-20 07:38:42
原文地址:http://www.javatang.com 一个典型的thread dump文件主要由一下几个部分组成: 上图将JVM上的线程堆栈信息和线程信息做了详细的拆解。 第一部分:Full thread dump identifier 这一部分是内容最开始的部分,展示了快照文件的生成时间和JVM的版本信息。 2017-10-19 10:46:44 Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.79-b02 mixed mode): 第二部分:Java EE middleware, third party & custom application Threads 这是整个文件的核心部分,里面展示了JavaEE容器(如tomcat、resin等)、自己的程序中所使用的线程信息。这一部分详细的含义见 Java内存泄漏分析系列之四:jstack生成的Thread Dump日志线程状态分析 。 "resin-22129" daemon prio=10 tid=0x00007fbe5c34e000 nid=0x4cb1 waiting on condition [0x00007fbe4ff7c000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe

Map集合循环遍历的几种方式

拟墨画扇 提交于 2021-02-19 08:11:45
package cn.jdbc.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; /** * Map 集合的循环遍历 * @data 2018.1.21 * */ public class TestMap { public static void main(String[] args) { Map<String, Object> map = new HashMap<String, Object>(); map.put("aaa", 111); map.put("bbb", 222); map.put("ccc", 333); map.put("ddd", 444); //Map集合循环遍历方式一 System.out.println("第一种:通过Map.keySet()遍历key和value:"); for(String key:map.keySet()){//keySet获取map集合key的集合 然后在遍历key即可 String value = map.get(key).toString();// System.out.println("key:"+key+" vlaue:"+value); } /

RT-thread线程创建:动态线程与静态线程

邮差的信 提交于 2021-02-19 06:55:35
本文介绍了如何创建一个动态线程和一个静态线程 RT-thread版本:RT-thread system 3.1.0 开发环境:MDK5 为了编程方便,创建了sample1.c文件,然后添加到工程中 话不多说,先上代码 #include " rtthread.h " #define stack_size 1024 //设置动态线程栈大小 #define priority 25 //设置优先级 #define tick 10 //时间片 static rt_thread_t tid1 = NULL; //指针初始化为NULL static void thread1_entry( void * parameter) //线程1入口函数 { rt_base_t i; rt_uint16_t count = 0 ; for (i = 0 ; i < 10 ; i++ ) { rt_kprintf( " thread1, count: %d\n " , count++ ); } } ALIGN(RT_ALIGN_SIZE); static struct rt_thread thread2; static char thread_stack[ 1024 ]; static void thread2_entry( void * parameter) //线程2入口代码 { rt_base_t i,

Autofac ASP.NET Web API (Beta) Integration

╄→гoц情女王★ 提交于 2021-02-19 01:57:36
With the beta release of ASP.NET MVC 4 and the ASP.NET Web API being released a few weeks ago, I decided it was about time to have a look at what the integration story would like for Autofac. The package is available for download on NuGet. Install-Package Autofac.WebApi2 -Version 4.2 . 0 While building the preview of the Web API integration I had the following goals in mind: Ensure that it would work alongside the MVC integration without issues such as naming conflicts. Support both the web hosting and self hosting scenarios in a single assembly. Avoid taking dependencies on the System.Web

详解ELF可执行文件格式:读取头部信息和程序表头

馋奶兔 提交于 2021-02-18 15:21:49
要想实现ELF文件的入口劫持,不深入掌握其运行原理与组成结构那是不可能的。ELF的内部结构复杂,加载逻辑难以理解,因此我们需要通过切香肠的方式,将这个困难的技术点一点一滴的去攻克。 这一节我们先掌握如何读取头部信息和程序表头,我们先看ELF文件的大致结构: ELF文件格式最重要的就是所谓的段,特别是其中的代码段和数据段。对应上图就是.text,.data两个段。每个段都对应一个段表来描述,而若干隔断会组成一个整体,它对应一个program,而后者则由program header table来指向,讲解ELF数据结构最为详细的就是网址如下,有心的朋友可以认真阅读: https://man7.org/linux/man-pages/man5/elf.5.html 我们本次要解读ELF文件的两个部分,一个是其文件头。文件头描述了ELF文件很多重要信息,例如它运行的平台,支持的CPU类型等。使用命令行readelf -h 可以读取指定ELF文件的头部信息,如下图所示: 其对应数据结构如下: #define EI_NIDENT 16 typedef struct { unsigned char e_ident[EI_NIDENT]; uint16_t e_type; uint16_t e_machine; uint32_t e_version; ElfN_Addr e_entry; ElfN

Leetcode solution 1169: Invalid Transactions

|▌冷眼眸甩不掉的悲伤 提交于 2021-02-18 04:04:57
Problem Statement A transaction is possibly invalid if: the amount exceeds $1000, or; if it occurs within (and including) 60 minutes of another transaction with the same name in a different city. Each transaction string transactions[i] consists of comma separated values representing the name, time (in minutes), amount, and city of the transaction. Given a list of transactions , return a list of transactions that are possibly invalid. You may return the answer in any order. Example 1: Input: transactions = ["alice,20,800,mtv","alice,50,100,beijing"] Output: ["alice,20,800,mtv","alice,50,100

TreeMap----的实现原理(红黑树)

半腔热情 提交于 2021-02-17 17:01:42
TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致还是叫做TreeMap比较好。通过这篇博文你可以获得如下知识点: 1、红黑树的基本概念。 2、红黑树增加节点、删除节点的实现过程。 3、红黑树左旋转、右旋转的复杂过程。 4、Java 中TreeMap是如何通过put、deleteEntry两个来实现红黑树增加、删除节点的。 我想通过这篇博文你对TreeMap一定有了更深的认识。好了,下面先简单普及红黑树知识。 一、红黑树简介 红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性。同时红黑树更是一颗自平衡的排序二叉树。 我们知道一颗基本的二叉树他们都需要满足一个基本性质--即树中的任何节点的值大于它的左子节点,且小于它的右子节点。按照这个基本性质使得树的检索效率大大提高。我们知道在生成二叉树的过程是非常容易失衡的,最坏的情况就是一边倒(只有右/左子树),这样势必会导致二叉树的检索效率大大降低(O(n)),所以为了维持二叉树的平衡,大牛们提出了各种实现的算法,如: AVL , SBT , 伸展树 , TREAP , 红黑树 等等。 平衡二叉树必须具备如下特性:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1

如何在 Linux 中编辑字幕

拥有回忆 提交于 2021-02-17 04:10:34
https://linux.cn/article-11946-1.html 我作为一位世界电影和地区电影爱好者已经几十年了。这期间字幕是一个必不可少的工具,它可以使我享受来自不同国家不同语言的优秀电影。 如果你喜欢观看带有字幕的电影,你可能会注意到有时字幕并不同步或者说并不正确。 你知道你可以自己编写字幕并使得它们更完美吗?让我们向你展示一些 Linux 中的基本字幕编辑吧。 从闭路字幕数据中提取字幕 大概在 2012、2013 年我开始了解到有一款叫做 CCEextractor 的工具。随着时间的推移,它已经成为我必不可少的工具之一,尤其是当我偶然发现一份内含有字幕的媒体文件。 CCExtractor 负责解析视频文件以及从闭路字幕closed captions数据中产生独立的字幕文件。 CCExtractor 是一个跨平台的、自由开源工具。自它形成的那年起该工具已经成熟了不少而如今已成为 GSOC 和谷歌编码输入的一部分。 简单来说,这个工具基本上是一系列脚本,这些脚本以一种顺序方式一个接着一个地给你提供提取到的字幕。 你可以按照 本页 的 CCExtractor 安装指南进行操作。 若安装后你想从媒体文件中提取字幕,请按以下步骤操作: ccextractor <path_to_video_file> 该命令将会输出以下内容: $ ccextractor $something

mtk-preloader代码分析

末鹿安然 提交于 2021-02-17 02:15:43
这里简单介绍了preloader的启动流程,ATF的实现部分可参考https://blog.csdn.net/chenying126/article/details/78638944 1.链接器脚本link_descriptor.ld定义了preloader的入口函数 OUTPUT_ARCH(arm) ENTRY(_start) 2.init.S定义了_start,并跳转到main执行 .globl _start _start: b resethandler /* * 设置svc32模式 * 禁止中断fiq&irq * clear BSS * setup stack * 跳转main执行 */ ...... entry : LDR r0, = bldr_args_addr   B main 3.main函数,截取了部分代码 void main(u32 * arg) { /* get the bldr argument */ p_bldr_param = & bldr_param; //_start函数中将bldr_args_addr作为参数传给main,这里为0 memcpy(( void *) p_bldr_param,( void *) *arg, sizeof (bl_param_t)); //必要的硬件初始化 mtk_uart_init(UART_SRC_CLK_FRQ,